{
  "app.name": "MageStock",
  "lang.label": "Language",
  "theme.toggle": "Toggle theme",
  "btn.logout": "Logout",
  "btn.login": "Sign in",
  "btn.save": "Save",
  "btn.cancel": "Cancel",
  "btn.close": "Close",
  "btn.delete": "Delete",
  "btn.add": "Add",
  "btn.edit": "Edit",
  "btn.export": "Export",
  "btn.export_pdf": "Export PDF",
  "btn.print": "Print",
  "btn.search": "Search",
  "search.placeholder": "Search…",
  "login.title": "Sign in",
  "login.username": "Username",
  "login.password": "Password",
  "login.error": "Invalid credentials.",
  "nav.dashboard": "Home",
  "nav.products": "Products",
  "nav.warehouses": "Warehouses",
  "nav.warehouse_manager": "Warehouse management",
  "nav.movements": "Movements",
  "nav.inventory": "Inventories",
  "nav.scanner": "Scanner",
  "nav.barcodes": "Barcodes",
  "nav.reports": "Reports",
  "nav.settings": "Settings",
  "nav.users": "Users",
  "nav.alerts": "Alerts",
  "nav.suppliers": "Suppliers",
  "nav.brands": "Brands",
  "nav.orders": "Orders",
  "auto.21cb337616": "All warehouses",
  "auto.318262fcf6": "New alert",
  "auto.b0b7cddbe9": "Critical alerts",
  "auto.e238b76e11": "Active alerts",
  "auto.b1a735917d": "Products OK",
  "auto.38cfc9c7f5": "Current status",
  "auto.a1230fab7a": "Alert rules",
  "auto.e30e2cb9aa": "Product",
  "auto.055c3b9395": "Warehouse",
  "auto.a1fa277792": "Type",
  "auto.3e8e07eb39": "Threshold",
  "auto.b7c0fdcea6": "Current qty",
  "auto.87a831bc99": "Status",
  "auto.06df33001c": "Actions",
  "auto.194eef0e3d": "Label generator",
  "auto.c313d6dc96": "Select products, choose a style + format, preview and print.",
  "auto.7ce1f3fdf2": "Clear",
  "auto.94c48b9ef5": "Export PDF",
  "auto.943021b255": "Print",
  "auto.e06ff32467": "🎨 Style",
  "auto.2f7174f197": "📏 Format",
  "auto.a777aa1532": "🖼️ Options",
  "auto.2186767964": "🖼️ Image + Barcode",
  "auto.99e780809b": "Product visual + compact barcode",
  "auto.d46181e2a6": "📊 Barcode only",
  "auto.9ad7781b20": "Fast and readable printing",
  "auto.241ee90c1d": "🏷️ QR Code",
  "auto.1e813ad6bd": "Text/URL encoding or product payload",
  "auto.dd26d4798f": "📋 Full label",
  "auto.da652b69a5": "Image + info + barcode",
  "auto.966f80ae51": "Barcode format",
  "auto.db053df979": "CODE128",
  "auto.52eb5928a3": "EAN13",
  "auto.ed7ef6f38d": "Custom code (optional)",
  "auto.a8fe1a3b2f": "📄 A4 — sheet of 24",
  "auto.3ebf618916": "3 columns × 8 rows",
  "auto.dbde0d64d0": "🏷️ Avery L7160",
  "auto.da16c67df4": "63.5×38.1mm (3×7)",
  "auto.6507e11634": "📦 70×37mm",
  "auto.ee40c8a5ad": "3×8 (approx.)",
  "auto.f99b1a642e": "📦 105×37mm",
  "auto.8ace2ca182": "2 columns (approx.)",
  "auto.d3cbaa3e9e": "🎯 Custom",
  "auto.368b7fb41b": "Width/height + grid",
  "auto.505279d1db": "Width (mm)",
  "auto.5cd5426490": "Height (mm)",
  "auto.be920cea70": "Columns",
  "auto.1945ed4570": "Rows",
  "auto.af847154be": "Content",
  "auto.ca0dbad92a": "Code",
  "auto.be53a0541a": "Image",
  "auto.251040e9a0": "QR — custom text (optional)",
  "auto.a65da323a9": "📷 Scan a QR",
  "auto.9100e163bb": "Preview",
  "auto.00882b098c": "No selection",
  "auto.7159991d00": "📦 Product selection",
  "auto.bbbe4b9ce4": "All categories",
  "auto.0e520a1ffa": "Printing",
  "auto.7d206237f9": "Close",
  "auto.aa38fb6cd7": "Start printing",
  "auto.168a75f6c4": "window.SM_PAGE = 'barcodes';",
  "auto.2bef3061dc": "0 brand(s)",
  "auto.9aa58eb9b1": "New brand",
  "auto.a3e2b2eac8": "Brand",
  "auto.d3b02c902c": "Linked suppliers",
  "auto.88c61ac25a": "Products",
  "auto.793b746788": "Created on",
  "auto.d045fd5356": "Valuation by warehouse",
  "auto.2b335b2844": "Recent activity",
  "auto.b1beaad72e": "View all",
  "auto.b24e631664": "Manage",
  "auto.d167478c48": "Stock overview",
  "auto.91dbfff7a0": "Unit cost",
  "auto.debedfb449": "Value",
  "auto.f86f444e68": "Start an inventory",
  "auto.5eb62fda83": "Select a warehouse",
  "auto.8fa534403b": "Category (optional)",
  "auto.5bb4f30971": "Start",
  "auto.35723f9629": "History",
  "auto.54628887e8": "Total products",
  "auto.86bdb2b73d": "Validated",
  "auto.ffacbac836": "Discrepancies",
  "auto.439149be8b": "Pending",
  "auto.948505fb20": "Scanner",
  "auto.d12c3b0dcf": "Cancel",
  "auto.e1c50082af": "Validate inventory",
  "auto.18d925e4d5": "Add",
  "auto.754a3f71bd": "Theoretical stock",
  "auto.cdd262917a": "Counted",
  "auto.0dc60556d9": "Discrepancy",
  "auto.5104751360": "\" class=\"sidebar-link",
  "auto.354e62ea5b": "\" title=\"",
  "auto.d2766d9b56": "\" data-label=\"",
  "auto.19dd00a2a6": "\" class=\"header-btn header-alerts\">",
  "auto.d0976037d2": "Developed by",
  "auto.166ad53556": "KREMER Régis",
  "auto.1e8d587771": "&copy;",
  "auto.f83511a305": "MageStock",
  "auto.b61541208d": "Menu",
  "auto.3e75196365": "\" class=\"slide-item",
  "auto.59e7b5977f": "Sign out",
  "auto.99fb48ddce": "Title",
  "auto.121dc34a0d": "Barcodes",
  "auto.2cddd28fee": "window.SM_PAGE = '",
  "auto.d3794314a9": "'; window.SM_ROLE = '",
  "auto.3978edca6e": "'; window.USER_ROLE = '",
  "auto.ecdfac8b01": "'; window.CSRF_TOKEN = '",
  "auto.5cd9831e35": "'; document.addEventListener('DOMContentLoaded', ()=> App.init());",
  "auto.47b404afa4": "All types",
  "auto.e49ab34478": "Addition",
  "auto.772ae0b683": "Output",
  "auto.b0be74ed47": "Transfer",
  "auto.66c1fb3547": "Inventory",
  "auto.d0f84e00bb": "Entry",
  "auto.4cfc9c2fee": "Filters +",
  "auto.3f181e87bd": "Operator",
  "auto.532a44859a": "Site / Location",
  "auto.fed0b874ff": "PO / Reference",
  "auto.73d163bfa7": "Supplier",
  "auto.612eae5e7f": "0 movement(s)",
  "auto.60b1cf36a1": "Stock addition",
  "auto.6788c41f73": "Stock output",
  "auto.41c2e8aa4b": "Date / Time",
  "auto.27ce7f8b56": "Stock",
  "auto.c18c12d75b": "Reason / Site",
  "auto.3b0649c726": "Note",
  "auto.0945359809": "Document",
  "auto.153d913716": "Part",
  "auto.511924d443": "Page 1 / 1",
  "auto.292d37187f": "Previous",
  "auto.257a7b4c17": "Next",
  "auto.42895bd48e": "20 / page",
  "auto.1b6aabe1ed": "50 / page",
  "auto.74a0253db2": "100 / page",
  "auto.d60f3bbc79": "All brands",
  "auto.f813c866dd": "0 product(s)",
  "auto.aee5874ea5": "Stock entry",
  "auto.69cc8fa3c3": "New product",
  "auto.cac8eee4d8": "📂 Import CSV",
  "auto.8c6b7f2067": "Category",
  "auto.bc13813162": "Price",
  "auto.3c5f34af12": "12 / page",
  "auto.551635d5bd": "24 / page",
  "auto.154a663289": "48 / page",
  "auto.554522921a": "📦 Stock",
  "auto.4ecf2a7c1a": "📊 Valuation",
  "auto.1dc86dc039": "📈 Movements",
  "auto.7a98add9ae": "📉 Alerts",
  "auto.c53a63874f": "🏷️ Brands",
  "auto.1ce60d078c": "📊 Inventory discrepancies",
  "auto.c6c34fda97": "💰 Price history",
  "auto.fec8c371a7": "📦 Stock Report",
  "auto.50304dcf67": "🖨️ Print",
  "auto.360f889205": "📥 Export CSV",
  "auto.feec0f0326": "🏢 All warehouses",
  "auto.089490558f": "📦 All categories",
  "auto.9cbdde64e6": "🏷️ All brands",
  "auto.80343600a3": "⚠️ All thresholds",
  "auto.d3b1d82825": "Low stock only",
  "auto.173562e26f": "Normal stock",
  "auto.7a1206e827": "🔄 Reset",
  "auto.1f78ab905c": "Total units",
  "auto.6d2a66c81f": "Total value",
  "auto.e1ded249ca": "Low stock",
  "auto.894a31e48b": "Current stock",
  "auto.db19dd4050": "Min threshold",
  "auto.7660ba0d20": "Unit cost",
  "auto.796c5a9d55": "📊 Stock Valuation",
  "auto.5e2c9b7c0b": "Total stock value",
  "auto.95726adbb0": "Warehouses",
  "auto.3059d560a9": "Units",
  "auto.9b1acffafa": "Avg value/product",
  "auto.2083a88a18": "📈 Movement Report",
  "auto.42da2a07fe": "All types",
  "auto.ff0f4810b8": "Entries",
  "auto.c9a2bb2291": "Additions",
  "auto.4fc39f3ee2": "Outputs",
  "auto.7ebbd5c301": "Transfers",
  "auto.9d02934dab": "All warehouses",
  "auto.44749712db": "Date",
  "auto.1b27b371c9": "Quantity",
  "auto.f628ae7eac": "User",
  "auto.a530dc1ad2": "📉 Low Stock Alerts",
  "auto.d0e1705373": "⚠️ Priority",
  "auto.3e81dfbadd": "Deficit",
  "auto.004bf6c9a4": "Action",
  "auto.82b55b0cfc": "🏷️ Brand Report",
  "auto.e3d3e6972a": "Total stock",
  "auto.20a50f9498": "Suppliers",
  "auto.7a05a317f8": "📊 Inventory discrepancy report",
  "auto.a494117a99": "With discrepancy",
  "auto.15bd1cc7e9": "Discrepancy value",
  "auto.70a0ad141f": "Theoretical",
  "auto.5b95306754": "Qty discrepancy",
  "auto.7173ba9784": "Value discrepancy",
  "auto.ba1154f241": "Inventory date",
  "auto.65191f650c": "Click the tab to load",
  "auto.1097e12af1": "💰 Purchase price history",
  "auto.1cde1caea4": "All products",
  "auto.e02d1a9572": "Unit price",
  "auto.79cf6cf5a0": "Base price",
  "auto.c92101a214": "Select a product",
  "auto.274f5cdec9": "window.SM_PAGE = 'reports';",
  "auto.959b190c85": "Camera inactive",
  "auto.468f4252a6": "Enable camera",
  "auto.2d9361e513": "Stop",
  "auto.9e3272ea56": "QR Code",
  "auto.110420912f": "Product found",
  "auto.6ca9a16a57": "View product",
  "auto.3ed833a118": "+ Stock",
  "auto.6cb59842f7": "- Stock",
  "auto.de0b6a7cce": "Manual entry",
  "auto.3a8a7a8a2d": "Search",
  "auto.a31799d611": "Recent scans",
  "auto.1c3c733a59": "No recent scans",
  "auto.69fed99374": "Scanned codes will appear here",
  "auto.4aeb99590e": "General settings",
  "auto.c70d8f1160": "Company name",
  "auto.8e2a02bfc3": "SKU prefix",
  "auto.f58eb11abe": "Next SKU will be based on this prefix",
  "auto.aed88202e2": "Save",
  "auto.aa599a041b": "Backup & Restore",
  "auto.267166e23f": "Export backup",
  "auto.306d178741": "Import backup",
  "auto.5c21b459de": "Push Notifications",
  "auto.2ec16d5047": "Enable",
  "auto.3095c3e4f1": "Test",
  "auto.0944d1cb93": "Notification types:",
  "auto.2f1ebdf889": "📤 Stock outputs",
  "auto.cf1d483131": "📥 Stock entries",
  "auto.61bdca438f": "🔄 Warehouse transfers",
  "auto.ba836f3d98": "⚠️ Stock alerts (min/max reached)",
  "auto.614ffce03f": "📋 Completed inventories",
  "auto.104fa50318": "Danger zone",
  "auto.4f53516a3a": "These actions are irreversible. Be sure of what you are doing.",
  "auto.d9dcbeffaf": "Delete all products",
  "auto.2e6def894b": "Delete all movements",
  "auto.aba3cbc459": "DELETE EVERYTHING",
  "auto.b5fd93d382": "0 supplier(s)",
  "auto.ff5e5012cd": "New supplier",
  "auto.bbaff12800": "Contact",
  "auto.ce8ae9da5b": "Email",
  "auto.301dc874dc": "Phone",
  "auto.fc29e0aa3d": "Linked brands",
  "auto.1297ef5077": "Lead time",
  "auto.229eb04083": "Terms",
  "auto.4eeea5804e": "0 user(s)",
  "auto.c898411faf": "New user",
  "auto.c9437f7d5f": "Username",
  "auto.19772a94ff": "Role",
  "auto.212078f396": "Created on",
  "auto.f7f9943ba3": "Warehouse & Category management",
  "auto.e209935d37": "New warehouse",
  "auto.2a53fbe526": "window.SM_PAGE = 'warehouse-manager';",
  "auto.e5915f5f8b": "0 warehouse(s)",
  "auto.50d46c2f99": "Address",
  "auto.83f62264e3": "Categories",
  "btn.duplicate": "Duplicate",
  "btn.duplicate.tooltip": "Create a copy of this product",
  "sizes.type.none": "None (standard product)",
  "sizes.type.clothing": "Clothing (XS → 4XL)",
  "sizes.type.pants": "Pants / Trousers (EU 34 → 54)",
  "sizes.type.shoes": "Shoes (EU / UK / US)",
  "sizes.type.gloves": "Gloves (6 → 12)",
  "sizes.type.headwear": "Headwear / Helmet (S → XL)",
  "sizes.type.eyewear": "Eyewear / Accessory (S → L)",
  "sizes.type.baby": "Baby / Kids (0M → 16Y)",
  "sizes.clothing": "XS,S,M,L,XL,XXL,3XL,4XL",
  "sizes.pants.eu": "34,36,38,40,42,44,46,48,50,52,54",
  "sizes.pants.uk": "24,26,28,30,32,34,36,38,40,42",
  "sizes.pants.us": "24,26,28,30,32,34,36,38,40,42",
  "sizes.shoes.eu": "36,37,38,39,40,41,42,43,44,45,46,47,48",
  "sizes.shoes.uk": "3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8,8.5,9,9.5,10,10.5,11,11.5,12,13",
  "sizes.shoes.us": "4,4.5,5,5.5,6,6.5,7,7.5,8,8.5,9,9.5,10,10.5,11,11.5,12,12.5,13,14",
  "sizes.gloves": "6,7,8,9,10,11,12",
  "sizes.headwear": "S,M,L,XL,One size",
  "sizes.eyewear": "One size,S,M,L",
  "sizes.baby": "0M,3M,6M,9M,12M,18M,24M,2Y,3Y,4Y,5Y,6Y,8Y,10Y,12Y,14Y,16Y",
  "sizes.norm.eu": "EU (Europe)",
  "sizes.norm.uk": "UK (United Kingdom)",
  "sizes.norm.us": "US (United States)",
  "sizes.label.sizeType": "Sizes & Variants",
  "sizes.label.sizeNorm": "Size standard",
  "sizes.label.selectSizes": "Select sizes to create",
  "sizes.label.generateVariants": "Generate variants",
  "sizes.label.variantsWillCreate": "variant(s) will be created",
  "sizes.label.parentProduct": "Parent product",
  "sizes.label.size": "Size",
  "sizes.label.allSizes": "All sizes",
  "settings.country.label": "Company country",
  "settings.country.hint": "The country is used as an administrative reference. It never changes stored amounts.",
  "settings.locale.label": "Regional format",
  "settings.locale.hint": "In automatic mode, numbers and dates follow each user's language.",
  "settings.locale.auto": "Automatic based on language",
  "settings.currency.label": "Accounting currency",
  "settings.currency.hint": "This currency applies to prices, orders, weighted average costs and valuations.",
  "settings.currency.warning": "Changing the currency only changes the displayed unit. MageStock does not convert financial values already stored.",
  "settings.preview.label": "Format preview",
  "nav.kits": "Kits",
  "nav.reservations": "Reservations",
  "nav.locations": "Locations",
  "nav.plans": "Plans",
  "nav.analytics": "Analytics",
  "nav.help": "Help",
  "nav.more": "More",
  "nav.logout": "Sign out",
  "nav.section.operations": "Operations",
  "nav.section.organization": "Organization",
  "nav.section.monitoring": "Monitoring & control",
  "nav.section.administration": "Administration",
  "page.dashboard": "Dashboard",
  "page.products": "Products",
  "page.warehouses": "Warehouses",
  "page.movements": "Movements",
  "page.inventory": "Inventories",
  "page.scanner": "Scanner",
  "page.barcodes": "Barcodes",
  "page.reports": "Reports",
  "page.settings": "Settings",
  "page.users": "Users",
  "page.alerts": "Alerts",
  "page.suppliers": "Suppliers",
  "page.brands": "Brands",
  "page.orders": "Purchase orders",
  "page.locations": "Locations",
  "page.lots": "Lots",
  "page.kits": "Kits",
  "page.reservations": "Reservations",
  "page.analytics": "Analytics",
  "page.warehouse_manager": "Warehouse management",
  "page.plans": "Location plans",
  "page.plans_edit": "Edit plan",
  "page.help": "Help",
  "shell.menu.toggle": "Open/close menu",
  "shell.menu.open": "Open menu",
  "shell.menu.close": "Close menu",
  "shell.language": "Language",
  "shell.theme.change": "Change theme",
  "shell.theme.light": "Switch to light theme",
  "shell.theme.dark": "Switch to dark theme",
  "shell.role.admin": "Administrator",
  "shell.role.user": "User",
  "shell.logout": "Sign out",
  "shell.footer.developed_by": "Developed by",
  "shell.footer.license": "User licence",
  "shell.modal.title": "Title",
  "shell.pwa.title": "Install MageStock",
  "shell.pwa.text": "Add MageStock as an app on this device. The instructions adapt to your browser.",
  "shell.pwa.install": "Install",
  "shell.pwa.dismiss": "Hide",
  "shell.print.barcodes": "Barcodes",
  "shell.print.print": "Print",
  "shell.print.close": "Close",
  "shell.alerts": "Alerts",
  "login.page_title": "Sign in",
  "login.meta_description": "MageStock sign-in — multi-warehouse stock management.",
  "login.tagline": "Stock management • MageStock",
  "login.submit": "Sign in",
  "login.language": "Language",
  "login.theme.light": "Switch to light theme",
  "login.theme.dark": "Switch to dark theme",
  "login.logo_alt": "{company} — logo",
  "login.footer": "© {year} {company} — by KREMER Régis",
  "login.error.rate_limit": "Too many sign-in attempts. Please wait 5 minutes.",
  "login.error.users_missing": "The data/users.json file cannot be found on this server.",
  "login.error.users_unreadable": "The data/users.json file exists, but PHP cannot read it. Check the permissions on the data/ folder and users.json file.",
  "login.error.users_empty": "The data/users.json file is empty or unreadable.",
  "login.error.users_invalid_json": "The data/users.json file is not valid JSON: {error}",
  "login.error.invalid_credentials": "Incorrect credentials or disabled account.",
  "dashboard.greeting.morning": "Good morning",
  "dashboard.greeting.afternoon": "Good afternoon",
  "dashboard.greeting.evening": "Good evening",
  "dashboard.shortcut.scanner": "Scanner",
  "dashboard.shortcut.movement": "Movement",
  "dashboard.shortcut.inventory": "Inventory",
  "dashboard.shortcut.orders": "Orders",
  "dashboard.chart.movements_14_days": "Movements (14 days)",
  "dashboard.chart.valuation_by_warehouse": "Valuation by warehouse",
  "dashboard.section.recent_activity": "Recent activity",
  "dashboard.section.active_alerts": "Active alerts",
  "dashboard.action.view_all": "View all →",
  "dashboard.action.manage": "Manage →",
  "dashboard.kpi.products": "Products",
  "dashboard.kpi.units_in_stock": "Units in stock",
  "dashboard.kpi.stock_value": "Stock value",
  "dashboard.kpi.active_alerts": "Active alerts",
  "dashboard.kpi.pending_orders": "Orders in progress",
  "dashboard.kpi.warehouses": "Warehouses",
  "dashboard.chart.movements": "Movements",
  "dashboard.chart.value_currency": "Value ({currency})",
  "dashboard.warehouse_fallback": "Warehouse {id}",
  "dashboard.activity.none": "No activity",
  "dashboard.activity.title": "{name} — {type} ({quantity})",
  "dashboard.unit.short": "{value} units",
  "dashboard.movement.add": "Addition",
  "dashboard.movement.remove": "Removal",
  "dashboard.movement.transfer": "Transfer",
  "dashboard.movement.entry": "Receipt",
  "dashboard.movement.inventory": "Inventory",
  "dashboard.pagination.previous": "◀ Previous",
  "dashboard.pagination.page": "Page {current} / {total}",
  "dashboard.pagination.next": "Next ▶",
  "dashboard.alerts.all_ok": "Everything is in order",
  "dashboard.alerts.badge_min": "↓ MIN",
  "dashboard.alerts.badge_max": "↑ MAX",
  "dashboard.alerts.stock_detail": "Stock: <strong>{qty}</strong> / threshold <strong>{threshold}</strong>",
  "date.weekday.0": "Sunday",
  "date.weekday.1": "Monday",
  "date.weekday.2": "Tuesday",
  "date.weekday.3": "Wednesday",
  "date.weekday.4": "Thursday",
  "date.weekday.5": "Friday",
  "date.weekday.6": "Saturday",
  "date.month.1": "January",
  "date.month.2": "February",
  "date.month.3": "March",
  "date.month.4": "April",
  "date.month.5": "May",
  "date.month.6": "June",
  "date.month.7": "July",
  "date.month.8": "August",
  "date.month.9": "September",
  "date.month.10": "October",
  "date.month.11": "November",
  "date.month.12": "December",
  "date.long": "{weekday}, {day} {month} {year}",
  "shell.meta_description": "MageStock — multi-warehouse stock management, scanning, movements, inventories and alerts.",
  "shell.scroll_top": "Back to top",
  "shell.role.storekeeper": "Storekeeper",
  "warehouse.manager.heading": "Warehouse management",
  "warehouse.manager.intro": "Create warehouses, enter their information and organize their categories.",
  "warehouse.manager.new": "New warehouse",
  "warehouse.manager.load_error": "Unable to load warehouses.",
  "warehouse.manager.empty_title": "No warehouse",
  "warehouse.manager.empty_text": "Create the first warehouse to organize stock.",
  "warehouse.manager.not_provided": "Not provided",
  "warehouse.manager.edit": "Edit warehouse",
  "warehouse.manager.add_category": "Add",
  "warehouse.manager.remove_category": "Remove {category}",
  "warehouse.manager.address": "Address",
  "warehouse.manager.contact": "Contact",
  "warehouse.manager.capacity": "Maximum capacity",
  "warehouse.manager.indicators": "Warehouse indicators",
  "warehouse.manager.products": "Products",
  "warehouse.manager.categories": "Categories",
  "warehouse.manager.no_categories": "No category",
  "warehouse.manager.cancel": "Cancel",
  "warehouse.manager.confirm": "Confirm",
  "warehouse.manager.existing_categories": "{count} category/categories already exist in this warehouse.",
  "warehouse.manager.no_categories_defined": "No category has been defined yet.",
  "warehouse.manager.add_category_title": "Add a category — {warehouse}",
  "warehouse.manager.category_name": "Category name",
  "warehouse.manager.category_placeholder": "E.g. Vertical signage",
  "warehouse.manager.add": "Add",
  "warehouse.manager.category_required": "Category name is required.",
  "warehouse.manager.category_exists": "This category already exists in this warehouse.",
  "warehouse.manager.category_added": "Category added.",
  "warehouse.manager.category_add_error": "Unable to add the category.",
  "warehouse.manager.remove_category_title": "Remove category",
  "warehouse.manager.remove_category_question": "Remove “{category}” from “{warehouse}”? Products will keep their current label.",
  "warehouse.manager.remove": "Remove",
  "warehouse.manager.category_removed": "Category removed.",
  "warehouse.manager.category_remove_error": "Unable to remove the category.",
  "warehouse.manager.edit_title": "Edit warehouse",
  "warehouse.manager.new_title": "New warehouse",
  "warehouse.manager.name": "Name",
  "warehouse.manager.name_placeholder": "E.g. Main workshop",
  "warehouse.manager.address_placeholder": "Full address",
  "warehouse.manager.optional": "Optional",
  "warehouse.manager.contact_placeholder": "Warehouse manager",
  "warehouse.manager.notes": "Notes",
  "warehouse.manager.save": "Save",
  "warehouse.manager.create": "Create",
  "warehouse.manager.delete": "Delete",
  "warehouse.manager.name_required": "Name is required.",
  "warehouse.manager.updated": "Warehouse updated.",
  "warehouse.manager.created": "Warehouse created.",
  "warehouse.manager.save_error": "Unable to save.",
  "warehouse.manager.dep_products": "Products",
  "warehouse.manager.dep_stock": "Stock rows",
  "warehouse.manager.dep_movements": "Movements",
  "warehouse.manager.dep_inventories": "Inventories",
  "warehouse.manager.dep_orders": "Orders",
  "warehouse.manager.dep_locations": "Locations",
  "warehouse.manager.dep_plans": "Plans",
  "warehouse.manager.dep_alerts": "Alerts",
  "warehouse.manager.dep_reservations": "Reservations",
  "warehouse.manager.dep_users": "Users",
  "warehouse.manager.dep_ldap": "LDAP mappings",
  "warehouse.manager.delete_blocked_title": "Deletion blocked",
  "warehouse.manager.delete_blocked_text": "The warehouse “{warehouse}” is still in use. Reassign the items below before deleting it.",
  "warehouse.manager.close": "Close",
  "warehouse.manager.delete_products_notice": "{count} product(s) are currently assigned to this warehouse.",
  "warehouse.manager.delete_title": "Delete warehouse",
  "warehouse.manager.delete_question": "Permanently delete “{warehouse}”?",
  "warehouse.manager.deleted": "Warehouse deleted.",
  "warehouse.manager.delete_error": "Unable to delete the warehouse.",
  "update.analysis.baseline": "Migration baseline",
  "update.analysis.blocker": "Blocker",
  "update.analysis.corrections": "Corrections required before installation",
  "update.analysis.files": "Targeted files",
  "update.analysis.free_space": "Available space",
  "update.analysis.impossible": "Operation impossible.",
  "update.analysis.install_blocked": "Installation blocked",
  "update.analysis.installed": "Installed version",
  "update.analysis.legacy": "legacy",
  "update.analysis.migrations": "Declared migrations",
  "update.analysis.more_files": "other file(s)",
  "update.analysis.permissions": "Detected permissions: {mode}",
  "update.analysis.range": "{minimum} to {maximum}",
  "update.analysis.ready_text": "Signature, source range, files and permissions are valid. Installation still requires your confirmation.",
  "update.analysis.required_space": "Estimated space",
  "update.analysis.schema": "Schema",
  "update.analysis.server_ready": "Server ready",
  "update.analysis.signature": "Signature",
  "update.analysis.sources": "Accepted source versions",
  "update.analysis.target": "Target version",
  "update.analysis.type": "Type",
  "update.analysis.unknown": "Undetermined",
  "update.analysis.verified_package": "Official package verified",
  "update.code_version": "Code version",
  "update.installed_version": "Installed version",
  "update.kicker": "System administration",
  "update.title": "MageStock updates",
  "update.subtitle": "Find an official version, download its signed package, then confirm installation separately.",
  "update.loading": "Loading…",
  "update.working": "Processing…",
  "update.confirm.finalize_manual": "Finalize the manually deployed files?",
  "update.confirm.install": "Back up and install this update?",
  "update.confirm.rollback": "Restore the previous point?",
  "update.discovery.available_badge": "New version available",
  "update.discovery.checked": "Last check",
  "update.discovery.checking": "Checking the official catalog, signature and compatible versions…",
  "update.discovery.compatible_sources": "Compatible sources",
  "update.discovery.current": "No newer version is published on the stable channel.",
  "update.discovery.current_badge": "Current version",
  "update.discovery.description": "MageStock only contacts the official HTTPS domain, verifies the Ed25519 manifest and sends no business data.",
  "update.discovery.disk_blocked": "Insufficient disk space to download and prepare this package.",
  "update.discovery.download": "Download and analyze",
  "update.discovery.download_blocked": "Official package verified, but the server preflight blocks installation.",
  "update.discovery.download_ready": "Official package downloaded, verified and ready to install after confirmation.",
  "update.discovery.downloading": "Controlled download, SHA-256 verification and internal signature analysis…",
  "update.discovery.found": "A compatible official update is available.",
  "update.discovery.kicker": "Official catalog",
  "update.discovery.mandatory": "Important",
  "update.discovery.never_checked": "Not checked yet",
  "update.discovery.none": "MageStock already uses the latest published version.",
  "update.discovery.package": "Selected package",
  "update.discovery.privacy": "No user, product, stock, warehouse, LDAP setting, secret or installation identifier is sent.",
  "update.discovery.prompt": "Start a search to check the official stable channel.",
  "update.discovery.published": "Published",
  "update.discovery.release_notes": "View changes",
  "update.discovery.search": "Check for updates",
  "update.discovery.signature": "Trust",
  "update.discovery.size": "Size",
  "update.discovery.title": "Check MageKorp Hub for an update",
  "update.discovery.unavailable": "The official catalog cannot be reached. Manual import remains available.",
  "update.discovery.unavailable_badge": "Service unavailable",
  "update.discovery.verified": "Authenticated manifest, authorized origin and package compatible with this installation.",
  "update.discovery.version": "MageStock {version}",
  "update.history.empty": "No update recorded.",
  "update.history.title": "History",
  "update.install.running": "Final preflight and update in progress.",
  "update.install.success": "Update successful. Reloading…",
  "update.integrity.failed": "Some checks failed.",
  "update.integrity.ok": "Integrity validated.",
  "update.manual.analyze": "Analyze package",
  "update.manual.blocked": "Valid package, but installation is blocked by the listed permissions.",
  "update.manual.checking": "Checking signature, version compatibility, integrity and permissions…",
  "update.manual.description": "Keep this method when the server has no outbound Internet access. The ZIP undergoes exactly the same checks.",
  "update.manual.limit": "128 MB maximum",
  "update.manual.ready": "Package validated and server ready.",
  "update.manual.select": "Select an official ZIP",
  "update.manual.title": "Import an update manually",
  "update.notice.blocked": "The package is authentic, but the server cannot replace every file yet.",
  "update.notice.idle": "The system is ready. Remote discovery never starts installation automatically.",
  "update.notice.interrupted": "An interrupted update requires administrator action.",
  "update.notice.manual": "New files were detected. Finalize the update before resuming activity.",
  "update.notice.orphan": "An old state without an archive or backup was detected. Click Restore.",
  "update.notice.ready": "Signed package, compatible source version and file system ready.",
  "update.package.confirmation": "Installation never starts automatically. Administrator confirmation is always required.",
  "update.package.install": "Install update",
  "update.package.kicker": "Package ready",
  "update.package.recheck": "Recheck permissions",
  "update.package.source_manual": "Manual import",
  "update.package.source_remote": "Downloaded from MageKorp Hub",
  "update.package.title": "Official package analysis",
  "update.preflight.blocked": "Blockers remain.",
  "update.preflight.ready": "The server is now ready.",
  "update.preflight.running": "Checking permissions again…",
  "update.rollup.bridge": "Bridge",
  "update.rollup.bridge_desc": "An intermediate baseline remains possible for a structure that is too old.",
  "update.rollup.cumulative": "Cumulative",
  "update.rollup.cumulative_desc": "A range of source versions reaches the same target.",
  "update.rollup.description": "MageKorp selects the direct or cumulative package compatible with the installed version. MageStock then rechecks its internal signature, files, migrations and permissions.",
  "update.rollup.direct": "Direct rollup",
  "update.rollup.direct_desc": "One specific historical source reaches the target in one package.",
  "update.rollup.kicker": "Cumulative engine active",
  "update.rollup.note": "Remote discovery, download and analysis are automated. Installation always remains manual and confirmed.",
  "update.rollup.title": "An older installation can reach the target without applying every intermediate version",
  "update.system.finalize_manual": "Finalize manual deployment",
  "update.system.integrity": "Check integrity",
  "update.system.last_operation": "Last operation",
  "update.system.method": "Method",
  "update.system.package_mode": "Package mode",
  "update.system.resume": "Resume",
  "update.system.rollback": "Restore",
  "update.system.status": "Status",
  "update.system.target": "Target",
  "update.system.title": "System status",
  "update.method.manual_deploy": "Manual deployment",
  "update.method.recovery": "Recovery",
  "update.method.remote": "MageKorp Hub",
  "update.method.upload": "Manual import",
  "update.mode.bridge": "Compatibility bridge",
  "update.mode.cumulative": "Cumulative",
  "update.mode.distribution": "Full distribution",
  "update.mode.exact": "Direct",
  "update.status.backup_created": "Backup created",
  "update.status.files_replaced": "Files replaced",
  "update.status.health_check": "Health check",
  "update.status.inconsistent": "Inconsistent installation",
  "update.status.migrations_running": "Migrations running",
  "update.status.pending_manual": "Update to finalize",
  "update.status.preflight_failed": "Server not ready",
  "update.status.rollback_required": "Restore required",
  "update.status.staged": "Files staged",
  "update.status.up_to_date": "Up to date",
  "update.status.uploaded": "Package uploaded",
  "update.status.verified": "Package verified",
  "auth.brand.strapline": "Stocks · inventories · fieldwork",
  "auth.brand.version": "MageStock {version}",
  "auth.brand.hosted": "hosted by your organisation",
  "auth.password.toggle": "Show or hide the password",
  "login.error.session_expired": "Your session expired. Reload the page and try again.",
  "login.brand.lead": "Manage your stock, warehouses and field operations from one workspace.",
  "login.brand.point.access": "View available stock by warehouse and location",
  "login.brand.point.scope": "Run inventories and movements with guided workflows",
  "login.brand.point.security": "Use the unified scanner and field tools in one experience",
  "login.form.kicker": "Welcome",
  "login.form.title": "Access your workspace",
  "login.form.intro": "Enter the credentials supplied by your organisation. MageStock will direct you to the services available to your account.",
  "login.forgot_password": "Forgot your password?",
  "login.security_note": "Several incorrect attempts may temporarily suspend sign-in. Contact your administrator if you need help.",
  "recovery.meta_description": "Controlled MageStock password reset.",
  "recovery.page_title": "Reset password",
  "recovery.brand.strapline": "Account · access · security",
  "recovery.brand.lead": "Recover access to your MageStock workspace with a temporary token created by your administrator.",
  "recovery.brand.step.request.title": "Request a token",
  "recovery.brand.step.request.text": "Contact your administrator or internal support team.",
  "recovery.brand.step.expiry.title": "Use it before it expires",
  "recovery.brand.step.expiry.text": "The token is personal, time-limited and replaces any previous token.",
  "recovery.brand.step.sessions.title": "Session revocation",
  "recovery.brand.step.sessions.text": "After validation, all previous sign-ins are closed automatically.",
  "recovery.brand.notice": "MageStock never asks for your old password and does not store the new one in the browser.",
  "recovery.form.kicker": "Account security",
  "recovery.form.title": "Reset password",
  "recovery.form.intro": "Enter the token supplied by your administrator, then choose a password that meets every requirement.",
  "recovery.error.session_expired": "Your session expired. Reload the page and try again.",
  "recovery.error.rate_limit": "Too many attempts. Wait before trying again.",
  "recovery.error.password_mismatch": "The two passwords do not match.",
  "recovery.error.invalid_token": "The token is unknown, expired or already used.",
  "recovery.error.unavailable": "The recovery service is temporarily unavailable.",
  "recovery.success": "The password has been reset. All previous sessions have been closed.",
  "recovery.return_login": "Back to sign-in",
  "recovery.token.label": "Recovery token",
  "recovery.token.hint": "Paste the complete token without adding spaces. It can only be used once.",
  "recovery.password.label": "New password",
  "recovery.password_confirm.label": "Confirm password",
  "recovery.policy.kicker": "Required criteria",
  "recovery.policy.title": "Expected password",
  "recovery.policy.length": "Between 14 and 255 characters",
  "recovery.policy.lowercase": "At least one lowercase letter",
  "recovery.policy.uppercase": "At least one uppercase letter",
  "recovery.policy.number": "At least one number",
  "recovery.policy.symbol": "At least one symbol or punctuation mark",
  "recovery.policy.identity": "No sequence related to MageStock or the account",
  "recovery.policy.matches": "Both entries match",
  "recovery.policy.pending": "Enter a password to check the criteria.",
  "recovery.policy.valid": "All visible criteria are met.",
  "recovery.submit": "Reset and close previous sessions",
  "recovery.no_token.title": "Do you not have a token?",
  "recovery.no_token.text": "Only an authorised MageStock administrator can create a token. Ask them to open your account in Users and access.",
  "login.stage.aria": "Demonstration preview of MageStock stock operations",
  "login.stage.eyebrow": "Operational preview",
  "login.stage.warehouse": "Main warehouse",
  "login.stage.status": "Demonstration",
  "login.stage.products": "Available items",
  "login.stage.inventory": "Inventory in progress",
  "login.stage.inventory_status": "82% checked",
  "login.stage.alerts": "Low stock",
  "login.stage.alerts_value": "12 alerts",
  "login.stage.movement": "Latest movement",
  "login.stage.movement_value": "Transfer confirmed",
  "login.stage.destination": "North depot",
  "recovery.stage.aria": "Demonstration preview of MageStock account protection",
  "recovery.stage.eyebrow": "Account protection",
  "recovery.stage.account": "MageStock access",
  "recovery.stage.status": "Control active",
  "recovery.stage.token": "Temporary token",
  "recovery.stage.token_value": "Single use",
  "recovery.stage.sessions": "Sessions",
  "recovery.stage.sessions_value": "Automatic revocation",
  "recovery.stage.storage": "Storage",
  "recovery.stage.storage_value": "No plaintext secret",
  "recovery.stage.policy": "Password policy",
  "recovery.stage.policy_value": "Server-side enforcement",
  "recovery.stage.local": "Local account",
  "products.mobile.resources": "Documents and location",
  "products.mobile.datasheet": "Technical datasheet",
  "products.mobile.safety_sheet": "Safety data sheet",
  "products.mobile.document_unavailable": "Document unavailable",
  "products.mobile.plan": "View product on a plan",
  "products.mobile.plan_short": "Plan",
  "products.mobile.document_opening": "opening document",
  "products.mobile.create.show_steps": "View all 5 steps",
  "products.mobile.create.step_identity": "Identity",
  "products.mobile.create.step_classification": "Classification",
  "products.mobile.create.step_purchase": "Purchasing",
  "products.mobile.create.step_traceability": "Traceability",
  "products.mobile.create.step_review": "Review",
  "products.mobile.create.identity_more": "Additional information",
  "products.mobile.create.identity_more_help": "Additional EAN codes and description.",
  "products.mobile.create.image": "Product image",
  "products.mobile.create.image_help": "Optional photo or visual.",
  "products.mobile.create.storage": "Precise location",
  "products.mobile.create.storage_help": "Registered location or manual entry.",
  "products.mobile.create.purchase_more": "Price and supplier offers",
  "products.mobile.create.purchase_more_help": "Optional purchasing information.",
  "products.mobile.create.trace": "Traceability and thresholds",
  "products.mobile.create.trace_help": "Lots, expiry and safety stock.",
  "products.mobile.create.variants": "Variants and sizes",
  "products.mobile.create.variants_help": "Only for relevant products.",
  "products.mobile.create.documents": "Documents",
  "products.mobile.create.documents_help": "Technical and safety sheets.",
  "products.mobile.create.initial_stock": "Initial stock",
  "products.mobile.create.initial_stock_help": "Leave empty if stock will be entered later.",
  "shell.footer.magekorp_app": "a MageKorp web application",
  "shell.footer.contact": "Contact MageKorp"
}
