/* Main View */
"main.mode.messages" = "Messages";
"main.mode.nodes" = "Nodes";
"main.empty.conversation.title" = "Select a conversation";
"main.empty.conversation.message" = "Choose a contact or channel to start messaging across the mesh.";
"main.empty.node.title" = "Select a node";
"main.empty.node.message" = "Inspect signal, routing path and location for nodes on your mesh.";
"main.toolbar.add" = "Add";
"main.toolbar.add.contact" = "Add Contact…";
"main.toolbar.add.channel" = "Add Channel…";
"main.toolbar.add.help" = "Add a contact or channel";
"main.toolbar.advertise" = "Advertise";
"main.toolbar.advertise.sent" = "Advertisement Sent";
"main.toolbar.advertise.help" = "Broadcast a flood advertisement so other nodes on the mesh can discover this device";
"main.toolbar.conversation.info" = "Conversation Info";
"main.toolbar.conversation.info.help" = "Show contact details, routing and key verification";
"main.toolbar.device" = "Device";
"main.toolbar.device.help" = "Device settings and statistics";
"main.connection.syncing" = "Syncing…";

/* Sidebar */
"sidebar.search.conversations" = "Search conversations";
"sidebar.search.nodes" = "Search nodes";
"sidebar.section.channels" = "Channels";
"sidebar.section.contacts" = "Contacts";
"sidebar.section.favorites" = "Favorites";
"sidebar.section.nodes" = "Nodes";
"sidebar.section.all.nodes" = "All Nodes";
"sidebar.empty.conversations.title" = "No conversations yet";
"sidebar.empty.conversations.message" = "Contacts appear here as nodes advertise on the mesh.";
"sidebar.empty.nodes.title" = "No nodes discovered";
"sidebar.empty.nodes.message" = "Repeaters and other infrastructure nodes appear here as they advertise on the mesh.";
"sidebar.favorite.add" = "Add to Favorites";
"sidebar.favorite.remove" = "Remove from Favorites";
"sidebar.channel.remove" = "Remove Channel";
"sidebar.channel.group" = "Group channel";

/* Chat View */
"chat.verify.remove" = "Remove Verification";
"chat.verify.mark" = "Mark as Verified";
"chat.verify.verified.help" = "Verified contact - public key confirmed";
"chat.verify.unverified.help" = "Verify this contact's public key";
"chat.conflict.message" = "You verified a different key for \"%@\". This may be a different node using the same name.";
"chat.conflict.verify.anyway" = "Verify Anyway";
"chat.empty.title" = "No messages yet";
"chat.empty.message" = "Send the first message to start the conversation.";
"chat.composer.placeholder" = "Message";
"chat.composer.limit" = "Single packet · %d char limit";
"chat.subtitle.direct" = "Direct message";
"chat.subtitle.direct.typed" = "Direct · %@";
"chat.subtitle.routed.typed" = "Routed · %@";
"chat.subtitle.channel" = "Channel";
"chat.message.delivery.sending" = "Sending…";
"chat.message.delivery.sent" = "Sent to mesh, awaiting acknowledgement";
"chat.message.delivery.delivered" = "Delivered and acknowledged";
"chat.message.delivery.failed" = "Delivery failed";
"chat.message.delivery.direct" = "Direct delivery (0 repeaters)";
"chat.message.delivery.relayed" = "%d repeater relayed this message";
"chat.message.delivery.relayed.plural" = "%d repeaters relayed this message";
"chat.message.delivery.roundtrip" = "Round-trip: %.2f s";
"chat.message.delivery.snr" = "SNR: %.1f dB";
"chat.message.delivery.timeout" = "Timeout in %.0f s";
"chat.message.delivery.show.report" = "Show mesh delivery report";

/* Connection View */
"connection.title" = "Meshcore Chat";
"connection.subtitle" = "Off-grid messaging over your mesh radio";
"connection.nearby.devices" = "Nearby Devices";
"connection.empty.scanning" = "Searching for MeshCore devices…\nMake sure your radio is powered on and nearby.";
"connection.empty.powered.off" = "Bluetooth is turned off.\nEnable it in System Settings to continue.";
"connection.empty.unauthorized" = "MeshCore needs Bluetooth permission.\nGrant access in System Settings › Privacy.";
"connection.empty.connecting" = "Connecting…";
"connection.empty.preparing" = "Preparing Bluetooth…";
"connection.button.scan" = "Scan";
"connection.button.stop" = "Stop";

