{
  "nav": {
    "home": "Home",
    "tools": "Tools",
    "use_cases": "Use cases",
    "store": "Experiments",
    "blog": "Notes",
    "about": "About 485Tech"
  },
  "hero": {
    "title": "Free Online Tools<span class=\"text-gradient\"> by 485Tech</span>",
    "subtitle": "Tools for text, data, developers, numbers, and images — ready to use in your browser",
    "cta": "Explore tools"
  },
  "status": {
    "coming_soon": "In development"
  },
  "subscribe": {
    "title": "Get Notified",
    "desc": "Subscribe to get notified as soon as we launch.",
    "placeholder": "Enter your email to get notified",
    "button": "Notify Me",
    "success": "Thank you for subscribing! We will notify you when live.",
    "error": "Error subscribing. Please try again.",
    "duplicate": "You are already subscribed."
  },
  "tools": {
    "hero_badge": "100% Client-Side",
    "hero_title": "Free Online Tools",
    "hero_subtitle": "Tools for text, data, developers, numbers, and images — ready to use in your browser",
    "search_placeholder": "Search tools (e.g. QR Code, Password, JSON, Base64, Image...)",
    "cat_all": "All",
    "cat_generator": "Generate",
    "cat_converter": "Convert",
    "cat_utility": "Utility",
    "no_results": "No tools match your search.",
    "live_badge": "Available now",
    "soon_badge": "Coming soon",
    "open": "Open tool",
    "back": "All tools",
    "soon_toast": "This tool is still in development — coming soon.",
    "loading": "Loading…",
    "load_error": "Failed to load this tool — please try again.",
    "load_error_hint": "Try loading again. If it still fails, return to the tools list and choose another tool.",
    "retry": "Try again",
    "client_note": "Everything is processed locally in your browser. Nothing is uploaded to any server.",
    "tool_count": "{n} tools",
    "result_count": "Showing {shown} of {total}",
    "recent_title": "Recently used",
    "recent_empty": "Tools you open will appear here",
    "clear_filters": "Clear filters",
    "sort_label": "Sort",
    "sort_recommended": "Recommended",
    "sort_name": "Name A–Z",
    "sort_category": "Category",
    "clear_search": "Clear",
    "keyboard_hint": "Press / to search",
    "export_preferences": "Export settings",
    "import_preferences": "Import settings",
    "preferences_exported": "Settings exported",
    "preferences_imported": "Settings imported",
    "preferences_invalid": "Invalid settings file",
    "preferences_version_error": "This file is from an unsupported version",
    "preferences_hint": "Move pinned tools and recent tools to another device. Data stays on your device.",
    "collections_label": "Start with a use case",
    "collection_all": "All work",
    "collection_developer": "Build for web",
    "collection_content": "Text and content",
    "collection_files": "Files and PDF",
    "collection_images": "Images and media",
    "collection_security": "Security",
    "collection_data": "Data and tables",
    "capabilities_label": "Capabilities",
    "capability_client": "Runs on your device",
    "capability_file": "File input",
    "capability_copy": "Copy output",
    "capability_download": "Download output",
    "capability_batch": "Batch-ready",
    "capability_ai": "Browser AI",
    "capability_detail_title": "Tool details",
    "capability_local": "Processed in your browser",
    "capability_offline": "No runtime network required",
    "capability_network": "Needs a network request on first use",
    "capability_file_types": "Accepted inputs",
    "capability_file_limit": "File size limit",
    "capability_limitations": "Limitations",
    "capability_privacy_local": "Your input stays in this browser during processing; 485Tech does not upload it by default.",
    "capability_privacy_network": "Your input is processed in this browser. This tool may download a browser library or model on first use; the input is not uploaded by 485Tech by default.",
    "capability_limits_generic": "Check the tool controls and browser memory for practical limits.",
    "capability_limits_batch_text": "Text files only; each file is limited to 5 MB and the queue accepts common text/developer extensions.",
    "capability_limits_bg_remover": "Image processing is capped to a working resolution for speed, and model assets must download on first use.",
    "capability_limits_diagram": "Renderer assets download on first use; export formats depend on the selected diagram.",
    "capability_limits_excel_chat": "Accepts .xlsx/.xls files; parser assets download on first use.",
    "share_filters": "Share filters",
    "command_palette_label": "Quick launch",
    "command_palette_title": "Find and open a tool",
    "command_palette_placeholder": "Type a tool name or category…",
    "command_palette_hint": "Press Ctrl/⌘ + K to open · Enter to select · Esc to close",
    "close": "Close",

    "share": "Share this tool",
    "share_copied": "Link copied",
    "share_fail": "Sharing is unavailable — copy the URL from the address bar instead",
    "pinned_title": "Pinned",
    "pin": "Pin",
    "unpin": "Unpin",
    "pinned_toast": "Pinned — it will be shown first on this device next time.",
    "unpinned_toast": "Unpinned.",
    "credits": "{n} credits",
    "credits_hint": "Your credit balance",
    "cost_badge": "{n} credits",
    "login_required": "Please sign in to use this tool.",
    "insufficient_credits": "Not enough credits.",
    "charge_unavailable": "Credits are unavailable right now.",
    "apps": {
      "qr": {
        "name": "QR Code Generator",
        "desc": "Create custom QR codes with colors, logos and styles."
      },
      "password": {
        "name": "Password Generator",
        "desc": "Generate strong random passwords and passphrases on your device."
      },
      "excel_chat": {
        "name": "Excel To Chatbot",
        "desc": "Convert Excel data into a standalone chatbot HTML."
      },
      "fillet": {
        "name": "Corner Rounder",
        "desc": "Round image corners with fillet effect and export PNG."
      },
      "bg_remover": {
        "name": "Image Background Remover",
        "desc": "Remove image backgrounds on your device with AI wand & brush."
      },
      "json": {
        "name": "JSON Formatter",
        "desc": "Pretty-print, validate and minify JSON instantly."
      },
      "batch_text": {
        "name": "Batch Text Toolkit",
        "desc": "Process multiple text files at once, then download the results as a ZIP."
      },
      "unit": {
        "name": "Unit Converter",
        "desc": "Convert length, weight, temperature, speed and more."
      },
      "diagram": {
        "name": "Diagram Studio",
        "desc": "Draw flowcharts and diagrams — export PNG or SVG."
      },
      "counter": {
        "name": "Text Counter",
        "desc": "Count characters, words, sentences and reading time."
      },
      "color": {
        "name": "Color Converter",
        "desc": "Convert between HEX, RGB and HSL color formats."
      },
      "audio": {
        "name": "Audio Studio",
        "desc": "Edit and convert audio — trim, effects, WAV & MP3 export."
      },
      "media": {
        "name": "Media Studio",
        "desc": "Edit images and video — crop, resize, filters and export."
      },
      "base64": {
        "name": "Base64 Converter",
        "desc": "Encode and decode Base64 strings."
      },
      "regex": {
        "name": "Regex Tester",
        "desc": "Test and validate Regular Expressions."
      },
      "markdown": {
        "name": "Markdown Editor",
        "desc": "Write and preview Markdown with HTML export."
      },
      "url": {
        "name": "URL Encode/Decode",
        "desc": "Encode and decode URL strings instantly."
      },
      "uuid": {
        "name": "UUID Generator",
        "desc": "Generate random UUIDs / GUIDs."
      },
      "jwt": {
        "name": "JWT Decoder",
        "desc": "Decode and inspect JSON Web Tokens."
      },
      "palette": {
        "name": "Color Palette",
        "desc": "Generate and explore beautiful color schemes."
      },
      "diff": {
        "name": "Diff Checker",
        "desc": "Compare two text files and find differences."
      },
      "sql": {
        "name": "SQL Formatter",
        "desc": "Format and beautify SQL queries."
      },
      "compress": {
        "name": "Image Compressor",
        "desc": "Compress images to reduce file size without losing quality."
      },
      "hash": {
        "name": "Hash Generator",
        "desc": "Create SHA-1, SHA-256, SHA-384 or SHA-512 in the browser"
      },
      "cron": {
        "name": "Cron Expression",
        "desc": "Explain a five-field cron expression"
      },
      "timestamp": {
        "name": "Timestamp Converter",
        "desc": "Convert Unix timestamps and ISO dates"
      },
      "lorem": {
        "name": "Lorem Ipsum",
        "desc": "Generate placeholder text for layouts"
      },
      "html_entity": {
        "name": "HTML Entity",
        "desc": "Encode and decode HTML entities"
      },
      "json_yaml": {
        "name": "JSON to YAML",
        "desc": "Convert JSON to readable YAML"
      },
      "minifier": {
        "name": "CSS/JS Minifier",
        "desc": "Reduce whitespace and comments in CSS and JavaScript"
      },
      "pdf_tools": {
        "name": "PDF Quick Tools",
        "desc": "Quick links to frequently used PDF tools"
      },
      "barcode": {
        "name": "Barcode Generator",
        "desc": "Generate Code 39 barcodes from text"
      },
      "svg_editor": {
        "name": "SVG Cleaner",
        "desc": "Validate and clean SVG markup"
      },
      "case-converter": {
        "name": "Case Converter",
        "desc": "Convert letter case and sentence styles"
      },
      "slugify": {
        "name": "Slugify String",
        "desc": "Create URL-friendly slugs from text"
      },
      "string-obfuscator": {
        "name": "String Obfuscator",
        "desc": "Encode text as Base64 for simple transport"
      },
      "rot13": {
        "name": "ROT13",
        "desc": "Transform A–Z text with ROT13"
      },
      "morse-code": {
        "name": "Morse Code",
        "desc": "Encode and decode Morse code"
      },
      "text-repeater": {
        "name": "Text Repeater",
        "desc": "Repeat text a chosen number of times"
      },
      "text-reverser": {
        "name": "Text Reverser",
        "desc": "Reverse characters, words, or lines"
      },
      "duplicate-line-remover": {
        "name": "Remove Duplicate Lines",
        "desc": "Remove duplicate lines while keeping order"
      },
      "line-sorter": {
        "name": "Line Sorter",
        "desc": "Sort lines alphabetically, numerically, or by length"
      },
      "line-shuffler": {
        "name": "Line Shuffler",
        "desc": "Shuffle lines with Web Crypto randomness"
      },
      "line-joiner": {
        "name": "Line Joiner",
        "desc": "Join multiple lines with a separator"
      },
      "line-splitter": {
        "name": "Line Splitter",
        "desc": "Split text by a delimiter into lines"
      },
      "unique-lines": {
        "name": "Unique Lines",
        "desc": "Keep only unique lines"
      },
      "text-statistics-pro": {
        "name": "Text Statistics Pro",
        "desc": "Summarize characters, words, lines, and bytes"
      },
      "text-to-binary": {
        "name": "Text to Binary",
        "desc": "Convert UTF-8 text to binary"
      },
      "binary-to-text": {
        "name": "Binary to Text",
        "desc": "Convert binary back to UTF-8 text"
      },
      "text-to-unicode": {
        "name": "Text to Unicode",
        "desc": "Convert characters to Unicode code points"
      },
      "unicode-to-text": {
        "name": "Unicode to Text",
        "desc": "Convert Unicode code points back to text"
      },
      "json-to-csv": {
        "name": "JSON to CSV",
        "desc": "Convert JSON objects into CSV"
      },
      "json-to-xml": {
        "name": "JSON to XML",
        "desc": "Convert JSON to readable XML"
      },
      "json-to-yaml": {
        "name": "JSON to YAML",
        "desc": "Convert JSON to simple YAML"
      },
      "json-to-toml": {
        "name": "JSON to TOML",
        "desc": "Convert JSON objects to simple TOML"
      },
      "json-viewer": {
        "name": "JSON Viewer",
        "desc": "Format and inspect JSON structure"
      },
      "xml-formatter": {
        "name": "XML Formatter",
        "desc": "Format XML with the browser DOMParser"
      },
      "xml-to-json": {
        "name": "XML to JSON",
        "desc": "Convert XML into a JSON structure"
      },
      "yaml-to-json": {
        "name": "YAML to JSON",
        "desc": "Convert basic YAML to JSON"
      },
      "yaml-to-toml": {
        "name": "YAML to TOML",
        "desc": "Convert basic YAML to TOML"
      },
      "csv-to-json": {
        "name": "CSV to JSON",
        "desc": "Convert CSV into an array of JSON objects"
      },
      "toml-to-json": {
        "name": "TOML to JSON",
        "desc": "Convert basic TOML to JSON"
      },
      "toml-to-yaml": {
        "name": "TOML to YAML",
        "desc": "Convert basic TOML to YAML"
      },
      "hash-generator": {
        "name": "Hash Generator",
        "desc": "Generate SHA-1, SHA-256, SHA-384, or SHA-512"
      },
      "hmac-generator": {
        "name": "HMAC Generator",
        "desc": "Generate HMAC with the Web Crypto API"
      },
      "token-generator": {
        "name": "Token Generator",
        "desc": "Generate random tokens with crypto.getRandomValues"
      },
      "basic-auth-generator": {
        "name": "Basic Auth Generator",
        "desc": "Create an Authorization header for Basic Auth"
      },
      "otp-generator": {
        "name": "OTP Generator",
        "desc": "Generate offline OTP codes for testing"
      },
      "rsa-key-generator": {
        "name": "RSA Key Pair Generator",
        "desc": "Generate an RSA-OAEP key pair in the browser"
      },
      "password-strength": {
        "name": "Password Strength Analyzer",
        "desc": "Estimate password length and entropy locally"
      },
      "iban-validator": {
        "name": "IBAN Validator",
        "desc": "Validate IBAN format and checksum"
      },
      "random-port-generator": {
        "name": "Random Port Generator",
        "desc": "Generate random ports for experiments"
      },
      "http-status-codes": {
        "name": "HTTP Status Codes",
        "desc": "Search common HTTP status codes"
      },
      "mime-types": {
        "name": "MIME Types",
        "desc": "Find Content-Types from file extensions"
      },
      "user-agent-parser": {
        "name": "User-Agent Parser",
        "desc": "Parse browser, OS, and device from a User-Agent"
      },
      "ipv4-parser": {
        "name": "IPv4 Analyzer",
        "desc": "Inspect IPv4 format, scope, and binary"
      },
      "ipv4-subnet-calculator": {
        "name": "IPv4 Subnet Calculator",
        "desc": "Calculate network, broadcast, and hosts"
      },
      "ipv4-range-expander": {
        "name": "IPv4 Range Expander",
        "desc": "List IPv4 addresses between start and end"
      },
      "mac-generator": {
        "name": "MAC Address Generator",
        "desc": "Generate locally administered MAC addresses"
      },
      "docker-compose-converter": {
        "name": "Docker Run to Compose",
        "desc": "Convert basic docker run commands to compose.yaml"
      },
      "html-entities": {
        "name": "HTML Entity Encoder / Decoder",
        "desc": "Encode and decode HTML entities with the DOM API"
      },
      "safe-link-decoder": {
        "name": "Safe Link Decoder",
        "desc": "Decode URL encoding and inspect the host without fetching"
      },
      "percentage-calculator": {
        "name": "Percentage Calculator",
        "desc": "Calculate common percentage formulas"
      },
      "eta-calculator": {
        "name": "ETA Calculator",
        "desc": "Estimate remaining time from work and rate"
      },
      "arithmetic-sequence": {
        "name": "Arithmetic Sequence",
        "desc": "Generate arithmetic sequences from a start and difference"
      },
      "prime-generator": {
        "name": "Prime Number Generator",
        "desc": "Generate prime numbers up to a limit"
      },
      "number-base-converter": {
        "name": "Number Base Converter",
        "desc": "Convert numbers between bases 2–36"
      },
      "byte-converter": {
        "name": "Byte Converter",
        "desc": "Convert byte units using base 1024"
      },
      "number-to-words": {
        "name": "Number to Words",
        "desc": "Convert numbers to English words"
      },
      "roman-numeral": {
        "name": "Roman Numeral Converter",
        "desc": "Convert numbers 1–3999 to Roman numerals"
      },
      "chronometer": {
        "name": "Chronometer",
        "desc": "Time events locally in the browser"
      },
      "date-time-converter": {
        "name": "Date & Time Converter",
        "desc": "Convert ISO dates, Unix timestamps, and current time"
      },
      "timezone-converter": {
        "name": "Timezone Converter",
        "desc": "View the same instant across time zones"
      },
      "random-number-generator": {
        "name": "Random Number Generator",
        "desc": "Generate random integers with Web Crypto"
      },
      "image-resizer": {
        "name": "Image Resizer",
        "desc": "Resize images with Canvas in the browser"
      },
      "image-rotator": {
        "name": "Image Rotator",
        "desc": "Rotate images by 90, 180, or 270 degrees"
      },
      "image-flipper": {
        "name": "Image Flipper",
        "desc": "Flip images horizontally or vertically"
      },
      "image-cropper": {
        "name": "Image Cropper",
        "desc": "Crop images with coordinates and dimensions"
      },
      "image-opacity": {
        "name": "Image Opacity",
        "desc": "Adjust image opacity and download the result"
      },
      "image-watermark": {
        "name": "Image Watermark",
        "desc": "Add a text watermark locally"
      },
      "image-color-adjuster": {
        "name": "Image Color Adjuster",
        "desc": "Adjust brightness, contrast, and saturation"
      },
      "image-format-converter": {
        "name": "Image Format Converter",
        "desc": "Convert PNG, JPEG, and WebP with Canvas"
      },
      "image-transparent": {
        "name": "Make Transparent",
        "desc": "Turn near-white pixels transparent"
      },
      "image-compressor-pro": {
        "name": "Image Compressor Pro",
        "desc": "Compress images in a Squoosh-style browser workflow"
      },
      "pdf_merge": {
        "name": "Merge PDF",
        "desc": "Merge multiple PDF files in the browser"
      },
      "pdf_split": {
        "name": "Split PDF",
        "desc": "Extract selected pages into a new PDF"
      },
      "pdf_rotate": {
        "name": "Rotate PDF Pages",
        "desc": "Rotate every PDF page by a selected angle"
      },
      "pdf_page_numbers": {
        "name": "Add PDF Page Numbers",
        "desc": "Add page numbers to a PDF"
      },
      "pdf_watermark": {
        "name": "Watermark PDF",
        "desc": "Add a text watermark to every page"
      },
      "pdf_metadata": {
        "name": "PDF Metadata",
        "desc": "Read and edit basic PDF metadata"
      },
      "images_to_pdf": {
        "name": "Images to PDF",
        "desc": "Combine JPG, PNG or WebP images into a PDF"
      },
      "text_to_pdf": {
        "name": "Text to PDF",
        "desc": "Create a PDF from plain text"
      },
      "office_inspector": {
        "name": "Office File Inspector",
        "desc": "Inspect DOCX, XLSX and PPTX packages locally"
      },
      "office_zip_list": {
        "name": "Office / ZIP File List",
        "desc": "List files inside ZIP, DOCX, XLSX or PPTX packages"
      },
      "zip_creator": {
        "name": "Create ZIP",
        "desc": "Create a ZIP archive locally"
      },
      "zip_extractor": {
        "name": "Extract ZIP",
        "desc": "List and download files inside a ZIP"
      },
      "file_checksum": {
        "name": "File Checksum",
        "desc": "Create a SHA-256 or SHA-1 checksum for a file"
      },
      "file_info": {
        "name": "File Information",
        "desc": "Inspect file type, size and basic metadata"
      },
      "file_base64": {
        "name": "File to Base64",
        "desc": "Encode files to data URLs and decode them back"
      },
      "file_splitter": {
        "name": "Split File",
        "desc": "Split a file into parts inside a ZIP"
      },
      "file_joiner": {
        "name": "Join Files",
        "desc": "Join multiple binary files in order"
      },
      "csv_to_xlsx": {
        "name": "CSV to XLSX",
        "desc": "Convert CSV to an Excel XLSX file"
      },
      "html_to_docx": {
        "name": "HTML to DOCX",
        "desc": "Create a DOCX from basic HTML"
      },
      "audio_recorder": {
        "name": "Audio Recorder",
        "desc": "Record microphone audio in the browser"
      },
      "audio_metadata": {
        "name": "Audio Metadata",
        "desc": "Read duration, sample rate and channel count"
      },
      "video_metadata": {
        "name": "Video Metadata",
        "desc": "Read video dimensions and duration"
      },
      "video_thumbnail": {
        "name": "Video Thumbnail",
        "desc": "Capture a frame from a local video"
      },
      "image_palette": {
        "name": "Image Color Palette",
        "desc": "Extract dominant colors from an image"
      },
      "favicon_generator": {
        "name": "Favicon Generator",
        "desc": "Create a PNG favicon from an image"
      },
      "image_contact_sheet": {
        "name": "Image Contact Sheet",
        "desc": "Combine images into a contact sheet"
      },
      "pdf_page_count": {
        "name": "PDF Page Count",
        "desc": "Count pages and page sizes locally"
      },
      "pdf_delete_pages": {
        "name": "Delete PDF Pages",
        "desc": "Remove selected pages from a PDF"
      },
      "pdf_reorder_pages": {
        "name": "Reorder PDF Pages",
        "desc": "Reorder PDF pages by number"
      },
      "pdf_blank_page": {
        "name": "Insert Blank PDF Page",
        "desc": "Insert a blank page into a PDF"
      },
      "pdf_2up": {
        "name": "PDF 2-up",
        "desc": "Place two PDF pages on one sheet"
      },
      "pdf_compress": {
        "name": "Compress PDF",
        "desc": "Save a PDF with browser-side compression options"
      },
      "pdf_header_footer": {
        "name": "PDF Header & Footer",
        "desc": "Add header and footer text to every page"
      },
      "pdf_image_stamp": {
        "name": "Stamp Image on PDF",
        "desc": "Place a PNG/JPG stamp on every page"
      },
      "docx_to_text": {
        "name": "DOCX to Text",
        "desc": "Extract text from a DOCX locally"
      },
      "xlsx_to_csv": {
        "name": "XLSX to CSV",
        "desc": "Convert the first XLSX sheet to CSV"
      },
      "pptx_to_text": {
        "name": "PPTX to Text",
        "desc": "Extract text from every PPTX slide"
      },
      "office_search": {
        "name": "Office XML Search",
        "desc": "Search XML parts inside DOCX XLSX or PPTX"
      },
      "rtf_to_text": {
        "name": "RTF to Text",
        "desc": "Convert basic RTF to plain text"
      },
      "html_table_to_xlsx": {
        "name": "HTML Table to XLSX",
        "desc": "Convert an HTML table to XLSX"
      },
      "file_hex": {
        "name": "File Hex Viewer",
        "desc": "View file bytes as hexadecimal and ASCII"
      },
      "file_lines": {
        "name": "Text File Analyzer",
        "desc": "Count lines, words, characters and bytes"
      },
      "file_preview": {
        "name": "Text File Preview",
        "desc": "Preview text, CSV, JSON or Markdown files"
      },
      "csv_to_tsv": {
        "name": "CSV to TSV",
        "desc": "Convert CSV to TSV"
      },
      "tsv_to_csv": {
        "name": "TSV to CSV",
        "desc": "Convert TSV to CSV"
      },
      "image_grayscale": {
        "name": "Grayscale Image",
        "desc": "Apply a grayscale filter to an image"
      },
      "image_sepia": {
        "name": "Sepia Image",
        "desc": "Apply a sepia filter to an image"
      },
      "image_blur": {
        "name": "Blur Image",
        "desc": "Apply a blur filter to an image"
      },
      "image_invert": {
        "name": "Invert Image",
        "desc": "Invert image colors locally"
      },
      "image_brightness": {
        "name": "Brightness Image",
        "desc": "Adjust image brightness locally"
      },
      "image_contrast": {
        "name": "Contrast Image",
        "desc": "Adjust image contrast locally"
      },
      "image_dimensions": {
        "name": "Image Dimensions",
        "desc": "Read image dimensions and aspect ratio"
      },
      "image_average_color": {
        "name": "Image Average Color",
        "desc": "Calculate average RGB and HEX color"
      },
      "image_splitter": {
        "name": "Image Splitter",
        "desc": "Split an image into tiles in a ZIP"
      },
      "video_frame_strip": {
        "name": "Video Frame Strip",
        "desc": "Capture multiple frames from a local video"
      },
      "media_info": {
        "name": "Media File Information",
        "desc": "Inspect image, audio or video file metadata"
      }
    },
    "qr": {
      "name": "QR Code Generator",
      "desc": "Create custom QR codes — colors, gradients, dot styles, logos and more."
    },
    "pw": {
      "mode_label": "Generation Mode",
      "mode_random": "Random",
      "mode_passphrase": "Passphrase",
      "mode_pin": "Numeric PIN",
      "mode_pronounceable": "Easy-to-Say",
      "length": "Length",
      "chars_label": "Character sets",
      "upper": "Uppercase (A-Z)",
      "lower": "Lowercase (a-z)",
      "digits": "Digits (0-9)",
      "symbols": "Symbols (!@#$)",
      "exclude_amb": "Exclude ambiguous (O0Il1)",
      "no_repeat": "No identical adjacent characters",
      "ensure_all": "Use at least one of each selected set",
      "word_count": "Number of words",
      "separator": "Separator",
      "sep_dash": "-",
      "sep_space": "Space",
      "sep_dot": ".",
      "sep_underscore": "_",
      "capitalize": "Capitalize words",
      "add_number": "Add a digit",
      "add_symbol": "Add a symbol",
      "pin_length": "PIN Digits",
      "syllable_count": "Syllable Count",
      "syllable_num": "Add numbers to syllables",
      "note": "Generated locally with crypto.getRandomValues — nothing is sent anywhere.",
      "str_weak": "Weak",
      "str_fair": "Fair",
      "str_good": "Good",
      "str_strong": "Very strong",
      "bits": "~{n} bits of entropy",
      "generate": "Generate",
      "copy": "Copy",
      "copied": "Password copied to clipboard!",
      "copy_fail": "Copy is blocked by the browser — select the text manually.",
      "result_label": "Your password",
      "copied_short": "Copied",
      "crack_time_prefix": "Est. Crack Time:",
      "crack_instant": "Instant",
      "crack_seconds": "A few seconds",
      "crack_minutes": "~{n} minutes",
      "crack_hours": "~{n} hours",
      "crack_days": "~{n} days",
      "crack_months": "~{n} months",
      "crack_years": "~{n} years",
      "crack_millions": "~{n} million years",
      "crack_trillions": "Trillions of years (Impenetrable)",
      "bulk_label": "Quantity to generate",
      "bulk_title": "Generated Passwords",
      "copy_all": "Copy All",
      "download_txt": "Download .TXT",
      "copied_all": "All passwords copied to clipboard!",
      "presets_label": "Quick Presets",
      "preset_std": "🛡️ Standard (16 chars)",
      "preset_strong": "🔒 Maximum (24 chars)",
      "preset_pin6": "📱 6-Digit PIN",
      "preset_pass5": "🔑 Passphrase (5 words)",
      "preset_easy": "🗣️ Easy-to-Say (4 syl)"
    },
    "bg": {
      "drop_title": "Drop an image here",
      "drop_sub": "or paste from the clipboard — processed entirely in your browser",
      "choose": "Choose image",
      "bad_file": "That file is not a supported image.",
      "loaded": "Background removed — fine-tune with the tools on the right.",
      "auto": "Auto remove",
      "wand": "Magic wand",
      "erase": "Eraser brush",
      "restore": "Restore brush",
      "pan": "Pan",
      "undo": "Undo",
      "redo": "Redo",
      "reset": "Reset",
      "zoom_in": "Zoom in",
      "zoom_out": "Zoom out",
      "zoom_fit": "Fit to screen",
      "tolerance": "Tolerance",
      "brush": "Brush size",
      "feather": "Feather",
      "auto_run": "Automatic removal",
      "run_auto": "Run auto remove",
      "background": "Background",
      "bg_checker": "Checkerboard",
      "bg_transparent": "Transparent",
      "bg_color": "Color",
      "export": "Export PNG",
      "exported": "PNG downloaded — transparent background included.",
      "export_fail": "Export failed — try again.",
      "privacy": "Your image is processed locally and never uploaded. Working resolution is capped at 1600px for speed.",
      "model_note": "Browser AI inference · model assets download on first use",
      "stats": "{w}×{h}px · {pct}% removed · {ms}ms"
    },
    "json": {
      "name": "JSON Formatter",
      "desc": "Pretty-print, validate and minify JSON instantly.",
      "snapshots": "Local snapshots",
      "snapshot_help": "Save named versions on this device. Nothing is uploaded.",
      "snapshot_name": "Snapshot name",
      "snapshot_name_placeholder": "e.g. API payload before edits",
      "snapshot_save": "Save snapshot",
      "snapshot_empty": "No snapshots for this tool yet",
      "snapshot_restore": "Restore",
      "snapshot_duplicate": "Duplicate",
      "snapshot_delete": "Delete",
      "snapshot_saved": "Snapshot saved",
      "snapshot_deleted": "Snapshot deleted",
      "snapshot_restored": "Snapshot restored",
      "snapshot_invalid_name": "Give this snapshot a name",
      "snapshot_no_input": "There is no JSON to save",
      "snapshot_storage_full": "Snapshot storage is full. Delete an older item first.",
      "snapshot_usage": "{count} items · {size}"
    },
    "batch_text": {
      "title": "Batch Text Toolkit",
      "subtitle": "Process multiple text files at once without leaving your device",
      "drop_title": "Drop text files here",
      "drop_hint": "Supports .txt, .md, .csv, .log, .json and other UTF-8 text files",
      "choose": "Choose files",
      "clear": "Clear list",
      "files": "files",
      "empty": "No files added yet",
      "operation": "Processing",
      "trim": "Trim whitespace on every line",
      "dedupe": "Remove duplicate lines",
      "sort": "Sort lines A–Z",
      "lower": "Convert to lowercase",
      "upper": "Convert to uppercase",
      "suffix": "Append text to each file",
      "suffix_placeholder": "e.g. # processed by 485Tech",
      "case_label": "Letter case",
      "case_keep": "Keep original case",
      "help": "Each file keeps its original extension. Processing is deterministic and stays in this browser.",
      "process": "Process all files",
      "cancel": "Cancel processing",
      "processing": "Processing…",
      "cancelled": "Cancelled — completed files are still available to download",
      "download_zip": "Download ZIP",
      "download_each": "Download files",
      "retry": "Retry",
      "skip": "Skip",
      "ready": "Ready to process",
      "processed": "Processed {done}/{total}",
      "success": "Successfully processed {n} files",
      "success_one": "Processed",
      "downloaded": "ZIP downloaded",
      "no_files": "Add at least one file",
      "file_too_large": "File is larger than 5 MB",
      "read_error": "Could not read this file",
      "unsupported": "Only text files are supported",
      "zip_unavailable": "Could not create a ZIP. Download files individually instead.",
      "privacy": "All files are processed in your browser. Nothing is uploaded to a server.",
      "remove": "Remove file"
    },
    "unit": {
      "name": "Unit Converter",
      "desc": "Convert length, weight, temperature, speed and more."
    },
    "diagram": {
      "name": "Diagram Studio",
      "desc": "Draw flowcharts and diagrams — drag nodes, connect them, export PNG or SVG."
    },
    "audio": {
      "name": "Audio Studio",
      "desc": "Edit and convert audio — trim, effects, reverse, WAV & MP3 export."
    },
    "fillet": {
      "name": "Corner Rounder",
      "desc": "Round image corners with a fillet effect and export as PNG."
    },
    "cat_text": "Text",
    "cat_data": "Data",
    "cat_security": "Security",
    "cat_developer": "Developer",
    "cat_number": "Numbers & Time",
    "cat_media": "Images & Media",
    "cat_pdf": "PDF",
    "cat_audio": "Audio",
    "cat_photo": "Photo",
    "cat_file": "Files",
    "cat_office": "Office"
  },
  "store": {
    "title": "Experiments",
    "subtitle": "A space for small projects, ideas, and things that are still taking shape",
    "coming_soon_title": "In development",
    "coming_soon_desc": "This section is not ready yet. I am collecting experiments and projects to share here",
    "disclosure": "Note: Some external links or content may provide compensation to help maintain this site; this will be disclosed where appropriate",
    "explore_tools": "In the meantime, try the tools that are already available"
  },
  "blog": {
    "title": "Technology notes",
    "subtitle": "Notes from learning, building for the web, and solving technology problems over time",
    "coming_soon_title": "Being written",
    "coming_soon_desc": "Short notes and articles from current projects are being prepared and will be published when ready",
    "read_more": "Read more",
    "min_read": "min read",
    "latest": "Latest Articles",
    "categories": "Categories",
    "explore_tools": "In the meantime, try the tools that are already available"
  },
  "footer": {
    "desc": "Free Online Tools, experiments, and technology notes by 485Tech",
    "tools": "Tools",
    "explore": "Explore",
    "legal": "Site information",
    "privacy": "Privacy policy",
    "terms": "Terms of use",
    "cookies": "Cookies & settings",
    "support": "Contact the site owner",
    "support_email": "contact@485tech.com",
    "affiliate_note": "Some external links or ads may provide compensation to help maintain this site",
    "about": "About me",
    "personal_label": "Free Online Tools",
    "personal_site": "Free Online Tools",
    "tagline": "Free online tools, experiments, and technology notes",
    "copyright": "© 2026 485Tech · Free Online Tools"
  },
  "privacy": {
    "title": "Privacy policy",
    "updated": "Last updated"
  },
  "terms": {
    "title": "Terms of use",
    "updated": "Last updated"
  },
  "beta_notice": {
    "title": "New tools are being added",
    "desc": "485Tech is adding free online tools and refining the experience. Some features may change while the site evolves",
    "close": "Got it"
  },
  "use_cases": {
    "badge": "Start with a use case",
    "title": "Free tools for the work in front of you",
    "subtitle": "Choose a task, open the right tool, and get moving. Each workflow is designed to run in your browser when practical.",
    "browse": "Browse all tools",
    "trust": "No upload required for local-first tools",
    "label": "Use cases",
    "choose_title": "Choose your workspace",
    "choose_desc": "Each collection opens the Tools Hub with a prepared filter. You can still search or change categories at any time.",
    "open_tools": "Open tool set →",
    "developer": { "kicker": "For developers", "title": "Build and inspect web work", "desc": "Work with JSON, URLs, regex, JWT, SQL, UUIDs, and everyday developer utilities in your browser." },
    "content": { "kicker": "For text and content", "title": "Write, transform, and tidy text", "desc": "Count words, convert case and slugs, preview Markdown, encode entities, and manage duplicate lines quickly." },
    "files": { "kicker": "For files and PDF", "title": "Convert, inspect, and manage files", "desc": "Find file, PDF, and Office utilities for converting data, checking metadata, and working with files on your device." },
    "images": { "kicker": "For images and media", "title": "Polish visuals before you use them", "desc": "Remove backgrounds, round corners, compress images, create QR codes, or work with color using instant previews." },
    "security": { "kicker": "For security", "title": "Generate and inspect carefully", "desc": "Create passwords, hashes, tokens, and OTPs while keeping sensitive values on your device." },
    "data": { "kicker": "For data and tables", "title": "Make data readable and reusable", "desc": "Convert JSON, CSV, YAML, XML, and units, then inspect structure before using the result elsewhere." },
    "principles_badge": "How it works",
    "principles_title": "Tools should reduce work, not increase data exposure",
    "principles_desc": "We distinguish browser-local workflows from features that rely on external services, and we never place your tool input in share links or preference exports.",
    "principle_local": "Process on your device when practical",
    "principle_fast": "Open instantly; free tools do not require an account",
    "principle_transparent": "Visible privacy notes and consent controls",
    "cta_title": "Not sure where to start?",
    "cta_desc": "Open the Tools Hub, use quick search, or press Ctrl/⌘ + K to find a tool across every collection.",
    "cta_button": "Open Tools Hub"
  },
  "meta": {
    "title_home": "485Tech | Free Online Tools",
    "title_tools": "Tools | 485Tech",
    "title_use_cases": "Use cases | Free tools by 485Tech",
    "title_store": "Experiments | 485Tech",
    "title_blog": "Technology notes | 485Tech",
    "title_about": "About me | 485Tech",
    "title_privacy": "Privacy policy | 485Tech",
    "title_terms": "Terms of use | 485Tech"
  },
  "about": {
    "title": "About 485Tech",
    "subtitle": "A place for Free Online Tools, experiments, and notes from working with technology",
    "mission": "What I am building",
    "mission_desc": "Small, useful web tools that are clear to use and respectful of user data",
    "vision": "How I work",
    "vision_desc": "Make small things better one step at a time, while keeping room for new ideas",
    "values_title": "Principles behind the site",
    "v1": "Privacy-minded",
    "v1_desc": "Keep data on the user's device whenever practical",
    "v2": "Simple by default",
    "v2_desc": "Focus on interfaces that are clear and useful",
    "v3": "Experiment and learn",
    "v3_desc": "Every project is a chance to learn and improve",
    "v4": "Transparent",
    "v4_desc": "Explain data use, external links, and limitations as clearly as possible",
    "tech_title": "Technologies used",
    "cta_title": "More tools and notes are on the way",
    "cta_desc": "Check back from time to time, or send feedback to contact@485tech.com",
    "cta_button": "Go to tools"
  }
}
