@jant/core 0.6.16 → 0.7.1

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 (592) hide show
  1. package/README.md +11 -11
  2. package/bin/commands/assets/upload.js +192 -15
  3. package/bin/commands/export.js +3 -1
  4. package/bin/commands/import-site.js +749 -220
  5. package/bin/commands/reset-password.js +21 -8
  6. package/bin/commands/setup.js +136 -0
  7. package/bin/commands/site/export.js +71 -34
  8. package/bin/commands/site/pull-media.js +2 -6
  9. package/bin/commands/site/snapshot/export.js +19 -61
  10. package/bin/commands/site/snapshot/import.js +23 -24
  11. package/bin/lib/d1-query.js +92 -18
  12. package/bin/lib/hugo-markdown.js +4 -0
  13. package/bin/lib/node-env.js +40 -4
  14. package/bin/lib/site-pull-media.js +21 -28
  15. package/bin/lib/site-selection.js +94 -29
  16. package/bin/lib/site-snapshot.js +338 -3
  17. package/bin/lib/sql-export.js +68 -5
  18. package/bin/lib/wrangler-cli.js +37 -2
  19. package/bin/lib/wrangler-json.js +35 -0
  20. package/bin/lib/zip-archive.js +187 -0
  21. package/dist/{app-C7_4oab9.js → app-ZcaI1kPN.js} +53190 -13529
  22. package/dist/client/.vite/manifest.json +255 -90
  23. package/dist/client/_assets/chunks/confirm-D7GrwsCN.js +45 -0
  24. package/dist/client/_assets/chunks/create-editor-B-m7X7S5.js +261 -0
  25. package/dist/client/_assets/chunks/{native-DpcrFAPh.js → emoji-mart-C4RpRKcU.js} +716 -1
  26. package/dist/client/_assets/chunks/footnote-rail-CmeoVtnU.js +1 -0
  27. package/dist/client/_assets/chunks/heic-to-CuP2Qlsw.js +1 -0
  28. package/dist/client/_assets/chunks/jant-locale-picker-DL6mIOT5.js +69 -0
  29. package/dist/client/_assets/chunks/lit-DW8VmJAT.js +2 -0
  30. package/dist/client/_assets/chunks/mediabunny-DRaCQ1r-.js +31 -0
  31. package/dist/client/_assets/chunks/rolldown-runtime-hePW80VL.js +1 -0
  32. package/dist/client/_assets/chunks/settings-paths-BcdySNx6.js +84 -0
  33. package/dist/client/_assets/chunks/site-header-nav-DzXsFk05.js +1 -0
  34. package/dist/client/_assets/chunks/slug-format-CRXO1AL5.js +1 -0
  35. package/dist/client/_assets/chunks/slugify-373citbs.js +1 -0
  36. package/dist/client/_assets/chunks/sortable-list-BJyd-LXE.js +2 -0
  37. package/dist/client/_assets/chunks/types-D5iF3H1a.js +1 -0
  38. package/dist/client/_assets/chunks/unsafe-html-B5ZEXaxg.js +1 -0
  39. package/dist/client/_assets/chunks/unsafe-svg-BkscJx69.js +2 -0
  40. package/dist/client/_assets/client-DAhoqPdr.css +2 -0
  41. package/dist/client/_assets/client-auth-CAMfTrKW.js +828 -0
  42. package/dist/client/_assets/client-author-DQ8R-8KR.css +2 -0
  43. package/dist/client/_assets/client-compose-D6rExKVK.js +2004 -0
  44. package/dist/client/_assets/client-knSEyUJO.js +295 -0
  45. package/dist/client/_assets/client-manage-sVOkqVbH.js +2170 -0
  46. package/dist/client/_assets/client-settings-CGR_nZ78.js +1112 -0
  47. package/dist/github-sync-Gw4orAHk.js +8398 -0
  48. package/dist/index.js +2 -5
  49. package/dist/node.js +11 -9
  50. package/package.json +15 -5
  51. package/src/__tests__/auth-session-freshness.test.ts +57 -0
  52. package/src/__tests__/basecoat-variants.test.ts +121 -0
  53. package/src/__tests__/bin/assets-upload.test.ts +68 -0
  54. package/src/__tests__/dev-scripts.test.ts +203 -0
  55. package/src/__tests__/export-collection-order.test.ts +276 -0
  56. package/src/__tests__/export-feed-ids.test.ts +184 -0
  57. package/src/__tests__/export-feed-order.test.ts +294 -0
  58. package/src/__tests__/export-hugo-build.test.ts +390 -0
  59. package/src/__tests__/export-import-roundtrip.test.ts +94 -0
  60. package/src/__tests__/export-service.test.ts +842 -28
  61. package/src/__tests__/export-smart-collection.test.ts +329 -0
  62. package/src/__tests__/helpers/component-css.ts +91 -0
  63. package/src/__tests__/helpers/db.ts +33 -0
  64. package/src/__tests__/helpers/export-fixtures.ts +3 -0
  65. package/src/__tests__/helpers/hugo-site.ts +146 -0
  66. package/src/__tests__/import-site-command.test.ts +487 -1
  67. package/src/__tests__/mise-config.test.ts +75 -4
  68. package/src/__tests__/node-dev-tasks.test.ts +264 -0
  69. package/src/__tests__/site-export-canonical-import.test.ts +149 -0
  70. package/src/__tests__/snapshot-canonical-replay.test.ts +179 -0
  71. package/src/__tests__/snapshot-settings.test.ts +97 -0
  72. package/src/__tests__/snapshot-tables.test.ts +219 -0
  73. package/src/__tests__/sql-export.test.ts +173 -0
  74. package/src/__tests__/stylesheet-audience.test.ts +159 -0
  75. package/src/__tests__/stylesheet-breakpoints.test.ts +183 -0
  76. package/src/__tests__/zip-archive.test.ts +106 -0
  77. package/src/app.tsx +86 -22
  78. package/src/auth.ts +18 -1
  79. package/src/client/__tests__/collection-page-actions.test.ts +51 -2
  80. package/src/client/__tests__/compose-bridge-image-upload.test.ts +196 -0
  81. package/src/client/__tests__/compose-bridge-video-poster.test.ts +159 -0
  82. package/src/client/__tests__/compose-bridge.test.ts +272 -0
  83. package/src/client/__tests__/compose-launch.test.ts +62 -1
  84. package/src/client/__tests__/compose-shortcuts.test.ts +38 -9
  85. package/src/client/__tests__/compose-triggers.test.ts +90 -0
  86. package/src/client/__tests__/copy-field.test.ts +162 -0
  87. package/src/client/__tests__/custom-url-menu.test.ts +127 -6
  88. package/src/client/__tests__/image-processor.test.ts +324 -2
  89. package/src/client/__tests__/lazy-entries.test.ts +92 -0
  90. package/src/client/__tests__/media-scroll-hint.test.ts +155 -0
  91. package/src/client/__tests__/runtime-paths.test.ts +84 -0
  92. package/src/client/__tests__/smart-collection-page-actions.test.ts +158 -0
  93. package/src/client/__tests__/toast.test.ts +23 -0
  94. package/src/client/__tests__/video-processor-probe.test.ts +175 -0
  95. package/src/client/__tests__/video-processor.test.ts +181 -0
  96. package/src/client/audio-processor.ts +24 -15
  97. package/src/client/audio-waveform.ts +49 -0
  98. package/src/client/collection-dialog-host.ts +72 -0
  99. package/src/client/collection-navigation.ts +51 -16
  100. package/src/client/collection-page-actions.ts +26 -0
  101. package/src/client/components/__tests__/jant-collection-dialog.test.ts +329 -0
  102. package/src/client/components/__tests__/jant-collection-directory.test.ts +274 -10
  103. package/src/client/components/__tests__/jant-collection-form.test.ts +59 -178
  104. package/src/client/components/__tests__/jant-command-palette.test.ts +28 -0
  105. package/src/client/components/__tests__/jant-compose-dialog-draft-storage.test.ts +340 -0
  106. package/src/client/components/__tests__/jant-compose-dialog.test.ts +1250 -53
  107. package/src/client/components/__tests__/jant-compose-editor.test.ts +544 -40
  108. package/src/client/components/__tests__/jant-compose-fullscreen.test.ts +0 -1
  109. package/src/client/components/__tests__/jant-locale-picker.test.ts +207 -0
  110. package/src/client/components/__tests__/jant-nav-manager.test.ts +234 -15
  111. package/src/client/components/__tests__/jant-post-menu.test.ts +413 -2
  112. package/src/client/components/__tests__/jant-post-picker.test.ts +197 -0
  113. package/src/client/components/__tests__/jant-settings-avatar.test.ts +15 -12
  114. package/src/client/components/__tests__/jant-settings-general.test.ts +561 -172
  115. package/src/client/components/__tests__/jant-settings-language.test.ts +851 -0
  116. package/src/client/components/__tests__/jant-smart-collection-dialog.test.ts +665 -0
  117. package/src/client/components/collection-dialog-types.ts +49 -0
  118. package/src/client/components/collection-manager-types.ts +32 -1
  119. package/src/client/components/collection-types.ts +1 -15
  120. package/src/client/components/compose-types.ts +75 -1
  121. package/src/client/components/jant-collection-dialog.ts +722 -0
  122. package/src/client/components/jant-collection-directory.ts +567 -182
  123. package/src/client/components/jant-collection-form.ts +53 -232
  124. package/src/client/components/jant-command-palette.ts +100 -49
  125. package/src/client/components/jant-compose-dialog.ts +1486 -707
  126. package/src/client/components/jant-compose-editor.ts +673 -336
  127. package/src/client/components/jant-compose-fullscreen.ts +51 -43
  128. package/src/client/components/jant-config-editor.ts +65 -53
  129. package/src/client/components/jant-confirm-dialog.ts +13 -11
  130. package/src/client/components/jant-locale-picker.ts +418 -0
  131. package/src/client/components/jant-media-lightbox.ts +146 -136
  132. package/src/client/components/jant-nav-manager.ts +690 -366
  133. package/src/client/components/jant-post-menu.ts +1086 -282
  134. package/src/client/components/jant-post-picker.ts +324 -0
  135. package/src/client/components/jant-repo-picker-types.ts +6 -1
  136. package/src/client/components/jant-repo-picker.ts +137 -108
  137. package/src/client/components/jant-settings-avatar.ts +31 -27
  138. package/src/client/components/jant-settings-general.ts +622 -543
  139. package/src/client/components/jant-settings-language.ts +1087 -0
  140. package/src/client/components/jant-smart-collection-dialog.ts +1021 -0
  141. package/src/client/components/jant-text-preview.ts +94 -86
  142. package/src/client/components/nav-manager-types.ts +62 -1
  143. package/src/client/components/settings-types.ts +14 -29
  144. package/src/client/components/smart-collection-conditions.ts +285 -0
  145. package/src/client/components/smart-collection-dialog-types.ts +68 -0
  146. package/src/client/compose-bridge.ts +214 -141
  147. package/src/client/compose-launch.ts +76 -2
  148. package/src/client/compose-shortcuts.ts +6 -8
  149. package/src/client/compose-triggers.ts +50 -0
  150. package/src/client/copy-field.ts +108 -0
  151. package/src/client/custom-url-menu.ts +60 -4
  152. package/src/client/icons.ts +14 -0
  153. package/src/client/image-plan.ts +165 -0
  154. package/src/client/image-processor.ts +195 -117
  155. package/src/client/image-worker-client.ts +45 -0
  156. package/src/client/image-worker.ts +135 -0
  157. package/src/client/lazy-entries.ts +95 -0
  158. package/src/client/lazy-slugify.ts +2 -2
  159. package/src/client/media-scroll-hint.ts +43 -2
  160. package/src/client/mediabunny.ts +29 -0
  161. package/src/client/post-picker.ts +41 -0
  162. package/src/client/runtime-paths.ts +74 -1
  163. package/src/client/settings-bridge.ts +4 -10
  164. package/src/client/site-header-nav.js +18 -6
  165. package/src/client/smart-collection-dialog-host.ts +116 -0
  166. package/src/client/smart-collection-page-actions.ts +208 -0
  167. package/src/client/tiptap/__tests__/bubble-menu.test.ts +110 -0
  168. package/src/client/tiptap/__tests__/floating-position.test.ts +136 -1
  169. package/src/client/tiptap/__tests__/inline-image-upload.test.ts +37 -0
  170. package/src/client/tiptap/__tests__/list-editing.test.ts +224 -86
  171. package/src/client/tiptap/__tests__/mark-exit.test.ts +1 -2
  172. package/src/client/tiptap/__tests__/markdown-clipboard.test.ts +26 -0
  173. package/src/client/tiptap/bubble-menu.ts +47 -16
  174. package/src/client/tiptap/extensions.ts +0 -3
  175. package/src/client/tiptap/floating-position.ts +216 -2
  176. package/src/client/tiptap/inline-image-upload.ts +7 -3
  177. package/src/client/tiptap/link-toolbar.ts +22 -9
  178. package/src/client/tiptap/structural-keymap.ts +158 -47
  179. package/src/client/toast.ts +13 -0
  180. package/src/client/types/vite-worker.d.ts +12 -0
  181. package/src/client/upload-with-metadata.ts +3 -13
  182. package/src/client/video-processor.ts +351 -107
  183. package/src/client-auth.ts +14 -31
  184. package/src/client-compose.ts +19 -0
  185. package/src/client-manage.ts +13 -0
  186. package/src/client-settings.ts +14 -0
  187. package/src/client-site.ts +10 -3
  188. package/src/client.ts +4 -0
  189. package/src/db/__tests__/backfill-nav-label-mirrors.test.ts +149 -0
  190. package/src/db/__tests__/d1-query.test.ts +56 -1
  191. package/src/db/__tests__/schema-enum-sources.test.ts +33 -0
  192. package/src/db/__tests__/smart-collection-placement.test.ts +402 -0
  193. package/src/db/backfills/0006_clear_mirrored_page_nav_labels.sql +31 -0
  194. package/src/db/migrations/0032_married_tomas.sql +3 -0
  195. package/src/db/migrations/0033_busy_johnny_storm.sql +198 -0
  196. package/src/db/migrations/0034_cheerful_rumiko_fujikawa.sql +35 -0
  197. package/src/db/migrations/meta/0032_snapshot.json +2582 -0
  198. package/src/db/migrations/meta/0033_snapshot.json +2816 -0
  199. package/src/db/migrations/meta/0034_snapshot.json +2816 -0
  200. package/src/db/migrations/meta/_journal.json +21 -0
  201. package/src/db/migrations/pg/0030_abandoned_nighthawk.sql +3 -0
  202. package/src/db/migrations/pg/0031_strong_ultimatum.sql +128 -0
  203. package/src/db/migrations/pg/0032_furry_multiple_man.sql +6 -0
  204. package/src/db/migrations/pg/meta/0030_snapshot.json +3329 -0
  205. package/src/db/migrations/pg/meta/0031_snapshot.json +3660 -0
  206. package/src/db/migrations/pg/meta/0032_snapshot.json +3660 -0
  207. package/src/db/migrations/pg/meta/_journal.json +21 -0
  208. package/src/db/pg/schema.ts +195 -27
  209. package/src/db/post-visibility.ts +117 -0
  210. package/src/db/schema.ts +222 -27
  211. package/src/i18n/__tests__/detect.test.ts +26 -81
  212. package/src/i18n/__tests__/supported-locales.test.ts +83 -0
  213. package/src/i18n/context.tsx +12 -2
  214. package/src/i18n/detect.ts +7 -66
  215. package/src/i18n/locales/glossary.zh-Hans.yml +44 -4
  216. package/src/i18n/locales/glossary.zh-Hant.yml +44 -4
  217. package/src/i18n/locales/public/en.po +490 -158
  218. package/src/i18n/locales/public/en.ts +1 -1
  219. package/src/i18n/locales/public/zh-Hans.po +487 -155
  220. package/src/i18n/locales/public/zh-Hans.ts +1 -1
  221. package/src/i18n/locales/public/zh-Hant.po +487 -155
  222. package/src/i18n/locales/public/zh-Hant.ts +1 -1
  223. package/src/i18n/locales/settings/en.po +555 -73
  224. package/src/i18n/locales/settings/en.ts +1 -1
  225. package/src/i18n/locales/settings/zh-Hans.po +601 -119
  226. package/src/i18n/locales/settings/zh-Hans.ts +1 -1
  227. package/src/i18n/locales/settings/zh-Hant.po +614 -132
  228. package/src/i18n/locales/settings/zh-Hant.ts +1 -1
  229. package/src/i18n/locales.ts +94 -0
  230. package/src/i18n/middleware.ts +12 -2
  231. package/src/i18n/supported-locales.ts +80 -0
  232. package/src/lib/__tests__/api-settings.test.ts +11 -2
  233. package/src/lib/__tests__/asset-path.test.ts +92 -0
  234. package/src/lib/__tests__/deferred.test.ts +90 -0
  235. package/src/lib/__tests__/discover-ping.test.ts +89 -0
  236. package/src/lib/__tests__/discover.test.ts +410 -0
  237. package/src/lib/__tests__/feed-policy.test.ts +26 -0
  238. package/src/lib/__tests__/feed.test.ts +1526 -15
  239. package/src/lib/__tests__/filter-dimensions.test.ts +341 -0
  240. package/src/lib/__tests__/github-sync-repo-name.test.ts +40 -0
  241. package/src/lib/__tests__/hosted-signin.test.ts +1 -1
  242. package/src/lib/__tests__/http-cache.test.ts +162 -0
  243. package/src/lib/__tests__/image.test.ts +27 -1
  244. package/src/lib/__tests__/jant-docs-dev.test.ts +21 -0
  245. package/src/lib/__tests__/jant-docs.test.ts +23 -0
  246. package/src/lib/__tests__/lang-detect.test.ts +231 -0
  247. package/src/lib/__tests__/markdown-to-tiptap.test.ts +105 -0
  248. package/src/lib/__tests__/markdown.test.ts +10 -0
  249. package/src/lib/__tests__/media-helpers.test.ts +81 -0
  250. package/src/lib/__tests__/navigation.test.ts +135 -1
  251. package/src/lib/__tests__/resolve-config.test.ts +131 -3
  252. package/src/lib/__tests__/schemas.test.ts +69 -5
  253. package/src/lib/__tests__/site-unavailable-page.test.ts +25 -0
  254. package/src/lib/__tests__/slug.test.ts +70 -0
  255. package/src/lib/__tests__/slugify.test.ts +85 -0
  256. package/src/lib/__tests__/storage.test.ts +32 -0
  257. package/src/lib/__tests__/thread-fold.test.ts +113 -0
  258. package/src/lib/__tests__/timeline.test.ts +87 -0
  259. package/src/lib/__tests__/tiptap-to-markdown.test.ts +172 -4
  260. package/src/lib/__tests__/upload-sideload.test.ts +14 -0
  261. package/src/lib/__tests__/url-fetch.test.ts +1 -2
  262. package/src/lib/__tests__/url.test.ts +78 -72
  263. package/src/lib/__tests__/view-language.test.ts +413 -0
  264. package/src/lib/__tests__/worker-response-cache.test.ts +90 -0
  265. package/src/lib/address.ts +57 -0
  266. package/src/lib/api-posts.ts +12 -0
  267. package/src/lib/asset-path.ts +98 -1
  268. package/src/lib/build-env.ts +16 -0
  269. package/src/lib/collection-groups.ts +5 -1
  270. package/src/lib/collection-paths.ts +3 -10
  271. package/src/lib/constants.ts +28 -3
  272. package/src/lib/copy-field.ts +36 -0
  273. package/src/lib/crypto.ts +40 -0
  274. package/src/lib/csp-builder.ts +2 -1
  275. package/src/lib/deferred.ts +79 -0
  276. package/src/lib/discover-ping.ts +141 -0
  277. package/src/lib/discover.ts +439 -0
  278. package/src/lib/env.ts +134 -0
  279. package/src/lib/errors.ts +33 -0
  280. package/src/lib/feed-policy.ts +236 -2
  281. package/src/lib/feed.ts +926 -73
  282. package/src/lib/filter-dimensions.ts +1349 -0
  283. package/src/lib/github-sync-repo-name.ts +45 -0
  284. package/src/lib/github-sync-site-config.ts +3 -0
  285. package/src/lib/hosted-signin.ts +1 -1
  286. package/src/lib/http-cache.ts +148 -0
  287. package/src/lib/hugo-markdown.ts +62 -0
  288. package/src/lib/icons.ts +9 -2
  289. package/src/lib/ids.ts +3 -0
  290. package/src/lib/image.ts +17 -4
  291. package/src/lib/jant-docs.ts +42 -0
  292. package/src/lib/lang-detect.ts +308 -0
  293. package/src/lib/markdown-manager.ts +392 -2
  294. package/src/lib/media-helpers.ts +13 -1
  295. package/src/lib/navigation.ts +78 -11
  296. package/src/lib/pagination.ts +28 -24
  297. package/src/lib/per-language-surfaces.ts +67 -0
  298. package/src/lib/post-body-html.ts +11 -4
  299. package/src/lib/post-meta.ts +19 -0
  300. package/src/lib/render.tsx +55 -7
  301. package/src/lib/resolve-config.ts +111 -6
  302. package/src/lib/schemas.ts +251 -15
  303. package/src/lib/site-header-fragment.tsx +2 -1
  304. package/src/lib/site-unavailable-page.ts +47 -0
  305. package/src/lib/slug.ts +51 -7
  306. package/src/lib/slugify.ts +113 -0
  307. package/src/lib/startup-config.ts +4 -6
  308. package/src/lib/storage.ts +7 -0
  309. package/src/lib/summary.ts +50 -0
  310. package/src/lib/thread-fold.ts +161 -0
  311. package/src/lib/time.ts +32 -0
  312. package/src/lib/timeline.ts +43 -2
  313. package/src/lib/tiptap-render.ts +1 -2
  314. package/src/lib/tiptap-to-markdown.ts +13 -7
  315. package/src/lib/upload.ts +16 -13
  316. package/src/lib/url.ts +159 -86
  317. package/src/lib/version.ts +10 -8
  318. package/src/lib/view-language.ts +436 -0
  319. package/src/lib/view.ts +53 -25
  320. package/src/lib/viewer-context.ts +62 -0
  321. package/src/middleware/__tests__/auth.test.ts +70 -2
  322. package/src/middleware/__tests__/cache-control.test.ts +71 -3
  323. package/src/middleware/__tests__/onboarding.test.ts +76 -5
  324. package/src/middleware/__tests__/secure-headers.test.ts +1 -1
  325. package/src/middleware/__tests__/session.test.ts +181 -33
  326. package/src/middleware/auth.ts +50 -31
  327. package/src/middleware/cache-control.ts +75 -10
  328. package/src/middleware/config.ts +6 -6
  329. package/src/middleware/error-handler.ts +12 -0
  330. package/src/middleware/onboarding.ts +32 -10
  331. package/src/middleware/secure-headers.ts +1 -1
  332. package/src/middleware/session.ts +96 -8
  333. package/src/node/__tests__/cli-migrate.test.ts +21 -19
  334. package/src/node/__tests__/cli-reset-password.test.ts +81 -8
  335. package/src/node/__tests__/cli-runtime-target.test.ts +48 -1
  336. package/src/node/__tests__/cli-setup.test.ts +163 -0
  337. package/src/node/__tests__/cli-site-selection.test.ts +128 -38
  338. package/src/node/__tests__/cli-site-snapshot.test.ts +67 -0
  339. package/src/node/__tests__/cli-snapshot-meta.test.ts +20 -0
  340. package/src/node/__tests__/runtime.test.ts +75 -0
  341. package/src/node/index.ts +3 -0
  342. package/src/node/request-handler.ts +3 -1
  343. package/src/preset.css +76 -22
  344. package/src/routes/__tests__/feed-validator.test.ts +156 -0
  345. package/src/routes/api/__tests__/collections.test.ts +114 -0
  346. package/src/routes/api/__tests__/discover.test.ts +222 -0
  347. package/src/routes/api/__tests__/nav-items.test.ts +212 -2
  348. package/src/routes/api/__tests__/post-translations.test.ts +829 -0
  349. package/src/routes/api/__tests__/posts.test.ts +24 -0
  350. package/src/routes/api/__tests__/settings.test.ts +24 -3
  351. package/src/routes/api/__tests__/telegram.test.ts +6 -5
  352. package/src/routes/api/__tests__/upload.test.ts +34 -0
  353. package/src/routes/api/collections.ts +49 -6
  354. package/src/routes/api/custom-urls.ts +0 -1
  355. package/src/routes/api/discover.ts +95 -0
  356. package/src/routes/api/export.ts +6 -3
  357. package/src/routes/api/internal/__tests__/sites.test.ts +42 -2
  358. package/src/routes/api/internal/sites.ts +0 -1
  359. package/src/routes/api/nav-items.ts +55 -8
  360. package/src/routes/api/posts.ts +161 -0
  361. package/src/routes/api/public/__tests__/archive.test.ts +111 -0
  362. package/src/routes/api/public/archive.ts +77 -81
  363. package/src/routes/api/public/posts.ts +44 -7
  364. package/src/routes/api/smart-collections.ts +132 -0
  365. package/src/routes/api/telegram.ts +2 -40
  366. package/src/routes/api/upload.ts +10 -3
  367. package/src/routes/api/uploads.ts +1 -2
  368. package/src/routes/auth/__tests__/setup-auth.test.ts +137 -0
  369. package/src/routes/auth/__tests__/setup-discover.test.ts +204 -0
  370. package/src/routes/auth/__tests__/setup-flow.test.ts +270 -0
  371. package/src/routes/auth/__tests__/setup-page.test.tsx +329 -0
  372. package/src/routes/auth/__tests__/setup-steps.test.ts +310 -0
  373. package/src/routes/auth/__tests__/setup.test.ts +278 -26
  374. package/src/routes/auth/__tests__/signin.test.ts +135 -0
  375. package/src/routes/auth/setup.tsx +934 -186
  376. package/src/routes/auth/signin.tsx +10 -8
  377. package/src/routes/compose.tsx +9 -0
  378. package/src/routes/dash/__tests__/custom-urls-archive.test.ts +44 -0
  379. package/src/routes/dash/__tests__/custom-urls-page.test.ts +49 -0
  380. package/src/routes/dash/__tests__/delete-account.test.ts +106 -0
  381. package/src/routes/dash/__tests__/github-sync-app.test.ts +365 -0
  382. package/src/routes/dash/__tests__/settings-discover.test.ts +213 -0
  383. package/src/routes/dash/custom-urls.tsx +1 -37
  384. package/src/routes/dash/settings.tsx +714 -111
  385. package/src/routes/discover-announce.ts +96 -0
  386. package/src/routes/feed/__tests__/feed.test.ts +165 -2
  387. package/src/routes/feed/feed.ts +69 -40
  388. package/src/routes/feed/sitemap.ts +95 -11
  389. package/src/routes/pages/__tests__/archive-indexing.test.ts +200 -0
  390. package/src/routes/pages/__tests__/archive-params.test.ts +370 -6
  391. package/src/routes/pages/__tests__/collection-routing.test.ts +16 -0
  392. package/src/routes/pages/__tests__/collections-feed-links.test.ts +72 -0
  393. package/src/routes/pages/__tests__/collections.test.ts +9 -3
  394. package/src/routes/pages/__tests__/custom-archive-url.test.ts +119 -0
  395. package/src/routes/pages/__tests__/feed-autodiscovery.test.ts +148 -0
  396. package/src/routes/pages/__tests__/language-routing.test.ts +679 -0
  397. package/src/routes/pages/__tests__/post-page-round-trips.test.ts +211 -0
  398. package/src/routes/pages/__tests__/post-preview-partial.test.ts +96 -0
  399. package/src/routes/pages/__tests__/smart-collection.test.ts +298 -0
  400. package/src/routes/pages/__tests__/subscribe.test.ts +248 -0
  401. package/src/routes/pages/__tests__/thread-order.test.ts +179 -0
  402. package/src/routes/pages/archive.tsx +487 -379
  403. package/src/routes/pages/collection.tsx +94 -96
  404. package/src/routes/pages/collections.tsx +38 -50
  405. package/src/routes/pages/featured.tsx +43 -18
  406. package/src/routes/pages/home.tsx +25 -6
  407. package/src/routes/pages/language.tsx +113 -0
  408. package/src/routes/pages/latest.tsx +26 -16
  409. package/src/routes/pages/new.tsx +3 -0
  410. package/src/routes/pages/page.tsx +228 -45
  411. package/src/routes/pages/partials.tsx +41 -0
  412. package/src/routes/pages/search.tsx +22 -5
  413. package/src/routes/pages/smart-collection.tsx +340 -0
  414. package/src/routes/pages/subscribe.tsx +182 -0
  415. package/src/runtime/__tests__/index.test.ts +19 -0
  416. package/src/runtime/__tests__/node.test.ts +129 -4
  417. package/src/runtime/__tests__/readiness.test.ts +23 -0
  418. package/src/runtime/cloudflare.ts +21 -2
  419. package/src/runtime/index.ts +27 -1
  420. package/src/runtime/node.ts +67 -1
  421. package/src/runtime/readiness.ts +15 -0
  422. package/src/runtime/site.ts +95 -24
  423. package/src/services/__tests__/auth.test.ts +116 -7
  424. package/src/services/__tests__/bootstrap-setup-instance.test.ts +230 -0
  425. package/src/services/__tests__/collection.test.ts +108 -4
  426. package/src/services/__tests__/custom-url.test.ts +34 -0
  427. package/src/services/__tests__/github-app-installations.test.ts +153 -0
  428. package/src/services/__tests__/github-sync-push.test.ts +46 -0
  429. package/src/services/__tests__/language.test.ts +495 -0
  430. package/src/services/__tests__/media.test.ts +31 -0
  431. package/src/services/__tests__/navigation.test.ts +213 -10
  432. package/src/services/__tests__/path.test.ts +236 -0
  433. package/src/services/__tests__/post-language.test.ts +830 -0
  434. package/src/services/__tests__/post-timeline.test.ts +127 -0
  435. package/src/services/__tests__/post.test.ts +120 -9
  436. package/src/services/__tests__/settings.test.ts +228 -17
  437. package/src/services/__tests__/site-admin.test.ts +5 -5
  438. package/src/services/__tests__/smart-collection.test.ts +651 -0
  439. package/src/services/about-page.ts +22 -1
  440. package/src/services/auth.ts +51 -49
  441. package/src/services/bootstrap.ts +408 -39
  442. package/src/services/collection-directory-position.ts +76 -0
  443. package/src/services/collection.ts +331 -46
  444. package/src/services/custom-url.ts +29 -24
  445. package/src/services/export-theme/assets/client-site.css +1 -1
  446. package/src/services/export-theme/assets/client-site.js +123 -123
  447. package/src/services/export-theme/layouts/_default/alias.html +27 -1
  448. package/src/services/export-theme/layouts/_default/list.html +2 -63
  449. package/src/services/export-theme/layouts/_default/rss.xml +103 -38
  450. package/src/services/export-theme/layouts/collections/list.html +3 -3
  451. package/src/services/export-theme/layouts/featured/list.html +1 -4
  452. package/src/services/export-theme/layouts/index.html +40 -26
  453. package/src/services/export-theme/layouts/partials/collection-members.html +100 -0
  454. package/src/services/export-theme/layouts/partials/collection-threads.html +33 -0
  455. package/src/services/export-theme/layouts/partials/featured-members.html +35 -0
  456. package/src/services/export-theme/layouts/partials/featured-thread.html +1 -1
  457. package/src/services/export-theme/layouts/partials/feed-post-content.xml +105 -2
  458. package/src/services/export-theme/layouts/partials/footer.html +1 -1
  459. package/src/services/export-theme/layouts/partials/head.html +1 -1
  460. package/src/services/export-theme/layouts/partials/header.html +5 -3
  461. package/src/services/export-theme/layouts/partials/jant-data.html +23 -0
  462. package/src/services/export-theme/layouts/partials/latest-members.html +48 -0
  463. package/src/services/export-theme/layouts/partials/media-gallery.html +35 -21
  464. package/src/services/export-theme/layouts/partials/pagination.html +14 -13
  465. package/src/services/export-theme/layouts/partials/post-card.html +8 -4
  466. package/src/services/export-theme/layouts/partials/reply.html +2 -1
  467. package/src/services/export-theme/layouts/partials/smart-collection-members.html +129 -0
  468. package/src/services/export-theme/layouts/partials/thread-preview.html +41 -31
  469. package/src/services/export-theme/layouts/post/list.html +1 -1
  470. package/src/services/export-theme/layouts/smart_collection/list.html +24 -0
  471. package/src/services/export-theme/styles/main.css +13 -2
  472. package/src/services/export-theme/theme.toml +1 -1
  473. package/src/services/export.ts +880 -72
  474. package/src/services/github-app-installations.ts +171 -4
  475. package/src/services/github-sync.ts +69 -15
  476. package/src/services/index.ts +34 -3
  477. package/src/services/language.ts +412 -0
  478. package/src/services/mcp.ts +22 -2
  479. package/src/services/media.ts +22 -7
  480. package/src/services/navigation.ts +429 -67
  481. package/src/services/path.ts +254 -6
  482. package/src/services/post.ts +1234 -190
  483. package/src/services/search.ts +39 -2
  484. package/src/services/settings.ts +238 -43
  485. package/src/services/site-admin.ts +27 -14
  486. package/src/services/site.ts +160 -32
  487. package/src/services/smart-collection.ts +636 -0
  488. package/src/services/telegram.ts +20 -22
  489. package/src/services/upload-session.ts +1 -3
  490. package/src/style-author.css +27 -0
  491. package/src/styles/components-author.css +1622 -0
  492. package/src/styles/components.css +24 -1571
  493. package/src/styles/site-media.css +16 -2
  494. package/src/styles/tokens.css +82 -12
  495. package/src/styles/ui-author.css +7602 -0
  496. package/src/styles/ui.css +1090 -7216
  497. package/src/types/app-context.ts +23 -0
  498. package/src/types/bindings.ts +8 -0
  499. package/src/types/config.ts +94 -15
  500. package/src/types/constants.ts +188 -16
  501. package/src/types/entities.ts +87 -1
  502. package/src/types/operations.ts +74 -2
  503. package/src/types/props.ts +157 -31
  504. package/src/types/views.ts +55 -1
  505. package/src/ui/__tests__/font-themes.test.ts +52 -12
  506. package/src/ui/compose/ComposeDialog.tsx +201 -7
  507. package/src/ui/compose/ComposePrompt.tsx +1 -5
  508. package/src/ui/compose/__tests__/ComposeDialog.test.tsx +125 -0
  509. package/src/ui/dash/appearance/AdvancedContent.tsx +2 -2
  510. package/src/ui/dash/appearance/CodeInjectionContent.tsx +12 -16
  511. package/src/ui/dash/appearance/NavigationContent.tsx +117 -16
  512. package/src/ui/dash/appearance/__tests__/NavigationContent.test.tsx +33 -11
  513. package/src/ui/dash/appearance/__tests__/system-nav-descriptions.test.ts +44 -0
  514. package/src/ui/dash/appearance/system-nav-descriptions.ts +75 -0
  515. package/src/ui/dash/settings/AccountMenuContent.tsx +2 -2
  516. package/src/ui/dash/settings/ApiTokensContent.tsx +2 -1
  517. package/src/ui/dash/settings/ConfigEditorContent.tsx +35 -16
  518. package/src/ui/dash/settings/GeneralContent.tsx +277 -113
  519. package/src/ui/dash/settings/LanguageContent.tsx +409 -0
  520. package/src/ui/dash/settings/SettingsRootContent.tsx +19 -1
  521. package/src/ui/dash/settings/__tests__/GeneralContent.test.tsx +324 -4
  522. package/src/ui/dash/settings/__tests__/LanguageContent.test.tsx +144 -0
  523. package/src/ui/dash/settings/__tests__/discover-copy.test.ts +66 -0
  524. package/src/ui/dash/settings/discover-copy.ts +116 -0
  525. package/src/ui/feed/LinkCard.tsx +55 -45
  526. package/src/ui/feed/NoteCard.tsx +9 -4
  527. package/src/ui/feed/PostStatusBadges.tsx +90 -43
  528. package/src/ui/feed/QuoteCard.tsx +55 -30
  529. package/src/ui/feed/ThreadPreview.tsx +6 -2
  530. package/src/ui/feed/__tests__/thread-preview.test.ts +13 -16
  531. package/src/ui/feed/__tests__/timeline-cards.test.ts +314 -49
  532. package/src/ui/feed/thread-preview-state.ts +20 -6
  533. package/src/ui/font-themes.ts +39 -29
  534. package/src/ui/layouts/BaseLayout.tsx +155 -10
  535. package/src/ui/layouts/SiteLayout.tsx +192 -34
  536. package/src/ui/layouts/__tests__/BaseLayout.test.tsx +196 -17
  537. package/src/ui/layouts/__tests__/SiteLayout.test.tsx +109 -85
  538. package/src/ui/pages/ArchivePage.tsx +282 -289
  539. package/src/ui/pages/CollectionPage.tsx +86 -76
  540. package/src/ui/pages/CollectionsPage.tsx +5 -0
  541. package/src/ui/pages/ComposePage.tsx +8 -0
  542. package/src/ui/pages/PostPage.tsx +47 -0
  543. package/src/ui/pages/SearchPage.tsx +3 -3
  544. package/src/ui/pages/SmartCollectionPage.tsx +434 -0
  545. package/src/ui/pages/SubscribePage.tsx +236 -0
  546. package/src/ui/pages/__tests__/ArchivePage.test.tsx +65 -9
  547. package/src/ui/pages/__tests__/collections-directory-rows.test.tsx +92 -0
  548. package/src/ui/pages/__tests__/collections-view-links.test.tsx +81 -0
  549. package/src/ui/shared/CollectionDirectory.tsx +178 -3
  550. package/src/ui/shared/CollectionsManager.tsx +70 -17
  551. package/src/ui/shared/CopyField.tsx +127 -0
  552. package/src/ui/shared/EmptyPostContent.tsx +23 -0
  553. package/src/ui/shared/MediaGallery.tsx +125 -46
  554. package/src/ui/shared/Pagination.tsx +20 -5
  555. package/src/ui/shared/PostFooter.tsx +20 -11
  556. package/src/ui/shared/__tests__/archive-labels.test.ts +100 -0
  557. package/src/ui/shared/__tests__/media-gallery.test.ts +210 -2
  558. package/src/ui/shared/__tests__/navigation-labels.test.ts +16 -22
  559. package/src/ui/shared/__tests__/pagination.test.ts +38 -24
  560. package/src/ui/shared/__tests__/post-footer.test.ts +32 -0
  561. package/src/ui/shared/archive-labels.ts +98 -0
  562. package/src/ui/shared/collection-management-labels.ts +94 -16
  563. package/src/ui/shared/navigation-labels.ts +45 -71
  564. package/src/ui/shared/post-article-attributes.ts +2 -0
  565. package/src/ui/shared/smart-collection-labels.ts +343 -0
  566. package/dist/app-C75Zc8dD.js +0 -6
  567. package/dist/client/_assets/chunks/heic-to-DUUaO23q.js +0 -1
  568. package/dist/client/_assets/chunks/module-DcsAZQZ_.js +0 -716
  569. package/dist/client/_assets/chunks/url-CU9pEbk5.js +0 -1
  570. package/dist/client/_assets/client-Bq0vre8Y.js +0 -296
  571. package/dist/client/_assets/client-D3VZyG4L.css +0 -2
  572. package/dist/client/_assets/client-auth-F2rb9WfF.js +0 -5571
  573. package/dist/env-BPYViDJJ.js +0 -281
  574. package/dist/export-Dl5KCiEs.js +0 -5562
  575. package/dist/github-api-BNF35Lkx.js +0 -176
  576. package/dist/github-app-DdiD-bC4.js +0 -275
  577. package/dist/github-sync-Bqg62IvV.js +0 -4
  578. package/dist/github-sync-HdK2EgvJ.js +0 -431
  579. package/dist/url-CbLAtlZe.js +0 -900
  580. package/src/client/__tests__/collection-created-notice.test.ts +0 -36
  581. package/src/client/__tests__/collection-form-bridge.test.ts +0 -216
  582. package/src/client/__tests__/post-form-bridge.test.ts +0 -82
  583. package/src/client/collection-created-notice.ts +0 -66
  584. package/src/client/collection-form-bridge.ts +0 -191
  585. package/src/client/components/__tests__/jant-post-form.test.ts +0 -193
  586. package/src/client/components/jant-post-form.ts +0 -422
  587. package/src/client/components/post-form-template.ts +0 -352
  588. package/src/client/components/post-form-types.ts +0 -96
  589. package/src/client/media-metadata.ts +0 -247
  590. package/src/client/post-form-bridge.ts +0 -193
  591. package/src/client/tiptap/exitable-marks.ts +0 -73
  592. package/src/ui/pages/CollectionEditorPage.tsx +0 -175
