{
  "_meta": {
    "locale": "zh-Hans",
    "status": "machine-draft",
    "note": "简体中文完整翻译（AI 草稿，直接称呼读者时使用敬语「您」，叙述部分使用第一人称「我」）。建议在用于市场宣传前由母语者审校。遵循 CONCORD 规则，不使用破折号，相关句子已改写；年份区间使用短横线。产品名称与专有名词保持原样。"
  },
  "site": {
    "name": "ronutz",
    "tagline": "在您自己的设备上运行的网络与安全工具，而非别人的云端。"
  },
  "nav": {
    "tools": "工具",
    "about": "关于",
    "certifications": "认证",
    "training": "培训",
    "contact": "联系",
    "skipToContent": "跳到正文",
    "openMenu": "打开菜单",
    "closeMenu": "关闭菜单",
    "learn": "学习",
    "endorsements": "推荐",
    "certs": "认证"
  },
  "languageSwitcher": {
    "label": "语言",
    "stubNotice": "此语言尚未翻译，将以英文显示。"
  },
  "home": {
    "hero": {
      "eyebrow": "由从业者打造，以隐私为先",
      "title": "把您的数据留在您设备上的网络与安全工具集。",
      "subtitle": "子网计算、DNS 与电子邮件诊断、证书检查等等，全部在您的浏览器中本地完成。日常工具无需上传、无需日志、无需账户。",
      "ctaPrimary": "打开工具集",
      "ctaSecondary": "由谁打造"
    },
    "credibility": {
      "title": "由一位自 1996 年起就从事这项工作的人打造。",
      "body": "在企业网络与安全领域深耕三十年，由一位活跃的讲师亲自呈现，而非一页市场文案。横跨四个平台的认证，意味着这里的对比是诚实的，而不是为了促成交易。",
      "aboutCta": "了解这背后的人"
    },
    "pillars": {
      "title": "四个平台，持续教授并保持最新。",
      "f5": "F5",
      "fortinet": "Fortinet",
      "extreme": "Extreme Networks",
      "netskope": "Netskope"
    },
    "privacy": {
      "title": "为什么在安全工作中本地运行很重要。",
      "body": "当您把配置、抓包或证书粘贴到工具里时，这些数据往往包含机密。在这里，日常工具完全在您的浏览器中运行。您输入的内容从不离开您的设备，因此没有什么可被记录、泄露，或在法庭命令下被交出。"
    },
    "toolPreview": {
      "title": "现在就试用工具。",
      "body": "下方的 CIDR 计算器在本地运行。输入网络和前缀，即可看到地址范围、主机数量和掩码。没有任何内容被发送到任何地方。",
      "learnHeading": "了解相关概念",
      "toolboxCta": "打开完整工具箱",
      "seeAllArticles": "查看所有文章"
    },
    "provenance": {
      "title": "致谢与来源",
      "show": "显示",
      "hide": "隐藏",
      "basisLabel": "工作原理",
      "sourcesLabel": "标准与来源"
    },
    "funding": {
      "title": "支持这些工具",
      "pitch": "这些工具是免费的，并且意在保持免费。如果它们在您的工作流程中占有一席之地，您可以帮助为它们的维护以及后续开发提供资金。",
      "purposeLabel": "当前资助方向"
    },
    "stats": {
      "tools": "工具",
      "articles": "文章",
      "sectionLabel": "工具箱一览"
    }
  },
  "tools": {
    "cidr": {
      "title": "CIDR 计算器",
      "description": "为 IPv4 CIDR 块计算网络地址和广播地址、可用主机范围、主机数量和网络掩码。在您的浏览器中本地运行。",
      "inputLabel": "CIDR 块",
      "inputPlaceholder": "192.168.1.0/24",
      "compute": "计算",
      "runsLocally": "本地运行，不向任何服务器发送任何内容。",
      "prefixSlider": "前缀长度",
      "bitsHeading": "地址位",
      "bitsNetwork": "网络",
      "bitsHost": "主机",
      "bitsNote": "高亮的位用于标识网络，其余的位用于寻址网络内的主机。",
      "results": {
        "network": "网络地址",
        "broadcast": "广播地址",
        "netmask": "网络掩码",
        "wildcard": "通配符掩码",
        "firstHost": "第一个可用主机",
        "lastHost": "最后一个可用主机",
        "totalAddresses": "地址总数",
        "usableHosts": "可用主机数"
      },
      "errors": {
        "empty": "请输入一个 CIDR 块以进行计算。",
        "invalid": "这看起来不是有效的 CIDR 块。请尝试类似 192.168.1.0/24 的格式。"
      },
      "name": "CIDR / 子网计算器",
      "blurb": "将任意 IPv4 CIDR 块拆解为网络地址和广播地址、可用主机范围、主机数量和子网掩码。完全在你的浏览器中运行。",
      "modes": {
        "subnet": "子网",
        "vlsm": "VLSM",
        "supernet": "超网",
        "overlap": "重叠 / 空隙"
      },
      "modeDesc": {
        "subnet": "分析单个 IPv4 CIDR 块：网络、广播、掩码和主机范围。",
        "vlsm": "根据主机数量列表，将父块划分为可变长度的子网。",
        "supernet": "将前缀列表汇总为覆盖它们的最小块集合。",
        "overlap": "查找前缀之间的重叠与包含关系，以及可选范围内的空隙。"
      },
      "vlsm": {
        "parentLabel": "父块",
        "reqsLabel": "子网需求",
        "namePlaceholder": "名称（可选）",
        "hostsPlaceholder": "主机数",
        "addRow": "添加子网",
        "remove": "移除",
        "run": "分配",
        "th": {
          "name": "名称",
          "hosts": "主机数",
          "network": "网络",
          "prefix": "前缀",
          "netmask": "网络掩码",
          "range": "可用范围",
          "broadcast": "广播",
          "usable": "可用主机数"
        },
        "stat": {
          "parent": "父块",
          "used": "已用",
          "free": "空闲",
          "utilization": "利用率"
        },
        "unfit": "无法容纳",
        "parentPlaceholder": "10.0.0.0/24"
      },
      "supernet": {
        "label": "要聚合的前缀",
        "run": "聚合",
        "minimal": "最小覆盖集合",
        "single": "单一超网",
        "singleExtra": "比输入多出 {extra} 个地址。",
        "stat": {
          "inputs": "输入前缀",
          "addresses": "地址",
          "blocks": "聚合块"
        },
        "placeholder": "192.168.0.0/24\n192.168.1.0/24"
      },
      "overlap": {
        "label": "要检查的前缀",
        "scopeLabel": "范围（可选，启用空隙检测）",
        "run": "检查",
        "overlapsTitle": "重叠",
        "noOverlaps": "未发现重叠。",
        "gapsTitle": "范围内的空隙",
        "noGaps": "指定范围内没有空隙。",
        "kind": {
          "identical": "相同",
          "contains": "包含",
          "contained": "位于",
          "partial": "部分重叠"
        },
        "addresses": "个地址",
        "stat": {
          "covered": "已覆盖",
          "scope": "范围"
        },
        "placeholder": "10.0.0.0/24\n10.0.0.128/25",
        "scopePlaceholder": "10.0.0.0/16"
      },
      "err": {
        "ipv4": "不是有效的 IPv4 地址。请使用 0-255 的四个八位组，例如 192.168.1.0。",
        "octet": "某个八位组超出范围（每个必须为 0-255）。",
        "format": "应为 A.B.C.D/前缀 格式，例如 192.168.1.0/24。",
        "prefix": "前缀长度必须介于 0 和 32 之间。",
        "tooMany": "条目过多。请缩短列表后重试。",
        "noReqs": "请至少添加一个带主机数量的子网需求。",
        "noPrefixes": "请至少输入一个前缀，每行一个。"
      },
      "rangeHeading": "地址布局",
      "usableShort": "可用",
      "rfcNote": "/31 和 /32 不保留任何地址：每个地址都可用（RFC 3021）。",
      "reservedNote": "第一个地址是网络地址，最后一个是广播地址；两者都被保留，因此可用 = 总数 − 2。"
    },
    "title": "工具",
    "lede": "小巧、快速、尊重隐私的工具，完全在您的浏览器中运行。您输入的内容不会被发送到任何地方。更多工具即将推出。",
    "open": "打开",
    "comingSoon": "即将推出",
    "note": "这个工具集正在不断扩充。新工具在准备就绪后会添加到这里，每个都在本地运行且免费使用。",
    "learnHeading": "学习概念",
    "backToTools": "工具",
    "references": "参考",
    "jumpTo": "跳转到",
    "categories": {
      "identity": "身份与令牌",
      "encoding": "编码与数据",
      "hashing": "哈希与加密",
      "identifiers": "标识符",
      "pki": "证书与 PKI",
      "networking": "网络",
      "transport": "TLS 与传输"
    },
    "hash": {
      "name": "哈希生成器（SHA-1/256/384/512）",
      "blurb": "使用浏览器原生的 Web Crypto，计算任意文本的 SHA-1、SHA-256、SHA-384 和 SHA-512 摘要，以 hex 和 Base64 显示。完全在你的浏览器中运行。",
      "algorithmLabel": "哈希算法",
      "inputLabel": "要哈希的文本",
      "inputPlaceholder": "The quick brown fox jumps over the lazy dog",
      "runsLocally": "哈希通过 Web Crypto 在本地运行。你输入的内容不会离开你的浏览器。",
      "bits": "{bits} 位（{bytes} 字节）",
      "sha1Note": "SHA-1 在抗碰撞性方面已被攻破，不适合用于安全场景（签名、证书）。它仅适用于非安全用途的校验和以及旧系统的互操作。",
      "hex": "Hex",
      "base64": "Base64",
      "copy": "复制",
      "copied": "已复制"
    },
    "hmac": {
      "name": "HMAC 生成器（SHA-256/384/512）",
      "blurb": "使用你的密钥，通过浏览器原生的 Web Crypto 对消息计算带密钥的 HMAC，以 hex 和 Base64 显示。与 JWT 验证器用于 HS256 的构造相同。你的密钥不会离开你的浏览器。",
      "algorithmLabel": "HMAC 算法",
      "messageLabel": "消息",
      "messagePlaceholder": "要认证的消息",
      "keyLabel": "密钥",
      "keyPlaceholder": "你的共享密钥",
      "runsLocally": "HMAC 通过 Web Crypto 在本地运行。你的消息和密钥不会离开你的浏览器。",
      "hex": "Hex",
      "base64": "Base64",
      "copy": "复制",
      "copied": "已复制",
      "struct": {
        "heading": "HMAC 是如何构建的",
        "innerHash": "内层哈希",
        "note": "HMAC 对消息进行两次哈希。密钥先与固定的内层填充进行 XOR 后做第一次哈希，再与外层填充进行 XOR 后做第二次哈希，正是这种双填充结构防止了长度扩展攻击。密钥会先被调整到哈希的分组大小。"
      }
    },
    "base64": {
      "name": "Base64、Base32、十六进制和百分号编解码器",
      "blurb": "将文本编码为 Base64、URL 安全 Base64、Base32、十六进制或百分号编码，并将其中任意一种解码回来。容忍缺失的填充和空白，并标记二进制（非 UTF-8）结果。完全在你的浏览器中运行。",
      "directionLabel": "方向",
      "direction": {
        "encode": "编码",
        "decode": "解码"
      },
      "inputLabelEncode": "要编码的文本",
      "inputLabelDecode": "要解码的已编码文本",
      "placeholderEncode": "Hello, World!",
      "placeholderDecode": "SGVsbG8sIFdvcmxkIQ==",
      "runsLocally": "编码和解码在本地运行。你粘贴的内容不会离开你的浏览器。",
      "decodeErrors": {
        "invalid-characters": "该输入包含所选编解码器字母表之外的字符。",
        "invalid-length": "该输入的长度对所选编解码器无效。",
        "invalid-escape": "该输入有一个格式错误的百分号转义（一个 % 后面没有跟两个十六进制数字）。"
      },
      "outputEncode": "已编码",
      "outputDecode": "解码后的文本",
      "copy": "复制",
      "copied": "已复制",
      "emptyOutput": "（空）",
      "decodedBytes": "{bytes, plural, other {已解码 # 字节。}}",
      "notUtf8": "{bytes, plural, other {已解码 # 字节，}}但结果不是有效的 UTF-8 文本（很可能是二进制）。",
      "codecLabel": "编解码器",
      "codec": {
        "base64": "Base64",
        "base64url": "Base64URL",
        "base32": "Base32",
        "base16": "Hex",
        "percent": "Percent"
      }
    },
    "pkce": {
      "name": "OAuth PKCE 验证器与 challenge",
      "blurb": "生成 OAuth 2.0 code_verifier 并派生其 S256 code_challenge，或粘贴你自己的并按 RFC 7636 的长度和字符集规则进行检查。与你的授权服务器所期望的 SHA-256 base64url 派生相同。完全在你的浏览器中运行。",
      "verifierLabel": "code verifier",
      "verifierPlaceholder": "粘贴一个 code_verifier，或生成一个",
      "generate": "生成",
      "runsLocally": "生成和派生在本地运行。你的 verifier 不会离开你的浏览器。",
      "lengthBadge": "长度 {length}（43-128）",
      "charsetOk": "未保留字符集",
      "charsetBad": "无效字符",
      "s256Title": "Code challenge · S256",
      "plainTitle": "Code challenge · plain",
      "plainNote": "不建议使用 plain 方法。只要客户端能计算 SHA-256，就应使用 S256。",
      "encodingLabel": "base64url",
      "plainValueLabel": "= code_verifier",
      "copy": "复制",
      "copied": "已复制",
      "flowHeading": "PKCE 的工作原理",
      "laneClient": "应用 / 客户端",
      "laneServer": "授权服务器",
      "s1": "生成随机 code_verifier",
      "s2": "推导 code_challenge",
      "s3": "授权请求携带 challenge",
      "s4": "服务器存储 challenge",
      "s5": "返回授权码",
      "s6": "令牌请求携带 verifier",
      "s7": "服务器重新推导并比较",
      "s8": "签发访问和刷新令牌"
    },
    "uuid": {
      "name": "UUID 生成器与检查器（v4 / v7）",
      "blurb": "生成随机 v4 或按时间排序的 v7 UUID，或粘贴任意 UUID 以读取其版本、变体以及（对于 v7）内嵌的创建时间戳。生成使用浏览器的安全随机源。完全在你的浏览器中运行。",
      "versionLabel": "UUID 版本",
      "generate": "生成",
      "clear": "清除",
      "emptyHint": "选择一个版本并生成。",
      "runsLocally": "生成和检查在本地运行。不会向任何地方发送任何内容。",
      "copy": "复制",
      "copied": "已复制",
      "inspectLabel": "检查一个 UUID",
      "inspectPlaceholder": "粘贴任意 UUID 以解码它",
      "valid": "有效的 UUID",
      "invalid": "不是有效的 UUID",
      "versionField": "版本",
      "variantField": "变体",
      "timestampField": "时间戳（v7）",
      "versionValue": "版本 {version}"
    },
    "jwt": {
      "name": "JWT 解码器与验证器",
      "blurb": "解码 JSON Web Token 的头部和声明，以通俗语言读取其过期时间和时序，并用粘贴的密钥验证 HS256/384/512 签名。完全在你的浏览器中运行。",
      "inputLabel": "JSON Web Token",
      "inputPlaceholder": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
      "runsLocally": "解码和签名校验在本地运行。令牌和密钥不会离开你的浏览器。",
      "errors": {
        "empty": "粘贴一个 JSON Web Token 以解码。",
        "format": "这看起来不像 JWT。令牌由用点分隔的三个 base64url 部分组成：header.payload.signature。",
        "header": "头部无效。它应是 base64url 编码的 JSON。",
        "payload": "载荷无效。它应是 base64url 编码的 JSON。"
      },
      "panels": {
        "header": "头部",
        "payload": "载荷",
        "signature": "签名",
        "noSignature": "没有签名段（未签名令牌）。"
      },
      "claims": {
        "iss": "签发者 (iss)",
        "sub": "主体 (sub)",
        "aud": "受众 (aud)",
        "jti": "JWT ID (jti)",
        "iat": "签发时间 (iat)",
        "nbf": "生效时间 (nbf)",
        "exp": "过期时间 (exp)"
      },
      "status": {
        "expired": "已过期 {rel}",
        "expiresIn": "有效，过期于 {rel}",
        "notYetValid": "尚未生效，开始于 {rel}",
        "noExpiry": "没有过期 (exp) 声明"
      },
      "verify": {
        "label": "验证 HMAC 签名（HS256/384/512）",
        "placeholder": "共享密钥",
        "button": "验证",
        "valid": "签名对此密钥有效。",
        "invalid": "签名与此密钥不匹配。",
        "algNone": "此令牌未签名（alg: none），因此没有可验证的签名。",
        "unsupportedAlg": "浏览器内验证仅涵盖 HS256/384/512。{alg} 是非对称的，需要公钥。",
        "hint": "密钥仅用于在你的浏览器中计算 HMAC。它绝不会被发送到任何地方。"
      },
      "struct": {
        "heading": "JWT 的结构",
        "signingInput": "签名输入",
        "note": "头部和负载只是经过 base64url 编码，并未加密，因此任何人都能读取它们。签名是基于用点连接的头部和负载计算得出的，也是验证方所校验的内容。"
      }
    },
    "x509": {
      "name": "X.509 证书解码器",
      "blurb": "粘贴 PEM、base64 或 hex 证书以读取其主题、颁发者、有效期窗口、公钥和 v3 扩展，并附带 SHA-256 和 SHA-1 指纹。完全在你的浏览器中运行。",
      "inputLabel": "X.509 证书",
      "inputPlaceholder": "-----BEGIN CERTIFICATE-----\nMIIB...\n-----END CERTIFICATE-----",
      "runsLocally": "解码和指纹计算在本地运行。证书不会离开你的浏览器。",
      "errors": {
        "empty": "粘贴一个 X.509 证书以解码。",
        "format": "这看起来不像证书。请粘贴 PEM（-----BEGIN CERTIFICATE-----）、base64 或 hex。",
        "der": "这些字节不是有效的 DER。请检查是否粘贴了整个证书，包括 END 行。",
        "structure": "这可解码为 ASN.1，但不是 X.509 证书。证书是由 TBSCertificate、signatureAlgorithm 和 signatureValue 组成的 SEQUENCE。"
      },
      "status": {
        "valid": "有效，过期于 {rel}",
        "expired": "已过期 {rel}",
        "notYetValid": "尚未生效，开始于 {rel}"
      },
      "panels": {
        "subject": "主题",
        "issuer": "颁发者",
        "details": "详情",
        "publicKey": "公钥",
        "extensions": "扩展",
        "fingerprints": "指纹",
        "sct": "证书透明度"
      },
      "fields": {
        "version": "版本",
        "serial": "序列号",
        "notBefore": "不早于",
        "notAfter": "不晚于",
        "signatureAlgorithm": "签名算法",
        "algorithm": "算法",
        "keySize": "密钥大小",
        "exponent": "指数",
        "curve": "曲线",
        "bits": "{n} 位",
        "selfSigned": "自签发"
      },
      "ext": {
        "san": "主题备用名称",
        "keyUsage": "密钥用法",
        "extKeyUsage": "扩展密钥用法",
        "basicConstraints": "基本约束",
        "subjectKeyId": "主题密钥标识符",
        "authorityKeyId": "颁发机构密钥标识符",
        "caTrue": "证书颁发机构（CA: true）",
        "caFalse": "不是 CA（CA: false）",
        "pathLen": "路径长度 {n}",
        "critical": "关键"
      },
      "fp": {
        "sha256": "SHA-256",
        "sha1": "SHA-1",
        "computing": "正在计算指纹……"
      },
      "chainHeading": "信任链",
      "tierRoot": "根 CA",
      "tierIntermediate": "中间 CA",
      "tierLeaf": "终端实体证书",
      "roleRoot": "自签名的信任锚",
      "roleIntermediate": "由根签发；签发叶证书",
      "roleLeaf": "标识服务器或客户端",
      "thisCert": "此证书",
      "issuedBy": "签发者",
      "signs": "签发",
      "trustNote": "信任自上而下流动：每个证书都由其上一级签发，直到你的系统已经信任的根。",
      "sct": {
        "intro": "嵌入的 SCT：{n} 个。每个都是 CT 日志已记录此证书的签名证明；浏览器要求达到最低数量，证书才会被信任。",
        "entry": "SCT {i}",
        "logId": "日志 ID",
        "timestamp": "记录时间",
        "signature": "签名",
        "note": "此处显示签名但不验证；验证 SCT 需要日志的公钥和预证书。"
      }
    },
    "ipv6": {
      "name": "IPv6 工具箱",
      "blurb": "解析一个 IPv6 地址或前缀，查看其规范（RFC 5952）形式和完全展开形式、特殊用途分类、前缀运算、内嵌的 EUI-64 MAC（若存在）以及其 ip6.arpa 反向 DNS 名称。完全在你的浏览器中运行。",
      "inputLabel": "IPv6 地址或前缀",
      "inputPlaceholder": "2001:db8::1/64",
      "runsLocally": "解析在本地运行。地址不会离开你的浏览器。",
      "errors": {
        "empty": "输入一个 IPv6 地址或前缀以解码。",
        "format": "这不是有效的 IPv6 地址。请使用八组十六进制，可用 :: 压缩一次（例如 2001:db8::1）。",
        "prefix": "前缀长度无效。对于 IPv6，它必须在 0 到 128 之间。"
      },
      "panels": {
        "forms": "规范形式",
        "classification": "分类",
        "prefix": "前缀",
        "identifiers": "标识符"
      },
      "fields": {
        "compressed": "压缩形式（RFC 5952）",
        "expanded": "展开形式",
        "type": "类型",
        "scope": "范围",
        "embeddedIpv4": "内嵌 IPv4",
        "network": "网络",
        "firstAddress": "首个地址",
        "lastAddress": "末个地址",
        "count": "地址数",
        "hostBits": "主机位",
        "eui64": "EUI-64 MAC",
        "reverseDns": "反向 DNS（ip6.arpa）"
      },
      "badges": {
        "multicast": "组播"
      },
      "segHeading": "地址结构",
      "networkSeg": "网络前缀",
      "ifaceId": "接口 ID",
      "hostBits": "主机位",
      "prefixNote": "边界左侧的位由前缀固定；右侧的位标识其中的主机。",
      "conventionNote": "未提供前缀，因此虚线标记惯用的 /64 划分：左侧为路由前缀和子网，右侧为 64 位接口标识符。"
    },
    "cipher": {
      "name": "密码套件解码器",
      "blurb": "输入一个 TLS 密码套件，可以是 IANA 名称、OpenSSL 或 GnuTLS 名称，或十六进制代码点，将其拆解为密钥交换、身份验证、加密算法、模式和 MAC，并给出通俗的安全评估和 IANA 的官方推荐状态。完全在你的浏览器中针对内置的 IANA 注册表副本运行。",
      "inputLabel": "密码套件",
      "inputPlaceholder": "TLS_AES_128_GCM_SHA256、ECDHE-RSA-AES128-GCM-SHA256 或 0x1301",
      "runsLocally": "解码在本地针对内置的 IANA TLS 密码套件注册表副本运行。不会向任何地方发送任何内容。",
      "notInRegistryNote": "该名称已按结构解析，但未在内置的 IANA 注册表快照中找到，因此不显示其代码点和等效名称。",
      "errors": {
        "empty": "请输入要解码的密码套件。",
        "format": "这不是密码套件。请输入 IANA 名称（TLS_...）、OpenSSL 名称或十六进制代码点（如 0x1301）。",
        "unknown": "这是有效的代码点格式，但它不是 IANA 注册表中已分配的密码套件。"
      },
      "ratings": {
        "recommended": "推荐",
        "secure": "安全",
        "weak": "弱",
        "insecure": "不安全",
        "unknown": "未知"
      },
      "iana": {
        "Y": "IANA：推荐",
        "N": "IANA：不推荐",
        "D": "IANA：不建议"
      },
      "badges": {
        "tls13": "TLS 1.3",
        "notInRegistry": "不在 IANA 快照中"
      },
      "panels": {
        "identity": "标识",
        "components": "组成部分",
        "security": "安全性"
      },
      "fields": {
        "codePoint": "代码点",
        "name": "IANA 名称",
        "openssl": "OpenSSL 名称",
        "gnutls": "GnuTLS 名称",
        "protocol": "协议",
        "dtls": "DTLS-OK",
        "references": "参考"
      },
      "protocol": {
        "tls13": "TLS 1.3",
        "legacy": "TLS 1.2 及更早版本"
      },
      "comp": {
        "keyExchange": "密钥交换",
        "authentication": "身份验证",
        "forwardSecrecy": "前向保密",
        "cipher": "加密算法",
        "mode": "模式",
        "aead": "AEAD",
        "prf": "PRF/KDF 哈希",
        "mac": "MAC",
        "yes": "是",
        "no": "否",
        "bits": "{n} 位",
        "negotiatedSeparately": "单独协商（TLS 1.3）"
      },
      "reasons": {
        "nullCipher": "NULL 加密：流量完全不加密。",
        "anon": "匿名密钥交换：对端未经身份验证，因此无法抵御主动的中间人攻击。",
        "export40": "出口级 40 位密钥：可被轻易暴力破解，是 1990 年代出口管制规则的遗留物。",
        "rc4": "RC4 流密码：其有偏的密钥流使其已被攻破，RFC 7465 禁止在 TLS 中使用。",
        "singleDes": "56 位密钥的单 DES：可在数小时内被暴力破解。",
        "rc2": "RC2：过时的 40/64 位密码，不适合现代使用。",
        "tripleDes": "3DES 的分组为 64 位，这使其易受 Sweet32 生日攻击（CVE-2016-2183）。RFC 8429 已将其弃用。",
        "md5Mac": "MD5 MAC：MD5 在密码学上已被攻破。",
        "cbcMac": "采用 HMAC-SHA1 或 MD5 MAC 的 CBC 使用先 MAC 后加密，易受 BEAST 和 Lucky13 等填充预言机攻击。",
        "ccm8": "CCM_8 将认证标签截断为 8 字节，削弱了完整性。IANA 未将其标记为推荐。",
        "noFs": "无前向保密：采用静态密钥交换时，一个被泄露的长期密钥即可解密过去的会话。现代指南要求使用 ECDHE 或 DHE。",
        "legacyCipher": "{value} 是一种过时的密码，对 TLS 而言已被淘汰。",
        "aead": "AEAD 加密（认证加密）：在单一原语中同时实现机密性和完整性，没有可被误用的独立 MAC。",
        "fs": "前向保密：临时密钥交换可保证过去的流量安全，即使长期密钥日后被泄露也是如此。",
        "tls13": "TLS 1.3 套件：仅使用现代 AEAD 密码，密钥交换单独协商且始终为临时密钥。",
        "ianaD": "IANA 将此套件标记为“D”（不建议）：视情况而定，不应或不得使用。",
        "ianaN": "IANA 未将此套件标记为“推荐”：适用范围有限，或未经过 IETF 共识流程。",
        "signalling": "信令套件（SCSV）：并非真正的密码，而是携带协议信号，例如降级保护或重新协商信息。"
      },
      "groups": {
        "title": "密钥交换组",
        "intro": "TLS 在 supported_groups 扩展中协商实际的密钥协商组，与密码套件分开。由于\"先收割，后解密\"（harvest now, decrypt later）推动向后量子密钥交换迁移，下面的混合组将经典曲线与 ML-KEM 相结合。",
        "kind": {
          "ecdhe": "ECDHE 曲线",
          "ffdhe": "有限域 DH",
          "pq-hybrid": "PQ 混合"
        },
        "pq": {
          "classical": "经典",
          "hybrid-pq": "混合 PQ"
        },
        "recommended": "推荐",
        "obsolete": "已废弃",
        "legacy": "旧版",
        "combines": "组合 {classical} 与 {pq}",
        "foot": "X25519MLKEM768 是大多数浏览器现在默认发送的混合组。"
      }
    },
    "f5-ssl-profile-explainer": {
      "name": "F5 SSL 配置文件解释器",
      "blurb": "粘贴一个 tmsh client-ssl 或 server-ssl 配置文件，即可获得其角色、TLS 协议矩阵，以及涵盖证书链、重新协商、SNI、OCSP 和双向 TLS 的安全评估——全部在你的浏览器中完成。",
      "inputLabel": "SSL 配置文件（tmsh）",
      "inputPlaceholder": "ltm profile client-ssl /Common/name ...",
      "runsLocally": "在你的浏览器中处理，不向任何地方发送数据。",
      "scopeNote": "解码粘贴的配置文件块，绝不联系 BIG-IP。",
      "errorTitle": "无法读取配置文件",
      "err_empty": "粘贴一个 SSL 配置文件以开始。",
      "err_noHeader": "期望这样的一行：ltm profile client-ssl /Common/name ...",
      "err_noBody": "在配置文件中未找到起始花括号。",
      "err_tooLong": "该输入过大，无法解析。",
      "err_invalid": "这看起来不像 client-ssl 或 server-ssl 配置文件。",
      "protocolsHeading": "TLS 协议版本",
      "permitted": "允许",
      "disabled": "已禁用",
      "findingsHeading": "安全评估",
      "settingsHeading": "设置说明",
      "topoHeading": "在数据路径中",
      "nodeClient": "客户端",
      "nodeBigip": "BIG-IP",
      "nodePool": "池成员",
      "clientLeg": "客户端侧 TLS",
      "serverLeg": "服务器侧",
      "thisProfile": "此配置文件",
      "clientNote": "client-ssl 配置文件在 BIG-IP 上终结客户端的 TLS。仅当应用了 server-ssl 配置文件时，到池成员的连接才会重新加密；否则该段为明文（SSL 卸载）。",
      "serverNote": "server-ssl 配置文件让 BIG-IP 向池成员打开新的 TLS 连接（重新加密）。客户端侧由单独的 client-ssl 配置文件处理。"
    },
    "epoch": {
      "name": "Unix 时间转换器",
      "blurb": "输入一个 Unix 时间戳——秒、毫秒、微秒或纳秒，自动识别——或一个 ISO-8601 日期，即可读取它的所有常见格式。全部在你的浏览器中完成。",
      "inputLabel": "时间戳或日期",
      "inputPlaceholder": "1700000000  或  2023-11-14T22:13:20Z",
      "runsLocally": "在你的浏览器中转换，不向任何地方发送数据。",
      "scopeNote": "纯日期运算。单位根据数字大小推断；如有需要请更正。",
      "nowButton": "现在",
      "errorTitle": "无法读取",
      "err_empty": "请输入时间戳或日期以开始。",
      "err_invalid": "这不是 Unix 时间戳，也不是 ISO-8601 日期。",
      "err_tooLong": "该输入过长。",
      "err_outOfRange": "该时间戳超出可表示的日期范围。",
      "utcHeading": "UTC 日期和时间",
      "formatsHeading": "所有格式",
      "dayOfYearLabel": "一年中的第几天",
      "relativeNote": "相对于你的设备时钟"
    },
    "irules-event-order": {
      "name": "iRule 事件顺序",
      "blurb": "选择 BIG-IP 虚拟服务器的配置栈——Client-SSL、HTTP、Server-SSL、池——查看常见 iRule 事件从 CLIENT_ACCEPTED 到 CLIENT_CLOSED 的触发顺序，以时间线和列表呈现。全部在你的浏览器中完成。",
      "stackLabel": "虚拟服务器配置栈",
      "tog_clientssl": "Client-SSL 配置文件",
      "tog_http": "HTTP 配置文件",
      "tog_serverssl": "Server-SSL 配置文件",
      "tog_pool": "池（负载均衡）",
      "tog_fastl4": "FastL4（数据包快速路径）",
      "presetsLabel": "预设：",
      "preset_https": "HTTPS 重新加密",
      "preset_offload": "SSL 卸载",
      "preset_http": "HTTP",
      "preset_tcp": "纯 TCP",
      "runsLocally": "在你的浏览器中计算，不向任何地方发送数据。",
      "scopeNote": "针对 Standard 虚拟服务器的、F5 已记录行为的模型。它从不连接 BIG-IP。",
      "diagramHeading": "事件序列",
      "listHeading": "按顺序排列的事件",
      "conditionalHeading": "条件事件",
      "conditionalNote": "这些仅在特定条件下触发：TCP::collect 或 HTTP::collect、负载均衡失败，或 100 Continue 响应。",
      "sideClient": "客户端侧",
      "sideServer": "服务器端",
      "sideGlobal": "全局"
    },
    "cert-renewal-planner": {
      "name": "证书续期规划器",
      "blurb": "计算 TLS 证书的有效期、是否符合 CA/Browser Forum 的 47 天时间表，以及由此带来的续期频率；全部离线运行。",
      "notBeforeLabel": "签发 (notBefore)",
      "notAfterLabel": "过期 (notAfter)",
      "runsLocally": "一切都在您的浏览器中运行；不会上传任何内容。",
      "exampleLabel": "试试 90 天的示例",
      "summaryHeading": "此证书",
      "validity": "{days} 天有效期",
      "compliantBadge": "在上限之内",
      "overCapBadge": "超过上限",
      "maxForPhase": "其签发日期的上限：{max} 天。",
      "overByText": "比其签发日期的 {max} 天上限多 {days} 天；公共 CA 不会签发它。",
      "renewalsValue": "在此有效期下每年约 {n} 次续期。",
      "remainingHeading": "根据您设备的时钟",
      "daysRemaining": "距过期还有 {days} 天。",
      "expiredText": "已于 {days} 天前过期。",
      "renewByText": "请在 {date} 前续期（约在过期前 {lead} 天）",
      "renewByDue": "{days} 天后",
      "reuseHeading": "验证复用（签发时期）",
      "dcvText": "域名验证 (DCV) 数据可复用 {days} 天。",
      "siiText": "组织身份 (OV/EV SII) 可复用 {days} 天。",
      "scheduleHeading": "SC-081v3 时间表",
      "scheduleIntro": "公共 TLS 上限取决于证书的签发日期：",
      "colPeriod": "签发于此日期或之后",
      "colValidity": "最大有效期（天）",
      "colDcv": "DCV 复用（天）",
      "colSii": "SII 复用（天）",
      "phaseP0": "2026 年 3 月 15 日之前",
      "phaseP1": "2026 年 3 月 15 日",
      "phaseP2": "2027 年 3 月 15 日",
      "phaseP3": "2029 年 3 月 15 日",
      "yourPhase": "← 此证书",
      "projectionHeading": "每个上限下的续期负担",
      "projectionIntro": "随着上限收紧，每张证书每年的续期次数：",
      "perYearShort": "年",
      "note_overCap": "此有效期超过其签发日期的 {max} 天上限。",
      "note_future47": "今天合规，但长于最终的 47 天上限；随着时间表推进，预计续期会更频繁。",
      "note_publicOnly": "这些上限仅适用于公共信任的 TLS 证书。私有或内部 PKI 不受 SC-081v3 约束。",
      "note_automate": "在这些频率下，请使用 ACME (RFC 8555) 和 ARI (RFC 9773) 自动化签发与续期；手动续期无法扩展。",
      "err_empty": "请输入签发和过期两个日期。",
      "err_invalidDate": "请使用有效日期 (YYYY-MM-DD)。",
      "err_order": "过期日期必须晚于签发日期。",
      "err_tooLong": "输入过长。",
      "err_invalid": "无法读取这些日期。"
    },
    "csr-decoder": {
      "name": "CSR 解码器",
      "blurb": "在浏览器中完整解码 PKCS#10 证书签名请求，读取其主题、公钥、请求的 SAN 和扩展，以及属性。",
      "inputLabel": "证书签名请求（PEM、base64 或十六进制）",
      "inputPlaceholder": "-----BEGIN CERTIFICATE REQUEST-----\n...",
      "exampleLabel": "加载示例 CSR",
      "runsLocally": "一切都在您的浏览器中运行；CSR 永远不会上传。",
      "notCertNote": "CSR 是一个请求，而非证书。它没有序列号、颁发者或有效期；只有请求者要求 CA 认证的内容。",
      "subjectHeading": "主题",
      "colAttr": "属性",
      "colValue": "值",
      "noSubject": "没有主题名称（此 CSR 依赖于请求的 SAN）。",
      "keyHeading": "公钥",
      "keyAlgorithmLabel": "算法",
      "keySizeLabel": "大小",
      "keySizeValue": "{bits} 位",
      "keyCurveLabel": "曲线",
      "keyExponentLabel": "指数",
      "keyExponentValue": "{exp}",
      "requestedHeading": "请求的扩展",
      "sanLabel": "Subject Alternative Names",
      "keyUsageLabel": "密钥用法",
      "ekuLabel": "扩展密钥用法",
      "basicConstraintsLabel": "基本约束",
      "caYes": "CA：是",
      "caNo": "CA：否",
      "pathLenValue": "路径长度 {n}",
      "noRequested": "未请求任何扩展。",
      "attributesHeading": "属性",
      "challengePasswordLabel": "质询口令",
      "unstructuredNameLabel": "非结构化名称",
      "signatureHeading": "自签名",
      "signatureAlgLabel": "算法",
      "signatureBitsLabel": "长度",
      "signatureBitsValue": "{bits} 位",
      "versionValue": "版本：v1（{v}）",
      "derLengthValue": "DER：{bytes} 字节",
      "err_empty": "粘贴证书签名请求以进行解码。",
      "err_format": "这看起来不像 PEM、base64 或十六进制的 CSR。",
      "err_der": "无法解析 DER 结构。",
      "err_structure": "这可解析为 DER，但不是 PKCS#10 证书签名请求。"
    },
    "oidc": {
      "name": "OIDC 解码器",
      "blurb": "粘贴 OpenID Connect ID token 或 .well-known/openid-configuration 文档并解码：核心声明、个人资料声明、端点和能力，并检查必需声明、签名算法、nonce 和 PKCE。",
      "inputLabel": "ID token (JWT) 或 openid-configuration JSON",
      "inputPlaceholder": "粘贴 ID token，或 OIDC discovery JSON 文档",
      "runsLocally": "解码在你的浏览器中本地运行。它从不调用 jwks_uri 或任何端点，也不会向任何地方发送内容。",
      "notVerifiedNote": "此工具进行解码和解释。它不验证 token 签名，不获取签名密钥，也不根据时钟检查过期。",
      "errors": {
        "empty": "粘贴 ID token 或 openid-configuration 文档以进行解码。",
        "malformed-json": "这看起来像 JSON，但无法解析。请检查是否缺少花括号、逗号或引号。",
        "json-not-oidc": "这是 JSON，但不是 OpenID Connect discovery 文档。请粘贴 ID token，或 .well-known/openid-configuration 文档。",
        "not-jwt": "这看起来不像 JWT 或 OIDC 文档。请粘贴 ID token 或 discovery 文档。",
        "jwt-header": "无法解码 token 头部。JWT 由三个以点分隔的 base64url 部分组成。",
        "jwt-payload": "无法将 token 负载解码为 JSON。"
      },
      "badges": {
        "idToken": "ID Token",
        "discovery": "Discovery",
        "signed": "已签名",
        "unsigned": "未签名",
        "algNone": "alg: none",
        "algUnknown": "alg: ?"
      },
      "panels": {
        "header": "头部",
        "coreClaims": "ID token 核心声明",
        "metadata": "提供方",
        "endpoints": "端点",
        "capabilities": "能力"
      },
      "categories": {
        "binding": "Token 绑定",
        "profile": "个人资料声明",
        "email": "电子邮件",
        "address": "地址",
        "phone": "电话",
        "oauth": "OAuth / 会话",
        "other": "其他声明"
      },
      "fields": {
        "alg": "算法",
        "typ": "类型",
        "kid": "密钥 ID",
        "iss": "颁发者 (iss)",
        "sub": "主体 (sub)",
        "aud": "受众 (aud)",
        "azp": "授权方 (azp)",
        "nonce": "Nonce",
        "acr": "认证上下文 (acr)",
        "amr": "认证方法 (amr)",
        "authTime": "认证时间",
        "iat": "颁发时间 (iat)",
        "nbf": "生效时间 (nbf)",
        "exp": "过期时间 (exp)",
        "issuer": "颁发者"
      },
      "reasons": {
        "MISSING_REQUIRED_CLAIM": "缺少必需声明 {value}。ID token 必须包含 iss、sub、aud、exp 和 iat。",
        "ALG_NONE": "该 token 使用 alg none，即未签名。未签名的 ID token 不能证明任何内容，必须被拒绝。",
        "ALG_SYMMETRIC": "使用 {value} 签名，这是一种对称 (HMAC) 算法。来自公共提供方的 ID token 通常使用 RS256 或 ES256 等非对称算法，以便依赖方可以用公钥验证。",
        "ALG_UNKNOWN": "使用 {value} 签名，这是此工具无法识别的算法。请确认它是预期的强算法。",
        "SIGNED_ASYMMETRIC": "使用 {value} 签名，这是一种非对称算法。依赖方使用来自 JWKS 的提供方公钥进行验证。",
        "NO_NONCE": "没有 nonce 声明。Nonce 将 token 与认证请求绑定，并防止重放。当请求发送了 nonce 时，它应当存在。",
        "MULTI_AUD_NO_AZP": "该 token 有多个受众但没有 azp（授权方）。当受众多于一个时，azp 应指明该 token 面向的客户端。",
        "DISCOVERY_MISSING_FIELD": "缺少必需的 discovery 字段 {value}。",
        "DISCOVERY_ALG_NONE": "提供方为 ID token 公布了 none 签名算法，这将允许未签名的 token。不应提供此选项。",
        "DISCOVERY_NO_PKCE": "没有 code_challenge_methods_supported。提供方未公布 PKCE，而 PKCE 是 authorization code 流程的推荐做法。",
        "DISCOVERY_NO_PKCE_S256": "已公布 PKCE 但没有 S256 方法。S256 是推荐的 code challenge 方法。"
      },
      "flow": {
        "heading": "授权码流程",
        "laneRp": "依赖方",
        "laneOp": "OpenID 提供方",
        "s1": "使用 scope=openid 将用户重定向到提供方",
        "s2": "提供方对用户进行认证并获取同意",
        "s3": "提供方携带授权码重定向回来",
        "s4": "依赖方在 token 端点用授权码交换",
        "s5": "提供方返回 ID token 和 access token",
        "s6": "依赖方根据 JWKS 验证 ID token 签名",
        "s7": "依赖方可以用 access token 调用 UserInfo",
        "s8": "提供方返回用户的声明"
      }
    }
  },
  "privacy_page": {
    "eyebrow": "隐私",
    "title": "您的数据，以及本站如何处理它们",
    "lede": "以通俗语言说明本网站对您的信息究竟做什么、不做什么。它力求准确而非仅仅令人安心，因为在 GDPR 和巴西 LGPD 这类法规之下，重要的是准确的告知。",
    "shortTitle": "简短版本",
    "short1": "本站不设置任何 cookie，不运行任何分析，不使用任何广告，也不包含任何第三方追踪器或指纹识别（fingerprinting）。没有任何东西会跨网站追踪您。",
    "short2": "它不出售、不共享、也不为访客建立画像，并且不要求您提供任何东西即可阅读。",
    "short3": "交互式工具完全在您的浏览器中运行。您粘贴或输入其中的内容留在您的设备上，不会被传输到任何地方。",
    "short4": "只有三件事会涉及数据，每一件都在下文说明：保存在您自己浏览器中的单一主题设置、每次网站访问在托管层产生的标准连接日志，以及您选择通过电子邮件发送的任何消息。",
    "controllerTitle": "谁负责",
    "controllerBody": "这是 Rodolfo Nützmann 的个人网站（ronutz.com）。如有任何隐私问题，或要行使下文所述的任何权利，请写信至 {email}。请求由 Rodolfo Nützmann 作为数据控制者直接处理。",
    "noTrackTitle": "无 cookie、无追踪、无分析",
    "noTrackBody": "本站不设置任何类型的 cookie。它不使用任何分析服务（如 Google Analytics 或 Plausible）、任何广告网络、任何社交媒体追踪像素，也不使用任何设备指纹识别。您的访问不会为这些目的被测量、画像或与任何人共享。",
    "browserTitle": "您的浏览器中存储了什么",
    "browserBody": "只有一件小事：您所选的视觉主题，保存在您浏览器的本地存储（local storage）中，以便本站在您下次访问时能够记住它。这是一项便利设置，留在您自己的设备上，绝不会发送到本站或任何其他人，并且可随时通过您的浏览器清除。您设备上不会存储有关您的任何其他数据。",
    "hostingTitle": "托管与服务器日志",
    "hostingBody": "本站通过 Cloudflare 交付，由其提供托管与内容分发。与任何网站一样，加载页面意味着您的设备连接到服务器，而 Cloudflare 作为托管提供商，会处理基本的连接数据，包括您的 IP 地址和标准请求详情，以便向您交付页面并保护本站免受滥用和攻击。此处理对于运营和保护本站是必要的（根据 GDPR 第 6(1)(f) 条的正当利益，以及 LGPD 第 7 和第 10 条的相应依据）。它仅由提供商短暂保留，且在此不用于识别或追踪您。",
    "toolsTitle": "工具在您的浏览器中运行",
    "toolsBody": "本站的解码器和计算器，用于 JWT、IP 地址、证书及其余内容，完全在您的浏览器内进行计算。您输入的值在您自己的设备上处理，绝不会发送到服务器。另提供一个独立的程序化接口（API）用于自动化与集成；按设计它是无状态的，不会记录发送给它的任何查询或请求正文。",
    "contactTitle": "如果您联系我",
    "contactBody": "联系表单不会向任何服务器提交任何内容。相反，它会在您自己的电子邮件应用中打开一封预填的邮件，随后由您自己从自己的账户发送，因此没有任何东西经过第三方。如果您写信，无论通过表单还是直接写信，我都会收到您所包含的信息，例如您的姓名、电子邮件地址和消息，并仅用于回复您。我仅在处理您的咨询所需的时间内保留它，不会将其用于营销，也不会共享它。",
    "intlTitle": "在您所在国家/地区之外的处理",
    "intlBody": "由于 Cloudflare 运营一个全球网络，上文所述的连接层处理可能在位于您所在国家/地区之外的服务器上进行，包括巴西和欧洲经济区之外。当个人数据以这种方式在国际间被处理时，会在相关提供商所提供的保障之下进行。",
    "childrenTitle": "儿童",
    "childrenBody": "本站面向专业的、一般的受众。它不面向儿童，也不会在知情的情况下收集儿童的个人数据。",
    "rightsTitle": "您的权利",
    "rightsBody": "视您居住地而定，您对自己的个人数据享有权利，包括访问、更正或删除、反对或限制处理、以可携格式请求副本，以及被告知它们如何被处理。要行使其中任何一项，只需写信至 {email}。由于此处所处理的个人数据极少，实际上通常几乎无事可办，但渠道始终开放。",
    "rightsGdpr": "如果您位于欧洲经济区或英国，您还有权向您当地的数据保护监管机构提出投诉。",
    "rightsLgpd": "如果您位于巴西，您拥有 LGPD 第 18 条所规定的权利，也可以联系国家数据保护机构（ANPD）。",
    "changesTitle": "本声明的变更",
    "changesBody": "如果本声明发生变更，修订后的版本将发布在本页面，并更新下方的日期。重大变更不会追溯适用。",
    "updated": "最后更新：2026年6月30日",
    "backHome": "返回首页"
  },
  "footer": {
    "redEducation": "通过 <b>Red Education</b> 预订官方培训",
    "privacy": "隐私",
    "builtWith": "由 Rodolfo Nützmann 使用 CONCORD 打造",
    "colophon": "如何打造",
    "contribute": "帮助改进翻译",
    "feedback": "提交反馈",
    "api": "API 参考",
    "contributeTools": "分享想法",
    "license": "许可",
    "coffee": "请我喝杯咖啡"
  },
  "search": {
    "kindTool": "工具",
    "kindArticle": "文章",
    "kindPage": "页面",
    "label": "搜索",
    "placeholder": "搜索本站…",
    "close": "关闭",
    "searching": "搜索中…",
    "noResults": "没有找到“{query}”的结果。",
    "unavailable": "搜索在已发布的网站上可用。在本地预览中不可用。",
    "hint": "输入以搜索文章、工具和页面。"
  },
  "theme": {
    "label": "主题",
    "dark": "深色",
    "light": "浅色"
  },
  "about": {
    "eyebrow": "讲师",
    "role": "高级技术讲师",
    "lede": "网络与安全培训，由一位将职业生涯大部分时间花在实施一线、而不仅仅是站在幻灯片前的从业者呈现。常驻圣保罗，面向全球授课，提供葡萄牙语和英语教学。",
    "now": {
      "title": "我现在做什么",
      "body": "我在安全与网络领域横跨四个平台，提供官方认证、讲师主导的培训。这项工作以实操和实验室为基础：目标始终是让学员带着动手完成任务的能力离开，而不仅仅是能描述它。我自 1996 年起就是一名授权讲师，培训与技术支持自上世纪九十年代末以来一直是我工作的一部分。",
      "basedLabel": "常驻",
      "basedValue": "巴西圣保罗",
      "teachesLabel": "授课",
      "teachesValue": "讲师主导的培训，线上及面授，遍及全球",
      "languagesLabel": "语言",
      "languagesValue": "葡萄牙语（母语）、英语（流利）"
    },
    "platforms": {
      "title": "四个平台，深入教授",
      "body": "获得四家厂商的认证，意味着我能够正确地教授每一个，并诚实地对它们进行比较。以下是我目前获授权提供官方培训的平台。",
      "f5": "贯穿讲师主导课程的 BIG-IP：LTM、DNS、Advanced WAF（ASM）、APM、AFM、SSL Orchestrator、自动化与故障排除。",
      "fortinet": "Fortinet 认证培训，包括 FCP 路线。",
      "extreme": "Extreme Networks 的交换、SD-WAN 以及 API 与自动化路线，涵盖安装、配置、管理和故障排除。",
      "netskope": "面向 Netskope Security Cloud 的讲师主导培训。"
    },
    "path": {
      "title": "走到这里的历程",
      "intro": "我的职业生涯于 1996 年从厂商和实施一线起步，并在那里持续了二十年，之后我才全身心投入培训。正是这段实施经验，使我的培训切中要害：我曾在生产环境中搭建、弄坏并修复这些系统。",
      "present": "至今",
      "cabletron": "网络工程师兼认证讲师。非以太网与以太网网络、园区网络、IP 路由。",
      "riverstone": "在加州担任产品支持工程师兼知识库协调员。千兆以太网、城域网、IP 路由、BGP。第三级升级、客户场景复现与回归测试。",
      "cisco": "顾问网络工程师，SERPRO 和 Correios 等重点客户的单一联系人。负责升级管理与客户满意度。",
      "enterasys": "网络工程师兼讲师。企业网络、IP 路由、用户访问控制与 NAC、IDS 与 IPS。",
      "juniper": "面向企业交换机和防火墙的渠道支持工程师兼讲师。Junos-SRX 的技术销售支持与运维培训。",
      "f5channel": "面向 F5 的、以渠道为中心的销售与售前工程，包括技术支持、概念验证交付以及通过分销渠道开展的合作伙伴培训。",
      "rededucation": "授权培训讲师，面向全球各组织提供 F5、Fortinet、Extreme Networks 和 Netskope 的官方认证课程。",
      "fullHistory": "阅读完整历程",
      "vendorsLink": "我曾合作过的厂商"
    },
    "origins": {
      "title": "一切是如何开始的",
      "body": "在正式的职业生涯之前，是好奇心。上世纪九十年代初，我进口并组装计算机、运营并使用 BBS，并使用 DOS、Unix、Linux、Netware、早期以太网、X.25 以及通过调制解调器接入的互联网。到 1995 年，这些动手实践变成了第一份正式工作：搭建电子数据交换系统。从那时到现在，贯穿其中的脉络始终如一：把真正复杂的东西弄懂、让它运转起来，然后把它讲清楚给别人。"
    },
    "approach": {
      "title": "我如何教学",
      "body": "我选择专注于培训，因为它把深厚的技术知识与我最喜欢的那部分工作结合在了一起：用简单的方式解释复杂的概念。最好的课堂会把每个概念与学员真正需要完成的任务联系起来，这样内容才有落脚之处。真实的案例、真实的实验室，以及对理解而非死记硬背的强调。"
    },
    "cta": {
      "title": "从概念开始",
      "body": "「学习」板块解释了工具背后的理念，而工具让您可以直接动手使用它们，全部在您的浏览器中完成。",
      "learnButton": "阅读「学习」板块",
      "toolsButton": "打开工具"
    },
    "recognition": {
      "title": "荣誉",
      "body": "连续三年获得 F5 DevCentral MVP，分别在 2022、2023 和 2024 年，以表彰对 F5 技术社区的贡献。"
    }
  },
  "endorsements": {
    "eyebrow": "推荐",
    "title": "人们怎么说，用他们自己的话。",
    "intro": "{count} 条完整的推荐与评价，来自二十年的培训与咨询。这里没有任何内容被改写或编辑。",
    "provenance": "摘自 LinkedIn 推荐、Google 评价以及经核实的 Red Education 学员反馈。原始措辞与拼写均按原样保留。"
  },
  "testimonials": {
    "filterLabel": "筛选评价",
    "sourceFilter": "来源",
    "languageFilter": "语言",
    "all": "全部",
    "showing": "显示 {total} 条中的 {count} 条",
    "reply": "Red Education 回复",
    "translateLabel": "翻译",
    "translateOff": "翻译为英文",
    "translateOn": "以英文显示",
    "machineDisclaimer": "机器翻译，可能无法准确传达原始措辞。",
    "showOriginal": "显示原文",
    "hideOriginal": "隐藏原文"
  },
  "history": {
    "indexTitle": "历程",
    "indexLede": "三个时代，一条贯穿始终的脉络：把真正复杂的东西弄懂、让它运转起来，然后把它讲清楚给别人。",
    "eraLabel": "时代",
    "backToHistory": "所有时代",
    "backToAbout": "关于",
    "readNext": "继续阅读",
    "pre1996": {
      "years": "1996 年之前",
      "title": "好奇心",
      "subtitle": "进口零件、组装机器、接入早期互联网，在这一切成为工作之前。",
      "intro": "每段技术生涯都有它的「之前」。在厂商徽章和证书之前，有一个少年为了弄懂机器如何运转而把它们拆开，还有一个年轻的创业者把这份理解变成了谋生之道。正是在这里，驱动一切的本能成型了。",
      "s1Title": "与硬件打交道的实践，1991 至 1995 年",
      "s1Body": "从 1991 年起，这份工作是独立而动手的：从美国进口计算机零件，组装并销售定制的个人电脑，并为任何需要帮助的人安装、配置和维修它们。那是一个您从零件组装机器并让它运转、而非购买成品的年代。那个时代的系统直接经我之手：DOS 和 CP/M、BASIC、Turbo Pascal、早期 Windows 和办公软件，以及当时支撑小型企业运转的数据库工具，Clipper 和 dBase。",
      "s2Title": "互联网之前的网络",
      "s2Body": "网络并非始于 Web。早在宽带之前，连接的纽带就大不相同，也更难驾驭：用于本地服务器的 Novell NetWare、用于社区与文件共享的 BBS、早期以太网，以及那个时代的广域技术，X.25（在巴西称为 RENPAC）和帧中继。当互联网最终到来时，它是通过调制解调器、通过 shell 账户、SLIP 或 PPP 而来的。与这一切打交道意味着从线缆开始理解网络，这种理解后来使企业网络成为熟悉的领域。",
      "s3Title": "BBS、phreaking 与学术互联网",
      "s3Body": "那个时代真正的好奇心超越了有偿工作。那些年的探索包括运营并使用 BBS、在 phreaking 的世界里钻研电话网络、动手实践 Unix 以及早期接入学术互联网。这是在实践中学习，身处一个因别无他处可学而彼此分享知识的社区。那种习惯，钻研到真正弄懂为止，然后再把它讲出来，从未消失。",
      "s4Title": "1995 年：第一份正式工作",
      "s4Body": "1995 年，那份独立的工作变成了第一份正式工作。在由 SEBRAE-SP 孵化的公司 INTELECTA，项目是一套用于医疗与医院用品贸易的电子数据交换系统，搭建在 Novell NetWare 服务器和 PCBoard BBS 系统之上。这是一套解决真实业务问题的真实系统，它标志着兴趣与技能成为职业的那一刻。",
      "closer": "到 1995 年底，基础已经奠定：一个从底层理解机器与网络、通过搭建来学习、并且已经具备讲解本能的人。随之而来的一切，厂商、证书、遍及全球的课堂，都建立在它之上。"
    },
    "era19962020": {
      "years": "1996 – 2020",
      "title": "行业中人",
      "subtitle": "在网络与安全行业内部的二十年，搭建、弄坏并修复后来成为教学素材的系统。",
      "intro": "这是这段叙事漫长的中段，也是后来的培训为何有分量的原因。在大约二十年的时间里，工作就是实施：设计网络、运行网络、在压力下排除故障，并成为关键系统出问题时被联系的那个人。这段历程跨越数家定义了网络的公司，遍及两大洲。",
      "s1Title": "Cabletron 与 Enterasys，1996 至 2000 年",
      "s1Body": "正式的职业生涯于 1996 年在 Cabletron Systems 开始，当时它是一家总部位于新罕布什尔州罗切斯特的主要网络设备厂商。在四年半的时间里，这个岗位涵盖了现场工程与售后支持、系统工程与售前，以及自 1997 年起的认证培训。主题是那个时代的企业 LAN 与 WAN 网络：交换机、路由器、Wi-Fi 与 WLAN、网络管理、NAC 与 UAC，以及状态检测防火墙。2000 年，Cabletron 重组为四家公司，与这段职业生涯相关的部分成为 Enterasys Networks。",
      "s2Title": "Riverstone Networks，圣克拉拉，2000 至 2002 年",
      "s2Body": "下一章发生在加州。Riverstone Networks 是一家从 Cabletron 分拆出来、为城域网制造设备的公司，这意味着持 H1-B1 工作签证迁往圣克拉拉。岗位是第三级产品支持工程师兼知识管理协调员：第三级技术升级、在实验室复现客户场景、回归测试与缺陷验证，以及搭建支撑其余支持团队的知识库。涉及的技术是二十一世纪初运营商与城域世界的骨干：千兆以太网、MPLS、城域交换与路由，以及 BGP。这段时期还带来一项正式成果：作为签证流程的一部分，2001 年的一份美国学历评估认定其教育程度相当于计算机科学学士学位和工商管理学士学位。",
      "s3Title": "Cisco Systems，巴西利亚，2003 至 2004 年",
      "s3Body": "回到巴西并通过 Cisco Professional Services 工作，岗位转向了最具挑战性形态的客户关系。作为高接触运营经理兼单一联系人，工作是为巴西两大最大的联邦实体管理售后客户满意度，SERPRO，政府数据处理机构，以及 ECT-Correios，国家邮政。技术层面是 Catalyst 交换机和路由器、PIX 防火墙，以及 CSS、CSM 和 ACE 负载均衡器，但真正的工作是升级管理，以及让关键的国家基础设施持续运转。",
      "s4Title": "再回 Enterasys，随后 Juniper，2005 至 2010 年",
      "s4Body": "这十年的后半段回到厂商一侧，担任企业 LAN 网络专家。自 2005 年在 Enterasys，重点是交换机和路由器、Wi-Fi 与 WLAN、网络管理、NAC 与 UAC，以及入侵检测与防御，涵盖解决方案设计、实施、审计和培训。自 2009 年，在 Juniper Networks 通过面向拉丁美洲的 Professional Services 工作，岗位是为巴西战略合作伙伴 Telefónica Empresas 推广新产品，重点是 EX 交换机和 SRX 防火墙，并在 Level 3 和 Impsat（现 Lumen）交付 Junos-SRX 运维培训。",
      "s5Title": "渠道与咨询的岁月，2010 至 2020 年",
      "s5Body": "这个时代的最后十年在多个岗位之间顺畅流转，全都朝着这段叙事所聚焦的讲师方向汇聚。其间有一段通过经销商和分销商担任网络与安全工程师的时期，在企业交换与路由、防火墙与下一代防火墙、SSL-VPN、用户访问控制、WAN 加速以及 Juniper 和 Cisco 方案中的互联网负载均衡方面不断深化专长。重要的是，这段时期包括了转向 F5，早期在 F5 BIG-IP 上的工作定义了随后的岁月。在这段时间里，技术培训是一条持续的脉络，在任何岗位中都从未缺席。",
      "closer": "到 2020 年，画面已经完整：一个不仅学习了这些系统、而且在其中生活了二十年的人，身处厂商一侧和客户一侧，置身于设计之中和危机之中。这正是实施者带进课堂的差别。当这样的人解释某项配置为何会有某种表现时，那是因为他们曾亲眼见过它那样表现，在凌晨三点，国家邮政正等待着。"
    },
    "era2020present": {
      "years": "2020 – 至今",
      "title": "讲师",
      "subtitle": "全职技术培训，面向全球交付，一个平台接一个平台地扩展。",
      "intro": "2020 年，那条贯穿整段职业生涯的脉络成为了整匹布。在教学伴随每个岗位二十年之后，培训本身成为了工作：为全球各地的专业人士和团队提供全职、官方、认证的教学。区分这个时代的不仅是它的专注，还有横跨多个平台、有意而为且有明确时间线的扩展，每一个都建立在深厚的现场经验之上，而非取而代之。",
      "s1Title": "全职，随时待命",
      "s1Body": "自 2020 年起，工作是提供讲师主导的官方培训，线上及面授，以葡萄牙语和英语，面向全球各地的学员。授课足迹遍及澳大利亚、新加坡、印度、中欧、美国和巴西。巴西与德国双重国籍，加上赴美国和英国的旅行许可，使这种全球覆盖切实可行：在欧盟和南方共同市场不受限制的工作权利，以及前往学员所在之处的自由。",
      "s2Title": "F5，从一开始",
      "s2Body": "F5 自这个时代之初便是支点，建立在可追溯十多年的 BIG-IP 工作之上。获授权的项目涵盖整个讲师主导的 BIG-IP 目录：Local Traffic Manager、DNS、Advanced WAF、Access Policy Manager、Advanced Firewall Manager、SSL Orchestrator、BIG-IQ、iRules 开发、自动化与故障排除，从一天到四天的课程不等。与培训相伴的是动手的补充：受管的 F5 BIG-IP 实验室环境，让培训始终有一个真实的落脚之处。",
      "s3Title": "扩展，一个平台接一个平台",
      "s3Body": "区分近些年的是清晰且有时间线的推进。Extreme Networks 培训自 2021 年加入，涵盖 EXOS 交换、SD-WAN 与自动化。Fortinet 自 2024 年随后加入，重点是 FCP FortiGate Administrator 路线。Netskope 自 2025 年加入，涵盖 Netskope Security Cloud 的运营、管理、部署与集成。四个平台，每一个都是有意加入的，每一个都立足于其下同一段二十年的网络与安全实施经验。",
      "s4Title": "通过 Red Education，走向世界",
      "s4Body": "这种全球交付的主要载体是 Red Education，一家授权培训中心，向各地区的组织输送官方认证课程。岗位是全球技术培训讲师，面向由圣保罗这个基地、两本护照以及对旅行的真挚热爱所成就的国际学员授课。这种持续的合作把个人的专长转化为世界各地的组织可以预订并信赖的东西。",
      "closer": "正是在这里，贯穿整个故事的那条脉络得到了回报。早年的好奇心通过现场的岁月化为实施的深度，而那份深度如今成为每位学员所收获的：不是一个照读幻灯片的演讲者，而是一个搭建了这些系统、并能解释它们究竟如何运转、以及为何如此的人。"
    }
  },
  "vendors": {
    "indexTitle": "厂商",
    "indexLede": "其技术塑造了这段职业生涯的网络与安全公司，从线缆开始。这些是过往的关联；今日所教授的平台在「培训」板块。",
    "backToVendors": "所有厂商",
    "backToAbout": "关于",
    "technologies": "技术",
    "role": "角色",
    "years": "年份",
    "readNext": "下一家厂商",
    "cabletron": {
      "name": "Cabletron 与 Enterasys",
      "years": "1996 – 2007",
      "tagline": "职业生涯开始的地方，也是从底层学习企业 LAN 网络的地方。",
      "intro": "这个故事中最长的单一脉络贯穿一家公司及其继任者。Cabletron Systems，一家总部位于新罕布什尔州罗切斯特的主要网络设备厂商，是第一个雇主，自 1996 年起。当 Cabletron 于 2000 年重组为四家公司时，这条脉络作为 Enterasys Networks 延续下去，关联也于 2005 年在那里重新接续。两者合在一起，涵盖了塑造性的十年企业网络专长。",
      "s1Title": "Cabletron，1996 至 2000 年",
      "s1Body": "在四年半的时间里，这个岗位走过了厂商工程的整段弧线：现场工程与售后支持、系统工程与售前，以及自 1997 年起的认证培训。主题是那个时代的企业 LAN 与 WAN 网络：交换机和路由器、Wi-Fi 与 WLAN、网络管理、NAC 与 UAC，以及状态检测防火墙。正是在这里，解决方案设计、实施、审计、故障排除和升级管理的纪律被首次磨砺，也正是在这里，培训开始进入工作。",
      "s2Title": "Enterasys，2005 至 2007 年",
      "s2Body": "作为服务与支持经理回到这条脉络，重点是 Secure Routing 产品线，Enterasys 作为巴西的区域支点。工作把高级别客户支持、复杂故障排除和升级管理与本地产品管理结合在一起。技术层面扩展到涵盖网络管理、NAC 与 UAC、入侵检测与防御，以及 SIEM，贯穿企业交换与路由。Enterasys 后来于 2013 年被 Extreme Networks 收购，从而完成了把这段早期工作与今日仍在教授的平台连接起来的闭环。",
      "certs": "Cabletron Systems Engineer (CSE)，1999 年。Enterasys Systems Engineer (ESE)，2000 和 2007 年。Enterasys Certified Internetworking Engineer (ECIE)，2007 年。",
      "lineageTitle": "企业谱系",
      "lineageDesc": "Cabletron Systems，总部位于新罕布什尔州罗切斯特，于 2000 年分拆为四家公司：Enterasys、Riverstone、Aprisma 和 GNTS。Enterasys 于 2013 年被 Extreme Networks 收购。Riverstone 于 2006 年被 Alcatel-Lucent 收购。"
    },
    "juniper": {
      "name": "NetScreen 与 Juniper",
      "years": "2009 – 2014",
      "tagline": "从 NetScreen 演进为 Juniper SRX 产品线的企业交换与安全网关。",
      "intro": "Juniper Networks 于 2004 年收购了防火墙公司 NetScreen，NetScreen 的安全技术成为 Juniper 安全网关产品线的基础。与两者打交道反映了一条连续的脉络：来自 NetScreen 的 SSG 防火墙，以及随后的 SRX 网关。这种关联自 2009 年起通过 Juniper 直接展开，随后通过分销渠道延续。",
      "s1Title": "Juniper Networks，2009 至 2010 年",
      "s1Body": "通过面向巴西的 Juniper Professional Services 工作，岗位是为新推出的企业产品线推广新产品：SRX 系列安全网关和 EX 系列交换机。主要合作是与巴西战略合作伙伴 Telefónica Empresas。除售前推广之外，这段时期还带来了实际的培训：面向渠道合作伙伴和客户的 JUNOS 网络操作系统与 SRX 安全网关运维培训，包括为巴西和阿根廷的 Level 3 Communications 网络运营中心人员提供的运维培训。",
      "s2Title": "通过渠道，2010 至 2014 年",
      "s2Body": "与 Juniper 和 NetScreen 的关联通过系统集成商和经销商延续。在 CYLK，工作涵盖配置开发、概念验证与兼容性测试，以及横跨 Juniper、NetScreen 和 F5 的生产部署与故障排除。在 TDec，Juniper 加入了多厂商咨询与培训业务。那些年实际接触的产品范围很广：EX 交换机、SRX 与 NetScreen SSG 防火墙、SSL-VPN SA、J 系列路由器和受管的 AX Wi-Fi。",
      "certs": "Juniper Networks Sales Specialist, Enterprise Networking (JNSS-EN)，2010 年。Juniper Networks Sales Associate, Enterprise Networking (JNSA-EN)，2010 年。",
      "lineageTitle": "安全谱系",
      "lineageDesc": "SSG 防火墙的制造商 NetScreen 于 2004 年被 Juniper Networks 收购，并成为 Juniper SRX 安全网关产品线的基础。"
    },
    "riverstone": {
      "name": "Riverstone Networks",
      "years": "2000 – 2002",
      "tagline": "在圣克拉拉的两年，置身运营商与城域网络的前沿。",
      "intro": "这是这段职业生涯中唯一完全发生在巴西之外的篇章。Riverstone Networks，一家总部位于加州圣克拉拉、为城域网制造设备的公司，这意味着持 H1-B1 工作签证迁往美国。Riverstone 有着不寻常的谱系：最初是一家名为 Yago 的公司，约 1998 年被 Cabletron 收购，并于 2001 年通过分拆重新成为独立公司。它后来于 2006 年被 Alcatel-Lucent 收购。",
      "s1Title": "第三级支持与知识管理",
      "s1Body": "这个岗位在两年里有两个头衔：产品支持工程师兼知识管理协调员。作为第三级技术支持专家，工作是第三级升级、在实验室复现客户场景、回归测试与缺陷验证。作为知识管理协调员，则是搭建并组织支撑其余支持团队的知识库，并配合产品营销支持和内部培训。这是这段职业生涯中最深入的技术支持工作，处于接收最棘手问题的层级。",
      "s2Title": "城域网络的世界",
      "s2Body": "涉及的技术是二十一世纪初运营商与城域时代的骨干：千兆以太网、MPLS、城域交换与路由，以及包括 BGP 在内的全球 IP 路由。从事第三级厂商支持意味着看到这些系统在其边缘的表现，在那些只有大规模生产中才会出现的情况下。它还带来了正式培训：关于 Riverstone 概念、特性和配置的培训，以及关于在客户支持中识别问题和升级流程的培训。",
      "certs": "Riverstone Certified Networking Professional (RCNP)，2001 年。美国学历等值评估，认定其教育程度相当于计算机科学学士学位和工商管理学士学位，于 2001 年作为 H1-B1 签证流程的一部分完成。",
      "lineageTitle": "企业谱系",
      "lineageDesc": "Riverstone Networks 最初是一家名为 Yago 的公司，约 1998 年被 Cabletron Systems 收购，于 2001 年通过分拆重新成为独立公司，并于 2006 年被 Alcatel-Lucent 收购。"
    },
    "cisco": {
      "name": "Cisco Systems",
      "years": "2003 – 2008",
      "tagline": "作为巴西联邦客户的单一联系人，让关键的国家基础设施持续运转。",
      "intro": "通过巴西的 Cisco Professional Services 工作，这是这段职业生涯在运营上最具挑战性的形态，工作较少关乎单一技术，而更多关乎为承受不起中断的客户让关键系统持续运转。",
      "s1Title": "高接触运营，2003 至 2004 年",
      "s1Body": "作为高接触运营经理兼单一联系人，岗位是在巴西利亚和圣保罗之间，为巴西两大最大的联邦实体管理售后客户满意度：SERPRO，政府数据处理机构，以及 ECT-Correios，国家邮政。技术层面包括 Catalyst 交换机和路由器、PIX 防火墙，以及 CSS、CSM 和 ACE 内容网络与负载均衡设备。但真正的纪律是升级管理与危机管理，为利害关乎国家的客户维持高满意度。",
      "s2Title": "Cisco 培训，2007 至 2008 年",
      "s2Body": "与 Cisco 的关联也带来了正式培训的交付：IOS 和 CatOS 的概念与操作，以及第二层和第三层网络的概念、操作与故障排除，以多天课程形式进行。这把深厚的运营经验与结构化的教学结合在了一起，后者后来成为这段职业生涯的全部专注所在。",
      "ironportTitle": "单独说明：IronPort，2004 年",
      "ironportBody": "值得准确记录并与 Cisco 的工作区分开来：2004 年底与 IronPort Systems 为期三个月的短暂合作，当时它是一家独立的新兴公司，制造电子邮件安全设备，总部位于加州圣布鲁诺。工作是为其 C 系列电子邮件安全设备开展渠道开发和技术售前咨询。这完全早于 Cisco 于 2007 年收购 IronPort，因此这是与一家独立公司、而非与 Cisco 技术的独立关联，在此提及仅仅是因为该公司后来成为了 Cisco 的一部分。",
      "certs": "Cisco Certified Network Associate (CCNA)，2000 和 2005 年。Cisco Internetwork Troubleshooting (CIT)，2003 年。"
    },
    "paloalto": {
      "name": "Palo Alto Networks",
      "years": "2013 – 2015",
      "tagline": "下一代防火墙，通过分销渠道和课堂。",
      "intro": "这种关联围绕下一代防火墙技术展开，通过经销商和集成商渠道进行。这是一段过往的合作；Palo Alto 不在今日所教授的平台之列，但工作是真实且经过认证的。",
      "s1Title": "渠道咨询与培训，2013 至 2015 年",
      "s1Body": "在 TDec Network Group，Palo Alto 加入了多厂商咨询与培训业务，涵盖系统工程、解决方案架构、应用支持、实施、审计和故障排除。这种关联于 2015 年通过 Cipher Security 延续，从事售前和售后工作。技术重点是下一代防火墙和 Panorama 管理平台，它们是当时 Palo Alto 企业安全产品的核心。",
      "s2Title": "PAN-OS 培训",
      "s2Body": "这段时期包括正式培训的交付：PAN-OS 6.0 培训课程，它建立在与今日教学实践相同的、基于实验室的动手培训之上。结合 2014 年获得的认证，这确立了在该平台上的真实深度，尽管后来职业生涯的专注集中在其他技术上。",
      "certs": "Palo Alto Certified Network Security Engineer (CNSE 5.1)，2014 年。Palo Alto Networks Accredited Configuration Engineer (ACE)，2014 年。Palo Alto Networks Accredited Sales Expert (ASE)，2014 年。注：这些认证属于历史性质，未作为当前认证保持。"
    }
  },
  "training": {
    "eyebrow": "我所教授的课程",
    "title": "四个平台，由一位曾亲自运用它们的人教授。",
    "intro": "横跨 {courses} 门课程的官方、认证、讲师主导的培训，覆盖现代网络与安全核心的四个平台。每门课程都由一位授权讲师呈现，教学背后是数十年的动手实施经验。",
    "courseCount": "{count} 门课程",
    "since": "起始于",
    "representativeNote": "本目录具有代表性，并非详尽无遗。课程标题、时长和内容反映当前的公开信息，并根据官方说明加以完善。",
    "allPlatforms": "所有平台",
    "authorizedSince": "自 {year} 年起的授权讲师",
    "workingSince": "自 {year} 年起从事 {platform} 相关工作",
    "tech": {
      "switchesRouters": "企业交换机和路由器",
      "firewalls": "防火墙",
      "webCloudSecurity": "Web 和云安全"
    },
    "coursesHeading": "{count} 门课程",
    "duration": "时长",
    "delivery": "交付方式",
    "deliveryValue": "线上或面授",
    "modules": "模块",
    "aboutCourse": "关于本课程",
    "tableOfContents": "目录",
    "agendaPending": "详细的逐日议程将根据官方课程说明添加。",
    "moreFrom": "更多 {platform} 课程",
    "requestTraining": "申请此培训",
    "requestVia": "通过 {destination} 交付"
  },
  "teach": {
    "eyebrow": "我如何教学",
    "title": "在教授这些系统之前先搭建了它们的讲师。",
    "lede": "大多数技术培训由那些为了教授某个主题而去学习它的人呈现。这里恰恰相反：三十年搭建、弄坏并修复真实网络与安全系统的经验，凝练为把每个概念与它在生产中究竟如何表现联系起来的培训。",
    "s1Title": "为什么它在课堂上很重要",
    "s1Body": "解释某个功能应该如何工作，与解释它为何会那样表现，在凌晨三点、当某个关键系统不工作时，这两者之间是有差别的。前者来自手册。后者来自亲身经历过。自 1996 年起，工作就是实施：设计网络、运行网络，并成为它出问题时被联系的那个人，为厂商，也为巴西一些最大的组织。这正是每位学员所收获的深度，不是一个照读幻灯片的演讲者，而是一个在这些系统中生活过、并能解释它们究竟如何运转的工程师。",
    "s2Title": "把复杂讲清楚",
    "s2Body": "深厚的技术知识是必要的，但还不够。更稀缺的技能是把它翻译出来：把真正复杂的东西，Web 应用防火墙、身份联合、流量管理、SD-WAN，讲到让一个初次接触它的人能记住。学员们一再提到真实的案例以及清晰、有条理的方法，那种把每个概念置于他们真正要做的工作的语境中的能力。培训是贯穿这段职业生涯的脉络，自 1997 年起几乎在每个岗位中都有体现，并自 2020 年起成为全职专注所在。",
    "s3Title": "动手，而非空泛",
    "s3Body": "技术上的精通是通过实践、而非旁观建立起来的。每门课程都围绕在真实系统上的动手实验室构建，并由受管的实验室环境加以支撑，让培训始终有一个真实的落脚之处。这种形式因学员而异：面向全球的讲师主导线上培训，在更合适时进行面授，以英语或葡萄牙语。每堂课的目标都是一样的，让学员带着动手完成任务的能力离开，而不仅仅是能描述它。",
    "s4Title": "受认可、经认证且保持最新",
    "s4Body": "这种培训立足于正式认可的基础之上。连续三年的 F5 DevCentral MVP，分别在 2022、2023 和 2024 年。自 2015 年保持的 F5 认证，以及横跨四个平台的讲师授权：F5、Extreme Networks、Fortinet 和 Netskope。授课足迹遍及澳大利亚、新加坡、印度、中欧、美国和巴西，通过授权培训中心 Red Education。资质很重要，但它们是通往其下之物的捷径：对技术真实且当下的掌握。",
    "platformsTitle": "我所教授的内容",
    "platformsBody": "横跨现代网络与安全核心的四个平台的官方、认证、讲师主导的培训。每一个都通向它完整的课程目录。",
    "s5Title": "课堂之外",
    "s5Body": "造就良好培训的那份深度同样造就良好的咨询。横跨应用交付、网络安全、身份和基础设施的三十年，身处厂商一侧和客户一侧，是一种远远超出课堂的视角，延伸到架构决策、技术选型，以及那些放不进教学大纲的棘手问题。培训是专注所在；其背后的经验可供那些需要的不止一门课程的团队使用。",
    "toolsTitle": "会计算、而非猜测的工具",
    "toolsBody": "与培训相伴的是一个不断扩充的、免费且尊重隐私的网络与安全工具集，这些是完全在您的浏览器中运行、从不向任何地方发送您的数据的确定性工具。子网与 CIDR 计算、IPv6、证书与令牌检查等等，正是工程师在工作中会用到的那类日常工具。它们以与培训相同的精神打造：精确、实用且真正有用。试试这些工具，无需注册，无需追踪。",
    "toolsCta": "打开工具",
    "historyTitle": "三十年，一条贯穿始终的脉络",
    "historyBody": "从 1991 年作为少年组装计算机，历经在网络与安全行业内部的二十年，到 2020 年起的全职全球培训。如果您想了解培训背后的经验，整个故事值得一读。",
    "historyCta": "阅读完整历程",
    "ctaTitle": "让我们合作",
    "ctaBody": "无论是预订官方培训、为您的团队打造定制项目，还是把经验丰富的咨询带到棘手的问题上，大门都是敞开的。",
    "ctaButton": "联系",
    "coursesButton": "查看所有课程"
  },
  "contact": {
    "title": "联系",
    "lede": "无论是预订官方培训、为您的团队打造定制项目，还是把经验丰富的咨询带到棘手的问题上，我都很乐意听到您的来信。",
    "formHeading": "发送消息",
    "directHeading": "或直接联系",
    "formName": "您的姓名",
    "formEmail": "您的电子邮箱",
    "formTopic": "关于什么？",
    "topicTraining": "官方培训",
    "topicCustom": "团队定制项目",
    "topicAdvisory": "咨询与磋商",
    "topicOther": "其他事项",
    "formMessage": "您的消息",
    "formSend": "发送消息",
    "formSending": "发送中…",
    "formRequired": "请填写您的姓名、电子邮箱和消息。",
    "successTitle": "谢谢您。",
    "successBody": "您的消息已在途中。我会尽快回复。",
    "errorBody": "发送时出了点问题。请重试，或直接发送电子邮件。",
    "emailLabel": "电子邮箱",
    "channels": {
      "linkedin": {
        "description": "建立职业联系",
        "label": "LinkedIn"
      },
      "youtube": {
        "description": "视频与教程",
        "label": "YouTube"
      },
      "instagram": {
        "description": "幕后花絮",
        "label": "Instagram"
      },
      "training": {
        "label": "官方培训",
        "description": "通过 Red Education 预订课程"
      }
    },
    "feedbackNote": "在网站上发现了 bug、错误或不准确之处？",
    "feedbackLink": "在想法页面上分享"
  },
  "certs": {
    "title": "认证与资质",
    "lede": "在网络与安全领域三十年的正式资质。下方的讲师授权和证书是当前有效的；完整的已获资质清单，其中大部分如今属于历史性质，随后列出，供希望深入了解的人查阅。",
    "jumpToHistorical": "跳到完整清单",
    "credlyVerify": "在 Credly 验证",
    "current": "当前",
    "historical": "历史",
    "instructorTitle": "讲师授权",
    "instructorIntro": "目前获授权为以下每个平台提供官方认证培训。",
    "currentCertsTitle": "当前证书",
    "recognitionTitle": "荣誉",
    "historicalTitle": "完整清单",
    "historicalIntro": "在始于 1996 年的职业生涯中获得的资质。其中大部分属于历史性质或已过期，在此保留，以呈现它们所代表的深度。",
    "verify": "验证",
    "credly": "Credly",
    "certificate": "证书",
    "verifyCode": "代码",
    "candidateId": "ID"
  },
  "colophon_page": {
    "eyebrow": "版本说明",
    "title": "如何打造",
    "lede": "大多数网站不会解释自己。这一个会，因为它的打造方式正是它真正是什么的一部分：一次在出色合作者协助下、用心把东西做好的有意实验，以及一份值得留存的记录。",
    "concordTitle": "CONCORD",
    "concordBody1": "本站通过一套名为 CONCORD 的协议设计并打造：一位人类与三个不同 AI 系统之间的结构化协作，每个系统各司其职。这不是噱头。它是一种行之有效的方法，有其治理、其决策记录，以及一位为每一项发布的选择负责的人类。",
    "concordBody2": "前提很简单。不同的 AI 模型有不同的长处，而棘手的问题受益于在张力中并存的多种视角。因此工作按角色划分，一位人类居于中间，在它们之间架起桥梁，确认站得住脚的，否决站不住脚的。",
    "concordBody3": "CONCORD 并非取自他处。它由 Rodolfo Nützmann 为本项目设计，出于一个实际需要：如何同时借助多个各有所长的 AI 系统，而不放弃真正的工作所要求的那一条人类问责的主线。答案是给每个系统一个明确的席位，不让它们彼此协商，并让每一次往来都经由一个掌握全局的人。这样的安排有一个更古老的名字。这些 AI 系统是代理：它们按指示、代他人行事。PRIME 是委托人：真正做决定、行使判断、并承担后果与署名的一方。",
    "concordBody4": "它始于非正式的分工方式，并在整个搭建过程中固化为一套有名字的方法：固定的席位；一条高于一切的规则，即未经 PRIME 批准，任何东西都不得发布；以及一份记录每个决定缘由的书面档案。这个名字道出了目标：协和，一种经由流程有意达成的共识，而非无人看管的工具偶然产出的东西。",
    "concordPrincipal": "力量在代理一方。责任在委托人一方，且不可转移。",
    "concordMechTitle": "运作方式，简明说来",
    "mech1Label": "提议",
    "mech1Gloss": "每个席位在各自的职责范围内提出方案。",
    "mech2Label": "传递",
    "mech2Gloss": "PRIME 在各席位之间传递提议；它们从不直接协商。",
    "mech3Label": "批准",
    "mech3Gloss": "PRIME 采纳站得住脚的，否决站不住脚的。否则一切都不会发布。",
    "mech4Label": "约束",
    "mech4Gloss": "一套固定的内部规则约束着每一项产出，在每一个席位上皆然。",
    "mech5Label": "记录",
    "mech5Gloss": "一份书面的决策日志保存着每一次选择背后的理由。",
    "mech6Label": "记住",
    "mech6Gloss": "上下文、内部规则以及那份日志都以文件形式留存，从一次会话带到下一次，使这套方法得以超越任何单次对话而长存。",
    "rolesTitle": "席位",
    "rolePrime": "PRIME",
    "rolePrimeWho": "Rodolfo Nützmann",
    "rolePrimeBody": "唯一的批准者。每一个决定、每一行发布的内容，都经由一位拥有全局视野并承担最终责任的人类。AI 提出建议；PRIME 做出决定。",
    "rolePrimeModel": "人类",
    "roleAnvil": "ANVIL",
    "roleAnvilWho": "工程",
    "roleAnvilBody": "首席工程师席位。架构、代码、内容结构以及打造本身，把意图变为一个可运行、经测试、可部署的网站。",
    "roleAnvilModel": "Anthropic · Claude Opus 4.8",
    "roleScout": "SCOUT",
    "roleScoutWho": "策略与品牌",
    "roleScoutBody": "策略与定位席位。关于这是什么、为谁而做、以及它应当如何向世界介绍自己的问题。",
    "roleScoutModel": "OpenAI · ChatGPT 5.5",
    "rolePrism": "PRISM",
    "rolePrismWho": "设计",
    "rolePrismBody": "设计席位。视觉语言、排版、色彩和整体质感，被塑造为一个连贯的系统。",
    "rolePrismModel": "Google · Gemini 3.1 Pro",
    "seatsModelNote": "AI 模型版本，截至 2026 年 6 月。",
    "principlesTitle": "它是如何做出来的",
    "principlesBody": "有几条原则从始至终贯穿其中，如果您知道往哪里看，它们是可见的。",
    "p1Title": "计算，而非猜测",
    "p1Body": "本站的工具在本地、以确定性的方式计算答案。它们不会带着您的数据联系服务器，也不会估算。在您浏览器中运行的，留在您的浏览器中。",
    "p2Title": "内核开放",
    "p3Title": "以构建方式记录文档",
    "p3Body": "代码库的每个基础部分都有注释和文档，不是事后补上的东西，而是一条固定的规则。这次构建意在可读，为维护它的人，也为继承它的人。",
    "p4Title": "为服务与远行而打造",
    "p4Body": "本站是静态导出：快速、可缓存，且在运行时不依赖任何东西。它从一开始就为多语言而打造，因此无需重新构建即可触达全球受众。",
    "stackTitle": "技术栈",
    "stackBody": "对于在意的人，技术基础在此清楚说明。",
    "stackFramework": "框架",
    "stackFrameworkV": "Next.js 15 与 React 19，作为完全静态的网站导出",
    "stackI18n": "国际化",
    "stackI18nV": "next-intl，支持 {count} 种语言以及从右到左的文字",
    "stackDesign": "设计系统",
    "stackDesignV": "基于自定义令牌的主题引擎；默认主题为 Obsidian",
    "stackType": "排版",
    "stackTypeV": "正文使用 Inter，数据与代码使用 JetBrains Mono",
    "stackEngine": "工具引擎",
    "stackEngineV": "完全在浏览器中运行的确定性计算层",
    "stackSearch": "搜索",
    "stackSearchV": "客户端静态全文搜索；无搜索服务器",
    "vibeTitle": "这是 vibe coding 吗？",
    "vibeBody1": "这是个合理的问题，值得坦率回答。vibe coding 是 AI 研究者 Andrej Karpathy 于 2025 年初提出的术语，指一种构建软件的方式：你向语言模型描述你想要什么，不仔细阅读便接受它写出的内容，并以结果而非代码本身来把方向。他将其形容为放任于氛围、甚至忘了代码的存在，并明确指出这更适合快速的、用完即弃的项目，而非人们赖以为生的系统。",
    "vibeBody2": "按这个定义，本站的一部分正是这样建成的，与其遮掩，不如坦承。应用的外层、框架的接线、各个组件、样式，以及把页面串联起来的管路，是与一位 AI 工程师一道快速产出的，由结果和一套固定的内部规则来引导，而非逐行手敲。对于这一层，错误显而易见且易于纠正，速度才是要义。",
    "vibeBody3": "最要紧的部分则要遵循另一套标准。凡是计算你数据的，都经过验证，而非凭感觉：每件工具的核心都对照其所实现的公开标准、相关的 RFC 与规范来核查，其输出在发布前还要对照独立的参考来源加以确认。正如程序员 Simon Willison 一句被广泛引用的话所说，你已审阅、测试并理解过的代码，根本不是 vibe coding。Karpathy 本人如今把这种有纪律的版本称为 agentic engineering：既保留 AI 的杠杆，又不让结果的质量打折。这正是本项目所划定的界线。在速度免费之处求快，在紧要之处从严，并由一个人对这一切负责。",
    "closingTitle": "关于方法的说明",
    "closingBody": "与 AI 合作者一起构建软件还足够新，以至于坦诚相告是公平的。这里没有任何内容是在没有一位人类决定它值得发布的情况下发布的。AI 是工具，是有能力的工具，但终究是工具。这项工作上的判断、责任和署名都属于人类。",
    "backHome": "返回工具",
    "standardsTitle": "标准与框架",
    "standardsLede": "这里的每个工具都实现一份已发布的规范，而非凭空猜测。解码器与计算器都依据定义其格式的文档来构建，并固定到这些文档所发布的测试向量上，因此每个结果都是对照事实来源核验，而不是对照自身。",
    "specsLabel": "规范",
    "specsBody": "JSON Web Tokens 遵循 RFC 7519，签名与算法见 RFC 7515 与 7518；PKCE 是 RFC 7636；Base64 及其同类是 RFC 4648；UUID 是 RFC 9562（于 2024 年取代 RFC 4122，并自带测试向量）；HMAC 是 RFC 2104，基于在 FIPS 180-4 与 FIPS 202 中标准化的 SHA 系列；X.509 证书是 RFC 5280；IPv4 与 CIDR 记法是 RFC 4632；IPv6 寻址及其规范文本形式是 RFC 4291 与 RFC 5952；而 cipher suite 解码器以官方 IANA TLS Cipher Suites 注册表为依据，并与 TLS 1.3 与 1.2 规范（RFC 8446 与 5246）、设定“Recommended”列的注册表更新规则（RFC 8447）以及 RC4 禁用规定（RFC 7465）交叉比对。凡是以注册表为权威之处，其数据均直接内置，而非重新录入。",
    "vectorsLabel": "黄金向量",
    "vectorsBody": "每个工具都附带一组黄金向量：已知的输入与已知正确的输出相配对，取自相关 RFC 与标准机构。它们在每次构建时运行，因此任何悄然改变结果的重构都会让构建失败，而不会发布出去。",
    "owaspLabel": "OWASP",
    "owaspBody": "安全工具依据 OWASP 的框架来定义，而非临时拼凑。密码学与 TLS 工具对应 OWASP Top 10 中的 Cryptographic Failures 与 Security Misconfiguration 领域，以及 Application Security Verification Standard 中相应的核查项；令牌工具遵循 OWASP 关于检查与验证 JWT 的指南。OWASP 的 prevention cheat sheets 也为接下来要构建的内容设定了硬性规则：此处新增的任何 XML 或 SAML 处理，发布前都必须针对 XXE 加固。",
    "redblueLabel": "红队与蓝队",
    "redblueBody": "同样的解码与解释，既让红队成员读懂截获的令牌，也让蓝队成员理解自己的技术栈在发出什么。本平台有意站在这条线的分析一侧：它识别、解码、转换并解释，而不会走到伪造、注入或攻破控制的地步。这条边界是设计决策，而非疏忽；这些工具是为了教学与诊断，而不是为了成为武器。",
    "localLabel": "本地且确定",
    "localBody": "一切都在浏览器中运行。工具调用一个纯函数：相同的输入返回相同的输出，不保存任何状态，也不向服务器发送任何内容。没有 Cookie，没有分析统计，正如隐私页面所完整说明的那样。",
    "thanksTitle": "特别鸣谢",
    "p2Body": "每个工具运行的确定性逻辑就是工具的全部：没有隐藏的服务器步骤，没有账户，也没有遥测。一切都在你的浏览器中运行。",
    "changelogLink": "更新日志"
  },
  "support": {
    "title": "支持这个项目",
    "lede": "这些工具是免费的，并且打造之初就意在保持免费。如果它们为您节省了时间，欢迎您为它们的维护出一份力。完全自愿，始终如此。",
    "tipHeading": "留下打赏",
    "tipBlurb": "每一笔贡献都直接用于支持这些工具以及投入其中的时间。",
    "zeroCommission": "0% 抽成。链接直达服务商；本站从不处于支付路径之中。",
    "placeholder": "支持选项正在设置中，很快会出现在这里。"
  },
  "machineTranslation": {
    "notice": "本页由机器翻译，可能包含错误。",
    "cta": "帮助改进"
  },
  "contribute": {
    "eyebrow": "翻译",
    "title": "帮助改进翻译",
    "lede": "这里除英文之外的每一种语言都是由机器生成的初稿。如果您会说其中某种语言并发现有错误或别扭之处，非常欢迎您的更正。以下是提交的方法。",
    "howTitle": "如何贡献",
    "howBody": "英文是事实来源，其他每种语言都是从它翻译而来的，因此可能存在错误。每个语言包都是一个包含带标签短语的单一文本文件。下载您想改进的那个，只修改每个标签后面的文本，并让标签以及花括号内的任何内容保持原样。然后通过电子邮件发送修改后的文件，并注明语言。每一份提交都会经人工审核。",
    "downloadHeading": "语言包",
    "referenceTag": "参考",
    "emailHeading": "发送您的贡献",
    "backHome": "返回工具"
  },
  "admin": {
    "eyebrow": "管理",
    "title": "网站管理",
    "lede": "本站可选功能与设置的控制界面。",
    "previewBanner": "预览框架。在静态网站上，这些控件显示管理界面的预览；实时控制由服务层启用。此处的更改不会被保存。",
    "featuresTitle": "功能",
    "flagRequestTraining": "申请此培训",
    "flagRequestTrainingDesc": "课程和平台页面上的潜在客户生成 CTA。",
    "flagTipJar": "TipJar",
    "flagTipJarDesc": "支持页面上的创作者支持链接。",
    "flagToolFunding": "工具资助",
    "flagToolFundingDesc": "针对单个工具的支持界面。",
    "flagToolProvenance": "工具来源",
    "flagToolProvenanceDesc": "针对单个工具的致谢与来源面板。",
    "routingTitle": "潜在客户路由",
    "routingDefaultLabel": "全局默认",
    "routingNoOverrides": "未配置平台或课程覆盖。",
    "contactTitle": "联系",
    "contactEmailLabel": "电子邮箱",
    "contactFormLabel": "表单提交",
    "formMailto": "mailto 回退（无后端）",
    "formEndpoint": "提交到端点",
    "tipJarTitle": "TipJar 服务商",
    "tipConfigured": "已配置",
    "tipNotConfigured": "未配置",
    "on": "开",
    "off": "关",
    "accessTitle": "访问控制",
    "accessNote": "只有这些联合身份才能拥有管理访问权限。由服务层在服务器端强制执行；静态网站不进行身份验证。",
    "accessFederatedOnly": "仅限联合登录。无本地回退账户。",
    "accessRoleLabel": "角色",
    "accessPermsLabel": "所有者权限"
  },
  "api": {
    "title": "API",
    "lede": "本站的工具在你的浏览器中运行，并把你的数据留在你的设备上。对于自动化（脚本、流水线和集成），同样的确定性计算以一个小型 HTTP API 的形式提供。它是浏览器工具的程序化对应物，而非其替代品。",
    "privacyTitle": "这对你的数据意味着什么",
    "privacyBody": "该 API 只接收你发送给它的输入，计算出结果并返回。它是无状态的，不记录任何查询值或请求体。如果你需要有保证的零数据外发，请使用浏览器工具，或自行运行开放引擎。",
    "engineTitle": "与浏览器相同的引擎",
    "specTitle": "规范",
    "specBody": "完整契约以 OpenAPI 3.1 发布。下载它、让你自己的工具指向它，或阅读下方的参考。",
    "downloadSpec": "下载 openapi.yaml",
    "baseUrlLabel": "基础 URL",
    "authLabel": "身份验证",
    "authValue": "无。这是一个公开的只读 API。",
    "referenceTitle": "参考",
    "loading": "正在加载规范。",
    "loadError": "无法加载规范。",
    "tryItTitle": "试一试",
    "tryItSend": "发送",
    "tryItRunning": "运行中。",
    "tryItHint": "在此源的实时 API 上运行。你的输入会被发送到该端点。",
    "paramsTitle": "参数",
    "responsesTitle": "响应",
    "schemasTitle": "模式",
    "exampleLabel": "示例",
    "requiredLabel": "必填",
    "fieldLabel": "字段",
    "typeLabel": "类型",
    "descriptionLabel": "说明",
    "viewReference": "参考",
    "viewSwagger": "Swagger UI",
    "swaggerLoadError": "无法加载 Swagger UI。",
    "engineBody": "每个端点都运行与浏览器内工具相同的纯函数，因此 API 和浏览器返回逐字节一致的结果。"
  },
  "license_page": {
    "eyebrow": "条款",
    "title": "许可",
    "closedHeading": "闭源：本网站",
    "closedBody": "网站本身是闭源的。其设计、界面、文字内容（包括每一篇 Learn 文章）、品牌，以及这些工具在此处被组合与呈现的特定方式，均为专有财产，保留所有权利。未经事先书面同意，不得复制、再现、修改、再分发本网站或其内容，或据此创作衍生作品。",
    "contact": "对许可有疑问？<a>请联系我们。</a>",
    "backHome": "返回工具",
    "thirdHeading": "开源组件",
    "lede": "ronutz.com 是一件专有作品，保留所有权利。这些条款涵盖本网站及其内容。本网站构建于开源软件之上，这些软件在其各自的许可条款下使用和再分发，下方已注明。",
    "thirdBody": "本网站建立在开源工作之上。网站本身使用 Next.js 和 React 构建，并以静态导出方式发布；国际化使用 next-intl；Learn 内容通过 next-mdx-remote、gray-matter、remark-gfm 和 js-yaml 渲染；搜索由 Pagefind 提供支持。这些组件在 MIT License 下提供，next-mdx-remote 除外（Mozilla Public License 2.0）。API 参考嵌入了 Swagger UI，采用 Apache License 2.0。每个组件都保留在其各自的许可证下，完整的声明随源代码一同提供。"
  },
  "contributeIdeas": {
    "eyebrow": "欢迎你的想法",
    "title": "分享一个想法",
    "lede": "这个工具箱是为成长而打造的，而关于它该往哪里走，最清晰的信号来自使用它的人。发现了 bug、错误或不准确之处？想要一个这里还没有的工具？看到了处理某件事的更好方式，或一个你会用不同措辞表述的结果？把它发过来，任何形式的反馈都欢迎。",
    "sendTitle": "你可以发送什么",
    "sendBody": "任何形式的 bug、错误和不准确之处：行为异常的工具、错误的结果、Learn 文章中的差错，或任何看起来不对劲的东西。对已有工具的功能请求。工具箱应当拥有的新工具的想法。对 Learn 文章的更正和补充，比如更清晰的解释、更好的来源，或缺失的主题。或者只是看待某个问题的不同角度。粗略也没关系，一句话就足以开启一段对话。",
    "toolTitle": "如果你要提议一个新工具",
    "toolBody": "这里的工具是小巧、自描述的模块：一个说明工具是什么、其正确性从何而来的清单（manifest），一个完成工作的纯函数，以及一组 golden vectors，即证明它的固定输入输出对。一个好的候选会在本地以确定性方式计算（相同的输入总是产生相同的输出，结果中没有时钟、网络或随机性），把一切敏感内容保留在设备上，并把其正确性锚定在被引用的来源（如某个 RFC）而非观点上。你无需构建这些就能提议一个：只需描述它应当计算什么、一个示例，以及它所依据的来源。",
    "fitRule": "一个简单的判断标准即可决定。这里的每个工具都完全在你的浏览器中运行，不会把任何内容发送到任何地方，因此新工具必须是计算机仅凭你输入的内容、依照固定且公开的规则就能算出的东西。如果它需要联网、实时查询、让你登录或记住你，就不适合放在这里。",
    "fitYes": "适合：",
    "fitYesBody": "解码或解释你粘贴的内容（令牌、证书、配置、命令输出），在格式之间转换，依据标准或公式计算，或按规则生成，例如 UUID、哈希或命令行。",
    "fitNo": "不适合：",
    "fitNoBody": "任何需要联网或实时检查的东西（测试真实网站、查询在线 DNS 服务器、扫描地址），任何需要账户、登录或已保存数据的东西，或任何答案并非由公开标准确定的东西。",
    "fitUnsure": "不确定你的想法属于哪一边？还是发过来，并说明它应该做什么。我会诚实地告诉你它是否适合，以及原因。",
    "emailTitle": "如何联系我",
    "emailBody": "电子邮件就是渠道。告诉我你发现了什么或想要什么，并提供足够的细节以便采取行动：一个示例、一个链接、确切的措辞，凡是合适的都行。只要它能让工具箱变得更好，就会被构建出来。",
    "emailLabel": "电子邮件",
    "backToTools": "返回工具箱"
  },
  "languageStatus": {
    "title": "翻译状态",
    "reviewed": "由人工审校",
    "complete": "机器翻译，完整",
    "partial": "机器翻译，进行中",
    "explainTitle": "翻译如何标记",
    "explainBody": "英语和巴西葡萄牙语由人工撰写和审校。大多数其他语言为机器翻译，并按完成进度标记：当某种语言覆盖整个网站时显示琥珀色，当较新的内容仍为英语、尚在补充时显示黄色。标记为红色的语言尚无翻译，目前以英语显示。机器翻译的页面还会带有简短提示，欢迎你帮助改进其中任何一个。",
    "stub": "尚未翻译"
  },
  "changelog": {
    "eyebrow": "更新日志",
    "title": "最新动态",
    "lede": "持续记录本站的新工具、新的 Learn 文章以及重要变更。目前已上线 {count} 个工具。",
    "kindLaunch": "发布",
    "kindTool": "新工具",
    "kindFeature": "功能",
    "kindI18n": "本地化",
    "kindContent": "内容",
    "kindInfra": "基础设施"
  }
}
