{
  "@@locale": "en",
  "nav.home": "Status",
  "status.title": "Status",
  "status.sip.connected": "Registered",
  "status.sip.connecting": "Connecting…",
  "status.sip.not_configured": "Not configured",
  "status.sip.since": "since {duration}",
  "status.sip.at": "at {host} as {user}",
  "status.sip.ext": "Internal number {n}",
  "status.sip.public_ip": "Public IP {ip}",
  "status.sip.nat_symmetric": "⚠️ symmetric NAT — audio needs a port-identical RTP port forward",
  "status.sip.stun": "STUN {server} · NAT: {nat}",
  "status.sip.setup_cta": "Set up telephony",
  "status.sip.redo_cta": "Reconfigure telephony",
  "status.token.set": "PhoneBlock token set",
  "status.token.missing": "No PhoneBlock token",
  "status.token.rejected": "Token Rejected",
  "status.token.rejected.msg": "PhoneBlock has rejected the token. Please generate a new token by clicking \"Request New.\"",
  "status.token.cta": "Create token",
  "status.token.test": "Test",
  "status.token.renew": "Renew",
  "status.token.testing": "Checking token…",
  "status.token.test.ok": "Token valid — PhoneBlock reachable.",
  "status.token.test.fail": "Token was rejected. Please request a new one.",
  "status.token.test.none": "No token configured.",
  "status.counters.total": "Total",
  "status.counters.spam": "Spam blocked",
  "status.counters.legit": "Legitimate",
  "status.counters.errors": "Errors",
  "status.info": "Firmware {fw} · IP {ip} · Uptime {uptime} · API latency {api}",
  "status.calls.title": "Recent calls",
  "status.calls.empty": "no calls yet",
  "status.calls.col.when": "When",
  "status.calls.col.number": "Number",
  "status.calls.col.name": "Name",
  "status.calls.col.verdict": "Verdict",
  "status.calls.clear": "Clear list",
  "status.calls.log_known": "Log known callers",
  "status.calls.log_known.help": "When off, calls from numbers in the address book and internal codes (**, *…) are not added to the list — counters above still update.",
  "status.calls.verdict.spam": "SPAM ({direct} direct, {range} range)",
  "status.calls.verdict.spam_plain": "SPAM",
  "status.calls.verdict.spam_list": "SPAM (blocklist, {scope})",
  "status.calls.verdict.suspect": "SPAM-SUSPECT ({direct} direct, {range} range)",
  "status.calls.verdict.blacklist": "SPAM (blacklist, {scope})",
  "status.calls.verdict.name_pattern": "SPAM (Name Pattern)",
  "status.calls.verdict.legitimate": "legitimate",
  "status.calls.verdict.unknown": "unknown",
  "status.calls.verdict.test": "Test",
  "status.calls.verdict.error": "Error",
  "status.calls.verdict.scope.number": "number",
  "status.calls.verdict.scope.range": "range",
  "region.title": "Language and Country",
  "region.lang": "Language",
  "region.country": "Country",
  "region.country.hint": "Phone numbers without a country code will be assigned this country. If the wrong country is listed here, PhoneBlock will not find a match for any calls. The language also applies to the answering machine message and the status email.",
  "status.thresholds.title": "Block thresholds",
  "status.thresholds.intro": "How many PhoneBlock votes the dongle requires before it traps a call. Direct votes weigh more than range votes, so each side has its own threshold.",
  "status.thresholds.direct": "Direct votes",
  "status.thresholds.direct.help": "Votes against the calling number itself. Default 4 — same value as the public PhoneBlock blocklist.",
  "status.thresholds.range": "Range votes",
  "status.thresholds.range.help": "Votes against neighbors in the same 10/100-block. Default 10. \"Off\" disables range-based blocking — only direct hits count then.",
  "status.thresholds.range.off": "Off",
  "status.thresholds.saved": "Saved.",
  "status.thresholds.invalid": "Invalid value.",
  "status.system.title": "System",
  "status.system.heap": "Free memory: {free} (minimum: {min}, largest block: {largest})",
  "status.system.fs": "Data partition: {free} free of {total} ({used} used)",
  "status.system.temp": "Chip temperature: {temp} °C",
  "status.system.col.task": "Task",
  "status.system.col.cpu": "CPU",
  "status.system.col.stack": "Stack free",
  "status.system.led_quiet": "Only light the LED when there is a problem",
  "status.system.led_quiet.hint": "Normally the LED stays lit while everything is fine. With this option it stays dark in normal operation and only lights or blinks when there is a problem (setup needed, not registered, token rejected, no connection). Handy in a living room.",
  "status.clock.now": "Time: {time}",
  "status.clock.pending": "Time: synchronising …",
  "status.time.today": "today {time}",
  "status.time.yesterday": "yesterday {time}",
  "status.tz.current": "Timezone: {tz}",
  "status.tz.apply": "Switch to {zone}",
  "status.tz.saved": "Timezone saved.",
  "status.errors.title": "Log",
  "status.errors.note": "The log is for diagnosing problems — not every entry is a real fault; many errors are transient and clear up on their own.",
  "status.errors.empty": "no entries",
  "status.errors.clear": "Clear log",
  "status.errors.capture_info": "Also log info messages",
  "status.errors.capture_info.hint": "For troubleshooting: also shows info messages (e.g. the server:port tried). Fills the log quickly — switch off again afterwards.",
  "status.auth.title": "Access protection",
  "status.auth.intro": "Protects the configuration UI in everyday operation. When you turn this on, the page asks for a \"Login with PhoneBlock\" before it shows call data or accepts setting changes.",
  "status.auth.disabled": "Access protection off — anyone on the LAN can reach the dashboard without logging in.",
  "status.auth.enabled": "Access protection on — signed in as your PhoneBlock user.",
  "status.auth.enabled.user": "Access protection on — signed in as {user}.",
  "status.auth.no_token": "Access protection needs a configured PhoneBlock token (see step 2 above). Only then can the dongle verify your identity against the server.",
  "status.auth.enable": "Enable access protection",
  "status.auth.disable": "Disable access protection",
  "status.auth.logout": "Sign out",
  "status.auth.activate.intro": "Before turning it on you are redirected to phoneblock.net to sign in — protection is only activated after a successful login. That way you cannot lock yourself out.",
  "login.title": "Sign in required",
  "login.intro": "Access protection on this dongle is active. Click below to sign in with your PhoneBlock account — you will briefly be redirected to phoneblock.net and sent back automatically.",
  "login.button": "Sign in with PhoneBlock",
  "login.remember": "Stay signed in",
  "login.remember.help": "Sets a cookie on this device so the dongle remembers you next time without bouncing through phoneblock.net. Only one browser at a time can be remembered.",
  "login.error.mismatch": "Sign-in failed — this PhoneBlock account is not the owner of this dongle.",
  "login.error.mismatch_named": "Sign-in failed — this dongle belongs to account {expected}, but you are signed in as a different user.",
  "login.error.rejected": "Sign-in failed — the PhoneBlock server did not confirm the identity.",
  "login.error.expired": "The sign-in expired or was invalid. Please try again.",
  "login.error.persist": "Activation could not be saved. Please try again.",
  "login.error.missing": "The response from phoneblock.net was incomplete. Please try again.",
  "login.error.generic": "Sign-in failed. Please try again.",
  "status.reset.title": "Factory reset",
  "status.reset.intro": "Erases all dongle settings (SIP credentials, PhoneBlock token, error history) and reboots.",
  "status.reset.button": "Reset configuration",
  "status.reset.confirm": "Really erase all dongle settings and reboot?",
  "status.reset.running": "Resetting — the dongle is rebooting now.",
  "status.reset.error": "Reset failed: {msg}",
  "status.fw.title": "Update firmware",
  "status.fw.intro": "Upload a new firmware binary or check the PhoneBlock CDN for updates. Either way, the new version is written to the inactive flash slot; after the reboot the dongle boots it and automatically rolls back on failure.",
  "status.fw.current": "Active partition: {partition} · Version {version}",
  "status.fw.pick": "Choose firmware (.bin)",
  "status.fw.submit": "Upload & reboot",
  "status.fw.confirm": "Install the new firmware and reboot the dongle?",
  "status.fw.uploading": "Uploading… {pct}%",
  "status.fw.done": "Firmware uploaded — dongle is rebooting. Please wait a moment, then reload this page.",
  "status.fw.error": "Error: {msg}",
  "status.fw.check": "Check for update",
  "status.fw.checking": "Checking for update…",
  "status.fw.check.none": "No newer version available (currently {version}).",
  "status.fw.check.found": "New version {version} is being installed…",
  "status.fw.check.installed": "Version {version} installed — dongle is rebooting. Please wait a moment, then reload this page.",
  "status.fw.check.error": "Check failed: {msg}",
  "status.fw.failed": "Last update to version {version} did not survive the boot — automatically rolled back. Auto-update will skip this version. Click \"Check for update\" to retry.",
  "status.fw.auto_update": "Daily auto-update",
  "status.fw.auto_update.help": "When on, the dongle checks the PhoneBlock CDN once a day for a newer version and installs it automatically. Manually uploading a firmware turns this off so the daily check does not overwrite your hand-picked build — turn it back on here once you want to follow the released stream again.",
  "status.fw.channel": "Update channel",
  "status.fw.channel.help": "Choose \"Beta\" to receive test builds early — for example to verify a bug you reported. \"Stable\" only delivers released versions. Once a tested version is finally released, you switch back to it automatically.",
  "status.fw.channel.stable": "Stable",
  "status.fw.channel.beta": "Beta (test builds)",
  "status.fw.crash_report": "Send crash reports to phoneblock.net",
  "status.fw.crash_report.help": "When the dongle reboots after a software panic, a memory snapshot is written to a reserved flash partition. With this option on, the dongle uploads the snapshot to phoneblock.net on the next boot — that helps us find and fix field bugs. Switch it off to suppress reports; stored snapshots are then erased locally instead of sent.",
  "status.mail.title": "Status emails",
  "status.mail.intro": "The dongle can email you status notifications directly — through your own email account. Enter the credentials of your mail provider; the dongle sends at most one notification per day.",
  "status.mail.host": "SMTP server",
  "status.mail.port": "Port (blank = automatic)",
  "status.mail.security": "Encryption",
  "status.mail.security.tls": "TLS (port 465)",
  "status.mail.security.starttls": "STARTTLS (port 587)",
  "status.mail.user": "User name (SMTP login)",
  "status.mail.pass": "Password",
  "status.mail.pass.keep": "stored — leave blank to keep it",
  "status.mail.from": "Sender (email, blank = user name)",
  "status.mail.to": "Recipients (email; separate multiple recipients with \";\")",
  "status.mail.help": "Tip: Gmail and Outlook usually need an \"app password\" (when two-factor sign-in is on), not your normal account password. Classic providers such as GMX, web.de or mailbox.org work with user name and password.",
  "status.mail.on_error": "Email on errors and crashes",
  "status.mail.on_error.help": "Sends one email a day when an error has appeared in the log since the last notification — this includes a reboot after a crash.",
  "status.mail.on_spam": "Email on blocked spam calls",
  "status.mail.on_spam.help": "Sends one email a day when spam calls have been blocked since the last notification.",
  "status.mail.on_update": "Email on firmware update",
  "status.mail.on_update.help": "Sends an email after the dongle has updated itself to a new firmware version — with a link to the changelog.",
  "status.mail.save": "Save",
  "status.mail.saved": "Saved.",
  "status.mail.test": "Send test email",
  "status.mail.testing": "Sending test email…",
  "status.mail.test.sent": "Sending test email — the result will appear in the log.",
  "status.mail.test.fail": "Sending failed — please check the settings and the log.",
  "status.mail.err.host": "SMTP server missing",
  "status.mail.err.user": "User name missing",
  "status.mail.err.pass": "Password missing",
  "status.mail.err.to": "Recipient invalid",
  "status.mail.err.to_many": "A maximum of {max} recipients is allowed",
  "status.mail.err.from": "Sender invalid",
  "status.mail.err.from_user": "Sender required — the user name is not an email address",
  "status.sync.title": "Blocklist sync",
  "status.sync.intro": "Numbers blocked at the handset (\"Block number\") are uploaded to the PhoneBlock database once a day and then removed from the Fritz!Box. The answer bot afterwards catches those callers for every PhoneBlock user.",
  "status.sync.unavailable": "Unavailable — requires a Fritz!Box setup.",
  "status.sync.never": "Not yet run.",
  "status.sync.last_ok": "Last run {ago} ago: {n} uploaded.",
  "status.sync.last_partial": "Last run {ago} ago: {n} uploaded, {f} failed.",
  "status.sync.last_fail": "Last run {ago} ago failed: {err}",
  "status.sync.running": "Sync in progress…",
  "status.sync.run_now": "Sync now",
  "status.sync.triggered": "Sync triggered.",
  "status.sync.busy": "Sync already running.",
  "status.sync.enable": "Enable blocklist sync",
  "status.sync.disabled": "Automatic sync disabled — manual run still available.",
  "status.localcache.title": "Blocklist cache",
  "status.localcache.intro": "Once a day the dongle downloads the current community blocklist plus your personal black/white list and stores them on internal flash. Incoming calls are then decided without an API round-trip — faster, and resilient to network glitches.",
  "status.localcache.enable": "Use blocklist cache",
  "status.localcache.enable.help": "Downloads the blocklist onto the dongle and decides calls locally. Off: every call is checked against the server directly — slower, and only possible with a working internet connection.",
  "status.localcache.disabled": "Disabled — calls are checked against the server directly.",
  "status.localcache.never": "Not downloaded yet.",
  "status.localcache.have": "{community} community entries, {personal} personal. Refreshed {ago} ago.",
  "status.localcache.last_fail": "Last download {ago} ago failed: {err}",
  "status.localcache.running": "Download in progress…",
  "status.localcache.wildcards": "Honour wildcard ranges",
  "status.localcache.wildcards.help": "Block whole number ranges (e.g. \"030 12 34 56*\") when the community has flagged them as spam, in addition to exact matches. Turn off to block only exact matches.",
  "status.localcache.run_now": "Download now",
  "status.localcache.triggered": "Download started.",
  "status.localcache.busy": "Download already running.",
  "status.names.title": "Name Filter",
  "status.names.intro": "If your FRITZ!Box finds the caller in a phone book, it will announce their name. If you use a third-party spam list (e.g., from Tellows), all entries will have a telltale name—you can mark these as spam here. The same applies to your own phone book if you give all unwanted callers the same name.",
  "status.names.patterns": "Names that indicate spam (separate with |)",
  "status.names.help": "A call is considered spam as soon as the reported name contains any of these strings; case does not matter. Example: “tellows|Score|SPAM.” You can find the caller’s name in the list of recent calls. Leaving this field blank disables the name filter.",
  "status.names.save": "Save Name Filter",
  "status.names.saved": "Name filter saved.",
  "status.names.failed": "Save failed.",
  "status.names.err.many": "A maximum of {max} names are allowed.",
  "status.names.err.long": "A name can be no more than {max} characters long.",
  "status.ann.title": "Spam announcement",
  "status.ann.default": "Built-in default announcement ({kb} KB).",
  "status.ann.custom": "Custom announcement ({kb} KB).",
  "status.ann.play": "Play current announcement",
  "status.ann.stop": "Stop",
  "status.ann.upload.label": "Upload your own (WAV/MP3/OGG, max. {s} s)",
  "status.ann.upload.pick": "Choose file",
  "status.ann.upload.submit": "Upload",
  "status.ann.upload.converting": "Converting…",
  "status.ann.upload.uploading": "Uploading…",
  "status.ann.upload.done": "Saved ({kb} KB).",
  "status.ann.upload.error": "Error: {msg}",
  "status.ann.upload.toolong": "Too long — maximum {s} seconds.",
  "status.ann.upload.decode_fail": "Could not decode the file.",
  "status.ann.reset.button": "Reset to default",
  "status.ann.reset.confirm": "Really discard the custom announcement?",
  "status.ann.accept_test": "Accept local test calls",
  "status.ann.accept_test.help": "When enabled, the dongle answers calls to internal Fritz!Box codes (**622, *21#, …) as spam — i.e. with the announcement and a hang-up. Lets you test the full call flow from another internal phone without reporting a real number to PhoneBlock.",
  "hero.title": "Setup",
  "hero.intro": "Two steps, then the dongle blocks spam calls automatically. Both need to be ticked before the device is ready.",
  "hero.step1.todo": "Register the dongle with your phone system",
  "hero.step1.done": "Telephony configured",
  "hero.step2.todo": "Connect to PhoneBlock — so the dongle knows what counts as spam",
  "hero.step2.done": "Connected to PhoneBlock",
  "hero.cta.sip": "Set up telephony",
  "hero.cta.token": "Connect PhoneBlock",
  "sip.entry.title": "Set up telephony",
  "sip.entry.intro": "Choose how the dongle registers with your phone system.",
  "sip.entry.fritzbox": "Fritz!Box (recommended)",
  "sip.entry.fritzbox.desc": "Automatic setup. The dongle registers itself as an IP phone.",
  "sip.entry.provider": "Other provider",
  "sip.entry.provider.desc": "Register directly with Telekom, Vodafone, 1&1, sipgate or easybell.",
  "sip.entry.manual": "Manual (expert)",
  "sip.entry.manual.desc": "Fill in all SIP fields yourself.",
  "sip.fb.title": "Fritz!Box setup",
  "sip.fb.intro": "Enter the Fritz!Box admin password once. It is not stored.",
  "sip.fb.host": "Fritz!Box (host or IP)",
  "sip.fb.user": "User",
  "sip.fb.user.hint": "(leave empty → Fritz!Box default user)",
  "sip.fb.pass": "Password",
  "sip.fb.submit": "Create extension",
  "sip.fb.working": "Creating extension (~2–5 s)…",
  "sip.fb.done": "Extension created — registration starting.",
  "sip.fb.done.withnum": "Extension created (internal number {n}) — registration starting.",
  "sip.fb.error": "Error: {msg}",
  "sip.fb.2fa.title": "Two-factor confirmation",
  "sip.fb.2fa.button": "press any button on the Fritz!Box",
  "sip.fb.2fa.dtmf": "dial {seq} on a connected phone",
  "sip.fb.2fa.instructions": "Please now {hints}.",
  "sip.fb.2fa.cancelled": "2FA cancelled.",
  "sip.fb.2fa.timeout": "Timed out. Please try again.",
  "sip.prov.title": "Choose provider",
  "sip.prov.intro": "Pick your provider; get the credentials from their customer portal. If your provider is not listed, use the manual configuration.",
  "sip.prov.provider": "Provider",
  "sip.prov.user": "SIP user / phone number",
  "sip.prov.pass": "Password",
  "sip.prov.submit": "Save credentials",
  "sip.prov.done": "Saved. Registration starting.",
  "sip.prov.error": "Error: {msg}",
  "sip.manual.title": "Manual configuration",
  "sip.manual.intro": "All SIP fields. Leaving the password blank means “unchanged”.",
  "sip.manual.host": "SIP registrar",
  "sip.manual.port": "SIP port",
  "sip.manual.port.hint": "Leave empty for auto via DNS-SRV or the transport default (5060 UDP/TCP, 5061 TLS).",
  "sip.manual.user": "SIP user",
  "sip.manual.pass": "SIP password",
  "sip.manual.pass.hint": "Leave empty = keep the stored password.",
  "sip.manual.anon": "Register without a password (anonymous)",
  "sip.manual.anon.hint": "Clears any stored password and registers without one — e.g. anonymous@t-online.de on Telekom.",
  "sip.manual.submit": "Save",
  "sip.manual.done": "Saved.",
  "sip.manual.error": "Error: {msg}",
  "sip.manual.advanced": "Advanced parameters",
  "sip.manual.transport": "Transport",
  "sip.manual.transport.hint": "UDP, TCP and TLS can be selected. TLS encrypts the connection and is recommended where the provider supports it. The voice audio itself is not yet encrypted.",
  "sip.manual.auth_user": "Auth user",
  "sip.manual.auth_user.hint": "Empty = use SIP user for auth. Telekom: e-mail address.",
  "sip.manual.outbound": "Outbound proxy",
  "sip.manual.outbound.hint": "Optional, format host[:port]. Empty = register via the registrar directly.",
  "sip.manual.realm": "Realm",
  "sip.manual.realm.hint": "Empty = take from the server challenge.",
  "sip.manual.stun": "STUN server",
  "sip.manual.stun.hint": "Optional, format host[:port]. Discovers the public RTP port for direct provider registration. Empty = off. Set by the provider preset (Telekom: stun.t-online.de:3478).",
  "sip.manual.srtp": "SRTP",
  "sip.manual.srtp.hint": "SRTP is negotiated automatically: media is encrypted whenever the provider offers it (e.g. Telekom), otherwise plain RTP (e.g. the Fritz!Box on the LAN).",
  "sip.manual.local_port": "Local SIP port",
  "sip.manual.local_port.hint": "Port the dongle receives SIP on (default 15060). Empty = default.",
  "sip.manual.rtp_port": "RTP port (audio)",
  "sip.manual.rtp_port.hint": "Port for the voice channel (default 16000). Empty = default.",
  "sip.manual.fwd.title": "Port forwarding for direct provider registration",
  "sip.manual.fwd.body": "If the dongle registers directly with the provider (instead of via a VoIP-capable router) and the provider only supports UDP, add one UDP forwarding each to the dongle in your router — port-identical (external port = internal port): {sip} (SIP) and {rtp} (RTP). The dongle detects its public IP automatically (shown in the status above); you do not need to enter it. This only works with a real (dedicated) public IPv4 — not behind DS-Lite/CGNAT (shared IPv4), where no port forwarding is possible; there only TCP/TLS helps, if the provider supports it.",
  "sip.manual.srtp.off": "off",
  "sip.manual.srtp.optional": "optional",
  "sip.manual.srtp.mandatory": "mandatory",
  "token.title": "Connect PhoneBlock",
  "token.intro": "The dongle queries the PhoneBlock database for every incoming call. For that it needs a token.",
  "token.how": "Clicking the button below sends you to phoneblock.net for a one-time login (Google, Facebook or account). You then return here with the token set.",
  "token.current.set": "A token is already configured. A new login will generate a new one.",
  "token.current.missing": "No token configured yet.",
  "token.submit": "Sign in to PhoneBlock",
  "back.status": "← back to status",
  "back.sip": "← back to the choice",
  "i18n.loading": "Translation is loading …",
  "i18n.unavailable": "Translation not available – default language is displayed.",
  "status.calls.add_contact": "Add to the Fritz!Box phone book",
  "status.phonebook.title": "Phone Book for New Contacts",
  "status.phonebook.intro": "Callers that the Fritz!Box doesn't recognize appear in the call log without a name. Use the + button next to them to add them as a contact in the Fritz!Box—after that, the phone will display the name, and the dongle will no longer query PhoneBlock about that number.",
  "status.phonebook.current": "New contacts are saved in “{name}”.",
  "status.phonebook.unset": "Not yet specified — you will be prompted when you first create it.",
  "status.phonebook.change": "Change",
  "status.phonebook.unavailable": "Not available — can only be used with Fritz!Box setup.",
  "status.phonebook.saved": "Saved.",
  "pb.dialog.title": "Create a contact in the Fritz!Box",
  "pb.dialog.intro": "The next time you call, the phone will display the name instead of the number. The contact remains in your Fritz!Box—it is not transferred to PhoneBlock.",
  "pb.dialog.name": "Name",
  "pb.dialog.type": "Type of Number",
  "pb.dialog.type.home": "Personal",
  "pb.dialog.type.mobile": "Mobile",
  "pb.dialog.type.work": "Business",
  "pb.dialog.type.fax_home": "Personal fax",
  "pb.dialog.type.fax_work": "Business Fax",
  "pb.dialog.vip": "Important Person (VIP)",
  "pb.dialog.book": "Phone Book",
  "pb.dialog.book.readonly": "{name} (synchronized — not writable)",
  "pb.dialog.pick": "In which phone book should the contact be added?",
  "pb.dialog.none_writable": "No writable phone book found.",
  "pb.dialog.save": "Create",
  "pb.dialog.cancel": "Cancel",
  "pb.dialog.working": "Creating...",
  "pb.dialog.done": "Contact created.",
  "pb.dialog.error.name": "Please enter a name.",
  "pb.dialog.error.number": "This number cannot be saved as a contact.",
  "pb.dialog.error.not_writable": "This phone book is being synchronized and cannot be edited. Please select another one.",
  "pb.dialog.error.no_fritzbox": "This is only possible with Fritz!Box setup.",
  "pb.dialog.error.unreachable": "The Fritz!Box isn't responding.",
  "pb.dialog.error.generic": "Failed: {msg}",
  "status.calls.add_contact.help": "Add a caller as a contact in the Fritz!Box phone book",
  "status.calls.report_spam": "Spam",
  "status.calls.report_spam.help": "Report this number as spam to PhoneBlock",
  "status.calls.whitelist": "Whitelist",
  "status.calls.whitelist.help": "Unblock this number",
  "whitelist.dialog.title": "Add the number to the whitelist",
  "whitelist.dialog.intro": "Calls from this number will no longer be blocked. By doing this, you are marking the number as legitimate in PhoneBlock; this rating is associated with your account.",
  "whitelist.dialog.submit": "Unblock",
  "whitelist.dialog.working": "Sending...",
  "whitelist.dialog.done": "Done—the number is now on your whitelist.",
  "spam.dialog.title": "Report this number as spam",
  "spam.dialog.intro": "Your rating matters to all PhoneBlock users and is associated with your account. You can't undo it via the dongle—you can only do that on phoneblock.net.",
  "spam.dialog.rating": "Type of Call",
  "spam.dialog.rating.B_MISSED": "Unknown",
  "spam.dialog.rating.C_PING": "Ping Call",
  "spam.dialog.rating.D_POLL": "Survey",
  "spam.dialog.rating.E_ADVERTISING": "Advertisement",
  "spam.dialog.rating.F_GAMBLE": "Contest",
  "spam.dialog.rating.G_FRAUD": "Fraud",
  "spam.dialog.submit": "Report",
  "spam.dialog.working": "Will be reported…",
  "spam.dialog.done": "Thank you — Rating submitted.",
  "spam.dialog.error.no_token": "A PhoneBlock account is required to leave a review.",
  "pb.dialog.error.moved": "The selected phone book no longer exists. Please select another one.",
  "spam.dialog.comment": "Reason",
  "spam.dialog.comment.hint": "(optional; will be visible to the public)",
  "spam.dialog.error.is_contact": "This caller is in your phone book. A phone book entry always takes precedence on the dongle, so a spam alert isn't possible in this case.",
  "status.system.lcd_flip": "Turn the display upside down (rotate 180°)",
  "status.system.lcd_flip.hint": "Depending on the orientation of the USB port on your Fritz!Box, the USB flash drive will be oriented differently. Rotate the display 180°."
}