@@ -13,15 +13,50 @@ msgstr ""
13
13
  "Language-Team: \n"
14
14
  "Plural-Forms: \n"
15
15
 
16
+ #. @context: Help text under the Jant Discover checkbox on the settings page. {about} is the sentence saying what the directory is, translated on its own and shown alone on the setup screen; keep it, and join it to what follows as your language joins two sentences. {links} and {quotes} are the directory's two list names, which stay in English, and {rules} is the name of its rules page; each is rendered as a link, so keep every placeholder as one run of text. {hours} is how long the directory waits before showing a post, which is the time left to edit it. 'Featured' is the mark on a post, as this site's own UI spells it; the lowercase 'link and quote' are the post formats, not the lists.
17
+ #: src/ui/dash/settings/discover-copy.ts
18
+ msgid "{about} A post you mark Featured appears on the Discover home page {hours} hours later, and link and quote posts appear on the {links} and {quotes} lists {hours} hours after they are published. You can keep editing them in the meantime. See the {rules}."
19
+ msgstr "{about}貼文設為 Featured {hours} 小時後會出現在 Discover 首頁,Link 和 Quote 類型的貼文發佈 {hours} 小時後出現在 {links} 和 {quotes} 列表。這段期間你可以繼續修改,詳見 {rules}。"
20
+
21
+ #. @context: Warning in the multilingual dialog about stamping posts that have no language
22
+ #: src/ui/dash/settings/LanguageContent.tsx
23
+ msgid "{count, plural, one {# existing post} other {# existing posts}} with no language yet will be marked as {language}."
24
+ msgstr "{count, plural, other {其中 # 篇還沒有語言,會標記為「{language}」。}}"
25
+
26
+ #. @context: Error when a content language that posts still use would be dropped
27
+ #: src/routes/dash/settings.tsx
28
+ msgid "{count, plural, one {# post is} other {# posts are}} still written in {language}. Change their language, or keep the language."
29
+ msgstr "{count, plural, other {還有 # 篇{language}貼文。先修改它們的語言,或保留該語言。}}"
30
+
31
+ #. @context: Refusal in the multilingual dialog when the list drops a language that posts still use
32
+ #: src/routes/dash/settings.tsx
33
+ msgid "{count, plural, one {# post is} other {# posts are}} written in {language}, which is not on this list. Add it back, or change their language first."
34
+ msgstr "{count, plural, other {還有 # 篇{language}貼文,但列表裡沒有這個語言。把它加回列表,或先修改這些貼文的語言。}}"
35
+
16
36
  #. @context: Config Editor live search result count
