@consenti/api 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/README.md +578 -143
  2. package/dist/chunk-COR72NFQ.js +2 -0
  3. package/dist/chunk-COR72NFQ.js.map +1 -0
  4. package/dist/chunk-S2IEYESR.js +2 -0
  5. package/dist/chunk-S2IEYESR.js.map +1 -0
  6. package/dist/dashboard/assets/ApiConfig-CZMtYRfK.js +1 -0
  7. package/dist/dashboard/assets/ArchivedProfileList-BlQ2gEWz.js +1 -0
  8. package/dist/dashboard/assets/AuditLog-BpZoAFOe.js +1 -0
  9. package/dist/dashboard/assets/ChangePassword-BZkP2dXQ.js +1 -0
  10. package/dist/dashboard/assets/ConfirmDialog-BDlnfTdx.js +1 -0
  11. package/dist/dashboard/assets/ConsentList-DgJMrhih.js +1 -0
  12. package/dist/dashboard/assets/ConsentTemplateEditor-DA7B5aI_.js +1 -0
  13. package/dist/dashboard/assets/ConsentTemplateList-DMPd2y5s.js +1 -0
  14. package/dist/dashboard/assets/HeadingTagInput-D2S9xDMJ.js +1 -0
  15. package/dist/dashboard/assets/HowItWorks-CJCrdr3o.js +1 -0
  16. package/dist/dashboard/assets/PermissionGate-C69dhwV1.js +1 -0
  17. package/dist/dashboard/assets/PreviewPane-D7mDeBT8.js +38 -0
  18. package/dist/dashboard/assets/ProfileEditor-CSFdOweN.js +2 -0
  19. package/dist/dashboard/assets/ProfileList-C4cIDrM6.js +1 -0
  20. package/dist/dashboard/assets/ProfileVersionHistory-CX5-Oupy.js +3 -0
  21. package/dist/dashboard/assets/RecordDetailModal-DIpGxfqA.js +1 -0
  22. package/dist/dashboard/assets/Reports-B1Ww0ovT.js +1 -0
  23. package/dist/dashboard/assets/RoleList-CQ1GjR0W.js +1 -0
  24. package/dist/dashboard/assets/Select-C_JusbT5.js +1 -0
  25. package/dist/dashboard/assets/Settings-sIMVWQ0V.js +1 -0
  26. package/dist/dashboard/assets/SetupWizard-ChFBxqo3.js +1 -0
  27. package/dist/dashboard/assets/Table-BUxoz0YR.js +1 -0
  28. package/dist/dashboard/assets/TenantList-DCsT7ghb.js +1 -0
  29. package/dist/dashboard/assets/UITemplateEditor-BAaMnuOU.js +2 -0
  30. package/dist/dashboard/assets/UITemplateList-C3UMbnfs.js +1 -0
  31. package/dist/dashboard/assets/UserList-CHGNnS50.js +1 -0
  32. package/dist/dashboard/assets/VendorList-C-sswM1A.js +1 -0
  33. package/dist/dashboard/assets/VisitorList-DNB9Ia72.js +1 -0
  34. package/dist/dashboard/assets/check-D0g4XvmN.js +1 -0
  35. package/dist/dashboard/assets/client-CYntrO2g.js +1 -0
  36. package/dist/dashboard/assets/copy-DEi_W2TM.js +1 -0
  37. package/dist/dashboard/assets/createLucideIcon-DAiYBrnd.js +1 -0
  38. package/dist/dashboard/assets/de-jwngydrC.js +25 -0
  39. package/dist/dashboard/assets/debounce-DlvAAT2V.js +1 -0
  40. package/dist/dashboard/assets/dist-GoiMJCTt.js +1 -0
  41. package/dist/dashboard/assets/es-B6Jp0OPe.js +25 -0
  42. package/dist/dashboard/assets/external-link-CFZxxe3W.js +1 -0
  43. package/dist/dashboard/assets/fr-CshYcQPW.js +25 -0
  44. package/dist/dashboard/assets/index-Cr5M1Qy_.css +2 -0
  45. package/dist/dashboard/assets/index-Tr_BcjkN.js +26 -0
  46. package/dist/dashboard/assets/ja-CgjZNBrc.js +25 -0
  47. package/dist/dashboard/assets/profiles-C_SuoLJD.js +1 -0
  48. package/dist/dashboard/assets/roles-D7L936FV.js +1 -0
  49. package/dist/dashboard/assets/rotate-ccw-clock-6y2NDrJ7.js +1 -0
  50. package/dist/dashboard/assets/search-DKwfLBOv.js +1 -0
  51. package/dist/dashboard/assets/templates-CIyMjskA.js +1 -0
  52. package/dist/dashboard/assets/templates-DY68xNys.js +1 -0
  53. package/dist/dashboard/assets/trash-2-eX9s6x8V.js +1 -0
  54. package/dist/dashboard/assets/trash-O30ycMcz.js +1 -0
  55. package/dist/dashboard/assets/useHashQuery-BDjUPXDR.js +1 -0
  56. package/dist/dashboard/assets/users-BRrNOK0W.js +1 -0
  57. package/dist/dashboard/assets/x-BhZiH8AL.js +1 -0
  58. package/dist/dashboard/assets/zh-CN-BnLZkfBC.js +25 -0
  59. package/dist/dashboard/index.html +4 -2
  60. package/dist/dist-QJYW5KUK.js +2 -0
  61. package/dist/dist-QJYW5KUK.js.map +1 -0
  62. package/dist/index.cjs +90 -101
  63. package/dist/index.cjs.map +1 -1
  64. package/dist/index.d.cts +847 -150
  65. package/dist/index.d.ts +847 -150
  66. package/dist/index.js +90 -101
  67. package/dist/index.js.map +1 -1
  68. package/dist/profiles-FCX454HS.js +2 -0
  69. package/dist/profiles-FCX454HS.js.map +1 -0
  70. package/dist/widget/widget.css +1 -1
  71. package/dist/widget/widget.js +1 -1
  72. package/package.json +32 -17
  73. package/dist/dashboard/assets/de-DwE2aQfW.js +0 -5
  74. package/dist/dashboard/assets/es-Dq88TWkB.js +0 -5
  75. package/dist/dashboard/assets/fr-o_Pyg8eR.js +0 -5
  76. package/dist/dashboard/assets/index-BSsYDdb9.js +0 -40
  77. package/dist/dashboard/assets/index-bOTGevzl.css +0 -2
  78. package/dist/dashboard/assets/ja-CwgXYmpD.js +0 -5
  79. package/dist/dashboard/assets/zh-CN-ety9KoQ0.js +0 -5
