/** English — source strings (refresh always resets to this). */
window.I18N_LOCALES = window.I18N_LOCALES || {};
window.I18N_LOCALES.en = {
  'doc.titleHome': 'Home — Network Monitor',
  'doc.titleDevices': 'Device list — Network Monitor',
  'doc.titleMap': 'Network map — Network Monitor',
  'app.brand': 'Network Monitor',
  'nav.home': 'Home',
  'nav.devices': 'Devices',
  'nav.map': 'Map',
  'nav.calendar': 'Calendar',
  'nav.clock': 'Clock',
  'nav.theme': 'THEME',
  'theme.modern': 'Modern',
  'theme.retro': 'Retro',
  'theme.ariaToModern': 'Switch to modern theme',
  'theme.ariaToRetro': 'Switch to retro terminal theme',
  'nav.lang': 'Language',
  'doc.titleCalendar': 'World calendars — Network Monitor',
  'doc.titleClock': 'World clock — Network Monitor',
  'nav.coinAria': 'Logo and creator photo',
  'nav.creatorCoinAria': 'Creator photo and logo',
  'theme.green': 'THEME: GREEN',
  'theme.bw': 'THEME: B&W',
  'theme.ariaToBw': 'Switch to black and white theme',
  'theme.ariaToGreen': 'Switch to green and black theme',
  'boot.init': '> INITIALIZING NETWORK MONITOR...',
  'boot.load': '> LOADING INTERFACE OK',
  'boot.ready': '> READY',
  'hero.lead': 'See every device on your office or home Wi‑Fi and LAN. Real scan data — no guesses.',
  'home.creatorLinkAria': 'Creator portfolio — Mohammad Faizan Khan',
  'home.portfolio': 'Portfolio',
  'hero.openDevices': 'Open device list',
  'hero.openMap': 'Network map',
  'home.a01.title': 'Device list',
  'home.a01.desc': 'Scan Wi‑Fi + LAN, view IP, MAC, status, label each device.',
  'home.a01.go': 'Open →',
  'home.a02.title': 'Network map',
  'home.a02.desc': 'Left-to-right flowchart after each scan. Zoom and pan.',
  'home.a02.go': 'Open →',
  'home.a03.title': 'Download',
  'home.a03.desc': 'Full app for Mac/PC, starter scripts, guide, and CSV export.',
  'home.a03.go': 'Launchers & reports →',
  'home.tutorial.title': 'Quick tutorial',
  'home.tutorial.sub': 'Six steps — first time setup',
  'home.s01.title': 'Download & start',
  'home.s01.p': 'Download the full package, unzip it, then double-click START.command (Mac) or START.bat (Windows). Keep Terminal or the command window open.',
  'home.s01.fullTitle': 'Full app (recommended)',
  'home.s01.fullMac': 'Mac — office-net-monitor by MFK (.zip)',
  'home.s01.fullWin': 'Windows — office-net-monitor by MFK (.zip)',
  'home.s01.macGatekeeper':
    'Mac says “cannot verify START.command”? That is normal for downloaded apps. Right-click START.command → Open → Open again.',
  'home.s01.macGatekeeperFile': 'Mac security help (MAC-GATEKEEPER.txt)',
  'home.s01.starterTitle': 'Starter only',
  'home.s01.macCmd': 'Mac — START.command only',
  'home.s01.win': 'Windows — START.bat only',
  'home.s01.appTitle': 'Mac app',
  'home.s01.macApp': 'Mac — Network Monitor.app (.zip)',
  'home.s01.note': 'Requires Python 3. First run installs dependencies automatically.',
  'home.s01.githubZip': 'Or download the whole repo as ZIP from GitHub (Code → Download ZIP), unzip, then run START in that folder.',
  'home.s01.repoZip': 'GitHub — whole project (.zip)',
  'home.s06.csvHint': 'Sample CSV on the website. Start the app, scan, then export real devices from the Device list page.',
  'home.s06.csvSample': ' (sample on website — full export after you scan locally)',
  'home.s02.title': 'Open this site',
  'home.s02.p': 'Use http://127.0.0.1:5080/ — not a file from Finder.',
  'home.s03.title': 'Scan the network',
  'home.s03.p': 'On Device list, click Scan Wi‑Fi + LAN. Wait 1–2 min.',
  'home.s04.title': 'View the map',
  'home.s04.p': 'Open Network map to see Internet → gateway → devices.',
  'home.s05.title': 'Name devices',
  'home.s05.p': 'Type in the IT name column (printer, PC, room, etc.).',
  'home.s06.title': 'Download reports',
  'home.s06.guide': 'Guide (.txt)',
  'home.s06.csv': 'Devices (.csv)',
  'home.s06.starters': 'Mac / PC starters',
  'home.creator.title': 'About the creator',
  'home.creator.name': 'Mohammad Faizan Khan',
  'home.creator.role': 'I am the creator Mohammad Faizan Khan',
  'home.creator.p1': 'I started in technical and computer work, fixing problems and running systems. Later I led workforce and project operations in Saudi Arabia — hospitality, healthcare, and corporate sites across many locations.',
  'home.creator.p2': 'That path taught me end-to-end operations: people, timing, and clear communication. Today I focus on operations and project coordination — turning complex work into simple, repeatable systems.',
  'footer.note': 'Network Monitor — empty table cells mean “not detected”, not guessed.',
  'footer.disclaimer':
    'For learning and information only. Do not misuse. The creator (Mohammad Faizan Khan) is not responsible for misuse. Code is free to use however you want.',
  'footer.copy': '© Mohammad Faizan Khan',
  'devices.title': 'Device list',
  'devices.sub': 'Real scan data only — click Scan to update. Empty = not detected.',
  'devices.jump.devices': 'Devices',
  'devices.jump.activity': 'Activity',
  'devices.err': 'App not running.',
  'devices.errHint': 'Double-click START.command, then open',
  'devices.serverOnline': '● SERVER ONLINE',
  'devices.networks': 'Networks:',
  'devices.scanned': 'Scanned devices',
  'devices.scannedSub': 'Filter by link type or export CSV after a scan.',
  'devices.scan': 'Scan Wi‑Fi + LAN',
  'devices.filterAll': 'All',
  'devices.filterWifi': 'Wi‑Fi only',
  'devices.filterLan': 'LAN only',
  'devices.refresh': 'Refresh',
  'devices.csv': 'Download CSV',
  'devices.dnsRefresh': 'Refresh DNS sites',
  'devices.dnsTitle': 'Pi-hole or AdGuard DNS log',
  'devices.online': 'Online:',
  'devices.offline': 'Offline:',
  'devices.activity': 'Activity log',
  'devices.th.status': 'Status',
  'devices.th.name': 'Name',
  'devices.th.ip': 'IP',
  'devices.th.sites': 'Frequent sites (DNS)',
  'devices.th.type': 'Type',
  'devices.th.mac': 'MAC',
  'devices.th.hostname': 'Hostname',
  'devices.th.ports': 'Ports',
  'devices.th.ping': 'Ping',
  'devices.th.first': 'First seen',
  'devices.th.last': 'Last seen',
  'devices.th.label': 'IT name',
  'devices.clickScan': 'Click Scan Wi‑Fi + LAN',
  'devices.noDevices': 'No devices — click Scan',
  'devices.placeholderLabel': 'Label',
  'devices.statusOnline': '● ONLINE',
  'devices.statusOffline': '○ offline',
  'devices.loading': 'Loading…',
  'devices.refreshing': 'Refreshing…',
  'devices.updated': 'Updated',
  'devices.startCmd': 'Start START.command',
  'devices.scanning': 'Scanning…',
  'devices.done': 'Done',
  'devices.scanFailed': 'Scan failed',
  'devices.dnsLoading': 'Loading DNS logs…',
  'devices.dnsMatched': 'DNS: {n} device(s)',
  'devices.dnsNoMatch': 'No DNS log match',
  'devices.dnsFailed': 'DNS refresh failed',
  'devices.footer.home': 'Home',
  'devices.footer.map': 'Network map',
  'devices.footer.back': 'Back to devices',
  'devices.footer.creator': 'Creator:',
  'devices.wifiMac': 'This Mac Wi‑Fi',
  'devices.dnsSitesLine': 'DNS sites: {n} device(s) from {source} — domain names only, not page content.',
  'devices.dnsPiholeHint': 'Pi-hole try: {host} · set PIHOLE_API_KEY in START.command',
  'devices.sitesFrom': 'From',
  'devices.ms': 'ms',
  'cap.summaryLine': '{supported} full, {partial} partial, {unavailable} not collected here.',
  'map.controls': 'Map controls',
  'map.sub': 'Click any IP for scan fields from your last Wi‑Fi + LAN scan.',
  'map.flow': 'Flow →',
  'map.flowLine': 'Internet → Gateway → Wi‑Fi / LAN → devices',
  'map.zoomOut': 'Zoom out map at pointer',
  'map.zoomIn': 'Zoom in map at pointer',
  'map.fit': 'Fit whole map',
  'map.expand': 'Expand map',
  'map.exitExpand': 'Exit expand',
  'map.pdf': 'Download PDF',
  'map.scanRedraw': 'Scan & redraw',
  'map.refresh': 'Refresh map',
  'map.deviceList': 'Device list',
  'map.loading': 'Loading…',
  'map.loadingMap': 'Loading map…',
  'map.scanningNet': 'Scanning network (real data)…',
  'map.noScan': 'No scan data yet — scanning network (real data only)…',
  'map.startCmd': 'Start START.command first',
  'map.openUrl': 'Open http://127.0.0.1:5080/',
  'map.panelAria': 'Network map panel',
  'map.regionAria': 'Interactive network topology map',
  'map.zoomHelp': 'Drag with mouse to pan. Press plus or minus to zoom at the pointer. Hold Control and scroll to zoom at the pointer. Press zero to fit the whole map. Arrow keys pan. Click a node for device details.',
  'map.hint': 'Drag to pan · Ctrl+scroll or +/− zooms at pointer · 0 = fit · Click nodes for details',
  'map.details': 'Details',
  'map.close': 'Close',
  'map.gateway': 'Gateway:',
  'map.online': 'Online:',
  'map.offlineDb': 'Offline in DB:',
  'map.thisPc': 'This PC:',
  'map.gwPing': 'Gateway ping:',
  'map.netPing': 'Internet ping:',
  'map.upToDate': 'Up to date',
  'map.auto': 'auto every',
  'map.updated': 'Updated',
  'map.zoomAnnounce': 'Map zoom {pct} percent. Drag to pan. Ctrl and scroll to zoom at pointer.',
  'map.readyAnnounce': 'Network map ready. Fit view. Drag to pan. Ctrl+scroll zooms at pointer.',
  'map.noOnlineDevices': 'No online devices — run Scan on Device list (same Wi‑Fi/LAN).',
  'map.emptyRefresh': 'Map refreshes automatically after scans. Click Scan & redraw on this page.',
  'map.mapUpdated': ' · map updated',
  'map.autoCheck': ' · auto-check',
  'map.cap.loading': 'Loading…',
  'map.cap.startServer': 'Start the server to load this guide.',
  'map.detail.loading': 'Loading all available data…',
  'map.pdf.none': 'No map to export — scan first',
  'map.pdf.lib': 'PDF library loading… try again',
  'map.pdf.creating': 'Creating PDF…',
  'map.pdf.done': 'PDF downloaded',
  'map.pdf.fail': 'PDF failed — try Print on this page',
  'cap.yes': 'This app: yes',
  'cap.part': 'This app: partial',
  'cap.no': 'This app: no',
  'cap.th.type': 'Data type',
  'cap.th.app': 'What this app shows',
  'cap.th.router': 'Typical router / admin',
  'cap.noFake': 'No fake data.',
  'cap.depends': 'What you can collect depends on',
  'cap.https': 'Even with router DNS logging — HTTPS usually hides',
  'cap.loadGuide': 'Start the server to load this guide.',
  'calendar.title': 'World calendars',
  'clock.title': 'World clock',
  'clock.viewBoth': 'Digital + analog',
  'clock.viewDigital': 'Digital only',
  'clock.viewAnalog': 'Analog only',
  'clock.utcNow': 'UTC now: {time} · {date}',
  'clock.yourTime': 'Your time — {zone}',
  'footer.worldClock': 'World clock',
  'footer.worldCalendars': 'World calendars',
};