17
37
  #: src/ui/dash/settings/ConfigEditorContent.tsx
18
38
  msgid "{count} settings shown"
19
39
  msgstr "{count} 個設定已顯示"
20
40
 
41
+ #. @context: Body of the dialog confirming removal of the last additional language
42
+ #: src/ui/dash/settings/LanguageContent.tsx
43
+ msgid "{language} is the only other language on this site, so removing it turns multilingual content off. The root address goes back to showing every language, {prefix} stops working, and each post keeps the language it is written in."
44
+ msgstr "移除 {language} 後就只剩主語言了,多語言會一併關閉。根位址將恢復顯示所有語言,{prefix} 不再可用,每篇貼文的語言維持不變。"
45
+
46
+ #. @context: What the Jant Discover directory is, in one sentence. The whole help line under the Discover checkbox on the first-run setup screen, and the opening of the settings page's longer one. {name} is the directory's name and is rendered as the link to it, so keep it as one run of text.
47
+ #: src/ui/dash/settings/discover-copy.ts
48
+ msgid "{name} is a directory of Jant blogs, curated by hand by the Jant community to help people find new Jant blogs and posts."
49
+ msgstr "{name} 是 Jant 社群人工維護的目錄,旨在幫助使用者發現新的 Jant 部落格和內容。"
50
+
51
+ #. @context: Body of the change-primary-language dialog
52
+ #: src/ui/dash/settings/LanguageContent.tsx
53
+ msgid "{next} will be served at the root address (/, /feed, /archive), and {previous} moves to {prefix}. Post addresses do not change, but anyone subscribed to /feed starts receiving {next} posts."
54
+ msgstr "根位址(/、/feed、/archive)將改為提供「{next}」的內容,「{previous}」移至 {prefix}。貼文網址不會改變,但訂閱 /feed 的讀者從此收到的是「{next}」的貼文。"
55
+
21
56
  #. @context: Custom CSS textarea placeholder
22
57
  #: src/ui/dash/appearance/AdvancedContent.tsx
23
58
  msgid "/* Your custom CSS here */"
24
- msgstr "/* 在此放入您的自訂 CSS */"
59
+ msgstr "/* 在此放入你的自訂 CSS */"
25
60
 
26
61
  #. @context: Compact conflict message when /about is occupied
27
62
  #: src/ui/dash/settings/GeneralContent.tsx
@@ -51,7 +86,7 @@ msgstr "沉靜、偏冷的底色。"
51
86
  #. @context: Help text for site description field
52
87
  #: src/ui/dash/settings/GeneralContent.tsx
53
88
  msgid "A short intro shown on your home page."
54
- msgstr "顯示在您的主頁上的簡短介紹。"
89
+ msgstr "顯示在你的主頁上的簡短介紹。"
55
90
 
56
91
  #. @context: Parchment color theme preview help line
57
92
  #: src/ui/dash/appearance/ColorThemeContent.tsx
@@ -109,11 +144,26 @@ msgstr "已啟用的權杖"
109
144
  msgid "Add"
110
145
  msgstr "新增"
111
146
 
147
+ #. @context: One-click fix in the multilingual dialog, putting a language with posts back on the list
148
+ #: src/ui/dash/settings/LanguageContent.tsx
149
+ msgid "Add {language}"
150
+ msgstr "新增 {language}"
151
+
112
152
  #. @context: Description in link popover form
113
153
  #: src/ui/dash/appearance/NavigationContent.tsx
114
154
  msgid "Add a custom link to any URL"
115
155
  msgstr "新增自訂連結到任何 URL"
116
156
 
157
+ #. @context: Button that opens the link form with the pasted address filled in
158
+ #: src/ui/dash/appearance/NavigationContent.tsx
159
+ msgid "Add as link"
160
+ msgstr "新增為連結"
161
+
162
+ #. @context: Validation message when the multilingual dialog has no second language
163
+ #: src/ui/dash/settings/LanguageContent.tsx
164
+ msgid "Add at least one more language to turn this on."
165
+ msgstr "至少再新增一種語言才能啟用。"
166
+
117
167
  #. @context: Button for adding a collection to nav
118
168
  #: src/ui/dash/appearance/NavigationContent.tsx
119
169
  msgid "Add Collection"
@@ -142,12 +192,17 @@ msgstr "新增自訂連結到導覽"
142
192
  #. @context: Description after quick page creation
143
193
  #: src/ui/dash/appearance/NavigationContent.tsx
144
194
  msgid "Add it to navigation now or open the editor to add content."
145
- msgstr "立即加入導覽,或開啟編輯器補充內容。"
195
+ msgstr "立即加入導覽,或啟用編輯器補充內容。"
146
196
 
147
197
  #. @context: Description after quick collection creation in Navigation settings
148
198
  #: src/ui/dash/appearance/NavigationContent.tsx
149
199
  msgid "Add it to navigation now or open the editor to add details."
150
- msgstr "立即加入導覽,或開啟編輯器補充詳細資料。"
200
+ msgstr "立即加入導覽,或啟用編輯器補充詳細資料。"
201
+
202
+ #. @context: Button that adds another content language
203
+ #: src/ui/dash/settings/LanguageContent.tsx
204
+ msgid "Add language"
205
+ msgstr "新增語言"
151
206
 
152
207
  #. @context: Button and heading for adding custom link
153
208
  #: src/ui/dash/appearance/NavigationContent.tsx
@@ -197,7 +252,17 @@ msgstr "所有可用的端點與請求格式。"
197
252
  #. @context: Message when every collection is already added to nav
198
253
  #: src/ui/dash/appearance/NavigationContent.tsx
199
254
  msgid "All collections are already in your navigation."
200
- msgstr "所有選集已經在您的導覽中。"
255
+ msgstr "所有選集已經在你的導覽中。"
256
+
257
+ #. @context: Link text to the feeds documentation, under the fixed feed URLs in General settings
258
+ #: src/ui/dash/settings/GeneralContent.tsx
259
+ msgid "All feed addresses"
260
+ msgstr "全部 feed 網址"
261
+
262
+ #. @context: Checkbox for joining the Jant Discover directory, on the settings page and once on the first-run setup screen. {name} is the directory's name, kept as one run of text.
263
+ #: src/ui/dash/settings/discover-copy.ts
264
+ msgid "Allow {name} to list my site"
265
+ msgstr "允許我的部落格出現在 {name} 中"
201
266
 
202
267
  #. @context: Config Editor setting description
203
268
  #: src/ui/dash/settings/ConfigEditorContent.tsx
@@ -207,7 +272,12 @@ msgstr "允許不使用 API 權杖讀取已發佈內容。"
207
272
  #. @context: Checkbox for allowing search engine indexing
208
273
  #: src/ui/dash/settings/GeneralContent.tsx
209
274
  msgid "Allow search engines to index my site"
