{
  "ai.identify.button": "Identify by camera",
  "ai.identify.camera_error": "Camera unavailable",
  "ai.identify.capture": "Capture",
  "ai.identify.close": "Close",
  "ai.identify.error": "Identification failed — scan or search instead",
  "ai.identify.no_match": "No match found",
  "ai.identify.retake": "Retake",
  "ai.identify.searching": "Identifying…",
  "ai.identify.suggested": "Not in catalog — suggested name:",
  "ai.identify.title": "Identify product",
  "app.name": "Universal Till",
  "auth.attribution": "Universal Till — a product of Task Runner Technology LTD",
  "auth.change_pin": "Change my PIN",
  "auth.change_pin.confirm": "Repeat new PIN",
  "auth.change_pin.current": "Current PIN",
  "auth.change_pin.help": "Prove it's you with your current PIN, then pick a new one (4–8 digits, not used by anyone else). You'll sign in again with the new PIN.",
  "auth.change_pin.new": "New PIN",
  "auth.change_pin.submit": "Change PIN",
  "auth.clear": "Clear",
  "auth.enter_pin": "Enter your PIN",
  "auth.error.invalid": "PIN not recognised",
  "auth.error.locked": "Too many attempts — wait 30 seconds",
  "auth.error.pin_format": "PIN must be 4–8 digits",
  "auth.error.pin_mismatch": "PINs do not match",
  "auth.lock": "Lock",
  "auth.setup.hint": "First start: choose the administrator PIN for this till.",
  "auth.setup.pin": "PIN",
  "auth.setup.pin_confirm": "Confirm PIN",
  "auth.setup.submit": "Save and sign in",
  "auth.setup.title": "Set up admin PIN",
  "auth.sign_in": "Sign in",
  "auth.tagline": "Free, offline-first point of sale",
  "auth.title": "Sign in",
  "basket.col.item": "Item",
  "basket.col.price": "Price",
  "basket.col.qty": "Qty",
  "basket.col.total": "Total",
  "basket.customer": "Customer",
  "basket.discount": "Discount",
  "basket.discount_hint": "Discount (minor units)",
  "basket.discount_short": "Disc.",
  "basket.empty": "No items",
  "basket.remove": "Remove",
  "basket.subtotal": "Subtotal",
  "basket.tax": "Tax",
  "basket.title": "Basket",
  "basket.total": "Total",
  "catalog.active": "Active",
  "catalog.attach_barcode": "Attach Barcode",
  "catalog.auto_if_blank": "auto if blank",
  "catalog.autofill": "Auto-fill",
  "catalog.autofill_failed": "Lookup unavailable — check the internet connection",
  "catalog.autofill_found": "Found — check the fields and set the price",
  "catalog.autofill_not_found": "Not found in the shared product databases — fill in manually",
  "catalog.autofill_placeholder": "Scan or type a barcode",
  "catalog.autofill_searching": "Looking up barcode…",
  "catalog.barcode": "Barcode",
  "catalog.barcodes": "Barcodes",
  "catalog.brand": "Brand",
  "catalog.category": "Category",
  "catalog.col.name": "Name",
  "catalog.col.price": "Price",
  "catalog.col.sku": "SKU",
  "catalog.col.tax": "Tax",
  "catalog.col.unit": "Unit",
  "catalog.create_item": "Create Item",
  "catalog.description": "Description",
  "catalog.image_types": "Image (PNG/JPEG)",
  "catalog.item_image": "Item image",
  "catalog.labels": "Print labels",
  "catalog.labels.copies": "Copies",
  "catalog.labels.done": "Labels sent to the printer",
  "catalog.labels.no_code": "This item has no barcode or SKU to print",
  "catalog.labels.no_item": "Pick an item first (click a row)",
  "catalog.labels.print": "Print labels",
  "catalog.new_item": "New Item",
  "catalog.pick_row": "click a row to pick",
  "catalog.plus_new": "+ New",
  "catalog.price_major": "Price (£)",
  "catalog.price_minor": "Price (minor units)",
  "catalog.primary": "Primary",
  "catalog.save_variant": "Save Variant",
  "catalog.search_placeholder": "Search items…",
  "catalog.sold_by_weight": "Sold by weight",
  "catalog.tax_code": "Tax code",
  "catalog.upload_image": "Upload Image",
  "catalog.variants": "Variants",
  "common.back": "Back",
  "common.cancel": "Cancel",
  "common.clear": "Clear",
  "common.done": "Done",
  "common.edit": "Edit",
  "common.loading": "Loading…",
  "common.submit": "Submit",
  "designer.add": "Add",
  "designer.add_button": "Add Button",
  "designer.buttons": "Buttons",
  "designer.code": "Code",
  "designer.empty": "No products yet.",
  "designer.label": "Label",
  "designer.no_matches": "No matches.",
  "designer.price": "Price (cents)",
  "designer.receipt.footer": "Footer message",
  "designer.receipt.header": "Header line",
  "designer.receipt.header_ph1": "12 High Street, London",
  "designer.receipt.header_ph2": "020 7946 0000",
  "designer.receipt.header_ph3": "VAT No. GB123456789",
  "designer.receipt.help": "Make the receipt yours. Everything you type shows in the preview immediately; nothing changes on real receipts until you press Save.",
  "designer.receipt.logo_help": "Upload your logo (PNG works best; simple black-on-white art prints sharpest). It prints at the top of every receipt when the logo box below is ticked.",
  "designer.receipt.logo_invalid": "that file could not be read as an image",
  "designer.receipt.logo_remove": "Remove logo",
  "designer.receipt.logo_removed": "Logo removed",
  "designer.receipt.logo_saved": "Logo saved — print a test receipt to check it",
  "designer.receipt.logo_title": "Logo",
  "designer.receipt.logo_upload": "Upload logo",
  "designer.receipt.preview": "Preview",
  "designer.receipt.save": "Save design",
  "designer.receipt.saved": "Design saved — every new receipt uses it",
  "designer.receipt.show_barcode": "Show the receipt barcode (needed for scan-to-refund)",
  "designer.receipt.show_logo": "Print the logo at the top",
  "designer.receipt.show_sku": "Show item codes (SKU)",
  "designer.receipt.show_tax": "Show subtotal and tax lines",
  "designer.receipt.title": "Receipt designer",
  "designer.reorder_hint": "Drag tiles to set the order cashiers see on the sale screen.",
  "designer.search_placeholder": "Search items (name, SKU, barcode)",
  "designer.search_title": "Search items to add as shortcuts",
  "designer.title": "Till Designer",
  "help.faq_entry": "FAQ Plugin",
  "help.guide.hold.s1": "Tap Hold — the basket is saved and shown as a small button above the tabs.",
  "help.guide.hold.s2": "Serve the next person. When the first customer returns, tap their saved basket to continue.",
  "help.guide.hold.title": "5 · Customer forgot something?",
  "help.guide.intro": "Everything you need for a normal day, in small steps. You cannot break anything by trying — take your time.",
  "help.guide.language.s1": "Tap the language letters at the top of the screen (for example EN or FA) and pick yours. Everything changes at once.",
  "help.guide.language.title": "8 · Change the language",
  "help.guide.login.s1": "Turn the till on. When the number pad appears, type your PIN.",
  "help.guide.login.s2": "You are in! The big screen with product pictures is where you sell.",
  "help.guide.login.title": "1 · Start your day",
  "help.guide.noscan.s1": "Type the first letters of the product's name in the box at the top — it will find it.",
  "help.guide.noscan.s2": "Or tap the product's picture on the screen.",
  "help.guide.noscan.s3": "If your till has the camera button 📷, tap it, take a photo of the product, and pick the right match.",
  "help.guide.noscan.title": "6 · The barcode won't scan",
  "help.guide.pay.s1": "When everything is in the basket, look at the Pay area.",
  "help.guide.pay.s2": "Tap Cash if they pay cash, Card if they pay by card. That's it — the sale is done.",
  "help.guide.pay.s3": "Paying part cash, part card? Use the Split tab and add each payment.",
  "help.guide.pay.title": "3 · Take the money",
  "help.guide.receipt.s1": "After paying, the receipt appears. Tap Print if the customer wants a copy.",
  "help.guide.receipt.s2": "Tap New customer and you are ready for the next person.",
  "help.guide.receipt.title": "4 · Receipt and the next customer",
  "help.guide.sell.s1": "Point the scanner at the barcode — beep — the item appears in the basket on the left.",
  "help.guide.sell.s2": "No barcode? Tap the product's picture instead.",
  "help.guide.sell.s3": "You can also type the name or code in the box at the top and press Add.",
  "help.guide.sell.title": "2 · Sell something",
  "help.guide.shift.s1": "Go to Shifts in the menu and tap Open shift — count the cash in the drawer and enter it.",
  "help.guide.shift.s2": "At the end of the day, go back to Shifts, count the drawer again, and close the shift.",
  "help.guide.shift.s3": "The till shows any difference for you — no maths needed.",
  "help.guide.shift.title": "7 · Opening and closing the day",
  "help.guide.title": "How to use the till",
  "help.guide.trouble.s1": "Internet down? Keep selling — the till works without it and catches up later.",
  "help.guide.trouble.s2": "Tapped something by mistake? Nothing is lost — the basket stays until you finish or reset it.",
  "help.guide.trouble.s3": "Still stuck? Ask your manager, or open Help / FAQ in the menu for more answers.",
  "help.guide.trouble.title": "9 · Something looks wrong?",
  "help.plugins": "Plugins",
  "help.plugins_description": "Quick access to installed plugin entrypoints.",
  "help.title": "Help & Support",
  "hold.action": "Hold Sale",
  "hold.error.busy": "Finish or hold the current sale first",
  "hold.error.empty": "Nothing to hold — the basket is empty",
  "hold.error.failed": "Could not hold the sale",
  "hold.error.not_found": "Held sale not found",
  "hold.strip.title": "On hold:",
  "hold.toast.held": "Sale held — you can serve the next customer",
  "hold.toast.resumed": "Sale resumed",
  "import.created": "Imported",
  "import.detected": "Recognised format",
  "import.export_btn": "Export catalog (CSV)",
  "import.export_help": "Your data is yours: download the whole catalog — names, SKUs, barcodes, prices, categories and stock — as a CSV. The file imports straight back into any Universal Till (and into other systems that read CSV).",
  "import.export_title": "Export",
  "import.file": "Export file (CSV)",
  "import.help": "Bring your items over from another till: export your catalog there (Loyverse and Square exports are recognised automatically; any CSV with name and price columns works) and upload the file here. Preview first — nothing is saved until you press Import. Items whose barcode or SKU already exists are skipped, so importing twice is safe.",
  "import.import": "Import",
  "import.preview": "Preview",
  "import.ready": "ready to import",
  "import.skipped": "Skipped",
  "import.status": "Status",
  "import.title": "Import catalog",
  "import.with_issues": "will be skipped",
  "inventory.authorize_override": "Authorize Override",
  "inventory.cost_optional": "Cost (£, optional)",
  "inventory.current_qty": "Current qty",
  "inventory.empty": "No stock recorded yet",
  "inventory.item_placeholder": "Type item name or SKU",
  "inventory.location": "Location",
  "inventory.low_stock": "Low Stock",
  "inventory.manager_pin": "Manager PIN",
  "inventory.manager_pin_placeholder": "if signed in as cashier",
  "inventory.original_receipt": "Original receipt no.",
  "inventory.override_reason_placeholder": "why negative stock is needed",
  "inventory.override_title": "Manager override — negative stock",
  "inventory.process_return": "Process Return",
  "inventory.qty_placeholder": "+ receive / ± adjust",
  "inventory.quantity": "Quantity",
  "inventory.reason": "Reason",
  "inventory.reason_placeholder": "e.g. weekly delivery",
  "inventory.receive_adjust": "Receive / Adjust Stock",
  "inventory.reorder_at": "Reorder at",
  "inventory.requested_qty": "Requested qty",
  "inventory.return_note": "Returns the entire sale (line selection coming later).",
  "inventory.return_reason_placeholder": "customer reason",
  "inventory.return_title": "Process a return",
  "inventory.search_placeholder": "Search stock…",
  "inventory.stock_levels": "Stock Levels",
  "inventory.type": "Type",
  "inventory.type_adjustment": "Adjustment (count correction)",
  "inventory.type_receipt": "Stock receipt (goods in)",
  "invoice.already_issued": "Invoice already issued:",
  "invoice.bill_to": "Bill to",
  "invoice.credit_note": "Credit note",
  "invoice.credits": "credits invoice",
  "invoice.customer_address": "Address",
  "invoice.customer_name": "Customer / company",
  "invoice.customer_required": "customer name is required",
  "invoice.customer_vat_no": "Customer VAT no",
  "invoice.doc_credit_title": "CREDIT NOTE",
  "invoice.doc_tax_title": "TAX INVOICE",
  "invoice.doc_title": "INVOICE",
  "invoice.export_btn": "Export CSV",
  "invoice.filter": "Show",
  "invoice.for_sale": "for receipt",
  "invoice.from": "From",
  "invoice.gross": "Gross",
  "invoice.issue_btn": "Issue invoice",
  "invoice.issue_title": "Issue a VAT invoice",
  "invoice.issued": "Invoice issued:",
  "invoice.issued_col": "Issued",
  "invoice.list_title": "Invoices",
  "invoice.net": "Net",
  "invoice.none": "No invoices in this range yet.",
  "invoice.not_invoiceable": "only completed sales can be invoiced",
  "invoice.print": "Print",
  "invoice.range_total": "Range total (credit notes subtracted)",
  "invoice.sum_note": "Totals subtract credit notes — the range total is what the accountant books.",
  "invoice.tax": "VAT",
  "invoice.tax_title": "Tax Invoice",
  "invoice.title": "Invoice",
  "invoice.to": "To",
  "invoice.total": "TOTAL",
  "invoice.vat": "VAT",
  "invoice.vat_no": "VAT no",
  "journal.col.receipt": "Receipt",
  "journal.col.sync": "Sync",
  "journal.col.tender": "Tender",
  "journal.col.time": "Time",
  "journal.col.total": "Total",
  "journal.detail.change": "Change",
  "journal.detail.discount": "Discount",
  "journal.detail.item": "Item",
  "journal.detail.offline": "offline",
  "journal.detail.online": "online",
  "journal.detail.payments": "Payments",
  "journal.detail.price": "Price",
  "journal.detail.qty": "Qty",
  "journal.detail.sku": "SKU",
  "journal.detail.subtotal": "Subtotal",
  "journal.detail.sync": "sync",
  "journal.detail.tax": "Tax",
  "journal.detail.title": "Receipt",
  "journal.detail.total": "Total",
  "journal.detail.totals": "Totals",
  "journal.empty": "No sales yet.",
  "journal.reprint": "Print receipt",
  "journal.reprinted": "Receipt sent to the printer",
  "journal.title": "Journal",
  "kiosk.checkout_start": "New Sale",
  "kiosk.inventory": "Inventory",
  "kiosk.offline": "Offline mode",
  "kitchen.print.done": "Kitchen ticket sent",
  "kitchen.print.failed": "Kitchen ticket failed",
  "kitchen.print.no_receipt": "No order selected",
  "kitchen.print.off": "No kitchen printer configured",
  "menu.back_to_sale": "Back to sale",
  "nav.catalog": "Catalog",
  "nav.designer": "Designer",
  "nav.github": "GitHub",
  "nav.help": "Help/Support",
  "nav.home": "Home",
  "nav.inventory": "Inventory",
  "nav.journal": "Journal",
  "nav.menu": "Menu",
  "nav.plugins": "Plugins",
  "nav.reports": "Reports",
  "nav.settings": "Settings",
  "nav.shifts": "Shifts",
  "plugins.buttons.title": "Plugin actions",
  "plugins.current_version": "Current version:",
  "plugins.filter.all_tiers": "All Tiers",
  "plugins.filter.all_types": "All Types",
  "plugins.filter.developer": "Developer",
  "plugins.filter.developer_placeholder": "Filter by developer...",
  "plugins.filter.trust": "Trust Tier",
  "plugins.filter.type": "Plugin Type",
  "plugins.import.acknowledge": "I understand this plugin is manually imported and not marketplace-verified",
  "plugins.import.archive": "Plugin Archive (.tar.gz)",
  "plugins.import.check_integrity": "Checking file integrity (SHA256)",
  "plugins.import.check_manifest": "Scanning manifest for malicious permissions",
  "plugins.import.check_signature": "Verifying developer signature",
  "plugins.import.developer": "Developer:",
  "plugins.import.formats": "Supported formats: .tar.gz, .tar.sig (paired files required)",
  "plugins.import.info": "Plugin Information",
  "plugins.import.install": "Install Plugin",
  "plugins.import.installing": "Installing Plugin...",
  "plugins.import.name": "Name:",
  "plugins.import.next_verify": "Next: Verify Signature",
  "plugins.import.perm_network": "Network Access (payment.process)",
  "plugins.import.perm_sales": "Sales Data Read",
  "plugins.import.perm_transactions": "Transaction Read/Write",
  "plugins.import.permissions": "Permissions:",
  "plugins.import.signature": "Signature File (.tar.sig)",
  "plugins.import.success": "Plugin Installed Successfully",
  "plugins.import.success_note": "The plugin has been installed and is ready to use. You may need to restart the POS for changes to take effect.",
  "plugins.import.title": "Manual Plugin Import",
  "plugins.import.trust_tier": "Trust Tier:",
  "plugins.import.unverified": "Manual Import (Unverified)",
  "plugins.import.upload_title": "Upload a signed plugin archive",
  "plugins.import.verification": "Signature Verification",
  "plugins.import.verification_passed": "Verification Passed - Continue",
  "plugins.import.verifying": "Verifying plugin authenticity and integrity...",
  "plugins.import.version": "Version:",
  "plugins.import.warning": "Only install plugins from trusted sources. Manual imports bypass marketplace verification.",
  "plugins.install": "Install",
  "plugins.install.error.configuration": "Marketplace installation is not configured.",
  "plugins.install.error.incompatible": "This plugin is not compatible with this till.",
  "plugins.install.error.invalid_package": "The plugin package failed verification.",
  "plugins.install.error.invalid_request": "The install request was invalid.",
  "plugins.install.error.network": "Network error",
  "plugins.install.error.not_found": "The selected plugin was not found in the catalog.",
  "plugins.install.error.retryable": "Install failed. You can retry.",
  "plugins.install.modal.cancel": "Cancel",
  "plugins.install.modal.close": "Close",
  "plugins.install.modal.description": "Please wait while we download and install the plugin.",
  "plugins.install.modal.done": "Done",
  "plugins.install.modal.progress.complete": "Complete",
  "plugins.install.modal.progress.downloading": "Downloading...",
  "plugins.install.modal.progress.failed": "Failed",
  "plugins.install.modal.progress.fetching": "Fetching plugin details...",
  "plugins.install.modal.progress.initializing": "Initializing...",
  "plugins.install.modal.progress.installing": "Installing plugin...",
  "plugins.install.modal.progress.verifying": "Verifying checksum...",
  "plugins.install.modal.title": "Installing Plugin",
  "plugins.install.success": "Plugin installed successfully.",
  "plugins.manage.action.disable": "Disable",
  "plugins.manage.action.enable": "Enable",
  "plugins.manage.action.export": "Export",
  "plugins.manage.action.uninstall": "Uninstall",
  "plugins.manage.action.update": "Update",
  "plugins.manage.confirm_uninstall": "Uninstall",
  "plugins.manage.disabled": "Disabled",
  "plugins.manage.empty": "No plugins installed. Get some from the Plugin Store.",
  "plugins.manage.enabled": "Enabled",
  "plugins.manage.import_btn": "Import",
  "plugins.manage.import_help": "Side-load a plugin bundle (.tar.gz) — for offline provisioning or development.",
  "plugins.manage.import_title": "Import from file",
  "plugins.manage.search": "Search installed plugins",
  "plugins.manage.search_btn": "Search",
  "plugins.manage.store_link": "Open Plugin Store",
  "plugins.manage.title": "Plugins",
  "plugins.manage.update_available": "Update:",
  "plugins.none_found": "No plugins found",
  "plugins.none_found_hint": "Try adjusting your filters or refresh the catalog.",
  "plugins.retry": "Retry install",
  "plugins.settings.none": "This plugin has no settings.",
  "plugins.settings.save": "Save settings",
  "plugins.settings.saved": "Settings saved — applied immediately",
  "plugins.settings.title": "Settings",
  "plugins.status.active": "Active",
  "plugins.status.downloading": "Downloading",
  "plugins.status.failed": "Failed",
  "plugins.status.installing": "Installing",
  "plugins.status.requested": "Requested",
  "plugins.store.action.delete": "Delete download",
  "plugins.store.action.download": "Download",
  "plugins.store.action.install": "Install",
  "plugins.store.all": "All",
  "plugins.store.browse": "Browse by category",
  "plugins.store.catalog_error": "catalog unavailable (offline?)",
  "plugins.store.empty": "No plugins are approved for this store yet. Ask your merchant manager to approve plugins in the marketplace portal.",
  "plugins.store.filtered_note": "Showing plugins approved for your store by your merchant manager.",
  "plugins.store.manage_link": "Manage installed plugins",
  "plugins.store.no_matches": "No plugins match your search.",
  "plugins.store.none_available": "No plugins are available yet.",
  "plugins.store.offline": "Can't reach the plugin store right now — check the connection. Sales keep working offline; the store fills in when it's back.",
  "plugins.store.search_ph": "Search plugins…",
  "plugins.store.state.downloaded": "Downloaded",
  "plugins.store.state.failed": "Install failed",
  "plugins.store.state.installed": "Installed",
  "plugins.store.state.retryable": "you can retry",
  "plugins.store.title": "Plugin Store",
  "plugins.store.unfiltered_note": "Showing the full catalog (marketplace approval filter unavailable).",
  "plugins.tier.approved": "Approved",
  "plugins.tier.community": "Community",
  "plugins.tier.verified": "Verified",
  "plugins.type.auth": "Authentication",
  "plugins.type.background_job": "Background Job",
  "plugins.type.button": "Action",
  "plugins.type.customer_facing": "Customer-facing",
  "plugins.type.delivery": "Delivery",
  "plugins.type.device": "Device",
  "plugins.type.export": "Export",
  "plugins.type.hardware": "Hardware",
  "plugins.type.import": "Import",
  "plugins.type.integration": "Integration",
  "plugins.type.language": "Language pack",
  "plugins.type.notification": "Notification",
  "plugins.type.page": "Page",
  "plugins.type.payment": "Payment",
  "plugins.type.popup": "Popup",
  "plugins.type.pricing": "Pricing",
  "plugins.type.receipt_template": "Receipt template",
  "plugins.type.report": "Report",
  "plugins.type.scheduler": "Scheduler",
  "plugins.type.tax": "Tax",
  "plugins.type.theme": "Theme",
  "plugins.type_label": "Type:",
  "products.empty": "No products yet. Add some in Designer.",
  "products.title": "Products",
  "receipt.auto_reset": "Auto-reset in 60s...",
  "receipt.change": "Change",
  "receipt.legal.plugin_label": "Legal notice (%s v%s)",
  "receipt.new_customer": "New Customer",
  "receipt.payments": "Payments",
  "receipt.print": "Print",
  "receipt.printer.retry": "Retry print",
  "receipt.printer.unavailable": "Printer unavailable.",
  "receipt.return_for": "Return for",
  "receipt.title": "Receipt",
  "refund.col.refund_qty": "Refund qty",
  "refund.col.remaining": "Refundable",
  "refund.col.sold": "Sold",
  "refund.fully_refunded": "fully refunded",
  "refund.help": "Pick how much of each item to take back. Stock is returned to the shop, and the refund receipt references this sale. A manager PIN confirms the refund.",
  "refund.manager_pin": "Manager PIN",
  "refund.method": "Refund to",
  "refund.original_ref": "Refund of",
  "refund.returns_ref": "Refunds issued",
  "refund.submit": "Refund",
  "refund.title": "Refund",
  "reports.ask.button": "Ask",
  "reports.ask.error": "The assistant could not answer right now — check that the AI server is running and try again.",
  "reports.ask.hint": "Ask about sales, stock or till activity in plain words — answered by the shop's own AI, nothing leaves your hardware.",
  "reports.ask.placeholder": "e.g. What sold best this week?",
  "reports.ask.thinking": "Thinking…",
  "reports.ask.title": "Ask your till",
  "reports.by_day": "Sales by day",
  "reports.by_department": "Sales by department",
  "reports.by_method": "Payments by method",
  "reports.by_till": "Sales by till",
  "reports.day": "Day",
  "reports.days": "days",
  "reports.eod.auto": "Auto at",
  "reports.eod.done": "Report generated and printed",
  "reports.eod.exists": "Today's report already exists (see the list below)",
  "reports.eod.failed": "Report failed",
  "reports.eod.net": "Net",
  "reports.eod.run": "Run end-of-day report",
  "reports.eod.title": "End of day",
  "reports.none": "No data for this period",
  "reports.revenue": "Revenue",
  "reports.sales": "Sales",
  "reports.tax": "Tax",
  "reports.this_till": "This till",
  "reports.title": "Reports",
  "reports.today": "Today",
  "reports.top_items": "Top items",
  "reports.uncategorized": "Uncategorized",
  "settings.add_update": "Add / Update",
  "settings.all": "All Settings",
  "settings.backup.col_date": "Date",
  "settings.backup.col_file": "File",
  "settings.backup.col_size": "Size",
  "settings.backup.confirm_placeholder": "type RESTORE",
  "settings.backup.confirm_required": "Type RESTORE in the confirmation box to restore a backup",
  "settings.backup.done": "Backup created",
  "settings.backup.download": "Download",
  "settings.backup.failed": "Backup failed",
  "settings.backup.help": "The till saves a daily snapshot of its database automatically (newest 14 are kept). Download copies to a USB stick or another device — a backup that lives only on this machine cannot save you from a broken machine.",
  "settings.backup.none_yet": "No backups yet — the first daily snapshot happens a couple of minutes after the till starts.",
  "settings.backup.now": "Back up now",
  "settings.backup.restore": "Restore",
  "settings.backup.restore_note": "Restoring replaces ALL current data with the backup (the replaced data is kept in the backups folder). The till applies it on the next restart.",
  "settings.backup.staged": "Restore staged — restart the till to finish. The current data will be kept as a pre-restore backup.",
  "settings.backup.title": "Backups",
  "settings.currency.apply": "Apply",
  "settings.currency.help": "How prices are written on this till: symbol or word, its position, and whether the currency has decimal subunits (pound has 100 pence; rial and toman have none).",
  "settings.currency.title": "Currency",
  "settings.currency.warning": "Changing the currency does not convert existing prices — amounts stay as entered, only the label and decimals change.",
  "settings.data.catalog_cleanup_btn": "Remove",
  "settings.data.catalog_confirm_ph": "type CLEANUP",
  "settings.data.catalog_help": "Permanently remove inactive products that were never sold and have no stock history. Anything ever sold is kept for your records.",
  "settings.data.catalog_preview_btn": "Preview",
  "settings.data.catalog_title": "Catalog cleanup",
  "settings.data.confirm_ph": "type RESET",
  "settings.data.customer_search_ph": "search by name, phone or email",
  "settings.data.gdpr_help": "Delete a customer's personal details on request. Their sales are kept for your records but no longer show who they belonged to.",
  "settings.data.gdpr_title": "Erase a customer (GDPR)",
  "settings.data.help": "Clear the practice sales made while testing so you can start real trading from a clean slate. Your products, users and settings are kept.",
  "settings.data.reset_btn": "Clear transaction history",
  "settings.data.search_btn": "Search",
  "settings.data.title": "Data management",
  "settings.data.warn": "This permanently deletes ALL sales, shifts and invoices (not only test ones) and cannot be undone — it is a one-time reset before going live. The action itself is recorded in the audit log.",
  "settings.display.apply": "Apply",
  "settings.display.default": "default",
  "settings.display.help": "Scale the whole interface for this till's screen. Small touch panels: 70–80%. Large displays: 130%+.",
  "settings.display.large": "large displays",
  "settings.display.small": "small touch panels",
  "settings.display.tiny": "very small screens",
  "settings.display.title": "Display",
  "settings.enrol.benefits": "Registering is free and connects your till to the plugin store: install plugins with one tap and unlock cloud features as they arrive. It happens automatically when the till is online — or register now with the button below.",
  "settings.enrol.device": "Device ID",
  "settings.enrol.failed": "Registration failed — check the internet connection and try again.",
  "settings.enrol.not_registered": "This till is not registered yet.",
  "settings.enrol.registered": "This till is registered with the Universal Till marketplace.",
  "settings.enrol.retry": "Register now",
  "settings.enrol.store": "Store ID",
  "settings.enrol.title": "Till registration",
  "settings.idle_lock.apply": "Apply",
  "settings.idle_lock.help": "Lock the till when it sits unused. The operator signs back in with their PIN — the basket is kept exactly as it was.",
  "settings.idle_lock.minutes": "minutes",
  "settings.idle_lock.off": "Off",
  "settings.idle_lock.title": "Auto-lock",
  "settings.invoice.apply": "Save",
  "settings.invoice.help": "Fill in your business details to turn on VAT invoices: an Issue-invoice button appears on every receipt in the journal, numbering is sequential, and refunds of invoiced sales get a credit note automatically. Leave the name empty to turn the feature off.",
  "settings.invoice.seller_address": "Business address",
  "settings.invoice.seller_name": "Business name",
  "settings.invoice.seller_vat_no": "VAT number",
  "settings.invoice.title": "Invoices",
  "settings.key": "Key",
  "settings.printer.address": "Printer address",
  "settings.printer.apply": "Save printer",
  "settings.printer.auto": "Print automatically after each sale",
  "settings.printer.charset": "Characters",
  "settings.printer.device": "Device path",
  "settings.printer.help": "Print receipts silently on a thermal printer. Network mode talks to any WiFi/Ethernet ESC/POS printer; device mode writes to a plugged-in USB printer (e.g. /dev/usb/lp0 on Linux/Pi).",
  "settings.printer.kitchen_addr": "Kitchen printer",
  "settings.printer.kitchen_help": "A separate printer for kitchen tickets — network host:port (e.g. 192.168.1.60:9100) or a device path. Leave empty to turn kitchen printing off.",
  "settings.printer.mode": "Connection",
  "settings.printer.mode_device": "USB device",
  "settings.printer.mode_network": "Network (IP)",
  "settings.printer.mode_off": "Off",
  "settings.printer.test": "Print test receipt",
  "settings.printer.test_failed": "Print failed",
  "settings.printer.test_ok": "Test receipt sent — check the printer",
  "settings.printer.title": "Receipt printer",
  "settings.theme.apply": "Apply theme",
  "settings.theme.title": "Theme",
  "settings.title": "System Settings",
  "settings.update": "Update",
  "settings.value": "Value",
  "setup.back": "Back",
  "setup.country.ae": "United Arab Emirates",
  "setup.country.choose": "Choose a country…",
  "setup.country.de": "Germany",
  "setup.country.es": "Spain",
  "setup.country.fr": "France",
  "setup.country.gb": "United Kingdom",
  "setup.country.hint": "This sets your currency and tax — you can change everything later in Settings.",
  "setup.country.in": "India",
  "setup.country.ir": "Iran",
  "setup.country.it": "Italy",
  "setup.country.nl": "Netherlands",
  "setup.country.other": "Other",
  "setup.country.pk": "Pakistan",
  "setup.country.sa": "Saudi Arabia",
  "setup.country.title": "Where is your shop?",
  "setup.country.tr": "Türkiye",
  "setup.country.us": "United States",
  "setup.done.hint": "You can add products, tills and printers any time from the menu. Tap below to open the till.",
  "setup.done.title": "All set!",
  "setup.finish": "Start selling",
  "setup.join.help": "Already have a Universal Till in this shop? On that till open Settings → Tills → Show pairing code, then scan or paste the code here. This till will copy the whole shop — items, prices, staff PINs — and restart.",
  "setup.join.title": "Join an existing shop",
  "setup.language.title": "Choose your language",
  "setup.next": "Next",
  "setup.store.placeholder": "My Shop",
  "setup.store.title": "What is your shop called?",
  "setup.title": "Set up your till",
  "shifts.adjust": "Adjustment (±)",
  "shifts.adjust_type": "Type",
  "shifts.adjustment": "Cash adjustment / payout",
  "shifts.amount": "Amount",
  "shifts.amount_hint": "negative removes cash",
  "shifts.cashier": "Cashier",
  "shifts.close": "Close Shift",
  "shifts.closed_at": "Closed",
  "shifts.counted": "Counted",
  "shifts.counted_cash": "Counted cash",
  "shifts.current": "Current Shift",
  "shifts.default_register": "Default",
  "shifts.expected": "Expected",
  "shifts.formula": "Expected = opening cash + net cash payments + adjustments. Variance = counted − expected.",
  "shifts.formula_title": "How expected cash is calculated",
  "shifts.history": "History",
  "shifts.no_history": "No shifts yet",
  "shifts.none_open": "No open shift",
  "shifts.note": "Note",
  "shifts.note_hint": "end of shift notes",
  "shifts.open": "open",
  "shifts.open_new": "Open Shift",
  "shifts.open_since": "Shift open since",
  "shifts.opened_at": "Opened",
  "shifts.opening_cash": "Opening cash",
  "shifts.payout": "Payout (cash out)",
  "shifts.reason": "Reason",
  "shifts.record": "Record",
  "shifts.register": "Register",
  "shifts.title": "Shifts",
  "shifts.variance": "Variance",
  "status.offline": "Offline",
  "status.online": "Online",
  "status.register_till": "Register this till",
  "status.update_available": "Update available",
  "status.update_now": "Update now",
  "suggest.add": "Add to basket",
  "suggest.title": "Customers also buy",
  "sync.banner_open_primary": "Edit on the primary",
  "sync.banner_replica": "This till follows the primary till: catalog changes made here are overwritten by the shop catalog.",
  "sync.chip_following": "Connected to the primary till",
  "sync.chip_offline": "Primary till unreachable — sales are queued and will sync when it is back",
  "sync.chip_queued": "queued",
  "sync.chip_tills": "tills",
  "sync.chip_tills_title": "Enrolled tills — open the Tills page",
  "tender.add_payment": "Add Payment",
  "tender.amount": "Amount",
  "tender.card": "Card",
  "tender.cash": "Cash",
  "tender.change": "Change",
  "tender.complete_sale": "Complete Sale",
  "tender.fill_remaining": "Fill Remaining",
  "tender.method": "Method",
  "tender.new_customer": "New Customer",
  "tender.no_pending": "No pending payments yet.",
  "tender.reference": "Reference",
  "tender.reference_placeholder": "Last 4, auth code",
  "tender.scan.add": "Add",
  "tender.scan.barcode": "Barcode",
  "tender.scan.qty": "Qty",
  "tender.tab.pay": "Pay",
  "tender.tab.split": "Split",
  "tender.title": "Tender",
  "tills.add": "Add a second till",
  "tills.add_help": "On THIS till (the primary): show the code below, then scan or paste it on the new till. The code works once and expires in 10 minutes.",
  "tills.col_enrolled": "Enrolled",
  "tills.col_name": "Name",
  "tills.col_seen": "Last seen",
  "tills.enrolled": "Enrolled tills",
  "tills.join": "Join an existing shop",
  "tills.join_btn": "Join",
  "tills.join_code": "Pairing code",
  "tills.join_help": "On the NEW till: paste the pairing code from the primary till here.",
  "tills.join_name": "This till's name",
  "tills.joined": "Joined",
  "tills.none": "No other tills yet.",
  "tills.promote_btn": "Promote this till",
  "tills.promote_confirm": "Promote this till? It stops following the primary and becomes independent. Other tills must be paired to it again.",
  "tills.promote_confirm_hint": "type PROMOTE in the box to confirm",
  "tills.promote_confirm_label": "Type PROMOTE to confirm",
  "tills.promote_help": "If the primary till has died, promote this one: it stops syncing from the primary and becomes the shop's main till. Sales not yet pushed stay local. After promoting, pair the other tills to THIS till with a new QR code.",
  "tills.promote_not_replica": "this till is not following a primary",
  "tills.promote_title": "Promote this till",
  "tills.promoted": "Promoted — this till is now independent. Pair other tills from this page.",
  "tills.qr_expiry": "One-time use · expires in 10 minutes",
  "tills.qr_hint": "Scan with the new till, or copy this code:",
  "tills.restart_to_finish": "restart this till to finish",
  "tills.revoke": "Revoke",
  "tills.revoke_confirm": "Revoke this till? It will stop syncing until paired again.",
  "tills.show_qr": "Show pairing code",
  "tills.title": "Tills",
  "translations.col.key": "Key",
  "translations.col.reference": "Default text",
  "translations.col.value": "Your text",
  "translations.empty": "No matching texts",
  "translations.intro": "Edit any text the till shows — built-in and plugin strings — per language. Your edits win over the defaults; Reset returns a text to its original.",
  "translations.locale": "Language",
  "translations.reset": "Reset",
  "translations.save": "Save",
  "translations.search": "Search",
  "translations.source_missing": "not translated",
  "translations.source_plugin": "from plugin",
  "translations.title": "Translations",
  "users.activate": "Activate",
  "users.active": "active",
  "users.col.pin": "PIN",
  "users.col.role": "Role",
  "users.col.status": "Status",
  "users.col.user": "User",
  "users.deactivate": "Deactivate",
  "users.error.create": "Could not create user (username taken?)",
  "users.error.last_admin": "Cannot deactivate the last admin",
  "users.error.pin_taken": "That PIN is already in use",
  "users.error.required": "Username and display name are required",
  "users.error.role": "Invalid role",
  "users.inactive": "inactive",
  "users.new.display": "Display name",
  "users.new.hint": "Set a PIN after creating so the user can sign in.",
  "users.new.submit": "Create user",
  "users.new.title": "New user",
  "users.new.username": "Username",
  "users.new_pin": "new PIN",
  "users.pin_set": "set",
  "users.pin_unset": "not set",
  "users.role.admin": "admin",
  "users.role.cashier": "cashier",
  "users.role.manager": "manager",
  "users.set_pin": "Set PIN",
  "users.title": "Users"
}
