{
  "title": "UV-K5 V3 & UV-K1 Web Tool",
  "subtitle": "Firmware flasher and calibration manager via Web Serial API",
  "tabFlash": "Flash Firmware",
  "tabDump": "Dump Calib",
  "tabRestore": "Restore Calib",
  "labelBlVersion": "Bootloader Version (max 4 characters)",
  "labelFirmwareFile": "Firmware File (.bin)",
  "labelCalibFile": "Calibration Dump File (.dat)",
  "connectBtn": "Connect to serial port",
  "disconnectBtn": "Disconnect",
  "flashBtn": "Flash firmware",
  "dumpBtn": "Dump Calibration Data",
  "restoreBtn": "Restore Calibration Data",
  "logTitle": "Console",
  "logShow": "Show Console",
  "logHide": "Hide Console",
  "infoBox": "<strong>Note:</strong> This application requires Chrome/Edge/Opera. Make sure your radio is in <strong>DFU mode</strong> (flash mode) before flash.",
  "infoBoxDump": "<strong>Note:</strong> This application requires Chrome/Edge/Opera. Make sure your radio is in <strong>normal mode</strong> before dump or restore.",
  "fileNoFile": "No file selected",
  "fileChoose": "Choose file",
  "dumpDescription": "Extract calibration data from your UV-K5 V3 or UV-K1 device.",
  "downloadText": "Download calibration.dat",
  "firmwareLoaded": "Firmware loaded: {0}, size: {1} bytes",
  "calibLoaded": "Calibration file loaded: {0}, size: {1} bytes",
  "calibInvalidSize": "Invalid calibration file size. Expected 512 bytes, got {0} bytes",
  "connected": "Connected to serial port",
  "disconnected": "Disconnected",
  "error": "Error: {0}",
  "flashError": "Flash error: {0}",
  "establishing": "Establishing contact with device...",
  "waiting": "Waiting for device messages...",
  "uidLabel": "UID: {0}",
  "blVersionLabel": "BL Version: {0}",
  "blWarning": "⚠️ WARNING: BL version mismatch! Expected: {0}, Got: {1}",
  "deviceDetected": "Device detected",
  "handshake": "Handshake...",
  "sendingBlVersion": "Sending BL version...",
  "waitingStop": "Waiting for DEV_INFO messages to stop...",
  "devInfoIgnored": "DEV_INFO message ignored",
  "bufferCleaned": "Buffer cleaned, {0} bytes remaining",
  "handshakeComplete": "Handshake complete",
  "programming": "Programming {0} pages...",
  "pageOk": "Page {0}/{1} OK",
  "pageError": "Page {0}/{1}: error {2}",
  "pageTimeout": "Page {0}/{1}: timeout",
  "pageWrongResponse": "Page {0}/{1}: response for page {2}, ignored",
  "tooManyErrors": "Too many errors on page {0}",
  "tooManyTimeouts": "Too many timeouts on page {0}",
  "programmingComplete": "Programming complete! 👍🏼",
  "dumpingData": "Dumping calibration data...",
  "dumpProgress": "Dumping: {0}/{1} bytes ({2}%)",
  "dumpComplete": "Dump complete! 👍🏼",
  "dumpSaved": "Calibration data saved to file",
  "restoringData": "Restoring calibration data...",
  "restoreProgress": "Restoring: {0}/{1} bytes ({2}%)",
  "restoreComplete": "Restore complete! 👍🏼",
  "rebooting": "Rebooting device...",
  "rebootComplete": "Device rebooted",
  "readingEeprom": "Reading EEPROM at offset 0x{0}...",
  "writingEeprom": "Writing EEPROM at offset 0x{0}...",
  "eepromReadOk": "EEPROM read OK: offset 0x{0}, size {1}",
  "eepromWriteOk": "EEPROM write OK: offset 0x{0}",
  "eepromError": "EEPROM error at offset 0x{0}",
  "retry": "Retrying...",
  "startReading": "Starting continuous reading...",
  "rxData": "RX: {0} bytes, total buffer: {1}",
  "streamClosed": "Stream closed",
  "readError": "Read error: {0}",
  "readComplete": "Reading complete",
  "requestingPort": "Requesting serial port...",
  "openingPort": "Opening port...",
  "gettingReader": "Getting reader...",
  "gettingWriter": "Getting writer...",
  "startingRead": "Starting reading...",
  "waiting500ms": "Waiting 500ms...",
  "connectionError": "Connection error: {0}",
  "bufferEmpty": "Buffer emptied, waiting for data...",
  "bufferContains": "Buffer contains {0} bytes",
  "messageReceived": "Message received: type=0x{0}",
  "interval": "Interval: {0}ms, acc={1}",
  "invalidInterval": "Invalid interval ({0}ms), reset acc",
  "validMessage": "Valid message, acc={0}/5",
  "timeoutNoDevice": "Timeout: no device detected",
  "webSerialNotSupported": "⚠️ Web Serial API not supported. Use Chrome/Edge/Opera.",
  "loopError": "Loop read error: {0}",
  "baselineDeveloped": "developed by"
}