210
- msgstr "允許搜尋引擎收錄我的網站"
275
+ msgstr "允許搜尋引擎索引我的網站"
276
+
277
+ #. @context: Shown when a pasted address is already a navigation item
278
+ #: src/ui/dash/appearance/NavigationContent.tsx
279
+ msgid "Already in navigation. Drag it in the list above to move it."
280
+ msgstr "已在導覽中。請在上方清單中拖曳以移動"
211
281
 
212
282
  #. @context: Theme mode option description
213
283
  #: src/ui/dash/appearance/ColorThemeContent.tsx
@@ -224,6 +294,21 @@ msgstr "永遠顯示主題的淺色版本。"
224
294
  msgid "An earthier, warmer tone."
225
295
  msgstr "更偏暖、偏土的色調。"
226
296
 
297
+ #. @context: Button sending the Discover announcement, shown when the site has never announced itself or when the announcement failed
298
+ #: src/ui/dash/settings/GeneralContent.tsx
299
+ msgid "Announce my site"
300
+ msgstr "提交我的網站"
301
+
302
+ #. @context: Toast after sending the Discover announcement. It runs in the background, so the page does not yet know how it went.
303
+ #: src/routes/dash/settings.tsx
304
+ msgid "Announcing your site. Reload to see the result."
305
+ msgstr "正在提交網站,重新整理後可以看到結果。"
306
+
307
+ #. @context: Follow-up hint under the stamping warning
308
+ #: src/ui/dash/settings/LanguageContent.tsx
309
+ msgid "Any post written in another language can be corrected from its own menu afterwards."
310
+ msgstr "若有別的語言的貼文,之後可以在那篇貼文的選單裡單獨更正。"
311
+
227
312
  #. @context: Code Injection security warning body
228
313
  #: src/ui/dash/appearance/CodeInjectionContent.tsx
229
314
  msgid "Anything you paste here has full access to your visitors' browsers. Only use code from sources you trust."
@@ -251,13 +336,11 @@ msgstr "外觀"
251
336
  #. @context: Appearance settings description
252
337
  #: src/ui/dash/appearance/ColorThemeContent.tsx
253
338
  msgid "Applies to your entire site, including admin pages. Pick a palette, then choose whether it follows the system or stays fixed."
254
- msgstr "套用於整個網站, 包括管理頁面. 選擇一個調色盤, 然後決定它是跟隨系統還是維持固定."
339
+ msgstr "套用於整個網站,包括管理頁面。選擇一個調色盤,然後決定它是跟隨系統還是維持固定。"
255
340
 
256
341
  #. @context: Custom URL target type badge for an archive view
257
- #. @context: Custom URL type option for filtered archive view
258
342
  #. @context: Suggested navigation link target type
259
343
  #: src/routes/dash/custom-urls.tsx
260
- #: src/routes/dash/custom-urls.tsx
261
344
  #: src/ui/dash/appearance/NavigationContent.tsx
262
345
  msgid "Archive"
263
346
  msgstr "封存"
@@ -267,16 +350,21 @@ msgstr "封存"
267
350
  msgid "Archive feed"
268
351
  msgstr "封存 RSS 來源"
269
352
 
270
- #. @context: Help text for archive custom URL query params
271
- #: src/routes/dash/custom-urls.tsx
272
- msgid "Archive filter parameters (e.g. format=note&view=list)"
273
- msgstr "封存篩選參數 (例如 format=note&view=list)"
274
-
275
353
  #. @context: Config Editor setting description
276
354
  #: src/ui/dash/settings/ConfigEditorContent.tsx
277
355
  msgid "Ask search engines not to index public pages or include them in results."
278
356
  msgstr "要求搜尋引擎不要索引公開頁面或將它們包含在搜尋結果中。"
279
357
 
358
+ #. @context: Heading above the page a pasted address resolved to
359
+ #: src/ui/dash/appearance/NavigationContent.tsx
360
+ msgid "At that address"
361
+ msgstr "在該位址"
362
+
363
+ #. @context: Error toast when authentication secret is missing from server config
364
+ #: src/routes/auth/setup.tsx
365
+ msgid "Auth secret is missing. Check your environment variables."
366
+ msgstr "缺少驗證金鑰,檢查環境變數設定。"
367
+
280
368
  #. @context: Theme mode option label
281
369
  #: src/ui/dash/appearance/ColorThemeContent.tsx
282
370
  msgid "Auto"
@@ -285,7 +373,7 @@ msgstr "自動"
285
373
  #. @context: Description after theming guide link on Custom CSS page
286
374
  #: src/ui/dash/appearance/AdvancedContent.tsx
287
375
  msgid "available CSS variables, data attributes, and examples."
288
- msgstr "可用的 CSS 變數、data 屬性與範例."
376
+ msgstr "可用的 CSS 變數、data 屬性與範例。"
289
377
 
290
378
  #. @context: Breadcrumb label
291
379
  #. @context: Settings item — avatar settings
@@ -299,7 +387,7 @@ msgstr "頭像"
299
387
  #: src/routes/dash/settings.tsx
300
388
  #: src/routes/dash/settings.tsx
301
389
  msgid "Avatar display updated."
302
- msgstr "頭像顯示已更新."
390
+ msgstr "頭像顯示已更新。"
303
391
 
304
392
  #. @context: Button returning from page creation to page search
305
393
  #: src/ui/dash/appearance/NavigationContent.tsx
@@ -369,6 +457,7 @@ msgstr "平靜自然,看著舒服。"
369
457
  #. @context: Button to cancel form
370
458
  #. @context: Button to cancel settings changes
371
459
  #. @context: Button to cancel unsaved changes and revert to original values
460
+ #. @context: Dialog cancel button
372
461
  #. @context: GitHub sync picker — cancel action
373
462
  #: src/routes/dash/custom-urls.tsx
374
463
  #: src/routes/dash/custom-urls.tsx
@@ -381,6 +470,7 @@ msgstr "平靜自然,看著舒服。"
381
470
  #: src/ui/dash/settings/DeleteAccountContent.tsx
382
471
  #: src/ui/dash/settings/GeneralContent.tsx
383
472
  #: src/ui/dash/settings/GitHubSyncContent.tsx
473
+ #: src/ui/dash/settings/LanguageContent.tsx
384
474
  #: src/ui/dash/settings/SessionsContent.tsx
385
475
  #: src/ui/dash/settings/TelegramContent.tsx
386
476
  #: src/ui/dash/settings/TelegramContent.tsx
@@ -394,6 +484,11 @@ msgstr "取消"
394
484
  msgid "Change Password"
395
485
  msgstr "變更密碼"
396
486
 
487
+ #. @context: Title of the change-primary-language dialog
488
+ #: src/ui/dash/settings/LanguageContent.tsx
489
+ msgid "Change the primary language?"
490
+ msgstr "把主要語言改為其他語言?"
491
+
397
492
  #. @context: Warning shown when changing the canonical RSS feed selection
398
493
  #: src/ui/dash/settings/GeneralContent.tsx
399
494
  msgid "Changing this updates what subscribers get from /feed."
@@ -417,7 +512,7 @@ msgstr "選擇一則尚未加入導覽的有標題筆記,或建立新頁面。
417
512
  #. @context: Font theme settings description
418
513
  #: src/ui/dash/appearance/FontThemeContent.tsx
419
514
  msgid "Choose a typographic direction for your site. Each theme changes both the font pairing and the reading rhythm."
420
- msgstr "為您的網站選擇一種排版風格。每個主題會同時改變字體配對與閱讀節奏。"
515
+ msgstr "為你的網站選擇一種排版風格。每個主題會同時改變字體配對與閱讀節奏。"
421
516
 
422
517
  #. @context: Config Editor linked setting description
423
518
  #: src/ui/dash/settings/ConfigEditorContent.tsx
@@ -432,7 +527,7 @@ msgstr "選擇要向讀者與搜尋引擎宣告的內容語言。"
432
527
  #. @context: GitHub sync picker — page subtitle
433
528
  #: src/routes/dash/settings.tsx
434
529
  msgid "Choose the GitHub account and repository to sync with this site."
435
- msgstr "選擇要與此網站同步的 GitHub 帳號和儲存庫."
530
+ msgstr "選擇要與此網站同步的 GitHub 帳號和儲存庫。"
436
531
 
437
532
  #. @context: Config Editor linked setting description
438
533
  #: src/ui/dash/settings/ConfigEditorContent.tsx
@@ -449,11 +544,6 @@ msgstr "選擇用於顯示日期和時間的時區。"
449
544
  msgid "Choose the typography used across Jant."
450
545
  msgstr "選擇 Jant 全域使用的字體。"
451
546
 
452
- #. @context: Settings field for a manual Chinese, Japanese, or Korean font fallback
453
- #: src/ui/dash/settings/GeneralContent.tsx
454
- msgid "CJK fallback"
455
- msgstr "CJK 字型備援"
456
-
457
547
  #. @context: Paper color theme preview help line
458
548
  #: src/ui/dash/appearance/ColorThemeContent.tsx
459
549
  msgid "Clean and high-contrast, close to white."
@@ -548,7 +638,7 @@ msgstr "連接"
548
638
  #. @context: Intro text on GitHub Sync settings page when not connected
549
639
  #: src/ui/dash/settings/GitHubSyncContent.tsx
550
640
  msgid "Connect a GitHub repository to automatically back up your posts as Markdown files. Edits on GitHub sync back to your site."
551
- msgstr "連接 GitHub 倉庫,自動將你的文章備份為 Markdown 檔案。GitHub 上的編輯會同步回你的網站。"
641
+ msgstr "連接 GitHub 倉庫,自動把貼文備份成 Markdown。GitHub 上的修改會同步回網站。"
552
642
 
553
643
  #. @context: Intro text on the Telegram settings page when no bot is set up
554
644
  #: src/ui/dash/settings/TelegramContent.tsx
@@ -598,18 +688,32 @@ msgstr "已透過個人存取權杖連線"
598
688
  #. @context: GitHub sync picker — explanatory body for foreign-repo confirmation. Placeholder {repo} is the owner/repo slug.
599
689
  #: src/routes/dash/settings.tsx
600
690
  msgid "Connecting will sync your site onto {repo}'s default branch on top of its existing history. Existing files outside Jant's managed paths are kept. This can't be undone."
601
- msgstr "連線後會將您的網站同步到 {repo} 的預設分支,並疊加在其現有歷史之上。Jant 管理路徑外的既有檔案會保留。此操作無法復原。"
691
+ msgstr "連線後會將你的網站同步到 {repo} 的預設分支,並疊加在其現有歷史之上。Jant 管理路徑外的既有檔案會保留。此操作無法復原。"
602
692
 
603
693
  #. @context: GitHub sync picker — primary action button while a request is in flight
604
694
  #: src/routes/dash/settings.tsx
605
695
  msgid "Connecting…"
606
696
  msgstr "連線中…"
607
697
 
608
- #. @context: Settings form field for the public content language
609
- #: src/ui/dash/settings/GeneralContent.tsx
698
+ #. @context: Language settings field — the site's language
699
+ #. @context: Setup form field - site content language
700
+ #. @context: Setup form field - site content language
701
+ #: src/routes/auth/setup.tsx
702
+ #: src/routes/auth/setup.tsx
703
+ #: src/ui/dash/settings/LanguageContent.tsx
610
704
  msgid "Content language"
611
705
  msgstr "內容語言"
612
706
 
707
+ #. @context: Settings item description for language
708
+ #: src/ui/dash/settings/SettingsRootContent.tsx
709
+ msgid "Content language, dashboard language, multilingual"
710
+ msgstr "內容語言、介面語言、多語言"
711
+
712
+ #. @context: Setup submit button on the first screen, which is followed by the site screen
713
+ #: src/routes/auth/setup.tsx
714
+ msgid "Continue"
715
+ msgstr "繼續"
716
+
613
717
  #. @context: Slate color theme preview title
614
718
  #: src/ui/dash/appearance/ColorThemeContent.tsx
615
719
  msgid "Cool blue-gray"
@@ -648,12 +752,12 @@ msgstr "複製權杖"
648
752
  #. @context: Warning to copy newly created API token
649
753
  #: src/ui/dash/settings/ApiTokensContent.tsx
650
754
  msgid "Copy your token now — it won't be shown again."
651
- msgstr "請立即複製您的權杖 — 它不會再顯示。"
755
+ msgstr "請立即複製你的權杖 — 它不會再顯示。"
652
756
 
653
757
  #. @context: Error toast when copying text to the clipboard fails
654
758
  #: src/ui/dash/settings/GeneralContent.tsx
655
759
  msgid "Could not copy. Try again."
656
- msgstr "無法複製. 請再試一次."
760
+ msgstr "無法複製。請再試一次。"
657
761
 
658
762
  #. @context: GitHub sync picker — generic failure message for Connect
659
763
  #: src/routes/dash/settings.tsx
@@ -670,6 +774,11 @@ msgstr "無法建立選集。請檢查資料後再試一次。"
670
774
  msgid "Couldn't create the page. Check the details and try again."
671
775
  msgstr "無法建立頁面。請檢查資料後再試一次。"
672
776
 
777
+ #. @context: Error toast when account creation fails
778
+ #: src/routes/auth/setup.tsx
779
+ msgid "Couldn't create your account. Check the details and try again."
780
+ msgstr "帳戶建立失敗,檢查填寫內容後重試。"
781
+
673
782
  #. @context: Error toast when nav delete fails
674
783
  #: src/ui/dash/appearance/NavigationContent.tsx
675
784
  msgid "Couldn't delete. Try again in a moment."
@@ -755,6 +864,11 @@ msgstr "在 GitHub 上建立一個"
755
864
  msgid "Create Page"
756
865
  msgstr "建立頁面"
757
866
 
867
+ #. @context: Setup page description on the first screen, which asks only for credentials
868
+ #: src/routes/auth/setup.tsx
869
+ msgid "Create the account you write from."
870
+ msgstr "建立帳戶"
871
+
758
872
  #. @context: Help text for GitHub repository input on GitHub Sync settings, telling users they must create the repo themselves
759
873
  #: src/ui/dash/settings/GitHubSyncContent.tsx
760
874
  msgid "Create the repository on GitHub first — it can be empty."
@@ -804,7 +918,7 @@ msgstr "自訂 CSS"
804
918
  #. @context: Toast after saving custom CSS
805
919
  #: src/routes/dash/settings.tsx
806
920
  msgid "Custom CSS updated."
807
- msgstr "自訂 CSS 已更新."
921
+ msgstr "自訂 CSS 已更新。"
808
922
 
809
923
  #. @context: Settings item — custom URL settings
810
924
  #. @context: Settings section heading
@@ -825,8 +939,13 @@ msgstr "危險區域"
825
939
  msgid "Dark"
826
940
  msgstr "深色"
827
941
 
828
- #. @context: Settings form field for the admin interface language
829
- #: src/ui/dash/settings/GeneralContent.tsx
942
+ #. @context: Language settings section for author-facing settings
943
+ #: src/ui/dash/settings/LanguageContent.tsx
944
+ msgid "Dashboard"
945
+ msgstr "後台"
946
+
947
+ #. @context: Language settings field — the admin UI language
948
+ #: src/ui/dash/settings/LanguageContent.tsx
830
949
  msgid "Dashboard language"
831
950
  msgstr "後台語言"
832
951
 
@@ -876,7 +995,7 @@ msgstr "刪除此自訂 URL?使用該 URL 的訪客將不會再被重新導向
876
995
  #. @context: Confirm dialog for deleting a custom navigation link
877
996
  #: src/ui/dash/appearance/NavigationContent.tsx
878
997
  msgid "Delete this navigation link? Visitors won't see it in your site header anymore."
879
- msgstr "刪除此導覽連結?訪客將不再在您的網站頁首看到它。"
998
+ msgstr "刪除此導覽連結?訪客將不再在你的網站頁首看到它。"
880
999
 
881
1000
  #. @context: Settings item description for account settings on the settings home page when demo restrictions are enabled
882
1001
  #: src/ui/dash/settings/SettingsRootContent.tsx
@@ -893,6 +1012,11 @@ msgstr "示範模式會隱藏會話、密碼更改與帳號刪除。匯出功能
893
1012
  msgid "Demo sites always stay hidden from search engines."
894
1013
  msgstr "示範網站會始終對搜尋引擎保持隱藏。"
895
1014
 
1015
+ #. @context: Help text under the Jant Discover checkbox explaining that Discover is locked off in demo mode, shown in place of the usual help line. {name} is the directory's name and is rendered as the link to it, so keep it as one run of text.
1016
+ #: src/ui/dash/settings/GeneralContent.tsx
1017
+ msgid "Demo sites are never listed in {name}."
1018
+ msgstr "示範網站不會出現在 {name} 中。"
1019
+
896
1020
  #. @context: Color theme preview collection label
897
1021
  #: src/ui/dash/appearance/ColorThemeContent.tsx
898
1022
  msgid "Design"
@@ -915,12 +1039,22 @@ msgstr "解除連線"
915
1039
  #. @context: Confirmation message when disconnecting GitHub Sync
