@jant/core 0.6.6 → 0.6.8
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.
- package/bin/commands/uploads/cleanup.js +1 -0
- package/dist/{app-BJkOcMbZ.js → app-9P4rVCe2.js} +396 -117
- package/dist/app-DaxS_Cz-.js +6 -0
- package/dist/client/.vite/manifest.json +3 -3
- package/dist/client/_assets/client-C6peCkkD.css +2 -0
- package/dist/client/_assets/{client-mBvc8KAT.js → client-CXnEhyyv.js} +2 -2
- package/dist/client/_assets/{client-auth-BlfwVtHz.js → client-auth-CSItbyU8.js} +360 -358
- package/dist/{env-CoSe-1y4.js → env-OHRKGcMj.js} +1 -1
- package/dist/{export-DLukCOO3.js → export-Be082J0n.js} +33 -8
- package/dist/{github-api-UD4u_7fa.js → github-api-BgSiE71w.js} +1 -1
- package/dist/{github-app-DeX6Td1O.js → github-app-BbklkFmU.js} +1 -1
- package/dist/{github-sync-BtHY2AST.js → github-sync-D1Cw8mOY.js} +3 -3
- package/dist/{github-sync-BeDecPen.js → github-sync-_kPWM4m9.js} +3 -3
- package/dist/index.js +5 -5
- package/dist/node.js +6 -6
- package/dist/{url-XF0GbKGO.js → url-BMYO-Zlt.js} +42 -2
- package/package.json +1 -1
- package/src/__tests__/bin/uploads-cleanup.test.ts +2 -0
- package/src/client/__tests__/compose-bridge.test.ts +105 -0
- package/src/client/__tests__/hydrate-partial.test.ts +27 -0
- package/src/client/__tests__/json.test.ts +94 -0
- package/src/client/__tests__/note-expand.test.ts +130 -0
- package/src/client/archive-nav.js +2 -1
- package/src/client/audio-player.ts +7 -3
- package/src/client/components/__tests__/compose-format-convert.test.ts +357 -0
- package/src/client/components/__tests__/jant-compose-dialog.test.ts +357 -0
- package/src/client/components/__tests__/jant-compose-editor.test.ts +2 -0
- package/src/client/components/__tests__/jant-compose-fullscreen.test.ts +2 -0
- package/src/client/components/compose-format-convert.ts +255 -0
- package/src/client/components/compose-types.ts +2 -0
- package/src/client/components/jant-collection-directory.ts +1 -0
- package/src/client/components/jant-collection-form.ts +1 -0
- package/src/client/components/jant-command-palette.ts +4 -0
- package/src/client/components/jant-compose-dialog.ts +106 -44
- package/src/client/components/jant-compose-editor.ts +65 -11
- package/src/client/components/jant-compose-fullscreen.ts +3 -0
- package/src/client/components/jant-nav-manager.ts +4 -0
- package/src/client/components/jant-post-menu.ts +3 -0
- package/src/client/components/jant-repo-picker.ts +3 -0
- package/src/client/components/jant-settings-general.ts +3 -0
- package/src/client/compose-bridge.ts +17 -0
- package/src/client/feed-video-player.ts +1 -1
- package/src/client/hydrate-partial.ts +25 -0
- package/src/client/json.ts +56 -2
- package/src/client/multipart-upload.ts +17 -7
- package/src/client/note-expand.ts +63 -0
- package/src/client/upload-session.ts +17 -9
- package/src/client.ts +1 -0
- package/src/i18n/locales/public/en.po +41 -0
- package/src/i18n/locales/public/en.ts +1 -1
- package/src/i18n/locales/public/zh-Hans.po +41 -0
- package/src/i18n/locales/public/zh-Hans.ts +1 -1
- package/src/i18n/locales/public/zh-Hant.po +41 -0
- package/src/i18n/locales/public/zh-Hant.ts +1 -1
- package/src/i18n/locales/settings/en.po +12 -12
- package/src/i18n/locales/settings/en.ts +1 -1
- package/src/i18n/locales/settings/zh-Hans.po +12 -12
- package/src/i18n/locales/settings/zh-Hans.ts +1 -1
- package/src/i18n/locales/settings/zh-Hant.po +12 -12
- package/src/i18n/locales/settings/zh-Hant.ts +1 -1
- package/src/lib/__tests__/markdown-to-tiptap.test.ts +1 -1
- package/src/lib/__tests__/markdown.test.ts +1 -1
- package/src/lib/__tests__/summary.test.ts +87 -0
- package/src/lib/__tests__/timeline.test.ts +48 -1
- package/src/lib/__tests__/tiptap-render.test.ts +4 -4
- package/src/lib/__tests__/url.test.ts +44 -0
- package/src/lib/__tests__/view.test.ts +168 -1
- package/src/lib/navigation.ts +1 -0
- package/src/lib/resolve-config.ts +2 -2
- package/src/lib/summary.ts +42 -3
- package/src/lib/tiptap-render.ts +6 -2
- package/src/lib/upload.ts +2 -2
- package/src/lib/url.ts +41 -0
- package/src/lib/view.ts +102 -40
- package/src/preset.css +7 -1
- package/src/routes/api/internal/__tests__/uploads.test.ts +68 -0
- package/src/routes/api/internal/sites.ts +77 -1
- package/src/routes/api/public/__tests__/archive.test.ts +66 -0
- package/src/routes/api/public/archive.ts +22 -6
- package/src/routes/api/telegram.ts +2 -1
- package/src/routes/dash/custom-urls.tsx +1 -1
- package/src/routes/dash/settings.tsx +8 -5
- package/src/routes/pages/__tests__/archive-params.test.ts +135 -0
- package/src/routes/pages/archive.tsx +116 -20
- package/src/routes/pages/collections.tsx +1 -0
- package/src/services/__tests__/media.test.ts +83 -0
- package/src/services/__tests__/post.test.ts +81 -0
- package/src/services/export-theme/assets/client-site.js +1 -1
- package/src/services/export-theme/styles/main.css +49 -15
- package/src/services/media.ts +31 -1
- package/src/services/post.ts +22 -2
- package/src/services/search.ts +4 -4
- package/src/services/site-admin.ts +121 -0
- package/src/services/upload-session.ts +18 -0
- package/src/styles/tokens.css +1 -1
- package/src/styles/ui.css +163 -34
- package/src/types/config.ts +1 -1
- package/src/types/props.ts +3 -0
- package/src/ui/compose/ComposeDialog.tsx +13 -0
- package/src/ui/dash/settings/AccountMenuContent.tsx +0 -39
- package/src/ui/dash/settings/SettingsDirectory.tsx +26 -1
- package/src/ui/dash/settings/SettingsRootContent.tsx +46 -1
- package/src/ui/dash/settings/__tests__/SettingsRootContent.test.tsx +55 -0
- package/src/ui/feed/NoteCard.tsx +54 -5
- package/src/ui/feed/__tests__/timeline-cards.test.ts +73 -0
- package/src/ui/pages/ArchivePage.tsx +89 -6
- package/src/ui/pages/CollectionsPage.tsx +7 -1
- package/src/ui/pages/__tests__/ArchivePage.test.tsx +37 -0
- package/src/ui/shared/CollectionDirectory.tsx +13 -3
- package/src/ui/shared/CollectionsManager.tsx +3 -0
- package/dist/app-CL2PC1Fl.js +0 -6
- package/dist/client/_assets/client-BMPMuwvV.css +0 -2
|
@@ -527,10 +527,8 @@ msgstr "自定义 URL"
|
|
|
527
527
|
|
|
528
528
|
#. @context: Section heading for dangerous/destructive actions
|
|
529
529
|
#. @context: Settings group label for destructive account actions
|
|
530
|
-
#. @context: Settings group label for destructive account actions
|
|
531
530
|
#: src/ui/dash/DangerZone.tsx
|
|
532
531
|
#: src/ui/dash/settings/AccountMenuContent.tsx
|
|
533
|
-
#: src/ui/dash/settings/AccountMenuContent.tsx
|
|
534
532
|
msgid "Danger Zone"
|
|
535
533
|
msgstr "危险操作"
|
|
536
534
|
|
|
@@ -567,11 +565,6 @@ msgstr "删除账号"
|
|
|
567
565
|
msgid "Delete Account Permanently"
|
|
568
566
|
msgstr "永久删除账号"
|
|
569
567
|
|
|
570
|
-
#. @context: Settings item — open the hosted site danger zone in the control plane
|
|
571
|
-
#: src/ui/dash/settings/AccountMenuContent.tsx
|
|
572
|
-
msgid "Delete Hosted Site"
|
|
573
|
-
msgstr "删除托管站点"
|
|
574
|
-
|
|
575
568
|
#. @context: Final browser confirm dialog before account deletion
|
|
576
569
|
#: src/ui/dash/settings/DeleteAccountContent.tsx
|
|
577
570
|
msgid "Delete this blog permanently? This cannot be undone."
|
|
@@ -641,6 +634,11 @@ msgstr "在我的站点页眉显示头像"
|
|
|
641
634
|
msgid "Displayed at the bottom of all posts and pages."
|
|
642
635
|
msgstr "显示在所有文章和页面的底部。"
|
|
643
636
|
|
|
637
|
+
#. @context: Settings item description for the hosted site management external link
|
|
638
|
+
#: src/ui/dash/settings/SettingsRootContent.tsx
|
|
639
|
+
msgid "Domains, plan, and billing in {providerLabel}"
|
|
640
|
+
msgstr "在 {providerLabel} 管理域名、套餐和计费"
|
|
641
|
+
|
|
644
642
|
#. @context: Settings item description for static site export
|
|
645
643
|
#: src/ui/dash/settings/AccountMenuContent.tsx
|
|
646
644
|
msgid "Download a Hugo-compatible archive — host it statically or move to another Jant."
|
|
@@ -825,8 +823,10 @@ msgstr "首页"
|
|
|
825
823
|
msgid "Home settings updated."
|
|
826
824
|
msgstr "主页设置已更新."
|
|
827
825
|
|
|
826
|
+
#. @context: Generic hosted auth provider label when no explicit provider name is configured
|
|
828
827
|
#. @context: Generic hosted auth provider label when no explicit provider name is configured
|
|
829
828
|
#: src/ui/dash/settings/AccountMenuContent.tsx
|
|
829
|
+
#: src/ui/dash/settings/SettingsRootContent.tsx
|
|
830
830
|
msgid "Hosted account"
|
|
831
831
|
msgstr "托管账户"
|
|
832
832
|
|
|
@@ -972,6 +972,11 @@ msgstr "主 RSS 源"
|
|
|
972
972
|
msgid "Manage Account"
|
|
973
973
|
msgstr "管理账户"
|
|
974
974
|
|
|
975
|
+
#. @context: Settings item label for opening this site's hosted management page (domains, plan, billing) in the connected control plane
|
|
976
|
+
#: src/ui/dash/settings/SettingsRootContent.tsx
|
|
977
|
+
msgid "Manage Hosting"
|
|
978
|
+
msgstr "管理托管"
|
|
979
|
+
|
|
975
980
|
#. @context: Settings item description for hosted account management in the connected provider
|
|
976
981
|
#: src/ui/dash/settings/AccountMenuContent.tsx
|
|
977
982
|
msgid "Manage password and hosted access in {providerLabel}"
|
|
@@ -1135,11 +1140,6 @@ msgstr "打开 Telegram 以连接"
|
|
|
1135
1140
|
msgid "Open the bot and send the binding code, then anything you message it becomes a note."
|
|
1136
1141
|
msgstr "打开机器人并发送绑定码, 然后你发送给它的任何消息都会变成一条笔记。"
|
|
1137
1142
|
|
|
1138
|
-
#. @context: Settings item description for the hosted delete-site entry in the account menu
|
|
1139
|
-
#: src/ui/dash/settings/AccountMenuContent.tsx
|
|
1140
|
-
msgid "Open the hosted site controls in {providerLabel} to cancel billing or permanently delete this site."
|
|
1141
|
-
msgstr "在 {providerLabel} 打开托管站点控制以取消计费或永久删除此站点。"
|
|
1142
|
-
|
|
1143
1143
|
#. @context: Separator between the QR code and the deep-link button on the Telegram connect page
|
|
1144
1144
|
#: src/ui/dash/settings/TelegramContent.tsx
|
|
1145
1145
|
msgid "or"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"+4Z6iP\":[\"请先在 GitHub 上创建仓库 — 可以为空。\"],\"+9JI/F\":[\"连接后会将你的网站同步到 \",[\"repo\"],\" 的默认分支,并追加到其现有历史之上。Jant 管理路径之外的现有文件会被保留。此操作无法撤销。\"],\"+AXdXp\":[\"标签和 URL 为必填项\"],\"+K0AvT\":[\"断开连接\"],\"+zy2Nq\":[\"类型\"],\"/3H2/s\":[\"此托管站点通过 \",[\"providerLabel\"],\" 登录。请在那里管理密码和托管访问权限。\"],\"/JnyjR\":[\"切换内置导航项。它们的顺序决定页眉显示的内容以及首页显示哪个视图。\"],\"/ODeyS\":[\"声明给读者的内容语言(HTML lang、RSS),同时驱动后台界面的语言。可填任意 BCP 47 标签;没有对应翻译时后台会回退为英文。\"],\"/zOUxl\":[\"链接到 Telegram 机器人的二维码\"],\"0OGSSc\":[\"头像显示已更新.\"],\"0UzCUX\":[\"更新您用于登录的密码\"],\"0bdA9b\":[\"打开 Telegram 以连接\"],\"10UtuM\":[\"CJK 字体\"],\"14BEca\":[\"了解原因\"],\"1F6Mzc\":[\"当前还没有导航项目。添加链接或在下方启用系统项目。\"],\"1mbBbL\":[\"手动绑定\"],\"1njn7W\":[\"浅色\"],\"2B7t+s\":[\"会话与密码\"],\"2DoBvq\":[\"订阅源\"],\"2FYpfJ\":[\"更多\"],\"2Ithfh\":[\"向机器人发送任意文本,它会作为笔记已发布。\"],\"2MXb5X\":[\"关于静谧设计的笔记\"],\"2PTjMB\":[\"我想删除 \",[\"siteName\"]],\"2cFU6q\":[\"网站页脚\"],\"2oWZo7\":[\"最近一次提交\"],\"2uuy4H\":[\"通过个人访问令牌连接\"],\"35x8eZ\":[\"显示 \",[\"shown\"],\" 共 \",[\"total\"]],\"39QGku\":[\"打开机器人并发送绑定码, 然后你发送给它的任何消息都会变成一条笔记。\"],\"3Cw1AI\":[\"添加合集\"],\"3VrybB\":[\"重定向\"],\"3Yvsaz\":[\"302 (临时)\"],\"3n0zbB\":[\"会话管理在演示模式下已关闭。请使用共享的演示会话。\"],\"3sYJi5\":[\"下载一个与 Hugo 兼容的归档 — 将其静态托管或迁移到另一个 Jant。\"],\"3wKq0C\":[\"保存失败。请稍后再试。\"],\"49Bsal\":[\"订阅源设置已更新。\"],\"4Jge8E\":[\"活动会话\"],\"4KIa+q\":[\"导出文件已下载.\"],\"4cEClj\":[\"会话\"],\"4zGJ5E\":[\"永久删除账号\"],\"5QlUIt\":[\"仓库为空。准备连接。\"],\"5VQnR3\":[\"当你想要一个永远不变的订阅源 URL 时使用它们。\"],\"5dpcN1\":[\"输入以搜索全部\"],\"5f1Wo9\":[\"已连接为 \",[\"account\"]],\"69OXZB\":[\"删除托管站点\"],\"6ArdBh\":[\"将精选文章用于 /feed。\"],\"6DjeBT\":[\"演示站点始终对搜索引擎隐藏。\"],\"6FFB7q\":[\"为 /feed 使用最新的公开帖子。\"],\"6K1Vef\":[\"永久删除此博客?此操作不可撤销。\"],\"6NpNLc\":[\"此仓库已有内容。\"],\"6V3Ea3\":[\"已复制\"],\"71WIgc\":[\"获取新绑定码\"],\"746NHh\":[\"此博客\"],\"7811AW\":[\"此仓库已在备份此站点。\"],\"7FaY4u\":[\"用法\"],\"7G9YLi\":[\"允许搜索引擎索引我的网站\"],\"7GISOt\":[\"保存机器人令牌\"],\"7MZxzw\":[\"密码已更改.\"],\"7vhWI8\":[\"新密码\"],\"7z05Pf\":[\"在 \",[\"providerLabel\"],\" 打开托管站点控制以取消计费或永久删除此站点。\"],\"81nFIS\":[\"密码不匹配。请确保两个字段相同。\"],\"87a/t/\":[\"标签\"],\"89Upyo\":[\"该主题不可用。请选择其他主题。\"],\"8BfEpW\":[\"托管账户\"],\"8N/Mcp\":[\"归档 筛选参数 (例如 format=笔记&view=list)\"],\"8T46pB\":[\"机器人令牌\"],\"8U2Z7f\":[\"新建自定义 URL\"],\"8ZsakT\":[\"密码\"],\"9+vGLh\":[\"自定义 CSS\"],\"9As8Nu\":[\"在 GitHub 上创建一个\"],\"9Lsvt5\":[\"于 \",[\"date\"],\" 登录\"],\"9T7Cwm\":[\"重定向、个性化路径和 URL 控制\"],\"9aUyym\":[\"查看你的登录位置并撤销旧会话\"],\"A1taO8\":[\"搜索\"],\"AeXO77\":[\"账户\"],\"AnY+O9\":[\"在主页底部显示 \\\"Build with Jant\\\"\"],\"ApZDMk\":[\"此图用于您的 favicon 和 apple-touch-icon。为获得最佳效果,请上传至少 512×512 像素、纯色背景的方形 PNG。\"],\"B495Gs\":[\"归档\"],\"B4ESok\":[\"API 参考\"],\"BzEFor\":[\"或\"],\"CDAdlf\":[\"移除机器人\"],\"CTAEes\":[\"选择仓库\"],\"CjZZgz\":[\"该仓库已有提交\"],\"D8k2s6\":[\"连接 Telegram\"],\"DCKkhU\":[\"当前密码\"],\"DKKKeF\":[\"在 \",[\"providerLabel\"],\" 管理密码和托管访问\"],\"EO3I6h\":[\"上传未成功。请稍后再试。\"],\"Enslfm\":[\"目标地址\"],\"F7FKwe\":[\"你在此处粘贴的任何内容都将完全访问访客的浏览器。仅使用来自你信任的来源的代码。\"],\"FkMol5\":[\"精选\"],\"G/1oP+\":[\"移除 webhook 并停止同步。您的仓库内容不会被删除。\"],\"G0qJsQ\":[\"缺少安全令牌。刷新页面后重试。\"],\"G39wnK\":[\"将内容备份并与 GitHub 仓库同步\"],\"GMMWcy\":[\"名称、元数据、语言和搜索默认设置\"],\"GXsAby\":[\"撤销\"],\"GxkJXS\":[\"正在上传...\"],\"GzKzUa\":[\"演示限制\"],\"HKH+W+\":[\"数据\"],\"Hp1l6f\":[\"当前\"],\"HxlY7t\":[\"更改此项会更新订阅者从 /feed 获取的内容。\"],\"HxuOlm\":[\"网站头部\"],\"I6gXOa\":[\"路径\"],\"ID38tA\":[\"演示模式下已禁用账号删除。共享演示会单独重置。\"],\"IF9tPu\":[\"何时使用站点导出、数据库备份和恢复演练。\"],\"IW5PBo\":[\"复制令牌\"],\"IagCbF\":[\"网址\"],\"IreQBq\":[\"仓库\"],\"J6bLeg\":[\"向任意 URL 添加自定义链接\"],\"JL7LF5\":[\"可用的 CSS 变量, 数据属性, 和 示例.\"],\"JTviaO\":[\"管理登录安全、导出和不可逆操作.\"],\"JcD7qf\":[\"更多操作\"],\"JjX0OO\":[\"现在复制您的令牌 — 它不会再次显示。\"],\"JrFTcr\":[\"连接中…\"],\"JuN5GC\":[\"未选择文件。请选择要上传的文件。\"],\"KDw4GX\":[\"重试\"],\"KSgo21\":[\"选择仓库\"],\"KVVYBh\":[\"向导航添加合集\"],\"KiJn9B\":[\"笔记\"],\"L3DEwT\":[\"移除此头像?您的网站图标和页眉图标将恢复为默认设置。\"],\"L4t4/q\":[\"3月14日\"],\"LdyooL\":[\"链接\"],\"M/D8PK\":[\"+ 在其他帐户上安装\"],\"M/haSd\":[\"始终显示浅色主题。\"],\"M2kIWU\":[\"字体主题\"],\"M6CbAU\":[\"切换编辑面板\"],\"MaYYE6\":[\"通过向 Telegram 机器人发送消息来发布笔记\"],\"Me5t5H\":[\"将 GitHub 仓库连接以自动将您的文章备份为 Markdown 文件。您在 GitHub 上的编辑会同步回您的网站。\"],\"Mr4QPw\":[\"断开 Telegram?您可以随时使用新的绑定码重新连接。\"],\"MtENL9\":[\"调整你的网站的外观、阅读体验和运行方式。\"],\"N/8NPV\":[\"在删除之前,请下载站点导出。删除后将无法恢复此账户。\"],\"N7UNHY\":[\"精选订阅源\"],\"NHnUHF\":[\"Favicon 和页眉中的个人标识\"],\"NU2Fqi\":[\"保存 CSS\"],\"Nldjdr\":[\"尚无自定义 URL。创建一个以便为文章添加重定向或自定义路径。\"],\"O7rgs6\":[\"页眉 RSS 指向你的 \",[\"feed\"],\" 源 (/feed)。在 常规 中更改 /feed 返回的内容。\"],\"OSJXFg\":[\"应用于整个站点,包括管理页面。选择一个调色板,然后选择它是随系统变化还是保持固定。\"],\"Ox3+3h\":[\"无匹配结果。\"],\"PEUV5I\":[\"代码注入已更新。\"],\"PXj9lw\":[\"停止接受来自 Telegram 的帖子。您的现有笔记将保持已发布。\"],\"PZ7HJ8\":[\"博客头像\"],\"Pwqkdw\":[\"正在加载…\"],\"PxJ9W6\":[\"生成令牌\"],\"Q/6Y+2\":[\"需要对目标仓库的 Contents(读/写)和 Webhooks(读/写)。\"],\"Q30z/l\":[\"要从导航中移除此合集吗?合集本身不会被删除。\"],\"Q99OtV\":[\"将合集固定到导航栏。在过去 48 小时内更新的合集旁会出现一个 * 号。\"],\"QZmz0H\":[\"内置链接\"],\"Qnrzvb\":[\"活动令牌\"],\"R6Z4LE\":[\"下载失败。请重试。\"],\"R9Khdg\":[\"自动\"],\"RcdDOS\":[\"在 Telegram 上给 @BotFather 发送消息创建一个机器人,然后粘贴它提供的令牌。\"],\"RxsRD6\":[\"时区\"],\"SJmfuf\":[\"站点名称\"],\"SKZhW9\":[\"令牌名称\"],\"SVQQPe\":[\"无法连接。检查错误并重试。\"],\"SchpMp\":[\"Telegram\"],\"TpF3v+\":[\"注入到 </head> 之前。用于分析、自定义元标签以及必须尽早加载的样式。\"],\"Tz0i8g\":[\"设置\"],\"UFK415\":[\"用于分析和小部件的全站 HTML\"],\"UTvFQq\":[\"打开 \",[\"linkOpen\"],\"@\",[\"botUsername\"],[\"linkClose\"],\" 并发送:\"],\"Uj/btJ\":[\"在我的站点页眉显示头像\"],\"UsODUn\":[\"选择账户\"],\"UxKoFf\":[\"导航\"],\"V+bhUy\":[\"安装 GitHub App\"],\"V4WsyL\":[\"添加链接\"],\"V5pZwT\":[\"搜索设置已更新。\"],\"VXUPla\":[\"使用 GitHub 应用连接\"],\"VhMDMg\":[\"更改密码\"],\"Vn3jYy\":[\"导航项\"],\"VoZYGU\":[\"这将永久删除您所有的数据 — 帖子、媒体、合集、设置和您的账户。您的博客将重置为初始设置状态。此操作不可撤销。\"],\"Weq9zb\":[\"常规\"],\"Wi9i06\":[\"遵循每位访客的系统偏好。\"],\"Wx1M8N\":[\"安装 GitHub App 以在无需管理个人令牌的情况下授予访问权限。权限按仓库范围授予,可在 GitHub 上撤销。\"],\"X+8FMk\":[\"当前密码不正确。请重试。\"],\"X1G9eY\":[\"导航预览\"],\"X9Hujr\":[\"手动推送\"],\"XtBJV8\":[\"正在检查仓库…\"],\"Xtc16w\":[\"刷新仓库列表\"],\"Y/F35r\":[\"使用 curl 创建帖子:\"],\"YF6zHf\":[\"站点设置已更新.\"],\"YdG2RF\":[\"导出站点\"],\"YkgZi7\":[\"连接一个 Telegram 机器人,然后你发送给它的任何消息都会作为笔记已发布。\"],\"YwhjRx\":[\"管理账户\"],\"ZDY7Fy\":[\"正在同步…\"],\"ZQKLI1\":[\"危险操作\"],\"ZS/CBL\":[\"删除此导航链接? 访客将不再在您网站的页眉中看到它。\"],\"ZhhOwV\":[\"引用 (Jant 的帖子格式之一。)\"],\"ZiooJI\":[\"API 令牌\"],\"Zm7Qb0\":[\"备份与恢复指南\"],\"ZmUkwN\":[\"向导航添加自定义链接\"],\"a14mj8\":[\"未知设备\"],\"a3LDKx\":[\"安全\"],\"aAIQg2\":[\"外观\"],\"aFkzVF\":[\"目标文章或合集的 slug\"],\"alKG0+\":[\"字体主题\"],\"anibOb\":[\"关于本博客\"],\"any7NR\":[\"主题指南\"],\"b+/jO6\":[\"301 (永久)\"],\"bHOiy1\":[\"演示模式下已禁用密码更改。请使用共享的演示凭证登录。\"],\"bHYIks\":[\"退出登录\"],\"bmrL08\":[\"演示模式会隐藏会话、密码更改和账号删除。导出仍然可用.\"],\"c3MN2z\":[\"所有可用的端点和请求格式。\"],\"cS7/bk\":[\"删除保存的机器人令牌?其 webhook 会被删除,任何已连接的账号将被断开连接。\"],\"cSDy01\":[\"自定义 CSS 已更新.\"],\"clzoNp\":[\"始终显示暗色主题.\"],\"cnGeoo\":[\"删除\"],\"d3FRkY\":[\"无法复制。请再试一次。\"],\"d5oGUo\":[\"在 GitHub 上创建新仓库\"],\"dEgA5A\":[\"取消\"],\"dTXUY+\":[\"确认删除账户\"],\"dYKrp3\":[\"从最新中隐藏 (不出现在 Latest 中,但仍可通过固定链接和集合访问的状态。)\"],\"dk7TCH\":[\"永久删除所有数据并重置博客\"],\"drodVV\":[\"还没有合集。请先创建一个,然后将其添加到你的导航中。\"],\"dsWkIw\":[\"要与 GitHub 断开连接吗?该 webhook 将被移除。您的仓库内容不会被删除。\"],\"e/tSI5\":[\"导航顺序已更新。\"],\"ePK91l\":[\"编辑\"],\"ebQKK7\":[\"站点\"],\"egK+Yy\":[\"用于脚本和自动化的 Bearer 令牌\"],\"ehj/zN\":[\"重定向类型\"],\"eneWvv\":[\"草稿\"],\"erTMh7\":[\"上次同步\"],\"f+m8jj\":[\"订阅源 URL 已复制。\"],\"f8fH8W\":[\"设计\"],\"fWYqkz\":[\"代码注入\"],\"gOWiTY\":[\"加载针对中文、日文或韩文内容优化的衬线字体。\"],\"gZ5owP\":[\"搜索仓库\"],\"gbqbh6\":[\"放心离开此页面 — 同步会在后台继续进行。\"],\"gkFvVN\":[\"注入到 </body> 之前。用于聊天小部件和不应阻塞页面加载的脚本。\"],\"gtQsRO\":[\"创建自定义 URL\"],\"hBO/y4\":[\"安全令牌已过期。刷新页面后重试。\"],\"hGmyDl\":[\"令牌让您无需登录即可从脚本、快捷方式和其他工具访问 API。\"],\"hIHkRy\":[\"已通过 GitHub App 连接\"],\"hdSi1b\":[\"输入 \",[\"repo\"],\" 以确认\"],\"he3ygx\":[\"复制\"],\"i0qMbr\":[\"首页\"],\"iEUzMn\":[\"系统\"],\"iSLIjg\":[\"连接\"],\"iVOMRi\":[\"主页设置已更新.\"],\"icB4Cv\":[\"将链接拖到此处以在更多菜单下显示它们\"],\"id3vuh\":[\"Telegram 已设置,但无法连接到机器人。请检查机器人令牌并重试。\"],\"ihn4zD\":[\"搜索…\"],\"iiDXZc\":[\"显示在所有文章和页面的底部。\"],\"j4VrG6\":[\"下载导出 ZIP\"],\"j5nQL2\":[\"例如 iOS Shortcuts\"],\"jUV7CU\":[\"上传头像\"],\"jVUmOK\":[\"支持 Markdown\"],\"jgBjXJ\":[\"撤销此令牌?任何使用它的脚本将停止工作。\"],\"jpctdh\":[\"查看\"],\"k1ifdL\":[\"处理中...\"],\"kMXclu\":[\"下载网站导出\"],\"kNiQp6\":[\"已置顶\"],\"kRhzWq\":[\"GitHub 同步\"],\"kVQs7s\":[\"细粒度样式覆盖\"],\"ke1gWS\":[\"自定义 URL\"],\"kfcRb0\":[\"头像\"],\"kxDZ2i\":[\"此代码将在您网站的每个页面上运行。\"],\"l2Op2p\":[\"查询参数\"],\"lLW3vJ\":[\"目标 slug\"],\"lYHJih\":[\"撤销此会话? 该设备需要重新登录.\"],\"mLOk1i\":[\"立即将所有文章推送到 GitHub,而不是等待下一次自动同步。\"],\"mSNmrX\":[\"列出帖子:\"],\"nK07ni\":[\"为您的网站选择一种排版方向。每个主题都会同时改变字体搭配和阅读节奏。\"],\"nbfdhU\":[\"集成\"],\"o/vNDE\":[\"允许您覆盖任何主题变量.\"],\"oGC9uP\":[\"owner/repo\"],\"oH2JHg\":[\"我们会预先填充名称 \",[\"name\"],\"。返回时列表会刷新。\"],\"oKOOsY\":[\"颜色主题\"],\"oL535e\":[\"尚未同步\"],\"oNA4If\":[\"所有合集已在您的导航中。\"],\"pZq3aX\":[\"上传失败。请重试。\"],\"pgTIrt\":[\"选择要与此站点同步的 GitHub 账户和仓库。\"],\"psoxDF\":[\"该字体主题不可用。请选择另一个。\"],\"pvnfJD\":[\"深色\"],\"q+hNag\":[\"合集\"],\"qdcESc\":[\"创建新仓库\"],\"r5EW6f\":[\"此仓库已在为另一个 Jant 站点 (\",[\"host\"],\") 进行备份。请选择其他仓库。\"],\"rEspiY\":[\"导航位置已更新.\"],\"rFmBG3\":[\"配色主题\"],\"rlonmB\":[\"删除失败。请稍后再试。\"],\"satWc6\":[\"主 RSS 源\"],\"sgr2wQ\":[\"合集\"],\"sqxcaY\":[\"创建于 \",[\"date\"]],\"sxkWRg\":[\"高级\"],\"t/YqKh\":[\"移除\"],\"t3hvHq\":[\"立即同步\"],\"tJ4H0O\":[\"你的 Telegram 账号\"],\"tfDRzk\":[\"保存\"],\"tvgAq5\":[\"尚未授权任何账户\"],\"u1VTd3\":[\"调色板、表面色调与整体氛围\"],\"u3wRF+\":[\"已发布\"],\"u6KOjV\":[\"想要更多控制?\"],\"udPwLB\":[\"页眉\"],\"ui6aMF\":[\"以下设备当前已登录到您的帐户。撤销任何您不认识的会话。\"],\"vBEKwo\":[\"在此管理本站点的活动会话。密码和托管访问通过 \",[\"providerLabel\"],\" 管理。\"],\"vRldcl\":[\"排版选项与阅读质感\"],\"vSYKYI\":[\"主订阅源\"],\"vTuib7\":[\"这将控制 /feed 返回的内容。\"],\"vXIe7J\":[\"语言\"],\"vmQmHx\":[\"添加自定义 CSS 以覆盖任何样式. 使用数据属性如 [data-page], [data-post], [data-format] 来定位特定元素.\"],\"vzX5FB\":[\"删除账号\"],\"w8Rv8T\":[\"标签为必填项\"],\"wL3cK8\":[\"最新\"],\"wPmHHc\":[\"低调的界面让写作成为焦点.\"],\"wW6NCp\":[\"上次错误\"],\"wc+17X\":[\"/* 在此填写您的自定义 CSS */\"],\"wuLtXn\":[\"当前没有活动会话。 已登录的设备会显示在此处。\"],\"xCWek4\":[\"文件存储尚未设置。请检查服务器配置。\"],\"xHt036\":[\"个人访问令牌\"],\"xbN8dp\":[\"柔和的颜色仍应保持清晰的阅读节奏。\"],\"y28hnO\":[\"文章\"],\"y8Md/V\":[\"语言和时间已更新。\"],\"yNCqOt\":[\"最新订阅源\"],\"yQ3kNF\":[\"输入以下短语以确认:\"],\"ydq1k2\":[\"请先选择一个账号\"],\"yjjCV8\":[\"固定订阅源 URL\"],\"yjkELF\":[\"确认新密码\"],\"yzF66j\":[\"链接\"],\"z6wakA\":[\"在您的主页上显示的简短介绍.\"],\"zEizrk\":[\"上次使用 \",[\"date\"]],\"zSURJW\":[\"没有匹配的仓库。\"],\"zXH2jX\":[\"语言与时间\"],\"zlcDd2\":[\"要删除此自定义 URL 吗?使用它的访问者将不再被重定向。\"],\"zwBp5t\":[\"私有\"],\"zxRN6H\":[\"页眉链接、首页信息流和溢出菜单\"]}")as Messages;
|
|
1
|
+
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"+4Z6iP\":[\"请先在 GitHub 上创建仓库 — 可以为空。\"],\"+9JI/F\":[\"连接后会将你的网站同步到 \",[\"repo\"],\" 的默认分支,并追加到其现有历史之上。Jant 管理路径之外的现有文件会被保留。此操作无法撤销。\"],\"+AXdXp\":[\"标签和 URL 为必填项\"],\"+K0AvT\":[\"断开连接\"],\"+zy2Nq\":[\"类型\"],\"/3H2/s\":[\"此托管站点通过 \",[\"providerLabel\"],\" 登录。请在那里管理密码和托管访问权限。\"],\"/JnyjR\":[\"切换内置导航项。它们的顺序决定页眉显示的内容以及首页显示哪个视图。\"],\"/ODeyS\":[\"声明给读者的内容语言(HTML lang、RSS),同时驱动后台界面的语言。可填任意 BCP 47 标签;没有对应翻译时后台会回退为英文。\"],\"/zOUxl\":[\"链接到 Telegram 机器人的二维码\"],\"0OGSSc\":[\"头像显示已更新.\"],\"0UzCUX\":[\"更新您用于登录的密码\"],\"0bdA9b\":[\"打开 Telegram 以连接\"],\"10UtuM\":[\"CJK 字体\"],\"14BEca\":[\"了解原因\"],\"1F6Mzc\":[\"当前还没有导航项目。添加链接或在下方启用系统项目。\"],\"1mbBbL\":[\"手动绑定\"],\"1njn7W\":[\"浅色\"],\"2B7t+s\":[\"会话与密码\"],\"2DoBvq\":[\"订阅源\"],\"2FYpfJ\":[\"更多\"],\"2Ithfh\":[\"向机器人发送任意文本,它会作为笔记已发布。\"],\"2MXb5X\":[\"关于静谧设计的笔记\"],\"2PTjMB\":[\"我想删除 \",[\"siteName\"]],\"2cFU6q\":[\"网站页脚\"],\"2oWZo7\":[\"最近一次提交\"],\"2uuy4H\":[\"通过个人访问令牌连接\"],\"35x8eZ\":[\"显示 \",[\"shown\"],\" 共 \",[\"total\"]],\"39QGku\":[\"打开机器人并发送绑定码, 然后你发送给它的任何消息都会变成一条笔记。\"],\"3Cw1AI\":[\"添加合集\"],\"3VrybB\":[\"重定向\"],\"3Yvsaz\":[\"302 (临时)\"],\"3n0zbB\":[\"会话管理在演示模式下已关闭。请使用共享的演示会话。\"],\"3sYJi5\":[\"下载一个与 Hugo 兼容的归档 — 将其静态托管或迁移到另一个 Jant。\"],\"3wKq0C\":[\"保存失败。请稍后再试。\"],\"49Bsal\":[\"订阅源设置已更新。\"],\"4Jge8E\":[\"活动会话\"],\"4KIa+q\":[\"导出文件已下载.\"],\"4cEClj\":[\"会话\"],\"4zGJ5E\":[\"永久删除账号\"],\"5QlUIt\":[\"仓库为空。准备连接。\"],\"5VQnR3\":[\"当你想要一个永远不变的订阅源 URL 时使用它们。\"],\"5dpcN1\":[\"输入以搜索全部\"],\"5f1Wo9\":[\"已连接为 \",[\"account\"]],\"6ArdBh\":[\"将精选文章用于 /feed。\"],\"6DjeBT\":[\"演示站点始终对搜索引擎隐藏。\"],\"6E3aK4\":[\"管理托管\"],\"6FFB7q\":[\"为 /feed 使用最新的公开帖子。\"],\"6K1Vef\":[\"永久删除此博客?此操作不可撤销。\"],\"6NpNLc\":[\"此仓库已有内容。\"],\"6V3Ea3\":[\"已复制\"],\"71WIgc\":[\"获取新绑定码\"],\"746NHh\":[\"此博客\"],\"7811AW\":[\"此仓库已在备份此站点。\"],\"7FaY4u\":[\"用法\"],\"7G9YLi\":[\"允许搜索引擎索引我的网站\"],\"7GISOt\":[\"保存机器人令牌\"],\"7MZxzw\":[\"密码已更改.\"],\"7vhWI8\":[\"新密码\"],\"81nFIS\":[\"密码不匹配。请确保两个字段相同。\"],\"87a/t/\":[\"标签\"],\"89Upyo\":[\"该主题不可用。请选择其他主题。\"],\"8BfEpW\":[\"托管账户\"],\"8N/Mcp\":[\"归档 筛选参数 (例如 format=笔记&view=list)\"],\"8T46pB\":[\"机器人令牌\"],\"8U2Z7f\":[\"新建自定义 URL\"],\"8ZsakT\":[\"密码\"],\"9+vGLh\":[\"自定义 CSS\"],\"9As8Nu\":[\"在 GitHub 上创建一个\"],\"9Lsvt5\":[\"于 \",[\"date\"],\" 登录\"],\"9T7Cwm\":[\"重定向、个性化路径和 URL 控制\"],\"9aUyym\":[\"查看你的登录位置并撤销旧会话\"],\"A1taO8\":[\"搜索\"],\"AeXO77\":[\"账户\"],\"AnY+O9\":[\"在主页底部显示 \\\"Build with Jant\\\"\"],\"ApZDMk\":[\"此图用于您的 favicon 和 apple-touch-icon。为获得最佳效果,请上传至少 512×512 像素、纯色背景的方形 PNG。\"],\"B495Gs\":[\"归档\"],\"B4ESok\":[\"API 参考\"],\"BzEFor\":[\"或\"],\"CDAdlf\":[\"移除机器人\"],\"CTAEes\":[\"选择仓库\"],\"CjZZgz\":[\"该仓库已有提交\"],\"D8k2s6\":[\"连接 Telegram\"],\"DCKkhU\":[\"当前密码\"],\"DKKKeF\":[\"在 \",[\"providerLabel\"],\" 管理密码和托管访问\"],\"EO3I6h\":[\"上传未成功。请稍后再试。\"],\"Enslfm\":[\"目标地址\"],\"F7FKwe\":[\"你在此处粘贴的任何内容都将完全访问访客的浏览器。仅使用来自你信任的来源的代码。\"],\"FkMol5\":[\"精选\"],\"G/1oP+\":[\"移除 webhook 并停止同步。您的仓库内容不会被删除。\"],\"G0qJsQ\":[\"缺少安全令牌。刷新页面后重试。\"],\"G39wnK\":[\"将内容备份并与 GitHub 仓库同步\"],\"GMMWcy\":[\"名称、元数据、语言和搜索默认设置\"],\"GXsAby\":[\"撤销\"],\"GxkJXS\":[\"正在上传...\"],\"GzKzUa\":[\"演示限制\"],\"HKH+W+\":[\"数据\"],\"Hp1l6f\":[\"当前\"],\"HxlY7t\":[\"更改此项会更新订阅者从 /feed 获取的内容。\"],\"HxuOlm\":[\"网站头部\"],\"I6gXOa\":[\"路径\"],\"ID38tA\":[\"演示模式下已禁用账号删除。共享演示会单独重置。\"],\"IF9tPu\":[\"何时使用站点导出、数据库备份和恢复演练。\"],\"IW5PBo\":[\"复制令牌\"],\"IagCbF\":[\"网址\"],\"IreQBq\":[\"仓库\"],\"J6bLeg\":[\"向任意 URL 添加自定义链接\"],\"JL7LF5\":[\"可用的 CSS 变量, 数据属性, 和 示例.\"],\"JTviaO\":[\"管理登录安全、导出和不可逆操作.\"],\"JcD7qf\":[\"更多操作\"],\"JjX0OO\":[\"现在复制您的令牌 — 它不会再次显示。\"],\"JrFTcr\":[\"连接中…\"],\"JuN5GC\":[\"未选择文件。请选择要上传的文件。\"],\"KDw4GX\":[\"重试\"],\"KSgo21\":[\"选择仓库\"],\"KVVYBh\":[\"向导航添加合集\"],\"KiJn9B\":[\"笔记\"],\"L3DEwT\":[\"移除此头像?您的网站图标和页眉图标将恢复为默认设置。\"],\"L4t4/q\":[\"3月14日\"],\"LdyooL\":[\"链接\"],\"M/D8PK\":[\"+ 在其他帐户上安装\"],\"M/haSd\":[\"始终显示浅色主题。\"],\"M2kIWU\":[\"字体主题\"],\"M6CbAU\":[\"切换编辑面板\"],\"MaYYE6\":[\"通过向 Telegram 机器人发送消息来发布笔记\"],\"Me5t5H\":[\"将 GitHub 仓库连接以自动将您的文章备份为 Markdown 文件。您在 GitHub 上的编辑会同步回您的网站。\"],\"Mr4QPw\":[\"断开 Telegram?您可以随时使用新的绑定码重新连接。\"],\"MtENL9\":[\"调整你的网站的外观、阅读体验和运行方式。\"],\"N/8NPV\":[\"在删除之前,请下载站点导出。删除后将无法恢复此账户。\"],\"N7UNHY\":[\"精选订阅源\"],\"NHnUHF\":[\"Favicon 和页眉中的个人标识\"],\"NU2Fqi\":[\"保存 CSS\"],\"Nldjdr\":[\"尚无自定义 URL。创建一个以便为文章添加重定向或自定义路径。\"],\"O7rgs6\":[\"页眉 RSS 指向你的 \",[\"feed\"],\" 源 (/feed)。在 常规 中更改 /feed 返回的内容。\"],\"OSJXFg\":[\"应用于整个站点,包括管理页面。选择一个调色板,然后选择它是随系统变化还是保持固定。\"],\"Ox3+3h\":[\"无匹配结果。\"],\"PEUV5I\":[\"代码注入已更新。\"],\"PXj9lw\":[\"停止接受来自 Telegram 的帖子。您的现有笔记将保持已发布。\"],\"PZ7HJ8\":[\"博客头像\"],\"Pwqkdw\":[\"正在加载…\"],\"PxJ9W6\":[\"生成令牌\"],\"Q/6Y+2\":[\"需要对目标仓库的 Contents(读/写)和 Webhooks(读/写)。\"],\"Q30z/l\":[\"要从导航中移除此合集吗?合集本身不会被删除。\"],\"Q99OtV\":[\"将合集固定到导航栏。在过去 48 小时内更新的合集旁会出现一个 * 号。\"],\"QZmz0H\":[\"内置链接\"],\"Qnrzvb\":[\"活动令牌\"],\"R6Z4LE\":[\"下载失败。请重试。\"],\"R9Khdg\":[\"自动\"],\"RcdDOS\":[\"在 Telegram 上给 @BotFather 发送消息创建一个机器人,然后粘贴它提供的令牌。\"],\"RxsRD6\":[\"时区\"],\"SJmfuf\":[\"站点名称\"],\"SKZhW9\":[\"令牌名称\"],\"SVQQPe\":[\"无法连接。检查错误并重试。\"],\"SchpMp\":[\"Telegram\"],\"TpF3v+\":[\"注入到 </head> 之前。用于分析、自定义元标签以及必须尽早加载的样式。\"],\"Tz0i8g\":[\"设置\"],\"UFK415\":[\"用于分析和小部件的全站 HTML\"],\"UTvFQq\":[\"打开 \",[\"linkOpen\"],\"@\",[\"botUsername\"],[\"linkClose\"],\" 并发送:\"],\"Uj/btJ\":[\"在我的站点页眉显示头像\"],\"UsODUn\":[\"选择账户\"],\"UxKoFf\":[\"导航\"],\"V+bhUy\":[\"安装 GitHub App\"],\"V4WsyL\":[\"添加链接\"],\"V5pZwT\":[\"搜索设置已更新。\"],\"VXUPla\":[\"使用 GitHub 应用连接\"],\"VhMDMg\":[\"更改密码\"],\"Vn3jYy\":[\"导航项\"],\"VoZYGU\":[\"这将永久删除您所有的数据 — 帖子、媒体、合集、设置和您的账户。您的博客将重置为初始设置状态。此操作不可撤销。\"],\"Weq9zb\":[\"常规\"],\"Wi9i06\":[\"遵循每位访客的系统偏好。\"],\"Wx1M8N\":[\"安装 GitHub App 以在无需管理个人令牌的情况下授予访问权限。权限按仓库范围授予,可在 GitHub 上撤销。\"],\"X+8FMk\":[\"当前密码不正确。请重试。\"],\"X1G9eY\":[\"导航预览\"],\"X9Hujr\":[\"手动推送\"],\"XtBJV8\":[\"正在检查仓库…\"],\"Xtc16w\":[\"刷新仓库列表\"],\"Y/F35r\":[\"使用 curl 创建帖子:\"],\"YF6zHf\":[\"站点设置已更新.\"],\"YdG2RF\":[\"导出站点\"],\"YkgZi7\":[\"连接一个 Telegram 机器人,然后你发送给它的任何消息都会作为笔记已发布。\"],\"YwhjRx\":[\"管理账户\"],\"ZDY7Fy\":[\"正在同步…\"],\"ZQKLI1\":[\"危险操作\"],\"ZS/CBL\":[\"删除此导航链接? 访客将不再在您网站的页眉中看到它。\"],\"ZhhOwV\":[\"引用 (Jant 的帖子格式之一。)\"],\"ZiooJI\":[\"API 令牌\"],\"Zm7Qb0\":[\"备份与恢复指南\"],\"ZmUkwN\":[\"向导航添加自定义链接\"],\"a14mj8\":[\"未知设备\"],\"a3LDKx\":[\"安全\"],\"aAIQg2\":[\"外观\"],\"aFkzVF\":[\"目标文章或合集的 slug\"],\"alKG0+\":[\"字体主题\"],\"anibOb\":[\"关于本博客\"],\"any7NR\":[\"主题指南\"],\"b+/jO6\":[\"301 (永久)\"],\"bHOiy1\":[\"演示模式下已禁用密码更改。请使用共享的演示凭证登录。\"],\"bHYIks\":[\"退出登录\"],\"bmrL08\":[\"演示模式会隐藏会话、密码更改和账号删除。导出仍然可用.\"],\"c3MN2z\":[\"所有可用的端点和请求格式。\"],\"cS7/bk\":[\"删除保存的机器人令牌?其 webhook 会被删除,任何已连接的账号将被断开连接。\"],\"cSDy01\":[\"自定义 CSS 已更新.\"],\"clzoNp\":[\"始终显示暗色主题.\"],\"cnGeoo\":[\"删除\"],\"d3FRkY\":[\"无法复制。请再试一次。\"],\"d5oGUo\":[\"在 GitHub 上创建新仓库\"],\"dEgA5A\":[\"取消\"],\"dTXUY+\":[\"确认删除账户\"],\"dYKrp3\":[\"从最新中隐藏 (不出现在 Latest 中,但仍可通过固定链接和集合访问的状态。)\"],\"dk7TCH\":[\"永久删除所有数据并重置博客\"],\"drodVV\":[\"还没有合集。请先创建一个,然后将其添加到你的导航中。\"],\"dsWkIw\":[\"要与 GitHub 断开连接吗?该 webhook 将被移除。您的仓库内容不会被删除。\"],\"e/tSI5\":[\"导航顺序已更新。\"],\"ePK91l\":[\"编辑\"],\"ebQKK7\":[\"站点\"],\"egK+Yy\":[\"用于脚本和自动化的 Bearer 令牌\"],\"ehj/zN\":[\"重定向类型\"],\"eneWvv\":[\"草稿\"],\"erTMh7\":[\"上次同步\"],\"f+m8jj\":[\"订阅源 URL 已复制。\"],\"f8fH8W\":[\"设计\"],\"fWYqkz\":[\"代码注入\"],\"gOWiTY\":[\"加载针对中文、日文或韩文内容优化的衬线字体。\"],\"gZ5owP\":[\"搜索仓库\"],\"gbqbh6\":[\"放心离开此页面 — 同步会在后台继续进行。\"],\"gkFvVN\":[\"注入到 </body> 之前。用于聊天小部件和不应阻塞页面加载的脚本。\"],\"gtQsRO\":[\"创建自定义 URL\"],\"hBO/y4\":[\"安全令牌已过期。刷新页面后重试。\"],\"hGmyDl\":[\"令牌让您无需登录即可从脚本、快捷方式和其他工具访问 API。\"],\"hIHkRy\":[\"已通过 GitHub App 连接\"],\"hdSi1b\":[\"输入 \",[\"repo\"],\" 以确认\"],\"he3ygx\":[\"复制\"],\"i0qMbr\":[\"首页\"],\"iEUzMn\":[\"系统\"],\"iSLIjg\":[\"连接\"],\"iVOMRi\":[\"主页设置已更新.\"],\"icB4Cv\":[\"将链接拖到此处以在更多菜单下显示它们\"],\"id3vuh\":[\"Telegram 已设置,但无法连接到机器人。请检查机器人令牌并重试。\"],\"ihn4zD\":[\"搜索…\"],\"iiDXZc\":[\"显示在所有文章和页面的底部。\"],\"j4VrG6\":[\"下载导出 ZIP\"],\"j5nQL2\":[\"例如 iOS Shortcuts\"],\"jUV7CU\":[\"上传头像\"],\"jVUmOK\":[\"支持 Markdown\"],\"jgBjXJ\":[\"撤销此令牌?任何使用它的脚本将停止工作。\"],\"jpctdh\":[\"查看\"],\"k1ifdL\":[\"处理中...\"],\"kMXclu\":[\"下载网站导出\"],\"kNiQp6\":[\"已置顶\"],\"kRhzWq\":[\"GitHub 同步\"],\"kVQs7s\":[\"细粒度样式覆盖\"],\"ke1gWS\":[\"自定义 URL\"],\"kfcRb0\":[\"头像\"],\"kxDZ2i\":[\"此代码将在您网站的每个页面上运行。\"],\"l2Op2p\":[\"查询参数\"],\"lLW3vJ\":[\"目标 slug\"],\"lYHJih\":[\"撤销此会话? 该设备需要重新登录.\"],\"mLOk1i\":[\"立即将所有文章推送到 GitHub,而不是等待下一次自动同步。\"],\"mSNmrX\":[\"列出帖子:\"],\"nK07ni\":[\"为您的网站选择一种排版方向。每个主题都会同时改变字体搭配和阅读节奏。\"],\"nbfdhU\":[\"集成\"],\"ntJYyh\":[\"在 \",[\"providerLabel\"],\" 管理域名、套餐和计费\"],\"o/vNDE\":[\"允许您覆盖任何主题变量.\"],\"oGC9uP\":[\"owner/repo\"],\"oH2JHg\":[\"我们会预先填充名称 \",[\"name\"],\"。返回时列表会刷新。\"],\"oKOOsY\":[\"颜色主题\"],\"oL535e\":[\"尚未同步\"],\"oNA4If\":[\"所有合集已在您的导航中。\"],\"pZq3aX\":[\"上传失败。请重试。\"],\"pgTIrt\":[\"选择要与此站点同步的 GitHub 账户和仓库。\"],\"psoxDF\":[\"该字体主题不可用。请选择另一个。\"],\"pvnfJD\":[\"深色\"],\"q+hNag\":[\"合集\"],\"qdcESc\":[\"创建新仓库\"],\"r5EW6f\":[\"此仓库已在为另一个 Jant 站点 (\",[\"host\"],\") 进行备份。请选择其他仓库。\"],\"rEspiY\":[\"导航位置已更新.\"],\"rFmBG3\":[\"配色主题\"],\"rlonmB\":[\"删除失败。请稍后再试。\"],\"satWc6\":[\"主 RSS 源\"],\"sgr2wQ\":[\"合集\"],\"sqxcaY\":[\"创建于 \",[\"date\"]],\"sxkWRg\":[\"高级\"],\"t/YqKh\":[\"移除\"],\"t3hvHq\":[\"立即同步\"],\"tJ4H0O\":[\"你的 Telegram 账号\"],\"tfDRzk\":[\"保存\"],\"tvgAq5\":[\"尚未授权任何账户\"],\"u1VTd3\":[\"调色板、表面色调与整体氛围\"],\"u3wRF+\":[\"已发布\"],\"u6KOjV\":[\"想要更多控制?\"],\"udPwLB\":[\"页眉\"],\"ui6aMF\":[\"以下设备当前已登录到您的帐户。撤销任何您不认识的会话。\"],\"vBEKwo\":[\"在此管理本站点的活动会话。密码和托管访问通过 \",[\"providerLabel\"],\" 管理。\"],\"vRldcl\":[\"排版选项与阅读质感\"],\"vSYKYI\":[\"主订阅源\"],\"vTuib7\":[\"这将控制 /feed 返回的内容。\"],\"vXIe7J\":[\"语言\"],\"vmQmHx\":[\"添加自定义 CSS 以覆盖任何样式. 使用数据属性如 [data-page], [data-post], [data-format] 来定位特定元素.\"],\"vzX5FB\":[\"删除账号\"],\"w8Rv8T\":[\"标签为必填项\"],\"wL3cK8\":[\"最新\"],\"wPmHHc\":[\"低调的界面让写作成为焦点.\"],\"wW6NCp\":[\"上次错误\"],\"wc+17X\":[\"/* 在此填写您的自定义 CSS */\"],\"wuLtXn\":[\"当前没有活动会话。 已登录的设备会显示在此处。\"],\"xCWek4\":[\"文件存储尚未设置。请检查服务器配置。\"],\"xHt036\":[\"个人访问令牌\"],\"xbN8dp\":[\"柔和的颜色仍应保持清晰的阅读节奏。\"],\"y28hnO\":[\"文章\"],\"y8Md/V\":[\"语言和时间已更新。\"],\"yNCqOt\":[\"最新订阅源\"],\"yQ3kNF\":[\"输入以下短语以确认:\"],\"ydq1k2\":[\"请先选择一个账号\"],\"yjjCV8\":[\"固定订阅源 URL\"],\"yjkELF\":[\"确认新密码\"],\"yzF66j\":[\"链接\"],\"z6wakA\":[\"在您的主页上显示的简短介绍.\"],\"zEizrk\":[\"上次使用 \",[\"date\"]],\"zSURJW\":[\"没有匹配的仓库。\"],\"zXH2jX\":[\"语言与时间\"],\"zlcDd2\":[\"要删除此自定义 URL 吗?使用它的访问者将不再被重定向。\"],\"zwBp5t\":[\"私有\"],\"zxRN6H\":[\"页眉链接、首页信息流和溢出菜单\"]}")as Messages;
|
|
@@ -527,10 +527,8 @@ msgstr "自訂 URL"
|
|
|
527
527
|
|
|
528
528
|
#. @context: Section heading for dangerous/destructive actions
|
|
529
529
|
#. @context: Settings group label for destructive account actions
|
|
530
|
-
#. @context: Settings group label for destructive account actions
|
|
531
530
|
#: src/ui/dash/DangerZone.tsx
|
|
532
531
|
#: src/ui/dash/settings/AccountMenuContent.tsx
|
|
533
|
-
#: src/ui/dash/settings/AccountMenuContent.tsx
|
|
534
532
|
msgid "Danger Zone"
|
|
535
533
|
msgstr "危險區域"
|
|
536
534
|
|
|
@@ -567,11 +565,6 @@ msgstr "刪除帳號"
|
|
|
567
565
|
msgid "Delete Account Permanently"
|
|
568
566
|
msgstr "永久刪除帳戶"
|
|
569
567
|
|
|
570
|
-
#. @context: Settings item — open the hosted site danger zone in the control plane
|
|
571
|
-
#: src/ui/dash/settings/AccountMenuContent.tsx
|
|
572
|
-
msgid "Delete Hosted Site"
|
|
573
|
-
msgstr "刪除託管網站"
|
|
574
|
-
|
|
575
568
|
#. @context: Final browser confirm dialog before account deletion
|
|
576
569
|
#: src/ui/dash/settings/DeleteAccountContent.tsx
|
|
577
570
|
msgid "Delete this blog permanently? This cannot be undone."
|
|
@@ -641,6 +634,11 @@ msgstr "在我的網站頁首顯示大頭貼"
|
|
|
641
634
|
msgid "Displayed at the bottom of all posts and pages."
|
|
642
635
|
msgstr "顯示於所有文章與頁面的底部。"
|
|
643
636
|
|
|
637
|
+
#. @context: Settings item description for the hosted site management external link
|
|
638
|
+
#: src/ui/dash/settings/SettingsRootContent.tsx
|
|
639
|
+
msgid "Domains, plan, and billing in {providerLabel}"
|
|
640
|
+
msgstr "在 {providerLabel} 管理網域、方案和計費"
|
|
641
|
+
|
|
644
642
|
#. @context: Settings item description for static site export
|
|
645
643
|
#: src/ui/dash/settings/AccountMenuContent.tsx
|
|
646
644
|
msgid "Download a Hugo-compatible archive — host it statically or move to another Jant."
|
|
@@ -825,8 +823,10 @@ msgstr "首頁"
|
|
|
825
823
|
msgid "Home settings updated."
|
|
826
824
|
msgstr "首頁設定已更新。"
|
|
827
825
|
|
|
826
|
+
#. @context: Generic hosted auth provider label when no explicit provider name is configured
|
|
828
827
|
#. @context: Generic hosted auth provider label when no explicit provider name is configured
|
|
829
828
|
#: src/ui/dash/settings/AccountMenuContent.tsx
|
|
829
|
+
#: src/ui/dash/settings/SettingsRootContent.tsx
|
|
830
830
|
msgid "Hosted account"
|
|
831
831
|
msgstr "託管帳號"
|
|
832
832
|
|
|
@@ -972,6 +972,11 @@ msgstr "主要 RSS 訂閱"
|
|
|
972
972
|
msgid "Manage Account"
|
|
973
973
|
msgstr "管理帳戶"
|
|
974
974
|
|
|
975
|
+
#. @context: Settings item label for opening this site's hosted management page (domains, plan, billing) in the connected control plane
|
|
976
|
+
#: src/ui/dash/settings/SettingsRootContent.tsx
|
|
977
|
+
msgid "Manage Hosting"
|
|
978
|
+
msgstr "管理託管"
|
|
979
|
+
|
|
975
980
|
#. @context: Settings item description for hosted account management in the connected provider
|
|
976
981
|
#: src/ui/dash/settings/AccountMenuContent.tsx
|
|
977
982
|
msgid "Manage password and hosted access in {providerLabel}"
|
|
@@ -1135,11 +1140,6 @@ msgstr "開啟 Telegram 以連線"
|
|
|
1135
1140
|
msgid "Open the bot and send the binding code, then anything you message it becomes a note."
|
|
1136
1141
|
msgstr "開啟機器人並傳送綁定碼,之後你傳給它的任何訊息都會成為筆記。"
|
|
1137
1142
|
|
|
1138
|
-
#. @context: Settings item description for the hosted delete-site entry in the account menu
|
|
1139
|
-
#: src/ui/dash/settings/AccountMenuContent.tsx
|
|
1140
|
-
msgid "Open the hosted site controls in {providerLabel} to cancel billing or permanently delete this site."
|
|
1141
|
-
msgstr "在 {providerLabel} 開啟託管站點控制項以取消計費或永久刪除此站點。"
|
|
1142
|
-
|
|
1143
1143
|
#. @context: Separator between the QR code and the deep-link button on the Telegram connect page
|
|
1144
1144
|
#: src/ui/dash/settings/TelegramContent.tsx
|
|
1145
1145
|
msgid "or"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"+4Z6iP\":[\"先在 GitHub 上建立儲存庫 — 可以是空的。\"],\"+9JI/F\":[\"連線後會將您的網站同步到 \",[\"repo\"],\" 的預設分支,並疊加在其現有歷史之上。Jant 管理路徑外的既有檔案會保留。此操作無法復原。\"],\"+AXdXp\":[\"標籤與 URL 為必填\"],\"+K0AvT\":[\"解除連線\"],\"+zy2Nq\":[\"類型\"],\"/3H2/s\":[\"此託管網站透過 \",[\"providerLabel\"],\" 登入。請在該處管理密碼與託管存取權限。\"],\"/JnyjR\":[\"切換內建導覽項目。它們的順序決定頁首顯示哪些項目,以及首頁會先開啟哪一個 feed。\"],\"/ODeyS\":[\"聲明給讀者的內容語言(HTML lang、RSS),同時驅動後台介面的語言。可填任意 BCP 47 標籤;沒有對應翻譯時後台會回退為英文。\"],\"/zOUxl\":[\"連結至 Telegram 機器人的 QR 碼\"],\"0OGSSc\":[\"頭像顯示已更新.\"],\"0UzCUX\":[\"更新您用來登入的密碼\"],\"0bdA9b\":[\"開啟 Telegram 以連線\"],\"10UtuM\":[\"CJK 字體\"],\"14BEca\":[\"瞭解原因\"],\"1F6Mzc\":[\"目前尚無導覽項目。請新增連結或在下方啟用系統項目。\"],\"1mbBbL\":[\"手動連接\"],\"1njn7W\":[\"淺色\"],\"2B7t+s\":[\"工作階段與密碼\"],\"2DoBvq\":[\"訂閱來源\"],\"2FYpfJ\":[\"更多\"],\"2Ithfh\":[\"傳送任何文字給機器人,該文字會作為筆記已發佈。\"],\"2MXb5X\":[\"關於靜謐設計的實地筆記\"],\"2PTjMB\":[\"我想刪除 \",[\"siteName\"]],\"2cFU6q\":[\"網站頁尾\"],\"2oWZo7\":[\"最近一次提交\"],\"2uuy4H\":[\"已透過個人存取權杖連線\"],\"35x8eZ\":[\"顯示 \",[\"shown\"],\" 共 \",[\"total\"]],\"39QGku\":[\"開啟機器人並傳送綁定碼,之後你傳給它的任何訊息都會成為筆記。\"],\"3Cw1AI\":[\"新增選集\"],\"3VrybB\":[\"重新導向\"],\"3Yvsaz\":[\"302 (暫時)\"],\"3n0zbB\":[\"在示範模式中已停用工作階段管理。請改用共用示範工作階段。\"],\"3sYJi5\":[\"下載與 Hugo 相容的封存 — 以靜態方式託管或移轉到另一個 Jant\"],\"3wKq0C\":[\"無法儲存。請稍後再試。\"],\"49Bsal\":[\"Feed 設定已更新。\"],\"4Jge8E\":[\"目前的工作階段\"],\"4KIa+q\":[\"已下載匯出檔案。\"],\"4cEClj\":[\"工作階段\"],\"4zGJ5E\":[\"永久刪除帳戶\"],\"5QlUIt\":[\"倉庫為空。準備連線。\"],\"5VQnR3\":[\"當你想要一個永遠不會改變的 feed URL 時,請使用這些。\"],\"5dpcN1\":[\"輸入以搜尋全部\"],\"5f1Wo9\":[\"已以 \",[\"account\"],\" 連線\"],\"69OXZB\":[\"刪除託管網站\"],\"6ArdBh\":[\"將精選文章用於 /feed.\"],\"6DjeBT\":[\"示範網站會始終對搜尋引擎保持隱藏。\"],\"6FFB7q\":[\"使用最新的公開貼文作為 /feed。\"],\"6K1Vef\":[\"確定要永久刪除此部落格嗎?此動作無法復原。\"],\"6NpNLc\":[\"此儲存庫已有內容。\"],\"6V3Ea3\":[\"已複製\"],\"71WIgc\":[\"取得新代碼\"],\"746NHh\":[\"此部落格\"],\"7811AW\":[\"此儲存庫已在備份本網站。\"],\"7FaY4u\":[\"用法\"],\"7G9YLi\":[\"允許搜尋引擎收錄我的網站\"],\"7GISOt\":[\"儲存機器人權杖\"],\"7MZxzw\":[\"密碼已變更.\"],\"7vhWI8\":[\"新密碼\"],\"7z05Pf\":[\"在 \",[\"providerLabel\"],\" 開啟託管站點控制項以取消計費或永久刪除此站點。\"],\"81nFIS\":[\"密碼不符。請確認兩個欄位相同。\"],\"87a/t/\":[\"標籤\"],\"89Upyo\":[\"該主題目前不可用。請選擇其他主題。\"],\"8BfEpW\":[\"託管帳號\"],\"8N/Mcp\":[\"封存篩選參數 (例如 format=note&view=list)\"],\"8T46pB\":[\"機器人權杖\"],\"8U2Z7f\":[\"新增自訂 URL\"],\"8ZsakT\":[\"密碼\"],\"9+vGLh\":[\"自訂 CSS\"],\"9As8Nu\":[\"在 GitHub 上建立一個\"],\"9Lsvt5\":[\"已於 \",[\"date\"],\" 登入\"],\"9T7Cwm\":[\"重新導向、自訂路徑與網址控制\"],\"9aUyym\":[\"查看您在哪裡已登入,並撤銷舊的工作階段\"],\"A1taO8\":[\"搜尋\"],\"AeXO77\":[\"帳戶\"],\"AnY+O9\":[\"在首頁底部顯示「Build with Jant」\"],\"ApZDMk\":[\"此圖會用於您的 favicon 和 apple-touch-icon。為達最佳效果,請上傳至少 512x512 像素、背景為純色的正方形 PNG。\"],\"B495Gs\":[\"封存\"],\"B4ESok\":[\"API 參考\"],\"BzEFor\":[\"或\"],\"CDAdlf\":[\"移除機器人\"],\"CTAEes\":[\"選擇儲存庫\"],\"CjZZgz\":[\"此儲存庫已有提交紀錄\"],\"D8k2s6\":[\"連接 Telegram\"],\"DCKkhU\":[\"目前密碼\"],\"DKKKeF\":[\"在 \",[\"providerLabel\"],\" 管理密碼與託管存取\"],\"EO3I6h\":[\"上傳未成功. 請稍後再試.\"],\"Enslfm\":[\"目標網址\"],\"F7FKwe\":[\"你在此處貼上的任何內容都能完全存取訪客的瀏覽器。僅使用來自你信任來源的程式碼。\"],\"FkMol5\":[\"精選\"],\"G/1oP+\":[\"移除 webhook 並停止同步。您的儲存庫內容不會被刪除。\"],\"G0qJsQ\":[\"找不到安全權杖。請重新整理頁面後再試一次。\"],\"G39wnK\":[\"將內容備份並與 GitHub 儲存庫同步\"],\"GMMWcy\":[\"名稱, 中繼資料, 語言, 和 搜尋預設值\"],\"GXsAby\":[\"撤銷\"],\"GxkJXS\":[\"上傳中...\"],\"GzKzUa\":[\"試用限制\"],\"HKH+W+\":[\"資料\"],\"Hp1l6f\":[\"目前\"],\"HxlY7t\":[\"變更此設定會更新訂閱者從 /feed 取得的內容。\"],\"HxuOlm\":[\"網站頁首\"],\"I6gXOa\":[\"路徑\"],\"ID38tA\":[\"示範模式下帳號刪除已停用。共用示範會另行重置。\"],\"IF9tPu\":[\"何時使用網站匯出、資料庫備份與復原演練。\"],\"IW5PBo\":[\"複製權杖\"],\"IagCbF\":[\"URL\"],\"IreQBq\":[\"儲存庫\"],\"J6bLeg\":[\"新增自訂連結到任何 URL\"],\"JL7LF5\":[\"可用的 CSS 變數、data 屬性與範例.\"],\"JTviaO\":[\"管理登入安全、匯出,以及不可逆的操作。\"],\"JcD7qf\":[\"更多操作\"],\"JjX0OO\":[\"請立即複製您的權杖 — 它不會再顯示。\"],\"JrFTcr\":[\"連線中…\"],\"JuN5GC\":[\"未選取檔案。請選擇要上傳的檔案。\"],\"KDw4GX\":[\"重試\"],\"KSgo21\":[\"選擇一個儲存庫\"],\"KVVYBh\":[\"新增選集到導覽\"],\"KiJn9B\":[\"筆記\"],\"L3DEwT\":[\"移除這個頭像?您的 favicon 與頁首圖示會回復為預設。\"],\"L4t4/q\":[\"3月14日\"],\"LdyooL\":[\"連結\"],\"M/D8PK\":[\"+ 安裝到其他帳戶\"],\"M/haSd\":[\"永遠顯示主題的淺色版本。\"],\"M2kIWU\":[\"字型主題\"],\"M6CbAU\":[\"切換編輯面板\"],\"MaYYE6\":[\"透過向 Telegram 機器人傳送訊息來發佈筆記\"],\"Me5t5H\":[\"連接 GitHub 倉庫,自動將你的文章備份為 Markdown 檔案。GitHub 上的編輯會同步回你的網站。\"],\"Mr4QPw\":[\"要斷開 Telegram?您可以隨時使用新的綁定代碼重新連接。\"],\"MtENL9\":[\"調整您的網站外觀、可讀性與執行效能。\"],\"N/8NPV\":[\"在刪除前,請先下載網站匯出檔案。刪除後無法恢復此帳號。\"],\"N7UNHY\":[\"精選 RSS 來源\"],\"NHnUHF\":[\"頁首上的網站圖示與個人標記\"],\"NU2Fqi\":[\"儲存 CSS\"],\"Nldjdr\":[\"尚未有自訂 URL。建立一個自訂 URL 以為文章新增重新導向或自訂路徑。\"],\"O7rgs6\":[\"頁首 RSS 指向你的 \",[\"feed\"],\" 訂閱 (/feed)。在「一般」中變更 /feed 回傳的內容。\"],\"OSJXFg\":[\"套用於整個網站, 包括管理頁面. 選擇一個調色盤, 然後決定它是跟隨系統還是維持固定.\"],\"Ox3+3h\":[\"無相符結果。\"],\"PEUV5I\":[\"程式碼注入已更新。\"],\"PXj9lw\":[\"停止接受來自 Telegram 的貼文。您現有的筆記會保持已發佈。\"],\"PZ7HJ8\":[\"部落格大頭貼\"],\"Pwqkdw\":[\"載入中…\"],\"PxJ9W6\":[\"產生權杖\"],\"Q/6Y+2\":[\"需要在目標儲存庫上擁有 Contents(讀/寫)和 Webhooks(讀/寫)權限。\"],\"Q30z/l\":[\"要從導覽移除這個選集嗎?選集本身不會被刪除。\"],\"Q99OtV\":[\"將選集釘選到導覽列。最近 48 小時內更新的選集旁會顯示一個 * 號。\"],\"QZmz0H\":[\"內建連結\"],\"Qnrzvb\":[\"已啟用的權杖\"],\"R6Z4LE\":[\"下載失敗。請再試一次。\"],\"R9Khdg\":[\"自動\"],\"RcdDOS\":[\"在 Telegram 上向 @BotFather 發送訊息以建立機器人,然後貼上它提供給你的權杖\"],\"RxsRD6\":[\"時區\"],\"SJmfuf\":[\"網站名稱\"],\"SKZhW9\":[\"權杖名稱 (API 權杖名稱欄位。)\"],\"SVQQPe\":[\"無法連線。請檢查錯誤並再試一次。\"],\"SchpMp\":[\"Telegram\"],\"TpF3v+\":[\"在 </head> 之前注入。用於分析、自訂 meta 標籤,以及必須提前載入的樣式。\"],\"Tz0i8g\":[\"設定\"],\"UFK415\":[\"用於分析與小工具的網站全域 HTML\"],\"UTvFQq\":[\"開啟 \",[\"linkOpen\"],\"@\",[\"botUsername\"],[\"linkClose\"],\" 並傳送:\"],\"Uj/btJ\":[\"在我的網站頁首顯示大頭貼\"],\"UsODUn\":[\"選擇一個帳戶\"],\"UxKoFf\":[\"導覽\"],\"V+bhUy\":[\"安裝 GitHub App\"],\"V4WsyL\":[\"新增連結\"],\"V5pZwT\":[\"搜尋設定已更新。\"],\"VXUPla\":[\"使用 GitHub App 連線\"],\"VhMDMg\":[\"變更密碼\"],\"Vn3jYy\":[\"導覽項目\"],\"VoZYGU\":[\"這會永久刪除您所有的資料 — 文章、媒體、選集、設定,以及您的帳戶。您的部落格將被重設為初始設定狀態。此操作無法復原。\"],\"Weq9zb\":[\"一般\"],\"Wi9i06\":[\"依照每位訪客的系統偏好。\"],\"Wx1M8N\":[\"安裝 GitHub App,以授予存取權而無需管理個人權杖。權限以每個儲存庫為範圍,並可在 GitHub 上撤銷。\"],\"X+8FMk\":[\"目前的密碼不符。請再試一次。\"],\"X1G9eY\":[\"導覽預覽\"],\"X9Hujr\":[\"手動推送\"],\"XtBJV8\":[\"正在檢查儲存庫…\"],\"Xtc16w\":[\"重新整理儲存庫清單\"],\"Y/F35r\":[\"使用 curl 建立貼文:\"],\"YF6zHf\":[\"網站設定已更新.\"],\"YdG2RF\":[\"匯出網站\"],\"YkgZi7\":[\"連接一個 Telegram 機器人,之後你傳給它的任何訊息都會以筆記形式已發佈。\"],\"YwhjRx\":[\"管理帳戶\"],\"ZDY7Fy\":[\"同步中…\"],\"ZQKLI1\":[\"危險區域\"],\"ZS/CBL\":[\"刪除此導覽連結?訪客將不再在您的網站頁首看到它。\"],\"ZhhOwV\":[\"引用 (Jant 的貼文格式之一。)\"],\"ZiooJI\":[\"API 權杖\"],\"Zm7Qb0\":[\"備份與還原指南\"],\"ZmUkwN\":[\"新增自訂連結到導覽\"],\"a14mj8\":[\"未知裝置\"],\"a3LDKx\":[\"安全性\"],\"aAIQg2\":[\"外觀\"],\"aFkzVF\":[\"目標文章或選集的 slug\"],\"alKG0+\":[\"字型主題\"],\"anibOb\":[\"關於本部落格\"],\"any7NR\":[\"主題指南\"],\"b+/jO6\":[\"301 (永久)\"],\"bHOiy1\":[\"示範模式已停用變更密碼功能。請使用共用示範帳號登入。\"],\"bHYIks\":[\"登出\"],\"bmrL08\":[\"示範模式會隱藏會話、密碼更改與帳號刪除。匯出功能仍可使用。\"],\"c3MN2z\":[\"所有可用的端點與請求格式。\"],\"cS7/bk\":[\"移除已儲存的機器人權杖?其 webhook 會被刪除,任何已連接的帳號將會被斷線。\"],\"cSDy01\":[\"自訂 CSS 已更新.\"],\"clzoNp\":[\"始終顯示深色主題。\"],\"cnGeoo\":[\"刪除\"],\"d3FRkY\":[\"無法複製. 請再試一次.\"],\"d5oGUo\":[\"在 GitHub 建立新儲存庫\"],\"dEgA5A\":[\"取消\"],\"dTXUY+\":[\"確認刪除帳號\"],\"dYKrp3\":[\"從最新中隱藏 (不出現在 Latest 中,但仍可透過固定連結和集合存取的狀態。)\"],\"dk7TCH\":[\"永久刪除所有資料並重設部落格\"],\"drodVV\":[\"目前還沒有選集。請先建立一個,然後將它加入您的導覽。\"],\"dsWkIw\":[\"要與 GitHub 斷開連線嗎? webhook 將會被移除。您的儲存庫內容不會被刪除。\"],\"e/tSI5\":[\"導覽順序已更新。\"],\"ePK91l\":[\"編輯\"],\"ebQKK7\":[\"網站\"],\"egK+Yy\":[\"供腳本與自動化使用的 Bearer 權杖\"],\"ehj/zN\":[\"重新導向類型\"],\"eneWvv\":[\"草稿\"],\"erTMh7\":[\"上次同步\"],\"f+m8jj\":[\"已複製訂閱網址。\"],\"f8fH8W\":[\"設計\"],\"fWYqkz\":[\"程式碼注入\"],\"gOWiTY\":[\"載入為中文、日文或韓文內容最佳化的襯線字型。\"],\"gZ5owP\":[\"搜尋儲存庫\"],\"gbqbh6\":[\"可以放心離開此頁面 — 同步會在背景繼續進行。\"],\"gkFvVN\":[\"在 </body> 之前注入。用於聊天小工具和不應阻塞頁面載入的腳本。\"],\"gtQsRO\":[\"建立自訂網址\"],\"hBO/y4\":[\"安全權杖已過期。請重新整理頁面並再試一次。\"],\"hGmyDl\":[\"權杖讓您從腳本, 捷徑和其他工具存取 API 無需登入\"],\"hIHkRy\":[\"已透過 GitHub 應用程式連線\"],\"hdSi1b\":[\"輸入 \",[\"repo\"],\" 以確認\"],\"he3ygx\":[\"複製\"],\"i0qMbr\":[\"首頁\"],\"iEUzMn\":[\"系統\"],\"iSLIjg\":[\"連接\"],\"iVOMRi\":[\"首頁設定已更新。\"],\"icB4Cv\":[\"將連結拖到此處以顯示於「更多」選單下方\"],\"id3vuh\":[\"已設定 Telegram,但無法連線到機器人。請檢查機器人權杖並再試一次。\"],\"ihn4zD\":[\"搜尋…\"],\"iiDXZc\":[\"顯示於所有文章與頁面的底部。\"],\"j4VrG6\":[\"下載匯出 ZIP\"],\"j5nQL2\":[\"例如 iOS 捷徑\"],\"jUV7CU\":[\"上傳大頭貼\"],\"jVUmOK\":[\"支援 Markdown\"],\"jgBjXJ\":[\"要撤銷這個權杖嗎?任何使用它的腳本都會停止運作。\"],\"jpctdh\":[\"檢視\"],\"k1ifdL\":[\"處理中...\"],\"kMXclu\":[\"下載網站匯出檔案\"],\"kNiQp6\":[\"已釘選\"],\"kRhzWq\":[\"GitHub 同步\"],\"kVQs7s\":[\"細緻的樣式覆寫\"],\"ke1gWS\":[\"自訂 URL\"],\"kfcRb0\":[\"頭像\"],\"kxDZ2i\":[\"此程式碼會在您網站的每個頁面上執行。\"],\"l2Op2p\":[\"查詢參數\"],\"lLW3vJ\":[\"目標 slug\"],\"lYHJih\":[\"撤銷此工作階段?該裝置將需要重新登入。\"],\"mLOk1i\":[\"立即將所有文章推送到 GitHub,而不是等待下一次自動同步。\"],\"mSNmrX\":[\"列出貼文:\"],\"nK07ni\":[\"為您的網站選擇一種排版風格。每個主題會同時改變字體配對與閱讀節奏。\"],\"nbfdhU\":[\"第三方整合\"],\"o/vNDE\":[\"讓您覆寫任何主題變數。\"],\"oGC9uP\":[\"owner/repo\"],\"oH2JHg\":[\"我們會預先填入名稱 \",[\"name\"],\"。返回時清單會重新整理。\"],\"oKOOsY\":[\"色彩主題\"],\"oL535e\":[\"尚未同步\"],\"oNA4If\":[\"所有選集已經在您的導覽中。\"],\"pZq3aX\":[\"上傳失敗。請再試一次。\"],\"pgTIrt\":[\"選擇要與此網站同步的 GitHub 帳號和儲存庫.\"],\"psoxDF\":[\"該字型主題無法使用. 請選擇其他主題.\"],\"pvnfJD\":[\"深色\"],\"q+hNag\":[\"選集\"],\"qdcESc\":[\"建立新儲存庫\"],\"r5EW6f\":[\"此儲存庫已在備份另一個 Jant 網站 (\",[\"host\"],\"). 請選擇其他儲存庫.\"],\"rEspiY\":[\"導覽位置已更新。\"],\"rFmBG3\":[\"色彩主題\"],\"rlonmB\":[\"無法刪除。請稍後再試。\"],\"satWc6\":[\"主要 RSS 訂閱\"],\"sgr2wQ\":[\"選集\"],\"sqxcaY\":[\"建立於 \",[\"date\"]],\"sxkWRg\":[\"進階\"],\"t/YqKh\":[\"移除\"],\"t3hvHq\":[\"立即同步\"],\"tJ4H0O\":[\"您的 Telegram 帳號\"],\"tfDRzk\":[\"儲存\"],\"tvgAq5\":[\"尚未授權任何帳戶\"],\"u1VTd3\":[\"調色盤、表面色調與整體氛圍\"],\"u3wRF+\":[\"已發佈\"],\"u6KOjV\":[\"想要更細緻的控制?\"],\"udPwLB\":[\"頁首\"],\"ui6aMF\":[\"這些裝置目前已登入您的帳號。撤銷任何您不認識的工作階段。\"],\"vBEKwo\":[\"在此管理本網站的活動工作階段。密碼與託管存取由 \",[\"providerLabel\"],\" 管理。\"],\"vRldcl\":[\"字體選擇與閱讀質感\"],\"vSYKYI\":[\"主要訂閱來源\"],\"vTuib7\":[\"這會控制 /feed 回傳的內容。\"],\"vXIe7J\":[\"語言\"],\"vmQmHx\":[\"新增自訂 CSS 以覆寫任何樣式。使用像 [data-page]、[data-post]、[data-format] 這類資料屬性來選取特定元素。\"],\"vzX5FB\":[\"刪除帳號\"],\"w8Rv8T\":[\"標籤為必填\"],\"wL3cK8\":[\"最新\"],\"wPmHHc\":[\"低調的介面讓文字成為主角。\"],\"wW6NCp\":[\"上次錯誤\"],\"wc+17X\":[\"/* 在此放入您的自訂 CSS */\"],\"wuLtXn\":[\"目前沒有任何活動中的工作階段。已登入的裝置會顯示在此處。\"],\"xCWek4\":[\"檔案儲存尚未設定。請檢查您的伺服器設定。\"],\"xHt036\":[\"個人存取權杖\"],\"xbN8dp\":[\"柔和的色彩仍應保有清晰的閱讀節奏。\"],\"y28hnO\":[\"文章\"],\"y8Md/V\":[\"語言與時間已更新。\"],\"yNCqOt\":[\"最新 RSS 來源\"],\"yQ3kNF\":[\"請輸入以下短語以確認:\"],\"ydq1k2\":[\"請先選擇一個帳戶\"],\"yjjCV8\":[\"固定的 RSS 檔案網址\"],\"yjkELF\":[\"確認新密碼\"],\"yzF66j\":[\"連結 (Jant 的貼文格式之一。)\"],\"z6wakA\":[\"顯示在您的主頁上的簡短介紹。\"],\"zEizrk\":[\"最後使用於 \",[\"date\"]],\"zSURJW\":[\"沒有符合的儲存庫.\"],\"zXH2jX\":[\"語言與時區\"],\"zlcDd2\":[\"刪除此自訂 URL?使用該 URL 的訪客將不會再被重新導向。\"],\"zwBp5t\":[\"私有\"],\"zxRN6H\":[\"頁首連結、首頁動態與更多選單\"]}")as Messages;
|
|
1
|
+
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"+4Z6iP\":[\"先在 GitHub 上建立儲存庫 — 可以是空的。\"],\"+9JI/F\":[\"連線後會將您的網站同步到 \",[\"repo\"],\" 的預設分支,並疊加在其現有歷史之上。Jant 管理路徑外的既有檔案會保留。此操作無法復原。\"],\"+AXdXp\":[\"標籤與 URL 為必填\"],\"+K0AvT\":[\"解除連線\"],\"+zy2Nq\":[\"類型\"],\"/3H2/s\":[\"此託管網站透過 \",[\"providerLabel\"],\" 登入。請在該處管理密碼與託管存取權限。\"],\"/JnyjR\":[\"切換內建導覽項目。它們的順序決定頁首顯示哪些項目,以及首頁會先開啟哪一個 feed。\"],\"/ODeyS\":[\"聲明給讀者的內容語言(HTML lang、RSS),同時驅動後台介面的語言。可填任意 BCP 47 標籤;沒有對應翻譯時後台會回退為英文。\"],\"/zOUxl\":[\"連結至 Telegram 機器人的 QR 碼\"],\"0OGSSc\":[\"頭像顯示已更新.\"],\"0UzCUX\":[\"更新您用來登入的密碼\"],\"0bdA9b\":[\"開啟 Telegram 以連線\"],\"10UtuM\":[\"CJK 字體\"],\"14BEca\":[\"瞭解原因\"],\"1F6Mzc\":[\"目前尚無導覽項目。請新增連結或在下方啟用系統項目。\"],\"1mbBbL\":[\"手動連接\"],\"1njn7W\":[\"淺色\"],\"2B7t+s\":[\"工作階段與密碼\"],\"2DoBvq\":[\"訂閱來源\"],\"2FYpfJ\":[\"更多\"],\"2Ithfh\":[\"傳送任何文字給機器人,該文字會作為筆記已發佈。\"],\"2MXb5X\":[\"關於靜謐設計的實地筆記\"],\"2PTjMB\":[\"我想刪除 \",[\"siteName\"]],\"2cFU6q\":[\"網站頁尾\"],\"2oWZo7\":[\"最近一次提交\"],\"2uuy4H\":[\"已透過個人存取權杖連線\"],\"35x8eZ\":[\"顯示 \",[\"shown\"],\" 共 \",[\"total\"]],\"39QGku\":[\"開啟機器人並傳送綁定碼,之後你傳給它的任何訊息都會成為筆記。\"],\"3Cw1AI\":[\"新增選集\"],\"3VrybB\":[\"重新導向\"],\"3Yvsaz\":[\"302 (暫時)\"],\"3n0zbB\":[\"在示範模式中已停用工作階段管理。請改用共用示範工作階段。\"],\"3sYJi5\":[\"下載與 Hugo 相容的封存 — 以靜態方式託管或移轉到另一個 Jant\"],\"3wKq0C\":[\"無法儲存。請稍後再試。\"],\"49Bsal\":[\"Feed 設定已更新。\"],\"4Jge8E\":[\"目前的工作階段\"],\"4KIa+q\":[\"已下載匯出檔案。\"],\"4cEClj\":[\"工作階段\"],\"4zGJ5E\":[\"永久刪除帳戶\"],\"5QlUIt\":[\"倉庫為空。準備連線。\"],\"5VQnR3\":[\"當你想要一個永遠不會改變的 feed URL 時,請使用這些。\"],\"5dpcN1\":[\"輸入以搜尋全部\"],\"5f1Wo9\":[\"已以 \",[\"account\"],\" 連線\"],\"6ArdBh\":[\"將精選文章用於 /feed.\"],\"6DjeBT\":[\"示範網站會始終對搜尋引擎保持隱藏。\"],\"6E3aK4\":[\"管理託管\"],\"6FFB7q\":[\"使用最新的公開貼文作為 /feed。\"],\"6K1Vef\":[\"確定要永久刪除此部落格嗎?此動作無法復原。\"],\"6NpNLc\":[\"此儲存庫已有內容。\"],\"6V3Ea3\":[\"已複製\"],\"71WIgc\":[\"取得新代碼\"],\"746NHh\":[\"此部落格\"],\"7811AW\":[\"此儲存庫已在備份本網站。\"],\"7FaY4u\":[\"用法\"],\"7G9YLi\":[\"允許搜尋引擎收錄我的網站\"],\"7GISOt\":[\"儲存機器人權杖\"],\"7MZxzw\":[\"密碼已變更.\"],\"7vhWI8\":[\"新密碼\"],\"81nFIS\":[\"密碼不符。請確認兩個欄位相同。\"],\"87a/t/\":[\"標籤\"],\"89Upyo\":[\"該主題目前不可用。請選擇其他主題。\"],\"8BfEpW\":[\"託管帳號\"],\"8N/Mcp\":[\"封存篩選參數 (例如 format=note&view=list)\"],\"8T46pB\":[\"機器人權杖\"],\"8U2Z7f\":[\"新增自訂 URL\"],\"8ZsakT\":[\"密碼\"],\"9+vGLh\":[\"自訂 CSS\"],\"9As8Nu\":[\"在 GitHub 上建立一個\"],\"9Lsvt5\":[\"已於 \",[\"date\"],\" 登入\"],\"9T7Cwm\":[\"重新導向、自訂路徑與網址控制\"],\"9aUyym\":[\"查看您在哪裡已登入,並撤銷舊的工作階段\"],\"A1taO8\":[\"搜尋\"],\"AeXO77\":[\"帳戶\"],\"AnY+O9\":[\"在首頁底部顯示「Build with Jant」\"],\"ApZDMk\":[\"此圖會用於您的 favicon 和 apple-touch-icon。為達最佳效果,請上傳至少 512x512 像素、背景為純色的正方形 PNG。\"],\"B495Gs\":[\"封存\"],\"B4ESok\":[\"API 參考\"],\"BzEFor\":[\"或\"],\"CDAdlf\":[\"移除機器人\"],\"CTAEes\":[\"選擇儲存庫\"],\"CjZZgz\":[\"此儲存庫已有提交紀錄\"],\"D8k2s6\":[\"連接 Telegram\"],\"DCKkhU\":[\"目前密碼\"],\"DKKKeF\":[\"在 \",[\"providerLabel\"],\" 管理密碼與託管存取\"],\"EO3I6h\":[\"上傳未成功. 請稍後再試.\"],\"Enslfm\":[\"目標網址\"],\"F7FKwe\":[\"你在此處貼上的任何內容都能完全存取訪客的瀏覽器。僅使用來自你信任來源的程式碼。\"],\"FkMol5\":[\"精選\"],\"G/1oP+\":[\"移除 webhook 並停止同步。您的儲存庫內容不會被刪除。\"],\"G0qJsQ\":[\"找不到安全權杖。請重新整理頁面後再試一次。\"],\"G39wnK\":[\"將內容備份並與 GitHub 儲存庫同步\"],\"GMMWcy\":[\"名稱, 中繼資料, 語言, 和 搜尋預設值\"],\"GXsAby\":[\"撤銷\"],\"GxkJXS\":[\"上傳中...\"],\"GzKzUa\":[\"試用限制\"],\"HKH+W+\":[\"資料\"],\"Hp1l6f\":[\"目前\"],\"HxlY7t\":[\"變更此設定會更新訂閱者從 /feed 取得的內容。\"],\"HxuOlm\":[\"網站頁首\"],\"I6gXOa\":[\"路徑\"],\"ID38tA\":[\"示範模式下帳號刪除已停用。共用示範會另行重置。\"],\"IF9tPu\":[\"何時使用網站匯出、資料庫備份與復原演練。\"],\"IW5PBo\":[\"複製權杖\"],\"IagCbF\":[\"URL\"],\"IreQBq\":[\"儲存庫\"],\"J6bLeg\":[\"新增自訂連結到任何 URL\"],\"JL7LF5\":[\"可用的 CSS 變數、data 屬性與範例.\"],\"JTviaO\":[\"管理登入安全、匯出,以及不可逆的操作。\"],\"JcD7qf\":[\"更多操作\"],\"JjX0OO\":[\"請立即複製您的權杖 — 它不會再顯示。\"],\"JrFTcr\":[\"連線中…\"],\"JuN5GC\":[\"未選取檔案。請選擇要上傳的檔案。\"],\"KDw4GX\":[\"重試\"],\"KSgo21\":[\"選擇一個儲存庫\"],\"KVVYBh\":[\"新增選集到導覽\"],\"KiJn9B\":[\"筆記\"],\"L3DEwT\":[\"移除這個頭像?您的 favicon 與頁首圖示會回復為預設。\"],\"L4t4/q\":[\"3月14日\"],\"LdyooL\":[\"連結\"],\"M/D8PK\":[\"+ 安裝到其他帳戶\"],\"M/haSd\":[\"永遠顯示主題的淺色版本。\"],\"M2kIWU\":[\"字型主題\"],\"M6CbAU\":[\"切換編輯面板\"],\"MaYYE6\":[\"透過向 Telegram 機器人傳送訊息來發佈筆記\"],\"Me5t5H\":[\"連接 GitHub 倉庫,自動將你的文章備份為 Markdown 檔案。GitHub 上的編輯會同步回你的網站。\"],\"Mr4QPw\":[\"要斷開 Telegram?您可以隨時使用新的綁定代碼重新連接。\"],\"MtENL9\":[\"調整您的網站外觀、可讀性與執行效能。\"],\"N/8NPV\":[\"在刪除前,請先下載網站匯出檔案。刪除後無法恢復此帳號。\"],\"N7UNHY\":[\"精選 RSS 來源\"],\"NHnUHF\":[\"頁首上的網站圖示與個人標記\"],\"NU2Fqi\":[\"儲存 CSS\"],\"Nldjdr\":[\"尚未有自訂 URL。建立一個自訂 URL 以為文章新增重新導向或自訂路徑。\"],\"O7rgs6\":[\"頁首 RSS 指向你的 \",[\"feed\"],\" 訂閱 (/feed)。在「一般」中變更 /feed 回傳的內容。\"],\"OSJXFg\":[\"套用於整個網站, 包括管理頁面. 選擇一個調色盤, 然後決定它是跟隨系統還是維持固定.\"],\"Ox3+3h\":[\"無相符結果。\"],\"PEUV5I\":[\"程式碼注入已更新。\"],\"PXj9lw\":[\"停止接受來自 Telegram 的貼文。您現有的筆記會保持已發佈。\"],\"PZ7HJ8\":[\"部落格大頭貼\"],\"Pwqkdw\":[\"載入中…\"],\"PxJ9W6\":[\"產生權杖\"],\"Q/6Y+2\":[\"需要在目標儲存庫上擁有 Contents(讀/寫)和 Webhooks(讀/寫)權限。\"],\"Q30z/l\":[\"要從導覽移除這個選集嗎?選集本身不會被刪除。\"],\"Q99OtV\":[\"將選集釘選到導覽列。最近 48 小時內更新的選集旁會顯示一個 * 號。\"],\"QZmz0H\":[\"內建連結\"],\"Qnrzvb\":[\"已啟用的權杖\"],\"R6Z4LE\":[\"下載失敗。請再試一次。\"],\"R9Khdg\":[\"自動\"],\"RcdDOS\":[\"在 Telegram 上向 @BotFather 發送訊息以建立機器人,然後貼上它提供給你的權杖\"],\"RxsRD6\":[\"時區\"],\"SJmfuf\":[\"網站名稱\"],\"SKZhW9\":[\"權杖名稱 (API 權杖名稱欄位。)\"],\"SVQQPe\":[\"無法連線。請檢查錯誤並再試一次。\"],\"SchpMp\":[\"Telegram\"],\"TpF3v+\":[\"在 </head> 之前注入。用於分析、自訂 meta 標籤,以及必須提前載入的樣式。\"],\"Tz0i8g\":[\"設定\"],\"UFK415\":[\"用於分析與小工具的網站全域 HTML\"],\"UTvFQq\":[\"開啟 \",[\"linkOpen\"],\"@\",[\"botUsername\"],[\"linkClose\"],\" 並傳送:\"],\"Uj/btJ\":[\"在我的網站頁首顯示大頭貼\"],\"UsODUn\":[\"選擇一個帳戶\"],\"UxKoFf\":[\"導覽\"],\"V+bhUy\":[\"安裝 GitHub App\"],\"V4WsyL\":[\"新增連結\"],\"V5pZwT\":[\"搜尋設定已更新。\"],\"VXUPla\":[\"使用 GitHub App 連線\"],\"VhMDMg\":[\"變更密碼\"],\"Vn3jYy\":[\"導覽項目\"],\"VoZYGU\":[\"這會永久刪除您所有的資料 — 文章、媒體、選集、設定,以及您的帳戶。您的部落格將被重設為初始設定狀態。此操作無法復原。\"],\"Weq9zb\":[\"一般\"],\"Wi9i06\":[\"依照每位訪客的系統偏好。\"],\"Wx1M8N\":[\"安裝 GitHub App,以授予存取權而無需管理個人權杖。權限以每個儲存庫為範圍,並可在 GitHub 上撤銷。\"],\"X+8FMk\":[\"目前的密碼不符。請再試一次。\"],\"X1G9eY\":[\"導覽預覽\"],\"X9Hujr\":[\"手動推送\"],\"XtBJV8\":[\"正在檢查儲存庫…\"],\"Xtc16w\":[\"重新整理儲存庫清單\"],\"Y/F35r\":[\"使用 curl 建立貼文:\"],\"YF6zHf\":[\"網站設定已更新.\"],\"YdG2RF\":[\"匯出網站\"],\"YkgZi7\":[\"連接一個 Telegram 機器人,之後你傳給它的任何訊息都會以筆記形式已發佈。\"],\"YwhjRx\":[\"管理帳戶\"],\"ZDY7Fy\":[\"同步中…\"],\"ZQKLI1\":[\"危險區域\"],\"ZS/CBL\":[\"刪除此導覽連結?訪客將不再在您的網站頁首看到它。\"],\"ZhhOwV\":[\"引用 (Jant 的貼文格式之一。)\"],\"ZiooJI\":[\"API 權杖\"],\"Zm7Qb0\":[\"備份與還原指南\"],\"ZmUkwN\":[\"新增自訂連結到導覽\"],\"a14mj8\":[\"未知裝置\"],\"a3LDKx\":[\"安全性\"],\"aAIQg2\":[\"外觀\"],\"aFkzVF\":[\"目標文章或選集的 slug\"],\"alKG0+\":[\"字型主題\"],\"anibOb\":[\"關於本部落格\"],\"any7NR\":[\"主題指南\"],\"b+/jO6\":[\"301 (永久)\"],\"bHOiy1\":[\"示範模式已停用變更密碼功能。請使用共用示範帳號登入。\"],\"bHYIks\":[\"登出\"],\"bmrL08\":[\"示範模式會隱藏會話、密碼更改與帳號刪除。匯出功能仍可使用。\"],\"c3MN2z\":[\"所有可用的端點與請求格式。\"],\"cS7/bk\":[\"移除已儲存的機器人權杖?其 webhook 會被刪除,任何已連接的帳號將會被斷線。\"],\"cSDy01\":[\"自訂 CSS 已更新.\"],\"clzoNp\":[\"始終顯示深色主題。\"],\"cnGeoo\":[\"刪除\"],\"d3FRkY\":[\"無法複製. 請再試一次.\"],\"d5oGUo\":[\"在 GitHub 建立新儲存庫\"],\"dEgA5A\":[\"取消\"],\"dTXUY+\":[\"確認刪除帳號\"],\"dYKrp3\":[\"從最新中隱藏 (不出現在 Latest 中,但仍可透過固定連結和集合存取的狀態。)\"],\"dk7TCH\":[\"永久刪除所有資料並重設部落格\"],\"drodVV\":[\"目前還沒有選集。請先建立一個,然後將它加入您的導覽。\"],\"dsWkIw\":[\"要與 GitHub 斷開連線嗎? webhook 將會被移除。您的儲存庫內容不會被刪除。\"],\"e/tSI5\":[\"導覽順序已更新。\"],\"ePK91l\":[\"編輯\"],\"ebQKK7\":[\"網站\"],\"egK+Yy\":[\"供腳本與自動化使用的 Bearer 權杖\"],\"ehj/zN\":[\"重新導向類型\"],\"eneWvv\":[\"草稿\"],\"erTMh7\":[\"上次同步\"],\"f+m8jj\":[\"已複製訂閱網址。\"],\"f8fH8W\":[\"設計\"],\"fWYqkz\":[\"程式碼注入\"],\"gOWiTY\":[\"載入為中文、日文或韓文內容最佳化的襯線字型。\"],\"gZ5owP\":[\"搜尋儲存庫\"],\"gbqbh6\":[\"可以放心離開此頁面 — 同步會在背景繼續進行。\"],\"gkFvVN\":[\"在 </body> 之前注入。用於聊天小工具和不應阻塞頁面載入的腳本。\"],\"gtQsRO\":[\"建立自訂網址\"],\"hBO/y4\":[\"安全權杖已過期。請重新整理頁面並再試一次。\"],\"hGmyDl\":[\"權杖讓您從腳本, 捷徑和其他工具存取 API 無需登入\"],\"hIHkRy\":[\"已透過 GitHub 應用程式連線\"],\"hdSi1b\":[\"輸入 \",[\"repo\"],\" 以確認\"],\"he3ygx\":[\"複製\"],\"i0qMbr\":[\"首頁\"],\"iEUzMn\":[\"系統\"],\"iSLIjg\":[\"連接\"],\"iVOMRi\":[\"首頁設定已更新。\"],\"icB4Cv\":[\"將連結拖到此處以顯示於「更多」選單下方\"],\"id3vuh\":[\"已設定 Telegram,但無法連線到機器人。請檢查機器人權杖並再試一次。\"],\"ihn4zD\":[\"搜尋…\"],\"iiDXZc\":[\"顯示於所有文章與頁面的底部。\"],\"j4VrG6\":[\"下載匯出 ZIP\"],\"j5nQL2\":[\"例如 iOS 捷徑\"],\"jUV7CU\":[\"上傳大頭貼\"],\"jVUmOK\":[\"支援 Markdown\"],\"jgBjXJ\":[\"要撤銷這個權杖嗎?任何使用它的腳本都會停止運作。\"],\"jpctdh\":[\"檢視\"],\"k1ifdL\":[\"處理中...\"],\"kMXclu\":[\"下載網站匯出檔案\"],\"kNiQp6\":[\"已釘選\"],\"kRhzWq\":[\"GitHub 同步\"],\"kVQs7s\":[\"細緻的樣式覆寫\"],\"ke1gWS\":[\"自訂 URL\"],\"kfcRb0\":[\"頭像\"],\"kxDZ2i\":[\"此程式碼會在您網站的每個頁面上執行。\"],\"l2Op2p\":[\"查詢參數\"],\"lLW3vJ\":[\"目標 slug\"],\"lYHJih\":[\"撤銷此工作階段?該裝置將需要重新登入。\"],\"mLOk1i\":[\"立即將所有文章推送到 GitHub,而不是等待下一次自動同步。\"],\"mSNmrX\":[\"列出貼文:\"],\"nK07ni\":[\"為您的網站選擇一種排版風格。每個主題會同時改變字體配對與閱讀節奏。\"],\"nbfdhU\":[\"第三方整合\"],\"ntJYyh\":[\"在 \",[\"providerLabel\"],\" 管理網域、方案和計費\"],\"o/vNDE\":[\"讓您覆寫任何主題變數。\"],\"oGC9uP\":[\"owner/repo\"],\"oH2JHg\":[\"我們會預先填入名稱 \",[\"name\"],\"。返回時清單會重新整理。\"],\"oKOOsY\":[\"色彩主題\"],\"oL535e\":[\"尚未同步\"],\"oNA4If\":[\"所有選集已經在您的導覽中。\"],\"pZq3aX\":[\"上傳失敗。請再試一次。\"],\"pgTIrt\":[\"選擇要與此網站同步的 GitHub 帳號和儲存庫.\"],\"psoxDF\":[\"該字型主題無法使用. 請選擇其他主題.\"],\"pvnfJD\":[\"深色\"],\"q+hNag\":[\"選集\"],\"qdcESc\":[\"建立新儲存庫\"],\"r5EW6f\":[\"此儲存庫已在備份另一個 Jant 網站 (\",[\"host\"],\"). 請選擇其他儲存庫.\"],\"rEspiY\":[\"導覽位置已更新。\"],\"rFmBG3\":[\"色彩主題\"],\"rlonmB\":[\"無法刪除。請稍後再試。\"],\"satWc6\":[\"主要 RSS 訂閱\"],\"sgr2wQ\":[\"選集\"],\"sqxcaY\":[\"建立於 \",[\"date\"]],\"sxkWRg\":[\"進階\"],\"t/YqKh\":[\"移除\"],\"t3hvHq\":[\"立即同步\"],\"tJ4H0O\":[\"您的 Telegram 帳號\"],\"tfDRzk\":[\"儲存\"],\"tvgAq5\":[\"尚未授權任何帳戶\"],\"u1VTd3\":[\"調色盤、表面色調與整體氛圍\"],\"u3wRF+\":[\"已發佈\"],\"u6KOjV\":[\"想要更細緻的控制?\"],\"udPwLB\":[\"頁首\"],\"ui6aMF\":[\"這些裝置目前已登入您的帳號。撤銷任何您不認識的工作階段。\"],\"vBEKwo\":[\"在此管理本網站的活動工作階段。密碼與託管存取由 \",[\"providerLabel\"],\" 管理。\"],\"vRldcl\":[\"字體選擇與閱讀質感\"],\"vSYKYI\":[\"主要訂閱來源\"],\"vTuib7\":[\"這會控制 /feed 回傳的內容。\"],\"vXIe7J\":[\"語言\"],\"vmQmHx\":[\"新增自訂 CSS 以覆寫任何樣式。使用像 [data-page]、[data-post]、[data-format] 這類資料屬性來選取特定元素。\"],\"vzX5FB\":[\"刪除帳號\"],\"w8Rv8T\":[\"標籤為必填\"],\"wL3cK8\":[\"最新\"],\"wPmHHc\":[\"低調的介面讓文字成為主角。\"],\"wW6NCp\":[\"上次錯誤\"],\"wc+17X\":[\"/* 在此放入您的自訂 CSS */\"],\"wuLtXn\":[\"目前沒有任何活動中的工作階段。已登入的裝置會顯示在此處。\"],\"xCWek4\":[\"檔案儲存尚未設定。請檢查您的伺服器設定。\"],\"xHt036\":[\"個人存取權杖\"],\"xbN8dp\":[\"柔和的色彩仍應保有清晰的閱讀節奏。\"],\"y28hnO\":[\"文章\"],\"y8Md/V\":[\"語言與時間已更新。\"],\"yNCqOt\":[\"最新 RSS 來源\"],\"yQ3kNF\":[\"請輸入以下短語以確認:\"],\"ydq1k2\":[\"請先選擇一個帳戶\"],\"yjjCV8\":[\"固定的 RSS 檔案網址\"],\"yjkELF\":[\"確認新密碼\"],\"yzF66j\":[\"連結 (Jant 的貼文格式之一。)\"],\"z6wakA\":[\"顯示在您的主頁上的簡短介紹。\"],\"zEizrk\":[\"最後使用於 \",[\"date\"]],\"zSURJW\":[\"沒有符合的儲存庫.\"],\"zXH2jX\":[\"語言與時區\"],\"zlcDd2\":[\"刪除此自訂 URL?使用該 URL 的訪客將不會再被重新導向。\"],\"zwBp5t\":[\"私有\"],\"zxRN6H\":[\"頁首連結、首頁動態與更多選單\"]}")as Messages;
|
|
@@ -399,7 +399,7 @@ describe("end-to-end: Markdown → markdownToTiptapJson → renderTiptapJson", (
|
|
|
399
399
|
const html = renderTiptapJson(json);
|
|
400
400
|
|
|
401
401
|
expect(html).toContain(
|
|
402
|
-
'<label for="sn-1" class="margin-toggle sidenote-number">',
|
|
402
|
+
'<label for="sn-1" class="margin-toggle sidenote-number footref">',
|
|
403
403
|
);
|
|
404
404
|
expect(html).toContain('<span class="sidenote">Footnote body</span>');
|
|
405
405
|
expect(html).not.toContain('<section class="footnotes"');
|
|
@@ -66,7 +66,7 @@ describe("render", () => {
|
|
|
66
66
|
const html = render("Body copy[^1]\n\n[^1]: Footnote body");
|
|
67
67
|
|
|
68
68
|
expect(html).toContain(
|
|
69
|
-
'<label for="sn-1" class="margin-toggle sidenote-number">',
|
|
69
|
+
'<label for="sn-1" class="margin-toggle sidenote-number footref">',
|
|
70
70
|
);
|
|
71
71
|
expect(html).toContain('<span class="sidenote">Footnote body</span>');
|
|
72
72
|
expect(html).not.toContain('<section class="footnotes"');
|
|
@@ -800,4 +800,91 @@ describe("extractSummaryHtml", () => {
|
|
|
800
800
|
// Link text should be inside a proper <a> tag, not a broken fragment
|
|
801
801
|
expect(result!.html).toContain(">Link text</a>");
|
|
802
802
|
});
|
|
803
|
+
|
|
804
|
+
function paragraphsDoc(...texts: string[]): string {
|
|
805
|
+
return JSON.stringify({
|
|
806
|
+
type: "doc",
|
|
807
|
+
content: texts.map((text) => ({
|
|
808
|
+
type: "paragraph",
|
|
809
|
+
content: [{ type: "text", text }],
|
|
810
|
+
})),
|
|
811
|
+
});
|
|
812
|
+
}
|
|
813
|
+
|
|
814
|
+
it("cancels char-limit truncation when the hidden tail is below minHiddenChars", () => {
|
|
815
|
+
const doc = paragraphsDoc("A".repeat(600), "B".repeat(150));
|
|
816
|
+
const result = extractSummaryHtml(doc, 10, 500, 200);
|
|
817
|
+
expect(result!.hasMore).toBe(false);
|
|
818
|
+
expect(result!.html).toContain("A".repeat(600));
|
|
819
|
+
expect(result!.html).toContain("B".repeat(150));
|
|
820
|
+
});
|
|
821
|
+
|
|
822
|
+
it("keeps truncation when the hidden tail meets minHiddenChars", () => {
|
|
823
|
+
const doc = paragraphsDoc("A".repeat(600), "B".repeat(600));
|
|
824
|
+
const result = extractSummaryHtml(doc, 10, 500, 200);
|
|
825
|
+
expect(result!.hasMore).toBe(true);
|
|
826
|
+
expect(result!.breakAtIndex).toBe(1);
|
|
827
|
+
expect(result!.html).toContain("A".repeat(600));
|
|
828
|
+
expect(result!.html).not.toContain("B".repeat(600));
|
|
829
|
+
});
|
|
830
|
+
|
|
831
|
+
it("treats minHiddenChars as a strict threshold", () => {
|
|
832
|
+
// Hidden tail of exactly 200 chars is not below 200, so it still truncates.
|
|
833
|
+
const doc = paragraphsDoc("A".repeat(600), "B".repeat(200));
|
|
834
|
+
const result = extractSummaryHtml(doc, 10, 500, 200);
|
|
835
|
+
expect(result!.hasMore).toBe(true);
|
|
836
|
+
});
|
|
837
|
+
|
|
838
|
+
it("applies tolerance to block-limit truncation too", () => {
|
|
839
|
+
const texts = Array.from({ length: 11 }, (_, i) => `p${i}`);
|
|
840
|
+
const doc = paragraphsDoc(...texts);
|
|
841
|
+
const result = extractSummaryHtml(doc, 10, 500, 200);
|
|
842
|
+
expect(result!.hasMore).toBe(false);
|
|
843
|
+
for (const text of texts) {
|
|
844
|
+
expect(result!.html).toContain(text);
|
|
845
|
+
}
|
|
846
|
+
});
|
|
847
|
+
|
|
848
|
+
it("never lets tolerance override an explicit moreBreak", () => {
|
|
849
|
+
const doc = JSON.stringify({
|
|
850
|
+
type: "doc",
|
|
851
|
+
content: [
|
|
852
|
+
{ type: "paragraph", content: [{ type: "text", text: "Before" }] },
|
|
853
|
+
{ type: "moreBreak" },
|
|
854
|
+
{ type: "paragraph", content: [{ type: "text", text: "After tail" }] },
|
|
855
|
+
],
|
|
856
|
+
});
|
|
857
|
+
const result = extractSummaryHtml(doc, 10, 500, 200);
|
|
858
|
+
expect(result!.hasMore).toBe(true);
|
|
859
|
+
expect(result!.html).toContain("Before");
|
|
860
|
+
expect(result!.html).not.toContain("After tail");
|
|
861
|
+
});
|
|
862
|
+
|
|
863
|
+
it("leaves limit truncation intact when minHiddenChars defaults to 0", () => {
|
|
864
|
+
const doc = paragraphsDoc("A".repeat(600), "B".repeat(150));
|
|
865
|
+
const result = extractSummaryHtml(doc, 10, 500);
|
|
866
|
+
expect(result!.hasMore).toBe(true);
|
|
867
|
+
expect(result!.html).not.toContain("B".repeat(150));
|
|
868
|
+
});
|
|
869
|
+
|
|
870
|
+
it("excludes trailing non-content nodes when tolerance includes the tail", () => {
|
|
871
|
+
const doc = JSON.stringify({
|
|
872
|
+
type: "doc",
|
|
873
|
+
content: [
|
|
874
|
+
{
|
|
875
|
+
type: "paragraph",
|
|
876
|
+
content: [{ type: "text", text: "A".repeat(600) }],
|
|
877
|
+
},
|
|
878
|
+
{
|
|
879
|
+
type: "paragraph",
|
|
880
|
+
content: [{ type: "text", text: "B".repeat(150) }],
|
|
881
|
+
},
|
|
882
|
+
{ type: "image", attrs: { src: "https://example.com/x.png" } },
|
|
883
|
+
],
|
|
884
|
+
});
|
|
885
|
+
const result = extractSummaryHtml(doc, 10, 500, 200);
|
|
886
|
+
expect(result!.hasMore).toBe(false);
|
|
887
|
+
expect(result!.html).toContain("B".repeat(150));
|
|
888
|
+
expect(result!.html).not.toContain("<img");
|
|
889
|
+
});
|
|
803
890
|
});
|
|
@@ -18,7 +18,7 @@ import { createPostService } from "../../services/post.js";
|
|
|
18
18
|
import { createMediaService } from "../../services/media.js";
|
|
19
19
|
import { createPathService } from "../../services/path.js";
|
|
20
20
|
import { createCollectionService } from "../../services/collection.js";
|
|
21
|
-
import { postCollections, posts as postTable } from "../../db/schema.js";
|
|
21
|
+
import { postCollections, posts as postTable, sites } from "../../db/schema.js";
|
|
22
22
|
import { buildMediaMap } from "../media-helpers.js";
|
|
23
23
|
import {
|
|
24
24
|
assembleCollectionTimeline,
|
|
@@ -377,6 +377,53 @@ describe("Timeline data assembly", () => {
|
|
|
377
377
|
expect(result.items[0]?.curatedThread).toBeUndefined();
|
|
378
378
|
});
|
|
379
379
|
|
|
380
|
+
it("scopes featured count and list to the current site", async () => {
|
|
381
|
+
// The current site has a single featured post.
|
|
382
|
+
const ownRoot = await postService.create({
|
|
383
|
+
format: "note",
|
|
384
|
+
bodyMarkdown: "Our featured post",
|
|
385
|
+
featured: true,
|
|
386
|
+
});
|
|
387
|
+
|
|
388
|
+
// Another tenant sharing the same database has its own featured posts.
|
|
389
|
+
const otherSiteId = "sit_test00000000000000000000001";
|
|
390
|
+
await db.insert(sites).values({
|
|
391
|
+
id: otherSiteId,
|
|
392
|
+
key: "other",
|
|
393
|
+
status: "active",
|
|
394
|
+
createdAt: 1,
|
|
395
|
+
updatedAt: 1,
|
|
396
|
+
});
|
|
397
|
+
const otherPathService = createPathService(db, otherSiteId);
|
|
398
|
+
const otherPostService = createPostService(
|
|
399
|
+
db,
|
|
400
|
+
{ slugIdLength: 5 },
|
|
401
|
+
otherSiteId,
|
|
402
|
+
otherPathService,
|
|
403
|
+
);
|
|
404
|
+
await otherPostService.create({
|
|
405
|
+
format: "note",
|
|
406
|
+
bodyMarkdown: "Other tenant featured A",
|
|
407
|
+
featured: true,
|
|
408
|
+
});
|
|
409
|
+
await otherPostService.create({
|
|
410
|
+
format: "note",
|
|
411
|
+
bodyMarkdown: "Other tenant featured B",
|
|
412
|
+
featured: true,
|
|
413
|
+
});
|
|
414
|
+
|
|
415
|
+
const result = await assembleFeaturedTimeline(createTimelineContext(), {
|
|
416
|
+
isAuthenticated: true,
|
|
417
|
+
});
|
|
418
|
+
|
|
419
|
+
// Count, pages, and items must reflect only the current site — the other
|
|
420
|
+
// tenant's featured posts must not inflate the total or appear in the feed.
|
|
421
|
+
expect(result.totalCount).toBe(1);
|
|
422
|
+
expect(result.totalPages).toBe(1);
|
|
423
|
+
expect(result.items).toHaveLength(1);
|
|
424
|
+
expect(result.items[0]?.post.id).toBe(ownRoot.id);
|
|
425
|
+
});
|
|
426
|
+
|
|
380
427
|
it("groups featured replies under their thread root with hidden gaps", async () => {
|
|
381
428
|
const root = await postService.create({
|
|
382
429
|
format: "note",
|
|
@@ -84,8 +84,8 @@ describe("renderTiptapDocument", () => {
|
|
|
84
84
|
);
|
|
85
85
|
|
|
86
86
|
expect(html).toBe(
|
|
87
|
-
'<p>Body copy<label for="sn-1" class="margin-toggle sidenote-number"></label>' +
|
|
88
|
-
'<input type="checkbox" id="sn-1" class="margin-toggle"/>' +
|
|
87
|
+
'<p>Body copy<label for="sn-1" class="margin-toggle sidenote-number footref"></label>' +
|
|
88
|
+
'<input type="checkbox" id="sn-1" class="margin-toggle footref-toggle"/>' +
|
|
89
89
|
'<span class="sidenote">Footnote body</span></p>',
|
|
90
90
|
);
|
|
91
91
|
});
|
|
@@ -101,8 +101,8 @@ describe("renderTiptapDocument", () => {
|
|
|
101
101
|
);
|
|
102
102
|
|
|
103
103
|
expect(html).toBe(
|
|
104
|
-
'<p>Body copy<label for="sn-1" class="margin-toggle sidenote-number"></label>' +
|
|
105
|
-
'<input type="checkbox" id="sn-1" class="margin-toggle"/>' +
|
|
104
|
+
'<p>Body copy<label for="sn-1" class="margin-toggle sidenote-number footref"></label>' +
|
|
105
|
+
'<input type="checkbox" id="sn-1" class="margin-toggle footref-toggle"/>' +
|
|
106
106
|
'<span class="sidenote"></span></p>',
|
|
107
107
|
);
|
|
108
108
|
});
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
normalizePath,
|
|
8
8
|
stripSitePathPrefix,
|
|
9
9
|
slugify,
|
|
10
|
+
toSameSitePath,
|
|
10
11
|
} from "../url.js";
|
|
11
12
|
|
|
12
13
|
describe("extractDomain", () => {
|
|
@@ -143,6 +144,49 @@ describe("isFullUrl", () => {
|
|
|
143
144
|
});
|
|
144
145
|
});
|
|
145
146
|
|
|
147
|
+
describe("toSameSitePath", () => {
|
|
148
|
+
it("returns the path for a same-host absolute URL", () => {
|
|
149
|
+
expect(
|
|
150
|
+
toSameSitePath("https://example.com/about", "https://example.com"),
|
|
151
|
+
).toBe("/about");
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
it("preserves query and hash", () => {
|
|
155
|
+
expect(
|
|
156
|
+
toSameSitePath(
|
|
157
|
+
"https://example.com/about?x=1#top",
|
|
158
|
+
"https://example.com",
|
|
159
|
+
),
|
|
160
|
+
).toBe("/about?x=1#top");
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
it("ignores scheme and port differences (same host)", () => {
|
|
164
|
+
expect(
|
|
165
|
+
toSameSitePath("https://example.com/about", "http://example.com:8787"),
|
|
166
|
+
).toBe("/about");
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
it("returns / for the bare same-host origin", () => {
|
|
170
|
+
expect(toSameSitePath("https://example.com", "https://example.com")).toBe(
|
|
171
|
+
"/",
|
|
172
|
+
);
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
it("returns null for a different host", () => {
|
|
176
|
+
expect(
|
|
177
|
+
toSameSitePath("https://other.com/about", "https://example.com"),
|
|
178
|
+
).toBeNull();
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
it("returns null for relative paths", () => {
|
|
182
|
+
expect(toSameSitePath("/about", "https://example.com")).toBeNull();
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
it("returns null when no site origin is configured", () => {
|
|
186
|
+
expect(toSameSitePath("https://example.com/about", "")).toBeNull();
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
|
|
146
190
|
describe("isSafeAbsoluteUrl", () => {
|
|
147
191
|
it("accepts http and https URLs", () => {
|
|
148
192
|
expect(isSafeAbsoluteUrl("https://example.com")).toBe(true);
|