{
  "_readme": [
    "TagSpion.com translation file. Thank you for helping!",
    "Translate only the values in \"strings\". Never change the keys on the left.",
    "Keep placeholders like $1 and $2 exactly as they are. You may move them inside the sentence.",
    "Keep technical terms unchanged: JSON-LD, og:image, twitter:card, X-Robots-Tag, noindex, HTTPS, /server-status, @type, @context.",
    "Keep texts short, they are shown in a narrow side panel.",
    "Fill in \"_language\" (e.g. \"Svenska (sv)\") and \"_translator\" (your name as it should appear on tagspion.com, or leave empty).",
    "Send the finished file to tagspion@outlook.com. By sending it you allow its use in TagSpion."
  ],
  "_language": "",
  "_translator": "",
  "strings": {
    "extDesc": "Meta tags, schema, social previews, server and security at a glance. Flags issues and hands you ready-made fix code.",
    "actionTitle": "Open TagSpion.com",
    "btnTheme": "Day / Night",
    "btnReload": "Check again",
    "stateNotInspectable": "This page cannot be inspected. Browser pages and extension stores are off-limits for all extensions.",
    "stateNoAccess": "No access to this page. Please reload it and check again.",
    "stateFileAccess": "For local files, enable “Allow access to file URLs” in the extension details.",
    "footerBy": "A project by",
    "footerMore": "More projects",
    "copied": "Copied to clipboard",
    "copyFailed": "Copy failed",
    "countErrors": "$1 errors",
    "countWarnings": "$1 warnings",
    "countHints": "$1 hints",
    "checkedAt": "Checked at $1 · rendered DOM",
    "sec_todo": "To do",
    "sec_basis": "Basics",
    "sec_preview": "Preview",
    "sec_schema": "Schema",
    "sec_structure": "Structure",
    "sec_media": "Images & links",
    "btnCopy": "Copy",
    "filter_all": "All",
    "filter_e": "Errors",
    "filter_w": "Warnings",
    "filter_i": "Hints",
    "btnReport": "Copy report",
    "allGood": "Nothing to do, all clean.",
    "btnFix": "Fix",
    "btnShow": "Show",
    "btnClose": "Close",
    "btnCode": "Show code",
    "lblTitle": "Title",
    "metaTitle": "$1 characters · approx. $2 px · target 30-60 characters",
    "missing": "missing",
    "lblDesc": "Description",
    "metaDesc": "$1 characters · target 70-160",
    "metaDescTarget": "Target 70-160 characters",
    "lblCanonical": "Canonical",
    "canonSelf": "Points to itself",
    "canonOtherShort": "Points to a different URL",
    "lblRobots": "Robots",
    "robotsDefault": "not set (index, follow)",
    "lblLanguage": "Language",
    "noneFound": "none found",
    "lblIcons": "Icons",
    "keywordsIgnored": "keywords present (ignored by Google)",
    "wordCount": "$1 words",
    "lblOther": "Other",
    "desktop": "Desktop",
    "mobile": "Mobile",
    "autoSnippetHint": "Yellow: no description, Google picks its own text snippet.",
    "noOgImage": "No og:image",
    "value": "Value",
    "invalid": "invalid",
    "noType": "no @type",
    "validJson": "valid JSON",
    "invalidJson": "invalid JSON",
    "errLine": "Line $1",
    "schemaPhase2": "Required fields, rich result preview and lab follow in phase 2.",
    "noHeadings": "No headings found.",
    "images": "Images",
    "noAlt": "no alt",
    "noSize": "no size",
    "linksInternal": "internal",
    "linksExternal": "external",
    "lvl_e": "Error",
    "lvl_w": "Warning",
    "lvl_i": "Hint",
    "titleMissing": "Title missing",
    "titleLong": "Title too long ($1 characters)",
    "titleLongHint": "Google truncates at about 580 px.",
    "titleShort": "Title too short ($1 characters)",
    "titleShortHint": "Use the space for brand or location.",
    "titleMulti": "Multiple title tags ($1)",
    "descMissing": "Meta description missing",
    "descMissingHint": "Fix suggestion taken from the first paragraph.",
    "descLong": "Description too long ($1 characters)",
    "descLongHint": "Google truncates at about 160 characters.",
    "descShort": "Description too short ($1 characters)",
    "descMulti": "Multiple descriptions ($1)",
    "canonMissing": "Canonical missing",
    "canonMulti": "Multiple canonicals ($1)",
    "canonRelative": "Canonical is relative",
    "canonOther": "Canonical points to another URL",
    "canonOtherHint": "Intended? Otherwise this page will not be indexed.",
    "robotsNoindex": "Page is set to noindex",
    "robotsNoindexHint": "Google will not index this page.",
    "robotsNofollow": "Meta robots: nofollow",
    "langMissing": "lang attribute missing",
    "viewportMissing": "Viewport missing",
    "charsetNotUtf8": "Charset is not UTF-8 ($1)",
    "hreflangNoSelf": "hreflang: self reference missing",
    "hreflangNoXDefault": "hreflang: x-default missing",
    "faviconMissing": "Favicon missing",
    "faviconMissingHint": "Google shows the favicon in search results.",
    "appleIconMissing": "Apple touch icon missing",
    "ogIncomplete": "Open Graph incomplete: $1",
    "ogImageRelative": "og:image is relative, must be absolute",
    "twCardMissing": "twitter:card missing",
    "twCardMissingHint": "X falls back to Open Graph but shows only the small card.",
    "ogImageSmall": "og:image too small ($1 x $2 px)",
    "ogImageSmallHint": "Recommended 1200 x 630 px.",
    "ogImageBroken": "og:image does not load",
    "schemaInvalid": "Invalid JSON in schema block $1",
    "schemaInvalidHint": "Google ignores the whole block.",
    "schemaNone": "No schema found",
    "schemaNoneHint": "Basic Organization + WebSite markup to add:",
    "headingSkip": "Heading jumps from H$1 to H$2",
    "h1Missing": "No H1 heading",
    "h1Multi": "$1 H1 headings",
    "imgNoAlt": "$1 images without alt text",
    "imgNoAltHint": "Important for accessibility and image search.",
    "stateLoading": "Checking page …",
    "btnLang": "Language",
    "langAuto": "Automatic",
    "langBrowser": "Browser: $1 → $2",
    "langNotAvail": "(not available)",
    "langPlanned": "Planned",
    "copyUrl": "Copy URL",
    "copyIp": "Copy IP",
    "srvNoHttps": "no HTTPS",
    "srvResponse": "Response",
    "srvUsed": "used",
    "srvLookup": "look up",
    "gradeNote": "Grade $1",
    "sec_technik": "Technical",
    "sec_sitemap": "Sitemap check",
    "noServerData": "No server data for local files.",
    "checking": "checking …",
    "netMissing": "IP and redirects missing: the page was loaded before TagSpion started. Reload once (F5).",
    "lblRedirects": "Redirects",
    "lblStatus": "Status",
    "lblServer": "Server",
    "lblCompression": "Compression",
    "lblHttpVersion": "HTTP version",
    "lblResponse": "Response time",
    "lblSize": "Size",
    "unpacked": "unpacked",
    "lblWww": "www variant",
    "lblCert": "Certificate",
    "notSet": "not set",
    "none": "none",
    "versionVisible": "version visible",
    "fromCache": "from cache, reload for server data",
    "ssPublic": "publicly accessible!",
    "ssProtected": "protected ($1)",
    "ssNone": "not present",
    "unknown": "cannot be checked",
    "redirectsYes": "redirects",
    "redirectsNo": "does NOT redirect",
    "www_redirect": "$1 redirects",
    "www_both": "$1 also reachable",
    "www_none": "$1 not reachable",
    "wwwSkip": "not checked (subdomain or IP)",
    "certValid": "$1 · until $2 ($3 days left)",
    "certFromLog": "per certificate log",
    "certNone": "no valid certificate found in log",
    "extBadge": "external",
    "extHint": "“external” = request to a third-party service, only with your consent.",
    "btnLookupAll": "Look up all",
    "resetAsk": "Ask again",
    "lookupFailed": "Lookup failed",
    "noRecords": "no records",
    "secTitle": "Security headers",
    "secSummary": "$1 of 6 security headers set",
    "secNote": "Grade based on headers set, minus for visible versions.",
    "secReportOnly": "test mode only (report-only)",
    "secNotHttps": "requires HTTPS",
    "secFixLabel": "Fix for Apache (.htaccess or vhost, needs mod_headers)",
    "allHeaders": "All response headers ($1)",
    "extTitle": "External request",
    "extText": "TagSpion wants to look up $1. This sends a request to a third-party service.",
    "extService": "Service",
    "extAddress": "Address",
    "extSent": "Sent",
    "extSentVal": "only the domain name: $1",
    "extNotSent": "Not sent",
    "extNotSentVal": "URL, page content, your data",
    "extRemember": "Don't ask again",
    "extCancel": "Cancel",
    "extOk": "Request",
    "extCancelled": "Cancelled, nothing sent",
    "what_ip": "the IP addresses (A and AAAA)",
    "what_ns": "the name servers (NS)",
    "what_mx": "the mail servers (MX)",
    "what_cert": "the SSL certificate (issuer, expiry)",
    "what_all": "IP addresses, name servers, mail servers and certificate",
    "svcDns": "Cloudflare DNS",
    "svcCrt": "crt.sh, public certificate log",
    "svcAll": "Cloudflare DNS and crt.sh",
    "smIntro": "Checks all sitemap URLs: status, noindex, description, duplicate titles.",
    "smStart": "Load and check sitemap",
    "smStop": "Stop",
    "smRestart": "Check again",
    "smOpenTab": "Open in tab",
    "smCsv": "Export CSV",
    "smLoading": "Loading sitemap …",
    "smFound": "$1 · $2 URLs",
    "smNone": "No sitemap found (robots.txt, /sitemap.xml, /sitemap_index.xml, /wp-sitemap.xml).",
    "smProgress": "Checking $1 of $2 · 2 requests per second",
    "smDone": "Done: $1 of $2 checked",
    "smStopped": "Stopped after $1 of $2",
    "smLimit": "Only the first $1 URLs are checked.",
    "smHint": "Only requests the site itself, no third-party service. Throttled to spare the server. Long checks are better in their own tab.",
    "smOk": "200 OK",
    "smRedirect": "Redirect",
    "smError": "Errors",
    "smNoDesc": "no description",
    "smDupTitle": "duplicate titles",
    "smAllGood": "No problems found.",
    "smColUrl": "URL",
    "smColProblem": "Problem",
    "smMore": "… and $1 more (all in CSV)",
    "smNetErr": "not reachable",
    "pStatus": "Status $1",
    "pRedirect": "Redirect",
    "pNoindex": "noindex in sitemap",
    "pNoTitle": "Title missing",
    "pNoDesc": "Description missing",
    "pDupTitle": "Same title as $1",
    "noHttps": "Page without HTTPS",
    "httpError": "Status code $1",
    "redirectChain": "$1 redirects before the target",
    "redirectChainHint": "Link internally to the final URL.",
    "slowResponse": "Slow server response ($1 ms)",
    "slowResponseHint": "Target: below 600 ms. Check caching or PHP OPcache.",
    "serverVersions": "Server exposes versions",
    "secGrade": "Security headers: grade $1",
    "serverStatusPublic": "/server-status is public",
    "serverStatusPublicHint": "Shows server internals and requested URLs to everyone.",
    "httpNoRedirect": "HTTP does not redirect to HTTPS",
    "wwwBoth": "Reachable with and without www",
    "wwwBothHint": "Duplicate content, one variant should 301-redirect.",
    "stateErrorPage": "The page could not be loaded (browser error page).",
    "fixHstsNote": "Only in the HTTPS vhost (:443) and only if the domain stays on HTTPS. Add includeSubDomains only once all subdomains have HTTPS.",
    "fixCspNote": "Start CSP in test mode, otherwise it may block your own scripts:",
    "fixOnce": "once:",
    "fixApacheConf": "Apache, e.g. /etc/apache2/conf-enabled/security.conf",
    "fixNginxConf": "nginx.conf (http block)",
    "fixLitespeed": "LiteSpeed WebAdmin: Server > General > Server Signature = Hide",
    "fixOrApache": "or via Apache (mod_headers):",
    "fixHttpsAll": "Apache: redirect everything to HTTPS (certificate required, e.g. certbot)",
    "fixLocalOnly": "Apache: allow local access only",
    "btnCheck": "check",
    "csvType": "Type",
    "csvYes": "yes",
    "csvKind_ok": "OK",
    "csvKind_redirect": "Redirect",
    "csvKind_error": "Error",
    "sc_empty": "Value is empty",
    "sc_objNotText": "Object instead of text, usually still read",
    "sc_urlExpected": "URL expected as text",
    "sc_urlRelative": "Relative URL, better absolute with https://",
    "sc_urlInvalid": "“$1” is not a valid URL, https:// is missing",
    "sc_dateExpected": "Date expected as text in YYYY-MM-DD format",
    "sc_dateGerman": "“$1” is German date format, correct: $2",
    "sc_dateInvalid": "“$1” is not an ISO 8601 date (e.g. $2)",
    "sc_tzMissing": "Time zone missing, e.g. $1",
    "sc_timeInvalid": "“$1” is not a time in HH:MM format",
    "sc_durInvalid": "“$1” is not an ISO 8601 duration, e.g. PT30M or PT1H15M",
    "sc_intExpected": "Whole number expected",
    "sc_numExpected": "Number expected",
    "sc_numCurrency": "“$1”: number only, the currency belongs in priceCurrency",
    "sc_numComma": "“$1”: comma instead of dot, correct: $2",
    "sc_numInvalid": "“$1” is not a number",
    "sc_currency": "“$1” is not a currency code, e.g. EUR (ISO 4217)",
    "sc_country": "“$1”: better an ISO 3166 country code, e.g. DE",
    "sc_bool": "true or false expected",
    "sc_enum": "“$1” is not a valid value. Allowed: $2",
    "sc_textOk": "Text allowed, better as an object with @type $1",
    "sc_urlRef": "Reference by URL, target is not checked",
    "sc_objExpected": "Object of type $1 expected, found: $2",
    "sc_idRef": "Reference to @id $1",
    "sc_jobExpired": "Job has expired, Google no longer shows it",
    "sc_future": "Date is in the future",
    "sc_priceExpired": "Price has expired",
    "sc_endBeforeStart": "endDate is before startDate",
    "sc_eventPast": "Event is in the past",
    "sc_ratingTooHigh": "Rating $1 is higher than bestRating $2",
    "sc_ratingZero": "Number of ratings is 0",
    "sc_headlineLong": "Headline longer than 110 characters",
    "sc_noOffers": "Without offers only a review snippet, no merchant listing",
    "sc_typeMissing": "@type missing",
    "sc_typeAssumed": "@type missing, assumed: $1",
    "sc_typeMismatch": "Type $1 does not fit here, expected: $2",
    "sc_noRules": "No Google rules for type “$1”, basic check only.",
    "sc_reqMissing": "Required field missing: $1",
    "sc_reqOneOf": "One of these is required: $1",
    "sc_recMissing": "Recommended: $1",
    "sc_unknownSuggest": "Unknown property “$1”, did you mean “$2”",
    "sc_unknown": "Property “$1” is not known for $2",
    "sc_scriptRemoved": "script tag detected and removed",
    "sc_jsonSyntax": "Syntax error",
    "sc_jsonComma": "Comma missing before this point",
    "sc_jsonTrailing": "Extra comma before the bracket",
    "sc_jsonQuotes": "Only double quotes \" are allowed",
    "sc_jsonUnclosed": "Bracket not closed",
    "sc_objRequired": "Object expected",
    "sc_ctxMissing": "@context missing, correct: \"https://schema.org\"",
    "sc_ctxWrong": "@context does not point to schema.org",
    "sc_ctxHttp": "@context uses http, https is common",
    "g_ok": "Rich result possible",
    "g_limited": "Government and health sites only",
    "g_gone": "Discontinued by Google",
    "g_info": "No rich result, but used by Google",
    "g_none": "No rich result of its own",
    "pv_free": "Free",
    "pv_inStock": "In stock",
    "pv_outOfStock": "Out of stock",
    "pv_preOrder": "Pre-order",
    "pv_from": "from $1",
    "pv_range": "$1 to $2",
    "pv_hours": "$1 hr",
    "pv_minutes": "$1 min",
    "pv_seconds": "$1 sec",
    "pv_pageTitle": "Page title",
    "pv_crumbHint": "Google shows the breadcrumb trail instead of the URL.",
    "pv_review": "Review",
    "pv_rating": "Rating: $1/$2",
    "pv_reviewBy": "Review by $1",
    "pv_noPlace": "Location missing",
    "pv_noEmployer": "Employer missing",
    "pv_jobTitle": "Job title",
    "pv_daysAgo": "$1 days ago",
    "pv_per_HOUR": "per hour",
    "pv_per_DAY": "per day",
    "pv_per_WEEK": "per week",
    "pv_per_MONTH": "per month",
    "pv_per_YEAR": "per year",
    "pv_job_FULL_TIME": "Full-time",
    "pv_job_PART_TIME": "Part-time",
    "pv_job_CONTRACTOR": "Contractor",
    "pv_job_TEMPORARY": "Temporary",
    "pv_job_INTERN": "Internship",
    "pv_job_VOLUNTEER": "Volunteer",
    "pv_noAddress": "Address missing",
    "pv_provider": "Provider: $1",
    "pv_faq": "Frequently asked questions",
    "pv_faqHint": "Greyed out: since 2023 Google shows FAQ rich results only for well-known government and health sites.",
    "pv_howtoHint": "Google discontinued HowTo rich results in 2023. The markup does no harm but no longer shows.",
    "pv_noName": "Name missing",
    "pv_profile": "Profile page",
    "pv_profileHint": "Helps Google recognize profile pages in forums and communities.",
    "pv_orgHint": "No rich result of its own. Google uses logo, name and sameAs for the knowledge panel.",
    "pv_siteName": "Site name",
    "pv_siteHint": "Controls the site name above the search result. Google dropped the sitelinks search box in 2024.",
    "pv_personHint": "No rich result of its own. Used as author, profile or knowledge panel.",
    "pv_none": "No preview for this type.",
    "lab_title": "Schema lab",
    "lab_intro": "“This page” shows the schema blocks of the inspected page, one tab per block. Edit, check live, apply the fix and copy the result. “Examples” has good and broken samples per type, and you can paste your own JSON-LD at any time (also with script tag).",
    "lab_runAll": "Run all tests",
    "lab_modePage": "This page",
    "lab_modeEx": "Examples",
    "lab_clear": "Clear",
    "lab_reload": "Reload page",
    "lab_good": "Good",
    "lab_bad": "Broken",
    "lab_noPage": "No page connected. Open the lab via the flask icon in the TagSpion side panel, or use the examples and your own JSON-LD.",
    "lab_noBlocks": "This page has no JSON-LD. Paste your own or use the examples.",
    "lab_openFailed": "Page no longer reachable (tab closed?)",
    "lab_reloaded": "Page reloaded, changes discarded",
    "lab_empty": "Paste JSON-LD or pick an example.",
    "lab_line": "Line $1: $2",
    "lab_ignored": "Google ignores the whole block as long as the JSON is broken.",
    "lab_jsonInvalid": "Invalid JSON, line $1",
    "lab_jsonValid": "Valid JSON · objects: $1",
    "lab_chars": "$1 characters",
    "lab_check": "Check",
    "lab_noProblems": "No problems found",
    "lab_errNoRich": "$1 errors, no rich result",
    "lab_basic": "Basic check",
    "lab_checkedAs": "checked as $1",
    "lab_legend": "Red: required missing · Yellow dashed: recommended missing · Green: present",
    "lab_preview": "Preview",
    "lab_fix": "Fix code",
    "lab_fixPart": "Missing only",
    "lab_fixFull": "Complete",
    "lab_apply": "Apply",
    "lab_applied": "Fix applied, replace the placeholders",
    "lab_fixHint": "Highlighted in yellow: placeholders to replace with real values.",
    "lab_changed": "changed",
    "lab_block": "Block $1",
    "lab_matrix": "Test matrix",
    "lab_colType": "Type",
    "lab_colGood": "Good example",
    "lab_colBad": "Broken example",
    "lab_colExpect": "Expected",
    "lab_cnt": "$1 E · $2 W · $3 H",
    "lab_zeroErr": "✓ 0 errors",
    "lab_detected": "✓ detected",
    "lab_passed": "$1 of $2 tests passed",
    "grp_rich": "Rich results",
    "grp_limited": "Restricted",
    "grp_none": "No rich result of its own",
    "grp_special": "Special",
    "ex_graph": "Multiple types (@graph)",
    "ex_syntax": "Broken JSON (syntax)",
    "btnLab": "Open schema lab",
    "btnLabBlock": "Test in lab",
    "btnLabShort": "In lab",
    "moreInLab": "… and $1 more, all in the lab",
    "schemaErrors": "Schema $1: $2 errors",
    "btnTip": "Buy me a coffee or a beer",
    "tipText": "TagSpion is and will stay free. If it saves you time, I would love a coffee in the morning or a beer after work.",
    "tipCoffee": "Buy me a coffee · 3 €",
    "tipBeer": "Buy me a beer · 5 €",
    "tipNote": "Opens PayPal. Sorry, we do not accept cola.",
    "tipClose": "Close"
  }
}