916
1040
  #: src/ui/dash/settings/GitHubSyncContent.tsx
917
1041
  msgid "Disconnect from GitHub? The webhook will be removed. Your repository content will not be deleted."
918
- msgstr "要與 GitHub 斷開連線嗎? webhook 將會被移除。您的儲存庫內容不會被刪除。"
1042
+ msgstr "要與 GitHub 斷開連線嗎?webhook 會被移除。你的儲存庫內容不會被刪除。"
919
1043
 
920
1044
  #. @context: Confirmation message when disconnecting Telegram
921
1045
  #: src/ui/dash/settings/TelegramContent.tsx
922
1046
  msgid "Disconnect Telegram? You can reconnect any time with a new binding code."
923
- msgstr "要斷開 Telegram?您可以隨時使用新的綁定代碼重新連接。"
1047
+ msgstr "要斷開 Telegram?你可以隨時使用新的綁定代碼重新連接。"
1048
+
1049
+ #. @context: Link text at the end of the help line under the Discover checkbox, leading to the directory's page on how blogs are listed: joining, review, and what takes a blog off. This run of text is rendered as the link, so translate it as it should read inside that sentence.
1050
+ #: src/ui/dash/settings/discover-copy.ts
1051
+ msgid "Discover community rules"
1052
+ msgstr "Discover 社群規則"
1053
+
1054
+ #. @context: Help text explaining that Discover cannot work while Atom feeds are disabled
1055
+ #: src/ui/dash/settings/GeneralContent.tsx
1056
+ msgid "Discover reads your Atom feed, so it needs feeds turned on."
1057
+ msgstr "Discover 讀取的是 Atom 訂閱源,需要先開啟訂閱源。"
924
1058
 
925
1059
  #. @context: Checkbox to show avatar in the site header
926
1060
  #: src/ui/dash/settings/AvatarContent.tsx
@@ -930,7 +1064,7 @@ msgstr "在我的網站頁首顯示大頭貼"
930
1064
  #. @context: Help text for site footer field
931
1065
  #: src/ui/dash/settings/GeneralContent.tsx
932
1066
  msgid "Displayed at the bottom of all posts and pages."
933
- msgstr "顯示於所有文章與頁面的底部。"
1067
+ msgstr "顯示於所有貼文與頁面的底部。"
934
1068
 
935
1069
  #. @context: Settings item description for the hosted site management external link
936
1070
  #: src/ui/dash/settings/SettingsRootContent.tsx
@@ -1007,6 +1141,11 @@ msgstr "在完整表單中編輯顯示在公開頁面底部的多行頁尾。"
1007
1141
  msgid "Edit the multi-line introduction used on your home page and in metadata."
1008
1142
  msgstr "在完整表單中編輯首頁和中繼資料使用的多行簡介。"
1009
1143
 
1144
+ #. @context: Setup/signin form field - email
1145
+ #: src/routes/auth/setup.tsx
1146
+ msgid "Email"
1147
+ msgstr "電子郵件"
1148
+
1010
1149
  #. @context: GitHub sync picker — shown when the selected repo has no commits
1011
1150
  #: src/routes/dash/settings.tsx
1012
1151
  msgid "Empty repository. Ready to connect."
@@ -1049,17 +1188,22 @@ msgstr "頁首上的網站圖示與個人標記"
1049
1188
  #: src/ui/dash/settings/GeneralContent.tsx
1050
1189
  #: src/ui/dash/StatusBadge.tsx
1051
1190
  msgid "Featured"
1052
- msgstr "精選"
1191
+ msgstr "Featured"
1053
1192
 
1054
1193
  #. @context: Label for the explicit featured RSS feed URL
1055
1194
  #: src/ui/dash/settings/GeneralContent.tsx
1056
1195
  msgid "Featured feed"
1057
- msgstr "精選 RSS 來源"
1196
+ msgstr "Featured RSS 來源"
1058
1197
 
1059
1198
  #. @context: Config Editor RSS feed enum option
1060
1199
  #: src/ui/dash/settings/ConfigEditorContent.tsx
1061
1200
  msgid "Featured posts"
1062
- msgstr "精選文章"
1201
+ msgstr "Featured 貼文"
1202
+
1203
+ #. @context: Discover status line right after a successful announcement, while the first crawl is still due
1204
+ #: src/ui/dash/settings/GeneralContent.tsx
1205
+ msgid "Feed address sent. A directory reads a newly announced feed within {hours} hours."
1206
+ msgstr "訂閱源網址已送達。目錄會在 {hours} 小時內首次讀取。"
1063
1207
 
1064
1208
  #. @context: Toast after saving feed settings
1065
1209
  #: src/routes/dash/settings.tsx
@@ -1079,7 +1223,7 @@ msgstr "訂閱來源"
1079
1223
  #. @context: Error toast when file storage is not set up
1080
1224
  #: src/routes/dash/settings.tsx
1081
1225
  msgid "File storage isn't set up. Check your server config."
1082
- msgstr "檔案儲存尚未設定。請檢查您的伺服器設定。"
1226
+ msgstr "檔案儲存尚未設定。請檢查你的伺服器設定。"
1083
1227
 
1084
1228
  #. @context: Settings item description for custom CSS
1085
1229
  #: src/ui/dash/settings/SettingsRootContent.tsx
@@ -1091,12 +1235,10 @@ msgstr "細緻的樣式覆寫"
1091
1235
  msgid "Fixed feed URLs"
1092
1236
  msgstr "固定的 RSS 檔案網址"
1093
1237
 
1094
- #. @context: CJK font fallback option that uses the configured content language
1095
- #. @context: Config Editor enum option for automatic CJK font fallback
1096
1238
  #. @context: Config Editor enum option for no explicit dashboard language
1239
+ #. @context: Dashboard language option that follows the site language
1097
1240
  #: src/ui/dash/settings/ConfigEditorContent.tsx
1098
- #: src/ui/dash/settings/ConfigEditorContent.tsx
1099
- #: src/ui/dash/settings/GeneralContent.tsx
1241
+ #: src/ui/dash/settings/LanguageContent.tsx
1100
1242
  msgid "Follow content language"
1101
1243
  msgstr "跟隨內容語言"
1102
1244
 
@@ -1122,6 +1264,11 @@ msgstr "字型主題"
1122
1264
  msgid "Font Theme"
1123
1265
  msgstr "字型主題"
1124
1266
 
1267
+ #. @context: Config Editor archive layout enum option
1268
+ #: src/ui/dash/settings/ConfigEditorContent.tsx
1269
+ msgid "Full posts"
1270
+ msgstr "完整貼文"
1271
+
1125
1272
  #. @context: Breadcrumb label
1126
1273
  #. @context: Settings item — general settings
1127
1274
  #. @context: Settings section heading
@@ -1150,6 +1297,11 @@ msgstr "取得新代碼"
1150
1297
  msgid "GitHub Sync"
1151
1298
  msgstr "GitHub 同步"
1152
1299
 
1300
+ #. @context: Help text for the multilingual content toggle
1301
+ #: src/ui/dash/settings/LanguageContent.tsx
1302
+ msgid "Give each language its own home page, archive, and feed. Once it's on, you pick a language when you publish, and can link an existing post to a version of it in another language."
1303
+ msgstr "每種語言都有獨立的首頁、彙整和訂閱來源。啟用後,發佈時可以選擇不同的語言,也可以為既有的貼文關聯一篇其他語言的貼文。"
1304
+
1153
1305
  #. @context: Section label for nav items shown in header
1154
1306
  #: src/ui/dash/appearance/NavigationContent.tsx
1155
1307
  msgid "Header"
@@ -1160,11 +1312,6 @@ msgstr "頁首"
1160
1312
  msgid "Header links, built-in destinations, and overflow menu"
1161
1313
  msgstr "頁首連結、內建目的地與更多選單"
1162
1314
 
1163
- #. @context: Description for the RSS system navigation toggle. {feed} is either Latest or Featured.
1164
- #: src/ui/dash/appearance/NavigationContent.tsx
1165
- msgid "Header RSS points to your {feed} feed (/feed). Change what /feed returns in General."
1166
- msgstr "頁首 RSS 指向你的 {feed} 訂閱 (/feed)。在「一般」中變更 /feed 回傳的內容。"
1167
-
1168
1315
  #. @context: Fallback color theme preview body
1169
1316
  #: src/ui/dash/appearance/ColorThemeContent.tsx
1170
1317
  msgid "Headings, body text, and links in this theme."
@@ -1173,7 +1320,7 @@ msgstr "這個主題下的標題、正文和連結。"
1173
1320
  #. @context: Post badge for posts hidden from Latest
1174
1321
  #: src/ui/dash/StatusBadge.tsx
1175
1322
  msgid "Hidden from Latest"
1176
- msgstr "從最新中隱藏 (不出現在 Latest 中,但仍可透過固定連結和集合存取的狀態。)"
1323
+ msgstr "Hidden from Latest"
1177
1324
 
1178
1325
  #. @context: Settings subsection heading for home page settings
1179
1326
  #: src/ui/dash/settings/GeneralContent.tsx
@@ -1222,6 +1369,11 @@ msgstr "安裝 GitHub App,以授予存取權而無需管理個人權杖。權
1222
1369
  msgid "Integrations"
1223
1370
  msgstr "第三方整合"
1224
1371
 
1372
+ #. @context: Name of the Jant blog directory. Appears inside the Discover checkbox label, and in the help line under it as the link to the directory.
1373
+ #: src/ui/dash/settings/discover-copy.ts
1374
+ msgid "Jant Discover"
1375
+ msgstr "Jant Discover"
1376
+
1225
1377
  #. @context: Validation error for a long page slug
1226
1378
  #: src/ui/dash/appearance/NavigationContent.tsx
1227
1379
  msgid "Keep the page address under 200 characters."
@@ -1247,15 +1399,37 @@ msgstr "標籤與 URL 為必填"
1247
1399
  msgid "Label is required"
1248
1400
  msgstr "標籤為必填"
1249
1401
 
1250
- #. @context: Settings subsection heading for language and time zone fields
1251
- #: src/ui/dash/settings/GeneralContent.tsx
1252
- msgid "Language & Time"
1253
- msgstr "語言與時區"
1402
+ #. @context: Breadcrumb label
1403
+ #. @context: Settings item — language settings
1404
+ #: src/routes/dash/settings.tsx
1405
+ #: src/ui/dash/settings/SettingsRootContent.tsx
1406
+ msgid "Language"
1407
+ msgstr "語言"
1408
+
1409
+ #. @context: Toast after adding a content language
1410
+ #: src/routes/dash/settings.tsx
1411
+ msgid "Language added."
1412
+ msgstr "語言已新增。"
1413
+
1414
+ #. @context: Toast after removing a content language
1415
+ #: src/routes/dash/settings.tsx
1416
+ msgid "Language removed."
1417
+ msgstr "語言已移除。"
1254
1418
 
1255
- #. @context: Toast after saving language and time settings
1419
+ #. @context: Toast after removing the last additional content language
1256
1420
  #: src/routes/dash/settings.tsx
1257
- msgid "Language and time updated."
1258
- msgstr "語言與時間已更新。"
1421
+ msgid "Language removed. Multilingual content is off."
1422
+ msgstr "語言已移除,多語言已關閉。"
1423
+
1424
+ #. @context: Toast after saving a language setting
1425
+ #: src/routes/dash/settings.tsx
1426
+ msgid "Language updated."
1427
+ msgstr "語言已更新。"
1428
+
1429
+ #. @context: Label above the list of the site's languages
1430
+ #: src/ui/dash/settings/LanguageContent.tsx
1431
+ msgid "Languages"
1432
+ msgstr "語言"
1259
1433
 
1260
1434
  #. @context: Label for last push commit SHA on GitHub Sync status
1261
1435
  #: src/ui/dash/settings/GitHubSyncContent.tsx
@@ -1282,22 +1456,22 @@ msgstr "最後使用於 {date}"
1282
1456
  #: src/ui/dash/appearance/NavigationContent.tsx
1283
1457
  #: src/ui/dash/settings/GeneralContent.tsx
1284
1458
  msgid "Latest"
1285
- msgstr "最新"
1459
+ msgstr "Latest"
1286
1460
 
1287
1461
  #. @context: Label for the explicit latest RSS feed URL
1288
1462
  #: src/ui/dash/settings/GeneralContent.tsx
1289
1463
  msgid "Latest feed"
1290
- msgstr "最新 RSS 來源"
1464
+ msgstr "Latest RSS 來源"
1291
1465
 
1292
1466
  #. @context: Config Editor RSS feed enum option
1293
1467
  #: src/ui/dash/settings/ConfigEditorContent.tsx
1294
1468
  msgid "Latest posts"
1295
- msgstr "最新文章"
1469
+ msgstr "Latest 貼文"
1296
1470
 
1297
1471
  #. @context: Suffix after Custom CSS link on color theme page
1298
1472
  #: src/ui/dash/appearance/ColorThemeContent.tsx
1299
1473
  msgid "lets you override any theme variable."
1300
- msgstr "讓您覆寫任何主題變數。"
1474
+ msgstr "讓你覆寫任何主題變數。"
1301
1475
 
1302
1476
  #. @context: Theme mode option label
1303
1477
  #: src/ui/dash/appearance/ColorThemeContent.tsx
@@ -1344,10 +1518,40 @@ msgstr "連結"
1344
1518
  msgid "Link added to navigation."
1345
1519
  msgstr "連結已新增到導覽。"
1346
1520
 
1521
+ #. @context: Description for the featured system navigation toggle
1522
+ #: src/ui/dash/appearance/system-nav-descriptions.ts
1523
+ msgid "Link to posts you've marked as featured."
1524
+ msgstr "連結到你標為 Featured 的貼文。"
1525
+
1526
+ #. @context: Description for the archive system navigation toggle
1527
+ #: src/ui/dash/appearance/system-nav-descriptions.ts
1528
+ msgid "Link to the post archive"
1529
+ msgstr "連結到貼文歸檔。"
1530
+
1531
+ #. @context: Description for the collections system navigation toggle
1532
+ #: src/ui/dash/appearance/system-nav-descriptions.ts
1533
+ msgid "Link to your collections page"
1534
+ msgstr "連結到選集頁。"
1535
+
1536
+ #. @context: Description for the latest system navigation toggle
1537
+ #: src/ui/dash/appearance/system-nav-descriptions.ts
1538
+ msgid "Link to your latest posts. Your homepage shows this feed."
1539
+ msgstr "連結到 Latest。首頁展示的就是這個列表。"
1540
+
1541
+ #. @context: Description for the RSS system navigation toggle. {feed} is either Latest or Featured. Pairs with the Subscribe toggle's description.
1542
+ #: src/ui/dash/appearance/system-nav-descriptions.ts
1543
+ msgid "Links straight to /feed — the raw Atom file, currently your {feed} feed. Best for readers who already use a feed reader."
1544
+ msgstr "直接指向 /feed,即 Atom 原始檔案,目前返回的是「{feed}」。適合已經在用閱讀器的讀者。"
1545
+
1546
+ #. @context: Description for the Subscribe system navigation toggle. Pairs with the RSS toggle's description.
1547
+ #: src/ui/dash/appearance/system-nav-descriptions.ts
1548
+ msgid "Links to /subscribe, a page listing your feeds with copy buttons. Best for readers who don't already use one."
1549
+ msgstr "指向 /subscribe,一個列出你所有 feed 網址、帶複製按鈕的頁面。適合還沒在用閱讀器的讀者。"
1550
+
1347
1551
  #. @context: Label for list posts curl example
1348
1552
  #: src/ui/dash/settings/ApiTokensContent.tsx
1349
1553
  msgid "List posts:"
1350
- msgstr "列出貼文:"
1554
+ msgstr "列出貼文:"
1351
1555
 
1352
1556
  #. @context: GitHub sync picker — loading state
1353
1557
  #: src/routes/dash/settings.tsx
@@ -1369,6 +1573,11 @@ msgstr "主要訂閱來源"
1369
1573
  msgid "Main RSS feed"
1370
1574
  msgstr "主要 RSS 訂閱"
1371
1575
 
1576
+ #. @context: Button that moves a language to the site's root address
1577
+ #: src/ui/dash/settings/LanguageContent.tsx
1578
+ msgid "Make primary"
1579
+ msgstr "設為主語言"
1580
+
1372
1581
  #. @context: Settings item label for opening the hosted account management page
1373
1582
  #: src/ui/dash/settings/AccountMenuContent.tsx
1374
1583
  msgid "Manage Account"
@@ -1439,6 +1648,31 @@ msgstr "更多操作"
1439
1648
  msgid "More options are available after you create it."
1440
1649
  msgstr "建立後可以設定更多選項。"
1441
1650
 