/* Device View */
"device.title" = "Device";
"device.section.identity" = "Identity";
"device.section.radio" = "Radio";
"device.section.statistics" = "Statistics";
"device.field.name" = "Name";
"device.field.name.placeholder" = "Name";
"device.field.type" = "Type";
"device.field.public.key" = "Public key";
"device.field.model" = "Model";
"device.field.firmware" = "Firmware";
"device.field.battery" = "Battery";
"device.field.frequency" = "Frequency";
"device.field.bandwidth" = "Bandwidth";
"device.field.spreading.factor" = "Spreading factor";
"device.field.coding.rate" = "Coding rate";
"device.field.tx.power" = "TX Power";
"device.field.last.rssi" = "Last RSSI";
"device.field.last.snr" = "Last SNR";
"device.field.noise.floor" = "Noise floor";
"device.field.packets.sent" = "Packets sent";
"device.field.packets.received" = "Packets received";
"device.field.uptime" = "Uptime";
"device.button.save" = "Save";
"device.button.advertise.zero" = "Advertise (Zero-hop)";
"device.button.advertise.zero.sent" = "Zero-hop Sent";
"device.button.advertise.flood" = "Advertise (Flood)";
"device.button.advertise.flood.sent" = "Flood Sent";
"device.button.reboot" = "Reboot Device";
"device.button.disconnect" = "Disconnect";
"device.reboot.title" = "Reboot device?";
"device.reboot.message" = "The device will disconnect and restart.";
"device.reboot.confirm" = "Reboot";
"device.reboot.cancel" = "Cancel";
"device.loading" = "Loading…";

/* Node Detail View */
"node.detail.unnamed" = "Unnamed node";
"node.detail.routing" = "Routing";
"node.detail.routing.direct" = "Direct path";
"node.detail.routing.flood" = "Flood routed";
"node.detail.path.length" = "Path length";
"node.detail.path.length.value" = "%d hop";
"node.detail.path.length.value.plural" = "%d hops";
"node.detail.last.seen" = "Last seen";
"node.detail.button.message" = "Message";
"node.detail.button.reset.path" = "Reset Path";
"node.detail.button.share" = "Share";
"node.detail.button.favorite.add" = "Add to Favorites";
"node.detail.button.favorite.remove" = "Remove from Favorites";
"node.detail.button.remove" = "Remove Node";
"node.detail.marker.node" = "Node";

/* Chat Info Inspector */
"inspector.chat.info.unnamed" = "Unnamed node";
"inspector.chat.info.verified" = "Verified";
"inspector.chat.info.verified.message" = "You confirmed this key belongs to this contact.";
"inspector.chat.info.mismatch" = "Identity mismatch";
"inspector.chat.info.mismatch.message" = "A different key was previously verified for this name.";
"inspector.chat.info.not.verified" = "Not verified";
"inspector.chat.info.not.verified.message" = "Confirm this key out-of-band, then mark it verified.";
"inspector.chat.info.verify" = "Mark as Verified";
"inspector.chat.info.unverify" = "Remove Verification";

/* Add Contact Sheet */
"add.contact.title" = "Add Contact";
"add.contact.subtitle" = "Enter a name and the contact's 64-character public key.";
"add.contact.field.name" = "Name";
"add.contact.field.name.placeholder" = "e.g. Alice";
"add.contact.field.public.key" = "Public key";
"add.contact.field.public.key.placeholder" = "64 hex characters";
"add.contact.button.add" = "Add Contact";
"add.contact.button.cancel" = "Cancel";

/* Add Channel Sheet */
"add.channel.title" = "Add Channel";
"add.channel.subtitle" = "Create a new channel or join an existing one.";
"add.channel.type" = "Type";
"add.channel.mode.create.private" = "Create Private";
"add.channel.mode.join.private" = "Join Private";
"add.channel.mode.join.public" = "Join Public";
"add.channel.mode.join.hashtag" = "Join Hashtag";
"add.channel.field.name" = "Channel name";
"add.channel.field.name.placeholder" = "e.g. Team Chat";
"add.channel.field.key" = "Shared key";
"add.channel.field.key.placeholder" = "32 hex characters";
"add.channel.field.hashtag" = "Hashtag";
"add.channel.field.hashtag.placeholder" = "e.g. #portland";
"add.channel.create.message" = "A random 128-bit key will be generated. Share it with others so they can join.";
"add.channel.join.public.message" = "Joins the well-known public channel that all MeshCore devices share.";
"add.channel.join.hashtag.message" = "The channel key is derived from the hashtag, so anyone using the same hashtag can join.";
"add.channel.share.title" = "Share this key";
"add.channel.copy.help" = "Copy key";
"add.channel.button.create" = "Create Channel";
"add.channel.button.join" = "Join Channel";
"add.channel.button.done" = "Done";
"add.channel.button.cancel" = "Cancel";

/* Contact Types */
"contact.type.unknown" = "Unknown";
"contact.type.companion" = "Companion";
"contact.type.repeater" = "Repeater";
"contact.type.room" = "Room Server";
"contact.type.sensor" = "Sensor";

/* Channel */
"channel.default.name.public" = "Public";
"channel.default.name" = "Channel %d";

/* Common */
"common.cancel" = "Cancel";
"common.done" = "Done";
"common.save" = "Save";
"common.loading" = "Loading…";
