{
  "brand": {
    "name": "Booq",
    "slogan": "Content Creation with Infinite AI Power",
    "description": "AI-powered content creation & translation platform"
  },
  "common": {
    "loading": "Loading...",
    "save": "Save",
    "saving": "Saving...",
    "cancel": "Cancel",
    "delete": "Delete",
    "edit": "Edit",
    "back": "Go back",
    "next": "Next",
    "previous": "Previous",
    "submit": "Submit",
    "search": "Search",
    "filter": "Filter",
    "clear": "Clear",
    "close": "Close",
    "confirm": "Confirm",
    "yes": "Yes",
    "no": "No",
    "success": "Success",
    "error": "Error",
    "warning": "Warning",
    "info": "Info",
    "retry": "Retry",
    "noResults": "No results found",
    "minute": "minute",
    "minutes": "minutes",
    "toman": "Toman",
    "selectLanguage": "Select Language",
    "currentLanguage": "English",
    "select": "Select",
    "language": "Language",
    "uploading": "Uploading...",
    "allRightsReserved": "All rights reserved.",
    "fullscreen": "Fullscreen",
    "goToSlide": "Go to slide",
    "user": "User",
    "change": "Change",
    "verify": "Verify",
    "confirmDelete": "Are you sure?",
    "loadMore": "Load more",
    "menu": "Menu",
    "mute": "Mute",
    "normal": "Normal",
    "pause": "Pause",
    "pictureInPicture": "Picture in Picture",
    "play": "Play",
    "playbackSpeed": "Playback speed",
    "refresh": "Refresh",
    "repeat": "Repeat",
    "scrollLeft": "Scroll left",
    "scrollRight": "Scroll right",
    "searching": "Searching...",
    "seekAudio": "Seek audio",
    "seekVideo": "Seek video",
    "send": "Send",
    "skipBack": "Skip back 10 seconds",
    "skipBack15": "Skip back 15 seconds",
    "skipForward": "Skip forward 10 seconds",
    "skipForward15": "Skip forward 15 seconds",
    "unmute": "Unmute",
    "view": "View",
    "volume": "Volume",
    "copy": "Copy",
    "hide": "Hide",
    "remove": "Remove",
    "goBack": "Go back",
    "moreInfo": "More information",
    "processing": "Processing…",
    "inProgress": "In progress…",
    "dismiss": "Dismiss",
    "pleaseWait": "Please wait…",
    "decrease": "Decrease",
    "increase": "Increase"
  },
  "theme": {
    "title": "Theme",
    "light": "Light",
    "dark": "Dark",
    "system": "System",
    "toggle": "Toggle light/dark",
    "select": "Select theme",
    "colorTheme": "Color Theme",
    "choose": "Choose a theme",
    "palette": {
      "title": "Choose your theme",
      "subtitle": "Thirteen looks for the whole product. Pick one to see it applied everywhere — nothing is saved until you press Apply.",
      "apply": "Apply",
      "previewing": "Previewing {{name}}",
      "empty": "No theme matches this filter.",
      "animated": "Animated",
      "filterLabel": "Filter themes",
      "filter": {
        "all": "All",
        "light": "Light",
        "dark": "Dark",
        "animated": "Animated"
      }
    },
    "settings": {
      "title": "Appearance",
      "description": "The theme you pick here applies to every page of Booq on this device."
    }
  },
  "nav": {
    "menu": "Menu",
    "openMenu": "Open menu",
    "primaryNavigation": "Primary navigation",
    "home": "Home",
    "ecosystem": "Ecosystem",
    "pricing": "Pricing",
    "projects": "Projects",
    "wallet": "Wallet",
    "profile": "Profile",
    "login": "Login",
    "signup": "Sign Up",
    "logout": "Logout",
    "dashboard": "Dashboard",
    "getStarted": "Get Started",
    "product": "Product",
    "company": "Company",
    "legal": "Legal",
    "features": "Features",
    "howItWorks": "How It Works",
    "examples": "Examples",
    "samples": "Samples",
    "aboutUs": "About Us",
    "about": "About",
    "contact": "Contact",
    "blog": "Blog",
    "careers": "Careers",
    "privacy": "Privacy Policy",
    "terms": "Terms of Service",
    "cookies": "Cookie Policy",
    "adminPanel": "Admin Panel",
    "adminDashboard": "Admin Dashboard",
    "userManagement": "User Management",
    "projectMonitoring": "Project Monitoring",
    "systemSettings": "System Settings",
    "support": "Support",
    "chatbot": "Chatbot",
    "library": "My Library",
    "showcase": "Showcase"
  },
  "auth": {
    "login": "Login",
    "signup": "Sign Up",
    "logout": "Logout",
    "identifier": "Email or Mobile",
    "identifierPlaceholder": "Enter email or mobile number",
    "mobile": "Mobile Number",
    "mobilePlaceholder": "09123456789",
    "email": "Email Address",
    "emailPlaceholder": "you@example.com",
    "password": "Password",
    "passwordPlaceholder": "Enter your password",
    "confirmPassword": "Confirm Password",
    "otp": "Verification Code",
    "otpPlaceholder": "Enter 6-digit code",
    "sendOtp": "Send Code",
    "verifyOtp": "Verify Code",
    "resendOtp": "Resend Code",
    "firstName": "First Name",
    "lastName": "Last Name",
    "forgotPassword": "Forgot Password?",
    "haveAccount": "Already have an account?",
    "noAccount": "Don't have an account?",
    "loginWithPassword": "Login with Password",
    "loginWithOtp": "Login with OTP",
    "orContinueWith": "Or continue with",
    "welcomeBack": "Welcome Back",
    "welcomeBackDesc": "Sign in to your account to continue",
    "createAccount": "Create Account",
    "createAccountDesc": "Join thousands of creators using Booq",
    "codeSent": "Verification code sent!",
    "codeExpires": "Code expires in",
    "seconds": "seconds",
    "termsAgree": "By signing in, you agree to our Terms and Privacy Policy",
    "mustAcceptTerms": "You must accept the Terms & Privacy Policy to continue"
  },
  "home": {
    "hero": {
      "badge": "Professional AI Platform",
      "title": "Transform Your Content",
      "titleHighlight": "With the Power of AI",
      "description": "Video translation, podcast, image, music, song & video generation, and media downloading — all in one AI-powered platform.",
      "cta": "Start Free Trial",
      "secondaryCta": "View Pricing",
      "trust": "No credit card required • 100MB free storage"
    },
    "stats": {
      "videosProcessed": "Videos Processed",
      "satisfaction": "Customer Satisfaction",
      "languages": "Languages Supported",
      "aiAssistance": "AI Assistance"
    },
    "features": {
      "title": "All AI Tools in One Platform",
      "subtitle": "Powerful tools for translation, content generation, and media downloading with professional quality",
      "translation": {
        "title": "Video Translation",
        "description": "Translate subtitles and dub videos to 30+ languages with advanced AI"
      },
      "podcast": {
        "title": "Podcast Generator",
        "description": "Convert text to audio podcast with 30 natural, professional voices"
      },
      "image": {
        "title": "Image Generation",
        "description": "Generate creative images from text descriptions with AI"
      },
      "music": {
        "title": "Music & Song Generation",
        "description": "Create instrumental music and songs with AI-generated lyrics & vocals"
      },
      "video": {
        "title": "Video Generation",
        "description": "Generate videos from text with cinematic styles, animation & narration"
      },
      "downloader": {
        "title": "Media Downloader",
        "description": "Download media from YouTube, Instagram, TikTok & Pinterest"
      },
      "transcription": {
        "title": "Transcription & Subtitles",
        "description": "Convert speech to text with high accuracy and create professional subtitles"
      },
      "dubbing": {
        "title": "AI Dubbing",
        "description": "Dub your videos with natural-sounding voices in multiple languages"
      }
    },
    "whyUs": {
      "title": "Why Creators Choose Booq",
      "description": "We combine cutting-edge AI technology with human expertise to deliver the highest quality video localization services at affordable prices.",
      "cta": "Start creating today"
    },
    "benefits": {
      "fast": "Lightning-fast processing with AI acceleration",
      "secure": "Enterprise-grade security for your content",
      "affordable": "Pay only for what you use",
      "aiPowered": "State-of-the-art AI models"
    },
    "testimonials": {
      "title": "Loved by Creators Worldwide",
      "subtitle": "Join thousands of satisfied customers"
    },
    "cta": {
      "title": "Ready to Go Global?",
      "description": "Join thousands of creators who trust Booq for AI-powered content creation and translation. Start building in minutes.",
      "button": "Create Free Account",
      "secondaryButton": "Pricing",
      "note": "Free tier includes 100MB storage • No credit card required"
    }
  },
  "pricing": {
    "title": "Simple, Transparent Pricing",
    "subtitle": "Choose the plan that fits your needs. All plans include core features.",
    "monthly": "Monthly",
    "annual": "Annual",
    "annualDiscount": "Save 20%",
    "perMinute": "per minute",
    "mostPopular": "Most Popular",
    "getStarted": "Get Started",
    "contactSales": "Contact Sales",
    "features": "Features",
    "included": "What's included:",
    "currency": "Toman",
    "volumeDiscounts": "Volume Discounts",
    "volumeDescription": "The more you use, the more you save!",
    "faq": {
      "title": "Frequently Asked Questions",
      "q1": "Can I try before buying?",
      "a1": "Yes! You get 5 free minutes credit for testing when you sign up.",
      "q2": "What file formats are supported?",
      "a2": "We support MP4, MKV, AVI, MOV, WebM, MP3, and WAV formats.",
      "q3": "What is the maximum file size?",
      "a3": "The maximum file size is 2GB.",
      "q4": "What if I am not satisfied with the result?",
      "a4": "If not satisfied, you can request a refund and our team will review it."
    },
    "ctaTitle": "Ready to get started?",
    "ctaDescription": "Sign up now and get 5 free minutes credit to try our services!",
    "ctaButton": "Start Free Trial",
    "plans": {
      "free": {
        "name": "Free",
        "description": "For individuals getting started",
        "price": "0"
      },
      "pro": {
        "name": "Pro",
        "description": "For professional creators",
        "price": "29"
      },
      "enterprise": {
        "name": "Enterprise",
        "description": "For teams and businesses",
        "price": "Custom"
      }
    }
  },
  "project": {
    "title": "My Projects",
    "new": "New Project",
    "empty": "No projects yet",
    "emptyDesc": "Upload your first video to translate",
    "upload": "Upload Video",
    "uploadDesc": "Drag and drop your video here or click to browse",
    "uploadFormats": "Supported formats: MP4, MOV, AVI - Max 2GB",
    "selectType": "Select translation type",
    "types": {
      "english_subtitle": "English Subtitles",
      "persian_subtitle": "Persian Subtitles",
      "persian_dubbing": "Persian Dubbing",
      "persian_dubbing_en_sub": "Persian Dubbing + English Subtitles",
      "persian_dubbing_fa_sub": "Persian Dubbing + Persian Subtitles"
    },
    "translationModes": {
      "title": "Output Type",
      "subtitle": "Subtitle Only",
      "subtitleDesc": "Add Persian subtitles to your video",
      "dubbing": "Dubbing Only",
      "dubbingDesc": "Dub your video to Persian",
      "mixture": "Dubbing + Subtitle",
      "mixtureDesc": "Add both Persian dubbing and subtitles"
    },
    "status": {
      "pending": "Pending",
      "awaiting_upload": "Awaiting Upload",
      "awaiting_queue": "In Queue",
      "processing": "Processing",
      "completed": "Completed",
      "failed": "Failed"
    },
    "price": "Price",
    "duration": "Duration",
    "progress": "Progress",
    "download": "Download",
    "retry": "Retry",
    "startProcessing": "Start Processing",
    "languageNotice": "Currently only English to Persian is supported. More languages coming soon.",
    "socialSources": {
      "downloadCardDesc": "Download media from YouTube, Instagram, TikTok and {{extra}} more platforms",
      "linkModeDesc": "For YouTube, Instagram, TikTok and {{extra}} more supported platforms.",
      "urlHelpLink": "Paste a link from any supported platform — YouTube, Instagram, TikTok and {{extra}} more.",
      "freeNote": "Downloading is completely free.",
      "allTitle": "Supported platforms",
      "allLabel": "See every supported platform"
    }
  },
  "projects": {
    "title": "My Projects",
    "new": "New Project",
    "empty": "No projects yet",
    "emptyDesc": "Create your first project to get started",
    "status": {
      "pending": "Pending",
      "processing": "Processing",
      "completed": "Completed",
      "failed": "Failed",
      "awaiting_upload": "Awaiting upload",
      "awaiting_queue": "Queued",
      "cancelled": "Cancelled",
      "blocked": "Blocked"
    },
    "types": {
      "translation": "Video translation",
      "transcription": "Transcription",
      "podcast": "Podcast",
      "poster": "Poster",
      "multi_speaker": "Multi-speaker translation",
      "dubbing": "Dubbing",
      "english_subtitle": "English subtitle",
      "persian_subtitle": "Persian subtitle",
      "persian_dubbing": "Persian dubbing",
      "persian_dubbing_en_sub": "Persian dubbing + English subtitle",
      "persian_dubbing_fa_sub": "Persian dubbing + Persian subtitle",
      "youtube_download": "YouTube download",
      "media_download": "Media download",
      "podcast_generate": "Podcast generation",
      "poster_generate": "Poster generation",
      "image_generate": "Image generation",
      "music_generate": "Music generation",
      "song_generate": "Song generation",
      "video_generate": "Image or text to video",
      "voice_generate": "Voice generation",
      "audiobook_generate": "Audiobook generation",
      "video_studio": "AI video studio",
      "chatbot": "Chat",
      "slides": "Slides generator"
    },
    "subtitle": "Manage and view your projects",
    "searchPlaceholder": "Search by name, file or project number",
    "searchLabel": "Search projects",
    "clearSearch": "Clear search",
    "searchCapped": "Search is limited to {{max}} characters.",
    "filters": "Filters",
    "statusFilter": "Status",
    "typeFilter": "Type",
    "allStatuses": "All statuses",
    "allTypes": "All types",
    "activeFilters": "Filtering by",
    "filterSearch": "Search: “{{query}}”",
    "filterStatus": "Status: {{status}}",
    "filterType": "Type: {{type}}",
    "clearFilters": "Clear filters",
    "showing": "Showing {{shown}} of {{total}} projects",
    "noMatches": "No projects match these filters",
    "noMatchesDesc": "Nothing matched {{filters}}. Remove a filter and try again.",
    "errorTitle": "Could not load your projects",
    "errorRetry": "Try again",
    "errorFiltersHint": "These filters are on: {{filters}}",
    "error": {
      "PROJECT_CLOSED": "This project has been closed and can no longer be continued. Please start a new project.",
      "MEDIA_DURATION_UNKNOWN": "We couldn't determine the length of this media, so it can't be priced. Please upload the file again or choose a different source.",
      "REFERENCE_IMAGE_NOT_OWNED": "One of the reference images doesn't belong to your account. Upload the image or pick it from your library instead.",
      "AUDIO_ASSET_NOT_OWNED": "An audio clip in this project doesn't belong to your account. Upload the clip again or pick it from your library.",
      "ENDPOINT_RETIRED": "This action is no longer available in this version of Booq. Please refresh the page and try again. Nothing was charged.",
      "PROJECT_TYPE_RETIRED": "This type of project is no longer offered. Please choose another service. Nothing was charged.",
      "USE_PRODUCT_API": "This project is managed on its own page. Open it from your projects to continue.",
      "USE_SLIDES_API": "This project is managed on its own page in Slides. Open it from your projects to continue.",
      "USE_VIDEO_GENERATE_API": "This project is managed on its own page in Image/Text to video. Open it from your projects to continue.",
      "USE_VIDEO_STUDIO_API": "This project is managed on its own page in the AI Video Studio. Open it from your projects to continue."
    },
    "pageOf": "Page {{page}} of {{pages}}",
    "view": "View",
    "download": "Download",
    "progress": "Progress"
  },
  "wallet": {
    "title": "Wallet",
    "balance": "Balance",
    "addFunds": "Add Funds",
    "amount": "Amount",
    "amountPlaceholder": "Amount in Toman",
    "pay": "Pay",
    "transactions": "Transaction History",
    "history": "Transaction History",
    "noTransactions": "No transactions",
    "deposit": "Deposit",
    "withdrawal": "Withdrawal",
    "refund": "Refund",
    "vatNotice": "{{percent}}% VAT will be added to this amount at checkout.",
    "topupAmount": "Top-up amount:",
    "vatRow": "VAT ({{percent}}%):",
    "payableAtGateway": "Payable at the gateway:",
    "creditedAmount": "Credited to wallet:",
    "minTopUp": "Minimum top-up: {{amount}}"
  },
  "profile": {
    "title": "Profile",
    "subtitle": "Manage your account information",
    "personalInfo": "Personal Information",
    "security": "Security",
    "preferences": "Preferences",
    "changePassword": "Change Password",
    "currentPassword": "Current Password",
    "newPassword": "New Password",
    "confirmNewPassword": "Confirm New Password",
    "updateProfile": "Update Profile",
    "language": "Language",
    "notifications": "Notifications",
    "profileInfo": "Profile Info",
    "saveChanges": "Save Changes",
    "memberSince": "Member since:",
    "booqUser": "Booq User",
    "mobileVerified": "Mobile verified",
    "mobileNotVerified": "Mobile not verified",
    "emailVerified": "Email verified",
    "emailNotVerified": "Email not verified",
    "email": "Email",
    "changeEmail": "Change Email",
    "newEmailAddress": "New email address",
    "sendVerificationCode": "Send Verification Code",
    "verificationCode": "Verification code",
    "verifyAndChangeEmail": "Verify & Change Email",
    "resendCode": "Resend code",
    "emailChangedSuccess": "Email changed successfully!",
    "codeSentToEmail": "Verification code sent to new email",
    "enterValidEmail": "Please enter a valid email",
    "enterVerificationCode": "Please enter the verification code",
    "changeMobile": "Change Mobile",
    "newMobileNumber": "New mobile number",
    "verifyAndChangeMobile": "Verify & Change Mobile",
    "mobileChangedSuccess": "Mobile number changed successfully!",
    "codeSentToMobile": "Verification code sent to new mobile",
    "enterValidMobile": "Please enter a valid mobile number (09XXXXXXXXX)",
    "profileUpdated": "Profile updated!",
    "profilePhotoUpdated": "Profile photo updated!",
    "selectImage": "Please select an image file",
    "fileTooLarge": "File size must be less than 5MB",
    "passwordChanged": "Password changed!",
    "currentPasswordLabel": "Current Password",
    "newPasswordLabel": "New Password",
    "confirmNewPasswordLabel": "Confirm New Password",
    "referralEarned": "Earned (Toman)"
  },
  "footer": {
    "description": "AI-powered video translation platform. Transform your content for global audiences.",
    "copyright": "All rights reserved.",
    "madeWith": "Made with",
    "pricing": "Pricing",
    "getStarted": "Get Started",
    "about": "About Us",
    "contact": "Contact Us",
    "blog": "Blog",
    "privacy": "Privacy Policy",
    "terms": "Terms of Service",
    "product": "Product",
    "company": "Company",
    "legal": {
      "title": "Legal",
      "privacy": "Privacy Policy",
      "terms": "Terms of Service"
    },
    "allRightsReserved": "All rights reserved.",
    "menu": "Menu",
    "aiPowered": "AI Powered"
  },
  "errors": {
    "required": "This field is required",
    "invalidMobile": "Invalid mobile number format",
    "invalidEmail": "Invalid email address",
    "invalidIdentifier": "Please enter a valid email or mobile number",
    "invalidOtp": "Invalid verification code",
    "invalidPassword": "Password must be at least 8 characters",
    "passwordMismatch": "Passwords do not match",
    "insufficientBalance": "Insufficient balance",
    "uploadFailed": "Upload failed",
    "networkError": "Network error. Please try again.",
    "genericTryLater": "Something went wrong. Please try again later.",
    "unauthorized": "Please login to continue",
    "notFound": "Resource not found",
    "serverError": "Server error. Please try again later."
  },
  "languages": {
    "en": "English",
    "fa": "Persian",
    "ar": "Arabic",
    "ru": "Russian",
    "zh": "Chinese",
    "ja": "Japanese",
    "ko": "Korean",
    "fr": "French",
    "de": "German",
    "es": "Spanish",
    "hi": "Hindi",
    "bn": "Bengali",
    "pt": "Portuguese",
    "ur": "Urdu",
    "id": "Indonesian",
    "tr": "Turkish"
  },
  "academy": {
    "title": "Academy",
    "subtitle": "Learn new skills with expert-led courses",
    "searchPlaceholder": "Search courses...",
    "featuredCourses": "Featured Courses",
    "allCourses": "All Courses",
    "myCourses": "My Courses",
    "myLearning": "My Learning",
    "enrolledCourses": "Enrolled Courses",
    "createCourse": "Create Course",
    "editCourse": "Edit Course",
    "noCourses": "No courses found",
    "noCoursesDesc": "Try adjusting your search or filters",
    "filterByCategory": "Filter by Category",
    "filterByLevel": "Filter by Level",
    "allCategories": "All Categories",
    "allLevels": "All Levels",
    "sortBy": "Sort by",
    "sortNewest": "Newest",
    "sortPopular": "Most Popular",
    "sortRating": "Highest Rated",
    "sortPrice": "Price: Low to High",
    "levels": {
      "beginner": "Beginner",
      "intermediate": "Intermediate",
      "advanced": "Advanced",
      "all_levels": "All Levels"
    },
    "status": {
      "draft": "Draft",
      "pending_review": "Pending Review",
      "published": "Published",
      "rejected": "Rejected",
      "archived": "Archived"
    },
    "course": {
      "lessons": "lessons",
      "students": "students",
      "reviews": "reviews",
      "sections": "sections",
      "duration": "duration",
      "instructor": "Instructor",
      "price": "Price",
      "free": "Free",
      "enrollNow": "Enroll Now",
      "buyNow": "Buy Now",
      "continueLearning": "Continue Learning",
      "startLearning": "Start Learning",
      "reviewCourse": "Review Course",
      "aboutCourse": "About this course",
      "courseContent": "Course Content",
      "preview": "Preview",
      "enrolled": "Enrolled",
      "completed": "Completed",
      "inProgress": "In Progress"
    },
    "instructor": {
      "title": "Instructor",
      "bio": "Bio",
      "courses": "Courses",
      "students": "Students",
      "rating": "Rating"
    },
    "review": {
      "writeReview": "Write a Review",
      "yourRating": "Your Rating",
      "yourReview": "Your Review",
      "submitReview": "Submit Review",
      "updateReview": "Update Review",
      "reviewPlaceholder": "Share your experience with this course..."
    },
    "payout": {
      "title": "Payouts",
      "requestPayout": "Request Payout",
      "availableBalance": "Available Balance",
      "pendingPayouts": "Pending Payouts",
      "payoutHistory": "Payout History",
      "bankInfo": "Bank Information",
      "bankName": "Bank Name",
      "cardNumber": "Card Number",
      "accountHolder": "Account Holder Name",
      "iban": "IBAN",
      "updateBankInfo": "Update Bank Info",
      "minPayoutAmount": "Minimum payout amount",
      "revenueShare": "Revenue Share",
      "revenueShareInfo": "You receive 50% of each course sale"
    },
    "create": {
      "basicInfo": "Basic Info",
      "pricing": "Pricing",
      "content": "Course Content",
      "seo": "SEO",
      "thumbnail": "Course Thumbnail",
      "title": "Title",
      "description": "Description",
      "longDescription": "Full Description",
      "category": "Category",
      "level": "Level",
      "language": "Language",
      "instructorName": "Instructor Name",
      "instructorBio": "Instructor Bio",
      "tags": "Tags",
      "tagsHint": "comma separated",
      "isFree": "This course is free",
      "priceLabel": "Price",
      "originalPrice": "Original Price",
      "originalPriceHint": "If original price is higher than current price, discount will be shown",
      "addSection": "Add New Section",
      "addLesson": "Add Lesson",
      "sectionTitle": "Section Title",
      "lessonTitle": "Lesson Title",
      "contentType": "Content Type",
      "contentUrl": "Content URL",
      "selectProject": "Select Project",
      "durationSeconds": "Duration (seconds)",
      "isPreview": "Preview",
      "metaTitle": "Meta Title",
      "metaDescription": "Meta Description",
      "submitForReview": "Submit for Review",
      "saveDraft": "Save as Draft"
    },
    "admin": {
      "stats": "Academy Stats",
      "totalCourses": "Total Courses",
      "publishedCourses": "Published Courses",
      "pendingReview": "Pending Review",
      "totalEnrollments": "Total Enrollments",
      "totalRevenue": "Total Revenue",
      "appRevenue": "App Revenue",
      "instructorPayouts": "Instructor Payouts",
      "courseManagement": "Course Management",
      "categoryManagement": "Category Management",
      "payoutManagement": "Payout Management",
      "approveCourse": "Approve Course",
      "rejectCourse": "Reject Course",
      "rejectionReason": "Rejection Reason",
      "toggleFeatured": "Toggle Featured",
      "approvePayout": "Approve Payout",
      "rejectPayout": "Reject Payout",
      "completePayout": "Complete Payout",
      "transactionId": "Transaction ID"
    },
    "searchConversations": "Search conversations...",
    "searchForum": "Search threads...",
    "typeMessage": "Type a message...",
    "chat": {
      "sendFailed": "Failed to send message",
      "emptyTitle": "Start the conversation",
      "emptySubtitle": "Your message will go directly to the recipient.",
      "jumpToLatest": "Jump to latest",
      "composerHint": "Enter to send — Shift+Enter for new line",
      "statusSeen": "seen",
      "statusSent": "sent",
      "statusSending": "sending"
    }
  },
  "ecosystem": {
    "title": "Ecosystem",
    "home": "Home",
    "explore": "Explore",
    "search": "Search...",
    "saved": "Saved",
    "beFirst": "Be the first to upload content!",
    "reply": "Reply",
    "cancel": "Cancel",
    "upload": {
      "button": "Upload",
      "title": "Upload Content",
      "details": "Content Details",
      "uploading": "Uploading...",
      "selectType": "Select the type of content you want to upload",
      "titleLabel": "Title",
      "titlePlaceholder": "Enter the title of your content",
      "descriptionLabel": "Description",
      "descriptionPlaceholder": "Write a description for your content...",
      "hashtags": "Hashtags",
      "addHashtag": "New hashtag...",
      "thumbnail": "Cover Image",
      "visibility": "Privacy",
      "allowComments": "Allow Comments",
      "allowCommentsDesc": "Users can leave comments",
      "errors": {
        "fileTooBig": "File size exceeds the maximum limit",
        "unsupportedFormat": "File format is not supported",
        "uploadFailed": "Upload failed. Please try again."
      },
      "label": "Upload"
    },
    "contentType": {
      "all": "All",
      "videos": "Videos",
      "shorts": "Shorts",
      "podcast": "Podcast",
      "podcasts": "Podcasts",
      "images": "Images",
      "video": "Video",
      "post": "Post",
      "posts": "Posts",
      "story": "Story",
      "shortsDesc": "Short video (max 60 seconds)",
      "videoDesc": "Long video (up to 4 hours)",
      "podcastDesc": "Audio file (up to 200MB)",
      "imagesDesc": "Image gallery (up to 10 images)",
      "postDesc": "Text with image",
      "storyDesc": "24-hour content"
    },
    "categories": {
      "all": "All",
      "trending": "Trending",
      "shorts": "Shorts",
      "videos": "Videos",
      "podcasts": "Podcasts",
      "posts": "Posts",
      "music": "Music",
      "education": "Education",
      "entertainment": "Entertainment",
      "lifestyle": "Lifestyle",
      "news": "News"
    },
    "visibility": {
      "public": "Public",
      "publicDesc": "Everyone can see",
      "followers": "Followers",
      "followersDesc": "Only followers",
      "private": "Private",
      "privateDesc": "Only you",
      "unlisted": "Unlisted"
    },
    "profile": "Profile",
    "feed": "Feed",
    "forYou": "For You",
    "following": "Following",
    "stories": "Stories",
    "yourStory": "Your Story",
    "addStory": "Add story",
    "discover": "Discover",
    "seeAll": "See all",
    "quickLinks": "Quick Links",
    "views": "views",
    "likes": "likes",
    "comments": "Comments",
    "followers": "Followers",
    "following_count": "Following",
    "posts": "Posts",
    "follow": "Follow",
    "unfollow": "Unfollow",
    "followBack": "Follow Back",
    "message": "Message",
    "share": "Share",
    "report": "Report",
    "block": "Block",
    "mute": "Mute",
    "addComment": "Add a comment...",
    "viewComments": "View Comments",
    "noComments": "No comments yet",
    "loadMore": "Load More",
    "loginToComment": "Log in to comment",
    "replyingTo": "Replying to",
    "replyToStory": "Reply to story...",
    "like": "Like",
    "love": "Love",
    "laugh": "Haha",
    "wow": "Wow",
    "sad": "Sad",
    "angry": "Angry",
    "bookmark": "Save",
    "bookmarked": "Saved",
    "removeBookmark": "Remove from saved",
    "contentNotFound": "Content not found",
    "profileNotFound": "Profile not found",
    "backToFeed": "Back to feed",
    "untitledContent": "Untitled",
    "editProfile": "Edit Profile",
    "creatorStudio": "Studio",
    "myProfile": "My Profile",
    "searchPlaceholder": "Search...",
    "trendingHashtags": "Trending Hashtags",
    "trendingContent": "Popular Content",
    "noResults": "No results found",
    "noResultsFor": "No results for",
    "tryDifferentSearch": "Try searching for something else",
    "accounts": "Accounts",
    "content": "Content",
    "exploreMore": "See more",
    "seeMore": "See more",
    "featured": "Featured",
    "featuredToday": "Featured Today",
    "watchNow": "Watch Now",
    "viewContent": "View",
    "shorts": "Shorts",
    "videos": "Videos",
    "podcasts": "Podcasts",
    "publish": "Publish",
    "totalViews": "Total Views",
    "totalLikes": "Total Likes",
    "totalComments": "Total Comments",
    "topContent": "Top Content",
    "allContent": "All Content",
    "noContent": "No content yet",
    "uploadFirst": "Upload Content",
    "totalRevenue": "Total Revenue",
    "pendingRevenue": "Pending",
    "paidRevenue": "Paid",
    "howRevenueWorks": "How do you earn revenue?",
    "revenueByContent": "Revenue by Content",
    "recommended": "Recommended for you",
    "savedContent": "Saved Content",
    "items": "items",
    "totalContent": "Total Content",
    "earnings": "30-day Earnings",
    "unknownUser": "Unknown",
    "tabs": {
      "overview": "Overview",
      "content": "Content",
      "revenue": "Revenue"
    },
    "period": {
      "7days": "7 Days",
      "30days": "30 Days",
      "90days": "90 Days",
      "year": "Year"
    },
    "uploadAvatar": "Upload avatar",
    "changePhoto": "Change profile photo",
    "username": "Username",
    "usernameHelp": "Only letters, numbers, and underscores allowed",
    "displayName": "Display Name",
    "displayNamePlaceholder": "Your display name",
    "bio": "Bio",
    "bioPlaceholder": "Tell us about yourself...",
    "website": "Website",
    "accountInfo": "Account Information",
    "verificationStatus": "Verification Status",
    "notVerified": "Not Verified",
    "verified": "Verified ✓",
    "editCover": "Edit cover",
    "changeCover": "Change Cover",
    "coverRecommendation": "Recommended size: 1500x500 pixels, max 10MB",
    "coverTooLarge": "Cover image must be less than 10MB",
    "coverUploadFailed": "Failed to upload cover image",
    "profilePhoto": "Profile Photo",
    "avatarRecommendation": "Square image recommended, max 5MB",
    "profileInfo": "Profile Information",
    "profileSaved": "Profile saved successfully",
    "profileNotFoundDesc": "The user you're looking for doesn't exist.",
    "viewProfile": "View my profile",
    "noSavedContent": "No saved content yet",
    "noContentPublished": "No content yet",
    "noFollowers": "No followers yet",
    "noFollowing": "Not following anyone yet",
    "invalidImageFile": "Please select a valid image file",
    "fileTooLarge": "File size must be less than 5MB",
    "avatarUploadFailed": "Failed to upload avatar",
    "usernameRequired": "Username is required",
    "usernameTooShort": "Username must be at least 3 characters",
    "usernameTooLong": "Username must be less than 30 characters",
    "usernameInvalid": "Username can only contain letters, numbers, and underscores",
    "usernameTaken": "This username is already taken",
    "displayNameTooLong": "Display name must be less than 50 characters",
    "bioTooLong": "Bio must be less than 500 characters",
    "invalidUrl": "Please enter a valid URL",
    "saveFailed": "Failed to save profile",
    "pleaseLogin": "Please log in to edit your profile",
    "beFirstWithHashtag": "Be the first to use #",
    "copyLink": "Copy link",
    "earnings30d": "30 Day Earnings",
    "exit": "Exit ecosystem",
    "exitToBooq": "Exit ecosystem — back to Booq",
    "exploreFeed": "Explore Feed",
    "goLive": "Go Live",
    "golive": {
      "camera": "Camera",
      "cameraOff": "Camera off",
      "cameraOn": "Camera on",
      "categoryPlaceholder": "Category (e.g. gaming, music)",
      "chatEnabled": "Enable live chat",
      "connLost": "Connection lost. Try stopping and starting again.",
      "connStatus": "Connection: {{state}}",
      "connecting": "Connecting…",
      "copyShareLink": "Copy share link",
      "createError": "Failed to create live stream.",
      "createKey": "Get stream key",
      "defaultCamera": "Default camera",
      "defaultMic": "Default microphone",
      "descPlaceholder": "Description (optional)",
      "deviceError": "Could not access your camera or microphone.",
      "encoderStartError": "Could not start. Make sure your encoder is publishing to the RTMP URL.",
      "endLive": "End live",
      "goLiveNow": "🔴 Go Live Now",
      "hostChatPlaceholder": "Reply as host…",
      "liveBadge": "LIVE",
      "microphone": "Microphone",
      "modeBrowser": "Browser (recommended)",
      "modeEncoder": "OBS / External Encoder",
      "mute": "Mute",
      "obsHelp": "Open OBS (or any RTMP encoder) → Settings → Stream. Choose service \"Custom\" and paste the values below.",
      "openWatchPage": "Open watch page",
      "permDenied": "Camera/microphone access was denied. Please grant permission in your browser settings and try again.",
      "previewFirst": "Please start your camera preview first.",
      "previewHint": "Allow camera + microphone access to preview your stream.",
      "recordEnabled": "Save recording for replay",
      "rtmpUrl": "RTMP URL (Server)",
      "screenShareError": "Screen share was cancelled or denied.",
      "shareScreen": "Share screen",
      "start": "Start Stream",
      "startError": "Failed to start streaming.",
      "startPreview": "Start camera preview",
      "stopShare": "Stop sharing",
      "streamKey": "Stream key",
      "tagline": "Start broadcasting to your followers in seconds — straight from your browser, no software needed.",
      "title": "Go Live",
      "titlePlaceholder": "Stream title",
      "titleRequired": "Please enter a stream title.",
      "unmute": "Unmute",
      "visibility": "Visibility",
      "noWhipUrl": "Server did not return a WHIP URL — check BOOQ_LIVE_WHIP_BASE_URL.",
      "compositorError": "Failed to start the live compositor.",
      "hostBadge": "Host",
      "reveal": "Reveal"
    },
    "highlights": {
      "new": "New highlight"
    },
    "live": {
      "badge": "Live",
      "chat": "Live chat",
      "chatEmpty": "No messages yet — say hi!",
      "chatLabel": "chat",
      "chatLoginRequired": "Sign in to chat",
      "chatPlaceholder": "Send a message…",
      "end": "End",
      "endedBadge": "Ended",
      "endedNoReplay": "This live has ended",
      "invalidId": "Invalid stream id",
      "loadError": "Could not load your live streams.",
      "myStreams": "My live streams",
      "myStreamsSub": "Manage your past, scheduled and active broadcasts.",
      "noReplayAvailable": "No replay is available for this stream.",
      "noStreams": "You have no live streams yet.",
      "noStreamsSub": "Start broadcasting and connect with your audience in real time.",
      "peakLabel": "peak",
      "replayBadge": "Replay",
      "replayProcessing": "The replay is still being processed — check back in a moment.",
      "startFirst": "Start your first live",
      "startedAtLabel": "Started",
      "title": "Live",
      "totalShort": "total",
      "peakViewers": "{{count}} peak",
      "realtimeConnected": "Realtime connected",
      "pollingMode": "Polling mode",
      "hostBadge": "Host"
    },
    "liveDirEmptyDesc": "Be the first to start a broadcast and welcome your audience.",
    "liveDirEmptyTitle": "No one is live right now",
    "liveDirLoadError": "Could not load live streams. Try again shortly.",
    "liveDirSubtitle": "Discover creators streaming right now.",
    "liveDirTitle": "Live Now",
    "loading": "Loading...",
    "myLiveStreams": "My Live Streams",
    "noContentForHashtag": "No content with this hashtag yet",
    "noContentYet": "No content yet",
    "privacy": "Privacy",
    "readReceipts": "Send read receipts",
    "readReceiptsDesc": "Show double blue ticks when you read messages in your conversations.",
    "replyingToStory": "Replying to your story",
    "revenueRule1": "Earn 10,000 Toman for every 1,000 real views",
    "revenueRule2": "Views must watch at least 30% of the content",
    "revenueRule3": "Revenue is deposited to your wallet monthly",
    "revenueRule4": "Minimum withdrawal: 100,000 Toman",
    "saveContentHint": "Save content to watch later by clicking the bookmark icon",
    "send": "Send",
    "showLastSeen": "Show last seen",
    "showLastSeenDesc": "Let others see when you were last active on the platform.",
    "showOnlineStatus": "Show online status",
    "showOnlineStatusDesc": "Let others see when you are currently online.",
    "unknown": "Unknown",
    "unlike": "Unlike",
    "untitledTrack": "Untitled Track",
    "uploadNow": "Upload Now",
    "videoAborted": "Video playback was aborted",
    "videoDecodeError": "Video format not supported",
    "videoError": "Error playing video",
    "videoNetworkError": "Network error while loading video",
    "videoNotSupported": "Video source not supported",
    "liveBadge": "LIVE",
    "scrollLeft": "Scroll left",
    "scrollRight": "Scroll right",
    "nav": {
      "home": "Home",
      "shorts": "Shorts",
      "videos": "Videos",
      "podcasts": "Podcasts",
      "posts": "Posts",
      "explore": "Explore",
      "live": "Live",
      "searchPlaceholder": "Search Booq…",
      "brandHome": "Booq Ecosystem home",
      "search": "Search",
      "switchToLight": "Switch to light mode",
      "switchToDark": "Switch to dark mode",
      "uploadContent": "Upload content",
      "upload": "Upload",
      "inbox": "Inbox",
      "myProfile": "My profile",
      "signIn": "Sign In"
    },
    "creatorStudioSubtitle": "Manage your content and analytics",
    "settings": "Settings",
    "notifications": {
      "title": "Notifications",
      "markAllRead": "Mark all read",
      "empty": "No notifications",
      "someone": "Someone",
      "seeAll": "See all",
      "all": "All",
      "unreadOnly": "Unread only",
      "loadMore": "Load more",
      "loadFailed": "Failed to load notifications",
      "justNow": "just now",
      "minutesAgo": "{{count}}m",
      "hoursAgo": "{{count}}h",
      "daysAgo": "{{count}}d",
      "type": {
        "follow": "started following you",
        "like": "liked your post",
        "comment": "commented on your post",
        "reply": "replied to your comment",
        "mention": "mentioned you",
        "message": "sent you a message",
        "storyView": "viewed your story",
        "bookmark": "bookmarked your post",
        "repost": "reposted your post",
        "contentPublished": "published new content"
      },
      "label": "Notifications"
    },
    "removeCoverPreview": "Remove cover preview",
    "uploadCoverImage": "Upload cover image",
    "removeAvatarPreview": "Remove avatar preview"
  },
  "blog": {
    "myPosts": "My Blog Posts",
    "pageNumber": "Page {{page}}",
    "hub": {
      "category": "Category",
      "tag": "Tag",
      "lead": "Every Booq blog article about {{name}}.",
      "backToBlog": "All blog articles",
      "all": "All",
      "categoriesLabel": "Blog categories",
      "postCount": "{{count}} articles",
      "postCount_one": "{{count}} article",
      "categoryArticles": "Articles in this category",
      "tagArticles": "Articles with this tag",
      "notFoundTitle": "This topic is not on the blog",
      "notFoundText": "The address may have changed. Every article is still on the blog.",
      "metaDescription": "Articles about {{name}} on the Booq blog: practical guides, tips and what each service actually costs."
    }
  },
  "chatbot": {
    "brand": "Booq AI",
    "tagline": "Smart assistant",
    "newChat": "New chat",
    "noChats": "No chats yet",
    "noSearchResults": "No chats match that",
    "searchChats": "Search chats",
    "chatActions": "Chat actions",
    "renameChat": "Rename chat",
    "deleteChat": "Delete chat",
    "deleteConfirm": "Delete this chat permanently?",
    "pin": "Pin",
    "unpin": "Unpin",
    "pinned": "Pinned",
    "archive": "Archive",
    "unarchive": "Restore to chats",
    "today": "Today",
    "yesterday": "Yesterday",
    "previous7Days": "Previous 7 days",
    "older": "Older",
    "closeSidebar": "Close sidebar",
    "toggleSidebar": "Toggle sidebar",
    "toToggle": "to toggle",
    "toman": "Toman",
    "search": "Search",
    "web": "web",
    "copy": "Copy",
    "copied": "Copied",
    "copyMessage": "Copy message",
    "copyCode": "Copy code",
    "noResponse": "(no response)",
    "send": "Send",
    "sendTitle": "Send your message. Attachments add to the cost.",
    "stopGenerating": "Stop generating",
    "stoppedBadge": "Stopped",
    "attachFile": "Attach file",
    "attachFileOrImage": "Attach a file or image",
    "composerPlaceholder": "Message Booq AI…",
    "disclaimer": "AI may produce inaccurate information. Verify critical details.",
    "heroTitle": "How can I help today?",
    "heroSubtitle": "Ask anything — code, math, summaries, translation, brainstorming. Pick a model below and start typing.",
    "cardExplainCode": "Explain code",
    "cardExplainCodePrompt": "Explain this React component step by step:\n\n```tsx\n// paste code here\n```",
    "cardBrainstorm": "Brainstorm ideas",
    "cardBrainstormPrompt": "Help me brainstorm five fresh ideas for a content series about ",
    "cardSummarize": "Summarize a topic",
    "cardSummarizePrompt": "Give me a concise, well-structured summary of ",
    "cardSolve": "Solve a problem",
    "cardSolvePrompt": "Walk me through the solution to this problem step by step: ",
    "model": {
      "change": "Change model",
      "pickerTitle": "Choose a model",
      "priceNote": "Prices are in Toman and already include everything you are charged.",
      "recommended": "Recommended",
      "perThousand": "{{inPrice}} in · {{outPrice}} out — per 1,000 tokens",
      "typical": "≈ {{price}} Toman per typical message",
      "legendModalities": "Icons: what it can read besides text"
    },
    "tier": {
      "flagship": "Flagship",
      "pro": "Pro",
      "standard": "Standard",
      "fast": "Fast"
    },
    "modality": {
      "image": "Reads images",
      "file": "Reads documents",
      "audio": "Reads audio",
      "video": "Reads video"
    },
    "reasoning": {
      "label": "Thinking depth",
      "fast": "Fast",
      "balanced": "Balanced",
      "deep": "Deep",
      "hintMultiplier": "About {{factor}}× the price of Fast — roughly {{price}} Toman for this message",
      "hintCheapest": "The cheapest setting — roughly {{price}} Toman for this message"
    },
    "composer": {
      "dropHere": "Drop files to attach them",
      "webSearchTitle": "Let the assistant search the web for this message",
      "inputLabel": "Your message",
      "textOnly": "This model reads text only",
      "estimate": "This message ≈ {{price}} Toman",
      "stopTitle": "Stop — you are billed only for what was written",
      "waitingForFiles": "Waiting for the files to be read…",
      "tooLong": "This message is longer than {{max}} characters"
    },
    "status": {
      "searching": "Searching the web…",
      "thinking": "Thinking…"
    },
    "branch": {
      "previous": "Previous version",
      "next": "Next version"
    },
    "edit": {
      "title": "Edit and send again",
      "resend": "Save & resend"
    },
    "regenerate": {
      "title": "Answer again",
      "label": "Try again",
      "withModel": "Another model",
      "withModelTitle": "Answer again with a different model"
    },
    "cost": {
      "chip": "{{price}} Toman",
      "estimatedTitle": "Stopped mid-answer — this is an estimate of what was used",
      "exactTitle": "Charged to your wallet for this message",
      "thisChat": "This chat: {{price}} Toman",
      "today": "Today: {{price}} Toman",
      "balance": "Balance: {{price}} Toman",
      "topUp": "Top up"
    },
    "error": {
      "MODEL_UNAVAILABLE": "This model is not available right now. Try another one.",
      "RATE_LIMITED": "Too many requests at once. Wait a moment and try again.",
      "CONTENT_BLOCKED": "This request was blocked by the safety filter.",
      "UPSTREAM_ERROR": "Something went wrong. Please try again.",
      "INSUFFICIENT_BALANCE": "Your balance does not cover this message",
      "needed": "About {{price}} Toman is needed for it.",
      "topUpCta": "Top up your wallet",
      "retry": "Try again",
      "TOO_MANY_ATTACHMENTS": "You can attach only a few files to one message — the extra ones were not added."
    },
    "attachment": {
      "downloadError": "Could not download this file",
      "clickToDownloadLower": "click to download",
      "clickToDownload": "Click to download",
      "remove": "Remove attachment",
      "downloadFile": "Download {{filename}}",
      "uploading": "Uploading… {{pct}}%",
      "reading": "Reading the file…",
      "error": {
        "INGEST_FAILED": "This file could not be read",
        "FILE_TOO_LARGE": "This file is too large",
        "UPLOAD_FAILED": "Upload failed — try again",
        "INGEST_TIMEOUT": "Reading this file took too long",
        "UNSUPPORTED_TYPE": "This file type is not supported"
      }
    },
    "settings": {
      "open": "Chat settings and usage",
      "title": "Chat settings",
      "tabPreferences": "Preferences",
      "tabUsage": "Usage",
      "customInstructions": "Custom instructions",
      "customInstructionsHint": "Added to every message you send, so keep it short — it uses part of your context.",
      "customInstructionsPlaceholder": "For example: answer briefly, in simple language, and always show your sources.",
      "charCount": "{{used}} / {{max}}",
      "responseLanguage": "Answer language",
      "responseLanguageHint": "Automatic answers in whatever language you write in.",
      "languageAuto": "Automatic",
      "languageFa": "Persian",
      "languageEn": "English",
      "languageAr": "Arabic",
      "defaultModel": "Model for new chats",
      "defaultReasoning": "Thinking depth for new chats",
      "defaultsHint": "Only new chats start here — a chat you already opened keeps its own model.",
      "saved": "Saved",
      "saveFailed": "Could not save your settings. Please try again."
    },
    "usage": {
      "openTitle": "See what chat has cost you, by day and by model",
      "range": {
        "7d": "7 days",
        "30d": "30 days",
        "90d": "90 days",
        "all": "All time"
      },
      "totalMessages": "Messages",
      "totalCost": "Spent",
      "todayCost": "Today",
      "byDay": "By day",
      "byModel": "By model",
      "messagesN": "{{n}} messages",
      "empty": "Nothing spent on chat in this period yet."
    },
    "sessions": {
      "viewLabel": "Which chats to show",
      "viewChats": "Chats",
      "viewArchived": "Archived",
      "searchArchived": "Search archived chats",
      "noArchived": "No archived chats. Archive a chat from its menu to take it off the list without deleting it.",
      "noArchivedMatch": "No archived chats match that",
      "archivedLoadFailed": "Could not load your archived chats."
    },
    "startersTitle": "Start from an example"
  },
  "watchPage": {
    "reply": "Reply",
    "comments": "Comments",
    "replyingToComment": "Replying to comment",
    "writeAComment": "Write a comment…",
    "postComment": "Post comment",
    "signInToComment": "Sign in to comment",
    "noCommentsYet": "No comments yet. Be the first!",
    "loadMoreComments": "Load more comments",
    "untitled": "Untitled",
    "viewsCount": "{{n}} views",
    "following": "Following",
    "follow": "Follow",
    "share": "Share",
    "save": "Save",
    "moreOptions": "More options",
    "edit": "Edit",
    "delete": "Delete",
    "report": "Report",
    "showLess": "Show less",
    "showMore": "Show more",
    "upNext": "Up Next",
    "like": "Like",
    "originalAudio": "Original Audio",
    "back": "Back",
    "shorts": "Shorts",
    "toggleOverlay": "Toggle overlay",
    "comment": "Comment",
    "likesCount": "{{n}} likes",
    "less": "less",
    "ellipsisMore": "… more",
    "viewAllComments": "View all {{n}} comments",
    "addAComment": "Add a comment…",
    "post": "Post",
    "morePosts": "More posts",
    "podcast": "Podcast",
    "untitledEpisode": "Untitled Episode",
    "episodeNotes": "Episode Notes",
    "creator": "Creator",
    "moreEpisodes": "More Episodes",
    "loading": "Loading…",
    "contentNotFound": "Content not found",
    "backToFeed": "Back to feed",
    "deleteContentQuestion": "Delete content?",
    "deletePermanentWarning": "This action is permanent and cannot be undone.",
    "cancel": "Cancel",
    "reportContent": "Report Content",
    "whyReporting": "Why are you reporting this?",
    "reportSpam": "Spam or misleading",
    "reportHarassment": "Harassment or bullying",
    "reportHateSpeech": "Hate speech",
    "reportViolence": "Violence or dangerous content",
    "reportAdultContent": "Adult content",
    "reportCopyright": "Copyright violation",
    "reportOther": "Other",
    "additionalDetails": "Additional details (optional)",
    "submit": "Submit"
  },
  "uploadPage": {
    "errorLoadContent": "Failed to load content for editing.",
    "errorSelectType": "Please select a content type first.",
    "errorSingleFile": "This content type supports only one file.",
    "errorFileTooLarge": "\"{{name}}\" exceeds the {{size}} MB limit.",
    "errorUnsupportedFormat": "\"{{name}}\" is not a supported format for this type.",
    "errorUpdate": "Failed to update. Please try again.",
    "errorUpload": "Upload failed. Please try again.",
    "preview": "Preview",
    "moveLeft": "Move left",
    "moveRight": "Move right",
    "remove": "Remove",
    "closePreview": "Close preview",
    "createTitle": "Create something new",
    "createSubtitle": "Choose the type of content to share",
    "type_shorts_label": "Short",
    "type_shorts_desc": "Vertical video up to 60 seconds",
    "type_long_video_label": "Video",
    "type_long_video_desc": "Full-length video up to 4 hours",
    "type_podcast_label": "Podcast",
    "type_podcast_desc": "Audio episode up to 200 MB",
    "type_post_label": "Post",
    "type_post_desc": "Images, videos, audio, documents — up to 10 files",
    "type_story_label": "Story",
    "type_story_desc": "Disappears after 24 hours (30 s max)",
    "selectFile": "Select file to upload",
    "back": "Back",
    "editType": "Edit {{type}}",
    "newType": "New {{type}}",
    "saving": "Saving…",
    "uploadingPercent": "Uploading {{percent}}%",
    "published": "Published!",
    "saveChanges": "Save changes",
    "publish": "Publish",
    "currentMedia": "Current media",
    "fullPreview": "Full preview",
    "dropToUpload": "Drop to upload",
    "dropFilesPrompt": "Drop files here or click to browse",
    "maxSize": "max {{size}} MB",
    "selectTypeFirst": "Select a content type above first",
    "carouselHint": "You can select up to 10 files for a carousel",
    "carouselCount": "Carousel ({{count}}/10)",
    "carouselReorderHint": "Hover to reorder or remove. First file is the cover.",
    "addMore": "Add more",
    "changeFile": "Change file",
    "titleLabel": "Title",
    "titlePlaceholder": "Give your content a great title…",
    "descriptionLabel": "Description",
    "descriptionPlaceholder": "Tell viewers about your content…",
    "hashtagsLabel": "Hashtags",
    "removeHashtag": "Remove #{{tag}}",
    "hashtagPlaceholder": "Add a hashtag…",
    "addHashtag": "Add hashtag",
    "privacyLabel": "Privacy",
    "visibility_public": "Public",
    "visibility_followers": "Followers only",
    "visibility_private": "Private",
    "categoryLabel": "Category",
    "selectCategory": "— Select a category —",
    "category_music": "Music",
    "category_education": "Education",
    "category_entertainment": "Entertainment",
    "category_lifestyle": "Lifestyle",
    "category_news": "News",
    "category_tech": "Tech",
    "category_gaming": "Gaming",
    "category_sports": "Sports",
    "category_other": "Other",
    "podcastDetails": "Podcast details",
    "showNamePlaceholder": "Show name",
    "seasonPlaceholder": "Season #",
    "seasonNumber": "Season number",
    "episodePlaceholder": "Episode #",
    "episodeNumber": "Episode number",
    "shortDetails": "Short details",
    "soundCreditPlaceholder": "Sound credit — Artist · Track",
    "allowStitch": "Allow others to stitch with this Short",
    "addLocation": "Add location",
    "coverImage": "Cover image",
    "removeThumbnail": "Remove thumbnail",
    "uploadCoverImage": "Upload cover image",
    "allowComments": "Allow comments",
    "allowCommentsHint": "Viewers can leave comments",
    "disableComments": "Disable comments",
    "enableComments": "Enable comments"
  },
  "upload": {
    "resumeAvailable": "An unfinished upload of this file was found. It will continue from where it stopped.",
    "startOver": "Start over",
    "resumed": "Resuming your previous upload — already-sent parts are being skipped.",
    "resumedBytes": "{{size}} was already uploaded before.",
    "switchedMethod": "This network is refusing the fast upload method. Switched to a more compatible one — your progress is kept.",
    "throttled": "The server asked us to slow down. Waiting a moment, then continuing.",
    "stalled": "The connection stopped responding. Reconnecting and continuing from the last completed part.",
    "retrying": "A weak connection interrupted a part. Retrying (attempt {{attempt}})…",
    "verifying": "Finishing up and verifying the uploaded file…",
    "failedResumable": "The upload could not finish on this network. Your progress is saved — press the button again to continue from where it stopped."
  },
  "createCourse": {
    "taAdded": "TA added",
    "removed": "Removed",
    "userNotFound": "User not found",
    "courseUpdated": "Course updated",
    "courseCreated": "Course created",
    "saveError": "Error saving course",
    "levelBeginner": "Beginner",
    "levelIntermediate": "Intermediate",
    "levelAdvanced": "Advanced",
    "levelAll": "All Levels",
    "typeVideo": "Video",
    "typeAudio": "Audio",
    "typeDocument": "Document",
    "typeArchive": "Archive",
    "typeText": "Text",
    "typeProject": "Project",
    "typeQuiz": "Quiz",
    "typeAssignment": "Assignment",
    "stepBasicInfo": "Basic Info",
    "stepDetails": "Details",
    "stepPricing": "Pricing",
    "stepContent": "Content",
    "stepSeo": "SEO",
    "stepTeam": "Team",
    "loadingCourse": "Loading course...",
    "editTitle": "Edit Course",
    "createTitle": "Create Course",
    "headerSubtitle": "Build and publish your educational course",
    "thumbnail": "Course Thumbnail",
    "thumbnailHint": "Accepted: JPG, PNG, WebP — Max 5MB",
    "titleAndDescription": "Title & Description",
    "titleEn": "Title (English)",
    "titleFa": "Title (Persian)",
    "titlePlaceholder": "Course title",
    "titleFaPlaceholder": "Persian course title",
    "shortDescEn": "Short Description (EN)",
    "shortDescFa": "Short Description (FA)",
    "shortDescPlaceholder": "Brief description",
    "shortDescFaPlaceholder": "Brief description (Persian)",
    "fullDescEn": "Full Description (EN)",
    "fullDescFa": "Full Description (FA)",
    "fullDescPlaceholder": "Detailed course description...",
    "fullDescFaPlaceholder": "Detailed course description (Persian)...",
    "basicSettings": "Basic Settings",
    "category": "Category",
    "select": "Select",
    "level": "Level",
    "language": "Language",
    "instructorName": "Instructor Name",
    "instructorNamePlaceholder": "Instructor name",
    "instructorBio": "Instructor Bio",
    "instructorBioPlaceholder": "Short bio",
    "tags": "Tags",
    "commaSeparated": "comma separated",
    "whatYouLearn": "What you'll learn",
    "whatYouLearnPlaceholder": "e.g. Python fundamentals",
    "skills": "Skills",
    "skillsPlaceholder": "New skill + Enter",
    "tools": "Tools",
    "toolsPlaceholder": "New tool + Enter",
    "requirements": "Requirements",
    "requirementsPlaceholder": "e.g. Basic programming knowledge",
    "addItem": "Add item",
    "courseSettings": "Course Settings",
    "sequentialLearning": "Sequential Learning",
    "sequentialDesc": "Students must complete lessons in order",
    "certificate": "Certificate of Completion",
    "certificateDesc": "Award certificate to qualifying students",
    "minScoreCert": "Minimum score for certificate (%)",
    "pricing": "Pricing",
    "isFree": "This course is free",
    "price": "Price (Tomans)",
    "originalPrice": "Original Price (discount)",
    "discountHint": "Higher original price = discount shown",
    "revenueInfo": "Revenue Info",
    "revenueDesc": "You will receive 50% of the sales revenue.",
    "sections": "Sections",
    "lessons": "Lessons",
    "totalTime": "Total Time",
    "minutesShort": "min",
    "sectionTitlePlaceholder": "Section title",
    "titleFaShort": "Title (FA)",
    "lessonsLower": "lessons",
    "moveUp": "Move up",
    "moveDown": "Move down",
    "deleteSection": "Delete section",
    "lessonTitlePlaceholder": "Lesson title",
    "secondsShort": "sec",
    "deleteLesson": "Delete lesson",
    "source": "Source:",
    "sourceUrl": "URL",
    "sourceProject": "Project",
    "sourceUpload": "Upload",
    "contentUrlPlaceholder": "Content URL (video, PDF, ...)",
    "selectProject": "Select a project...",
    "noCompletedProjects": "No completed projects found",
    "fileUploaded": "File uploaded",
    "addLesson": "Add Lesson",
    "addSection": "Add New Section",
    "seoTitle": "Search Engine Optimization",
    "seoDesc": "SEO info helps search engines display your course better.",
    "metaTitleEn": "Meta Title (EN)",
    "metaTitleFa": "Meta Title (FA)",
    "metaTitlePlaceholder": "Title for search engines",
    "metaTitleFaPlaceholder": "Persian meta title",
    "metaDescEn": "Meta Description (EN)",
    "metaDescFa": "Meta Description (FA)",
    "metaDescPlaceholder": "Description for search engines",
    "metaDescFaPlaceholder": "Persian meta description",
    "keywords": "Keywords",
    "searchPreview": "Search Result Preview",
    "previewTitleFallback": "Course Title",
    "previewDescFallback": "Course description...",
    "teachingTeam": "Teaching Team",
    "tasHelp": "TAs can help manage your course.",
    "taSearchPlaceholder": "User ID or email...",
    "roleTa": "TA",
    "roleCoInstructor": "Co-Instructor",
    "add": "Add",
    "userNumber": "User #{{id}}",
    "remove": "Remove",
    "noTas": "No TAs added yet",
    "previous": "Previous",
    "cancel": "Cancel",
    "next": "Next",
    "saving": "Saving...",
    "update": "Update",
    "quizSettings": "Quiz Settings",
    "quizTitle": "Quiz Title",
    "quizTitlePlaceholder": "e.g. Chapter 1 Quiz",
    "quizTitleFaPlaceholder": "Persian quiz title",
    "passingScore": "Passing Score (%)",
    "maxAttempts": "Max Attempts",
    "unlimited": "unlimited",
    "timeLimit": "Time Limit (min)",
    "noLimit": "No limit",
    "randomize": "Randomize",
    "finalExam": "Final Exam",
    "quizDescription": "Quiz Description",
    "optionalDescription": "Optional description...",
    "questions": "Questions",
    "totalPoints": "Total points:",
    "true": "True",
    "false": "False",
    "qType4Choice": "4-Choice",
    "qTypeTrueFalse": "True/False",
    "qTypeShortAnswer": "Short Answer",
    "points": "pts",
    "deleteQuestion": "Delete question",
    "questionTextEn": "Question Text (EN)",
    "questionTextPlaceholder": "Write your question...",
    "questionTextFa": "Question Text (FA)",
    "questionTextFaPlaceholder": "Persian question text...",
    "optionsLabel": "Options (select the correct one)",
    "option": "Option",
    "correctAnswer": "Correct Answer",
    "correctAnswerPlaceholder": "Enter the correct answer",
    "addExplanation": "Add explanation (shown after answer)",
    "explanationEn": "Explanation (EN)",
    "explanationFa": "Explanation (FA)",
    "addQuestion": "Add Question",
    "assignmentSettings": "Assignment Settings",
    "assignmentTitle": "Assignment Title",
    "assignmentTitlePlaceholder": "e.g. Chapter 1 Exercise",
    "assignmentDescription": "Description",
    "assignmentInstructions": "Assignment instructions...",
    "dueDays": "Due (days)",
    "maxScore": "Max Score",
    "mandatory": "Mandatory",
    "allowLate": "Allow Late"
  },
  "imageGen": {
    "styleStudio": "Style Studio",
    "styleStudioHint": "Pick a look — see a sample of every choice",
    "clearStyles": "Clear all",
    "searchStyles": "Search styles…",
    "noStylesFound": "No styles match your search.",
    "styleGroupEmpty": "This group has no styles yet.",
    "styleCatalogOffline": "Showing the built-in styles — the latest catalogue could not be loaded.",
    "styleCatalogEmpty": "No styles are available right now.",
    "styleNoSample": "No sample image yet",
    "removeStyle": "Remove",
    "styleDirectivesApplied": "Style choices will be added to your description automatically.",
    "promptLabel": "Image Description (any language)",
    "promptPlaceholder": "Describe the image you want. You can write in any language.",
    "promptHint": "Your text will be translated to English and optimized by AI.",
    "referenceImages": "Reference Images (optional)",
    "remove": "Remove",
    "uploadReference": "Upload reference image",
    "maxRefsHint": "Up to {{count}} reference images. Only models that support reference images will use them.",
    "outputs": "Outputs ({{count}})",
    "add": "Add",
    "duplicate": "Duplicate",
    "model": "Model",
    "selectModel": "Select model",
    "ratio": "Ratio",
    "aspectRatio": "Aspect ratio",
    "resolution": "Resolution",
    "quality": "Quality",
    "addAnotherOutput": "Add another output",
    "costEstimate": "Cost Estimate",
    "imagesLabel": "Images:",
    "referencesLabel": "References:",
    "totalCost": "Total cost:",
    "referenceMode": "How to send this reference to the model",
    "referenceModeHint": "For each reference choose whether to send the image, an AI description, or both. This price applies per generated image.",
    "referenceModeHintActual": "For each reference choose whether to send the image, an AI description, or both. What each reference costs is included in the estimate below.",
    "hqToggle": "Higher quality (4x upscale)",
    "hqHint": "Each image is also delivered at 4x resolution. +{{pct}}% — about {{secs}} seconds more per image.",
    "hqHintIncluded": "Each image is also delivered at 4x resolution, at no extra charge — about {{secs}} seconds more per image.",
    "hqTooMany": "Higher quality is available for up to {{max}} images per order.",
    "hqAdded": "Added to the total: {{amount}}",
    "hqConfirmLabel": "Higher quality (4x)",
    "hqConfirmIncluded": "No extra charge",
    "hqConfirmValue": "+{{pct}}% · {{amount}}",
    "hqBadge": "4K",
    "hqPending": "Preparing 4K...",
    "download4k": "Download 4K",
    "hqRefunded": "4K wasn't produced for this image — the extra charge was refunded.",
    "hqRefundedCount": "4K wasn't produced for {{count}} of your images — the extra charge was refunded."
  },
  "blogEditor": {
    "blockText": "Text",
    "blockHeading": "Heading",
    "blockImage": "Image",
    "blockAudio": "Audio",
    "blockVideo": "Video",
    "blockGallery": "Gallery",
    "blockQuote": "Quote",
    "blockCode": "Code",
    "blockDivider": "Divider",
    "blockEmbed": "Embed",
    "textPlaceholder": "Write your text...",
    "headingPlaceholder": "Heading text...",
    "uploading": "Uploading...",
    "clickUploadImage": "Click to upload image",
    "imageCaption": "Caption",
    "altText": "Alt text",
    "pasteImageUrl": "Or paste image URL",
    "removeFile": "Remove file",
    "clickUploadAudio": "Click to upload audio",
    "audioCaption": "Audio caption",
    "upload": "Upload",
    "youtubeVideo": "YouTube video",
    "clickUploadVideo": "Click to upload video",
    "videoCaption": "Video caption",
    "galleryCaption": "Caption",
    "addImagesToGallery": "Add images to gallery",
    "quotePlaceholder": "Quote text...",
    "attribution": "Attribution",
    "embedUrl": "Embed URL",
    "embedHtml": "Or paste embed HTML code",
    "noBlocks": "No blocks yet",
    "addFirstBlock": "Add first block",
    "postNotFound": "Post not found",
    "saveFailed": "Could not save your post. Please review the title and try again.",
    "statusPending": "This post is pending admin review. Any edit restarts the approval process.",
    "statusApproved": "This post is approved and published. Saving changes will re-submit it for review and temporarily unpublish it.",
    "statusRejected": "This post was rejected by an admin.",
    "reasonLabel": "Reason: ",
    "statusRejectedHint": "After your edits, saving will resubmit it for review.",
    "editPost": "Edit Post",
    "newPost": "New Post",
    "submitting": "Submitting...",
    "resubmitForReview": "Resubmit for Review",
    "submitForReview": "Submit for Review",
    "infoBanner": "Your post will appear on the public blog after admin approval. Your name will be shown as the author.",
    "urlSlug": "URL Slug",
    "featuredImage": "Featured Image",
    "clickToUpload": "Click to upload",
    "category": "Category",
    "selectCategory": "Select category",
    "tags": "Tags",
    "noTags": "No tags available",
    "seoSettings": "SEO Settings",
    "metaTitleEn": "Meta Title (EN)",
    "metaDescEn": "Meta Description (EN)",
    "keywordsCsv": "Keywords (comma-separated)",
    "loadFailed": "Could not load this post. Please refresh and try again.",
    "insertLink": "Insert link",
    "linkHint": "Select text, then Insert link — or use [text](https://…)",
    "linkText": "Link text",
    "linkUrl": "https://… or /app/projects/new?type=translation",
    "blockPricing": "Pricing",
    "pricingHeading": "Section heading",
    "pricingSubtitle": "Subtitle",
    "pricingStyle": "Style",
    "pricingHighlight": "Featured plan (plan code)",
    "pricingHighlightHint": "e.g. plus",
    "pricingNote": "Note under the section",
    "pricingShowUsd": "Show the US dollar price too",
    "pricingShowQuota": "Show the storage size",
    "pricingLiveHint": "Prices are read from the live storage plans when the post is rendered, so a price change reaches this post on its own."
  },
  "inbox": {
    "today": "Today",
    "yesterday": "Yesterday",
    "justNow": "just now",
    "minutesAgo": "{{count}}m ago",
    "hoursAgo": "{{count}}h ago",
    "daysAgo": "{{count}}d ago",
    "failedRetry": "Failed — click message to retry",
    "sending": "Sending",
    "read": "Read",
    "delivered": "Delivered",
    "sent": "Sent",
    "loadConversationsFailed": "Failed to load conversations",
    "loadMessagesFailed": "Failed to load messages",
    "editFailed": "Failed to edit",
    "copied": "Copied",
    "copyFailed": "Copy failed",
    "confirmDeleteMessage": "Delete this message?",
    "deleteFailed": "Failed to delete",
    "reactFailed": "React failed",
    "typing": "typing…",
    "online": "Online",
    "lastSeen": "Last seen {{time}}",
    "messages": "Messages",
    "searchConversations": "Search conversations",
    "loading": "Loading…",
    "noMatches": "No matches",
    "noConversations": "No conversations yet",
    "conversation": "Conversation",
    "selectConversation": "Select a conversation to start chatting",
    "back": "Back",
    "noMessages": "No messages yet — say hello.",
    "jumpToOriginal": "Jump to original message",
    "reply": "Reply",
    "deletedMessage": "[deleted message]",
    "deleted": "[deleted]",
    "edited": "edited",
    "react": "React",
    "copy": "Copy",
    "edit": "Edit",
    "delete": "Delete",
    "editingMessage": "Editing message",
    "replyingTo": "Replying to {{name}}",
    "message": "message",
    "cancel": "Cancel",
    "editMessagePlaceholder": "Edit your message…",
    "writeMessagePlaceholder": "Write a message…",
    "saveEdit": "Save edit",
    "send": "Send"
  },
  "offlineBanner": {
    "title": "You are offline.",
    "message": "Some actions are queued and will sync when you reconnect."
  },
  "adminTags": {
    "errorNameSlugRequired": "Name and slug are required",
    "errorSaveFailed": "Failed to save",
    "title": "Tag Management",
    "subtitle": "Manage blog post tags",
    "newTag": "New Tag",
    "searchPlaceholder": "Search tags...",
    "noTags": "No tags",
    "noResults": "No results found",
    "createFirst": "Create your first tag",
    "edit": "Edit",
    "delete": "Delete",
    "editTag": "Edit Tag",
    "nameEnglish": "Name (English)",
    "namePersian": "Name (Persian)",
    "slug": "Slug",
    "cancel": "Cancel",
    "saving": "Saving...",
    "save": "Save",
    "deleteTag": "Delete Tag",
    "deleteConfirm": "Are you sure you want to delete \"{{name}}\"?",
    "namePlaceholder": "React",
    "slugPlaceholder": "react"
  },
  "songEditor": {
    "heading": "Song Generation Settings",
    "subheading": "Pick a topic, style, and optionally provide custom lyrics — or use the AI lyrics assistant to write them for you.",
    "titleLabel": "Song title (optional)",
    "languageLabel": "Language",
    "topicLabel": "Song topic",
    "topicPlaceholder": "e.g. an autumn night by the sea",
    "styleLabel": "Style",
    "moodLabel": "Mood",
    "lyricsLabel": "Lyrics (optional)",
    "aiWrite": "AI Write",
    "aiImprove": "AI Improve",
    "lyricsPlaceholder": "Type your own lyrics here, or leave empty to let the AI write them",
    "voiceLabel": "Vocal voice (Gemini engine)",
    "durationLabel": "Duration: {{seconds}}s",
    "engineLabel": "Engine",
    "costEstimate": "Engine cost estimate",
    "style": {
      "pop": "Pop",
      "rock": "Rock",
      "ballad": "Ballad",
      "rap": "Rap / Hip-Hop",
      "jazz": "Jazz",
      "folk": "Folk",
      "electronic": "Electronic",
      "country": "Country",
      "indie": "Indie",
      "rAndB": "R&B / Soul"
    },
    "mood": {
      "happy": "Happy",
      "sad": "Sad",
      "energetic": "Energetic",
      "calm": "Calm",
      "romantic": "Romantic",
      "melancholic": "Melancholic",
      "epic": "Epic",
      "playful": "Playful"
    },
    "engine": {
      "auto": "Auto (recommended)",
      "suno": "Suno (vocals + music)",
      "gemini": "Gemini TTS (vocal-only)"
    },
    "vocalLabel": "Lead vocalist",
    "strictLyricsLabel": "Sing my exact lyrics (strict mode)",
    "strictLyricsHint": "Your words are sung verbatim; the AI only splits them and adds structure tags ([Verse], [Chorus], …). Disabled when no lyrics are provided."
  },
  "ecosystemHeader": {
    "backToEcosystem": "Back to ecosystem",
    "ecosystem": "Ecosystem",
    "explore": "Explore",
    "notifications": "Notifications",
    "messages": "Messages",
    "myProfile": "My profile"
  },
  "pwa": {
    "install": {
      "title": "Install Booq",
      "body": "Add Booq to your home screen for faster access and offline support.",
      "iosBody": "Tap the Share icon, then “Add to Home Screen” to install Booq.",
      "install": "Install",
      "notNow": "Not now"
    }
  },
  "pwaUpdate": {
    "title": "A new version is ready",
    "description": "Update whenever you like — nothing changes until you choose.",
    "update": "Update",
    "updateNow": "Update now",
    "updating": "Updating…",
    "whatsNew": "What's new",
    "changelogTitle": "What's new",
    "changelogUnavailable": "The changelog could not be loaded.",
    "changelogEmpty": "No entries yet."
  },
  "livePlayer": {
    "liveConnectionLost": "Live connection lost",
    "couldNotConnect": "Could not connect to live stream",
    "playbackError": "Playback error",
    "play": "Play",
    "pause": "Pause",
    "live": "Live",
    "goToLive": "Go to live",
    "liveBadge": "LIVE",
    "liveBehind": "LIVE • -{{seconds}}s",
    "unmute": "Unmute",
    "mute": "Mute",
    "volume": "Volume",
    "settings": "Settings",
    "speed": "Speed",
    "normalSpeed": "Normal",
    "pictureInPicture": "Picture-in-picture",
    "exitFullscreen": "Exit fullscreen",
    "fullscreen": "Fullscreen"
  },
  "reportShare": {
    "loadReasonsFailed": "Failed to load report reasons.",
    "rateLimited": "You've already reported this link recently. Please try again later.",
    "submitFailed": "Failed to submit report.",
    "title": "Report this shared link",
    "received": "Report received.",
    "reviewNotice": "Our team will review this report. Reference code:",
    "intro": "Tell us if this link or its content is problematic. Anonymous reports are accepted.",
    "reasonLabel": "Reason",
    "reasons": {
      "spam": "Spam or scam",
      "malware": "Malware or unsafe download",
      "copyright": "Copyright infringement",
      "illegal_content": "Illegal content",
      "sexual_content": "Sexual or pornographic content",
      "violence": "Violence or graphic content",
      "hate_speech": "Hate speech",
      "harassment": "Harassment or bullying",
      "misinformation": "Misinformation",
      "privacy": "Privacy violation",
      "broken": "Broken or non-functional link",
      "other": "Other"
    },
    "loadingReasons": "Loading reasons...",
    "detailsLabel": "Details (optional)",
    "detailsPlaceholder": "Tell us what is wrong.",
    "emailLabel": "Contact email (optional)",
    "emailNotice": "Only used to follow up on this report.",
    "submitting": "Submitting...",
    "submit": "Submit report"
  },
  "adminBlogEditor": {
    "editPost": "Edit Post",
    "newPost": "New Post",
    "saveDraft": "Save Draft",
    "saving": "Saving...",
    "publish": "Publish",
    "status": "Status",
    "statusDraft": "Draft",
    "statusPublished": "Published",
    "statusArchived": "Archived",
    "featured": "Featured",
    "urlSlug": "URL Slug",
    "featuredImage": "Featured Image",
    "uploading": "Uploading...",
    "clickToUpload": "Click to upload",
    "category": "Category",
    "selectCategory": "Select category",
    "tags": "Tags",
    "seoSettings": "SEO Settings"
  },
  "blogContent": {
    "youtubeVideo": "YouTube video",
    "embeddedContent": "Embedded content",
    "embeddedVideo": "Embedded video"
  },
  "podcastEditor": {
    "title": "Podcast Generation Settings",
    "subtitle": "Choose a topic, type, voices, and optionally a script. Attach intro/outro jingles, background music, or your own audio inserts.",
    "topic": "Topic",
    "topicPlaceholder": "e.g. The history of AI",
    "language": "Language",
    "additionalNotes": "Additional notes (optional)",
    "podcastType": "Podcast type",
    "type": {
      "monologue": "Monologue",
      "dialogue": "Dialogue",
      "interview": "Interview",
      "narration": "Narration",
      "educational": "Educational"
    },
    "speakers": "Speakers ({{count}} selected)",
    "duration": "Duration: {{count}} minutes",
    "script": "Script (optional)",
    "improve": "Improve",
    "aiWrite": "AI Write",
    "scriptPlaceholder": "Leave empty to let the AI generate from the topic.",
    "audioAttachments": "Audio attachments",
    "addAttachment": "Add attachment",
    "noAttachments": "No attachments — voice only. Add an intro jingle, ducked background music, or custom audio inserts here.",
    "sourceKind": "Source kind",
    "kind": {
      "url": "Public URL",
      "upload": "Upload file",
      "sunoMusic": "Suno music prompt",
      "sunoSong": "Suno song prompt",
      "libraryTrack": "My library track"
    },
    "placementLabel": "Placement",
    "placement": {
      "intro": "Intro jingle",
      "outro": "Outro jingle",
      "background": "Background (ducked)",
      "insertBefore": "Insert before segment",
      "insertAfter": "Insert after segment"
    },
    "sunoPrompt": "Suno prompt",
    "libraryProjectId": "Library project id",
    "uploadedFileKey": "Uploaded file key",
    "fullAudioUrl": "Full audio URL",
    "gain": "Gain (dB)",
    "duck": "Duck (dB)",
    "fadeIn": "Fade in (ms)",
    "fadeOut": "Fade out (ms)",
    "segmentIndex": "Segment index (0-based)",
    "engineCostEstimate": "Engine cost estimate",
    "scriptAssistFailed": "Script assist failed (HTTP {{status}})"
  },
  "pageBuilder": {
    "formError": "Something went wrong. Please try again.",
    "submit": "Submit",
    "servicePricing": {
      "columns": {
        "service": "Service",
        "howPriced": "How it is priced",
        "price": "Price"
      },
      "free": "Free",
      "perMinute": "per minute",
      "perChar": "per character",
      "minimum": "minimum",
      "perLanguage": "per language",
      "settled": "settled after the run",
      "unavailable": "on the project page",
      "campaign": "Active discount",
      "percentSign": "%",
      "off": "off",
      "daysLeft_one": "{{n}} day left",
      "daysLeft_other": "{{n}} days left",
      "loading": "Fetching current prices…",
      "error": "Live prices are unavailable. The exact amount is shown before you confirm a project.",
      "services": {
        "download": {
          "name": "Media download",
          "how": "From YouTube, Instagram and dozens more"
        },
        "translation": {
          "name": "Video translation & dubbing",
          "how": "Per minute, per target language"
        },
        "transcription": {
          "name": "Transcription & subtitles",
          "how": "Per minute — SRT and TXT output"
        },
        "multi_speaker": {
          "name": "Multi-speaker translation",
          "how": "Per minute, per target language"
        },
        "podcast": {
          "name": "Podcast studio",
          "how": "Per character of narration"
        },
        "image": {
          "name": "Image generation",
          "how": "Depends on the model you choose"
        },
        "music": {
          "name": "Music generation",
          "how": "Per minute produced"
        },
        "song": {
          "name": "Song generation",
          "how": "Per minute produced"
        },
        "video_studio": {
          "name": "AI Video Studio",
          "how": "Per step, on real consumption"
        },
        "chatbot": {
          "name": "AI chat",
          "how": "Per message, on real consumption"
        }
      }
    }
  },
  "admin": {
    "nav": {
      "dashboard": "Dashboard",
      "users": "Users",
      "projects": "Projects",
      "archiveOps": "Archive Ops",
      "academy": "Academy",
      "ecosystem": "Ecosystem",
      "analytics": "Analytics",
      "blogPosts": "Blog Posts",
      "categories": "Categories",
      "tags": "Tags",
      "pricing": "Pricing",
      "subscribers": "Subscribers",
      "messages": "Messages",
      "feedback": "Feedback",
      "support": "Support",
      "settings": "Settings"
    },
    "adminPanel": "Admin Panel",
    "closeMenu": "Close menu",
    "openMenu": "Open menu",
    "adminUserFallback": "Admin",
    "logout": "Logout",
    "backToDashboard": "Back to Dashboard"
  },
  "forumThread": {
    "backToThreads": "Back to all threads",
    "pinned": "Pinned",
    "resolved": "Resolved",
    "user": "User",
    "unhide": "Unhide",
    "hideFromStudents": "Hide from students",
    "hideFromAll": "Hide from all",
    "hiddenFromAllParen": "(Hidden from all)",
    "hiddenFromStudentsParen": "(Hidden from students)",
    "hiddenFromAll": "Hidden from all",
    "hiddenFromStudents": "Hidden from students",
    "replyCount": "{{count}} replies",
    "noReplies": "No replies yet — be the first to respond.",
    "replyPlaceholder": "Write a thoughtful reply...",
    "ctrlEnterHint": "Press Ctrl+Enter to send",
    "sending": "Sending...",
    "postReply": "Post reply",
    "acceptedAnswer": "Accepted answer",
    "markAsAnswer": "Mark as answer"
  },
  "numericField": {
    "hr": "hr",
    "min": "min",
    "sec": "sec",
    "ms": "ms"
  },
  "voiceEditor": {
    "outputLanguages": "Output Languages",
    "outputLanguagesHelp": "Select languages for voice output. \"Source\" means the original text is read without translation.",
    "outputMode": "Output Mode",
    "joined": "Joined",
    "separate": "Separate",
    "speakerMode": "Speaker Mode",
    "global": "Global",
    "perBlock": "Per Block",
    "timingMode": "Timing Mode",
    "none": "None",
    "duration": "Duration",
    "timing": "Timing",
    "maxOnlyScale": "Max-Only Scale",
    "scaleOn": "On",
    "scaleOff": "Off",
    "processMode": "Process Mode",
    "automatic": "Automatic",
    "automaticDesc": "Translation and audio generation run end-to-end without interruption.",
    "interactive": "Interactive",
    "interactiveDesc": "Translation runs first, then pauses for you to review and edit translated texts.",
    "selectSpeakerVoice": "Select Speaker Voice",
    "voicePreview": "Voice Preview",
    "stop": "Stop",
    "playSample": "Play sample",
    "blocksHeader": "Blocks ({{count}})",
    "select": "Select",
    "speech": "Speech",
    "silence": "Silence",
    "moveUp": "Move up",
    "moveDown": "Move down",
    "remove": "Remove",
    "text": "Text",
    "textPlaceholder": "Enter text...",
    "toneStyle": "Tone (Style)",
    "styleInstructionsPlaceholder": "Style instructions (optional)",
    "selectSpeaker": "Select speaker",
    "limitDuration": "Limit duration",
    "minutes": "Minutes",
    "minShort": "min",
    "seconds": "Seconds",
    "secShort": "sec",
    "milliseconds": "Milliseconds",
    "msShort": "ms",
    "maxOnly": "Max only",
    "start": "Start",
    "end": "End",
    "hours": "Hours",
    "durationLabel": "Duration:",
    "speechBlock": "Speech Block",
    "silenceBlock": "Silence Block",
    "mergeBlocks": "Merge {{count}} Blocks",
    "importSrt": "Import SRT",
    "exportSrt": "Export SRT",
    "importJson": "Import JSON",
    "exportJson": "Export JSON",
    "charsStat": "{{value}} chars",
    "langsStat": "{{value}} langs",
    "costStat": "{{value}} Toman",
    "blocksMerged": "{{count}} blocks merged",
    "blocksImported": "{{count}} blocks imported",
    "invalidSrt": "Invalid SRT file",
    "invalidJson": "Invalid JSON file",
    "pricingSourceOnly": "{{rate}} Toman/char (Source)",
    "pricingNonSource": "{{total}} Toman/char ({{langs}} lang × {{rate}})",
    "pricingMixed": "{{total}} Toman/char ({{src}} source + {{langs}} lang × {{tgt}})",
    "alignEnd": "End at the same time as the audio (or start together if this speech is longer)",
    "audio": "Audio",
    "audioFile": "Audio / music file",
    "audioUploaded": "Uploaded",
    "chooseAudio": "Choose an audio file",
    "errorBeyondSource": "Block {{n}} ends at {{end}}s, beyond the source media length of {{source}}s.",
    "errorCharsPerSecond": "Block {{n}}: {{chars}} letters in {{dur}}s = {{rate}}/s, over the {{max}} letters-per-second hard limit.",
    "fixErrorsBeforeSubmit": "Fix the following before continuing:",
    "insertBlock": "Insert block",
    "noDuck": "Keep the music at full volume (don't lower it under the speech)",
    "continueAfterPrev": "Start right after the previous block ends (continue over the music if it is still playing)",
    "continueAfterPrevOff": "Waits until both the previous speech and the music have finished, then plays.",
    "continueAfterPrevOn": "Starts the moment the previous block ends — even if the music is still playing (it lowers under this speech) — and the next block gets this same choice.",
    "overlapAudio": "Play over the previous audio (voice-over)",
    "overlapHint": "The music is lowered only while this speech is actually playing over it — it returns to full volume before and after.",
    "overlapOff": "This block plays after the previous one finishes.",
    "playbackSpeed": "Playback speed",
    "replace": "Replace",
    "startBeforeEnd": "Start this long before the audio ends",
    "trimEnd": "Play until",
    "trimStart": "Play from",
    "uploading": "Uploading…",
    "bgmHeader": "Background music",
    "optional": "optional",
    "bgmAdd": "Add background music",
    "bgmAddMore": "Add another music file",
    "bgmOnEnd": "When the music ends before the narration",
    "bgmSilence": "Go silent",
    "bgmLoop": "Repeat music",
    "bgmVolume": "Music volume"
  },
  "adminCategories": {
    "title": "Category Management",
    "subtitle": "Manage blog post categories",
    "newCategory": "New Category",
    "noCategories": "No categories",
    "createFirst": "Create your first category",
    "colName": "Name",
    "colSlug": "Slug",
    "colColor": "Color",
    "colOrder": "Order",
    "colStatus": "Status",
    "colActions": "Actions",
    "active": "Active",
    "inactive": "Inactive",
    "edit": "Edit",
    "delete": "Delete",
    "editCategory": "Edit Category",
    "nameEnglish": "Name (English)",
    "namePersian": "Name (Persian)",
    "slugLabel": "Slug",
    "descEnglish": "Description (English)",
    "descPersian": "Description (Persian)",
    "colorLabel": "Color",
    "iconLabel": "Icon",
    "displayOrder": "Display Order",
    "categoryActive": "Category is active",
    "cancel": "Cancel",
    "save": "Save",
    "saving": "Saving...",
    "deleteCategory": "Delete Category",
    "deleteConfirm": "Are you sure you want to delete \"{{name}}\"?",
    "nameSlugRequired": "Name and slug are required",
    "saveFailed": "Failed to save"
  },
  "privacyPolicy": {
    "documentTitle": "Terms & Privacy Policy — Booq",
    "backToHome": "Back to home",
    "heroTitle": "Booq — Terms of Service & Privacy Policy",
    "heroSubtitle": "Please read this document carefully. Using Booq means you accept the full terms below. The Persian text is the binding original.",
    "lastUpdated": "Last updated: {{date}}",
    "print": "Print",
    "tableOfContents": "Table of contents",
    "sections": "Sections",
    "backToContents": "Back to contents"
  },
  "a11y": {
    "skipToContent": "Skip to content"
  },
  "adminUsers": {
    "title": "User Management",
    "userCount": "{{count}} users",
    "searchPlaceholder": "Search email, mobile, name...",
    "filterAll": "All",
    "active": "Active",
    "inactive": "Inactive",
    "colUser": "User",
    "colContact": "Contact",
    "colBalance": "Balance",
    "colStatus": "Status",
    "colJoined": "Joined",
    "colActions": "Actions",
    "noUsers": "No users found",
    "unnamedUser": "Unnamed User",
    "admin": "Admin",
    "deactivate": "Deactivate",
    "activate": "Activate",
    "editBalance": "Edit Balance",
    "pageOf": "Page {{current}} of {{total}}",
    "userLabel": "User: ",
    "currentBalance": "Current Balance: ",
    "newBalance": "New Balance (Tomans)",
    "reason": "Reason",
    "reasonPlaceholder": "Reason for balance change...",
    "cancel": "Cancel",
    "save": "Save",
    "currency": "{{amount}} T"
  },
  "messageButton": {
    "message": "Message",
    "startFailed": "Could not start conversation"
  },
  "categoryChips": {
    "scrollLeft": "Scroll left",
    "scrollRight": "Scroll right"
  },
  "forumCompose": {
    "askQuestion": "Ask a new question",
    "aboutLesson": "About lesson: ",
    "questionTitle": "Question title",
    "titlePlaceholder": "A clear, concise title...",
    "minThreeChars": "min 3 characters",
    "details": "Details",
    "detailsPlaceholder": "The more detail you share, the better the answer.",
    "minFiveChars": "min 5 characters",
    "posting": "Posting...",
    "postQuestion": "Post question"
  },
  "contentTypePage": {
    "emptyTitle": "No {{label}} yet",
    "emptySubtitle": "Be the first to share one!",
    "uploadNow": "Upload Now",
    "viewUserProfile": "View {{name}}'s profile",
    "untitled": "Untitled",
    "viewsCount": "{{views}} views",
    "untitledEpisode": "Untitled Episode",
    "unknownType": "Unknown content type.",
    "podcasts": "Podcasts",
    "episodesCount": "{{num}}+ episodes"
  },
  "transcriptionReview": {
    "hours": "Hours",
    "minutes": "Minutes",
    "seconds": "Seconds",
    "milliseconds": "Milliseconds",
    "speech": "Speech",
    "silence": "Silence",
    "blocksMerged": "{{num}} blocks merged",
    "invalidSrt": "Invalid SRT file",
    "importedFromSrt": "{{num}} blocks imported from SRT",
    "importedFromJson": "{{num}} blocks imported from JSON",
    "invalidJson": "Invalid JSON file",
    "importSrtFile": "Import SRT file",
    "importJsonFile": "Import JSON file",
    "importSrt": "Import SRT",
    "exportSrt": "Export SRT",
    "importJson": "Import JSON",
    "exportJson": "Export JSON",
    "blocks": "blocks",
    "chars": "chars",
    "mergeBlocks": "Merge {{num}} blocks",
    "drag": "Drag",
    "select": "Select",
    "remove": "Remove",
    "textPlaceholder": "Transcription text...",
    "speaker": "Speaker",
    "toneStyle": "Tone / Style",
    "tonePlaceholder": "e.g. Read aloud naturally:",
    "start": "Start",
    "end": "End",
    "silenceDuration": "Silence Duration",
    "speechBlock": "Speech Block",
    "silenceBlock": "Silence Block"
  },
  "newProject": {
    "voiceSampleUnavailable": "Voice sample not available",
    "projectCreated": "Project created successfully!",
    "insufficientBalanceTopUp": "Insufficient wallet balance. Please top up your wallet.",
    "maxFileSize": "Maximum file size is {{size}}MB",
    "maxArchivePartSize": "Each archive part must be smaller than {{size}}MB",
    "invalidArchiveUrls": "Some archive URLs are invalid.",
    "insufficientBalance": "Insufficient wallet balance",
    "enterPresetName": "Please enter a preset name.",
    "presetSaved": "Preset saved successfully.",
    "presetSaveFailed": "Failed to save preset.",
    "presetDeleted": "Preset deleted.",
    "presetDeleteFailed": "Failed to delete preset.",
    "presetSetDefault": "Preset set as default.",
    "presetSetDefaultFailed": "Failed to set default preset."
  },
  "sharedDownload": {
    "availableDownloads": "Available downloads",
    "backToHome": "Back to Home",
    "bundleFailed": "Bundle download failed.",
    "clear": "Clear",
    "copied": "Copied",
    "copy": "Copy",
    "copyText": "Copy text",
    "defaultTitle": "Shared download",
    "download": "Download",
    "downloadAllZip": "Download all ({{count}}) as ZIP",
    "downloadFileFailed": "Failed to download file.",
    "downloadSelected": "Download {{count}} selected",
    "downloadThisFile": "Download this file",
    "downloading": "Downloading...",
    "expired": "This share link has expired.",
    "filesSelected": "{{selected}} of {{total}} files selected",
    "invalidLink": "Invalid share link.",
    "linkUnavailable": "Link unavailable",
    "loadInfoFailed": "Failed to load share info.",
    "loading": "Loading...",
    "notReady": "Nothing has been shared yet — check back shortly.",
    "outputs": "Outputs",
    "preparing": "Preparing...",
    "reportLink": "Report this link",
    "selectAll": "Select all",
    "selectAsset": "Select {{label}}",
    "sources": "Sources",
    "textsAndLinks": "Text & links",
    "zipHint": "When all files are selected, you get a single ZIP download."
  },
  "profileSettings": {
    "usernamePlaceholder": "username"
  },
  "cmsPage": {
    "backHome": "Back to home",
    "notFoundBody": "This page does not exist or has not been published yet.",
    "notFoundTitle": "Page not found"
  },
  "pageTitles": {
    "privacy": "Terms & Privacy",
    "share": "Shared download",
    "paymentResult": "Payment",
    "newProject": "New project",
    "projectDetail": "Project",
    "chatbot": "Chatbot",
    "blogEditor": "Write a post",
    "videoStudio": "AI Video Studio"
  },
  "videoStudio": {
    "pageTitle": "AI Video Studio",
    "pageSubtitle": "AI Video Studio",
    "loadFailed": "This studio project could not be loaded.",
    "stepper": {
      "label": "Studio stages",
      "optionalHint": "Optional — open it to make a choice"
    },
    "common": {
      "loading": "Loading…",
      "retry": "Try again",
      "none": "None",
      "auto": "Automatic",
      "seconds": "sec",
      "backToBreakdown": "Go to the breakdown",
      "autoNamed": "Automatic ({{model}})",
      "continue": "Continue"
    },
    "price": {
      "free": "Free",
      "toman": "Toman"
    },
    "wallet": {
      "title": "Wallet & spend",
      "balance": "Balance",
      "spent": "Spent on this film",
      "note": "Each step is charged when you confirm it, then reconciled against what the provider actually billed.",
      "projectPage": "Project details"
    },
    "balance": {
      "insufficientTitle": "Not enough balance for this step",
      "insufficientBody": "This step costs {{price}} Toman and your balance is {{balance}} Toman.",
      "shortfall": "Add at least {{amount}} Toman to continue.",
      "topUp": "Top up wallet",
      "insufficientToast": "Not enough balance — please top up."
    },
    "stage": {
      "story": "Story",
      "breakdown": "Breakdown",
      "style": "Style",
      "characters": "Characters",
      "sheets": "Sheets",
      "audio": "Audio",
      "shots": "Shots",
      "edit": "Edit",
      "render": "Render"
    },
    "step": {
      "accepted": "Accepted",
      "requestChanges": "Request changes (optional)",
      "requestChangesPlaceholder": "Tell the AI what to do differently…",
      "confirmAndPay": "Confirm & generate",
      "run": "Run this step",
      "uploadOwn": "Upload my own",
      "promptUsed": "Prompt used",
      "accept": "Accept",
      "regenerate": "Regenerate",
      "edit": "Edit",
      "retry": "Try again",
      "failedTitle": "This step failed",
      "failedGeneric": "Please try again in a moment.",
      "failedRefund": "The charge for this step was refunded.",
      "failedPermanentTitle": "This step can’t run as it is set up",
      "failedPermanentGeneric": "Change something below and generate again — repeating it unchanged will fail the same way.",
      "failedPermanentHint": "Retrying it unchanged will fail again — and be refunded again.",
      "editTitle": "Edit this step",
      "editHint": "Change anything below — length, model, framing, what happens — then generate the edit. Nothing is charged until you do.",
      "editGenerate": "Generate the edit",
      "editClose": "Close the editor",
      "editNoChanges": "Nothing was changed. Change something first, or use Regenerate for another take.",
      "editPromptAdvanced": "Edit the full prompt (advanced)",
      "editPromptHint": "This replaces the descriptive part of the prompt. Style, safety and technical rules are still applied by the studio. Leave it empty to let the studio write it.",
      "editPromptPlaceholder": "Write exactly what should be generated…",
      "editPromptReset": "Clear — let the studio write it",
      "discardPlan": "Dismiss",
      "editInstructionLabel": "What should change in this image?",
      "editInstructionHint": "Keeps the same person — only your change is applied.",
      "editRequiresInstruction": "Describe the change first.",
      "regenerateHint": "Creates a new design from the description.",
      "sentAs": "Sent to the model as: {{text}}",
      "sentVerbatim": "Sent in your own words.",
      "instructionTranslationLine": "Includes translating your instruction (≈ {{price}})",
      "promptTranslationLine": "Includes translating the shot description into English for the video model (≈ {{price}})",
      "sentPromptTitle": "Shot description sent in English",
      "sentPromptHint": "Video models follow English, so your description was translated faithfully before the video was made. Your own words are kept.",
      "sentPromptToggle": "Which text to show",
      "sentPromptEnglish": "Sent in English",
      "sentPromptOriginal": "Original",
      "reconciledTitle": "Removed because of your accepted change",
      "reconciledHint": "These words from the breakdown contradict a look change you accepted, so they were not sent to the model.",
      "reconciledAction": "Shot action",
      "reconciledSceneSummary": "Scene summary",
      "reconciledCharacterLook": "Character look",
      "editInstructionPlaceholder": "e.g. make her wear a red scarf",
      "notesFirstHint": "Your notes are sent first, as the highest priority.",
      "redesignHint": "Want a new design instead? It is made from the description, and anything you typed above is sent first, as the highest priority.",
      "redesignGenerate": "Generate a new design",
      "promptInstruction": "Your instruction",
      "promptSentAs": "Sent to the model as",
      "promptDescription": "Description",
      "strongEditorSuggest": "{{model}} usually keeps the person better when editing. The price follows the model you choose.",
      "strongEditorUse": "Choose {{model}}"
    },
    "lookAmendments": {
      "title": "Accepted changes (carried into later images)",
      "remove": "Remove",
      "removedHint": "Images made before this change won't update — regenerate them to match."
    },
    "story": {
      "title": "Story",
      "subtitle": "The foundation every later stage is generated from.",
      "modeLabel": "What are you starting from?",
      "modeTopic": "From a topic",
      "modeTopicHint": "A subject — the AI invents the story.",
      "modeGoal": "From a goal",
      "modeGoalHint": "What the video must achieve.",
      "modeFullStory": "I have the full story",
      "modeFullStoryHint": "Your own text, kept as written.",
      "inputLabel": "Your idea",
      "placeholderTopic": "e.g. a lonely lighthouse keeper and a stray cat",
      "placeholderGoal": "e.g. convince small shop owners to try online ordering",
      "placeholderFullStory": "Paste or write your complete story here…",
      "enhance": "Improve with AI",
      "enhanceHint": "Rewrite the text into a cinematic story. Turn it off to keep your words exactly as written.",
      "verbatimFree": "Free — your story is kept exactly as written. No AI rewrites it.",
      "targetLength": "Target video length",
      "targetLengthHint": "Guides how many shots the breakdown proposes. You can change it later.",
      "generate": "Write my story",
      "resultLabel": "Your story (editable)",
      "charCount": "{{n}} characters",
      "save": "Save changes (free)",
      "saved": "Saved",
      "savedToast": "Story saved.",
      "needInput": "Write at least a few words to continue.",
      "plan": {
        "title": "Title",
        "logline": "Logline",
        "tone": "Tone",
        "language": "Language"
      }
    },
    "breakdown": {
      "title": "Breakdown",
      "subtitle": "Characters, scenes and the proposed shot list.",
      "planIntro": "The AI reads your accepted story and proposes the characters, the scenes and a shot list with durations. You can edit everything before accepting.",
      "generate": "Build the breakdown",
      "targetLength": "Target length",
      "characters": "Characters",
      "addCharacter": "Add character",
      "removeCharacter": "Remove character",
      "noCharacters": "No characters yet.",
      "name": "Name",
      "role": "Role",
      "age": "Age",
      "voice": "Voice",
      "look": "Appearance",
      "wardrobe": "Wardrobe",
      "scenes": "Scenes",
      "addScene": "Add scene",
      "removeScene": "Remove scene",
      "noScenes": "No scenes yet.",
      "sceneTitle": "Title",
      "location": "Location",
      "timeOfDay": "Time of day",
      "sceneSummary": "What happens in this scene",
      "suggestedShots": "Suggested shots",
      "addShot": "Add shot",
      "removeShot": "Remove shot",
      "noShots": "No shots proposed yet.",
      "shotNo": "Shot {{n}}",
      "duration": "Duration",
      "shotSize": "Shot size",
      "action": "What happens in this shot",
      "shotCount": "Shot count",
      "shotsUnit": "shots",
      "saveEdits": "Save edits (free)",
      "sceneImage": "Scene reference image (optional)",
      "sceneImageHint": "One wide view of this location, without people. Every shot of the scene is matched against it, so the place stays identical across shots.",
      "sceneImageGenerate": "Generate the scene image",
      "sceneImageRegenerate": "Make another",
      "sceneImageFailed": "This scene image could not be generated. Try again.",
      "sceneImageAcceptFirst": "Accept the breakdown first — scene images belong to the accepted scenes.",
      "acceptedReadOnly": "Accepted — to change the breakdown, regenerate it.",
      "reviseHint": "Only your change is applied; everything else stays as it is.",
      "reviewEditHint": "While reviewing you can edit the fields directly — free.",
      "reviseLabel": "What should change in the breakdown?",
      "regenerateHint": "Builds a new breakdown from the story.",
      "acceptedReadOnlyRevise": "Accepted — to change it, use Edit and describe the change, or regenerate it.",
      "tooLargeToRevise": "This breakdown is too long to change by request. Edit its fields directly while reviewing, or regenerate it.",
      "sceneEditHint": "Keeps the same place — only your change is applied."
    },
    "style": {
      "title": "Look & format",
      "subtitle": "These choices are locked into every image and every shot, so the whole film stays consistent. Choosing a style is free.",
      "aspect": "Aspect ratio",
      "defaultImageModel": "Default image model",
      "defaultVideoModel": "Default video model",
      "directives": "Style directives sent to every model",
      "saveContinue": "Save & continue",
      "save": "Save (free)"
    },
    "image": {
      "model": "Image model",
      "aspect": "Aspect ratio",
      "generate": "Generate image",
      "noPreview": "Preview not available yet.",
      "uploadedNote": "This image was uploaded by you (free)."
    },
    "characters": {
      "title": "Character portraits",
      "subtitle": "One portrait per character. The accepted image is reused as the reference everywhere else, so take your time here.",
      "empty": "No characters yet — accept a breakdown first.",
      "emptyNone": "This breakdown has no characters — that is fine for a film with no cast. Continue, or go back and add one."
    },
    "sheets": {
      "title": "Character sheets",
      "subtitle": "A turnaround sheet per character — front, side, back and expressions on a neutral background. It is what keeps faces stable across shots.",
      "empty": "No characters yet — accept a breakdown first.",
      "emptyNone": "This breakdown has no characters, so there are no turnaround sheets to draw."
    },
    "audio": {
      "title": "Soundtrack",
      "subtitle": "Add as many tracks as your film needs. You place them on the timeline in the edit stage.",
      "tracks": "Tracks",
      "removeTrack": "Remove track",
      "volume": "Volume",
      "trimStart": "Trim in",
      "trimEnd": "Trim out",
      "addTrack": "Add a track",
      "pendingTrack": "New audio track",
      "pathUpload": "Upload my own",
      "pathUploadHint": "Your own music or recording — free.",
      "pathSong": "Song with lyrics",
      "pathSongHint": "AI writes and sings the lyrics.",
      "pathMusic": "Instrumental music",
      "pathMusicHint": "A score with no vocals.",
      "pathVoice": "Narration / dialogue",
      "pathVoiceHint": "Block studio with per-block voices.",
      "pathSfx": "Sound effects",
      "pathSfxHint": "Library or generated with AI.",
      "pathCombination": "A combination",
      "pathCombinationHint": "Add as many tracks as you need.",
      "uploadHint": "MP3, WAV, M4A, FLAC or OGG — up to 50 MB. Free.",
      "lyricsFromStory": "Write lyrics from my story",
      "lyricsReady": "Lyrics written from your story.",
      "noStoryForLyrics": "Write and accept a story first.",
      "planSong": "Plan this song",
      "planMusic": "Plan this track",
      "generateVoice": "Generate narration",
      "songPriceNote": "You review the plan before anything is charged; generating costs about {{price}} Toman.",
      "songReviewFirst": "Review the lyrics and plan first (recommended)",
      "songReviewFirstHint": "The AI designs the song for free and pauses so you can edit the lyrics before paying for the generation.",
      "kind": {
        "audio_track": "Music",
        "voice_track": "Narration",
        "sfx": "Sound effect",
        "song": "Song",
        "music": "Instrumental",
        "voice": "Narration",
        "upload": "Uploaded",
        "audio": "Audio",
        "sfx_library": "Library effect",
        "sfx_freesound": "Library effect",
        "sfx_elevenlabs": "Generated effect (premium)",
        "sfx_cassette": "Generated effect (economy)"
      },
      "subtitleV2": "Add as many tracks as your film needs, and remove the ones that did not work. You place and mix them on the timeline in the edit stage.",
      "deleteConfirm": "Remove this track from the project? It is taken out of the timeline too. The generation has already been paid for and is not refunded.",
      "deletedToast": "Removed from the project.",
      "restoredToast": "That take is current again.",
      "regenerate": "Make another take",
      "regenerateQueued": "Review the price below, then confirm.",
      "previousTakes": "Previous takes ({{count}})",
      "takeCurrent": "v{{version}} · current",
      "takeVersion": "v{{version}}",
      "useTake": "Use this take",
      "discardPlan": "Dismiss"
    },
    "sfx": {
      "title": "Sound effects",
      "tabPremium": "Generate · premium",
      "tabEconomy": "Generate · economy",
      "search": "Search",
      "searchPlaceholder": "Search sounds — in any language…",
      "category": "Category",
      "allCategories": "All categories",
      "add": "Add",
      "noResults": "Nothing found.",
      "loadFailed": "Could not load sounds. Please try again.",
      "premiumHint": "Highest quality, priced per second of audio.",
      "economyHint": "Cheapest option — a flat price per generation.",
      "prompt": "Describe the sound",
      "promptPlaceholder": "e.g. heavy wooden door slamming shut in a stone hall",
      "duration": "Length",
      "generate": "Generate sound",
      "tabSearch": "Sound library",
      "loadMore": "Show more sounds",
      "resultCount": "Showing {{shown}} of {{total}} sounds",
      "playPreview": "Play preview",
      "stopPreview": "Stop preview",
      "translatedNotice": "Searched in English for “{{term}}”.",
      "translationCharge": "The translation cost {{amount}} Toman.",
      "categories": {
        "ui": "Interface",
        "voice": "Voices",
        "sci_fi": "Sci-fi",
        "impacts": "Impacts",
        "foley": "Foley",
        "musical_stinger": "Musical stings",
        "footsteps": "Footsteps"
      }
    },
    "player": {
      "play": "Play",
      "pause": "Pause",
      "mute": "Mute",
      "unmute": "Unmute",
      "seek": "Seek",
      "speed": "Playback speed",
      "loadFailed": "Could not load — tap play to retry."
    },
    "shots": {
      "expandAll": "Expand all",
      "collapseAll": "Collapse all",
      "sectionBasics": "Basics",
      "sectionContent": "Content",
      "sectionContinuity": "Continuity & identity",
      "summaryDelivered": "{{delivered}} of {{total}} shots delivered",
      "summaryGenerating": "{{count}} generating",
      "summaryFailed": "{{count}} failed",
      "summaryStart": "Start: {{source}}",
      "summaryEnd": "End: {{source}}",
      "summaryRefs": "{{count}} references",
      "srcPrompt": "prompt only",
      "srcPrevious": "previous shot",
      "srcGenerated": "generated photo",
      "srcUpload": "your image",
      "statusPlan": "Not made yet",
      "statusGenerating": "Generating…",
      "statusDelivered": "Delivered",
      "statusFailed": "Failed",
      "priceFrameShort": "Frames ≈ {{price}}",
      "priceClipShort": "Clip ≈ {{price}}",
      "title": "Shots",
      "subtitle": "Each shot is generated and paid for on its own — start with one, and only continue when you like it.",
      "totalEstimate": "Estimated total for all shots",
      "count": "Number of shots",
      "addShot": "Add shot",
      "removeShot": "Remove shot",
      "save": "Save shot list (free)",
      "shotNo": "Shot {{n}}",
      "duration": "Duration",
      "shotSize": "Shot size",
      "cameraMove": "Camera move",
      "scene": "Scene",
      "model": "Video model",
      "charactersPresent": "Characters in this shot",
      "action": "What happens",
      "dialogue": "Dialogue / voice-over",
      "sfxCue": "Sound-effect cue",
      "usePreviousFrame": "Continue from the previous shot's last frame",
      "usePreviousFrameHint": "Keeps the cut seamless — the new shot starts exactly where the last one ended.",
      "usePreviousFrameUnsupported": "This model cannot start from an image. Pick another model to chain shots.",
      "nativeAudio": "This model can make sound, but studio shots are made silent. Add voice, music and effects in the Audio stage.",
      "generate": "Generate this shot",
      "tierDraft": "Draft — cheapest",
      "tierStandard": "Standard",
      "tierPremium": "Premium",
      "tierSpecialty": "Specialty",
      "size": {
        "extreme_wide": "Extreme wide",
        "wide": "Wide",
        "full": "Full",
        "medium": "Medium",
        "medium_close_up": "Medium close-up",
        "close_up": "Close-up",
        "extreme_close_up": "Extreme close-up",
        "over_the_shoulder": "over the shoulder",
        "insert": "insert"
      },
      "move": {
        "static": "Static",
        "pan_left": "Pan left",
        "pan_right": "Pan right",
        "tilt_up": "Tilt up",
        "tilt_down": "Tilt down",
        "dolly_in": "Dolly in",
        "dolly_out": "Dolly out",
        "truck": "Truck",
        "crane": "Crane",
        "handheld": "Handheld",
        "orbit": "Orbit",
        "zoom_in": "Zoom in",
        "zoom_out": "Zoom out",
        "tracking": "tracking"
      },
      "durationUnit": "s",
      "durationUnsupported": "This model only makes {{allowed}}-second shots.",
      "durationOutOfRange": "This model makes shots between {{min}} and {{max}} seconds.",
      "durationRangeHint": "This model makes shots between {{min}} and {{max}} seconds.",
      "durationSnap": "Use {{seconds}}s",
      "durationSnapAndRun": "Use {{seconds}}s and generate",
      "durationFixAll": "Fix {{count}} shots",
      "modelChangedInvalid": "{{count}} shots need a new length for their model.",
      "priceChangedAfterSnap": "Price {{from}} → {{to}} Toman",
      "durationAdjustedByServer": "This model cannot make a {{from}}s shot, so it was set to {{to}}s — and that is what you are charged for.",
      "adjEndFrameInvalid": "A shot cannot END on the previous shot's last frame — that would run the film backwards. The end frame was cleared.",
      "adjEndFramePromoted": "One frame means \"start here\", so it was moved to the start of the shot.",
      "adjEndFrameUnsupported": "This model cannot finish on a chosen frame, so the end frame was dropped. The model was NOT changed — pick one that supports start-and-end frames if you need it.",
      "adjFirstFrameMissing": "The previous shot has no stored last frame yet, so this shot will be generated from the prompt alone.",
      "adjReferencesCapped": "This model accepts {{max}} reference images, so only the first {{max}} are sent.",
      "adjReferencesDropped": "A fixed frame and reference images cannot travel together, so the references were dropped. Generate the start frame instead and they will be painted into it.",
      "adjReferencesMovedToFrame": "Your references go into the start frame instead of the clip — the frame then carries that identity into the shot.",
      "capFirstLast": "start+end",
      "capReferences": "references",
      "endFrame": "End frame",
      "endFrameUnsupported": "This model cannot finish on a chosen frame. Pick a model that supports start-and-end frames.",
      "frameEmpty": "No image yet.",
      "frameGenerate": "Generate this frame",
      "frameInstructionLabel": "Extra instruction for this frame (optional)",
      "frameInstructionPlaceholder": "e.g. she is already holding the lantern, door half open behind her",
      "framePreviousHint": "This frame comes from the previous shot once it has been generated.",
      "frameRegenerate": "Make another frame",
      "frameReplace": "Replace the image",
      "frameRequiredFirst": "Generate (or upload) the frame above before you generate the shot.",
      "frameSourceGenerated": "Generate a photo",
      "frameSourceNone": "No fixed frame",
      "frameSourcePrevious": "The previous shot last frame",
      "frameSourceUpload": "Upload an image",
      "pipelineFirstLast": "Start → end frame",
      "pipelinePhoto": "Photo → video",
      "pipelineReference": "With references",
      "pipelineText": "Text → video",
      "priceClip": "Clip — charged when you confirm the shot",
      "priceFrame": "Frame image ×{{count}} — charged when you generate it",
      "referenceAdd": "Add a reference image",
      "referenceUploaded": "Your image",
      "references": "Identity references",
      "referencesHint": "Pick the character sheets this shot must match, or add your own image.",
      "referencesUnsupported": "This model takes no reference images — put them in a generated start frame instead, and the frame carries the identity into the shot.",
      "startFrame": "Start frame",
      "framePreviousMissing": "The previous shot was deleted, so there is no stored frame to continue from — this shot will be generated from the prompt alone.",
      "frameFailed": "This frame could not be generated. Change something above or try again.",
      "referenceRemove": "Remove this reference image",
      "referenceNoteEdit": "Name this reference (optional)",
      "referenceNoteTitle": "Reference note — {{label}}",
      "referenceNoteClose": "Close the note editor",
      "referenceNoteHint": "Optional. What is this image, and how should it be used? Both travel into the prompt next to the image.",
      "referenceName": "Name (e.g. Aran)",
      "referenceUsage": "How to use it (e.g. the face and wardrobe of the keeper)",
      "referenceScene": "Scene image",
      "charactersDriveRefsHint": "These characters will also pick the identity references for this shot, since none are chosen below.",
      "referencesSlotsLeft": "{{count}} slots left",
      "referencesAutoScene": "This shot's scene image is added automatically, after your picks.",
      "referencesAutoAnchor": "The previous shot's last frame is added automatically as a continuity anchor.",
      "referencesAutoCounted": "They count towards the {{limit}} this shot can carry — {{count}} slots are still free.",
      "referencesAutoDropped": "This shot can carry {{limit}} reference images in total, so they will not fit. Remove a pick to make room.",
      "adjAutoIdentityCapped": "Your characters need {{from}} reference images and only {{to}} fit, so the last ones are not sent. Pick the sheets that matter most.",
      "adjAutoSceneCapped": "The scene image did not fit in the {{max}} reference slots this shot can carry, so it is matched on the characters alone.",
      "adjAutoAnchorCapped": "The previous shot's last frame did not fit in the {{max}} reference slots, so this frame is composed without it.",
      "referencesAutoCast": "Your chosen characters fill {{count}} of these slots.",
      "referencesSlotsLeft_one": "{{count}} slot left",
      "durationValue": "{{seconds}}s",
      "frameEditHint": "Keeps the same shot and the same people — only your change is applied."
    },
    "edit": {
      "title": "Timeline",
      "subtitle": "Order, trim and mix. Editing costs nothing — only the final render turns it into a file.",
      "empty": "Accept at least one shot before editing.",
      "goToShots": "Go to shots",
      "moveUp": "Move earlier",
      "moveDown": "Move later",
      "transition": "Entrance transition",
      "transitionKind": {
        "none": "None",
        "fade": "Fade",
        "fadeblack": "Fade through black",
        "dissolve": "Dissolve",
        "wipe": "Wipe",
        "slide": "Slide"
      },
      "sceneBackgrounds": "Background track per scene",
      "track": "Track",
      "sfxPlacements": "Sound effects",
      "addSfx": "Place a sound",
      "removeSfx": "Remove sound",
      "noSfx": "No sound effects placed yet.",
      "sound": "Sound",
      "at": "At",
      "save": "Save timeline (free)",
      "savedToast": "Timeline saved.",
      "render": "Render the movie",
      "subtitleV2": "Order the shots, and run as many sound tracks alongside them as you need. Editing costs nothing — only the final render turns it into a file.",
      "summary": "{{clips}} shots · {{tracks}} audio tracks · about {{length}}",
      "videoTrack": "Video",
      "audioTracks": "Sound",
      "duplicate": "Duplicate",
      "removeClip": "Take out of the film",
      "missingClip": "Missing",
      "role": "Track kind",
      "roleKind": {
        "music": "Music",
        "voice": "Narration",
        "sfx": "Effects",
        "ambience": "Ambience"
      },
      "trackLabel": "Track name",
      "removeTrack": "Remove track",
      "mute": "Mute",
      "solo": "Solo",
      "gain": "Track level",
      "duck": "Duck under the narration",
      "addSegment": "Place a sound",
      "removeSegment": "Remove",
      "segmentIndex": "Segment {{n}}",
      "split": "Split",
      "splitAt": "Split at",
      "splitOutside": "Choose a split point inside this segment.",
      "chain": "Butt them end to end",
      "loop": "Repeat until the next sound",
      "sourceIn": "Start inside the sound",
      "sourceOut": "End inside the sound",
      "effects": "Sound effects",
      "effectKind": {
        "fade_in": "Fade in",
        "fade_out": "Fade out",
        "normalize": "Even out",
        "compress": "Compress",
        "eq_telephone": "Telephone",
        "speed": "Speed",
        "highpass": "Cut the lows",
        "lowpass": "Cut the highs",
        "echo": "Echo",
        "reverse": "Reverse",
        "duck": "Duck"
      },
      "noTracks": "Add a track above, then place as many sounds on it as you like — they play in parallel with the picture.",
      "noSegments": "This track is empty.",
      "noAudioAssets": "No sound in this project yet. Add music, narration or effects in the soundtrack stage first.",
      "sceneHint": "Times are measured from the start of the film, not from a scene.",
      "trackLimit": "A timeline can hold {{count}} audio tracks.",
      "segmentLimit": "This timeline is full — remove a segment before adding another."
    },
    "render": {
      "title": "Render",
      "subtitle": "The final mix and encode. Your first render is free — you have already paid for the pieces.",
      "card": "Final movie",
      "planHint": "Everything is ready. Rendering stitches the shots, mixes the audio and produces the downloadable MP4.",
      "start": "Render the movie",
      "noOutput": "The finished film will appear here.",
      "download": "Download",
      "rerenderNote": "The final mix and encode. Your first render was delivered — each new render costs {{price}} Toman.",
      "rerenderConfirmHint": "This is a re-render: {{price}} Toman will be charged when you confirm.",
      "previousRenders": "Previous renders ({{count}})"
    },
    "create": {
      "language": "Language of the film"
    },
    "errors": {
      "durationNotAllowed": "This model only makes {{allowed}}-second shots.",
      "durationOutOfRange": "This model makes shots between {{min}} and {{max}} seconds.",
      "requestRejected": "The video model refused this shot as it is set up. Change it and generate again.",
      "contentBlocked": "This content did not pass the safety check. Reword it and generate again.",
      "stageUnavailable": "This part of the studio is not available yet.",
      "frameNotReady": "This shot starts from an image that has not been made yet — generate (or upload) the frame first.",
      "tooManyReferences": "This shot already holds the maximum number of reference images. Remove one before adding another."
    },
    "progress": {
      "queued": "In the queue…",
      "working": "Processing…",
      "story": "Writing…",
      "breakdown": "Planning…",
      "style": "Preparing…",
      "images": "Drawing…",
      "audio": "Generating audio…",
      "shots": "Generating video…",
      "edit": "Preparing…",
      "render": "Rendering…",
      "awaitingReview": "Ready for your review",
      "awaitingConfirm": "Waiting for you",
      "done": "Done"
    },
    "history": {
      "previousVersions": "Previous versions ({{count}})",
      "version": "v{{version}}",
      "useThis": "Use this one",
      "download": "Download"
    },
    "feedback": {
      "toggle": "Rate this project"
    },
    "continueBar": {
      "done": "The {{stage}} stage is done.",
      "optional": "The {{stage}} stage is optional — add something here, or move on.",
      "next": "Continue to {{stage}}",
      "nothingNeeded": "This film needs nothing in the {{stage}} stage."
    },
    "notices": {
      "label": "Notes",
      "frameDeclinedPerson": "The video model would not use the start frame because it looks like a photo of a real person, so this shot was made from the description alone.",
      "frameDeclined": "The video model would not use the start frame, so this shot was made from the description alone.",
      "someReferencesDeclined": "The video model would not use {{refused}} of the {{sent}} character images, so this shot was made with the rest.",
      "referencesDeclinedPerson": "The video model would not use your character images because they look like photos of real people, so this shot was made from the description alone. Faces may differ from your character sheets. For consistent faces, pick a video model from another provider.",
      "referencesDeclined": "The video model would not use your character images, so this shot was made from the description alone. Faces may differ from your character sheets.",
      "closingFrameDeclinedPerson": "The video model would not use the closing frame because it looks like a photo of a real person, so this shot starts from your opening frame but is not steered to that ending.",
      "closingFrameDeclined": "The video model would not use the closing frame, so this shot starts from your opening frame but is not steered to that ending."
    }
  },
  "toneHelp": {
    "text": "The tone guides how the text is delivered — it is never spoken aloud. Write it in any language; it is refined automatically before synthesis."
  },
  "speechRate": {
    "sparseTitle": "Not much text for this much time",
    "sparseBody": "About {{rate}} letters/sec ({{wpm}} words/min) across {{seconds}}s. Natural speech runs at roughly {{min}} letters/sec or more, so the voice has to be stretched out to fill the slot and will sound unnaturally slow and drawn out.",
    "sparseFix": "Add more text or shorten this block’s duration. You can also leave it as it is and continue.",
    "summary": "{{blocks}} block(s) hold far less text than their duration allows. The voice in them will be stretched to fill the time and can sound unnaturally slow. Add more text or shorten those blocks — or continue as is, this is only a suggestion."
  },
  "payment": {
    "paidWithVat": "{{gross}} Toman paid (including {{vat}} Toman VAT); {{net}} Toman was added to your wallet.",
    "paidNoVat": "{{net}} Toman has been added to your wallet.",
    "result": {
      "successTitle": "Payment successful!",
      "failedTitle": "Payment failed",
      "successBody": "Your wallet has been topped up.",
      "failedBody": "Unfortunately, the payment was not completed. Please try again.",
      "amount": "Amount",
      "paymentId": "Payment ID",
      "reference": "Reference",
      "status": "Status",
      "goToWallet": "Go to wallet",
      "projects": "Projects",
      "retry": "Try topping up your wallet again"
    },
    "status": {
      "pending": "Pending",
      "paid": "Paid",
      "completed": "Completed",
      "failed": "Failed",
      "cancelled": "Cancelled",
      "refunded": "Refunded"
    },
    "return": {
      "pendingTitle": "Confirming payment…",
      "pendingBody": "We are checking with the payment gateway. This usually takes a few seconds.",
      "successTitle": "Payment successful",
      "failedTitle": "Payment failed",
      "notSuccessful": "Payment status: {{status}}. Please try again or contact support.",
      "reference": "Reference: {{reference}}",
      "viewWallet": "View wallet",
      "projects": "My projects",
      "loadFailed": "We could not retrieve the payment status. Check your wallet in a moment, or contact support.",
      "sessionMismatch": "This payment session does not match. Please try again.",
      "missingId": "The payment identifier is missing. Check your wallet to see whether the top-up went through."
    }
  },
  "discount": {
    "campaignBadge": "{{percent}}% off",
    "wasPrice": "was",
    "until": "until {{date}}",
    "codeApplied": "Discount code applied",
    "codeExhausted": "This discount code has reached its limit"
  },
  "welcome": {
    "title": "Welcome to Booq",
    "subtitle": "Two quick choices and your workspace looks the way you like it.",
    "language": "Language",
    "theme": "Theme",
    "skip": "Later",
    "start": "Let’s start",
    "step": "Step {{current}} of {{total}}",
    "next": "Continue",
    "back": "Back",
    "themeTitle": "Pick a look",
    "themeHint": "Thirteen themes, applied as you choose. You can change it any time from the top bar."
  },
  "support": {
    "unreadReplies": "{{count}} unread replies"
  },
  "library": {
    "title": "My Library",
    "subtitle": "Everything you have uploaded or created on Booq, in one place.",
    "storage": "Storage",
    "usedOfQuota": "{{used}} of {{quota}}",
    "remaining": "{{remaining}} free",
    "noPlanYet": "No storage plan loaded yet.",
    "measuring": "Working out how much space you are using…",
    "fileCount": "{{count}} files",
    "unmeasured": "At least this much: {{count}} files have not been measured yet, so they are not in the total.",
    "filters": "Filters",
    "searchPlaceholder": "Search by name",
    "sort": "Sort",
    "sortNewest": "Newest first",
    "sortOldest": "Oldest first",
    "sortLargest": "Largest first",
    "sortName": "By name",
    "sortUsed": "Recently used",
    "viewGrid": "Grid view",
    "viewList": "List view",
    "open": "Open",
    "download": "Download",
    "downloadFailed": "The download could not be started.",
    "loadFailed": "Your library could not be loaded.",
    "refreshing": "Refreshing…",
    "empty": "Nothing here yet.",
    "emptyHint": "Files you upload and everything Booq produces for you show up here automatically.",
    "noMatches": "No files match this filter.",
    "startProject": "Start a project",
    "sizeUnknown": "Size unknown",
    "noPreview": "No preview for this kind of file.",
    "prevPage": "Previous",
    "nextPage": "Next",
    "missingShort": "Unavailable",
    "missingTitle": "This file is missing from our storage",
    "missingBody": "Booq can no longer find this file where it put it. That is a fault on our side, not something you did, and nothing else in your library is affected.",
    "missingCheckAgain": "Check again",
    "missingChecking": "Checking…",
    "missingChecked": "Your library was checked again.",
    "missingCheckCooldown": "Your library was just checked. Try again in a minute.",
    "missingCheckFailed": "The check could not be run.",
    "goneTitle": "This file is not in your library",
    "goneBody": "It is no longer part of your library, so it cannot be opened or downloaded.",
    "unreachableTitle": "This file could not be checked",
    "unreachableBody": "Your library did not answer, so we cannot say anything about this file yet. Nothing has changed — try again.",
    "tabs": {
      "files": "Files",
      "plans": "Storage & plans"
    },
    "unit": {
      "B": "B",
      "KB": "KB",
      "MB": "MB",
      "GB": "GB",
      "TB": "TB",
      "PB": "PB"
    },
    "kind": {
      "all": "All",
      "video": "Video",
      "audio": "Audio",
      "image": "Images",
      "subtitle": "Subtitles",
      "document": "Documents",
      "archive": "Archives",
      "other": "Other"
    },
    "origin": {
      "project_input": "Uploaded for a project",
      "project_source_media": "Project source media",
      "project_subtitle_in": "Subtitle you provided",
      "project_output": "Project result",
      "project_subtitle_out": "Subtitle we made",
      "project_image": "Generated image",
      "project_image_hq": "Generated image (4K)",
      "reference_image": "Reference image",
      "background_music": "Background music",
      "audio_asset": "Audio clip",
      "interactive_seed": "Studio starting point",
      "studio_asset": "Video studio asset",
      "chat_attachment": "Chat attachment",
      "upload_orphan": "Upload",
      "library_upload": "Uploaded to library",
      "library_copy": "Library copy",
      "other": "Other",
      "storage_sweep": "Project file"
    },
    "field": {
      "origin": "Where it came from",
      "created": "Created",
      "project": "Project",
      "type": "File type"
    },
    "delete": {
      "action": "Delete",
      "title": "Delete this file?",
      "body": "“{{name}}” will be removed from your library.",
      "refcountNotice": "If a project still uses this file, the file itself is kept and only your library entry goes. Your finished projects are never broken by a delete here.",
      "done": "File deleted.",
      "doneStillUsed": "Removed from your library. The file itself is still used by a project, so it was kept.",
      "failed": "The file could not be deleted.",
      "inUseTitle": "This file is still in use",
      "inUseBody": "Project {{projects}} still uses this file, so it cannot be deleted from storage.",
      "inUseBodyGeneric": "Something on your account still uses this file, so it cannot be deleted from storage.",
      "inUseOffer": "You can still take it out of your library. The file stays where it is, your project keeps working, and it stops counting toward the space you have left only once nothing uses it.",
      "removeEntry": "Remove from library only"
    },
    "pick": {
      "fromLibrary": "From library",
      "fromLibraryShort": "Library",
      "upload": "Upload a file"
    },
    "picker": {
      "title": "Choose from my library",
      "subtitle": "Files you already have on Booq. Picking one copies nothing and costs nothing.",
      "pickOne": "Pick one file",
      "selectedOfMax": "{{count}} of {{max}} selected",
      "use": "Use this file",
      "noneOfType": "None of your files match what this field accepts.",
      "emptyHint": "Upload a file instead — it will appear here for next time.",
      "showMore": "Show {{count}} more",
      "searchForMore": "{{count}} more files are not shown. Search by name to find one.",
      "selectFile": "Select {{name}}"
    },
    "plans": {
      "manage": "Storage plans",
      "current": "Current",
      "currentBadge": "Plan: {{name}}",
      "yourPlan": "Your plan",
      "choose": "Choose",
      "switch": "Switch plan",
      "payAndSwitch": "Pay and switch",
      "free": "Free",
      "perMonth": "per month",
      "toman": "{{price}} Toman",
      "none": "No storage plans are on offer right now.",
      "loadFailed": "The storage plans could not be loaded.",
      "confirmTitle": "Switch to {{name}}?",
      "confirmBody": "{{quota}} of storage for {{price}} a month, taken from your wallet.",
      "quoting": "Working out what you pay today…",
      "prorationCredit": "{{credit}} Toman comes back for the {{days}} days you already paid for on your current plan.",
      "netToday": "You pay {{amount}} Toman today.",
      "chargeThenCredit": "{{charge}} Toman is taken from your wallet and {{credit}} Toman is put back, so your wallet needs the full {{charge}} Toman first.",
      "renewNotice": "Your wallet is charged once a month automatically. You can turn that off whenever you like — your plan then runs to the end of the month you have already paid for.",
      "freeNotice": "Nothing is charged. If your files no longer fit, the oldest ones are removed to make room.",
      "walletBalance": "Wallet balance: {{balance}} Toman",
      "insufficient": "Your wallet does not cover this plan yet.",
      "insufficientAmount": "Your wallet is {{amount}} Toman short. Top up and try again.",
      "shortBy": "{{amount}} Toman short",
      "topUp": "Top up",
      "changed": "Your storage plan is updated.",
      "changedCharged": "Your plan is updated. {{amount}} Toman was taken from your wallet.",
      "failed": "The plan could not be changed.",
      "cancel": "Turn off automatic renewal",
      "cancelled": "Automatic renewal is off. Your plan and its space stay until the end of the month you have already paid for, and nothing is refunded.",
      "resume": "Turn automatic renewal back on",
      "resumed": "Automatic renewal is back on.",
      "willNotRenew": "Automatic renewal is off. This plan stays until the end of the paid period.",
      "subscriptionTitle": "Your subscription",
      "periodEnds": "Paid through {{date}}",
      "nextCharge": "Renews on {{date}} from your wallet",
      "scheduled": "Moving to {{name}} at the end of this period.",
      "pastDue": "The last renewal could not be paid. Top up your wallet — we retry daily, and after the grace period the plan drops to Free.",
      "overQuotaTitle": "What happens if I run out of space?",
      "overQuotaUpload": "New work keeps running. An upload is never refused because of your plan.",
      "invoices": "Storage invoices",
      "noInvoices": "Nothing has been charged for storage yet.",
      "invoiceDate": "Date",
      "invoicePlan": "Plan",
      "invoiceKind": "Kind",
      "invoiceAmount": "Amount",
      "invoiceStatus": "Status",
      "status": {
        "active": "Active",
        "past_due": "Payment failed",
        "cancelled": "Cancelled",
        "expired": "Expired"
      },
      "invoiceKinds": {
        "charge": "Plan charge",
        "proration_credit": "Credit for unused days",
        "refund": "Refund",
        "free": "Free plan",
        "admin_grant": "Granted by Booq"
      },
      "invoiceStatuses": {
        "paid": "Paid",
        "failed": "Failed",
        "refunded": "Refunded"
      },
      "priceChanged": "The price changed to {{amount}} Toman before this was confirmed. Please review it again.",
      "overQuotaRemove": "When your files pass the size your plan includes, the oldest ones are removed to make room for the newest.",
      "overQuotaRoom": "A bigger plan means more of your work stays in your library instead of making way for the next file.",
      "freeIsFallback": "Every account falls back to this plan when a paid plan ends.",
      "noDeactivate": "A plan cannot be switched off part-way through a month. Turning off automatic renewal is how you stop paying."
    },
    "outOfSpace": "Your plan is full. Upgrade to keep your older files — we always warn you before anything is removed.",
    "almostFull": "Almost full — only {{remaining}} left.",
    "dateUnknown": "Date unknown",
    "openFile": "Open {{name}}",
    "selectFile": "Select {{name}}",
    "fromProject": "Project #{{id}}",
    "pagination": "Pagination",
    "showingRange": "Showing {{from}}–{{to}} of {{total}}",
    "perPage": "Per page",
    "goToPage": "Go to page",
    "ofPages": "of {{pages}}",
    "firstPage": "First page",
    "lastPage": "Last page",
    "clearSearch": "Clear search",
    "clearFilters": "Clear filters",
    "activeFilters": "Filtering by",
    "filterSearch": "Name contains “{{query}}”",
    "filterKind": "Kind: {{kind}}",
    "filterSort": "Sorted: {{sort}}",
    "removeFilter": "Remove {{filter}}",
    "selection": "Selection",
    "selectedCount": "{{count}} selected",
    "selectPage": "Select all {{count}} on this page",
    "clearSelection": "Clear selection",
    "loadFailedHint": "Nothing is wrong with your files — the list simply could not be fetched. Try again.",
    "noMatchesHint": "Your library is not empty — these filters just do not reach any of it.",
    "bulk": {
      "deleteTitle": "Delete {{count}} files?",
      "deleteBody": "{{count}} files will be deleted from Booq for good. This cannot be undone.",
      "capNotice": "At most {{max}} files go at once, so {{left}} of them stay selected for a second press.",
      "progress": "Deleting {{done}} of {{total}}…",
      "stop": "Stop",
      "stopped": "Stopped. {{count}} files were already deleted and stay deleted.",
      "remaining": "{{count}} files are still selected. Press Delete again to continue.",
      "done": "{{count}} files deleted.",
      "doneWithKept": "{{removed}} deleted. {{kept}} are still used by a project and were left alone — delete those one at a time.",
      "failed": "{{count}} files could not be deleted.",
      "downloadStarted": "{{count}} downloads started.",
      "downloadFailed": "{{count}} files could not be downloaded."
    },
    "refresh": "Refresh library",
    "refreshed": "Your library is up to date.",
    "refreshCooldown": "Your library was just refreshed. Try again in a minute.",
    "refreshFailed": "The refresh could not be run."
  },
  "pricingSection": {
    "free": "Free",
    "perMonth": "Toman / month",
    "perYear": "Toman / year",
    "plan": "Plan",
    "storage": "Storage",
    "price": "Price",
    "includes": "Includes",
    "popular": "Popular",
    "loading": "Loading plans…",
    "loadFailed": "Plans could not be loaded.",
    "empty": "No plans to show yet.",
    "unit": {
      "MB": "MB",
      "GB": "GB",
      "TB": "TB"
    },
    "planNames": {
      "free": "Free",
      "starter": "Starter",
      "plus": "Plus",
      "pro": "Pro",
      "business": "Business"
    }
  },
  "releaseNotes": {
    "title": "What's new",
    "badge": "Updates",
    "subtitle": "Everything we have changed for you, in plain language.",
    "releaseTitle": "Update",
    "loading": "Loading updates…",
    "error": "The release notes could not be loaded.",
    "empty": "No updates have been published yet.",
    "footerHint": "Have an idea for what we should build next?",
    "footerLink": "Tell us"
  },
  "showcase": {
    "optIn": {
      "label": "Allow my final result on the public Booq Showcase",
      "hint": "Only the finished output can ever be shown. The Booq team reviews the whole project first, and nothing is public unless approved.",
      "unavailable": "This kind of project is not shown in the Showcase."
    },
    "consent": {
      "title": "Share on the Booq Showcase",
      "intro": "Turning this on asks the Booq team to review your project for public display.",
      "outputOnly": "Only the finished result can ever be public — never your prompt, uploaded files, sources or drafts.",
      "reviewed": "The Booq team reviews the whole project first, and nothing is public unless it is approved.",
      "irreversible": "Once approved, you can no longer withdraw it.",
      "survives": "A published copy stays on the Showcase even if the original is later removed from your library to free space; the original stays private.",
      "labelled": "It is labelled as AI-generated.",
      "confirm": "Yes, send it for review",
      "cancel": "Cancel"
    },
    "panel": {
      "title": "Public Showcase",
      "description": "With your permission, the Booq team can show this project's final result on the public Showcase.",
      "attribution": "Credit",
      "anonymous": "Anonymous",
      "named": "My first name",
      "turnOn": "Request the Showcase",
      "withdraw": "Withdraw request",
      "requestAgain": "Request again",
      "viewPublic": "View on the Showcase",
      "lockedNote": "This project has been approved and can no longer be withdrawn by you.",
      "rejectionReason": "Reason",
      "unpublishReason": "Reason for removal",
      "processingNote": "Your request is recorded and will be reviewed once processing finishes.",
      "saving": "Saving…",
      "requestSent": "Sent to the Booq team for review.",
      "requestWithdrawn": "Your Showcase request was withdrawn.",
      "loadError": "The Showcase status could not be loaded."
    },
    "status": {
      "off": "Off",
      "requested": "Awaiting review",
      "publishing": "Approved — publishing",
      "published": "Published",
      "rejected": "Not approved",
      "unpublished": "Removed from the Showcase"
    },
    "reasons": {
      "TYPE_NOT_SUPPORTED": "This kind of project is not shown in the Showcase.",
      "SOURCE_NOT_OWN_UPLOAD": "Only videos you uploaded yourself can be shown — not videos fetched from a link.",
      "PROJECT_FAILED": "A failed project cannot be shown.",
      "PROJECT_CANCELLED": "A cancelled project cannot be shown.",
      "PROJECT_BLOCKED": "This project cannot be shown."
    },
    "errors": {
      "SHOWCASE_LOCKED": "This project has been approved and can no longer be withdrawn.",
      "SHOWCASE_NOT_ELIGIBLE": "This project cannot be shown in the Showcase.",
      "generic": "That change could not be saved. Please try again.",
      "PROJECT_NOT_FOUND": "This project could not be found. It may have been deleted.",
      "INVALID_ATTRIBUTION": "Choose how you want to be credited: anonymously or by your first name."
    },
    "gallery": {
      "title": "Booq Showcase",
      "subtitle": "Work Booq users made with AI and the Booq team approved for public display.",
      "metaDescription": "Real work by Booq users: images, films, music, songs, podcasts and dubbing made with AI and reviewed before publication.",
      "all": "All",
      "filterLabel": "Type",
      "types": {
        "image": "Images",
        "video": "Films",
        "music": "Music",
        "song": "Songs",
        "podcast": "Podcasts",
        "dubbing": "Dubbing",
        "slides": "Slides"
      },
      "aiBadge": "AI-generated",
      "featured": "Featured",
      "anonymous": "A Booq user",
      "byName": "By {{name}}",
      "publishedOn": "Published {{date}}",
      "empty": "Nothing has been published yet.",
      "emptyType": "Nothing of this type has been published yet.",
      "page": "Page {{page}}",
      "prev": "Previous",
      "next": "Next",
      "pagination": "Pagination",
      "open": "Open {{title}}",
      "play": "Play",
      "backToGallery": "Back to the Showcase",
      "related": "More like this",
      "notFoundTitle": "This item is not on the Showcase",
      "notFoundBody": "It may have been removed, or the address is wrong.",
      "ctaTitle": "Make your own",
      "ctaBody": "Start your first project with {{amount}} of signup credit.",
      "ctaBodyNoAmount": "Sign up and start your first project in minutes.",
      "ctaButton": "Start a project",
      "loading": "Loading…",
      "error": "The Showcase could not be loaded.",
      "howItWorks": "Every item was published with its owner's permission after review by the Booq team. Only the final result is shown.",
      "aiBadgeShort": "AI-made",
      "featuredHeading": "Featured work",
      "railPrev": "Show previous",
      "railNext": "Show more",
      "latest": "Latest work",
      "allWork": "All work",
      "statsTotal": "Published works",
      "pageOf": "Page {{page}} of {{pages}}",
      "duration": "Duration",
      "emptyTitle": "Nothing here yet",
      "errorBody": "Check your connection and try again.",
      "seeAll": "See everything",
      "breadcrumb": "Breadcrumb",
      "creator": "Made by",
      "published": "Published",
      "resolution": "Resolution",
      "disclosureTitle": "Made with AI",
      "share": "Share",
      "copyLink": "Copy link",
      "linkCopied": "Link copied",
      "copyFailed": "The link could not be copied",
      "makeLikeThis": "Make one like this",
      "pause": "Pause",
      "seek": "Seek",
      "timeOf": "{{current}} of {{total}}",
      "playError": "This file could not be played.",
      "imageN": "Image {{n}}"
    }
  },
  "billing": {
    "estimate": "estimate",
    "estimateHint": "You pay the actual cost plus our service fee; any difference is refunded automatically.",
    "estimateHintLabel": "How this price works",
    "approximately": "about",
    "calculating": "Calculating the price…",
    "free": "Free",
    "percentSign": "%",
    "reserved": "Reserved",
    "final": "Final",
    "refunded": "Refunded",
    "extraCharged": "Extra charged",
    "settling": "Calculating the final cost…",
    "settled": "Settled",
    "fullyRefunded": "Fully refunded",
    "settledActualCost": "Settled at the actual cost",
    "priceUnavailable": "Price unavailable — shown when you confirm",
    "quoteStale": "Updating the price…",
    "maxCharge": "at most {{amount}}",
    "confirmReserve": "We reserve ≈{{amount}} now. The final charge follows the actual cost.",
    "confirmCeiling": "It is at most {{amount}}.",
    "summaryTitle": "Charges",
    "holdsTitle": "Details ({{n}})",
    "projectHold": "Project",
    "step": "Step",
    "dismiss": "Dismiss",
    "topUp": "Top up wallet",
    "priceChanged": {
      "title": "The price has changed",
      "body": "You saw {{old}}; the price is now {{new}}. Nothing has been charged yet.",
      "confirm": "Confirm new price",
      "cancel": "Cancel"
    },
    "deltaRefunded": "{{amount}} was refunded to your wallet.",
    "deltaExtra": "An extra {{amount}} was charged because the actual cost was higher.",
    "needMore": "You need {{amount}} more.",
    "aiAssistNoBalance": "Your wallet is empty. Top up to use the AI writing assistant.",
    "aiAssistPrice": "≈ 5–50 Toman",
    "holdConflict": "This step is already being confirmed. Please try again in a moment.",
    "campaignFloorNote": "Discounts never take a price below our cost.",
    "discountCode": {
      "label": "Discount code",
      "apply": "Apply",
      "remove": "Remove",
      "applied": "Code applied",
      "invalid": "This code is not valid for this project.",
      "inUse": "This code has already been used on a paid step, so it cannot be removed.",
      "alreadyApplied": "A code is already applied to this project.",
      "rateLimited": "Too many attempts. Please wait a moment and try again.",
      "removeFailed": "The code could not be removed.",
      "percentOff": "{{percent}} off every paid step",
      "fixedLeft": "{{amount}} of discount left for paid steps"
    },
    "errors": {
      "PRICE_CHANGED": "The price changed since you saw it.",
      "INSUFFICIENT_BALANCE": "Your wallet balance is not enough for this. Top up and try again.",
      "PROJECT_NOT_STEP_BILLED": "Discount codes for this project are entered when you create it.",
      "PROJECT_NOT_FOUND": "This project could not be found.",
      "INVALID_PARAMS": "Some settings are not valid for this option."
    },
    "wallet": {
      "hold": "Reserved for project",
      "holdIncrement": "Additional reservation",
      "settleRefund": "Refund — actual cost lower than reserved",
      "settleCharge": "Additional charge — actual cost",
      "release": "Refund — job failed",
      "extRefund": "Refund",
      "studioStep": "Video studio step",
      "slidesStep": "Slides step",
      "sfxQuery": "Sound search translation",
      "aiAssist": "AI writing assistant",
      "chatMessage": "Chat message"
    },
    "meter": {
      "realCost": "Actual cost + service fee, from {{minimum}}",
      "musicHold": "Reserved for {{minutes}} min, settled to the real length (at most {{max}})"
    },
    "realCostTerms": {
      "short": "Real cost + {{fee}}",
      "note": "You pay the real cost of the work plus a {{fee}} service fee. The estimate is held from your wallet when you confirm, and when the work finishes any difference comes back to your wallet automatically. Prices do not include the {{vat}} VAT, which is added when you top up your wallet.",
      "noteNoVat": "You pay the real cost of the work plus a {{fee}} service fee. The estimate is held from your wallet when you confirm, and when the work finishes any difference comes back to your wallet automatically."
    }
  },
  "assistant": {
    "title": "Booq Guide",
    "subtitle": "Answers about using Booq",
    "greeting": "Hi! I can help you use Booq: services, prices, your wallet and your projects. What would you like to know?",
    "disclaimer": "The Booq Guide answers from Booq’s help pages and can make mistakes. It cannot see your account, projects or payments.",
    "close": "Close the Booq Guide",
    "stop": "Stop",
    "send": "Send",
    "placeholder": "Ask about Booq…",
    "copy": "Copy the answer",
    "copied": "Copied",
    "thinking": "Thinking…",
    "answering": "Writing…",
    "answerReady": "The answer is ready.",
    "sources": "Read more",
    "startersLabel": "You could ask:",
    "contactSupport": "Didn't help? Contact support",
    "openChat": "Open Booq Chat",
    "support": "Support",
    "counter": "{{used}} / {{max}}",
    "partial": "The answer was cut short.",
    "stopped": "Stopped.",
    "loading": "Loading…",
    "dismiss": "Dismiss",
    "retryIn": "You can try again in {{seconds}} s.",
    "launcher": {
      "label": "Ask the Booq Guide",
      "tooltip": "Questions about Booq? Ask here."
    },
    "menu": {
      "label": "Assistant options",
      "newConversation": "New conversation",
      "hideForSession": "Hide the button for this session"
    },
    "help": {
      "navbar": "Help",
      "footer": "Help"
    },
    "feedback": {
      "upLabel": "This helped",
      "downLabel": "This didn't help",
      "thanks": "Thanks for telling us.",
      "reasonLabel": "What was wrong?",
      "reason": {
        "wrong": "It is wrong",
        "unclear": "It is unclear",
        "not_helpful": "It did not answer my question",
        "other": "Something else"
      },
      "commentPlaceholder": "Anything else? (optional)",
      "submit": "Send",
      "cancel": "Cancel"
    },
    "quota": {
      "remaining": "{{left}} left today",
      "exhaustedUser": "You've used today's questions.",
      "exhaustedAnon": "You've used today's free questions. Sign up or sign in to ask more.",
      "exhaustedIp": "Too many visitors on your network have asked questions today. Sign in to keep asking.",
      "signup": "Sign up",
      "login": "Sign in",
      "resetsAt": "More questions after {{time}}."
    },
    "errors": {
      "invalid_token": "Your session has ended. You can keep asking as a visitor, or sign in again.",
      "ANON_TOKEN_REQUIRED": "The assistant needs a moment to start. Please try again.",
      "LOGIN_REQUIRED": "Please sign in to ask the Booq Guide.",
      "account_deactivated": "This account is deactivated. Please contact support.",
      "NOT_FOUND": "The Booq Guide is not available right now.",
      "QUESTION_NOT_FOUND": "This answer can no longer be rated.",
      "INVALID_INPUT": "That question could not be sent. Please shorten or rephrase it.",
      "QUOTA_EXCEEDED": "You've used today's questions.",
      "rate_limit": "Too many requests. Please wait a moment and try again.",
      "ASSISTANT_UNAVAILABLE": "The Booq Guide is busy right now. Please try again later, or contact support.",
      "UPSTREAM_ERROR": "Something went wrong while answering. Please try again.",
      "MODEL_UNAVAILABLE": "The Booq Guide cannot answer right now. Please try again in a moment.",
      "CONTENT_BLOCKED": "This answer could not be shown.",
      "offline": "You're offline. Reconnect to ask a question.",
      "generic": "Something went wrong. Please try again.",
      "retry": "Try again"
    },
    "a11y": {
      "log": "Conversation with the Booq Guide"
    }
  },
  "guide": {
    "eyebrow": "Help guide",
    "open": "Help guide",
    "openFor": "Help guide: {{name}}",
    "howItWorks": "How it works",
    "readMore": "Read more in the guide",
    "close": "Close guide",
    "onThisPage": "On this page",
    "contents": "Contents",
    "search": "Search this guide",
    "searchLabel": "Search in {{name}}",
    "searchClose": "Close search",
    "searchResults": "Matches: {{n}}",
    "searchNoResults": "Nothing in this guide matches “{{q}}”.",
    "loading": "Loading the guide…",
    "loadFailed": "The guide could not be loaded.",
    "unavailable": "This guide is not available yet.",
    "offline": "This guide is not saved on this device yet. Connect to the internet once and it will be.",
    "retry": "Try again",
    "notFound": "That part of the guide was not found, so it opens at the start.",
    "stale": {
      "title": "A new version of Booq is available",
      "body": "Update to open this guide. Save anything you are working on first: updating reloads the page.",
      "update": "Update now",
      "later": "Not now",
      "short": "Update Booq to see this help."
    },
    "copyLink": "Copy link to this section",
    "linkCopied": "Link copied",
    "when": "When to use it",
    "effect": "What it changes",
    "price": "Price",
    "choices": "Choices",
    "tip": "Tip",
    "warning": "Note",
    "faq": "Questions",
    "examples": "Examples",
    "related": "Related guides",
    "contactSupport": "Still stuck? Contact support",
    "priceAtConfirm": "You see the estimate on the form before you confirm.",
    "free": "free",
    "toman": "Toman",
    "unit": {
      "mb": "MB",
      "chars": "characters",
      "pct": "percent",
      "sec": "seconds",
      "cps": "letters per second",
      "count": "",
      "toman": "Toman"
    },
    "hint": {
      "label": "About {{label}}",
      "more": "More information",
      "loading": "Loading…"
    },
    "chip": {
      "title": "New to {{name}}?",
      "action": "Open the guide",
      "dismiss": "Dismiss"
    },
    "index": {
      "title": "Help guides",
      "intro": "Short, practical guides for every Booq tool."
    },
    "names": {
      "getting_started": "Getting started",
      "download": "Media Downloader",
      "translation": "Video Translation",
      "transcription": "Transcription",
      "multi_speaker": "Multi-Speaker Translation",
      "podcast": "Podcast Studio",
      "image": "Image Generation",
      "music": "Music Generation",
      "song": "Song Generation",
      "video_studio": "AI Video Studio",
      "chatbot": "AI Chatbot",
      "voice": "Voice Generation",
      "audiobook": "Audiobook Studio",
      "project_page": "Your project page",
      "wallet": "Wallet and payments",
      "library": "Library and storage",
      "showcase": "Showcase and sharing",
      "image_to_video": "Image/Text to video",
      "slides": "Slides"
    }
  },
  "videoGenerate": {
    "page": {
      "titleNew": "Image or text to video",
      "titleProject": "Video",
      "subtitle": "Turn a photo or an idea into a short clip",
      "back": "Back",
      "loading": "Loading…",
      "loadFailed": "This project couldn't be loaded.",
      "catalogFailed": "The video models couldn't be loaded.",
      "retry": "Try again",
      "offline": "You're offline. Paid actions are paused until the connection is back.",
      "cancelled": "This project was cancelled."
    },
    "prompt": {
      "label": "Describe the video",
      "placeholder": "A paper boat sails down a rainy street at night, camera follows it slowly",
      "help": "Say what moves, how the camera moves and the mood.",
      "counter": "{{count}}/{{max}}",
      "required": "Write at least a few words.",
      "examplesLabel": "Examples",
      "examples": {
        "0": "A paper boat sails down a rainy street at night, the camera follows it slowly",
        "1": "Close-up of a steaming cup of tea on a wooden table at sunrise, soft warm light",
        "2": "A drone shot rising over a snowy mountain village at dusk, warm lights in the windows"
      }
    },
    "polish": {
      "label": "Polish and translate my prompt",
      "help": "We rewrite your prompt in English for the model. Your text stays as you wrote it."
    },
    "images": {
      "title": "Images (optional)",
      "start": "Start frame",
      "end": "End frame",
      "references": "Reference images",
      "referencesHelp": "People, products or places the video should keep.",
      "sourceNone": "No start frame",
      "sourceUpload": "My image",
      "paint": "Paint it from my prompt",
      "endNone": "No end frame",
      "paintInstruction": "Extra direction for the picture (optional)",
      "paintInstructionPlaceholder": "For example: warm evening light, wide shot",
      "upload": "Upload",
      "replace": "Replace the image",
      "library": "From library",
      "remove": "Remove",
      "add": "Add a reference image",
      "uploading": "Uploading {{percent}}%",
      "uploadFailed": "The upload didn't finish. Try again.",
      "noImage": "No image yet.",
      "paintPlaceholder": "The picture is painted when you press \"Paint start frame\".",
      "painted": "Painted from your prompt",
      "endUnsupported": "This model can't end on a chosen frame.",
      "refsUnsupported": "This model doesn't use reference images.",
      "refsWithFrame": "With a start frame the model follows the frame; reference images are used only to paint it.",
      "refsAllForPaint": "Every reference image here guides the painted frame. Remove one to leave it out.",
      "endNeedsStart": "Add a start frame first to end on a chosen frame.",
      "faceWarning": "This model often refuses photos of real people. If it refuses, you get a full refund.",
      "switchTo": "Switch to {{model}}",
      "orientationChanged": "Aspect ratio set to {{ratio}} to match your image.",
      "undo": "Undo",
      "dismiss": "Dismiss",
      "typeError": "Use a JPG, PNG or WebP image.",
      "sizeError": "The image must be {{max}} MB or smaller.",
      "dimensionError": "The image must be at least {{min}} pixels on each side.",
      "readError": "This image couldn't be read. Try another file."
    },
    "frame": {
      "painting": "Painting your start frame…",
      "ready": "Your start frame is ready",
      "readyHelp": "Use it for the video, paint it again, or upload your own picture instead.",
      "use": "Use this frame",
      "repaint": "Paint again",
      "uploadInstead": "Upload instead",
      "failed": "The picture wasn't made. You were refunded.",
      "savedPrompt": "The picture is painted from this project's saved prompt; your changes above apply to the video."
    },
    "settings": {
      "title": "Settings",
      "more": "More settings",
      "model": "Model",
      "aspect": "Aspect ratio",
      "resolution": "Resolution",
      "duration": "Length (seconds)",
      "durationRange": "This model makes {{min}}–{{max}} s clips.",
      "durationAllowed": "This model makes {{list}} s clips.",
      "seconds": "{{value}} s",
      "audio": "Native sound",
      "audioHelp": "Sound effects and ambience made with the video. Costs more.",
      "audioSilent": "This model makes silent videos.",
      "audioUnknown": "Sound can't be controlled for this model; it will be silent.",
      "seed": "Seed",
      "seedHelp": "Same seed and settings give similar results. Leave it empty for a new result each time.",
      "seedPlaceholder": "Random",
      "orientation": {
        "landscape": "Landscape",
        "portrait": "Portrait",
        "square": "Square"
      },
      "tier": {
        "draft": "Fast drafts",
        "standard": "Standard",
        "premium": "Premium",
        "specialty": "Specialty"
      },
      "marks": {
        "firstLast": "start and end frame",
        "references": "reference images"
      }
    },
    "plan": {
      "title": "What will be made",
      "pipeline": {
        "t2v": "From your text",
        "i2v_first": "Animate your start frame",
        "first_last": "From start frame to end frame",
        "reference": "Guided by your reference images"
      },
      "frameLine": "Start frame picture",
      "videoLine": "Video · {{seconds}} s · {{resolution}}",
      "total": "Estimated total",
      "withSound": "With sound",
      "silent": "Silent",
      "error": "Couldn't update the price.",
      "retry": "Retry",
      "needPrompt": "Write a prompt to see the price.",
      "announce": "Estimated price: {{price}}",
      "discountToggle": "Have a discount code?",
      "discountLabel": "Discount code",
      "discountApply": "Apply",
      "discountRemove": "Remove",
      "discountApplied": "Code {{code}} is applied to the price above."
    },
    "adjust": {
      "duration_snapped": "{{from}} s → {{to}} s for this model",
      "aspect_ratio_snapped": "{{from}} → {{to}} for this model",
      "resolution_snapped": "{{from}} → {{to}} for this model",
      "audio_unsupported": "This model can't make sound",
      "seed_unsupported": "This model ignores the seed",
      "references_capped": "This model uses {{to}} of your {{from}} reference images",
      "references_moved_to_frame": "Your reference images guide the painted start frame",
      "references_dropped_for_frame": "Frames win: reference images are not sent with a start frame",
      "references_unsupported": "This model doesn't use reference images",
      "end_frame_unsupported": "This model can't end on a chosen frame",
      "end_frame_promoted_to_start": "Your end frame is used as the start frame",
      "end_frame_source_invalid": "The end frame can't be used",
      "first_frame_unsupported": "This model can't start from an image",
      "first_frame_missing": "The start frame is missing",
      "end_frame_missing": "The end frame is missing",
      "generic": "Adjusted for this model"
    },
    "generate": {
      "video": "Generate video",
      "paint": "Paint start frame",
      "withPrice": "{{action}} · {{price}}",
      "starting": "Starting…",
      "waitPrice": "Waiting for the price…",
      "waitUploads": "Waiting for uploads…",
      "needPrompt": "Write a prompt first",
      "offline": "You're offline",
      "topUp": "Top up to continue"
    },
    "progress": {
      "title": "Making your video",
      "newTake": "Making a new take",
      "queued": "Waiting for a free slot…",
      "running": "Generating with {{model}}…",
      "elapsed": "{{time}} elapsed",
      "minutesLeft": "About {{minutes}} minutes left",
      "underMinute": "Less than a minute left",
      "overdue": "Taking longer than usual",
      "leave": "You can leave this page. We'll text you when it's ready.",
      "valueText": "{{percent}}%, about {{minutes}} minutes left (estimate)",
      "valueTextOverdue": "{{percent}}%, taking longer than usual (estimate)",
      "busy": "The video service is busy right now, so your job may wait a little longer."
    },
    "result": {
      "title": "Your video",
      "download": "Download",
      "share": "Share",
      "again": "Generate again",
      "againHelp": "Makes a new take. It is charged separately.",
      "promptSent": "Prompt sent to the model",
      "takes": "Previous takes",
      "take": "Take {{n}}",
      "downloadTake": "Download take {{n}}",
      "deliveredLate": "Arrived late — not charged",
      "expired": "This project's files were removed by storage cleanup.",
      "reuse": "Use these settings in a new project",
      "showcaseRequested": "Submitted to the showcase",
      "showcaseApproved": "Shown in the showcase"
    },
    "failure": {
      "title": "The video wasn't made",
      "refunded": "{{amount}} was refunded to your wallet.",
      "tryAgain": "Try again",
      "tryModel": "Try with {{model}}",
      "change": "Change settings",
      "missingImage": "One of your images couldn't be loaded. Add it again and try once more.",
      "codes": {
        "VIDEO_IMAGE_REFUSED": "The model refused your image (it may look like a real person).",
        "CONTENT_BLOCKED": "The result didn't pass our content rules.",
        "VIDEO_REQUEST_REJECTED": "The provider rejected this request. Try other settings or another model.",
        "VIDEO_DURATION_UNSUPPORTED": "This model can't make a clip of that length.",
        "STAGE_UNAVAILABLE": "This feature isn't available on the video service right now. You were not charged.",
        "PROMPT_REQUIRED": "The prompt was empty.",
        "I2V_TIMEOUT": "The provider took too long.",
        "QUEUE_UNAVAILABLE": "We couldn't start the job. You were not charged.",
        "UNKNOWN_JOB_TYPE": "Something went wrong on our side. You were refunded.",
        "I2V_FAILED": "The provider couldn't make this video.",
        "LEGACY_VIDEO_RETIRED": "This older project type was retired."
      }
    },
    "notice": {
      "PROMPT_POLISHED": "Your prompt was polished and translated for the model.",
      "PROMPT_POLISH_SKIPPED": "Your prompt was sent as written.",
      "VIDEO_IMAGES_DECLINED": "The model declined your images."
    },
    "errors": {
      "PROMPT_REQUIRED": "Write a prompt of at least 3 characters.",
      "INVALID_PARAMS": "Some settings aren't valid. Check them and try again.",
      "INVALID_UPLOAD_SESSION": "An upload expired. Add the image again.",
      "INVALID_ASSET": "That image doesn't belong to this project.",
      "IMAGE_TYPE": "Use a JPG, PNG or WebP image.",
      "IMAGE_TOO_LARGE": "The image must be {{max}} MB or smaller.",
      "IMAGE_DIMENSIONS": "The image must be between {{min}} and {{max}} pixels on each side.",
      "TOO_MANY_REFERENCES": "This model takes at most {{max}} reference images.",
      "MODEL_UNAVAILABLE": "This model isn't available right now.",
      "STEP_IN_FLIGHT": "A job for this project is still running.",
      "ARTIFACTS_EXPIRED": "This project's files were removed, so it can't make a new take. Start a new project with the same settings.",
      "PROJECT_NOT_ACTIVE": "This project can't be changed any more.",
      "TOO_MANY_ATTEMPTS": "This project reached its take limit. Start a new one.",
      "CONTENT_BLOCKED": "Your prompt or image didn't pass our content rules.",
      "DAILY_LIMIT": "You've reached today's limit for video generation. Try again tomorrow.",
      "I2V_COOLDOWN": "Video generation is paused for your account for {{hours}} hours after repeated content-rule blocks.",
      "RATE_LIMITED": "Too many requests. Wait a moment.",
      "QUEUE_UNAVAILABLE": "We couldn't start the job. You were not charged.",
      "NOT_FOUND": "Image or text to video isn't available right now.",
      "USE_VIDEO_GENERATE_API": "Open this project on its video page.",
      "generic": "Something went wrong. Try again."
    },
    "phase": {
      "draft": "Draft",
      "frame_running": "Painting frame",
      "frame_ready": "Frame ready",
      "video_running": "Generating",
      "completed": "Ready",
      "failed": "Failed",
      "blocked": "Blocked",
      "cancelled": "Cancelled"
    },
    "blocked": {
      "title": "Blocked by our content rules",
      "body": "Your prompt or an image didn't pass our content rules, so nothing was made and nothing was charged for it.",
      "appeal": "Appeal this decision",
      "appealLabel": "Why is this block a mistake?",
      "appealPlaceholder": "Describe why you believe this block is incorrect (at least {{min}} characters).",
      "submit": "Send appeal",
      "submitting": "Sending…",
      "cancel": "Cancel",
      "pending": "Your appeal was sent and is being reviewed.",
      "approved": "Your appeal was approved. You can continue this project.",
      "rejected": "Your appeal was not accepted.",
      "failed": "The appeal couldn't be sent. Try again."
    }
  },
  "slides": {
    "layouts": {
      "title": {
        "label": "Title",
        "description": "Opening slide: the deck title and subtitle over a full-bleed visual."
      },
      "agenda": {
        "label": "Agenda",
        "description": "The list of sections the talk will cover."
      },
      "section": {
        "label": "Section divider",
        "description": "A divider that opens a new section of the talk."
      },
      "bullets": {
        "label": "Bullets",
        "description": "A heading with a short list of points and a supporting visual."
      },
      "assertion_evidence": {
        "label": "Message and evidence",
        "description": "A full-sentence message above the visual that proves it."
      },
      "big_number": {
        "label": "Big number",
        "description": "One key figure, large, with its label."
      },
      "two_column": {
        "label": "Two columns",
        "description": "Two related ideas side by side."
      },
      "comparison": {
        "label": "Comparison",
        "description": "Option A against option B, each column with its own label."
      },
      "timeline": {
        "label": "Timeline",
        "description": "Three to six dated steps on one axis."
      },
      "process": {
        "label": "Process",
        "description": "Three to six numbered steps in order."
      },
      "quote": {
        "label": "Quote",
        "description": "A quotation with its attribution."
      },
      "chart": {
        "label": "Chart",
        "description": "Data as a chart, with the takeaway in one line."
      },
      "table": {
        "label": "Table",
        "description": "A small table of facts."
      },
      "image_full": {
        "label": "Full-bleed image",
        "description": "A picture that fills the slide, with a short caption."
      },
      "closing": {
        "label": "Closing",
        "description": "Call to action, thanks or contact details."
      }
    },
    "deckTypes": {
      "pitch": "Pitch deck",
      "report": "Report",
      "lesson": "Lesson",
      "sales": "Sales presentation",
      "project_update": "Project update",
      "conference_talk": "Conference talk",
      "training": "Training",
      "research_summary": "Research summary",
      "marketing": "Marketing",
      "custom": "Other"
    },
    "tones": {
      "formal": "Formal",
      "friendly": "Friendly",
      "persuasive": "Persuasive",
      "academic": "Academic",
      "inspirational": "Inspirational",
      "neutral": "Neutral"
    },
    "arcs": {
      "scr": {
        "label": "Situation, complication, resolution",
        "description": "Where we are, what is in the way, and what we propose."
      },
      "problem_solution_proof_ask": {
        "label": "Problem, solution, proof, ask",
        "description": "The classic pitch: the pain, your answer, the evidence and what you need."
      },
      "what_is_what_could_be": {
        "label": "What is and what could be",
        "description": "Contrast today with a better future until the call to action."
      },
      "teach": {
        "label": "Teach",
        "description": "A hook, the key ideas, a worked example and a recap."
      },
      "report": {
        "label": "Report",
        "description": "Summary first, then findings and recommendations."
      },
      "custom": {
        "label": "Let the planner choose",
        "description": "The planner picks the structure that fits your content."
      }
    },
    "notices": {
      "TEXT_FIT_FAILED": "Some text did not fit its box and is cut short in the image. Shorten this slide's text or choose a roomier layout.",
      "CONTROL_CHARS_REMOVED": "Invisible control characters were removed.",
      "DESIGN_HAS_TEXT": "The design image contains stray text.",
      "EXPORT_BLOCKED": "Slides blocked by content moderation were left out of this export.",
      "FONT_FALLBACK_USED": "A line was set in Vazirmatn because the chosen font cannot draw all of it.",
      "ITEMS_DROPPED": "Some points were removed to fit the chosen text density.",
      "LAYOUT_ADJUSTED": "The layout was changed so the slide can show its data.",
      "MODERATION_UNAVAILABLE": "Content moderation was unavailable; this image was not checked.",
      "REFERENCE_DROPPED": "A reference to a missing source was removed.",
      "SCENARIO_ARRIVED_WHILE_ACCEPTED": "A new outline arrived after you accepted one. It is saved in the version history.",
      "SECTION_CLEARED": "A reference to a missing section was removed.",
      "SLIDES_TRUNCATED": "The outline was cut to the maximum number of slides.",
      "TEXT_CLIPPED": "Some text was shortened to fit the chosen text density.",
      "TEXT_MAY_DIFFER": "The text drawn on this slide may differ slightly from your outline.",
      "UNKNOWN": "This step finished with a remark.",
      "UNSUPPORTED_CHARS_REMOVED": "Characters that no bundled font can draw were removed.",
      "DATA_DROPPED": "A chart or table the planner wrote was incomplete and was removed from this slide.",
      "DIGEST_SIMPLIFIED": "A source could not be summarised; its outline is used instead.",
      "RESEARCH_EMPTY": "Web research found no usable results for these queries.",
      "SECTION_SIMPLIFIED": "This slide could not be written in full; it holds its main message only. Rewrite it with AI or edit it.",
      "SOURCE_TRUNCATED": "This source is long; only its first part was read.",
      "URL_SOURCES_FAILED": "Some web pages could not be read and were left out.",
      "EXPORT_QUALITY_REDUCED": "The deck was too large for a high-quality PDF, so the PDF was saved in standard quality. The PPTX and ZIP keep full quality."
    },
    "common": {
      "cancel": "Cancel",
      "price": {
        "atMost": "at most",
        "perSlide": "per slide"
      },
      "remove": "Remove",
      "retry": "Retry",
      "source": {
        "chars": "Characters: {{value}}",
        "excluded": "Not used",
        "include": "Use this source",
        "kinds": {
          "file": "File",
          "image": "Image",
          "text": "Pasted text",
          "url": "Link"
        },
        "pages": "Pages: {{value}}",
        "remove": "Remove source",
        "removeConfirm": "Remove this source?",
        "role": "Use as",
        "roles": {
          "brand_logo": "Logo",
          "content": "Content",
          "slide_image": "Use on a slide",
          "theme_reference": "Theme reference"
        },
        "truncated": "This source is long; only its first part is used."
      },
      "units": {
        "B": "B",
        "GB": "GB",
        "KB": "KB",
        "MB": "MB"
      },
      "wireframeLabel": "{{layout}} slide: {{headline}}"
    },
    "errors": {
      "ALREADY_CONFIRMED": "This step was already confirmed.",
      "BRIEF_INVALID": "Add an objective, some text or at least one source.",
      "BUDGET_TOO_LOW": "The budget is lower than the minimum needed to continue.",
      "CONFIG_CONFLICT": "The settings changed in another window. Reload and try again.",
      "CONFIG_INVALID": "These settings are not valid.",
      "CONTENT_BLOCKED": "This content was blocked by content moderation.",
      "EMBED_FAILED": "Indexing the sources failed.",
      "EXPORT_BLOCKED": "Some slides were left out of the export by content moderation.",
      "EXPORT_FAILED": "The export could not be built.",
      "FEATURE_DISABLED": "Slides are paused by Booq — you can still edit, export and download.",
      "IMAGE_NO_OUTPUT": "The image model returned no image.",
      "IMAGE_PROVIDER_ERROR": "The image provider failed.",
      "IMAGE_REFUSED": "The image model refused this slide.",
      "INGEST_TIMEOUT": "Reading the source took too long.",
      "INSTRUCTION_INVALID": "The instruction must be 2 to 500 characters.",
      "INSUFFICIENT_BALANCE": "Your wallet balance is not enough for this. Top up and try again.",
      "INTERNAL_ERROR": "An unexpected error occurred.",
      "INVALID_REQUEST": "The step request is incomplete or invalid.",
      "LLM_INVALID_OUTPUT": "The AI model returned an answer that could not be used.",
      "LLM_UNAVAILABLE": "The AI model is unavailable right now.",
      "MODEL_UNPRICED": "This model is not available right now.",
      "NETWORK": "You appear to be offline. Check your connection and try again.",
      "PRICE_CHANGED": "The price changed since you saw it.",
      "PROJECT_NOT_FOUND": "This deck was not found.",
      "RATE_LIMITED": "Too many requests. Please wait a moment and try again.",
      "RESEARCH_UNAVAILABLE": "Web research is unavailable right now.",
      "ROLE_INVALID": "This role is not available for this source.",
      "SCENARIO_ACCEPTED": "The outline is accepted. Reopen it to make changes.",
      "SCENARIO_INVALID": "Some fields need changes before the outline can be saved.",
      "SCENARIO_INVALID_OUTPUT": "The outline could not be generated in a valid form.",
      "SCENARIO_NOT_ACCEPTED": "Accept the outline first.",
      "SCENARIO_STEP_IN_FLIGHT": "A new outline is being written. Wait for it to finish.",
      "SCENARIO_VERSION_CONFLICT": "The outline was changed somewhere else.",
      "SLIDES_MISSING": "Some slides have no image yet.",
      "SLIDE_DELETED": "This slide was deleted from the outline.",
      "SOURCE_BLOCKED": "This source was blocked by content moderation.",
      "SOURCE_IN_USE": "This source is used on a slide of the accepted outline.",
      "SOURCE_LIMIT": "You have reached the maximum number of sources.",
      "SOURCE_NO_TEXT": "No text could be extracted from this source.",
      "SOURCE_TOO_LARGE": "This source is too large.",
      "SOURCE_UNSUPPORTED": "This file type cannot be read.",
      "STAGE_LOCKED": "Finish the previous stage first.",
      "STEP_NOT_EDITABLE": "This step can no longer be changed.",
      "STEP_OPEN": "This step is already waiting for you.",
      "STORAGE_ERROR": "A storage operation failed.",
      "STORAGE_KEY_NOT_GRANTED": "A referenced file does not belong to this deck.",
      "STORAGE_QUOTA_EXCEEDED": "Your storage is full. Free up space or upgrade your storage plan.",
      "TEXT_FIT_FAILED": "The slide text does not fit its layout. Shorten it or pick another layout.",
      "TEXT_FONT_COVERAGE": "The slide text contains characters no bundled font can draw.",
      "UNKNOWN": "Something went wrong. Please try again.",
      "UNKNOWN_STAGE": "This step is not available yet.",
      "UPLOAD_INVALID": "This file cannot be used here (type, size or dimensions).",
      "URL_FETCH_FAILED": "The web page could not be fetched.",
      "URL_INVALID": "This web address is not valid.",
      "URL_NOT_ALLOWED": "This web address is not allowed.",
      "VERSION_NOT_FOUND": "This version no longer exists.",
      "WORKER_SHUTDOWN": "The service restarted while this step was running. Try again.",
      "ASSET_NOT_FOUND": "This file is not available.",
      "ASSET_NOT_RESTORABLE": "This version cannot be made current.",
      "NOT_AUTOMATIC": "This deck is not running automatically.",
      "PROJECT_NOT_ACTIVE": "This deck can no longer be changed.",
      "PROPOSAL_NOT_FOUND": "This suggestion is no longer available.",
      "QUEUE_UNAVAILABLE": "We could not start this step right now. You were not charged. Please try again.",
      "SOURCE_NOT_FAILED": "Only a source that failed can be read again.",
      "STEP_NOT_FOUND": "This step no longer exists. Refresh the page.",
      "STEP_STATE_INVALID": "This step cannot do that in its current state. Refresh the page.",
      "TOO_MANY_IN_FLIGHT": "Too many steps are running at once. Wait for some to finish, then try again.",
      "STEP_TIMEOUT": "This step took too long and was stopped. Nothing was charged for it - try again."
    },
    "models": {
      "legend": "Image model",
      "none": "No image model is available right now.",
      "textQuality": {
        "excellent": "Excellent text",
        "fair": "Fair text",
        "good": "Good text",
        "poor": "Weak text",
        "untested": "Text not tested yet"
      },
      "tiers": {
        "draft": "Draft",
        "premium": "Premium",
        "standard": "Standard"
      },
      "unavailable": {
        "disabled": "Not available right now",
        "resolution": "Not offered at this resolution",
        "unpriced": "No price yet — not available"
      }
    },
    "scenarioRules": {
      "citation_target": "A citation names one source or one research result.",
      "control_character": "Remove the invisible control characters.",
      "data_kind_not_allowed": "This layout cannot show this kind of data.",
      "duplicate_key": "Two slides share the same identity.",
      "duplicate_section": "Two sections share the same identity.",
      "enum": "Choose one of the listed options.",
      "invalid": "This value is not valid.",
      "label_not_allowed": "Only a label-and-value item has a label.",
      "label_required": "A label-and-value item needs a label.",
      "max_chars": "Too long: use at most {{limit}} characters.",
      "max_document_bytes": "The outline is too large to save.",
      "max_items": "Too many items: use at most {{limit}}.",
      "max_slide_words": "Too much text on this slide: {{actual}} words of at most {{limit}}.",
      "max_slides": "Too many slides: at most {{limit}}.",
      "max_value": "This number is too large.",
      "max_words": "Too many words: {{actual}} of at most {{limit}}.",
      "min_chars": "Too short.",
      "min_items": "Add at least one item.",
      "min_value": "This number is too small.",
      "negative_share": "Pie and donut values cannot be negative.",
      "number_range": "Numbers must be finite and smaller than 1,000,000,000,000,000.",
      "pattern": "This value has the wrong format.",
      "required": "This field is required.",
      "retired_key": "This slide identity belonged to a deleted slide.",
      "row_length": "Every row needs one cell per column.",
      "series_length": "Every series needs one value per category.",
      "short": {
        "max_chars": "Too long.",
        "max_items": "Too many items.",
        "max_slide_words": "Too much text on this slide.",
        "max_slides": "Too many slides.",
        "max_words": "Too many words."
      },
      "type": "This value has the wrong type.",
      "unknown_citation": "This citation points to a source that is not part of the deck.",
      "unknown_field": "This field is not part of an outline.",
      "unknown_section": "This section does not exist.",
      "unknown_source": "This source is not part of the deck.",
      "unsupported_character": "Some characters cannot be drawn by any bundled font."
    },
    "stages": {
      "export": "Export",
      "ingest": "Sources",
      "label": "Deck stages",
      "prepare": "Prepare",
      "rewrite": "Rewrite",
      "scenario": "Outline",
      "slide": "Slide",
      "slides": "Slides",
      "theme": "Theme"
    },
    "status": {
      "auto": {
        "committed": "At most",
        "committedSuffix": "committed",
        "done": "Finished automatically",
        "of": "of",
        "pause": "Pause",
        "pausedByBooq": "Slides are paused by Booq — you can still edit, export and download.",
        "raiseBudget": "Raise budget and continue",
        "resume": "Resume",
        "running": "Running automatically",
        "spent": "Spent",
        "stepByStep": "Continue step by step",
        "topUp": "Top up wallet"
      },
      "badge": {
        "hidden": "Hidden",
        "locked": "Locked",
        "rendered": "Rendered",
        "stale": "Out of date",
        "unverified": "Numbers not found in your sources"
      },
      "ingest": {
        "failed": "Failed",
        "pending": "Waiting",
        "processing": "Reading",
        "ready": "Ready",
        "skipped": "Ready"
      },
      "progress": {
        "CHECKING_TEXT": "Checking the text",
        "DESIGNING_THEME": "Designing the theme",
        "DIGESTING": "Summarising the sources",
        "EXPANDING": "Writing the slides",
        "EXPORTING": "Building the files",
        "INDEXING": "Indexing the sources",
        "INGESTING": "Reading the source",
        "MODERATING": "Checking the content",
        "OUTLINING": "Planning the outline",
        "RENDERING": "Drawing the slide",
        "RESEARCHING": "Researching the web",
        "REWRITING": "Rewriting the slide",
        "STARTED": "Started",
        "TYPESETTING": "Setting the text",
        "UPLOADING": "Saving"
      },
      "qa": {
        "fail": "Text differs",
        "pass": "Text checked",
        "skipped": "Text not checked",
        "warn": "Text may differ"
      },
      "stage": {
        "accepted": "Accepted",
        "done": "Done",
        "failed": "Failed",
        "in_progress": "In progress",
        "locked": "Locked",
        "not_needed": "Not needed",
        "ready": "Ready to start",
        "stale": "Out of date"
      },
      "step": {
        "accepted": "Accepted",
        "awaiting_confirm": "Waiting for your confirmation",
        "awaiting_review": "Ready for review",
        "failed": "Failed",
        "planned": "Planned",
        "processing": "In progress",
        "queued": "Queued",
        "rejected": "Rejected",
        "skipped": "Not needed",
        "superseded": "Replaced",
        "uploaded": "Uploaded"
      },
      "unknown": "Unknown"
    },
    "stopReasons": {
      "balance": "Stopped: your wallet balance is not enough for the next step.",
      "budget": "Stopped: the budget is reached.",
      "disabled": "Paused by Booq. You can continue when slides are available again.",
      "failure": "Stopped: a step failed.",
      "moderation": "Stopped: content moderation blocked a step.",
      "no_usable_sources": "Stopped: none of the sources could be read.",
      "paused_by_admin": "Paused by Booq.",
      "paused_by_user": "Paused by you.",
      "storage_quota": "Stopped: your storage is full.",
      "unknown": "Stopped."
    },
    "themePicker": {
      "auto": "Automatic theme",
      "autoHint": "Booq designs a theme that fits your topic and audience.",
      "changeImage": "Change image",
      "chooseImage": "Choose an image",
      "customGroup": "Your own or automatic",
      "legend": "Theme",
      "otherGroup": "Other",
      "presets": "Themes",
      "recommendedRtl": "Recommended for Persian and Arabic",
      "upload": "Use my own image as the theme",
      "uploadHint": "A slide background or a brand visual; Booq matches its look."
    },
    "wizard": {
      "actions": {
        "back": "Back",
        "create": "Create deck",
        "creating": "Creating…",
        "deckPrice": "Whole deck",
        "next": "Next"
      },
      "blocked": {
        "offline": "You are offline. Connect to the internet to create the deck.",
        "price": "The price is not available yet. Try it again above.",
        "pricing": "Getting the price…",
        "uploading": "Wait until the files finish uploading."
      },
      "catalogError": {
        "retry": "Try again",
        "title": "The slide options could not be loaded"
      },
      "changeType": "Choose another project type",
      "content": {
        "chooseFiles": "Choose files",
        "dropHint": "Drop files here, or choose them",
        "fileLimits": "{{types}} · up to {{size}} MB each · at most {{max}} sources",
        "fileList": "Added files",
        "imageRolesHint": "Images can be content, your logo, a theme reference or a picture for a slide.",
        "tabs": {
          "files": "Files",
          "links": "Links",
          "write": "Write or paste"
        },
        "tabsLabel": "Kinds of content",
        "textCount": "{{used}} / {{max}} characters",
        "textHelp": "Notes, an article, an outline — anything the slides should say. Up to {{max}} characters.",
        "textLabel": "Your text",
        "textPlaceholder": "Paste or type here…"
      },
      "defaultTitle": "Untitled deck",
      "disabled": {
        "body": "Booq has paused creating slide decks for a while. Your existing decks can still be opened, edited, exported and downloaded.",
        "projects": "Go to my projects",
        "title": "New decks are paused for now"
      },
      "errors": {
        "balance": "Your balance does not cover the first step of an automatic deck.",
        "openLibrary": "Open my library",
        "rateLimited": "Too many new decks in a short time. Try again in {{minutes}} min."
      },
      "files": {
        "expired": "This upload has expired. Remove it and add the file again.",
        "fromLibrary": "From your library",
        "interrupted": "The upload stopped when the page closed. Add the file again to continue where it left off.",
        "ready": "Ready",
        "rejected": {
          "limit": "“{{name}}” was not added: a deck takes at most {{max}} sources.",
          "notImage": "“{{name}}” is not an image.",
          "tooLarge": "“{{name}}” is larger than {{max}} MB.",
          "unavailable": "“{{name}}” is not available in your library any more.",
          "unsupported": "“{{name}}” is not a supported file type."
        },
        "remove": "Remove {{name}}",
        "retry": "Try again",
        "uploadFailed": "The upload failed. Check your connection and try again.",
        "uploading": "Uploading {{percent}}%"
      },
      "goal": {
        "agenda": "Agenda slide",
        "agendaHint": "A slide listing the sections after the title.",
        "aspectLegend": "Slide shape",
        "aspectStandard": "Standard 4:3",
        "aspectWide": "Widescreen 16:9",
        "audience": "Audience",
        "audiencePlaceholder": "e.g. Board members, not technical",
        "count": "{{used}} / {{max}}",
        "deckType": "Kind of deck",
        "density": {
          "balanced": "Balanced",
          "balancedHint": "Short points that support what you say.",
          "detailed": "Detailed",
          "detailedHint": "Slides that can be read on their own, without a speaker.",
          "minimal": "Minimal",
          "minimalHint": "A headline and a few words per slide — for a talk you give."
        },
        "densityLegend": "Text on each slide",
        "digits": {
          "arabic_indic": "Arabic digits (١٢٣)",
          "latin": "Latin digits (123)",
          "persian": "Persian digits (۱۲۳)"
        },
        "digitsLegend": "Numbers on the slides",
        "language": "Language of the slides",
        "languageLtr": "Written left to right.",
        "languageRtl": "Written right to left; Booq sets the text itself for exact Persian and Arabic letters.",
        "objective": "Goal of the deck",
        "objectiveHelp": "What should the audience know, feel or do at the end?",
        "objectivePlaceholder": "e.g. Win the board’s approval for next year’s budget",
        "slideCount": "Number of slides",
        "slideCountAuto": "Let Booq choose the number of slides",
        "slideCountAutoHint": "Based on how much content there is.",
        "slideCountHelp": "From {{min}} to {{max}} slides.",
        "sourcesSlide": "Sources slide",
        "sourcesSlideHint": "A closing slide that lists where the facts came from.",
        "speakerNotes": "Speaker notes",
        "speakerNotesHint": "What to say on each slide, in the notes of the exported file.",
        "titleHelp": "Leave it empty and the deck is named after its goal.",
        "titleLabel": "Deck title (optional)",
        "tone": "Tone"
      },
      "intros": {
        "content": "Paste text, add files or links — or skip this and describe the goal in the next step.",
        "goal": "Tell us who will watch it and what they should take away.",
        "look": "Pick a theme and how the slides are drawn. The preview is free.",
        "review": "Nothing is charged when you create the deck; each step is paid when it runs.",
        "run": "Add web research if you like, and choose whether Booq runs everything or stops for your review."
      },
      "issues": {
        "audienceTooLong": "The audience is too long: use at most {{max}} characters.",
        "budgetRequired": "Enter the most Booq may spend on this deck.",
        "budgetTooLow": "The budget must be at least {{minimum}} to finish the first steps.",
        "fileFailed": "A file did not upload. Try it again or remove it.",
        "goalRequired": "Describe the goal of the deck, or go back and add some content.",
        "modelUnavailable": "This image model is not available at this resolution. Choose another model or resolution.",
        "objectiveTooLong": "The goal is too long: use at most {{max}} characters.",
        "queryLength": "Each search must be {{min}} to {{max}} characters long.",
        "slideCountRange": "Choose between {{min}} and {{max}} slides.",
        "textTooLong": "The text is too long: use at most {{max}} characters.",
        "themeImageRequired": "Choose the image to use as the theme, or pick another kind of theme.",
        "themeRequired": "Choose a theme.",
        "titleTooLong": "The title is too long: use at most {{max}} characters.",
        "tooManyQueries": "Add at most {{max}} searches.",
        "tooManySources": "Too many sources: a deck takes at most {{max}} (pasted text counts as one).",
        "tooManyUrls": "Too many links: add at most {{max}}.",
        "urlInvalid": "One of the links cannot be used. Remove it or fix it."
      },
      "keep": "Keep them",
      "links": {
        "add": "Add link",
        "duplicate": "This link is already in the list.",
        "full": "You can add at most {{max}} links.",
        "help": "Public pages only. Booq reads them for you — {{used}} of {{max}} added.",
        "label": "Web page link",
        "list": "Added links",
        "problems": {
          "credentials": "Links with a user name or password are not allowed.",
          "host": "The link has no site name.",
          "internalHost": "Only public websites can be read.",
          "ipLiteral": "Use the site’s name, not an IP address.",
          "length": "Enter a link (at most 2,048 characters).",
          "malformed": "This does not look like a web address.",
          "scheme": "Use a link that starts with http:// or https://."
        },
        "remove": "Remove {{url}}"
      },
      "loading": "Loading the slide options…",
      "look": {
        "modelPriceNote": "The price per slide follows what the model actually costs; you always see it before a slide is drawn.",
        "preview": "Preview",
        "previewHint": "A free sketch of the layouts in your theme’s colours — the real slides are drawn later.",
        "render": {
          "auto": "Automatic (recommended)",
          "autoLtr": "The image model draws the text; Booq checks it and switches a slide to precise text when needed.",
          "autoRtl": "Precise text for this deck: Booq sets every Persian and Arabic letter itself.",
          "full": "Drawn by the model",
          "fullHint": "Text is part of the picture for the most natural look; letters may occasionally differ.",
          "overlay": "Precise text",
          "overlayHint": "The model paints a design without text and Booq sets the exact words on it — best for Persian and Arabic. The text stays editable in PowerPoint."
        },
        "renderLegend": "Text on the slides",
        "resolution": {
          "1K": "Draft (1K)",
          "1KHint": "Quicker and cheaper — good for a first version.",
          "2K": "Sharp (2K)",
          "2KHint": "Crisp on large screens and in print."
        },
        "resolutionLegend": "Resolution",
        "themeFromLibrary": "Theme image from library",
        "themeGroup": "Theme",
        "themeImageHint": "Choose a slide background or a brand visual; it is also listed with your files."
      },
      "offline": "You are offline. Your answers are kept; uploads and the price continue when you are back online.",
      "restored": "We kept your answers from before.",
      "review": {
        "band": "Most decks like this cost between {{low}} and {{high}}.",
        "budgetNote": "Booq stops before spending more than {{amount}} on this deck.",
        "chargeNote": "Nothing is charged now. Each step is paid when it runs, at what it actually cost.",
        "discount": "Have a discount code? Add it on the deck’s page after you create it — it applies to every paid step.",
        "edit": "Edit",
        "editStep": "Edit: {{step}}",
        "files": "Documents: {{n}}",
        "images": "Images: {{n}}",
        "interactiveNote": "You see the price of every step before you confirm it.",
        "links": "Links: {{n}}",
        "lowBalance": "Your balance ({{balance}}) covers part of this deck. Steps wait when it runs out; top up any time.",
        "mode": "Mode",
        "modeAutomatic": "Automatic, budget {{amount}}",
        "noSources": "None — the deck is written from your goal.",
        "priceTitle": "Estimated price of the whole deck",
        "researchOff": "Off",
        "researchOn": "On · up to {{n}} searches",
        "retryPrice": "Try the price again",
        "slides": "Slides",
        "slidesAuto": "Booq chooses the number",
        "slidesCount": "{{n}} slides",
        "sources": "Sources",
        "textChars": "Pasted text ({{chars}} characters)",
        "themeUpload": "Your image: {{name}}",
        "title": "Title"
      },
      "run": {
        "budget": "Budget — the most Booq may spend",
        "budgetMinimum": "At least {{amount}} is needed to finish the first steps.",
        "budgetNoQuote": "The suggestion appears as soon as the price is ready.",
        "budgetShort": "With this budget the deck may stop before every slide is drawn. You can raise it later.",
        "budgetSuggested": "Suggested: {{amount}} — the most this whole deck should cost.",
        "depth": {
          "advanced": "Thorough",
          "basic": "Quick"
        },
        "depthLegend": "Depth",
        "maxQueries": "Searches, at most",
        "mode": {
          "automatic": "Automatic",
          "automaticHint": "Booq runs every step for you and stops before your budget is used up. You can pause or step in at any time.",
          "interactive": "Step by step",
          "interactiveHint": "You review the outline, the theme and each slide, and confirm every paid step."
        },
        "modeLegend": "How should the deck be made?",
        "planner": {
          "deep": "Deep",
          "deepExtra": "≈ +{{amount}} for the whole deck",
          "deepHint": "A stronger model for long sources and complex arguments.",
          "standard": "Standard",
          "standardHint": "A fast planning model; right for most decks."
        },
        "plannerLegend": "Planning",
        "queries": "Your own searches (optional)",
        "queriesHelp": "One per line, up to {{max}}. Leave empty and Booq writes them from your goal.",
        "research": "Research the web",
        "researchHint": "Booq searches for recent facts and figures and cites what it uses. You can review the results before the outline is written.",
        "useSuggested": "Use the suggestion"
      },
      "startOver": "Start over",
      "stepper": {
        "done": "(done)",
        "label": "Creation steps",
        "position": "Step {{current}} of {{total}}",
        "progress": "Progress"
      },
      "steps": {
        "content": "Content",
        "goal": "Goal",
        "look": "Look",
        "review": "Review",
        "run": "Research & mode"
      },
      "title": "Create a slide deck",
      "titles": {
        "content": "What should the deck be built from?",
        "goal": "What is the deck for?",
        "look": "How should it look?",
        "review": "Check and create",
        "run": "Research and how to run it"
      }
    },
    "auto": {
      "dialog": {
        "automaticBody": "Booq runs the remaining steps for you and stops before the total would pass your budget. Each step is still charged at its real cost.",
        "cap": "Total budget for this deck (Toman)",
        "capTooLow": "The budget must be more than what was already spent.",
        "minimum": "The remaining work needs a budget of at least {{amount}}.",
        "raise": "Save budget and continue",
        "raiseTitle": "Raise the budget and continue",
        "spent": "Already spent on this deck:",
        "toAutomatic": "Run automatically",
        "toAutomaticTitle": "Let Booq finish the deck automatically?",
        "toInteractive": "Switch to step by step",
        "toInteractiveBody": "Work that is already running finishes. After that, nothing new starts until you confirm each step and its price yourself.",
        "toInteractiveTitle": "Continue step by step?",
        "useMinimum": "Use {{amount}}",
        "working": "Working…"
      }
    },
    "editor": {
      "accept": {
        "accepting": "Accepting…",
        "button": "Accept outline",
        "conflict": "Resolve the save conflict first.",
        "done": "Outline accepted. The slides are drawn from this version.",
        "generating": "Wait until the AI has finished the outline.",
        "hint": "Accepting saves your edits and unlocks the theme and slides.",
        "invalid": "Some slides need changes first ({{number}}).",
        "reopen": "Edit the outline again",
        "reopenHint": "Slides whose text you change afterwards are marked out of date.",
        "reopening": "Opening…"
      },
      "body": {
        "add": "Add text block",
        "empty": "No text blocks on this slide.",
        "indent": "Indent block {{position}}",
        "label": "Label",
        "moveDown": "Move block {{position}} down",
        "moveUp": "Move block {{position}} up",
        "remove": "Remove block {{position}}",
        "text": "Text of block {{position}}",
        "title": "Text blocks",
        "type": "Block type"
      },
      "bodyTypes": {
        "bullet": "Bullet",
        "label_value": "Label and value",
        "numbered": "Numbered",
        "paragraph": "Paragraph"
      },
      "card": {
        "addAfter": "Add a slide after slide {{number}}",
        "addDescription": "Choose a layout. You can change it later.",
        "addTitle": "Add a slide after slide {{number}}",
        "close": "Close",
        "delete": "Delete slide {{number}}",
        "drawPrice": "Drawing this slide:",
        "duplicate": "Duplicate slide {{number}}",
        "edit": "Edit",
        "handle": "Reorder slide {{number}}: drag, or press Alt with the up or down arrow",
        "headline": "Headline",
        "hide": "Hide this slide",
        "hideHint": "Hidden slides are not drawn or exported, but keep their text.",
        "images": "Your images on this slide",
        "layout": "Layout",
        "lock": "Lock this slide",
        "lockHint": "A locked slide is kept word for word when the outline is regenerated.",
        "lockShort": "Lock slide {{number}}",
        "moveDown": "Move slide {{number}} down",
        "moveUp": "Move slide {{number}} up",
        "needsChanges": "Needs changes ({{number}})",
        "noImages": "Add an image in Sources and choose “Use on a slide” to place it here.",
        "noSection": "No section",
        "notes": "Speaker notes",
        "notesEmpty": "Empty",
        "notesFilled": "Written",
        "priceLater": "priced when you render",
        "rewrite": "Rewrite with AI",
        "rewriteFailed": "The AI rewrite failed:",
        "section": "Section",
        "slideNumber": "Slide {{number}}:",
        "subheadline": "Subheadline (optional)",
        "toolbar": "Actions for slide {{number}}",
        "untitled": "Untitled slide",
        "view": "View",
        "visual": "Picture",
        "visualDescription": "Describe the picture",
        "visualHint": "What the image should show. It is never written on the slide.",
        "visualKind": "Kind of picture"
      },
      "chart": {
        "addCategory": "Add category",
        "addColumn": "Add column",
        "addRow": "Add row",
        "addSeries": "Add series",
        "category": "Category",
        "categoryName": "Category {{number}}",
        "cell": "{{series}}, {{category}}",
        "column": "Heading of column {{number}}",
        "gridCaption": "Chart values: one row per category, one column per series",
        "kind": "Chart or data",
        "kpiDelta": "Change (optional)",
        "kpiLabel": "Label",
        "kpiValue": "Value",
        "legend": "Chart and data",
        "pasteHint": "Tip: copy cells from a spreadsheet and paste them into any cell.",
        "pasted": "Pasted from your spreadsheet.",
        "pastedClipped": "Pasted. Extra rows or columns were cut to fit the chart.",
        "pastedClippedUnreadable": "Pasted. Extra rows or columns were cut to fit, and {{number}} cells were not numbers.",
        "pastedUnreadable": "Pasted. {{number}} cells were not numbers and were left empty.",
        "removeCategory": "Remove category {{number}}",
        "removeColumn": "Remove column {{number}}",
        "removeRow": "Remove row {{number}}",
        "removeSeries": "Remove series {{number}}",
        "seriesFallback": "Series {{number}}",
        "seriesName": "Name of series {{number}}",
        "tableCaption": "Table cells",
        "tableCell": "Row {{row}}, column {{column}}",
        "tableTitle": "Table title",
        "title": "Chart title",
        "unit": "Unit",
        "unitPlaceholder": "e.g. %, $, people",
        "verified": "Numbers found in your sources"
      },
      "citations": {
        "empty": "No sources cited on this slide.",
        "open": "Open {{name}} in a new tab",
        "remove": "Remove citation {{name}}",
        "title": "Sources cited",
        "unnamed": "Source {{number}}"
      },
      "conflict": {
        "description": "A newer version was saved after you started editing — in another tab, on another device or by an AI step.",
        "overwrite": "Overwrite with mine",
        "overwriteHint": "Overwrite with mine saves what you see now on top of it. The newer version stays in the version history.",
        "overwriting": "Saving…",
        "reload": "Reload latest",
        "reloadHint": "Reload latest shows the newer version. The changes you made here since the last save are dropped.",
        "reloading": "Loading…",
        "resolve": "Resolve",
        "title": "This outline was changed elsewhere"
      },
      "counter": {
        "chars": "characters",
        "items": "items",
        "near": "near the limit",
        "over": "over the limit",
        "words": "words"
      },
      "dataKinds": {
        "bar": "Bar chart",
        "column": "Column chart",
        "donut": "Donut chart",
        "kpi": "Key figure",
        "line": "Line chart",
        "none": "No data",
        "pie": "Pie chart",
        "table": "Table"
      },
      "deck": {
        "addMessage": "Add",
        "addSection": "Add section",
        "agenda": "Agenda slide",
        "arc": "Story arc",
        "audience": "Audience",
        "deckTitle": "Deck title",
        "deckType": "Kind of deck",
        "density": "Amount of text",
        "direction": "Direction",
        "extras": "Extras",
        "keyMessages": "Key messages",
        "language": "Deck language",
        "ltr": "Left to right",
        "newMessage": "New key message",
        "noMessages": "No key messages yet.",
        "noSections": "No sections. Add one to group slides.",
        "objective": "Objective",
        "removeMessage": "Remove key message: {{text}}",
        "removeSection": "Remove section {{number}}",
        "rtl": "Right to left",
        "sectionFallback": "Section {{number}}",
        "sectionName": "Name of section {{number}}",
        "sections": "Sections",
        "sourcesSlide": "Sources slide at the end",
        "speakerNotes": "Speaker notes",
        "subtitle": "Subtitle",
        "title": "Deck settings",
        "tone": "Tone"
      },
      "densities": {
        "balanced": "Balanced",
        "detailed": "Detailed",
        "minimal": "Minimal"
      },
      "generate": {
        "confirm": "Write the outline",
        "description": "The AI plans every slide from your sources: headline, text, picture and data. You can edit everything afterwards.",
        "locked": "Finish the earlier stages first.",
        "plan": "See the price of the outline",
        "title": "Write the outline"
      },
      "history": "Version history",
      "layout": {
        "dropsData": "Removes the chart data"
      },
      "list": {
        "added": "Slide added at position {{position}}",
        "deleted": "Slide {{number}} deleted",
        "deletedBar": "Slide {{number}} deleted.",
        "full": "A deck holds at most {{max}} slides.",
        "label": "Slides",
        "moved": "Slide {{from}} moved to position {{to}}",
        "restored": "Slide {{number}} restored",
        "undo": "Undo"
      },
      "loading": "Loading the outline…",
      "notices": "Remarks from the last save",
      "proposal": {
        "acceptedReason": "Edit the outline again to apply a suggestion.",
        "added": "added",
        "apply": "Apply",
        "applying": "Applying…",
        "conflictReason": "Resolve the save conflict first.",
        "discard": "Discard",
        "discarding": "Discarding…",
        "fields": {
          "body": "Text blocks",
          "headline": "Headline",
          "speaker_notes": "Speaker notes",
          "subheadline": "Subheadline",
          "visual": "Picture description"
        },
        "instruction": "You asked:",
        "noChanges": "The suggestion is the same as the current text.",
        "removed": "removed",
        "sample": "abc",
        "saveFirst": "Your latest edits could not be saved yet. Try again in a moment.",
        "title": "AI rewrite suggestion"
      },
      "redo": "Redo",
      "regenerate": {
        "button": "Regenerate outline",
        "confirm": "Regenerate",
        "description": "The AI writes a new outline from your sources. Locked slides are kept word for word; the current outline stays in the version history.",
        "running": "Rewriting the outline",
        "title": "Regenerate the outline?"
      },
      "rewrite": {
        "confirm": "Rewrite this slide",
        "custom": "Your instruction",
        "customPlaceholder": "For example: speak to investors and mention the 2025 growth.",
        "forSlide": "Slide:",
        "presetText": {
          "data": "Add data and numbers from the sources",
          "persuasive": "Make it more persuasive",
          "shorter": "Make it shorter",
          "simpler": "Use simpler words"
        },
        "presets": {
          "custom": "My own instruction",
          "data": "Add data",
          "persuasive": "More persuasive",
          "shorter": "Shorter",
          "simpler": "Simpler words"
        },
        "resultHint": "The result arrives as a suggestion in the slide card. Nothing changes until you apply it.",
        "title": "Rewrite with AI",
        "what": "What should change?"
      },
      "save": {
        "accepted": "Outline accepted — read only",
        "conflict": "Not saved: this outline was changed elsewhere",
        "dirty": "Unsaved changes",
        "error": "Could not save — will retry",
        "idle": "All changes saved",
        "invalid": "Not saved: some fields need changes",
        "offline": "Offline – will retry",
        "paused": "Saving paused, retrying",
        "retryIn": "next try in {{seconds}} s",
        "saved": "Saved",
        "saving": "Saving…"
      },
      "saveVersion": "Save version",
      "sheet": {
        "close": "Close"
      },
      "toolbar": "Outline tools",
      "undo": "Undo",
      "versionNote": {
        "description": "A named version is easy to find in the history and to restore later.",
        "label": "Name (optional)",
        "save": "Save version",
        "title": "Save a named version"
      },
      "visualKinds": {
        "abstract": "Abstract shapes",
        "diagram": "Diagram",
        "icon_set": "Icons",
        "illustration": "Illustration",
        "none": "No picture",
        "photo": "Photo"
      }
    },
    "prepare": {
      "confirm": "Prepare now",
      "description": "The AI reads your sources closely so the outline can quote the right facts.",
      "descriptionResearch": "The AI reads your sources closely and searches the web for current facts and figures.",
      "digest": {
        "facts": "Key facts",
        "headings": "Headings",
        "title": "What the planner read"
      },
      "done": "Your sources are ready for the outline.",
      "locked": "Wait until every source has been read.",
      "notNeeded": "Your content is short and web research is off, so the outline can be written from it directly. Nothing to do here.",
      "plan": "See the price of preparing",
      "research": {
        "conflict": "The deck changed in the meantime. The list was refreshed — please try again.",
        "empty": "The research found nothing usable.",
        "excluded": "Left out",
        "include": "Use “{{title}}”",
        "lockedHint": "The outline was written from these results; regenerate the outline to use a different selection.",
        "newTab": "(opens in a new tab)",
        "open": "Open",
        "queries": "Searches made",
        "title": "Web research",
        "used": "Used: {{used}} of {{total}}"
      },
      "title": "Prepare the content"
    },
    "sources": {
      "add": {
        "addLink": "Add",
        "addText": "Add text",
        "added": "Added. Reading starts now.",
        "badType": "“{{name}}” is not a supported file type.",
        "cancelUpload": "Cancel uploading {{name}}",
        "chooseFiles": "Choose files",
        "files": "Files",
        "full": "A deck takes at most {{max}} sources.",
        "kind": "What to add",
        "limits": "Up to {{mb}} MB per file: {{types}}",
        "links": "Link",
        "noneUsable": "None of the chosen files can be used in a deck.",
        "pasteLabel": "Write or paste text",
        "progress": "Uploading {{name}}",
        "room": "{{used}} of {{max}} used",
        "text": "Text",
        "title": "Add more sources",
        "tooLarge": "“{{name}}” is larger than {{max}} MB.",
        "uploading": "Uploading",
        "url": "Web address"
      },
      "afterAccept": "The outline was accepted with these sources. Edit the outline again to change them.",
      "empty": "This deck has no sources yet. Add a file, a link or some text.",
      "reading": "Still reading {{number}}…",
      "summary": "{{ready}} of {{total}} sources ready"
    },
    "studio": {
      "back": "All projects",
      "delete": {
        "body": "The outline, the slides and the exports are deleted. Charges already made are not refunded.",
        "confirm": "Delete deck",
        "deleting": "Deleting…",
        "menu": "Delete deck",
        "title": "Delete this deck?"
      },
      "leave": {
        "body": "Some of your changes are not saved yet (a conflict or fields that need changes). If you leave now, they may be lost.",
        "confirm": "Leave anyway",
        "stay": "Stay",
        "title": "Leave the outline?"
      },
      "loading": "Loading the deck…",
      "menu": "More actions",
      "mode": {
        "automatic": "Automatic",
        "interactive": "Step by step",
        "label": "How the deck is made"
      },
      "notFound": {
        "body": "This deck does not exist or is not yours.",
        "title": "Deck not found"
      },
      "pageTitle": "Slides",
      "paused": "Slides are paused by Booq — you can still edit, export and download.",
      "reconnecting": "Reconnecting… the page shows the last known state.",
      "rename": {
        "button": "Rename deck",
        "invalid": "Enter a title (at most 200 characters).",
        "label": "Deck title",
        "save": "Save",
        "saving": "Saving…"
      },
      "step": {
        "accept": "Accept and continue",
        "confirm": "Confirm and start",
        "confirming": "Confirming…",
        "hasNotices": "This step finished with remarks.",
        "pausedByBooq": "Slides are paused by Booq — you can still edit, export and download.",
        "plan": "See the price",
        "planHint": "Nothing is charged until you confirm the price.",
        "planning": "Getting the price…",
        "queued": "Waiting to start…",
        "redo": "Discard and redo",
        "tryAgain": "Try again — see the price"
      },
      "untitled": "Untitled deck",
      "wallet": {
        "note": "Each step is reserved when you confirm it and settled at its real cost.",
        "title": "Costs of this deck",
        "topUp": "Top up wallet"
      }
    },
    "versions": {
      "accepted": "Accepted",
      "changed": "Slides changed: {{number}}",
      "current": "Current",
      "description": "Every saved version of this outline. Restoring one keeps the others.",
      "empty": "No saved versions yet.",
      "hidePreview": "Hide preview",
      "loadingPreview": "Loading…",
      "newer": "Newer",
      "older": "Older",
      "origins": {
        "ai_generate": "Written by AI",
        "apply_proposal": "AI rewrite applied",
        "reopen": "Reopened",
        "restore": "Restored",
        "user_edit": "Your edits"
      },
      "preview": "Preview",
      "restore": "Restore",
      "restoring": "Restoring…",
      "title": "Version history",
      "version": "Version {{number}}"
    },
    "export": {
      "blocked": {
        "inFlight": "An export is being built. Wait for it to finish.",
        "missing": "{{n}} slides have no image yet. Draw them in the Slides stage first.",
        "noFormat": "Choose at least one format.",
        "noOutline": "Write and accept the outline, then draw the slides.",
        "noSlides": "Every slide is hidden. Show at least one slide in the outline."
      },
      "download": {
        "failed": "The download could not be started. Try again.",
        "label": "Download",
        "started": "The download has started."
      },
      "downloadAria": "Download {{format}}",
      "downloadEarlierAria": "Download earlier {{format}}",
      "downloads": "Downloads",
      "editable": "Editable text in PPTX",
      "editableHint": "Precise-text slides keep their text as editable text boxes. The deck uses bundled open fonts (such as Vazirmatn); install them for the exact layout in PowerPoint.",
      "editableUnavailable": "Only precise-text slides have editable text. This deck has none, so its slides are exported as images.",
      "fontNote": "Text is set in bundled open-licence fonts, so Persian and Arabic look the same on every device.",
      "formats": {
        "pdf": "PDF",
        "pptx": "PowerPoint (PPTX)",
        "zip": "Images (ZIP)"
      },
      "formatsLegend": "Formats",
      "free": "Free",
      "latest": "Latest export",
      "notes": "Include speaker notes",
      "pdfQuality": "PDF quality",
      "phase": {
        "failed": "Failed",
        "queued": "Waiting to start",
        "ready": "Ready",
        "running": "Building"
      },
      "previous": "Earlier exports ({{n}})",
      "progress": "Export progress",
      "quality": {
        "high": "High (larger file)",
        "standard": "Standard"
      },
      "retry": "Try the export again",
      "share": {
        "copied": "The link was copied. It works for one hour.",
        "label": "Share",
        "unavailable": "Sharing is not available on this device."
      },
      "shareAria": "Share {{format}}",
      "staleWarning": "{{n}} slides are out of date and will be exported as they are now.",
      "start": "Export (free)",
      "started": "The export is being built. It is free.",
      "title": "Export"
    },
    "gallery": {
      "actions": {
        "accept": "Accept",
        "download": "Download image",
        "edit": "Edit with an instruction",
        "free": "Free",
        "outline": "Open in outline",
        "regenerate": "Regenerate",
        "render": "Render this slide",
        "retext": "Switch to precise text",
        "retry": "Try again",
        "running": "This slide is being drawn. The actions come back when it is ready.",
        "title": "Actions for {{slide}}",
        "unavailable": "Not available right now.",
        "upload": "Upload my own image"
      },
      "batch": {
        "acceptAll": "Accept all ({{n}})",
        "accepted": "{{n}} slides accepted.",
        "body": "Each slide is drawn as its own step; you can review, regenerate or edit every slide afterwards.",
        "dismiss": "Dismiss",
        "perSlide": "{{n}} × about {{price}} per slide",
        "remaining": "Render remaining ({{n}})",
        "skip": {
          "HIDDEN": "hidden in the outline",
          "IN_FLIGHT": "already being drawn",
          "LOCKED_CURRENT": "already drawn",
          "other": "not started"
        },
        "skippedTitle": "Not started:",
        "stale": "Redraw out of date ({{n}})",
        "started": "{{n}} slides are being drawn.",
        "titleRemaining": "Draw {{n}} remaining slides?",
        "titleStale": "Redraw {{n}} out-of-date slides?",
        "total": "Total for {{n}} slides"
      },
      "confirm": {
        "cancel": "Cancel",
        "editTitle": "Edit {{slide}}?",
        "newTakeBody": "A new take is drawn; the current image stays in the take history.",
        "price": "Price",
        "regenerateTitle": "Regenerate {{slide}}?",
        "renderBody": "The slide image is drawn from your outline and theme.",
        "renderTitle": "Render {{slide}}?",
        "retextBody": "The design is drawn without text and Booq sets your exact text on it in a bundled font. The current image stays in the take history.",
        "retextTitle": "Redraw {{slide}} with precise text?",
        "start": "Confirm and start",
        "starting": "Starting…"
      },
      "dialog": {
        "close": "Close"
      },
      "edit": {
        "continue": "Continue",
        "hint": "The image is changed as described; for precise-text slides only the design changes, never your text.",
        "label": "What should change?",
        "placeholder": "For example: make the background darker and the chart larger",
        "price": "About",
        "title": "Edit {{slide}} with an instruction",
        "tooLong": "Use at most {{max}} characters.",
        "tooShort": "Describe the change in a few words."
      },
      "lightbox": {
        "close": "Close",
        "details": "Slide details and actions",
        "next": "Next",
        "position": "{{current}} of {{total}}",
        "previous": "Previous"
      },
      "locked": "Accept the outline and choose a theme before drawing slides.",
      "menu": "Actions for {{slide}}",
      "noOutline": "Write and accept the outline first; its slides appear here.",
      "open": "Open {{slide}}",
      "outlineError": "The outline could not be loaded, so headlines are missing.",
      "slide": "Slide {{number}}",
      "slideNamed": "Slide {{number}}: {{headline}}",
      "slideUnknown": "A slide",
      "status": {
        "empty": "Not drawn yet"
      },
      "summary": "{{drawn}} of {{total}} drawn",
      "takes": {
        "alt": "{{slide}}, take {{number}}",
        "countOnly": "This slide has {{n}} takes. The current one is shown.",
        "current": "In use",
        "label": "Take {{number}}",
        "none": "This is the only take of this slide.",
        "restored": "Take {{number}} is now used on the slide.",
        "title": "Take history",
        "use": "Use this take",
        "useAria": "Use take {{number}} on {{slide}}"
      },
      "upload": {
        "done": "Your image is now used on {{slide}}.",
        "failed": "The upload failed. Check your connection and try again.",
        "hint": "PNG, JPEG or WebP, at least 1280 pixels wide, the same shape as the deck.",
        "progress": "Uploading… {{percent}} %",
        "wrongType": "Choose a PNG, JPEG or WebP image."
      }
    },
    "qa": {
      "chip": {
        "designHasText": "Design has stray text"
      },
      "difference": "Characters that differ: {{percent}} %",
      "expected": "Your outline",
      "explain": {
        "designHasText": "Your text is set by Booq and is exact, but the background design contains stray text. Regenerate the slide to get a clean design.",
        "fail": "The text read back from the image differs from your outline. Regenerate the slide or switch to precise text.",
        "overlayPass": "Your text is set by Booq in a bundled font, so it is exactly what your outline says.",
        "pass": "Booq read the text back from the image and it matches your outline.",
        "skipped": "The text check was not available for this image, so the drawn text was not compared with your outline.",
        "warn": "Booq read the text back from the image; a few characters may differ from your outline. Compare them below, or switch to precise text."
      },
      "nothingRead": "No text could be read.",
      "read": "Read from the image",
      "regenerateDesign": "Regenerate for a clean design",
      "whatIsThis": "About the text check"
    },
    "showcase": {
      "notOwnSources": "This deck cannot be offered to the Showcase: it was built from web research, links or files that are not your own uploads. Decks made only from your own text and uploaded files can be offered.",
      "title": "Showcase"
    },
    "theme": {
      "autoPriced": "Priced when you design it",
      "change": "Change theme",
      "chooseImage": "Choose your theme image",
      "confirm": {
        "bodyAuto": "Booq designs a background and colours that fit your topic and audience.",
        "bodyUpload": "Booq studies your image and builds matching colours, fonts and a background for every slide.",
        "titleAuto": "Design a theme for this deck?",
        "titleUpload": "Design the theme from your image?"
      },
      "confirmChange": {
        "body": "Changing the theme marks all {{n}} drawn slides out of date. They keep their images until you redraw them.",
        "confirm": "Change theme",
        "title": "Change the theme?"
      },
      "current": "Current theme",
      "free": "Free",
      "lockedReason": "Accept the outline first; the theme is designed for its slides.",
      "mode": {
        "auto": "Automatic theme",
        "upload": "Your own image"
      },
      "needImage": "Choose your theme image first.",
      "saved": "The theme was changed.",
      "savingImage": "Saving your image…",
      "staleWarning": "Changing the theme marks all {{n}} drawn slides out of date; redrawing them is priced per slide.",
      "step": {
        "accept": "Use this theme",
        "design": "Design the theme",
        "redesign": "New design",
        "reject": "Reject",
        "retry": "Try again",
        "titleAuto": "Designed theme",
        "titleUpload": "Theme from your image"
      },
      "title": "Theme",
      "uploaded": "Your image will be used as the theme. Design the theme from it below.",
      "words": {
        "hint": "Words only — colours and fonts are chosen to stay readable.",
        "label": "Describe the look (optional)",
        "placeholder": "For example: calm, green, nature, lots of white space",
        "tooLong": "Use at most {{max}} characters."
      }
    },
    "list": {
      "waiting": "Waiting for you"
    }
  }
}