1651
+ #. @context: Language settings toggle for multilingual content
1652
+ #: src/ui/dash/settings/LanguageContent.tsx
1653
+ msgid "Multilingual content"
1654
+ msgstr "多語言"
1655
+
1656
+ #. @context: Toast after turning multilingual content off
1657
+ #: src/routes/dash/settings.tsx
1658
+ msgid "Multilingual content is off. Your languages are still saved."
1659
+ msgstr "多語言已關閉。你的語言設定仍然保留。"
1660
+
1661
+ #. @context: Toast after turning multilingual content on with no existing posts
1662
+ #: src/routes/dash/settings.tsx
1663
+ msgid "Multilingual content is on."
1664
+ msgstr "多語言已啟用。"
1665
+
1666
+ #. @context: Toast after turning multilingual content on with existing posts
1667
+ #: src/routes/dash/settings.tsx
1668
+ msgid "Multilingual content is on. {count, plural, one {# post was marked} other {# posts were marked}} as {language}."
1669
+ msgstr "多語言已啟用。{count, plural, other {# 篇貼文}}已標記為「{language}」。"
1670
+
1671
+ #. @context: Link to multilingual documentation on the Language settings page
1672
+ #: src/ui/dash/settings/LanguageContent.tsx
1673
+ msgid "Multilingual guide"
1674
+ msgstr "多語言指南"
1675
+
1442
1676
  #. @context: Clay color theme preview body
1443
1677
  #: src/ui/dash/appearance/ColorThemeContent.tsx
1444
1678
  msgid "Muted red-brown background, earthy and warm."
@@ -1449,10 +1683,15 @@ msgstr "低飽和的紅棕底,溫暖、有泥土感。"
1449
1683
  msgid "My Collection"
1450
1684
  msgstr "我的選集"
1451
1685
 
1686
+ #. @context: GitHub sync picker — hint under the create-on-github entry. Placeholder {name} is the suggested repo name.
1687
+ #: src/routes/dash/settings.tsx
1688
+ msgid "Name prefilled as {name}. The list refreshes when you return."
1689
+ msgstr "名稱預填為 {name}。返回後清單會重新整理。"
1690
+
1452
1691
  #. @context: Settings item description for general
1453
1692
  #: src/ui/dash/settings/SettingsRootContent.tsx
1454
- msgid "Name, metadata, language, and search defaults"
1455
- msgstr "名稱, 中繼資料, 語言, 和 搜尋預設值"
1693
+ msgid "Name, visibility, feeds, and time zone"
1694
+ msgstr "站名、可見性、訂閱來源與時區"
1456
1695
 
1457
1696
  #. @context: Breadcrumb label
1458
1697
  #. @context: Settings item — navigation settings
@@ -1461,6 +1700,11 @@ msgstr "名稱, 中繼資料, 語言, 和 搜尋預設值"
1461
1700
  msgid "Navigation"
1462
1701
  msgstr "導覽列"
1463
1702
 
1703
+ #. @context: Shown for a page on the site that can only be a link, such as an archive URL
1704
+ #: src/ui/dash/appearance/NavigationContent.tsx
1705
+ msgid "Navigation holds that address as a link."
1706
+ msgstr "導覽會將該位址儲存為連結。"
1707
+
1464
1708
  #. @context: Section heading for nav items
1465
1709
  #: src/ui/dash/appearance/NavigationContent.tsx
1466
1710
  msgid "Navigation items"
@@ -1533,15 +1777,17 @@ msgstr "目前還沒有選集。在這裡建立一個並加入導覽。"
1533
1777
  #. @context: Empty state message
1534
1778
  #: src/routes/dash/custom-urls.tsx
1535
1779
  msgid "No custom URLs yet. Create one to add redirects or custom paths for posts."
1536
- msgstr "尚未有自訂 URL。建立一個自訂 URL 以為文章新增重新導向或自訂路徑。"
1780
+ msgstr "還沒有自訂 URL。建立一個,給貼文加重新導向或自訂路徑。"
1537
1781
 
1538
1782
  #. @context: Error toast when no file was selected for upload
1539
1783
  #: src/routes/dash/settings.tsx
1540
1784
  msgid "No file selected. Choose a file to upload."
1541
1785
  msgstr "未選取檔案。請選擇要上傳的檔案。"
1542
1786
 
1543
- #. @context: Empty state shown when the language search filters out every entry
1544
- #: src/ui/dash/settings/GeneralContent.tsx
1787
+ #. @context: Empty state in the language picker
1788
+ #. @context: Empty state in the language picker
1789
+ #: src/routes/auth/setup.tsx
1790
+ #: src/ui/dash/settings/LanguageContent.tsx
1545
1791
  msgid "No matches."
1546
1792
  msgstr "無相符結果。"
1547
1793
 
@@ -1563,7 +1809,12 @@ msgstr "沒有可加入的頁面。建立頁面後即可加入導覽。"
1563
1809
  #. @context: GitHub sync picker — empty state when search returns nothing
1564
1810
  #: src/routes/dash/settings.tsx
1565
1811
  msgid "No repositories match."
1566
- msgstr "沒有符合的儲存庫."
1812
+ msgstr "沒有符合的儲存庫。"
1813
+
1814
+ #. @context: Discover status line before the site has ever announced itself. The button under the lines is how it is sent.
1815
+ #: src/ui/dash/settings/GeneralContent.tsx
1816
+ msgid "Not announced yet. No directory has been told this site exists."
1817
+ msgstr "尚未提交。還沒有目錄知道這個網站存在。"
1567
1818
 
1568
1819
  #. @context: Config Editor linked setting status
1569
1820
  #. @context: Config Editor linked setting status
@@ -1584,48 +1835,83 @@ msgstr "尚未同步"
1584
1835
  msgid "Note"
1585
1836
  msgstr "筆記"
1586
1837
 
1838
+ #. @context: Shown when a pasted address matches no page on the site
1839
+ #: src/ui/dash/appearance/NavigationContent.tsx
1840
+ msgid "Nothing at {address}. Check it, or search by title."
1841
+ msgstr "在 {address} 找不到任何頁面。請檢查位址,或以標題搜尋。"
1842
+
1587
1843
  #. @context: Config Editor empty search state
1588
1844
  #: src/ui/dash/settings/ConfigEditorContent.tsx
1589
1845
  msgid "Nothing matches this search. Try a different name or description."
1590
1846
  msgstr "沒有任何項目符合此搜尋。請嘗試不同的名稱或描述。"
1591
1847
 
1848
+ #. @context: Discover status line when the site does not meet the directory's threshold yet. Stated as jant.me's rule, because a directory of your own may decide differently.
1849
+ #: src/ui/dash/settings/GeneralContent.tsx
1850
+ msgid "Nothing published yet. jant.me lists a blog once it has {minCount, plural, one {one public post} other {# public posts}}."
1851
+ msgstr "還沒有公開貼文。jant.me 的收錄條件是{minCount, plural, other {滿 # 篇}}。"
1852
+
1592
1853
  #. @context: Tufte color theme preview body
1593
1854
  #: src/ui/dash/appearance/ColorThemeContent.tsx
1594
1855
  msgid "Off-white paper with a deep forest-green accent."
1595
1856
  msgstr "米白紙底,配深森綠。"
1596
1857
 
1858
+ #. @context: Status badge — multilingual content is on
1859
+ #: src/ui/dash/settings/LanguageContent.tsx
1860
+ msgid "On"
1861
+ msgstr "已啟用"
1862
+
1863
+ #. @context: Title of the stamping warning in the multilingual dialog
1864
+ #: src/ui/dash/settings/LanguageContent.tsx
1865
+ msgid "One-time change to your existing posts"
1866
+ msgstr "啟用時會一次性標記既有貼文"
1867
+
1597
1868
  #. @context: Caption inside the manual Telegram binding fallback. {linkOpen}/{linkClose} wrap the bot username as a t.me link — keep them around the @username token in translations.
1598
1869
  #: src/ui/dash/settings/TelegramContent.tsx
1599
1870
  msgid "Open {linkOpen}@{botUsername}{linkClose} and send:"
1600
- msgstr "開啟 {linkOpen}@{botUsername}{linkClose} 並傳送:"
1871
+ msgstr "啟用 {linkOpen}@{botUsername}{linkClose} 並傳送:"
1601
1872
 
1602
1873
  #. @context: Config Editor link to a dedicated settings page
1603
1874
  #. @context: Config Editor link to a dedicated settings page
1604
1875
  #: src/ui/dash/settings/ConfigEditorContent.tsx
1605
1876
  #: src/ui/dash/settings/ConfigEditorContent.tsx
1606
1877
  msgid "Open setting"
1607
- msgstr "開啟設定"
1878
+ msgstr "啟用設定"
1608
1879
 
1609
1880
  #. @context: Button that opens the Telegram bot via a deep link
1610
1881
  #: src/ui/dash/settings/TelegramContent.tsx
1611
1882
  msgid "Open Telegram to connect"
1612
- msgstr "開啟 Telegram 以連線"
1883
+ msgstr "啟用 Telegram 以連線"
1613
1884
 
1614
1885
  #. @context: Instructions on the Telegram settings page for connecting an account
1615
1886
  #: src/ui/dash/settings/TelegramContent.tsx
1616
1887
  msgid "Open the bot and send the binding code, then anything you message it becomes a note."
1617
- msgstr "開啟機器人並傳送綁定碼,之後你傳給它的任何訊息都會成為筆記。"
1888
+ msgstr "啟用機器人並傳送綁定碼,之後你傳給它的任何訊息都會成為筆記。"
1889
+
1890
+ #. @context: Accessible label on a language row's actions menu trigger
1891
+ #: src/ui/dash/settings/LanguageContent.tsx
1892
+ msgid "Options for {language}"
1893
+ msgstr "{language}的操作"
1618
1894
 
1619
1895
  #. @context: Separator between the QR code and the deep-link button on the Telegram connect page
1620
1896
  #: src/ui/dash/settings/TelegramContent.tsx
1621
1897
  msgid "or"
1622
1898
  msgstr "或"
1623
1899
 
1900
+ #. @context: Link to the directory's manual submission form, shown only when the automatic announcement failed
1901
+ #: src/ui/dash/settings/GeneralContent.tsx
1902
+ msgid "Or submit your address by hand"
1903
+ msgstr "或手動提交網址"
1904
+
1624
1905
  #. @context: Ember color theme preview body
1625
1906
  #: src/ui/dash/appearance/ColorThemeContent.tsx
1626
1907
  msgid "Orange-tinted background. The warmest palette."
1627
1908
  msgstr "帶橘調的底色。最暖的一套。"
1628
1909
 
1910
+ #. @context: Label for the list of non-primary languages
1911
+ #: src/ui/dash/settings/LanguageContent.tsx
1912
+ msgid "Other languages"
1913
+ msgstr "其他語言"
1914
+
1629
1915
  #. @context: GitHub sync picker — placeholder text showing the expected input shape
1630
1916
  #: src/routes/dash/settings.tsx
1631
1917
  msgid "owner/repo"
@@ -1673,6 +1959,8 @@ msgstr "調色盤、表面色調與整體氛圍"
1673
1959
 
1674
1960
  #. @context: Breadcrumb label
1675
1961
  #. @context: Settings item — password settings
1962
+ #. @context: Setup/signin form field - password
1963
+ #: src/routes/auth/setup.tsx
1676
1964
  #: src/routes/dash/settings.tsx
1677
1965
  #: src/ui/dash/settings/AccountMenuContent.tsx
1678
1966
  msgid "Password"
@@ -1681,7 +1969,7 @@ msgstr "密碼"
1681
1969
  #. @context: Toast after changing account password
1682
1970
  #: src/routes/dash/settings.tsx
1683
1971
  msgid "Password changed."
1684
- msgstr "密碼已變更."
1972
+ msgstr "密碼已變更。"
1685
1973
 
1686
1974
  #. @context: Error shown when password changes are blocked in demo mode
1687
1975
  #: src/routes/dash/settings.tsx
@@ -1738,13 +2026,33 @@ msgstr "已釘選"
1738
2026
  #: src/routes/dash/custom-urls.tsx
1739
2027
  #: src/routes/dash/custom-urls.tsx
1740
2028
  msgid "Post"
1741
- msgstr "文章"
2029
+ msgstr "貼文"
2030
+
2031
+ #. @context: Reassurance line at the bottom of the multilingual dialog
2032
+ #: src/ui/dash/settings/LanguageContent.tsx
2033
+ msgid "Post addresses do not change, and you can turn this off again at any time."
2034
+ msgstr "所有貼文的網址都不會改變,也可以隨時再關閉。"
1742
2035
 
1743
2036
  #. @context: Settings item description for Telegram integration
1744
2037
  #: src/ui/dash/settings/SettingsRootContent.tsx
1745
2038
  msgid "Post notes by messaging a Telegram bot"
1746
2039
  msgstr "透過向 Telegram 機器人傳送訊息來發佈筆記"
1747
2040
 
2041
+ #. @context: Badge on the language served at the root address
2042
+ #: src/ui/dash/settings/LanguageContent.tsx
2043
+ msgid "Primary"
2044
+ msgstr "主語言"
2045
+
2046
+ #. @context: Label the content language field takes once multilingual is on
2047
+ #: src/ui/dash/settings/LanguageContent.tsx
2048
+ msgid "Primary language"
2049
+ msgstr "主要語言"
2050
+
2051
+ #. @context: Toast after changing the primary language
2052
+ #: src/routes/dash/settings.tsx
2053
+ msgid "Primary language changed."
2054
+ msgstr "主要語言已變更。"
2055
+
1748
2056
  #. @context: GitHub sync picker — badge next to private repos
1749
2057
  #: src/routes/dash/settings.tsx
1750
2058
  msgid "Private"
@@ -1778,28 +2086,18 @@ msgstr "純白底配中性灰。不帶任何色偏。"
1778
2086
  #. @context: Description for manual push action on GitHub Sync settings
1779
2087
  #: src/ui/dash/settings/GitHubSyncContent.tsx
1780
2088
  msgid "Push all posts to GitHub right now instead of waiting for the next automatic sync."
1781
- msgstr "立即將所有文章推送到 GitHub,而不是等待下一次自動同步。"
2089
+ msgstr "立即將所有貼文推送到 GitHub,而不是等待下一次自動同步。"
1782
2090
 
1783
2091
  #. @context: Accessible label for the Telegram connect QR code
1784
2092
  #: src/ui/dash/settings/TelegramContent.tsx
1785
2093
  msgid "QR code linking to the Telegram bot"
1786
2094
  msgstr "連結至 Telegram 機器人的 QR 碼"
1787
2095
 
1788
- #. @context: Archive custom URL query params field
1789
- #: src/routes/dash/custom-urls.tsx
1790
- msgid "Query Parameters"
1791
- msgstr "查詢參數"
1792
-
1793
2096
  #. @context: Post format badge - quote
1794
2097
  #: src/ui/dash/FormatBadge.tsx
1795
2098
  msgid "Quote"
1796
2099
  msgstr "引用"
1797
2100
 
1798
- #. @context: Lead text before a live <html lang> preview of the content language
1799
- #: src/ui/dash/settings/GeneralContent.tsx
1800
- msgid "Readers and search engines see"
1801
- msgstr "讀者和搜尋引擎看到的是"
1802
-
1803
2101
  #. @context: Heading above recent pages in the page picker
1804
2102
  #: src/ui/dash/appearance/NavigationContent.tsx
1805
2103
  msgid "Recently updated"
@@ -1834,6 +2132,16 @@ msgstr "重新整理儲存庫清單"
1834
2132
  msgid "Remove"
1835
2133
  msgstr "移除"
1836
2134
 
2135
+ #. @context: Accessible label on the button removing a language
2136
+ #: src/ui/dash/settings/LanguageContent.tsx
2137
+ msgid "Remove {language}"
2138
+ msgstr "移除「{language}」"
2139
+
2140
+ #. @context: Confirm button when removing the last additional language
2141
+ #: src/ui/dash/settings/LanguageContent.tsx
2142
+ msgid "Remove and turn off"
2143
+ msgstr "移除並關閉"
2144
+
1837
2145
  #. @context: Button to remove the saved Telegram bot token
1838
2146
  #: src/ui/dash/settings/TelegramContent.tsx
1839
2147
  msgid "Remove bot"
@@ -1847,12 +2155,12 @@ msgstr "移除已儲存的機器人權杖?其 webhook 會被刪除,任何已
1847
2155
  #. @context: Description for disconnect action on GitHub Sync settings
1848
2156
  #: src/ui/dash/settings/GitHubSyncContent.tsx
1849
2157
  msgid "Remove the webhook and stop syncing. Your repository content will not be deleted."
1850
- msgstr "移除 webhook 並停止同步。您的儲存庫內容不會被刪除。"
2158
+ msgstr "移除 webhook 並停止同步。你的儲存庫內容不會被刪除。"
1851
2159
 
1852
2160
  #. @context: Confirm dialog for removing the blog avatar
1853
2161
  #: src/ui/dash/settings/AvatarContent.tsx
1854
2162
  msgid "Remove this avatar? Your favicon and header icon will go back to the default."