@@ -0,0 +1,25 @@
1
+ var e={_section_nav:`── 导航 ──────────────────────────────────────────`,"nav.dashboard":`仪表盘`,"nav.consentBanners":`同意横幅`,"nav.consentTemplates":`Cookie 模板`,"nav.uiTemplates":`UI 模板`,"nav.profiles":`配置文件`,"nav.consents":`同意记录`,"nav.visitors":`访客`,"nav.users":`用户`,"nav.roles":`角色`,"nav.sites":`站点`,"nav.vendors":`TCF 供应商`,"nav.reports":`报告`,"nav.audit":`审计日志`,"nav.api":`API`,"nav.settings":`设置`,"nav.adminDashboard":`管理仪表盘`,_section_layout:`── 布局 ───────────────────────────────────────────`,"layout.expandSidebar":`展开侧边栏`,"layout.collapseSidebar":`收起侧边栏`,"layout.signOut":`退出登录`,"layout.toggleDark":`切换到深色模式`,"layout.toggleLight":`切换到浅色模式`,"layout.poweredBy":`技术支持`,_section_common:`── 通用 ───────────────────────────────────────────`,"common.loading":`加载中…`,"common.searching":`搜索中…`,"common.save":`保存`,"common.saving":`保存中…`,"common.cancel":`取消`,"common.close":`关闭`,"common.delete":`删除`,"common.edit":`编辑`,"common.create":`创建`,"common.confirm":`确认`,"common.noData":`暂无数据`,"common.search":`Search…`,"common.perPage":`每页`,"common.goToPage":`跳转到页面`,"common.pageOfTotal":`第 {{page}} 页,共 {{total}} 页`,"common.noResults":`No results match your search.`,"common.exportCsv":`导出 CSV`,"common.duplicate":`复制`,"common.active":`启用`,"common.inactive":`停用`,"common.name":`名称`,"common.email":`邮箱`,"common.status":`状态`,"common.created":`创建时间`,"common.id":`ID`,"common.add":`添加`,"common.remove":`移除`,"common.revoke":`撤销`,"common.required":`必填`,"common.version":`版本`,"common.locale":`语言区域`,"common.country":`国家`,"common.source":`来源`,"common.grantAll":`全部允许`,"common.revokeAll":`全部撤销`,"common.granted":`已允许`,"common.page":`第 {{n}} 页`,"common.prev":`上一页`,"common.next":`下一页`,"common.you":`你`,"common.default":`默认`,"common.hide":`隐藏`,"common.show":`显示`,"common.activate":`启用`,"common.deactivate":`停用`,"common.newRole":`新角色`,"common.copyToClipboard":`复制到剪贴板`,"common.back":`返回`,"common.copyId":`复制 ID`,"common.mandatory":`必需`,"common.optional":`可选`,"common.roles":`角色`,"common.showPassword":`显示密码`,"common.hidePassword":`隐藏密码`,"common.updated":`已更新`,"common.locked":`已锁定`,_section_locale:`── 语言切换 ───────────────────────────────────────`,"locale.en":`英语`,"locale.switcherAria":`切换语言`,_section_login:`── 登录 ───────────────────────────────────────────`,"login.title":`{{appName}} 管理后台`,"login.subtitle":`登录到您的账户`,"login.email":`邮箱`,"login.emailPlaceholder":`admin@example.com`,"login.password":`密码`,"login.submit":`登录`,"login.submitting":`正在登录…`,"login.error.invalid":`邮箱或密码无效`,"login.devSignIn":`⚡ 开发:以 user@consenti.dev 身份登录`,_section_setupWizard:`── 设置向导 ─────────────────────────────────────`,"setupWizard.welcome.title":`欢迎使用 {{appName}}`,"setupWizard.welcome.body":`我们来设置您的同意管理。只需一分钟——我们会展示当前的配置,并帮助您安装一套初始的合规配置文件。`,"setupWizard.welcome.docsLink":`查看文档`,"setupWizard.welcome.howItWorksLink":`了解 Consenti 的工作原理`,"setupWizard.welcome.getStarted":`开始设置`,"setupWizard.welcome.skip":`跳过设置`,"setupWizard.config.title":`您的配置`,"setupWizard.config.subtitle":`以下是 Consenti 根据您的配置和环境变量解析出的结果,并与合理的默认值合并。敏感信息已隐藏。`,"setupWizard.back":`上一步`,"setupWizard.continue":`继续`,"setupWizard.profiles.title":`默认合规配置文件`,"setupWizard.profiles.subtitle":`Consenti 提供 8 个预置的合规配置文件,覆盖主要的全球隐私法规。请选择现在要安装的配置文件——之后也可以随时添加。`,"setupWizard.profiles.selectAll":`安装全部 8 个默认配置文件`,"setupWizard.profiles.installAndContinue":`安装并继续`,"setupWizard.profiles.skipAndContinue":`跳过并继续`,"setupWizard.profiles.error":`无法安装所选的配置文件。您可以稍后在“配置文件”页面重试。`,"setupWizard.confirmation.title":`一切就绪`,"setupWizard.confirmation.seededSummary":`已安装 {{count}} 个合规配置文件。`,"setupWizard.confirmation.noneSeeded":`未安装任何配置文件——您可以随时在“配置文件”页面创建。`,"setupWizard.confirmation.readinessTitle":`上线前须知`,"setupWizard.confirmation.readinessJsonStorage":`您目前使用的是 JSON 文件存储驱动——适合开发环境,但生产环境请切换为数据库驱动(node:sqlite、PostgreSQL、MySQL、MongoDB)。`,"setupWizard.confirmation.readinessDefaultCredentials":`未配置管理员凭据——Consenti 正在使用演示凭据。请在上线前设置 CONSENTI_ADMIN_EMAIL 和 CONSENTI_ADMIN_PASSWORD。`,"setupWizard.confirmation.howItWorks":`了解 Consenti 的工作原理`,"setupWizard.confirmation.goToDashboard":`前往仪表盘`,_section_dashboard:`── 仪表盘 ───────────────────────────────────────`,"dashboard.title":`仪表盘`,"dashboard.stats.totalConsents":`同意总数`,"dashboard.stats.totalVisitors":`访客总数`,"dashboard.stats.accepted":`已接受`,"dashboard.stats.acceptedSub":`≥80% 的 cookies 已授权`,"dashboard.stats.rejected":`已拒绝`,"dashboard.stats.rejectedSub":`≤20% 的 cookies 已授权`,"dashboard.chart.timeline":`同意趋势(最近 30 天)`,"dashboard.chart.timelineAria":`同意趋势图表`,"dashboard.chart.countries":`热门国家`,"dashboard.chart.noData":`暂无数据。`,"dashboard.chart.noCountryData":`暂无国家数据。`,"dashboard.gpc.label":`GPC 检测率`,"dashboard.gpc.sub":`{{detected}} / {{total}} 条同意记录`,"dashboard.viewReports":`查看完整报告 →`,_section_reports:`── 报告 ──────────────────────────────────────────`,"reports.title":`报告`,"reports.filters.from":`起始日期`,"reports.filters.to":`结束日期`,"reports.filters.apply":`应用`,"reports.optin.total":`决定总数`,"reports.optin.granted":`已同意`,"reports.optin.denied":`已拒绝`,"reports.optin.managed":`部分管理`,"reports.optin.byDate":`同意趋势`,"reports.optin.byDateAria":`一段时间内的同意决定`,"reports.optin.byLocale":`按语言`,"reports.category.title":`按类别`,"reports.legend.granted":`已同意`,"reports.legend.denied":`已拒绝`,"reports.legend.objected":`已反对`,"reports.legend.managed":`已管理`,_section_consents:`── 同意记录 ───────────────────────────────────────`,"consents.title":`同意记录`,"consents.filterFrom":`开始`,"consents.filterTo":`结束`,"consents.filterGpc":`仅 GPC`,"consents.records":`{{n}} 条记录`,"consents.empty":`目前还没有同意记录。`,"consents.col.visitorId":`访客 ID`,"consents.col.profile":`配置文件`,"consents.col.locale":`语言区域`,"consents.col.gpc":`GPC`,"consents.col.age":`年龄`,"consents.col.source":`来源`,"consents.col.created":`创建时间`,"consents.gpcYes":`是`,"consents.ageVerified":`已验证`,"consents.searchPlaceholder":`搜索访客、配置、语言、来源…`,"consents.detail.title":`同意记录`,"consents.detail.updated":`更新时间`,"consents.detail.consentJson":`同意数据`,"consents.detail.signature":`签名`,"consents.detail.signed":`已签名`,"consents.detail.unsigned":`未签名`,_section_visitors:`── 访客 ───────────────────────────────────────────`,"visitors.title":`访客`,"visitors.empty":`目前还没有访客记录。`,"visitors.col.visitorId":`访客 ID`,"visitors.col.country":`国家`,"visitors.col.firstSeen":`首次访问`,"visitors.col.lastSeen":`最近访问`,"visitors.searchPlaceholder":`搜索访客ID、国家…`,"visitors.detail.title":`访客`,"visitors.detail.region":`地区`,"visitors.detail.city":`城市`,_section_users:`── 用户 ──────────────────────────────────────────`,"users.title":`用户`,"users.count":`{{n}} 位用户`,"users.newUser":`+ 新建用户`,"users.createForm.title":`创建用户`,"users.createForm.namePlaceholder":`姓名`,"users.createForm.emailPlaceholder":`邮箱`,"users.createForm.passwordPlaceholder":`密码`,"users.createForm.confirmPasswordPlaceholder":`确认密码`,"users.createForm.selectRole":`选择角色…`,"users.createForm.passwordMismatch":`两次密码不一致`,"users.createForm.error":`创建用户失败`,"users.col.status":`状态`,"users.status.active":`启用`,"users.status.inactive":`停用`,"users.action.activate":`启用`,"users.action.deactivate":`停用`,"users.dialog.delete.title":`删除用户“{{name}}”吗?`,"users.dialog.delete.message":`此用户账户将被永久移除。`,_section_roles:`── 角色与权限 ───────────────────────────────────`,"roles.title":`角色与权限`,"roles.list.heading":`角色`,"roles.list.empty":`目前还没有角色。创建一个开始使用。`,"roles.form.roleNameLabel":`角色名称`,"roles.form.roleNamePlaceholder":`例如:编辑`,"roles.form.descriptionLabel":`描述`,"roles.form.descriptionPlaceholder":`可选描述`,"roles.perms.heading":`权限 — {{name}}`,"roles.perms.selectPrompt":`选择一个角色来管理权限`,"roles.perms.clickPrompt":`点击左侧角色以查看和管理其权限。`,"roles.perms.noPerms":`系统中尚未定义任何权限。`,"roles.error.load":`加载角色失败。`,"roles.error.create":`创建角色失败。`,"roles.error.update":`更新角色失败。`,"roles.error.delete":`删除角色失败。`,"roles.error.perm":`更新权限失败。`,"roles.dialog.delete.title":`删除角色“{{name}}”吗?`,"roles.dialog.delete.message":`分配了此角色的用户将立即失去其权限。`,"roles.aria.editRole":`编辑角色`,"roles.aria.deleteRole":`删除角色`,"roles.superAdminLocked":`“super_admin” 角色受保护,无法重命名、删除或更改其权限。`,_section_profiles:`── 配置文件 ───────────────────────────────────────`,"profiles.title":`配置文件`,"profiles.count":`{{n}} 个配置文件`,"profiles.countSingular":`{{n}} 个配置文件`,"profiles.newProfile":`+ 新建配置文件`,"profiles.empty":`目前还没有配置文件。创建一个开始使用。`,"profiles.search.placeholder":`Search profiles…`,"profiles.filter.status":`Status`,"profiles.filter.active":`Active`,"profiles.filter.inactive":`Inactive`,"profiles.archived.cta":`Archived Profiles`,"profiles.archived.title":`Archived Profiles`,"profiles.archived.back":`Back to profiles`,"profiles.archived.hint":`Profile-id directories found on disk with no matching database entry — deleted profiles whose version snapshots weren't. Click one to browse its version history.`,"profiles.archived.empty":`No archived profiles found.`,"profiles.archived.searchPlaceholder":`Search by profile ID…`,"profiles.archived.col.id":`Profile ID`,"profiles.archived.col.versions":`Versions`,"profiles.archived.col.lastModified":`Last Modified`,"profiles.archived.viewHistory":`View history`,"profiles.col.name":`名称`,"profiles.col.defaultLocale":`默认语言区域`,"profiles.col.templates":`模板`,"profiles.col.created":`创建时间`,"profiles.template.cookie":`Cookie:`,"profiles.template.ui":`UI:`,"profiles.action.copyId":`复制配置文件 ID`,"profiles.action.copySlug":`Copy compliance group slug`,"profiles.action.copying":`正在复制…`,"profiles.dialog.delete.title":`删除“{{name}}”吗?`,"profiles.dialog.delete.message":`此配置文件及其所有语言内容将被永久移除。`,"profiles.dialog.copy.title":`复制“{{name}}”吗?`,"profiles.dialog.copy.message":`此配置文件及其所有语言内容将被复制。`,"profiles.error.copy":`复制配置文件失败。`,"profiles.error.activate":`启用配置文件失败。`,"profiles.error.deactivate":`停用配置文件失败。`,_section_profileEditor:`── 配置文件编辑器 ───────────────────────────────`,"profileEditor.title.new":`新建配置文件`,"profileEditor.title.edit":`编辑配置文件`,"profileEditor.title.loading":`配置文件编辑器`,"profileEditor.step.config":`配置文件设置`,"profileEditor.step.templates":`模板`,"profileEditor.step.ageGateModal":`年龄验证`,"profileEditor.step.content":`内容`,"profileEditor.step.mainBanner":`主横幅`,"profileEditor.step.gpcBanner":`GPC 横幅`,"profileEditor.step.prefModal":`偏好设置模态`,"profileEditor.config.profileName":`配置文件名称`,"profileEditor.config.profileNamePlaceholder":`我的网站`,"profileEditor.config.defaultLocale":`默认语言区域`,"profileEditor.config.allowedDomains":`允许的域名`,"profileEditor.config.allowedDomainsHint":`支持通配符(*.example.com)。留空表示允许全部。`,"profileEditor.config.regulations":`合规法规`,"profileEditor.config.reg.gdprLabel":`GDPR`,"profileEditor.config.reg.gdprDesc":`欧盟/欧洲经济区选择加入。在获得同意前不会跟踪。首次访问时显示横幅。`,"profileEditor.config.reg.ccpaLabel":`CCPA`,"profileEditor.config.reg.ccpaDesc":`加州选择退出。Cookie 默认已授权。提供“请勿出售”触发器。`,"profileEditor.config.reg.cpraLabel":`CPRA`,"profileEditor.config.reg.cpraDesc":`加州 2023。销售/共享默认选择退出;敏感数据选择加入。支持 GPC。`,"profileEditor.config.reg.dpdpaLabel":`DPDPA`,"profileEditor.config.reg.dpdpaDesc":`印度 2023。类似 GDPR 的选择加入。GPC 不被识别。需要数据受托人通知。`,"profileEditor.config.darkMode":`启用深色模式`,"profileEditor.config.darkModeHint":`为使用深色主题的网站同意组件应用深色颜色令牌。`,"profileEditor.config.dpdpa.heading":`DPDPA — 同意通知所需字段`,"profileEditor.config.dpdpa.fiduciary":`数据受托人名称`,"profileEditor.config.dpdpa.fiduciaryPlaceholder":`Acme Corp Pvt Ltd`,"profileEditor.config.dpdpa.grievanceEmail":`申诉官邮箱`,"profileEditor.config.dpdpa.grievanceEmailPlaceholder":`grievance@acme.com`,"profileEditor.config.dpdpa.purpose":`用途说明`,"profileEditor.config.dpdpa.purposePlaceholder":`我们收集您的数据以个性化您的体验…`,"profileEditor.config.ageGate":`启用年龄验证`,"profileEditor.config.ageGateHint":`在显示同意选项之前要求访问者确认年龄。最低年龄因法规而异 — 13岁(COPPA)、16岁(GDPR 第8条默认值)。`,"profileEditor.config.ageGateSection.heading":`年龄验证 — 必填字段`,"profileEditor.config.ageGateSection.minimumAge":`最低年龄`,"profileEditor.config.ageGateSection.minimumAgeHint":`常见值:13岁(COPPA)、16岁(GDPR 第8条默认值)。`,"profileEditor.config.ageGateSection.requireParentalConsent":`需要家长同意`,"profileEditor.config.ageGateSection.requireParentalConsentHint":`被拒绝时,将发送家长同意请求,而不是仅拒绝全部。`,"profileEditor.templates.cookieTemplate":`Cookie 模板`,"profileEditor.templates.cookieTemplateHint":`定义偏好弹窗中显示哪些 cookie/用途。所有字段均来自模板——在配置文件中只读。`,"profileEditor.templates.selectCookie":`— 选择一个 Cookie 模板 —`,"profileEditor.templates.uiTemplate":`UI 模板`,"profileEditor.templates.uiTemplateHint":`定义横幅/弹窗布局、按钮数量和分类结构。在第 3–5 步中添加文本内容。`,"profileEditor.templates.selectUi":`— 选择一个 UI 模板 —`,"profileEditor.templates.noTemplate":`未选择模板。`,"profileEditor.templates.previewPrompt":`请选择一个 Cookie 模板和一个 UI 模板以查看实时预览。`,"profileEditor.templates.categoriesCount":`个类别`,"profileEditor.templates.buttonsTotal":`个按钮总数`,"profileEditor.content.loadDefaults":`加载默认值`,"profileEditor.content.loadDefaultsTitle":`使用符合合规要求的英文默认值填充此部分`,"profileEditor.content.loadDefaultsNotice":`默认值仅为英文 — 请使用上方的语言标签进行翻译。`,"profileEditor.content.importError":`无法解析上传的文件。请确保其符合 Consenti 语言模板格式。`,"profileEditor.content.mainBanner":`主横幅`,"profileEditor.content.gpcBanner":`GPC 横幅`,"profileEditor.content.prefModal":`偏好设置弹窗`,"profileEditor.content.heading":`标题`,"profileEditor.content.subheading":`副标题`,"profileEditor.content.bodyText":`正文`,"profileEditor.content.introText":`引言文本(可选)`,"profileEditor.content.buttonLabels":`按钮标签`,"profileEditor.content.categoryHeading":`类别标题`,"profileEditor.content.categoryDesc":`类别描述`,"profileEditor.content.categoryFallback":`类别 {{n}}`,"profileEditor.content.buttonLabelPlaceholder":`按钮文本…`,"profileEditor.content.categoryDescPlaceholder":`此 Cookie 类别的描述…`,"profileEditor.content.liDescription":`正当利益说明(可选)`,"profileEditor.content.liDescriptionPlaceholder":`我们依据正当利益,因为…`,"profileEditor.content.liDescriptionHint":`向访问者展示的、说明依据正当利益处理数据的 GDPR 利益权衡测试依据。可选 — 您也可以在上方的类别描述中说明。`,"profileEditor.content.mainBannerHeadingPlaceholder":`我们重视您的隐私`,"profileEditor.content.mainBannerBodyPlaceholder":`我们使用 Cookie 来改善您的体验…`,"profileEditor.content.gpcHeadingPlaceholder":`检测到 Global Privacy Control`,"profileEditor.content.prefHeadingPlaceholder":`隐私偏好`,"profileEditor.content.prefSubheadingPlaceholder":`在下方管理您的 Cookie 偏好。`,"profileEditor.content.prefIntroPlaceholder":`类别上方的可选引言…`,"profileEditor.content.noContent":`请在第 2 步选择一个 UI 模板以开始编辑内容。`,"profileEditor.content.loadingTemplate":`正在加载模板…`,"profileEditor.nav.nextTemplates":`下一步:模板`,"profileEditor.nav.nextContent":`下一步:内容`,"profileEditor.nav.nextAgeGate":`下一步:年龄验证`,"profileEditor.nav.nextMainBanner":`下一步:主横幅`,"profileEditor.nav.nextGpcBanner":`下一步:GPC 横幅`,"profileEditor.nav.nextPrefModal":`下一步:偏好设置模态`,"profileEditor.action.create":`创建配置文件`,"profileEditor.action.save":`保存配置文件`,"profileEditor.error.nameRequired":`配置文件名称为必填项。`,"profileEditor.error.nameRequiredContinue":`继续之前必须填写配置文件名称。`,"profileEditor.error.cookieRequired":`请选择一个 Cookie 模板。`,"profileEditor.error.cookieContinue":`请选择一个 Cookie 模板以继续。`,"profileEditor.error.uiRequired":`请选择一个 UI 模板。`,"profileEditor.error.uiContinue":`请选择一个 UI 模板以继续。`,"profileEditor.error.failed":`保存配置文件失败。`,"profileEditor.error.load":`加载配置文件失败。`,"profileEditor.table.noNoCookies":`此模板中未定义任何 cookie。`,"profileEditor.table.id":`ID`,"profileEditor.table.legalBasis":`法律依据`,"profileEditor.table.mandatory":`必需`,"profileEditor.table.gpc":`GPC`,"profileEditor.table.tcfVendor":`TCF 供应商`,"profileEditor.table.cpraCategory":`CPRA 类别`,"profileEditor.table.cookies":`Cookie`,"profileEditor.export.json":`JSON`,"profileEditor.export.csv":`CSV`,"profileEditor.export.import":`导入`,"profileEditor.export.jsonTitle":`将语言内容下载为 JSON`,"profileEditor.export.csvTitle":`将语言内容下载为 CSV 以便翻译`,"profileEditor.export.importTitle":`上传翻译后的 JSON 或 CSV`,"profileEditor.newLink":`+ 新建 ↗`,_section_consentTemplates:`── Cookie 模板 ─────────────────────────`,"consentTemplates.title":`Cookie 模板`,"consentTemplates.count":`{{n}} 个模板`,"consentTemplates.countSingular":`{{n}} 个模板`,"consentTemplates.new":`+ 新建 Cookie 模板`,"consentTemplates.empty.title":`目前还没有 Cookie 模板。`,"consentTemplates.empty.hint":`Cookie 模板定义了同意配置文件中的 Cookie/用途列表。创建一个后可在多个配置文件中复用。`,"consentTemplates.search.placeholder":`Search consent templates…`,"consentTemplates.col.name":`Name`,"consentTemplates.col.cookies":`Cookies`,"consentTemplates.col.categories":`Categories`,"consentTemplates.required":`必需`,"consentTemplates.dialog.delete.title":`删除“{{name}}”吗?`,"consentTemplates.dialog.delete.message":`此 Cookie 模板将被永久移除。关联的配置文件将失去其 Cookie 定义。`,"consentTemplates.editor.title.new":`新建 Cookie 模板`,"consentTemplates.editor.title.edit":`编辑 Cookie 模板`,"consentTemplates.editor.name":`模板名称`,"consentTemplates.editor.namePlaceholder":`例如:Google Analytics + Ads`,"consentTemplates.editor.nameRequired":`模板名称为必填项。`,"consentTemplates.editor.definitions":`Cookie 定义`,"consentTemplates.editor.empty":`目前还没有定义 Cookie。请在上方添加一个。`,"consentTemplates.editor.addCookie":`+ 添加 Cookie`,"consentTemplates.editor.idNoMatches":`没有匹配的已知键 — 你仍然可以输入自定义 ID`,"consentTemplates.editor.error.allIds":`所有 Cookie 都必须有 ID。`,"consentTemplates.editor.error.uniqueIds":`Cookie ID 必须唯一。`,"consentTemplates.editor.error.failed":`保存模板失败。`,"consentTemplates.editor.error.notFound":`未找到模板。`,"consentTemplates.editor.action.create":`创建模板`,"consentTemplates.editor.action.save":`保存模板`,"consentTemplates.editor.showTcf":`TCF 供应商`,"consentTemplates.editor.showCpra":`CPRA 类别`,"consentTemplates.editor.infoHint":`点击列标题了解更多`,"consentTemplates.editor.infoUsage":`用途`,"consentTemplates.editor.infoLaws":`监管指导`,"consentTemplates.editor.infoExamples":`示例`,"consentTemplates.col.id":`Cookie ID`,"consentTemplates.col.idShort":`ID / 名称`,"consentTemplates.col.gpc":`尊重 GPC 信号`,"consentTemplates.col.gpcShort":`GPC`,"consentTemplates.col.tcfVendor":`TCF 供应商 ID`,"consentTemplates.col.cpraCategory":`CPRA 数据类别`,"consentTemplates.col.tcfVendorShort":`TCF 供应商`,"consentTemplates.col.cpraCategoryShort":`CPRA 类别`,"consentTemplates.col.purpose":`Cookie 用途`,"consentTemplates.col.purposeShort":`用途`,"consentTemplates.purpose.necessary":`必要`,"consentTemplates.purpose.functional":`功能`,"consentTemplates.purpose.preferences":`偏好`,"consentTemplates.purpose.analytics":`分析`,"consentTemplates.purpose.marketing":`营销`,"consentTemplates.editor.purposePlaceholder":`选择用途…`,"consentTemplates.editor.error.purpose":`每个 Cookie 都必须设置用途。`,_section_uiTemplates:`── UI 模板 ─────────────────────────`,"uiTemplates.title":`UI 模板`,"uiTemplates.count":`{{n}} 个模板`,"uiTemplates.countSingular":`{{n}} 个模板`,"uiTemplates.new":`+ 新建 UI 模板`,"uiTemplates.empty.title":`目前还没有 UI 模板。`,"uiTemplates.empty.hint":`UI 模板定义同意横幅和弹窗的视觉配置——位置、按钮、类别。`,"uiTemplates.search.placeholder":`Search UI templates…`,"uiTemplates.col.name":`Name`,"uiTemplates.col.positions":`Positions`,"uiTemplates.col.buttons":`Buttons`,"uiTemplates.mainBanner":`主横幅:`,"uiTemplates.gpcBanner":`GPC 横幅:`,"uiTemplates.modal":`弹窗:`,"uiTemplates.categories":`{{n}} 个类别`,"uiTemplates.dialog.delete.title":`删除“{{name}}”吗?`,"uiTemplates.dialog.delete.message":`此 UI 模板将被永久移除。关联的配置文件将失去其 UI 设置。`,"uiTemplates.editor.title.new":`新建 UI 模板`,"uiTemplates.editor.title.edit":`编辑 UI 模板`,"uiTemplates.editor.name":`模板名称`,"uiTemplates.editor.nameRequired":`模板名称为必填项。`,"uiTemplates.editor.namePlaceholder":`例如:标准 GDPR 布局`,"uiTemplates.editor.loading":`正在加载模板…`,"uiTemplates.editor.tabMain":`主横幅`,"uiTemplates.editor.tabGpc":`GPC 横幅`,"uiTemplates.editor.tabModal":`偏好设置弹窗`,"uiTemplates.editor.mainBannerHint":`首次访问且尚未记录同意时显示。`,"uiTemplates.editor.gpcBannerHint":`检测到 GPC 信号时显示,替代主横幅(启用 autoHonorGPC)。`,"uiTemplates.editor.error.notFound":`未找到模板。`,"uiTemplates.editor.error.buttons":`所有按钮都必须有 ID。`,"uiTemplates.editor.error.uniqueButtonIds":`Button IDs must be unique.`,"uiTemplates.editor.error.customButtons":`所有“custom”操作按钮都必须选择 cookie。`,"uiTemplates.editor.error.catIds":`所有类别 ID 均为必填项。`,"uiTemplates.editor.error.uniqueCatIds":`类别 ID 必须唯一。`,"uiTemplates.editor.error.catCookies":`每个类别至少必须包含一个 cookie。`,"uiTemplates.editor.error.failed":`保存模板失败。`,"uiTemplates.editor.action.create":`创建模板`,"uiTemplates.editor.action.save":`保存模板`,_section_sites:`── 站点 / 租户 ───────────────────────────────`,"sites.title":`站点 / 租户`,"sites.createNew":`创建新站点`,"sites.namePlaceholder":`站点名称`,"sites.slugPlaceholder":`slug(例如:site-a)`,"sites.col.name":`名称`,"sites.col.slug":`Slug`,"sites.col.id":`ID`,"sites.col.created":`创建时间`,"sites.empty":`目前还没有站点。`,"sites.dialog.delete.title":`删除“{{name}}”吗?`,"sites.dialog.delete.message":`此站点及所有相关数据将被永久移除,且无法撤销。`,"sites.error.create":`创建站点失败。`,_section_vendors:`── TCF 供应商 ─────────────────────────────────`,"vendors.title":`TCF 供应商列表`,"vendors.info.title":`什么是 TCF 供应商列表?`,"vendors.searchPlaceholder":`搜索供应商…`,"vendors.gvlMeta":`GVL v{{version}} · 共 {{total}} 位供应商`,"vendors.loading":`正在加载供应商列表…`,"vendors.noResults":`未找到供应商。`,"vendors.col.id":`ID`,"vendors.col.name":`名称`,"vendors.col.purposes":`用途`,"vendors.col.liPurposes":`合法利益用途`,"vendors.col.specialPurposes":`特殊用途`,"vendors.pagination":`第 {{page}} / {{totalPages}} 页 · 共 {{total}} 位供应商`,"vendors.prev":`← 上一页`,"vendors.next":`下一页 →`,"tcfRegistration.title":`需要重新确认 TCF 注册`,"tcfRegistration.body":`compliance.tcf 已启用,cmpId 为 {{cmpId}}(版本 {{cmpVersion}}),但此注册尚未确认——TCF 将被视为已禁用:小部件中不会添加 window.__tcfapi,同意记录中也不会附带 tcfString。`,"tcfRegistration.deregistered":`此 cmpId 已于 {{date}} 在 IAB Europe 注销。在您注册新的 cmpId 并更新服务器配置之前,确认将被阻止。`,"tcfRegistration.notFound":`在缓存的 IAB CMP 列表中尚未找到此 cmpId。注册生效可能需要一些时间——请稍后点击“刷新状态”重试。`,"tcfRegistration.checkbox":`TCF 已启用,并且我们已在 IAB Europe 注册了此 cmpId({{cmpId}},版本 {{cmpVersion}})。`,"tcfRegistration.confirmButton":`确认注册`,"tcfRegistration.refreshStatus":`刷新状态`,"tcfRegistration.loadError":`无法加载 TCF 注册状态。`,"tcfRegistration.confirmError":`无法确认 TCF 注册。`,"gppRegistration.title":`需要重新确认 GPP 注册`,"gppRegistration.body":`compliance.gpp 已启用,cmpId 为 {{cmpId}}(版本 {{cmpVersion}}),但此注册尚未确认——GPP 将被视为已禁用:小部件中不会添加 window.__gpp,同意记录中也不会附带 gppString。`,"gppRegistration.checkbox":`GPP 已启用,并且我们已注册了此 cmpId({{cmpId}},版本 {{cmpVersion}})。`,"gppRegistration.confirmButton":`确认注册`,"gppRegistration.loadError":`无法加载 GPP 注册状态。`,"gppRegistration.confirmError":`无法确认 GPP 注册。`,_section_audit:`── 审计日志 ─────────────────────────────────────`,"audit.title":`审计日志`,"audit.empty":`目前还没有审计事件。`,"audit.col.time":`时间`,"audit.col.action":`操作`,"audit.col.resource":`资源`,"audit.col.resourceId":`资源 ID`,"audit.col.actor":`操作者`,"audit.actor.system":`系统`,"audit.viewHistory":`比较`,"audit.searchPlaceholder":`搜索操作、资源、操作人…`,"audit.detail.title":`审计条目`,"audit.detail.oldData":`旧数据`,"audit.detail.newData":`新数据`,_section_apiConfig:`── API 配置 ───────────────────────────────────`,"apiConfig.title":`API 配置`,"apiConfig.public.heading":`公开 API`,"apiConfig.public.about.text":`供小组件提交和管理同意使用。没有身份验证令牌——下方的允许来源是其唯一的访问控制。`,"apiConfig.public.about.link":`在 consenti.dev 上打开公开 API 参考文档`,"apiConfig.admin.heading":`管理 API`,"apiConfig.admin.about.text":`使用这些令牌从脚本、CI/CD 或服务器端集成调用 Consenti 管理 API。所有路由、请求/响应格式和身份验证头都记录在 consenti.dev 上。`,"apiConfig.admin.about.link":`在 consenti.dev 上打开管理 API 参考文档`,"apiConfig.endpoint.heading":`端点`,"apiConfig.endpoint.hint":`根据您的配置解析出的此部署的基础 URL。`,"apiConfig.origins.heading":`允许的来源`,"apiConfig.origins.hint":`只有来自这些来源的请求才会被接受。使用 * 可允许全部来源(生产环境不推荐)。`,"apiConfig.origins.publicNote":`公开 API 没有身份验证令牌——此列表是其唯一的访问控制。`,"apiConfig.origins.adminNote":`在 Bearer 令牌身份验证之上增加的一层控制。请包含此仪表盘自身的来源({{origin}}),以避免将自己锁在外面。`,"apiConfig.origins.placeholder":`https://example.com`,"apiConfig.origins.empty":`尚未配置来源——当前允许所有来源。`,"apiConfig.origins.errorDuplicate":`已在列表中。`,"apiConfig.origins.errorSave":`保存失败,请重试。`,"apiConfig.origins.remove":`移除`,"apiConfig.tokens.heading":`管理员 API 令牌`,"apiConfig.tokens.hint":`用于服务器端和 CI/CD 访问 Consenti 管理 API 的 Bearer 令牌。请作为 Authorization: Bearer <token> 传递。切勿在客户端代码中暴露——它们拥有完整的管理权限。`,"apiConfig.tokens.created":`令牌已创建——请立即复制,之后不会再次显示。`,"apiConfig.tokens.placeholder":`令牌名称(例如:CI 部署)`,"apiConfig.tokens.empty":`目前还没有令牌。`,"apiConfig.tokens.errorName":`名称为必填项`,"apiConfig.tokens.errorCreate":`创建令牌失败`,"apiConfig.tokens.col.name":`名称`,"apiConfig.tokens.col.status":`状态`,"apiConfig.tokens.col.created":`创建时间`,"apiConfig.tokens.status.active":`启用`,"apiConfig.tokens.status.revoked":`已撤销`,"apiConfig.tokens.status.expired":`Expired`,"apiConfig.tokens.col.expires":`Expires`,"apiConfig.tokens.expiresLabel":`Expires (optional)`,"apiConfig.tokens.expiresNever":`Never`,"apiConfig.tokens.dialog.title":`撤销此 API 令牌?`,"apiConfig.tokens.dialog.message":`使用此令牌的任何应用将立即失去访问权限。`,"apiConfig.tokens.reactivate":`重新启用`,"apiConfig.tokens.deleteDialog.title":`永久删除此 API 令牌?`,"apiConfig.tokens.deleteDialog.message":`这将彻底删除该令牌记录,且无法撤销。之后将无法重新启用。`,_section_settings:`── 设置 ───────────────────────────────────────`,"settings.title":`设置`,"settings.account.heading":`账户`,"settings.account.email":`邮箱:`,"settings.account.roles":`角色:`,"settings.account.id":`ID:`,"settings.account.changePassword":`修改密码`,"settings.export.heading":`导出数据`,"settings.export.hint":`下载所有同意记录或审计日志。`,"settings.export.consentCsv":`同意 CSV`,"settings.export.consentXlsx":`同意 XLSX`,"settings.export.consentJson":`同意 JSON`,"settings.export.auditCsv":`审计 CSV`,"settings.about.heading":`关于`,"settings.about.text":`Consenti v0.1.0 —— 一款开源、GDPR 风格的同意管理平台。`,"settings.about.license":`Apache 2.0 许可证。`,_section_changePassword:`── 修改密码 ───────────────────────────────────`,"changePassword.title":`修改密码`,"changePassword.hint":`请选择一个至少 12 个字符的强密码。`,"changePassword.success":`密码更新成功。`,"changePassword.newPassword":`新密码`,"changePassword.newPasswordPlaceholder":`至少 12 个字符`,"changePassword.confirmPassword":`确认新密码`,"changePassword.confirmPasswordPlaceholder":`再次输入新密码`,"changePassword.submit":`更新密码`,"changePassword.submitting":`保存中…`,"changePassword.error.minLength":`密码必须至少包含 12 个字符。`,"changePassword.error.mismatch":`两次输入的密码不一致。`,"changePassword.error.failed":`更新密码失败。`,"login.showPassword":`Show password`,"login.hidePassword":`Hide password`,"users.allowedSites":`Allowed Sites`,"users.allowedSitesHint":`(leave empty to allow all)`,"users.edit.title":`Edit User: {{name}}`,"users.edit.error.save":`Failed to save changes.`,"users.edit.resetPassword":`重置密码`,"users.edit.resetPasswordHint":`(留空以保留当前密码)`,"users.edit.newPassword":`新密码`,"users.edit.confirmNewPassword":`确认新密码`,"users.edit.passwordTooShort":`密码必须至少12个字符`,"users.superAdminLocked":`超级管理员账户受保护,无法编辑或删除。`,"users.detail.title":`用户`,"users.detail.allSites":`所有站点`,"profileEditor.import.imported":`Imported {{n}} locales: {{list}}`,"profileEditor.import.importedSingular":`Imported 1 locale: {{list}}`,"profileEditor.import.skipped":`Skipped {{n}} unrecognised locale keys: {{list}}`,"profileEditor.import.skippedSingular":`Skipped 1 unrecognised locale key: {{list}}`,"profileEditor.config.selectDefaultLocale":`Select default locale…`,"profileEditor.config.complianceGroup":`Compliance Group`,"profileEditor.config.complianceGroupNone":`None / Custom`,"profileEditor.config.customComplianceGroup":`Custom group name`,"profileEditor.config.customComplianceGroupPlaceholder":`e.g. internal-testing`,"profileEditor.config.customComplianceGroupHint":`Lower-kebab-case identifier. The widget's compliance.type config uses this to fetch the profile — required, since there's no other way to address it. Only one profile can be active per name at a time. No compliance-rule defaults are applied (those only exist for the built-in groups above).`,"profileEditor.config.gpcMode":`GPC Signal Mode`,"profileEditor.config.gpcModeDefault":`Default (inherit from compliance group)`,"profileEditor.config.gpcModePlaceholder":`Default`,"profileEditor.config.hidePoweredBy":`Hide "Powered by Consenti"`,"profileEditor.config.hidePoweredByHint":`Remove the branding link from the consent banner.`,"profileEditor.config.allowReceipt":`Allow consent receipt`,"profileEditor.config.allowReceiptHint":`Let visitors download a PDF receipt of their consent choices.`,"profileEditor.config.enhanceAccessibility":`增强无障碍`,"profileEditor.config.enhanceAccessibilityHint":`为同意组件应用WCAG 2.1 AA按钮尺寸(最小高度44px)、可见焦点环和屏幕阅读器标签。`,"profileEditor.config.showFooterMetadata":`显示页脚元数据`,"profileEditor.config.showFooterMetadataHint":`在横幅和弹窗中显示同意ID、日期、配置版本和隐私设置链接。`,"profileEditor.conflict.title":`Active profile conflict`,"profileEditor.conflict.message":`Profile "{{name}}" is already active for this compliance group. Only one profile can be active per group.`,"profileEditor.conflict.deactivate":`Deactivate "{{name}}" and activate this one`,"profileEditor.conflict.saveInactive":`Save this profile as inactive`,"profileEditor.compliance.errors.heading":`Compliance errors — fix before continuing:`,"profileEditor.compliance.warnings.heading":`Compliance warnings:`,"profileEditor.compliance.warnings.acknowledge":`I acknowledge these warnings and wish to continue`,"profileEditor.compliance.preGrantOverridden":`Pre-grant was overridden for these parameters — this compliance group requires an explicit opt-in, so "Pre Grant" cannot stay enabled.`,"profileEditor.content.selectLocale":`Select locale…`,"profileEditor.content.addLocale":`+ Add locale`,"profileEditor.content.defaultLocaleLabel":`(default)`,"profileEditor.content.copyLocale":`复制语言内容`,"profileEditor.content.copyLocaleTitle":`从另一个已编写的语言区域复制此部分内容`,"profileEditor.copyLocale.confirmTitle":`替换现有内容?`,"profileEditor.copyLocale.confirmMessage":`此部分在 {{locale}} 中已有内容。从 {{source}} 复制将删除并完全替换它。`,"profileEditor.copyLocale.confirmAction":`替换`,_section_readability:`── Readability Warnings ─────────────────────────`,"readability.headingTooLong":`Heading is {{n}} characters — keep it under 80 for readability.`,"readability.avgSentenceLong":`Average sentence length is {{n}} words — aim for 25 or fewer.`,"readability.totalWordsLong":`Text is {{n}} words long — consider keeping banner copy under 150 words.`,"consentTemplates.editor.gpcMandatoryTitle":`Mandatory cookies are never auto-denied by GPC`,"consentTemplates.editor.loadDefaultsBtn":`Click here to load default cookies list`,"consentTemplates.editor.confirmUpdate.title":`Update template used by {{n}} profiles?`,"consentTemplates.editor.confirmUpdate.titleSingular":`Update template used by 1 profile?`,"consentTemplates.editor.confirmUpdate.message":`Profiles: {{names}}.
2
+
3
+ Saving will update cookie definitions for all profiles using this template. Continue?`,"uiTemplates.editor.loadDefaultsPrompt":`Start from scratch, or load a sensible default structure (buttons, categories, positions).`,"uiTemplates.editor.loadDefaultsBtn":`Load Defaults`,"uiTemplates.editor.confirmUpdate.title":`Update template used by {{n}} profiles?`,"uiTemplates.editor.confirmUpdate.titleSingular":`Update template used by 1 profile?`,"uiTemplates.editor.confirmUpdate.message":`Profiles: {{names}}.
4
+
5
+ Saving will apply UI changes to all profiles using this template. Continue?`,"uiTemplates.editor.wizard.stepOf":`第 {{step}} 步,共 {{total}} 步`,"uiTemplates.editor.wizard.next":`下一步`,"uiTemplates.editor.wizard.back":`返回`,"uiTemplates.editor.stackButtonsOnBreakpoint":`按钮折叠宽度 (px)`,"uiTemplates.editor.stackButtonsOnBreakpointHint":`在此视口宽度以下,按钮垂直堆叠。设为0则禁用。默认: 400。`,"uiTemplates.editor.trapFocus":`锁定焦点`,"uiTemplates.editor.trapFocusHint":`当此横幅或弹窗可见时,将键盘Tab焦点限制在同意根元素内。`,"uiTemplates.editor.showForgetMe":`🗑️ 显示“忘记我”按钮`,"uiTemplates.editor.showForgetMeHint":`为已保存同意决定的访问者在偏好设置弹窗中添加自助擦除控件——这是 GDPR 第17条、CCPA/CPRA、LGPD 第18条、UK GDPR、DPDPA、KVKK、POPIA、PDPA-TH 和 APPI 等同等删除权利在小组件端的入口。通过与 API 的 DELETE /consent/:visitorId 相同的端点执行擦除。`,"uiTemplates.editor.fieldInfo.title":`字段说明`,"uiTemplates.editor.fieldInfo.headingTag.label":`标题标签`,"uiTemplates.editor.fieldInfo.headingTag.description":`用于横幅或弹窗主标题的HTML标签,决定了文档大纲以及屏幕阅读器如何播报该区域。`,"uiTemplates.editor.fieldInfo.headingTag.highlights":`请选择与页面标题层级匹配的h1–h6,不要跳级(例如页面已有h1时不要直接用h4)。
6
+ 如果不希望它被识别为标题,也可以使用自定义标签(如div、p)。
7
+ 对主横幅、GPC横幅和偏好设置弹窗分别独立生效。`,"uiTemplates.editor.fieldInfo.style.label":`样式`,"uiTemplates.editor.fieldInfo.style.description":`按钮的视觉权重——主要、次要、强调或文本。纯粹是外观设置,不会改变按钮的行为。`,"uiTemplates.editor.fieldInfo.style.highlights":`主要:视觉权重最高,通常用于主行动号召(如“全部同意”)。
8
+ 次要:视觉权重较低,背景色与主题保持中性、协调,用于备选项(如“管理偏好设置”)。
9
+ 强调:一种独立于“主要/次要”的醒目颜色——除非你自定义强调色,否则默认是红色,因此建议仅用于强烈的号召,如“全部拒绝”。
10
+ 文本:类似链接的极简样式——Consenti会为“链接”动作的按钮自动使用此样式。`,"uiTemplates.editor.fieldInfo.action.label":`动作`,"uiTemplates.editor.fieldInfo.action.description":`访问者点击此按钮时会发生的行为。`,"uiTemplates.editor.fieldInfo.action.highlights":`自定义:授予或拒绝下方选择的Cookie——用于“全部同意/全部拒绝/同意所选”。
11
+ 提交:保存访问者在偏好设置弹窗中设置的开关状态。
12
+ 管理:通过横幅按钮打开偏好设置弹窗。
13
+ 关闭:关闭横幅或弹窗,但不改变同意状态。
14
+ 链接:打开外部URL(如隐私政策)——默认使用文本样式。`,"uiTemplates.editor.fieldInfo.cookies.label":`要授予/拒绝的Cookie`,"uiTemplates.editor.fieldInfo.cookies.description":`点击此“自定义”动作按钮时,将授予或拒绝哪些Cookie用途。`,"uiTemplates.editor.fieldInfo.cookies.highlights":`当“动作”设为“自定义”时为必填项。
15
+ 使用 * 可指定所有已定义的Cookie用途(如“全部同意/全部拒绝”)。
16
+ 选择特定用途即可创建部分同意按钮,例如“仅同意分析类”。`,"uiTemplates.editor.fieldInfo.trapFocus.label":`锁定焦点`,"uiTemplates.editor.fieldInfo.trapFocus.description":`当此横幅或弹窗可见时,将键盘Tab焦点限制在同意根元素内。`,"uiTemplates.editor.fieldInfo.trapFocus.highlights":`防止Tab/Shift+Tab将焦点移动到遮罩层背后被隐藏的页面内容上。
17
+ 建议在弹窗以及任何带遮罩层的横幅上启用,以避免键盘和屏幕阅读器用户将焦点移到无法操作的内容上。
18
+ 对于没有遮罩层的非阻塞式横幅则无需启用。`,"uiTemplates.editor.fieldInfo.buttonId.label":`按钮ID`,"uiTemplates.editor.fieldInfo.buttonId.description":`此按钮的唯一机器可读标识符,例如accept-all或reject-all。`,"uiTemplates.editor.fieldInfo.buttonId.highlights":`这不是显示文本——可见的按钮文字在配置文件的内容步骤中按语言分别填写。
19
+ 必须在其所属分区(主横幅、GPC横幅、偏好设置弹窗)内唯一;由于各分区不会同时显示,同一个ID可以跨分区重复使用。
20
+ 同意日志和统计分析会用它来识别访问者点击了哪个按钮。`,"uiTemplates.editor.fieldInfo.localeSwitcher.label":`显示语言切换器`,"uiTemplates.editor.fieldInfo.localeSwitcher.description":`在此横幅或弹窗上显示语言下拉菜单,让访问者无需离开同意流程即可切换语言。`,"uiTemplates.editor.fieldInfo.localeSwitcher.highlights":`仅当配置文件的内容步骤中配置了多种语言时才有意义。
21
+ 可为主横幅、GPC横幅和偏好设置弹窗分别独立开启。`,"uiTemplates.editor.fieldInfo.forgetMe.label":`忘记我`,"uiTemplates.editor.fieldInfo.forgetMe.description":`在偏好设置弹窗的分类下方渲染一个按钮,让回访用户无需网站在其他位置额外提供链接,即可擦除其已保存的同意记录。`,"uiTemplates.editor.fieldInfo.forgetMe.highlights":`仅对已保存同意决定的访问者显示——否则没有可擦除的内容。
22
+ 通过与 widget.deleteConsent()/reConsent() 相同的 DELETE /consent/:visitorId 端点执行擦除。
23
+ 按钮文案在配置文件的内容编写步骤中按语言分别撰写,而非在此处。
24
+ 执行前触发 consenti:forgetMeRequested,执行后触发 consenti:forgotten——宿主应用可挂钩这两个事件,在其他系统中运行自己的身份验证擦除流程。
25
+ 仅适用于偏好设置弹窗——主横幅和 GPC 横幅没有对应功能。`,_section_howItWorks:`── Consenti 使用指南 ─────────────────────────────────`,"nav.howItWorks":`Consenti 使用指南`,"howItWorks.title":`Consenti 使用指南`,"howItWorks.intro":`Consenti 是一款开源、GDPR 风格的 Cookie 同意管理平台。它负责处理网站的 Cookie 同意收集、存储和报告。本指南将引导您了解主要工作流程,并介绍仪表盘的每个功能区域。`,"howItWorks.workflow.heading":`核心工作流程`,"howItWorks.workflow.step1.title":`定义 Cookie 类别`,"howItWorks.workflow.step1.desc":`前往「同意横幅 → Cookie 模板」,创建列出您网站所有 Cookie 类别(如分析、营销)的模板,并为每个类别设置法律依据和有效期。`,"howItWorks.workflow.step2.title":`设计同意界面`,"howItWorks.workflow.step2.desc":`前往「同意横幅 → UI 模板」,配置横幅和偏好弹窗的视觉布局,包括按钮文字、颜色、布局样式和类别显示方式。`,"howItWorks.workflow.step3.title":`创建同意配置文件`,"howItWorks.workflow.step3.desc":`前往「同意横幅 → 配置文件」,将 Cookie 模板与 UI 模板组合。为每种语言添加翻译文本,启用所需法规(GDPR、CCPA、DPDPA)并发布。`,"howItWorks.workflow.step4.title":`嵌入组件`,"howItWorks.workflow.step4.desc":`从「API → 配置」复制您的 API 密钥,并将 Consenti 脚本标签添加到网站 HTML 中。组件将自动获取已发布的配置文件并显示同意横幅。`,"howItWorks.workflow.step5.title":`监控与审计`,"howItWorks.workflow.step5.desc":`使用「同意记录」和「访客」页面查看实时同意记录。使用「审计日志」获取所有管理操作的不可篡改历史记录,作为合规证明。`,"howItWorks.features.heading":`仪表盘功能`,"howItWorks.features.dashboard.title":`仪表盘`,"howItWorks.features.dashboard.desc":`主屏幕显示实时 KPI——同意总数、接受率、拒绝率和时间序列图表。用于发现趋势并评估横幅变更的影响。`,"howItWorks.features.reports.title":`报告`,"howItWorks.features.reports.desc":`指定日期范围内的同意趋势,以及按类别和语言划分的明细(已同意/已拒绝/已反对)。需要 stats:view 权限。`,"howItWorks.features.consentTemplates.title":`Cookie 模板`,"howItWorks.features.consentTemplates.desc":`可复用的 Cookie 类别列表。每个类别包含 ID、法律依据(同意、合法利益、必要)、GPC 信号处理、有效期,以及可选的 TCF 供应商或 CPRA 类别映射。`,"howItWorks.features.uiTemplates.title":`UI 模板`,"howItWorks.features.uiTemplates.desc":`控制同意横幅、GPC 通知和偏好弹窗的外观。可配置按钮组、标题标签、遮罩层透明度和类别显示顺序。`,"howItWorks.features.profiles.title":`配置文件`,"howItWorks.features.profiles.desc":`配置文件是可部署的单元。它将 Cookie 模板与 UI 模板绑定,存储多语言内容,并跟踪版本号以支持回滚。每个域名同时只能有一个配置文件处于激活状态。`,"howItWorks.features.consents.title":`同意记录`,"howItWorks.features.consents.desc":`访客提交的所有同意记录的可搜索、可筛选日志。每条记录显示访客 ID、使用的配置文件、语言、GPC 信号、同意选择和时间戳。`,"howItWorks.features.visitors.title":`访客`,"howItWorks.features.visitors.desc":`您网站中唯一访客标识符的列表,包含其国家、首次访问日期和最近访问日期。访客 ID 是不存储原始 IP 地址的假名 UUID。`,"howItWorks.features.users.title":`用户`,"howItWorks.features.users.desc":`管理可登录此仪表盘的管理员账号。分配角色、激活或停用账号,并在多租户部署中将用户限制到特定站点。`,"howItWorks.features.roles.title":`角色`,"howItWorks.features.roles.desc":`定义命名权限集(如查看者、编辑者、管理员)。为每个角色分配细粒度权限(如 consent:view、profile:edit、audit:view),然后将角色分配给用户。`,"howItWorks.features.vendors.title":`供应商`,"howItWorks.features.vendors.desc":`浏览 IAB 全球供应商列表(GVL),查找 TCF 供应商 ID、声明目的和合法利益目的。在模板中配置 Cookie 类别时使用这些 ID。`,"howItWorks.features.audit.title":`审计日志`,"howItWorks.features.audit.desc":`所有管理操作的仅追加、不可篡改日志,包括配置文件保存、用户变更、API 密钥创建等。满足 GDPR 问责义务的必要记录。`,"howItWorks.features.api.title":`API 与密钥`,"howItWorks.features.api.desc":`生成和吊销 API 令牌、配置公共同意 API 的允许 CORS 来源,并浏览交互式 OpenAPI 参考文档以了解每个接口。`,"howItWorks.features.settings.title":`设置`,"howItWorks.features.settings.desc":`查看账号详情、修改密码,并将同意或审计数据导出为 CSV、XLSX 或 JSON 格式,用于离线分析或监管申报。`,"howItWorks.docs.heading":`完整文档`,"howItWorks.docs.text":`详细指南、配置参考、集成示例和在线演练场可在 Consenti 文档网站上获取。`,"howItWorks.docs.link":`打开 consenti.dev/docs →`,"howItWorks.consentFlow.heading":`端到端同意流程`,"howItWorks.consentFlow.step1.title":`小部件初始化`,"howItWorks.consentFlow.step1.desc":`Consenti脚本在访问者浏览器中加载,读取您的配置(API密钥、compliance.type)。如果已存在有效且未过期的同意Cookie,小部件将静默退出——不显示任何横幅。`,"howItWorks.consentFlow.step2.title":`检测管辖区`,"howItWorks.consentFlow.step2.desc":`如果compliance.type为'auto',小部件会调用GET /resolve-profile,传递访问者的时区、Accept-Language请求头和IP地址。服务器使用内置的国家→合规映射,将这些信号映射到complianceGroup。`,"howItWorks.consentFlow.step3.title":`获取配置文件`,"howItWorks.consentFlow.step3.desc":`小部件获取已解析complianceGroup和访问者语言对应的活跃配置文件。响应是包含所有横幅文本、Cookie类别、界面设置和法规标志的扁平JSON对象,可直接渲染。`,"howItWorks.consentFlow.step4.title":`渲染横幅`,"howItWorks.consentFlow.step4.desc":`小部件根据配置文件的界面模板渲染横幅或偏好设置弹窗。必选类别已预先勾选且不可取消。可选类别显示其法律依据(同意或合法权益)。`,"howItWorks.consentFlow.step5.title":`提交同意`,"howItWorks.consentFlow.step5.desc":`当访问者操作(全部接受、全部拒绝或保存偏好)后,小部件向API POST同意记录,包含访问者ID、配置文件版本、每个类别的状态(已授权/已拒绝/已反对)、GPC信号、时间戳和语言。`,"howItWorks.consentFlow.step6.title":`存储与审计`,"howItWorks.consentFlow.step6.desc":`API验证有效载荷,存储同意记录,并向仅追加审计日志追加一条记录。访问者记录以国家和首次/最后访问日期更新。小部件写入同意Cookie,使后续访问跳过横幅。`,"howItWorks.profileResolution.heading":`配置文件解析算法`,"howItWorks.profileResolution.intro":`当访问者到来时,Consenti通过五个步骤解析应显示的同意配置文件。`,"howItWorks.profileResolution.step1.title":`收集地理信号`,"howItWorks.profileResolution.step1.desc":`小部件向GET /resolve-profile发送三个信号:浏览器的Intl.DateTimeFormat时区、Accept-Language请求头(或lang查询参数),以及服务器端IP地址。`,"howItWorks.profileResolution.step2.title":`确定国家`,"howItWorks.profileResolution.step2.desc":`服务器按顺序尝试:(1) 通过配置的geoDataProvider进行IP地理位置解析;(2) 时区→国家查找表;(3) 语言标签→国家启发式(例如'zh'→CN)。第一个非空结果生效。`,"howItWorks.profileResolution.step3.title":`映射合规组`,"howItWorks.profileResolution.step3.desc":`在内置的国家→合规组映射中查找ISO-3166-1 alpha-2国家代码(加可选的地区/州代码)。地区覆盖(例如US/CA→optOutCalifornia)优先于国家默认值。`,"howItWorks.profileResolution.step4.title":`定位活跃配置文件`,"howItWorks.profileResolution.step4.desc":`系统在数据库中查询complianceGroup与已解析组匹配的活跃配置文件。每个complianceGroup同时只能有一个活跃配置文件。如果不存在,则返回404,小部件可能回退至profileOverride。`,"howItWorks.profileResolution.step5.title":`解析语言`,"howItWorks.profileResolution.step5.desc":`最佳语言按以下顺序选取:(1) 与小部件请求语言完全匹配;(2) 语言前缀匹配(例如'zh-TW'→'zh');(3) 提供商解析的语言;(4) 配置文件的defaultLocale。解析后的JSON从静态文件(已发布配置文件)或直接从数据库(预览)提供。`,"howItWorks.complianceGroups.heading":`合规组`,"howItWorks.complianceGroups.intro":`世界上每个国家都映射到八个合规组之一。每个组决定小部件必须遵循的同意模型。`,"howItWorks.complianceGroups.optIn.title":`optIn — GDPR / ePrivacy 严格选择加入`,"howItWorks.complianceGroups.optIn.desc":`在设置任何非必要Cookie之前,需要事先获得同意。访问者必须获得真正的拒绝选择,撤回同意必须与给予同意一样简便,并且必须提供细粒度的类别级别选择。`,"howItWorks.complianceGroups.optIn.laws":`GDPR、ePrivacy指令、英国GDPR、PECR、revFADP(瑞士)、KVKK(土耳其)、PDPA(泰国)及其他严格国家法律`,"howItWorks.complianceGroups.optIn.countries":`所有欧盟成员国、英国、瑞士、土耳其、泰国、冰岛、列支敦士登、挪威、根西岛、直布罗陀及其他具有严格ePrivacy规则的国家`,"howItWorks.complianceGroups.optInDPDPA.title":`optInDPDPA — 印度DPDPA`,"howItWorks.complianceGroups.optInDPDPA.desc":`印度2023年数字个人数据保护法要求明确的选择加入同意。额外义务:命名数据受托人、提供专用同意通知并支持数据主体权利。请在您的配置文件中设置dpdpaDataFiduciary字段。`,"howItWorks.complianceGroups.optInDPDPA.laws":`数字个人数据保护法2023(DPDPA)`,"howItWorks.complianceGroups.optInDPDPA.countries":`印度(IN)`,"howItWorks.complianceGroups.optInChina.title":`optInChina — 中国多法律框架`,"howItWorks.complianceGroups.optInChina.desc":`中国的数据治理要求根据《个人信息保护法》(PIPL)获得明确同意,并结合《数据安全法》(DSL)和《网络安全法》(CSL)的相关义务。数据跨境传输和数据分类还需满足额外要求。`,"howItWorks.complianceGroups.optInChina.laws":`个人信息保护法(PIPL)、数据安全法(DSL)、网络安全法(CSL)`,"howItWorks.complianceGroups.optInChina.countries":`中国(CN)`,"howItWorks.complianceGroups.optOutCalifornia.title":`optOutCalifornia — 加州CCPA / CPRA`,"howItWorks.complianceGroups.optOutCalifornia.desc":`数据默认可以收集,但必须为消费者提供明确的"不出售或共享我的个人信息"选择退出选项。全局隐私控制(GPC)浏览器信号必须作为有效的选择退出予以尊重。`,"howItWorks.complianceGroups.optOutCalifornia.laws":`CCPA、CPRA(加利福尼亚州消费者隐私法 / 加利福尼亚州隐私权利法)`,"howItWorks.complianceGroups.optOutCalifornia.countries":`美国——加利福尼亚州(US/CA)`,"howItWorks.complianceGroups.optOutUSState.title":`optOutUSState — 其他美国州法律`,"howItWorks.complianceGroups.optOutUSState.desc":`以加州选择退出框架为蓝本。消费者可以选择退出定向广告和个人数据销售。数个州要求尊重GPC信号。适用企业必须提供明确的选择退出机制。`,"howItWorks.complianceGroups.optOutUSState.laws":`CDPA (VA)、CPA (CO)、CTDPA (CT)、UCPA (UT)、TDPSA (TX)、DPDPA (DE)、NJDPA (NJ)、OCPA (OR)、MCDPA (MN)、MODPA (MD)、KCDPA (KY)、TIPA (TN)、NDPA (NE)、ICDPA (IA/IN)、MCDPA (MT)、NHPA (NH)、RIDTPA (RI)`,"howItWorks.complianceGroups.optOutUSState.countries":`美国——VA、CO、CT、UT、TX、DE、NJ、OR、MN、MD、KY、TN、NE、IA、IN、MT、NH、RI`,"howItWorks.complianceGroups.generalPrivacyConsent.title":`generalPrivacyConsent — 一般隐私 / 同意`,"howItWorks.complianceGroups.generalPrivacyConsent.desc":`存在一般隐私法但不强制要求PECR/ePrivacy风格的严格Cookie横幅。最佳实践是为非必要Cookie提供同意选择和清晰的隐私声明,但法律要求低于GDPR选择加入标准。`,"howItWorks.complianceGroups.generalPrivacyConsent.laws":`PIPEDA / 25号法律(CA)、LGPD(BR——使用hybridBrazil)、POPIA(ZA)、APPI(JP)、隐私法(AU/NZ)、PDPA-SG、PDPA-MY、PIPA-KR、PDPD-VN、DPA-PH、PDP-ID及其他`,"howItWorks.complianceGroups.generalPrivacyConsent.countries":`加拿大、澳大利亚、新西兰、日本、韩国、新加坡、马来西亚、南非及众多拉丁美洲、非洲和亚洲国家`,"howItWorks.complianceGroups.hybridBrazil.title":`hybridBrazil — 巴西LGPD`,"howItWorks.complianceGroups.hybridBrazil.desc":`巴西的LGPD与GDPR大体相似,但根据数据控制者的评估,分析和广告Cookie可以以合法权益为法律依据处理。横幅会显示,但类别级别的法律依据可以比严格的GDPR选择加入更灵活。`,"howItWorks.complianceGroups.hybridBrazil.laws":`通用数据保护法(LGPD)`,"howItWorks.complianceGroups.hybridBrazil.countries":`巴西(BR)`,"howItWorks.complianceGroups.noticeOnly.title":`noticeOnly — 仅隐私声明`,"howItWorks.complianceGroups.noticeOnly.desc":`不适用专用Cookie法规,或现有法规仅要求隐私声明而非强制选择加入或选择退出横幅。出于透明度考虑,显示同意横幅仍是推荐做法,但法律上并非强制要求。`,"howItWorks.complianceGroups.noticeOnly.laws":`因地而异——无专用Cookie/ePrivacy法规的国家`,"howItWorks.complianceGroups.noticeOnly.countries":`上述组别未涵盖的非洲、中亚、加勒比海和太平洋地区众多国家`,"howItWorks.enums.heading":`关键值参考`,"howItWorks.enums.legalBasis.heading":`legalBasis(Cookie类别)`,"howItWorks.enums.legalBasis.mandatory":`mandatory — 无论同意与否,类别始终处于活跃状态(例如会话、身份验证)。不会被GPC或选择退出信号阻止。`,"howItWorks.enums.legalBasis.consent":`consent — 需要访问者的明确选择加入。默认阻止;在所有选择加入管辖区被GPC阻止。`,"howItWorks.enums.legalBasis.legitimateInterest":`legitimate_interest — 依赖控制者的合法权益。默认活跃;访问者可以反对。在某些管辖区(欧盟、英国)被GPC软阻止。`,"howItWorks.enums.consentStatus.heading":`ConsentStatus(每类别记录)`,"howItWorks.enums.consentStatus.granted":`granted — 访问者明确同意该类别。`,"howItWorks.enums.consentStatus.denied":`denied — 访问者明确拒绝该类别的同意。`,"howItWorks.enums.consentStatus.objected":`objected — 访问者对合法权益类别提出异议(选择退出,而非拒绝同意)。`,"howItWorks.enums.geoProvider.heading":`geoDataProvider选项`,"howItWorks.enums.geoProvider.default":`default / timezone — 使用浏览器时区(Intl.DateTimeFormat)推断国家,回退至Accept-Language。无需额外依赖。`,"howItWorks.enums.geoProvider.language":`language — 仅从Accept-Language请求头推导国家(例如'zh'→CN,'pt'→BR)。快速但不精确。`,"howItWorks.enums.geoProvider.geoip":`geoip — 使用带有捆绑MaxMind Lite数据库的npm包geoip-lite。需要:npm install geoip-lite。`,"howItWorks.enums.geoProvider.hostedGeoipLite":`hosted-geoip-lite — 通过内置HTTPS调用ipinfo.io(无额外依赖)。每次首次访问增加约50~200毫秒延迟。`,"howItWorks.enums.geoProvider.maxmind":`maxmind — 使用带有本地GeoLite2-City.mmdb文件的npm包maxmind。最准确。需要MAXMIND_DB_PATH环境变量和npm install maxmind。`,"howItWorks.enums.geoProvider.custom":`自定义函数 — 将CountryResolverFn传递给compliance.geoDataProvider,以集成任何Geo-IP或CDN提供商。`,"consentTemplates.editor.categories":`Consent Categories`,"consentTemplates.editor.addCategory":`+ Add Category`,"consentTemplates.editor.noCategories":`No categories defined yet. Add one above.`,"consentTemplates.editor.error.noCategories":`At least one category is required.`,"consentTemplates.editor.error.catIds":`All categories must have an ID.`,"consentTemplates.editor.error.uniqueCatIds":`Category IDs must be unique.`,"consentTemplates.editor.error.catCookies":`Every category must contain at least one parameter.`,"consentTemplates.editor.error.uncategorized":`Parameter "{{id}}" is not assigned to any category.`,"consentTemplates.editor.error.multiCategory":`Parameter "{{id}}" is assigned to more than one category.`,"consentTemplates.editor.error.purposeLegalBasisMismatch":`Parameter "{{id}}" has a non-necessary purpose but is assigned to a Mandatory category — this grants a tracking parameter with no consent gate.`,"consentTemplates.editor.warning.necessaryNotMandatory":`Parameter "{{id}}" has purpose "necessary" but is assigned to a non-Mandatory category — this may break site functionality since it can be denied.`,"cookieTemplates.editor.trackerDetected":`检测到:{{vendor}}`,"consentTemplates.col.preGrantShort":`Pre Grant`,"profileEditor.config.expiryDays":`Re-consent Interval (days)`,"profileEditor.config.expiryDaysHint":`How many days until stored consent expires and the visitor is asked again.`,"profileEditor.error.expiryDays":`Expiry (days) must be at least 1.`,"profileEditor.error.customComplianceGroupRequired":`Enter a custom group name, or pick a compliance group above.`,"profileEditor.table.preGrant":`Pre Grant`,"profileEditor.table.preGrantLocked":`Already effectively pre-granted — only editable when the category's legal basis is Consent`,"profileEditor.content.receiptHeading":`Consent Receipt Checkbox`,"profileEditor.content.receiptHint":`Shown in the preference modal when "Allow consent receipt" is enabled in Step 1.`,"profileEditor.content.receiptLabel":`Checkbox label`,"profileEditor.content.receiptDescription":`Description`,"profileEditor.content.forgetMeHeading":`“忘记我”按钮`,"profileEditor.content.forgetMeHint":`当关联的 UI 模板在其偏好设置弹窗步骤中启用了“显示'忘记我'按钮”时,会显示在偏好设置弹窗中分类下方。`,"profileEditor.content.forgetMeLabel":`按钮文案`,"profileEditor.content.ageGateModal.heading":`年龄验证对话框`,"profileEditor.content.ageGateModal.headingPlaceholder":`您年满16岁了吗?`,"profileEditor.content.ageGateModal.bodyText":`正文`,"profileEditor.content.ageGateModal.bodyPlaceholder":`请在查看 Cookie 偏好设置前确认您的年龄。`,"profileEditor.content.ageGateModal.confirmButtonLabel":`“是”按钮标签`,"profileEditor.content.ageGateModal.confirmButtonPlaceholder":`是`,"profileEditor.content.ageGateModal.denyButtonLabel":`“否”按钮标签`,"profileEditor.content.ageGateModal.denyButtonPlaceholder":`否`,"profileEditor.content.ageGateModal.parentalConsent.heading":`家长同意消息`,"profileEditor.content.ageGateModal.parentalConsent.headingPlaceholder":`需要家长同意`,"profileEditor.content.ageGateModal.parentalConsent.bodyText":`正文`,"profileEditor.content.ageGateModal.parentalConsent.bodyPlaceholder":`在家长或监护人核实同意之前,将仅使用严格必要的 Cookie。`,"profileEditor.content.ageGateModal.parentalConsent.confirmButtonLabel":`“OK”按钮标签`,"profileEditor.content.ageGateModal.parentalConsent.confirmButtonPlaceholder":`OK`,"profileEditor.content.ageGateModal.loadDefaultsTitle":`使用适用于此语言的通用默认文本填充此部分`,"profileEditor.error.missingRequiredContent":`区域“{{locale}}”缺少必填内容——请查看高亮显示的标签页。`,"profileEditor.error.saveFailedMoreFields":`(还有 {{count}} 个字段需要处理)`,"profileEditor.nudge.title":`可选字段为空`,"profileEditor.nudge.headingBlank":`您未填写标题。访客将看到没有标题的横幅。`,"profileEditor.nudge.introBlank":`您未填写引言文字。访客将看到没有引言的偏好设置面板。`,"profileEditor.nudge.addNow":`立即添加`,"profileEditor.nudge.ignore":`忽略`,"profiles.error.delete":`删除配置文件失败。`};export{e as default};
@@ -6,8 +6,10 @@
6
6
  <title>Consenti Admin</title>