1855
- msgstr "移除這個頭像?您的 favicon 與頁首圖示會回復為預設。"
2163
+ msgstr "移除這個頭像?你的 favicon 與頁首圖示會回復為預設。"
1856
2164
 
1857
2165
  #. @context: Confirm dialog for removing a collection nav item
1858
2166
  #: src/ui/dash/appearance/NavigationContent.tsx
@@ -1914,10 +2222,12 @@ msgstr "沙色底,配綠色點綴。"
1914
2222
  #. @context: Button to save settings
1915
2223
  #. @context: Button to save settings changes
1916
2224
  #. @context: Save nav item changes
2225
+ #. @context: Settings save button
1917
2226
  #: src/ui/dash/appearance/CodeInjectionContent.tsx
1918
2227
  #: src/ui/dash/appearance/NavigationContent.tsx
1919
2228
  #: src/ui/dash/settings/AvatarContent.tsx
1920
2229
  #: src/ui/dash/settings/GeneralContent.tsx
2230
+ #: src/ui/dash/settings/LanguageContent.tsx
1921
2231
  msgid "Save"
1922
2232
  msgstr "儲存"
1923
2233
 
@@ -1937,25 +2247,32 @@ msgid "Saved"
1937
2247
  msgstr "已儲存"
1938
2248
 
1939
2249
  #. @context: Config Editor row save status
2250
+ #. @context: Settings save in progress
1940
2251
  #: src/ui/dash/settings/ConfigEditorContent.tsx
2252
+ #: src/ui/dash/settings/LanguageContent.tsx
1941
2253
  msgid "Saving…"
1942
2254
  msgstr "儲存中…"
1943
2255
 
1944
- #. @context: Settings section heading for search engine indexing settings
1945
- #: src/ui/dash/settings/GeneralContent.tsx
1946
- msgid "Search"
1947
- msgstr "搜尋"
1948
-
1949
2256
  #. @context: Config Editor page description
1950
2257
  #: src/ui/dash/settings/ConfigEditorContent.tsx
1951
2258
  msgid "Search and edit runtime settings. Changes apply immediately; reset restores the environment or built-in default."
1952
2259
  msgstr "搜尋和編輯執行階段設定。變更會立即生效;重設會恢復環境變數或內建預設值。"
1953
2260
 
2261
+ #. @context: Shown under the Jant Discover checkbox when the site has turned search engines away and has never answered Discover itself, which is what unticks the box. Says why the box moved, and that it is still the owner's to tick.
2262
+ #: src/ui/dash/settings/GeneralContent.tsx
2263
+ msgid "Search engine indexing is off, so this site is not listed by default. Ticking the box above lists it anyway."
2264
+ msgstr "已關閉搜尋引擎索引,所以預設不會出現在 Jant Discover。勾選上面的選項仍會加入。"
2265
+
1954
2266
  #. @context: Placeholder for the navigation page search
1955
2267
  #: src/ui/dash/appearance/NavigationContent.tsx
1956
2268
  msgid "Search pages"
1957
2269
  msgstr "搜尋頁面"
1958
2270
 
2271
+ #. @context: Placeholder for the navigation page search, which also accepts a pasted URL or path
2272
+ #: src/ui/dash/appearance/NavigationContent.tsx
2273
+ msgid "Search pages, or paste an address"
2274
+ msgstr "搜尋頁面,或貼上位址"
2275
+
1959
2276
  #. @context: GitHub sync picker — search input placeholder
1960
2277
  #: src/routes/dash/settings.tsx
1961
2278
  msgid "Search repositories"
@@ -1964,7 +2281,7 @@ msgstr "搜尋儲存庫"
1964
2281
  #. @context: Settings item description for Config Editor
1965
2282
  #: src/ui/dash/settings/SettingsRootContent.tsx
1966
2283
  msgid "Search runtime settings and open advanced configuration"
1967
- msgstr "搜尋執行階段設定並開啟進階設定"
2284
+ msgstr "搜尋執行階段設定並啟用進階設定"
1968
2285
 
1969
2286
  #. @context: Config Editor search input placeholder
1970
2287
  #. @context: Config Editor search input placeholder
@@ -1980,8 +2297,10 @@ msgstr "搜尋設定"
1980
2297
  msgid "Search settings updated."
1981
2298
  msgstr "搜尋設定已更新。"
1982
2299
 
1983
- #. @context: Placeholder inside the language combobox search field
1984
- #: src/ui/dash/settings/GeneralContent.tsx
2300
+ #. @context: Placeholder in the language picker search box
2301
+ #. @context: Placeholder in the language picker search box
2302
+ #: src/routes/auth/setup.tsx
2303
+ #: src/ui/dash/settings/LanguageContent.tsx
1985
2304
  msgid "Search…"
1986
2305
  msgstr "搜尋…"
1987
2306
 
@@ -2008,7 +2327,7 @@ msgstr "找不到安全權杖。請重新整理頁面後再試一次。"
2008
2327
  #. @context: Settings item description for sessions
2009
2328
  #: src/ui/dash/settings/AccountMenuContent.tsx
2010
2329
  msgid "See where you're signed in and revoke old sessions"
2011
- msgstr "查看您在哪裡已登入,並撤銷舊的工作階段"
2330
+ msgstr "查看你在哪裡已登入,並撤銷舊的工作階段"
2012
2331
 
2013
2332
  #. @context: GitHub sync picker — repo dropdown placeholder
2014
2333
  #: src/routes/dash/settings.tsx
@@ -2047,6 +2366,11 @@ msgstr "設定每頁搜尋結果數;重設後繼承預設分頁大小。"
2047
2366
  msgid "Set the default number of items shown per page."
2048
2367
  msgstr "設定預設每頁顯示的項目數。"
2049
2368
 
2369
+ #. @context: Setup heading on the second self-hosted screen, which asks for the site's name and language
2370
+ #: src/routes/auth/setup.tsx
2371
+ msgid "Set up your site"
2372
+ msgstr "設定你的網站"
2373
+
2050
2374
  #. @context: Breadcrumb label
2051
2375
  #. @context: Page title for the settings home page
2052
2376
  #: src/routes/dash/settings.tsx
@@ -2054,6 +2378,11 @@ msgstr "設定預設每頁顯示的項目數。"
2054
2378
  msgid "Settings"
2055
2379
  msgstr "設定"
2056
2380
 
2381
+ #. @context: Name of the first-run setup screen — shown above the setup card and as the browser tab title
2382
+ #: src/routes/auth/setup.tsx
2383
+ msgid "Setup"
2384
+ msgstr "初始設定"
2385
+
2057
2386
  #. @context: Checkbox for showing the optional Jant credit link on the home page
2058
2387
  #: src/ui/dash/settings/GeneralContent.tsx
2059
2388
  msgid "Show \"Build with Jant\" at the bottom of the home page"
@@ -2084,6 +2413,11 @@ msgstr "在公開標頭顯示網站頭像。"
2084
2413
  msgid "Showing {shown} of {total}"
2085
2414
  msgstr "顯示 {shown} 共 {total}"
2086
2415
 
2416
+ #. @context: Description for the settings system navigation toggle
2417
+ #: src/ui/dash/appearance/system-nav-descriptions.ts
2418
+ msgid "Shows 'Settings' when logged in, 'Sign in' when logged out"
2419
+ msgstr "登入後顯示「設定」,未登入時顯示「登入」。"
2420
+
2087
2421
  #. @context: Settings link — sign out action
2088
2422
  #: src/ui/dash/settings/SettingsRootContent.tsx
2089
2423
  msgid "Sign Out"
@@ -2099,9 +2433,11 @@ msgstr "登入、匯出和刪除"
2099
2433
  msgid "Signed in {date}"
2100
2434
  msgstr "已於 {date} 登入"
2101
2435
 
2436
+ #. @context: Language settings section for reader-facing settings
2102
2437
  #. @context: Settings group label for site settings
2103
2438
  #. @context: Settings subsection heading for basic site fields
2104
2439
  #: src/ui/dash/settings/GeneralContent.tsx
2440
+ #: src/ui/dash/settings/LanguageContent.tsx
2105
2441
  #: src/ui/dash/settings/SettingsRootContent.tsx
2106
2442
  msgid "Site"
2107
2443
  msgstr "網站"
@@ -2119,6 +2455,8 @@ msgid "Site Header"
2119
2455
  msgstr "網站頁首"
2120
2456
 
2121
2457
  #. @context: Settings form field
2458
+ #. @context: Setup form field - site name
2459
+ #: src/routes/auth/setup.tsx
2122
2460
  #: src/ui/dash/settings/GeneralContent.tsx
2123
2461
  msgid "Site Name"
2124
2462
  msgstr "網站名稱"
@@ -2126,7 +2464,19 @@ msgstr "網站名稱"
2126
2464
  #. @context: Toast after saving site settings
2127
2465
  #: src/routes/dash/settings.tsx
2128
2466
  msgid "Site settings updated."
2129
- msgstr "網站設定已更新."
2467
+ msgstr "網站設定已更新。"
2468
+
2469
+ #. @context: Settings section heading covering search engine indexing and the Jant Discover directory
2470
+ #: src/ui/dash/settings/GeneralContent.tsx
2471
+ msgid "Site visibility"
2472
+ msgstr "網站可見性"
2473
+
2474
+ #. @context: Toast after saving the site visibility settings
2475
+ #. @context: Toast after saving the site visibility settings
2476
+ #: src/routes/dash/settings.tsx
2477
+ #: src/routes/dash/settings.tsx
2478
+ msgid "Site visibility updated."
2479
+ msgstr "網站可見性已更新。"
2130
2480
 
2131
2481
  #. @context: Settings item description for code injection
2132
2482
  #: src/ui/dash/settings/SettingsRootContent.tsx
@@ -2148,16 +2498,36 @@ msgstr "柔綠"
2148
2498
  msgid "Soft ivory"
2149
2499
  msgstr "柔象牙白"
2150
2500
 
2501
+ #. @context: Fallback validation error for setup form
2502
+ #: src/routes/auth/setup.tsx
2503
+ msgid "Something doesn't look right. Check the form and try again."
2504
+ msgstr "有欄位填寫不正確,檢查後重試。"
2505
+
2506
+ #. @context: Setup submit button on the last screen, after which the site is live
2507
+ #: src/routes/auth/setup.tsx
2508
+ msgid "Start writing"
2509
+ msgstr "開始寫作"
2510
+
2511
+ #. @context: How far along first-run setup is, shown beside the screen's name on a self-hosted install
2512
+ #: src/routes/auth/setup.tsx
2513
+ msgid "Step {current} of {total}"
2514
+ msgstr "第 {current} 步,共 {total} 步"
2515
+
2151
2516
  #. @context: Description for the Telegram disconnect action
2152
2517
  #: src/ui/dash/settings/TelegramContent.tsx
2153
2518
  msgid "Stop accepting posts from Telegram. Your existing notes stay published."
2154
- msgstr "停止接受來自 Telegram 的貼文。您現有的筆記會保持已發佈。"
2519
+ msgstr "停止接受來自 Telegram 的貼文。你現有的筆記會保持已發佈。"
2155
2520
 
2156
2521
  #. @context: Section heading for suggested nav links
2157
2522
  #: src/ui/dash/appearance/NavigationContent.tsx
2158
2523
  msgid "Suggested links"
2159
2524
  msgstr "建議新增的連結"
2160
2525
 
2526
+ #. @context: Confirm button in the change-primary-language dialog
2527
+ #: src/ui/dash/settings/LanguageContent.tsx
2528
+ msgid "Switch"
2529
+ msgstr "切換"
2530
+
2161
2531
  #. @context: Button to trigger a full content push to GitHub on GitHub Sync settings
2162
2532
  #: src/ui/dash/settings/GitHubSyncContent.tsx
2163
2533
  msgid "Sync Now"
@@ -2199,6 +2569,11 @@ msgstr "已設定 Telegram,但無法連線到機器人。請檢查機器人權
2199
2569
  msgid "That address is already in use. Choose another one."
2200
2570
  msgstr "此網址已被使用。請選擇其他網址。"
2201
2571
 
2572
+ #. @context: Shown when a pasted address points off the site
2573
+ #: src/ui/dash/appearance/NavigationContent.tsx
2574
+ msgid "That address is on another site. Navigation holds it as a link."
2575
+ msgstr "該位址位於其他網站。Navigation 將其視為連結。"
2576
+
2202
2577
  #. @context: Validation error for a reserved page slug
2203
2578
  #: src/ui/dash/appearance/NavigationContent.tsx
2204
2579
  msgid "That address is reserved. Choose another one."
@@ -2207,7 +2582,22 @@ msgstr "此網址為保留網址。請選擇其他網址。"
2207
2582
  #. @context: Error toast when selected font theme is not valid
2208
2583
  #: src/routes/dash/settings.tsx
2209
2584
  msgid "That font theme isn't available. Pick another one."
2210
- msgstr "該字型主題無法使用. 請選擇其他主題."
2585
+ msgstr "該字型主題無法使用。請選擇其他主題。"
2586
+
2587
+ #. @context: Shown when a pasted address resolves to an untitled post
2588
+ #: src/ui/dash/appearance/NavigationContent.tsx
2589
+ msgid "That page has no title yet, so a menu has nothing to show."
2590
+ msgstr "該頁面尚未有標題,因此選單沒有可顯示的項目。"
2591
+
2592
+ #. @context: Shown when a pasted address resolves to a draft
2593
+ #: src/ui/dash/appearance/NavigationContent.tsx
2594
+ msgid "That page is a draft. Publish it, then add it."
2595
+ msgstr "該頁面為草稿。請先發佈,然後再加入。"
2596
+
2597
+ #. @context: Shown when a pasted address resolves to a private page
2598
+ #: src/ui/dash/appearance/NavigationContent.tsx
2599
+ msgid "That page is private, so nobody could open it from a menu."
2600
+ msgstr "該頁面為私人頁面,因此沒有人能從選單開啟它。"
2211
2601
 
2212
2602
  #. @context: Error toast when selected theme is not valid
2213
2603
  #: src/routes/dash/settings.tsx
@@ -2224,20 +2614,35 @@ msgstr "最乾淨、最中性的一檔。"
2224
2614
  msgid "The default. Calm and easy for long reading."
2225
2615
  msgstr "預設主題。沉靜,適合長時間閱讀。"
2226
2616
 
2227
- #. @context: Help text under the dashboard language picker
2617
+ #. @context: Discover status line when the announcement failed. {reason} is the error, such as an HTTP status or a network message.
2228
2618
  #: src/ui/dash/settings/GeneralContent.tsx
2229
- msgid "The language this admin dashboard shows in. Available in English, 简体中文, and 繁體中文."
2230
- msgstr "後台介面顯示的語言。可選 English、简体中文 和 繁體中文。"
2619
+ msgid "The directory could not be reached: {reason}"
2620
+ msgstr "無法連線目錄:{reason}"
2621
+
2622
+ #. @context: Help text for the dashboard language field
2623
+ #: src/ui/dash/settings/LanguageContent.tsx
2624
+ msgid "The language of your admin pages. Only you see this."
2625
+ msgstr "管理後台的顯示語言,只有你看得到。"
2231
2626
 
2232
2627
  #. @context: Config Editor setting description
2233
2628
  #: src/ui/dash/settings/ConfigEditorContent.tsx
2234
2629
  msgid "The language used by the private Jant dashboard."
2235
2630
  msgstr "私人 Jant 儀表板使用的語言。"
2236
2631
 
2237
- #. @context: Help text under the content language picker
2238
- #: src/ui/dash/settings/GeneralContent.tsx
2239
- msgid "The language your posts are written in. Announced to readers and search engines through HTML lang and your RSS feed. Any BCP 47 tag works."
2240
- msgstr "你撰寫內容所用的語言。透過 HTML lang 和 RSS 向讀者與搜尋引擎宣告。支援任意 BCP 47 標籤。"
2632
+ #. @context: Help text for the content language field
2633
+ #: src/ui/dash/settings/LanguageContent.tsx
2634
+ msgid "The language you write in."
2635
+ msgstr "你寫作使用的語言。"
2636
+
2637
+ #. @context: Setup form help text under the content language field
2638
+ #: src/routes/auth/setup.tsx
2639
+ msgid "The language your readers and search engines see."
2640
+ msgstr "搜尋引擎看到的語言。"
2641
+
2642
+ #. @context: Config Editor linked setting description
2643
+ #: src/ui/dash/settings/ConfigEditorContent.tsx
2644
+ msgid "The languages served under a URL prefix. Managed on the Language page."
2645
+ msgstr "以網址前綴提供的語言。在「語言」頁管理。"
2241
2646
 
2242
2647
  #. @context: Linen color theme preview help line
2243
2648
  #: src/ui/dash/appearance/ColorThemeContent.tsx
@@ -2249,15 +2654,20 @@ msgstr "Jant 最初的配色,日常穩妥之選。"
2249
2654
  msgid "The page is public but stays out of Latest."