7
7
  <link rel="icon" type="image/x-icon" href="/consenti/favicon.ico" />
8
8
  <link rel="icon" type="image/svg+xml" href="/consenti/icon.svg" />
9
- <script type="module" crossorigin src="/consenti/assets/index-BSsYDdb9.js"></script>
10
- <link rel="stylesheet" crossorigin href="/consenti/assets/index-bOTGevzl.css">
9
+ <script type="module" crossorigin src="/consenti/assets/index-Tr_BcjkN.js"></script>
10
+ <link rel="modulepreload" crossorigin href="/consenti/assets/createLucideIcon-DAiYBrnd.js">
11
+ <link rel="modulepreload" crossorigin href="/consenti/assets/client-CYntrO2g.js">
12
+ <link rel="stylesheet" crossorigin href="/consenti/assets/index-Cr5M1Qy_.css">
11
13
  </head>
12
14
  <body>
13
15
  <div id="app"></div>
@@ -0,0 +1,2 @@
1
+ import{A as B,B as C,C as D,D as E,E as F,F as G,G as H,H as I,I as J,J as K,K as L,a as b,b as c,c as d,d as e,e as f,f as g,g as h,h as i,i as j,j as k,k as l,l as m,m as n,n as o,o as p,p as q,q as r,r as s,s as t,t as u,u as v,v as w,w as x,x as y,y as z,z as A}from"./chunk-COR72NFQ.js";import{i as a}from"./chunk-S2IEYESR.js";export{h as COMPLIANCE_GROUPS,g as COMPLIANCE_GROUP_IDS,y as COMPLIANCE_REGULATION_IDS,w as COMPLIANCE_VALIDATION_RULES,m as COOKIE_PURPOSES,n as COOKIE_PURPOSE_DEFAULTS,l as COOKIE_PURPOSE_IDS,z as COUNTRY_CODES,k as CPRA_CATEGORIES,a as DEFAULT_PROFILES,x as EMBEDDED_COMPLIANCE_MAP,i as GPC_OPTIONS,o as KNOWN_COOKIE_PURPOSES,j as LEGAL_BASIS_OPTIONS,A as LOCALES,q as TCF_PURPOSES,r as TCF_SPECIAL_FEATURES,C as TRACKER_KNOWLEDGE_BASE,t as buildCookieCategoryIndex,d as color,b as debounce,K as decodeGppString,I as decodeTcString,J as encodeGppString,H as encodeTcString,s as findCategoryForCookie,f as formatLog,u as getCookieLegalBasis,G as hasVisibleText,p as inferCookiePurpose,v as isMandatoryCookie,E as jsonToHtml,D as matchTrackerKnowledge,F as renderContentText,B as resolveComplianceMapOverride,L as resolveTextDirection,e as statusLabel,c as throttle};
2
+ //# sourceMappingURL=dist-QJYW5KUK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}