2250
2655
  msgstr "頁面是公開的,但不會出現在 Latest。"
2251
2656
 
2252
- #. @context: Config Editor setting description
2253
- #: src/ui/dash/settings/ConfigEditorContent.tsx
2254
- msgid "The serif fallback used when the content language has no built-in profile."
2255
- msgstr "當內容語言沒有內建設定檔時使用的襯線備援字型。"
2657
+ #. @context: Help text for the primary language field
2658
+ #: src/ui/dash/settings/LanguageContent.tsx
2659
+ msgid "The root address (/, /feed) shows this language."
2660
+ msgstr "根位址(/、/feed)顯示這個語言的內容。"
2661
+
2662
+ #. @context: Body of the disable-multilingual dialog
2663
+ #: src/ui/dash/settings/LanguageContent.tsx
2664
+ msgid "The root address goes back to showing every language, and addresses like {prefix} redirect to it, so existing links and feed subscriptions keep working. Post addresses and each post's language are unchanged, so you can turn this back on any time."
2665
+ msgstr "根位址將恢復顯示所有語言,{prefix} 這類位址會重新導向到它,既有的連結和訂閱仍然有效。貼文網址和每篇貼文的語言都不受影響,隨時可以重新啟用。"
2256
2666
 
2257
2667
  #. @context: Custom URL target slug help text
2258
2668
  #: src/routes/dash/custom-urls.tsx
2259
2669
  msgid "The slug of the target post or collection"
2260
- msgstr "目標文章或選集的 slug"
2670
+ msgstr "目標貼文或選集的 slug"
2261
2671
 
2262
2672
  #. @context: Config Editor setting description
2263
2673
  #: src/ui/dash/settings/ConfigEditorContent.tsx
@@ -2272,7 +2682,7 @@ msgstr "主題指南"
2272
2682
  #. @context: Description for session management
2273
2683
  #: src/ui/dash/settings/SessionsContent.tsx
2274
2684
  msgid "These devices are currently signed in to your account. Revoke any session you don't recognize."
2275
- msgstr "這些裝置目前已登入您的帳號。撤銷任何您不認識的工作階段。"
2685
+ msgstr "這些裝置目前已登入你的帳號。撤銷任何你不認識的工作階段。"
2276
2686
 
2277
2687
  #. @context: Generic fallback blog name in the delete-account confirmation phrase when the site name is unavailable
2278
2688
  #: src/ui/dash/settings/DeleteAccountContent.tsx
@@ -2282,7 +2692,7 @@ msgstr "此部落格"
2282
2692
  #. @context: Code Injection security warning headline
2283
2693
  #: src/ui/dash/appearance/CodeInjectionContent.tsx
2284
2694
  msgid "This code runs on every page of your site."
2285
- msgstr "此程式碼會在您網站的每個頁面上執行。"
2695
+ msgstr "此程式碼會在你網站的每個頁面上執行。"
2286
2696
 
2287
2697
  #. @context: Help text for choosing whether /feed points to latest or featured posts
2288
2698
  #: src/ui/dash/settings/GeneralContent.tsx
@@ -2302,7 +2712,7 @@ msgstr "這是選集連結的最後一部分。"
2302
2712
  #. @context: Help text for avatar upload
2303
2713
  #: src/ui/dash/settings/AvatarContent.tsx
2304
2714
  msgid "This is used for your favicon and apple-touch-icon. For best results, upload a square PNG with a solid background at least 512x512 pixels."
2305
- msgstr "此圖會用於您的 favicon 和 apple-touch-icon。為達最佳效果,請上傳至少 512x512 像素、背景為純色的正方形 PNG。"
2715
+ msgstr "此圖會用於你的 favicon 和 apple-touch-icon。為達最佳效果,請上傳至少 512x512 像素、背景為純色的正方形 PNG。"
2306
2716
 
2307
2717
  #. @context: Reserved collection slug error in Navigation settings
2308
2718
  #: src/ui/dash/appearance/NavigationContent.tsx
@@ -2327,7 +2737,7 @@ msgstr "此儲存庫已有內容。"
2327
2737
  #. @context: GitHub sync picker — blocking message when marker belongs to another site. Placeholder {host} is the other site's host.
2328
2738
  #: src/routes/dash/settings.tsx
2329
2739
  msgid "This repository is already backing up another Jant site ({host}). Pick a different repository."
2330
- msgstr "此儲存庫已在備份另一個 Jant 網站 ({host}). 請選擇其他儲存庫."
2740
+ msgstr "此儲存庫已在備份另一個 Jant 網站 ({host}). 請選擇其他儲存庫。"
2331
2741
 
2332
2742
  #. @context: GitHub sync picker — shown when the selected repo's marker matches this site
2333
2743
  #: src/routes/dash/settings.tsx
@@ -2339,16 +2749,41 @@ msgstr "此儲存庫已在備份本網站。"
2339
2749
  msgid "This setting wasn't saved. Check the value and try again."
2340
2750
  msgstr "此設定未儲存。請檢查設定值並再試一次。"
2341
2751
 
2752
+ #. @context: Toast when the Discover announcement cannot be sent because no directory is configured, or the site cannot be listed at all
2753
+ #: src/routes/dash/settings.tsx
2754
+ msgid "This site has no directory to announce to."
2755
+ msgstr "這個站點沒有可提交的目錄。"
2756
+
2757
+ #. @context: Discover status line for a site that chose the old featured-only mode and has no featured posts. Says how to move to the current setting, which reads every public post.
2758
+ #: src/ui/dash/settings/GeneralContent.tsx
2759
+ msgid "This site still limits Discover to featured posts, and no post is marked Featured, so your feed carries nothing to show. Untick and tick the box to let Discover read every public post."
2760
+ msgstr "目前仍只向 Discover 提供精選貼文,但沒有任何貼文標為 Featured,訂閱源裡沒有可顯示的內容。取消勾選再重新勾選,即可讓 Discover 讀取全部公開貼文。"
2761
+
2342
2762
  #. @context: Warning text on account deletion page
2343
2763
  #: src/ui/dash/settings/DeleteAccountContent.tsx
2344
2764
  msgid "This will permanently delete all your data — posts, media, collections, settings, and your account. Your blog will be reset to its initial setup state. This cannot be undone."
2345
- msgstr "這會永久刪除您所有的資料 — 文章、媒體、選集、設定,以及您的帳戶。您的部落格將被重設為初始設定狀態。此操作無法復原。"
2765
+ msgstr "這會永久刪除你的全部資料——貼文、媒體、選集、設定和帳戶。部落格會重設為初始設定狀態。此操作無法復原。"
2766
+
2767
+ #. @context: Config Editor archive layout enum option
2768
+ #: src/ui/dash/settings/ConfigEditorContent.tsx
2769
+ msgid "Tile grid"
2770
+ msgstr "卡片網格"
2771
+
2772
+ #. @context: Settings subsection heading for the time zone field
2773
+ #: src/ui/dash/settings/GeneralContent.tsx
2774
+ msgid "Time"
2775
+ msgstr "時間"
2346
2776
 
2347
2777
  #. @context: Settings form field
2348
2778
  #: src/ui/dash/settings/GeneralContent.tsx
2349
2779
  msgid "Time Zone"
2350
2780
  msgstr "時區"
2351
2781
 
2782
+ #. @context: Toast after saving the time zone
2783
+ #: src/routes/dash/settings.tsx
2784
+ msgid "Time zone updated."
2785
+ msgstr "時區已更新。"
2786
+
2352
2787
  #. @context: Collection title field in Navigation settings
2353
2788
  #. @context: Title field label in quick page creation
2354
2789
  #: src/ui/dash/appearance/NavigationContent.tsx
@@ -2369,7 +2804,7 @@ msgstr "權杖名稱 (API 權杖名稱欄位。)"
2369
2804
  #. @context: API tokens description
2370
2805
  #: src/ui/dash/settings/ApiTokensContent.tsx
2371
2806
  msgid "Tokens let you access the API from scripts, shortcuts, and other tools without signing in."
2372
- msgstr "權杖讓您從腳本, 捷徑和其他工具存取 API 無需登入"
2807
+ msgstr "權杖讓你從腳本,捷徑和其他工具存取 API 無需登入"
2373
2808
 
2374
2809
  #. @context: GitHub sync picker — retry button
2375
2810
  #: src/routes/dash/settings.tsx
@@ -2379,7 +2814,29 @@ msgstr "重試"
2379
2814
  #. @context: Intro text on the settings home page below the title
2380
2815
  #: src/ui/dash/settings/SettingsRootContent.tsx
2381
2816
  msgid "Tune how your site looks, reads, and runs."
2382
- msgstr "調整您的網站外觀、可讀性與執行效能。"
2817
+ msgstr "調整你的網站外觀、可讀性與執行效能。"
2818
+
2819
+ #. @context: Confirm button in the disable-multilingual dialog
2820
+ #: src/ui/dash/settings/LanguageContent.tsx
2821
+ msgid "Turn off"
2822
+ msgstr "關閉"
2823
+
2824
+ #. @context: Title of the dialog confirming removal of the last additional language
2825
+ #. @context: Title of the disable-multilingual dialog
2826
+ #: src/ui/dash/settings/LanguageContent.tsx
2827
+ #: src/ui/dash/settings/LanguageContent.tsx
2828
+ msgid "Turn off multilingual content?"
2829
+ msgstr "關閉多語言?"
2830
+
2831
+ #. @context: Link in the multilingual section that opens the setup dialog
2832
+ #: src/ui/dash/settings/LanguageContent.tsx
2833
+ msgid "Turn on"
2834
+ msgstr "啟用"
2835
+
2836
+ #. @context: Title of the dialog that configures languages and turns multilingual on
2837
+ #: src/ui/dash/settings/LanguageContent.tsx
2838
+ msgid "Turn on multilingual content"
2839
+ msgstr "啟用多語言"
2383
2840
 
2384
2841
  #. @context: Custom URL form field
2385
2842
  #: src/routes/dash/custom-urls.tsx
@@ -2414,7 +2871,7 @@ msgstr "未知裝置"
2414
2871
  #. @context: Settings item description for password change
2415
2872
  #: src/ui/dash/settings/AccountMenuContent.tsx
2416
2873
  msgid "Update the password you use to sign in"
2417
- msgstr "更新您用來登入的密碼"
2874
+ msgstr "更新你用來登入的密碼"
2418
2875
 
2419
2876
  #. @context: Button to upload avatar image
2420
2877
  #: src/ui/dash/settings/AvatarContent.tsx
@@ -2424,7 +2881,7 @@ msgstr "上傳大頭貼"
2424
2881
  #. @context: Error toast when avatar upload fails
2425
2882
  #: src/routes/dash/settings.tsx
2426
2883
  msgid "Upload didn't go through. Try again in a moment."
2427
- msgstr "上傳未成功. 請稍後再試."
2884
+ msgstr "上傳未成功。請稍後再試。"
2428
2885
 
2429
2886
  #. @context: Error message when avatar upload fails
2430
2887
  #: src/ui/dash/settings/AvatarContent.tsx
@@ -2446,6 +2903,11 @@ msgstr "上傳中..."
2446
2903
  msgid "URL"
2447
2904
  msgstr "URL"
2448
2905
 
2906
+ #. @context: Description of the multilingual documentation link
2907
+ #: src/ui/dash/settings/LanguageContent.tsx
2908
+ msgid "URL structure, per-language feeds, and linking translations."
2909
+ msgstr "URL 結構、每種語言的訂閱來源,以及譯本關聯。"
2910
+
2449
2911
  #. @context: Heading for API token usage examples
2450
2912
  #: src/ui/dash/settings/ApiTokensContent.tsx
2451
2913
  msgid "Usage"
@@ -2466,15 +2928,10 @@ msgstr "使用小寫字母、數字和連字號。"
2466
2928
  msgid "Use these when you want a feed URL that never changes."
2467
2929
  msgstr "當你想要一個永遠不會改變的 feed URL 時,請使用這些。"
2468
2930
 
2469
- #. @context: Help text for the manual CJK font fallback setting
2470
- #: src/ui/dash/settings/GeneralContent.tsx
2471
- msgid "Used when the content language has no built-in font profile. Your font theme still controls serif and sans styling."
2472
- msgstr "當內容語言沒有內建字型設定時使用。字型主題仍會決定襯線與無襯線樣式。"
2473
-
2474
2931
  #. @context: Description for choosing featured posts as the main RSS feed
2475
2932
  #: src/ui/dash/settings/GeneralContent.tsx
2476
2933
  msgid "Uses featured posts for /feed."
2477
- msgstr "將精選文章用於 /feed."
2934
+ msgstr "將 Featured 貼文用於 /feed。"
2478
2935
 
2479
2936
  #. @context: Description for choosing the latest posts as the main RSS feed
2480
2937
  #: src/ui/dash/settings/GeneralContent.tsx
@@ -2491,6 +2948,11 @@ msgstr "極淺的象牙底,配淡淡的茶綠。"
2491
2948
  msgid "View"
2492
2949
  msgstr "檢視"
2493
2950
 
2951
+ #. @context: Link in the cannot-remove-language error, leading to that language's archive
2952
+ #: src/ui/dash/settings/LanguageContent.tsx
2953
+ msgid "View these posts"
2954
+ msgstr "查看這些貼文"
2955
+
2494
2956
  #. @context: Prefix before Custom CSS link on color theme page
2495
2957
  #: src/ui/dash/appearance/ColorThemeContent.tsx
2496
2958
  msgid "Want more control?"
@@ -2556,10 +3018,15 @@ msgstr "暖陶土色"
2556
3018
  msgid "Warm-neutral and easy for long reading."
2557
3019
  msgstr "暖中性,適合長讀。"
2558
3020
 
2559
- #. @context: GitHub sync picker — hint under the create-on-github entry. Placeholder {name} is the suggested repo name.
2560
- #: src/routes/dash/settings.tsx
2561
- msgid "We'll prefill the name {name}. The list refreshes on return."
2562
- msgstr "我們會預先填入名稱 {name}。返回時清單會重新整理。"
3021
+ #. @context: Setup page welcome heading
3022
+ #: src/routes/auth/setup.tsx
3023
+ msgid "Welcome to Jant"
3024
+ msgstr "歡迎使用 Jant"
3025
+
3026
+ #. @context: Setup heading on a hosted site, where the language is all that is left to ask
3027
+ #: src/routes/auth/setup.tsx
3028
+ msgid "What language do you write in?"
3029
+ msgstr "你寫作的主要語言是?"
2563
3030
 
2564
3031
  #. @context: Description for backup and restore documentation link in account settings
2565
3032
  #: src/ui/dash/settings/AccountMenuContent.tsx
@@ -2571,17 +3038,32 @@ msgstr "何時使用網站匯出、資料庫備份與復原演練。"
2571
3038
  msgid "When you want a cooler, sharper look."
2572
3039
  msgstr "想要更冷、更利落的觀感時。"
2573
3040
 
3041
+ #. @context: Config Editor linked setting description
3042
+ #: src/ui/dash/settings/ConfigEditorContent.tsx
3043
+ msgid "Whether each language gets its own home page, archive, and feed. Managed on the Language page."
3044
+ msgstr "每種語言是否擁有獨立的首頁、彙整和訂閱來源。在「語言」頁管理。"
3045
+
3046
+ #. @context: Config Editor setting description
3047
+ #: src/ui/dash/settings/ConfigEditorContent.tsx
3048
+ msgid "Which layout /archive opens with. Readers can switch layouts from the page."
3049
+ msgstr "/archive 開啟時用哪種版式。讀者可以在頁面上自行切換。"
3050
+
2574
3051
  #. @context: Config Editor setting description
2575
3052
  #: src/ui/dash/settings/ConfigEditorContent.tsx
2576
3053
  msgid "Which post stream the canonical /feed URL returns."
2577
- msgstr "正規的 /feed URL 會回傳哪個文章串流。"
3054
+ msgstr "正規的 /feed URL 會回傳哪個貼文串流。"
2578
3055
 
2579
3056
  #. @context: Parchment color theme preview body
2580
3057
  #: src/ui/dash/appearance/ColorThemeContent.tsx
2581
3058
  msgid "Yellow-tinted paper with an olive-green accent."
2582
3059
  msgstr "微黃的紙底,配橄欖綠。"
2583
3060
 
3061
+ #. @context: Note at the foot of the last setup screen, after the submit button
3062
+ #: src/routes/auth/setup.tsx
3063
+ msgid "You can change all of this later in Settings."
3064
+ msgstr "之後可以在設定中更改。"
3065
+
2584
3066
  #. @context: Fallback name when a connected Telegram account has no username
2585
3067
  #: src/ui/dash/settings/TelegramContent.tsx
2586
3068
  msgid "your Telegram account"
2587
- msgstr "您的 Telegram 帳號"
3069
+ msgstr "你的 Telegram 帳號"