@jant/core 0.6.16 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (508) hide show
  1. package/README.md +11 -11
  2. package/bin/commands/assets/upload.js +192 -15
  3. package/bin/commands/import-site.js +60 -4
  4. package/bin/commands/reset-password.js +21 -8
  5. package/bin/commands/site/snapshot/export.js +1 -1
  6. package/bin/commands/site/snapshot/import.js +1 -1
  7. package/bin/lib/d1-query.js +5 -16
  8. package/bin/lib/node-env.js +40 -4
  9. package/bin/lib/site-selection.js +85 -29
  10. package/bin/lib/wrangler-cli.js +28 -2
  11. package/bin/lib/wrangler-json.js +35 -0
  12. package/dist/{app-C7_4oab9.js → app-K_Aa1MMn.js} +52476 -13330
  13. package/dist/client/.vite/manifest.json +255 -90
  14. package/dist/client/_assets/chunks/confirm-D7GrwsCN.js +45 -0
  15. package/dist/client/_assets/chunks/create-editor-CD3FhrOB.js +257 -0
  16. package/dist/client/_assets/chunks/{native-DpcrFAPh.js → emoji-mart-C4RpRKcU.js} +716 -1
  17. package/dist/client/_assets/chunks/footnote-rail-CmeoVtnU.js +1 -0
  18. package/dist/client/_assets/chunks/heic-to-CuP2Qlsw.js +1 -0
  19. package/dist/client/_assets/chunks/jant-locale-picker-DL6mIOT5.js +69 -0
  20. package/dist/client/_assets/chunks/lit-DW8VmJAT.js +2 -0
  21. package/dist/client/_assets/chunks/mediabunny-DRaCQ1r-.js +31 -0
  22. package/dist/client/_assets/chunks/rolldown-runtime-hePW80VL.js +1 -0
  23. package/dist/client/_assets/chunks/settings-paths-BcdySNx6.js +84 -0
  24. package/dist/client/_assets/chunks/site-header-nav-DzXsFk05.js +1 -0
  25. package/dist/client/_assets/chunks/slug-format-CRXO1AL5.js +1 -0
  26. package/dist/client/_assets/chunks/slugify-373citbs.js +1 -0
  27. package/dist/client/_assets/chunks/sortable-list-CgaL2jCs.js +2 -0
  28. package/dist/client/_assets/chunks/types-D5iF3H1a.js +1 -0
  29. package/dist/client/_assets/chunks/unsafe-html-B5ZEXaxg.js +1 -0
  30. package/dist/client/_assets/chunks/unsafe-svg-0QCkP0vZ.js +2 -0
  31. package/dist/client/_assets/client-GiYENVw8.css +2 -0
  32. package/dist/client/_assets/client-VnFxJN7G.js +295 -0
  33. package/dist/client/_assets/client-auth-k8gJ6QJj.js +828 -0
  34. package/dist/client/_assets/client-author-DQ8R-8KR.css +2 -0
  35. package/dist/client/_assets/client-compose-B_kDtWkW.js +2004 -0
  36. package/dist/client/_assets/client-manage-M90aSTOk.js +2170 -0
  37. package/dist/client/_assets/client-settings-DfYs9n1F.js +1112 -0
  38. package/dist/{export-Dl5KCiEs.js → github-sync-BPAvT999.js} +2254 -107
  39. package/dist/index.js +2 -5
  40. package/dist/node.js +5 -7
  41. package/package.json +3 -3
  42. package/src/__tests__/auth-session-freshness.test.ts +57 -0
  43. package/src/__tests__/basecoat-variants.test.ts +121 -0
  44. package/src/__tests__/bin/assets-upload.test.ts +68 -0
  45. package/src/__tests__/export-hugo-build.test.ts +260 -0
  46. package/src/__tests__/export-service.test.ts +231 -0
  47. package/src/__tests__/helpers/component-css.ts +91 -0
  48. package/src/__tests__/helpers/db.ts +33 -0
  49. package/src/__tests__/helpers/export-fixtures.ts +3 -0
  50. package/src/__tests__/stylesheet-audience.test.ts +159 -0
  51. package/src/__tests__/stylesheet-breakpoints.test.ts +183 -0
  52. package/src/app.tsx +71 -16
  53. package/src/auth.ts +18 -1
  54. package/src/client/__tests__/collection-page-actions.test.ts +51 -2
  55. package/src/client/__tests__/compose-bridge-image-upload.test.ts +196 -0
  56. package/src/client/__tests__/compose-bridge-video-poster.test.ts +159 -0
  57. package/src/client/__tests__/compose-bridge.test.ts +272 -0
  58. package/src/client/__tests__/compose-launch.test.ts +62 -1
  59. package/src/client/__tests__/compose-shortcuts.test.ts +38 -9
  60. package/src/client/__tests__/compose-triggers.test.ts +90 -0
  61. package/src/client/__tests__/copy-field.test.ts +162 -0
  62. package/src/client/__tests__/custom-url-menu.test.ts +127 -6
  63. package/src/client/__tests__/image-processor.test.ts +324 -2
  64. package/src/client/__tests__/lazy-entries.test.ts +92 -0
  65. package/src/client/__tests__/media-scroll-hint.test.ts +155 -0
  66. package/src/client/__tests__/runtime-paths.test.ts +84 -0
  67. package/src/client/__tests__/smart-collection-page-actions.test.ts +158 -0
  68. package/src/client/__tests__/toast.test.ts +23 -0
  69. package/src/client/__tests__/video-processor-probe.test.ts +175 -0
  70. package/src/client/__tests__/video-processor.test.ts +181 -0
  71. package/src/client/audio-processor.ts +24 -15
  72. package/src/client/audio-waveform.ts +49 -0
  73. package/src/client/collection-dialog-host.ts +72 -0
  74. package/src/client/collection-navigation.ts +51 -16
  75. package/src/client/collection-page-actions.ts +26 -0
  76. package/src/client/components/__tests__/jant-collection-dialog.test.ts +329 -0
  77. package/src/client/components/__tests__/jant-collection-directory.test.ts +274 -10
  78. package/src/client/components/__tests__/jant-collection-form.test.ts +59 -178
  79. package/src/client/components/__tests__/jant-command-palette.test.ts +28 -0
  80. package/src/client/components/__tests__/jant-compose-dialog-draft-storage.test.ts +340 -0
  81. package/src/client/components/__tests__/jant-compose-dialog.test.ts +1250 -53
  82. package/src/client/components/__tests__/jant-compose-editor.test.ts +544 -40
  83. package/src/client/components/__tests__/jant-compose-fullscreen.test.ts +0 -1
  84. package/src/client/components/__tests__/jant-locale-picker.test.ts +207 -0
  85. package/src/client/components/__tests__/jant-nav-manager.test.ts +234 -15
  86. package/src/client/components/__tests__/jant-post-menu.test.ts +413 -2
  87. package/src/client/components/__tests__/jant-post-picker.test.ts +197 -0
  88. package/src/client/components/__tests__/jant-settings-avatar.test.ts +15 -12
  89. package/src/client/components/__tests__/jant-settings-general.test.ts +541 -172
  90. package/src/client/components/__tests__/jant-settings-language.test.ts +851 -0
  91. package/src/client/components/__tests__/jant-smart-collection-dialog.test.ts +665 -0
  92. package/src/client/components/collection-dialog-types.ts +49 -0
  93. package/src/client/components/collection-manager-types.ts +32 -1
  94. package/src/client/components/collection-types.ts +1 -15
  95. package/src/client/components/compose-types.ts +75 -1
  96. package/src/client/components/jant-collection-dialog.ts +722 -0
  97. package/src/client/components/jant-collection-directory.ts +567 -182
  98. package/src/client/components/jant-collection-form.ts +53 -232
  99. package/src/client/components/jant-command-palette.ts +100 -49
  100. package/src/client/components/jant-compose-dialog.ts +1486 -707
  101. package/src/client/components/jant-compose-editor.ts +673 -336
  102. package/src/client/components/jant-compose-fullscreen.ts +51 -43
  103. package/src/client/components/jant-config-editor.ts +65 -53
  104. package/src/client/components/jant-confirm-dialog.ts +13 -11
  105. package/src/client/components/jant-locale-picker.ts +418 -0
  106. package/src/client/components/jant-media-lightbox.ts +146 -136
  107. package/src/client/components/jant-nav-manager.ts +690 -366
  108. package/src/client/components/jant-post-menu.ts +1086 -282
  109. package/src/client/components/jant-post-picker.ts +324 -0
  110. package/src/client/components/jant-repo-picker.ts +138 -106
  111. package/src/client/components/jant-settings-avatar.ts +31 -27
  112. package/src/client/components/jant-settings-general.ts +617 -543
  113. package/src/client/components/jant-settings-language.ts +1087 -0
  114. package/src/client/components/jant-smart-collection-dialog.ts +1021 -0
  115. package/src/client/components/jant-text-preview.ts +94 -86
  116. package/src/client/components/nav-manager-types.ts +62 -1
  117. package/src/client/components/settings-types.ts +14 -29
  118. package/src/client/components/smart-collection-conditions.ts +285 -0
  119. package/src/client/components/smart-collection-dialog-types.ts +68 -0
  120. package/src/client/compose-bridge.ts +214 -141
  121. package/src/client/compose-launch.ts +76 -2
  122. package/src/client/compose-shortcuts.ts +6 -8
  123. package/src/client/compose-triggers.ts +50 -0
  124. package/src/client/copy-field.ts +108 -0
  125. package/src/client/custom-url-menu.ts +60 -4
  126. package/src/client/icons.ts +14 -0
  127. package/src/client/image-plan.ts +165 -0
  128. package/src/client/image-processor.ts +195 -117
  129. package/src/client/image-worker-client.ts +45 -0
  130. package/src/client/image-worker.ts +135 -0
  131. package/src/client/lazy-entries.ts +95 -0
  132. package/src/client/lazy-slugify.ts +2 -2
  133. package/src/client/media-scroll-hint.ts +43 -2
  134. package/src/client/mediabunny.ts +29 -0
  135. package/src/client/post-picker.ts +41 -0
  136. package/src/client/runtime-paths.ts +74 -1
  137. package/src/client/settings-bridge.ts +4 -10
  138. package/src/client/site-header-nav.js +18 -6
  139. package/src/client/smart-collection-dialog-host.ts +116 -0
  140. package/src/client/smart-collection-page-actions.ts +208 -0
  141. package/src/client/tiptap/__tests__/bubble-menu.test.ts +110 -0
  142. package/src/client/tiptap/__tests__/floating-position.test.ts +136 -1
  143. package/src/client/tiptap/__tests__/inline-image-upload.test.ts +37 -0
  144. package/src/client/tiptap/bubble-menu.ts +47 -16
  145. package/src/client/tiptap/floating-position.ts +216 -2
  146. package/src/client/tiptap/inline-image-upload.ts +7 -3
  147. package/src/client/tiptap/link-toolbar.ts +22 -9
  148. package/src/client/toast.ts +13 -0
  149. package/src/client/types/vite-worker.d.ts +12 -0
  150. package/src/client/upload-with-metadata.ts +3 -13
  151. package/src/client/video-processor.ts +351 -107
  152. package/src/client-auth.ts +14 -31
  153. package/src/client-compose.ts +19 -0
  154. package/src/client-manage.ts +13 -0
  155. package/src/client-settings.ts +14 -0
  156. package/src/client-site.ts +10 -3
  157. package/src/client.ts +4 -0
  158. package/src/db/__tests__/backfill-nav-label-mirrors.test.ts +149 -0
  159. package/src/db/__tests__/schema-enum-sources.test.ts +33 -0
  160. package/src/db/__tests__/smart-collection-placement.test.ts +402 -0
  161. package/src/db/backfills/0006_clear_mirrored_page_nav_labels.sql +31 -0
  162. package/src/db/migrations/0032_married_tomas.sql +3 -0
  163. package/src/db/migrations/0033_busy_johnny_storm.sql +198 -0
  164. package/src/db/migrations/0034_cheerful_rumiko_fujikawa.sql +35 -0
  165. package/src/db/migrations/meta/0032_snapshot.json +2582 -0
  166. package/src/db/migrations/meta/0033_snapshot.json +2816 -0
  167. package/src/db/migrations/meta/0034_snapshot.json +2816 -0
  168. package/src/db/migrations/meta/_journal.json +21 -0
  169. package/src/db/migrations/pg/0030_abandoned_nighthawk.sql +3 -0
  170. package/src/db/migrations/pg/0031_strong_ultimatum.sql +128 -0
  171. package/src/db/migrations/pg/0032_furry_multiple_man.sql +6 -0
  172. package/src/db/migrations/pg/meta/0030_snapshot.json +3329 -0
  173. package/src/db/migrations/pg/meta/0031_snapshot.json +3660 -0
  174. package/src/db/migrations/pg/meta/0032_snapshot.json +3660 -0
  175. package/src/db/migrations/pg/meta/_journal.json +21 -0
  176. package/src/db/pg/schema.ts +195 -27
  177. package/src/db/post-visibility.ts +117 -0
  178. package/src/db/schema.ts +222 -27
  179. package/src/i18n/__tests__/detect.test.ts +26 -81
  180. package/src/i18n/__tests__/supported-locales.test.ts +83 -0
  181. package/src/i18n/context.tsx +12 -2
  182. package/src/i18n/detect.ts +7 -66
  183. package/src/i18n/locales/glossary.zh-Hans.yml +44 -4
  184. package/src/i18n/locales/glossary.zh-Hant.yml +44 -4
  185. package/src/i18n/locales/public/en.po +490 -158
  186. package/src/i18n/locales/public/en.ts +1 -1
  187. package/src/i18n/locales/public/zh-Hans.po +487 -155
  188. package/src/i18n/locales/public/zh-Hans.ts +1 -1
  189. package/src/i18n/locales/public/zh-Hant.po +487 -155
  190. package/src/i18n/locales/public/zh-Hant.ts +1 -1
  191. package/src/i18n/locales/settings/en.po +551 -69
  192. package/src/i18n/locales/settings/en.ts +1 -1
  193. package/src/i18n/locales/settings/zh-Hans.po +597 -115
  194. package/src/i18n/locales/settings/zh-Hans.ts +1 -1
  195. package/src/i18n/locales/settings/zh-Hant.po +610 -128
  196. package/src/i18n/locales/settings/zh-Hant.ts +1 -1
  197. package/src/i18n/locales.ts +94 -0
  198. package/src/i18n/middleware.ts +12 -2
  199. package/src/i18n/supported-locales.ts +80 -0
  200. package/src/lib/__tests__/api-settings.test.ts +11 -2
  201. package/src/lib/__tests__/asset-path.test.ts +92 -0
  202. package/src/lib/__tests__/deferred.test.ts +90 -0
  203. package/src/lib/__tests__/discover-ping.test.ts +89 -0
  204. package/src/lib/__tests__/discover.test.ts +410 -0
  205. package/src/lib/__tests__/feed-policy.test.ts +26 -0
  206. package/src/lib/__tests__/feed.test.ts +1526 -15
  207. package/src/lib/__tests__/filter-dimensions.test.ts +341 -0
  208. package/src/lib/__tests__/hosted-signin.test.ts +1 -1
  209. package/src/lib/__tests__/http-cache.test.ts +162 -0
  210. package/src/lib/__tests__/jant-docs-dev.test.ts +21 -0
  211. package/src/lib/__tests__/jant-docs.test.ts +23 -0
  212. package/src/lib/__tests__/lang-detect.test.ts +231 -0
  213. package/src/lib/__tests__/media-helpers.test.ts +81 -0
  214. package/src/lib/__tests__/navigation.test.ts +135 -1
  215. package/src/lib/__tests__/resolve-config.test.ts +64 -3
  216. package/src/lib/__tests__/schemas.test.ts +42 -4
  217. package/src/lib/__tests__/site-unavailable-page.test.ts +25 -0
  218. package/src/lib/__tests__/slug.test.ts +70 -0
  219. package/src/lib/__tests__/slugify.test.ts +85 -0
  220. package/src/lib/__tests__/storage.test.ts +32 -0
  221. package/src/lib/__tests__/thread-fold.test.ts +113 -0
  222. package/src/lib/__tests__/upload-sideload.test.ts +14 -0
  223. package/src/lib/__tests__/url-fetch.test.ts +1 -2
  224. package/src/lib/__tests__/url.test.ts +78 -72
  225. package/src/lib/__tests__/view-language.test.ts +413 -0
  226. package/src/lib/__tests__/worker-response-cache.test.ts +90 -0
  227. package/src/lib/address.ts +57 -0
  228. package/src/lib/api-posts.ts +12 -0
  229. package/src/lib/asset-path.ts +98 -1
  230. package/src/lib/build-env.ts +16 -0
  231. package/src/lib/collection-groups.ts +5 -1
  232. package/src/lib/collection-paths.ts +3 -10
  233. package/src/lib/constants.ts +28 -3
  234. package/src/lib/copy-field.ts +36 -0
  235. package/src/lib/crypto.ts +40 -0
  236. package/src/lib/csp-builder.ts +2 -1
  237. package/src/lib/deferred.ts +79 -0
  238. package/src/lib/discover-ping.ts +141 -0
  239. package/src/lib/discover.ts +437 -0
  240. package/src/lib/env.ts +134 -0
  241. package/src/lib/errors.ts +33 -0
  242. package/src/lib/feed-policy.ts +236 -2
  243. package/src/lib/feed.ts +926 -73
  244. package/src/lib/filter-dimensions.ts +1349 -0
  245. package/src/lib/github-sync-site-config.ts +3 -0
  246. package/src/lib/hosted-signin.ts +1 -1
  247. package/src/lib/http-cache.ts +148 -0
  248. package/src/lib/hugo-markdown.ts +16 -0
  249. package/src/lib/icons.ts +9 -2
  250. package/src/lib/ids.ts +3 -0
  251. package/src/lib/jant-docs.ts +42 -0
  252. package/src/lib/lang-detect.ts +308 -0
  253. package/src/lib/media-helpers.ts +13 -1
  254. package/src/lib/navigation.ts +78 -11
  255. package/src/lib/pagination.ts +28 -24
  256. package/src/lib/per-language-surfaces.ts +67 -0
  257. package/src/lib/post-meta.ts +19 -0
  258. package/src/lib/render.tsx +55 -7
  259. package/src/lib/resolve-config.ts +53 -5
  260. package/src/lib/schemas.ts +201 -10
  261. package/src/lib/site-header-fragment.tsx +2 -1
  262. package/src/lib/site-unavailable-page.ts +47 -0
  263. package/src/lib/slug.ts +51 -7
  264. package/src/lib/slugify.ts +113 -0
  265. package/src/lib/startup-config.ts +4 -6
  266. package/src/lib/storage.ts +7 -0
  267. package/src/lib/summary.ts +50 -0
  268. package/src/lib/thread-fold.ts +161 -0
  269. package/src/lib/time.ts +32 -0
  270. package/src/lib/timeline.ts +42 -1
  271. package/src/lib/tiptap-render.ts +1 -2
  272. package/src/lib/upload.ts +16 -13
  273. package/src/lib/url.ts +139 -86
  274. package/src/lib/version.ts +10 -8
  275. package/src/lib/view-language.ts +436 -0
  276. package/src/lib/view.ts +51 -23
  277. package/src/lib/viewer-context.ts +62 -0
  278. package/src/middleware/__tests__/auth.test.ts +70 -2
  279. package/src/middleware/__tests__/cache-control.test.ts +71 -3
  280. package/src/middleware/__tests__/onboarding.test.ts +76 -5
  281. package/src/middleware/__tests__/secure-headers.test.ts +1 -1
  282. package/src/middleware/__tests__/session.test.ts +181 -33
  283. package/src/middleware/auth.ts +50 -31
  284. package/src/middleware/cache-control.ts +75 -10
  285. package/src/middleware/config.ts +6 -6
  286. package/src/middleware/error-handler.ts +12 -0
  287. package/src/middleware/onboarding.ts +32 -10
  288. package/src/middleware/secure-headers.ts +1 -1
  289. package/src/middleware/session.ts +96 -8
  290. package/src/node/__tests__/cli-migrate.test.ts +21 -19
  291. package/src/node/__tests__/cli-reset-password.test.ts +81 -8
  292. package/src/node/__tests__/cli-runtime-target.test.ts +48 -1
  293. package/src/node/__tests__/cli-site-selection.test.ts +128 -38
  294. package/src/node/__tests__/runtime.test.ts +37 -0
  295. package/src/node/index.ts +1 -0
  296. package/src/preset.css +76 -22
  297. package/src/routes/__tests__/feed-validator.test.ts +156 -0
  298. package/src/routes/api/__tests__/collections.test.ts +114 -0
  299. package/src/routes/api/__tests__/discover.test.ts +222 -0
  300. package/src/routes/api/__tests__/nav-items.test.ts +212 -2
  301. package/src/routes/api/__tests__/post-translations.test.ts +829 -0
  302. package/src/routes/api/__tests__/settings.test.ts +24 -3
  303. package/src/routes/api/__tests__/telegram.test.ts +6 -5
  304. package/src/routes/api/collections.ts +49 -6
  305. package/src/routes/api/custom-urls.ts +0 -1
  306. package/src/routes/api/discover.ts +95 -0
  307. package/src/routes/api/export.ts +3 -0
  308. package/src/routes/api/internal/__tests__/sites.test.ts +42 -2
  309. package/src/routes/api/nav-items.ts +55 -8
  310. package/src/routes/api/posts.ts +159 -0
  311. package/src/routes/api/public/__tests__/archive.test.ts +111 -0
  312. package/src/routes/api/public/archive.ts +77 -81
  313. package/src/routes/api/public/posts.ts +23 -6
  314. package/src/routes/api/smart-collections.ts +132 -0
  315. package/src/routes/api/telegram.ts +2 -40
  316. package/src/routes/api/uploads.ts +1 -2
  317. package/src/routes/auth/__tests__/setup-auth.test.ts +137 -0
  318. package/src/routes/auth/__tests__/setup-discover.test.ts +204 -0
  319. package/src/routes/auth/__tests__/setup-flow.test.ts +270 -0
  320. package/src/routes/auth/__tests__/setup-page.test.tsx +329 -0
  321. package/src/routes/auth/__tests__/setup-steps.test.ts +310 -0
  322. package/src/routes/auth/__tests__/setup.test.ts +278 -26
  323. package/src/routes/auth/__tests__/signin.test.ts +135 -0
  324. package/src/routes/auth/setup.tsx +934 -186
  325. package/src/routes/auth/signin.tsx +10 -8
  326. package/src/routes/compose.tsx +5 -0
  327. package/src/routes/dash/__tests__/custom-urls-archive.test.ts +44 -0
  328. package/src/routes/dash/__tests__/custom-urls-page.test.ts +49 -0
  329. package/src/routes/dash/__tests__/delete-account.test.ts +106 -0
  330. package/src/routes/dash/__tests__/settings-discover.test.ts +213 -0
  331. package/src/routes/dash/custom-urls.tsx +1 -37
  332. package/src/routes/dash/settings.tsx +502 -41
  333. package/src/routes/discover-announce.ts +96 -0
  334. package/src/routes/feed/__tests__/feed.test.ts +165 -2
  335. package/src/routes/feed/feed.ts +69 -40
  336. package/src/routes/feed/sitemap.ts +95 -11
  337. package/src/routes/pages/__tests__/archive-indexing.test.ts +200 -0
  338. package/src/routes/pages/__tests__/archive-params.test.ts +370 -6
  339. package/src/routes/pages/__tests__/collection-routing.test.ts +16 -0
  340. package/src/routes/pages/__tests__/collections-feed-links.test.ts +72 -0
  341. package/src/routes/pages/__tests__/collections.test.ts +9 -3
  342. package/src/routes/pages/__tests__/custom-archive-url.test.ts +119 -0
  343. package/src/routes/pages/__tests__/feed-autodiscovery.test.ts +148 -0
  344. package/src/routes/pages/__tests__/language-routing.test.ts +679 -0
  345. package/src/routes/pages/__tests__/post-preview-partial.test.ts +96 -0
  346. package/src/routes/pages/__tests__/smart-collection.test.ts +298 -0
  347. package/src/routes/pages/__tests__/subscribe.test.ts +248 -0
  348. package/src/routes/pages/archive.tsx +471 -369
  349. package/src/routes/pages/collection.tsx +94 -96
  350. package/src/routes/pages/collections.tsx +38 -50
  351. package/src/routes/pages/featured.tsx +32 -13
  352. package/src/routes/pages/home.tsx +25 -6
  353. package/src/routes/pages/language.tsx +113 -0
  354. package/src/routes/pages/latest.tsx +26 -16
  355. package/src/routes/pages/new.tsx +3 -0
  356. package/src/routes/pages/page.tsx +178 -17
  357. package/src/routes/pages/partials.tsx +41 -0
  358. package/src/routes/pages/search.tsx +18 -3
  359. package/src/routes/pages/smart-collection.tsx +340 -0
  360. package/src/routes/pages/subscribe.tsx +182 -0
  361. package/src/runtime/__tests__/index.test.ts +19 -0
  362. package/src/runtime/__tests__/node.test.ts +129 -4
  363. package/src/runtime/cloudflare.ts +21 -2
  364. package/src/runtime/index.ts +27 -1
  365. package/src/runtime/node.ts +18 -1
  366. package/src/runtime/site.ts +95 -24
  367. package/src/services/__tests__/auth.test.ts +116 -7
  368. package/src/services/__tests__/collection.test.ts +108 -4
  369. package/src/services/__tests__/language.test.ts +495 -0
  370. package/src/services/__tests__/navigation.test.ts +213 -10
  371. package/src/services/__tests__/path.test.ts +180 -0
  372. package/src/services/__tests__/post-language.test.ts +830 -0
  373. package/src/services/__tests__/post.test.ts +46 -9
  374. package/src/services/__tests__/settings.test.ts +228 -17
  375. package/src/services/__tests__/site-admin.test.ts +5 -5
  376. package/src/services/__tests__/smart-collection.test.ts +651 -0
  377. package/src/services/about-page.ts +22 -1
  378. package/src/services/auth.ts +51 -49
  379. package/src/services/bootstrap.ts +188 -38
  380. package/src/services/collection-directory-position.ts +76 -0
  381. package/src/services/collection.ts +331 -46
  382. package/src/services/custom-url.ts +27 -22
  383. package/src/services/export-theme/assets/client-site.css +1 -1
  384. package/src/services/export-theme/assets/client-site.js +123 -123
  385. package/src/services/export-theme/layouts/_default/rss.xml +77 -1
  386. package/src/services/export-theme/layouts/partials/feed-post-content.xml +105 -2
  387. package/src/services/export-theme/layouts/partials/media-gallery.html +35 -21
  388. package/src/services/export-theme/layouts/partials/pagination.html +14 -13
  389. package/src/services/export-theme/layouts/partials/post-card.html +8 -4
  390. package/src/services/export-theme/layouts/partials/reply.html +2 -1
  391. package/src/services/export-theme/layouts/partials/thread-preview.html +40 -30
  392. package/src/services/export-theme/styles/main.css +13 -1
  393. package/src/services/export.ts +278 -19
  394. package/src/services/index.ts +34 -3
  395. package/src/services/language.ts +412 -0
  396. package/src/services/mcp.ts +3 -1
  397. package/src/services/media.ts +14 -6
  398. package/src/services/navigation.ts +429 -67
  399. package/src/services/path.ts +221 -6
  400. package/src/services/post.ts +1021 -152
  401. package/src/services/search.ts +39 -2
  402. package/src/services/settings.ts +238 -43
  403. package/src/services/site-admin.ts +24 -7
  404. package/src/services/site.ts +77 -1
  405. package/src/services/smart-collection.ts +636 -0
  406. package/src/services/telegram.ts +20 -22
  407. package/src/services/upload-session.ts +1 -3
  408. package/src/style-author.css +27 -0
  409. package/src/styles/components-author.css +1622 -0
  410. package/src/styles/components.css +24 -1571
  411. package/src/styles/site-media.css +16 -2
  412. package/src/styles/tokens.css +82 -12
  413. package/src/styles/ui-author.css +7602 -0
  414. package/src/styles/ui.css +1087 -7219
  415. package/src/types/app-context.ts +7 -0
  416. package/src/types/bindings.ts +3 -0
  417. package/src/types/config.ts +94 -15
  418. package/src/types/constants.ts +188 -16
  419. package/src/types/entities.ts +87 -1
  420. package/src/types/operations.ts +64 -2
  421. package/src/types/props.ts +157 -31
  422. package/src/types/views.ts +55 -1
  423. package/src/ui/__tests__/font-themes.test.ts +52 -12
  424. package/src/ui/compose/ComposeDialog.tsx +201 -7
  425. package/src/ui/compose/ComposePrompt.tsx +1 -5
  426. package/src/ui/compose/__tests__/ComposeDialog.test.tsx +125 -0
  427. package/src/ui/dash/appearance/AdvancedContent.tsx +2 -2
  428. package/src/ui/dash/appearance/CodeInjectionContent.tsx +12 -16
  429. package/src/ui/dash/appearance/NavigationContent.tsx +117 -16
  430. package/src/ui/dash/appearance/__tests__/NavigationContent.test.tsx +33 -11
  431. package/src/ui/dash/appearance/__tests__/system-nav-descriptions.test.ts +44 -0
  432. package/src/ui/dash/appearance/system-nav-descriptions.ts +75 -0
  433. package/src/ui/dash/settings/AccountMenuContent.tsx +2 -2
  434. package/src/ui/dash/settings/ApiTokensContent.tsx +2 -1
  435. package/src/ui/dash/settings/ConfigEditorContent.tsx +35 -16
  436. package/src/ui/dash/settings/GeneralContent.tsx +275 -113
  437. package/src/ui/dash/settings/LanguageContent.tsx +409 -0
  438. package/src/ui/dash/settings/SettingsRootContent.tsx +19 -1
  439. package/src/ui/dash/settings/__tests__/GeneralContent.test.tsx +324 -4
  440. package/src/ui/dash/settings/__tests__/LanguageContent.test.tsx +144 -0
  441. package/src/ui/dash/settings/__tests__/discover-copy.test.ts +66 -0
  442. package/src/ui/dash/settings/discover-copy.ts +116 -0
  443. package/src/ui/feed/LinkCard.tsx +55 -45
  444. package/src/ui/feed/NoteCard.tsx +9 -4
  445. package/src/ui/feed/PostStatusBadges.tsx +90 -43
  446. package/src/ui/feed/QuoteCard.tsx +55 -30
  447. package/src/ui/feed/ThreadPreview.tsx +6 -2
  448. package/src/ui/feed/__tests__/thread-preview.test.ts +13 -16
  449. package/src/ui/feed/__tests__/timeline-cards.test.ts +314 -49
  450. package/src/ui/feed/thread-preview-state.ts +20 -6
  451. package/src/ui/font-themes.ts +39 -29
  452. package/src/ui/layouts/BaseLayout.tsx +155 -10
  453. package/src/ui/layouts/SiteLayout.tsx +192 -34
  454. package/src/ui/layouts/__tests__/BaseLayout.test.tsx +196 -17
  455. package/src/ui/layouts/__tests__/SiteLayout.test.tsx +109 -85
  456. package/src/ui/pages/ArchivePage.tsx +282 -289
  457. package/src/ui/pages/CollectionPage.tsx +86 -76
  458. package/src/ui/pages/CollectionsPage.tsx +5 -0
  459. package/src/ui/pages/ComposePage.tsx +8 -0
  460. package/src/ui/pages/PostPage.tsx +47 -0
  461. package/src/ui/pages/SearchPage.tsx +3 -3
  462. package/src/ui/pages/SmartCollectionPage.tsx +434 -0
  463. package/src/ui/pages/SubscribePage.tsx +236 -0
  464. package/src/ui/pages/__tests__/ArchivePage.test.tsx +65 -9
  465. package/src/ui/pages/__tests__/collections-directory-rows.test.tsx +92 -0
  466. package/src/ui/pages/__tests__/collections-view-links.test.tsx +81 -0
  467. package/src/ui/shared/CollectionDirectory.tsx +178 -3
  468. package/src/ui/shared/CollectionsManager.tsx +70 -17
  469. package/src/ui/shared/CopyField.tsx +127 -0
  470. package/src/ui/shared/EmptyPostContent.tsx +23 -0
  471. package/src/ui/shared/MediaGallery.tsx +125 -46
  472. package/src/ui/shared/Pagination.tsx +20 -5
  473. package/src/ui/shared/PostFooter.tsx +20 -11
  474. package/src/ui/shared/__tests__/archive-labels.test.ts +100 -0
  475. package/src/ui/shared/__tests__/media-gallery.test.ts +210 -2
  476. package/src/ui/shared/__tests__/navigation-labels.test.ts +16 -22
  477. package/src/ui/shared/__tests__/pagination.test.ts +38 -24
  478. package/src/ui/shared/__tests__/post-footer.test.ts +32 -0
  479. package/src/ui/shared/archive-labels.ts +98 -0
  480. package/src/ui/shared/collection-management-labels.ts +94 -16
  481. package/src/ui/shared/navigation-labels.ts +45 -71
  482. package/src/ui/shared/post-article-attributes.ts +2 -0
  483. package/src/ui/shared/smart-collection-labels.ts +343 -0
  484. package/dist/app-C75Zc8dD.js +0 -6
  485. package/dist/client/_assets/chunks/heic-to-DUUaO23q.js +0 -1
  486. package/dist/client/_assets/chunks/module-DcsAZQZ_.js +0 -716
  487. package/dist/client/_assets/chunks/url-CU9pEbk5.js +0 -1
  488. package/dist/client/_assets/client-Bq0vre8Y.js +0 -296
  489. package/dist/client/_assets/client-D3VZyG4L.css +0 -2
  490. package/dist/client/_assets/client-auth-F2rb9WfF.js +0 -5571
  491. package/dist/env-BPYViDJJ.js +0 -281
  492. package/dist/github-api-BNF35Lkx.js +0 -176
  493. package/dist/github-app-DdiD-bC4.js +0 -275
  494. package/dist/github-sync-Bqg62IvV.js +0 -4
  495. package/dist/github-sync-HdK2EgvJ.js +0 -431
  496. package/dist/url-CbLAtlZe.js +0 -900
  497. package/src/client/__tests__/collection-created-notice.test.ts +0 -36
  498. package/src/client/__tests__/collection-form-bridge.test.ts +0 -216
  499. package/src/client/__tests__/post-form-bridge.test.ts +0 -82
  500. package/src/client/collection-created-notice.ts +0 -66
  501. package/src/client/collection-form-bridge.ts +0 -191
  502. package/src/client/components/__tests__/jant-post-form.test.ts +0 -193
  503. package/src/client/components/jant-post-form.ts +0 -422
  504. package/src/client/components/post-form-template.ts +0 -352
  505. package/src/client/components/post-form-types.ts +0 -96
  506. package/src/client/media-metadata.ts +0 -247
  507. package/src/client/post-form-bridge.ts +0 -193
  508. 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 explaining that Discover is locked off in demo mode
1016
+ #: src/ui/dash/settings/GeneralContent.tsx
1017
+ msgid "Demo sites are never listed in Discover."
1018
+ msgstr "示範網站不會出現在 Discover 中。"
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 "語言已新增。"
1254
1413
 
1255
- #. @context: Toast after saving language and time settings
1414
+ #. @context: Toast after removing a content language
1256
1415
  #: src/routes/dash/settings.tsx
1257
- msgid "Language and time updated."
1258
- msgstr "語言與時間已更新。"
1416
+ msgid "Language removed."
1417
+ msgstr "語言已移除。"
1418
+
1419
+ #. @context: Toast after removing the last additional content language
1420
+ #: src/routes/dash/settings.tsx
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."
@@ -1451,8 +1685,8 @@ msgstr "我的選集"
1451
1685
 
1452
1686
  #. @context: Settings item description for general
1453
1687
  #: src/ui/dash/settings/SettingsRootContent.tsx
1454
- msgid "Name, metadata, language, and search defaults"
1455
- msgstr "名稱, 中繼資料, 語言, 和 搜尋預設值"
1688
+ msgid "Name, visibility, feeds, and time zone"
1689
+ msgstr "站名、可見性、訂閱來源與時區"
1456
1690
 
1457
1691
  #. @context: Breadcrumb label
1458
1692
  #. @context: Settings item — navigation settings
@@ -1461,6 +1695,11 @@ msgstr "名稱, 中繼資料, 語言, 和 搜尋預設值"
1461
1695
  msgid "Navigation"
1462
1696
  msgstr "導覽列"
1463
1697
 
1698
+ #. @context: Shown for a page on the site that can only be a link, such as an archive URL
1699
+ #: src/ui/dash/appearance/NavigationContent.tsx
1700
+ msgid "Navigation holds that address as a link."
1701
+ msgstr "導覽會將該位址儲存為連結。"
1702
+
1464
1703
  #. @context: Section heading for nav items
1465
1704
  #: src/ui/dash/appearance/NavigationContent.tsx
1466
1705
  msgid "Navigation items"
@@ -1533,15 +1772,17 @@ msgstr "目前還沒有選集。在這裡建立一個並加入導覽。"
1533
1772
  #. @context: Empty state message
1534
1773
  #: src/routes/dash/custom-urls.tsx
1535
1774
  msgid "No custom URLs yet. Create one to add redirects or custom paths for posts."
1536
- msgstr "尚未有自訂 URL。建立一個自訂 URL 以為文章新增重新導向或自訂路徑。"
1775
+ msgstr "還沒有自訂 URL。建立一個,給貼文加重新導向或自訂路徑。"
1537
1776
 
1538
1777
  #. @context: Error toast when no file was selected for upload
1539
1778
  #: src/routes/dash/settings.tsx
1540
1779
  msgid "No file selected. Choose a file to upload."
1541
1780
  msgstr "未選取檔案。請選擇要上傳的檔案。"
1542
1781
 
1543
- #. @context: Empty state shown when the language search filters out every entry
1544
- #: src/ui/dash/settings/GeneralContent.tsx
1782
+ #. @context: Empty state in the language picker
1783
+ #. @context: Empty state in the language picker
1784
+ #: src/routes/auth/setup.tsx
1785
+ #: src/ui/dash/settings/LanguageContent.tsx
1545
1786
  msgid "No matches."
1546
1787
  msgstr "無相符結果。"
1547
1788
 
@@ -1563,7 +1804,12 @@ msgstr "沒有可加入的頁面。建立頁面後即可加入導覽。"
1563
1804
  #. @context: GitHub sync picker — empty state when search returns nothing
1564
1805
  #: src/routes/dash/settings.tsx
1565
1806
  msgid "No repositories match."
1566
- msgstr "沒有符合的儲存庫."
1807
+ msgstr "沒有符合的儲存庫。"
1808
+
1809
+ #. @context: Discover status line before the site has ever announced itself. The button under the lines is how it is sent.
1810
+ #: src/ui/dash/settings/GeneralContent.tsx
1811
+ msgid "Not announced yet. No directory has been told this site exists."
1812
+ msgstr "尚未提交。還沒有目錄知道這個網站存在。"
1567
1813
 
1568
1814
  #. @context: Config Editor linked setting status
1569
1815
  #. @context: Config Editor linked setting status
@@ -1584,48 +1830,83 @@ msgstr "尚未同步"
1584
1830
  msgid "Note"
1585
1831
  msgstr "筆記"
1586
1832
 
1833
+ #. @context: Shown when a pasted address matches no page on the site
1834
+ #: src/ui/dash/appearance/NavigationContent.tsx
1835
+ msgid "Nothing at {address}. Check it, or search by title."
1836
+ msgstr "在 {address} 找不到任何頁面。請檢查位址,或以標題搜尋。"
1837
+
1587
1838
  #. @context: Config Editor empty search state
1588
1839
  #: src/ui/dash/settings/ConfigEditorContent.tsx
1589
1840
  msgid "Nothing matches this search. Try a different name or description."
1590
1841
  msgstr "沒有任何項目符合此搜尋。請嘗試不同的名稱或描述。"
1591
1842
 
1843
+ #. @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.
1844
+ #: src/ui/dash/settings/GeneralContent.tsx
1845
+ msgid "Nothing published yet. jant.me lists a blog once it has {minCount, plural, one {one public post} other {# public posts}}."
1846
+ msgstr "還沒有公開貼文。jant.me 的收錄條件是{minCount, plural, other {滿 # 篇}}。"
1847
+
1592
1848
  #. @context: Tufte color theme preview body
1593
1849
  #: src/ui/dash/appearance/ColorThemeContent.tsx
1594
1850
  msgid "Off-white paper with a deep forest-green accent."
1595
1851
  msgstr "米白紙底,配深森綠。"
1596
1852
 
1853
+ #. @context: Status badge — multilingual content is on
1854
+ #: src/ui/dash/settings/LanguageContent.tsx
1855
+ msgid "On"
1856
+ msgstr "已啟用"
1857
+
1858
+ #. @context: Title of the stamping warning in the multilingual dialog
1859
+ #: src/ui/dash/settings/LanguageContent.tsx
1860
+ msgid "One-time change to your existing posts"
1861
+ msgstr "啟用時會一次性標記既有貼文"
1862
+
1597
1863
  #. @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
1864
  #: src/ui/dash/settings/TelegramContent.tsx
1599
1865
  msgid "Open {linkOpen}@{botUsername}{linkClose} and send:"
1600
- msgstr "開啟 {linkOpen}@{botUsername}{linkClose} 並傳送:"
1866
+ msgstr "啟用 {linkOpen}@{botUsername}{linkClose} 並傳送:"
1601
1867
 
1602
1868
  #. @context: Config Editor link to a dedicated settings page
1603
1869
  #. @context: Config Editor link to a dedicated settings page
1604
1870
  #: src/ui/dash/settings/ConfigEditorContent.tsx
1605
1871
  #: src/ui/dash/settings/ConfigEditorContent.tsx
1606
1872
  msgid "Open setting"
1607
- msgstr "開啟設定"
1873
+ msgstr "啟用設定"
1608
1874
 
1609
1875
  #. @context: Button that opens the Telegram bot via a deep link
1610
1876
  #: src/ui/dash/settings/TelegramContent.tsx
1611
1877
  msgid "Open Telegram to connect"
1612
- msgstr "開啟 Telegram 以連線"
1878
+ msgstr "啟用 Telegram 以連線"
1613
1879
 
1614
1880
  #. @context: Instructions on the Telegram settings page for connecting an account
1615
1881
  #: src/ui/dash/settings/TelegramContent.tsx
1616
1882
  msgid "Open the bot and send the binding code, then anything you message it becomes a note."
1617
- msgstr "開啟機器人並傳送綁定碼,之後你傳給它的任何訊息都會成為筆記。"
1883
+ msgstr "啟用機器人並傳送綁定碼,之後你傳給它的任何訊息都會成為筆記。"
1884
+
1885
+ #. @context: Accessible label on a language row's actions menu trigger
1886
+ #: src/ui/dash/settings/LanguageContent.tsx
1887
+ msgid "Options for {language}"
1888
+ msgstr "{language}的操作"
1618
1889
 
1619
1890
  #. @context: Separator between the QR code and the deep-link button on the Telegram connect page
1620
1891
  #: src/ui/dash/settings/TelegramContent.tsx
1621
1892
  msgid "or"
1622
1893
  msgstr "或"
1623
1894
 
1895
+ #. @context: Link to the directory's manual submission form, shown only when the automatic announcement failed
1896
+ #: src/ui/dash/settings/GeneralContent.tsx
1897
+ msgid "Or submit your address by hand"
1898
+ msgstr "或手動提交網址"
1899
+
1624
1900
  #. @context: Ember color theme preview body
1625
1901
  #: src/ui/dash/appearance/ColorThemeContent.tsx
1626
1902
  msgid "Orange-tinted background. The warmest palette."
1627
1903
  msgstr "帶橘調的底色。最暖的一套。"
1628
1904
 
1905
+ #. @context: Label for the list of non-primary languages
1906
+ #: src/ui/dash/settings/LanguageContent.tsx
1907
+ msgid "Other languages"
1908
+ msgstr "其他語言"
1909
+
1629
1910
  #. @context: GitHub sync picker — placeholder text showing the expected input shape
1630
1911
  #: src/routes/dash/settings.tsx
1631
1912
  msgid "owner/repo"
@@ -1673,6 +1954,8 @@ msgstr "調色盤、表面色調與整體氛圍"
1673
1954
 
1674
1955
  #. @context: Breadcrumb label
1675
1956
  #. @context: Settings item — password settings
1957
+ #. @context: Setup/signin form field - password
1958
+ #: src/routes/auth/setup.tsx
1676
1959
  #: src/routes/dash/settings.tsx
1677
1960
  #: src/ui/dash/settings/AccountMenuContent.tsx
1678
1961
  msgid "Password"
@@ -1681,7 +1964,7 @@ msgstr "密碼"
1681
1964
  #. @context: Toast after changing account password
1682
1965
  #: src/routes/dash/settings.tsx
1683
1966
  msgid "Password changed."
1684
- msgstr "密碼已變更."
1967
+ msgstr "密碼已變更。"
1685
1968
 
1686
1969
  #. @context: Error shown when password changes are blocked in demo mode
1687
1970
  #: src/routes/dash/settings.tsx
@@ -1738,13 +2021,33 @@ msgstr "已釘選"
1738
2021
  #: src/routes/dash/custom-urls.tsx
1739
2022
  #: src/routes/dash/custom-urls.tsx
1740
2023
  msgid "Post"
1741
- msgstr "文章"
2024
+ msgstr "貼文"
2025
+
2026
+ #. @context: Reassurance line at the bottom of the multilingual dialog
2027
+ #: src/ui/dash/settings/LanguageContent.tsx
2028
+ msgid "Post addresses do not change, and you can turn this off again at any time."
2029
+ msgstr "所有貼文的網址都不會改變,也可以隨時再關閉。"
1742
2030
 
1743
2031
  #. @context: Settings item description for Telegram integration
1744
2032
  #: src/ui/dash/settings/SettingsRootContent.tsx
1745
2033
  msgid "Post notes by messaging a Telegram bot"
1746
2034
  msgstr "透過向 Telegram 機器人傳送訊息來發佈筆記"
1747
2035
 
2036
+ #. @context: Badge on the language served at the root address
2037
+ #: src/ui/dash/settings/LanguageContent.tsx
2038
+ msgid "Primary"
2039
+ msgstr "主語言"
2040
+
2041
+ #. @context: Label the content language field takes once multilingual is on
2042
+ #: src/ui/dash/settings/LanguageContent.tsx
2043
+ msgid "Primary language"
2044
+ msgstr "主要語言"
2045
+
2046
+ #. @context: Toast after changing the primary language
2047
+ #: src/routes/dash/settings.tsx
2048
+ msgid "Primary language changed."
2049
+ msgstr "主要語言已變更。"
2050
+
1748
2051
  #. @context: GitHub sync picker — badge next to private repos
1749
2052
  #: src/routes/dash/settings.tsx
1750
2053
  msgid "Private"
@@ -1778,28 +2081,18 @@ msgstr "純白底配中性灰。不帶任何色偏。"
1778
2081
  #. @context: Description for manual push action on GitHub Sync settings
1779
2082
  #: src/ui/dash/settings/GitHubSyncContent.tsx
1780
2083
  msgid "Push all posts to GitHub right now instead of waiting for the next automatic sync."
1781
- msgstr "立即將所有文章推送到 GitHub,而不是等待下一次自動同步。"
2084
+ msgstr "立即將所有貼文推送到 GitHub,而不是等待下一次自動同步。"
1782
2085
 
1783
2086
  #. @context: Accessible label for the Telegram connect QR code
1784
2087
  #: src/ui/dash/settings/TelegramContent.tsx
1785
2088
  msgid "QR code linking to the Telegram bot"
1786
2089
  msgstr "連結至 Telegram 機器人的 QR 碼"
1787
2090
 
1788
- #. @context: Archive custom URL query params field
1789
- #: src/routes/dash/custom-urls.tsx
1790
- msgid "Query Parameters"
1791
- msgstr "查詢參數"
1792
-
1793
2091
  #. @context: Post format badge - quote
1794
2092
  #: src/ui/dash/FormatBadge.tsx
1795
2093
  msgid "Quote"
1796
2094
  msgstr "引用"
1797
2095
 
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
2096
  #. @context: Heading above recent pages in the page picker
1804
2097
  #: src/ui/dash/appearance/NavigationContent.tsx
1805
2098
  msgid "Recently updated"
@@ -1834,6 +2127,16 @@ msgstr "重新整理儲存庫清單"
1834
2127
  msgid "Remove"
1835
2128
  msgstr "移除"
1836
2129
 
2130
+ #. @context: Accessible label on the button removing a language
2131
+ #: src/ui/dash/settings/LanguageContent.tsx
2132
+ msgid "Remove {language}"
2133
+ msgstr "移除「{language}」"
2134
+
2135
+ #. @context: Confirm button when removing the last additional language
2136
+ #: src/ui/dash/settings/LanguageContent.tsx
2137
+ msgid "Remove and turn off"
2138
+ msgstr "移除並關閉"
2139
+
1837
2140
  #. @context: Button to remove the saved Telegram bot token
1838
2141
  #: src/ui/dash/settings/TelegramContent.tsx
1839
2142
  msgid "Remove bot"
@@ -1847,12 +2150,12 @@ msgstr "移除已儲存的機器人權杖?其 webhook 會被刪除,任何已
1847
2150
  #. @context: Description for disconnect action on GitHub Sync settings
1848
2151
  #: src/ui/dash/settings/GitHubSyncContent.tsx
1849
2152
  msgid "Remove the webhook and stop syncing. Your repository content will not be deleted."
1850
- msgstr "移除 webhook 並停止同步。您的儲存庫內容不會被刪除。"
2153
+ msgstr "移除 webhook 並停止同步。你的儲存庫內容不會被刪除。"
1851
2154
 
1852
2155
  #. @context: Confirm dialog for removing the blog avatar
1853
2156
  #: src/ui/dash/settings/AvatarContent.tsx
1854
2157
  msgid "Remove this avatar? Your favicon and header icon will go back to the default."
1855
- msgstr "移除這個頭像?您的 favicon 與頁首圖示會回復為預設。"
2158
+ msgstr "移除這個頭像?你的 favicon 與頁首圖示會回復為預設。"
1856
2159
 
1857
2160
  #. @context: Confirm dialog for removing a collection nav item
1858
2161
  #: src/ui/dash/appearance/NavigationContent.tsx
@@ -1914,10 +2217,12 @@ msgstr "沙色底,配綠色點綴。"
1914
2217
  #. @context: Button to save settings
1915
2218
  #. @context: Button to save settings changes
1916
2219
  #. @context: Save nav item changes
2220
+ #. @context: Settings save button
1917
2221
  #: src/ui/dash/appearance/CodeInjectionContent.tsx
1918
2222
  #: src/ui/dash/appearance/NavigationContent.tsx
1919
2223
  #: src/ui/dash/settings/AvatarContent.tsx
1920
2224
  #: src/ui/dash/settings/GeneralContent.tsx
2225
+ #: src/ui/dash/settings/LanguageContent.tsx
1921
2226
  msgid "Save"
1922
2227
  msgstr "儲存"
1923
2228
 
@@ -1937,25 +2242,32 @@ msgid "Saved"
1937
2242
  msgstr "已儲存"
1938
2243
 
1939
2244
  #. @context: Config Editor row save status
2245
+ #. @context: Settings save in progress
1940
2246
  #: src/ui/dash/settings/ConfigEditorContent.tsx
2247
+ #: src/ui/dash/settings/LanguageContent.tsx
1941
2248
  msgid "Saving…"
1942
2249
  msgstr "儲存中…"
1943
2250
 
1944
- #. @context: Settings section heading for search engine indexing settings
1945
- #: src/ui/dash/settings/GeneralContent.tsx
1946
- msgid "Search"
1947
- msgstr "搜尋"
1948
-
1949
2251
  #. @context: Config Editor page description
1950
2252
  #: src/ui/dash/settings/ConfigEditorContent.tsx
1951
2253
  msgid "Search and edit runtime settings. Changes apply immediately; reset restores the environment or built-in default."
1952
2254
  msgstr "搜尋和編輯執行階段設定。變更會立即生效;重設會恢復環境變數或內建預設值。"
1953
2255
 
2256
+ #. @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.
2257
+ #: src/ui/dash/settings/GeneralContent.tsx
2258
+ msgid "Search engine indexing is off, so this site is not listed by default. Ticking the box above lists it anyway."
2259
+ msgstr "已關閉搜尋引擎索引,所以預設不會出現在 Jant Discover。勾選上面的選項仍會加入。"
2260
+
1954
2261
  #. @context: Placeholder for the navigation page search
1955
2262
  #: src/ui/dash/appearance/NavigationContent.tsx
1956
2263
  msgid "Search pages"
1957
2264
  msgstr "搜尋頁面"
1958
2265
 
2266
+ #. @context: Placeholder for the navigation page search, which also accepts a pasted URL or path
2267
+ #: src/ui/dash/appearance/NavigationContent.tsx
2268
+ msgid "Search pages, or paste an address"
2269
+ msgstr "搜尋頁面,或貼上位址"
2270
+
1959
2271
  #. @context: GitHub sync picker — search input placeholder
1960
2272
  #: src/routes/dash/settings.tsx
1961
2273
  msgid "Search repositories"
@@ -1964,7 +2276,7 @@ msgstr "搜尋儲存庫"
1964
2276
  #. @context: Settings item description for Config Editor
1965
2277
  #: src/ui/dash/settings/SettingsRootContent.tsx
1966
2278
  msgid "Search runtime settings and open advanced configuration"
1967
- msgstr "搜尋執行階段設定並開啟進階設定"
2279
+ msgstr "搜尋執行階段設定並啟用進階設定"
1968
2280
 
1969
2281
  #. @context: Config Editor search input placeholder
1970
2282
  #. @context: Config Editor search input placeholder
@@ -1980,8 +2292,10 @@ msgstr "搜尋設定"
1980
2292
  msgid "Search settings updated."
1981
2293
  msgstr "搜尋設定已更新。"
1982
2294
 
1983
- #. @context: Placeholder inside the language combobox search field
1984
- #: src/ui/dash/settings/GeneralContent.tsx
2295
+ #. @context: Placeholder in the language picker search box
2296
+ #. @context: Placeholder in the language picker search box
2297
+ #: src/routes/auth/setup.tsx
2298
+ #: src/ui/dash/settings/LanguageContent.tsx
1985
2299
  msgid "Search…"
1986
2300
  msgstr "搜尋…"
1987
2301
 
@@ -2008,7 +2322,7 @@ msgstr "找不到安全權杖。請重新整理頁面後再試一次。"
2008
2322
  #. @context: Settings item description for sessions
2009
2323
  #: src/ui/dash/settings/AccountMenuContent.tsx
2010
2324
  msgid "See where you're signed in and revoke old sessions"
2011
- msgstr "查看您在哪裡已登入,並撤銷舊的工作階段"
2325
+ msgstr "查看你在哪裡已登入,並撤銷舊的工作階段"
2012
2326
 
2013
2327
  #. @context: GitHub sync picker — repo dropdown placeholder
2014
2328
  #: src/routes/dash/settings.tsx
@@ -2047,6 +2361,11 @@ msgstr "設定每頁搜尋結果數;重設後繼承預設分頁大小。"
2047
2361
  msgid "Set the default number of items shown per page."
2048
2362
  msgstr "設定預設每頁顯示的項目數。"
2049
2363
 
2364
+ #. @context: Setup heading on the second self-hosted screen, which asks for the site's name and language
2365
+ #: src/routes/auth/setup.tsx
2366
+ msgid "Set up your site"
2367
+ msgstr "設定你的網站"
2368
+
2050
2369
  #. @context: Breadcrumb label
2051
2370
  #. @context: Page title for the settings home page
2052
2371
  #: src/routes/dash/settings.tsx
@@ -2054,6 +2373,11 @@ msgstr "設定預設每頁顯示的項目數。"
2054
2373
  msgid "Settings"
2055
2374
  msgstr "設定"
2056
2375
 
2376
+ #. @context: Name of the first-run setup screen — shown above the setup card and as the browser tab title
2377
+ #: src/routes/auth/setup.tsx
2378
+ msgid "Setup"
2379
+ msgstr "初始設定"
2380
+
2057
2381
  #. @context: Checkbox for showing the optional Jant credit link on the home page
2058
2382
  #: src/ui/dash/settings/GeneralContent.tsx
2059
2383
  msgid "Show \"Build with Jant\" at the bottom of the home page"
@@ -2084,6 +2408,11 @@ msgstr "在公開標頭顯示網站頭像。"
2084
2408
  msgid "Showing {shown} of {total}"
2085
2409
  msgstr "顯示 {shown} 共 {total}"
2086
2410
 
2411
+ #. @context: Description for the settings system navigation toggle
2412
+ #: src/ui/dash/appearance/system-nav-descriptions.ts
2413
+ msgid "Shows 'Settings' when logged in, 'Sign in' when logged out"
2414
+ msgstr "登入後顯示「設定」,未登入時顯示「登入」。"
2415
+
2087
2416
  #. @context: Settings link — sign out action
2088
2417
  #: src/ui/dash/settings/SettingsRootContent.tsx
2089
2418
  msgid "Sign Out"
@@ -2099,9 +2428,11 @@ msgstr "登入、匯出和刪除"
2099
2428
  msgid "Signed in {date}"
2100
2429
  msgstr "已於 {date} 登入"
2101
2430
 
2431
+ #. @context: Language settings section for reader-facing settings
2102
2432
  #. @context: Settings group label for site settings
2103
2433
  #. @context: Settings subsection heading for basic site fields
2104
2434
  #: src/ui/dash/settings/GeneralContent.tsx
2435
+ #: src/ui/dash/settings/LanguageContent.tsx
2105
2436
  #: src/ui/dash/settings/SettingsRootContent.tsx
2106
2437
  msgid "Site"
2107
2438
  msgstr "網站"
@@ -2119,6 +2450,8 @@ msgid "Site Header"
2119
2450
  msgstr "網站頁首"
2120
2451
 
2121
2452
  #. @context: Settings form field
2453
+ #. @context: Setup form field - site name
2454
+ #: src/routes/auth/setup.tsx
2122
2455
  #: src/ui/dash/settings/GeneralContent.tsx
2123
2456
  msgid "Site Name"
2124
2457
  msgstr "網站名稱"
@@ -2126,7 +2459,19 @@ msgstr "網站名稱"
2126
2459
  #. @context: Toast after saving site settings
2127
2460
  #: src/routes/dash/settings.tsx
2128
2461
  msgid "Site settings updated."
2129
- msgstr "網站設定已更新."
2462
+ msgstr "網站設定已更新。"
2463
+
2464
+ #. @context: Settings section heading covering search engine indexing and the Jant Discover directory
2465
+ #: src/ui/dash/settings/GeneralContent.tsx
2466
+ msgid "Site visibility"
2467
+ msgstr "網站可見性"
2468
+
2469
+ #. @context: Toast after saving the site visibility settings
2470
+ #. @context: Toast after saving the site visibility settings
2471
+ #: src/routes/dash/settings.tsx
2472
+ #: src/routes/dash/settings.tsx
2473
+ msgid "Site visibility updated."
2474
+ msgstr "網站可見性已更新。"
2130
2475
 
2131
2476
  #. @context: Settings item description for code injection
2132
2477
  #: src/ui/dash/settings/SettingsRootContent.tsx
@@ -2148,16 +2493,36 @@ msgstr "柔綠"
2148
2493
  msgid "Soft ivory"
2149
2494
  msgstr "柔象牙白"
2150
2495
 
2496
+ #. @context: Fallback validation error for setup form
2497
+ #: src/routes/auth/setup.tsx
2498
+ msgid "Something doesn't look right. Check the form and try again."
2499
+ msgstr "有欄位填寫不正確,檢查後重試。"
2500
+
2501
+ #. @context: Setup submit button on the last screen, after which the site is live
2502
+ #: src/routes/auth/setup.tsx
2503
+ msgid "Start writing"
2504
+ msgstr "開始寫作"
2505
+
2506
+ #. @context: How far along first-run setup is, shown beside the screen's name on a self-hosted install
2507
+ #: src/routes/auth/setup.tsx
2508
+ msgid "Step {current} of {total}"
2509
+ msgstr "第 {current} 步,共 {total} 步"
2510
+
2151
2511
  #. @context: Description for the Telegram disconnect action
2152
2512
  #: src/ui/dash/settings/TelegramContent.tsx
2153
2513
  msgid "Stop accepting posts from Telegram. Your existing notes stay published."
2154
- msgstr "停止接受來自 Telegram 的貼文。您現有的筆記會保持已發佈。"
2514
+ msgstr "停止接受來自 Telegram 的貼文。你現有的筆記會保持已發佈。"
2155
2515
 
2156
2516
  #. @context: Section heading for suggested nav links
2157
2517
  #: src/ui/dash/appearance/NavigationContent.tsx
2158
2518
  msgid "Suggested links"
2159
2519
  msgstr "建議新增的連結"
2160
2520
 
2521
+ #. @context: Confirm button in the change-primary-language dialog
2522
+ #: src/ui/dash/settings/LanguageContent.tsx
2523
+ msgid "Switch"
2524
+ msgstr "切換"
2525
+
2161
2526
  #. @context: Button to trigger a full content push to GitHub on GitHub Sync settings
2162
2527
  #: src/ui/dash/settings/GitHubSyncContent.tsx
2163
2528
  msgid "Sync Now"
@@ -2199,6 +2564,11 @@ msgstr "已設定 Telegram,但無法連線到機器人。請檢查機器人權
2199
2564
  msgid "That address is already in use. Choose another one."
2200
2565
  msgstr "此網址已被使用。請選擇其他網址。"
2201
2566
 
2567
+ #. @context: Shown when a pasted address points off the site
2568
+ #: src/ui/dash/appearance/NavigationContent.tsx
2569
+ msgid "That address is on another site. Navigation holds it as a link."
2570
+ msgstr "該位址位於其他網站。Navigation 將其視為連結。"
2571
+
2202
2572
  #. @context: Validation error for a reserved page slug
2203
2573
  #: src/ui/dash/appearance/NavigationContent.tsx
2204
2574
  msgid "That address is reserved. Choose another one."
@@ -2207,7 +2577,22 @@ msgstr "此網址為保留網址。請選擇其他網址。"
2207
2577
  #. @context: Error toast when selected font theme is not valid
2208
2578
  #: src/routes/dash/settings.tsx
2209
2579
  msgid "That font theme isn't available. Pick another one."
2210
- msgstr "該字型主題無法使用. 請選擇其他主題."
2580
+ msgstr "該字型主題無法使用。請選擇其他主題。"
2581
+
2582
+ #. @context: Shown when a pasted address resolves to an untitled post
2583
+ #: src/ui/dash/appearance/NavigationContent.tsx
2584
+ msgid "That page has no title yet, so a menu has nothing to show."
2585
+ msgstr "該頁面尚未有標題,因此選單沒有可顯示的項目。"
2586
+
2587
+ #. @context: Shown when a pasted address resolves to a draft
2588
+ #: src/ui/dash/appearance/NavigationContent.tsx
2589
+ msgid "That page is a draft. Publish it, then add it."
2590
+ msgstr "該頁面為草稿。請先發佈,然後再加入。"
2591
+
2592
+ #. @context: Shown when a pasted address resolves to a private page
2593
+ #: src/ui/dash/appearance/NavigationContent.tsx
2594
+ msgid "That page is private, so nobody could open it from a menu."
2595
+ msgstr "該頁面為私人頁面,因此沒有人能從選單開啟它。"
2211
2596
 
2212
2597
  #. @context: Error toast when selected theme is not valid
2213
2598
  #: src/routes/dash/settings.tsx
@@ -2224,20 +2609,35 @@ msgstr "最乾淨、最中性的一檔。"
2224
2609
  msgid "The default. Calm and easy for long reading."
2225
2610
  msgstr "預設主題。沉靜,適合長時間閱讀。"
2226
2611
 
2227
- #. @context: Help text under the dashboard language picker
2612
+ #. @context: Discover status line when the announcement failed. {reason} is the error, such as an HTTP status or a network message.
2228
2613
  #: src/ui/dash/settings/GeneralContent.tsx
2229
- msgid "The language this admin dashboard shows in. Available in English, 简体中文, and 繁體中文."
2230
- msgstr "後台介面顯示的語言。可選 English、简体中文 和 繁體中文。"
2614
+ msgid "The directory could not be reached: {reason}"
2615
+ msgstr "無法連線目錄:{reason}"
2616
+
2617
+ #. @context: Help text for the dashboard language field
2618
+ #: src/ui/dash/settings/LanguageContent.tsx
2619
+ msgid "The language of your admin pages. Only you see this."
2620
+ msgstr "管理後台的顯示語言,只有你看得到。"
2231
2621
 
2232
2622
  #. @context: Config Editor setting description
2233
2623
  #: src/ui/dash/settings/ConfigEditorContent.tsx
2234
2624
  msgid "The language used by the private Jant dashboard."
2235
2625
  msgstr "私人 Jant 儀表板使用的語言。"
2236
2626
 
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 標籤。"
2627
+ #. @context: Help text for the content language field
2628
+ #: src/ui/dash/settings/LanguageContent.tsx
2629
+ msgid "The language you write in."
2630
+ msgstr "你寫作使用的語言。"
2631
+
2632
+ #. @context: Setup form help text under the content language field
2633
+ #: src/routes/auth/setup.tsx
2634
+ msgid "The language your readers and search engines see."
2635
+ msgstr "搜尋引擎看到的語言。"
2636
+
2637
+ #. @context: Config Editor linked setting description
2638
+ #: src/ui/dash/settings/ConfigEditorContent.tsx
2639
+ msgid "The languages served under a URL prefix. Managed on the Language page."
2640
+ msgstr "以網址前綴提供的語言。在「語言」頁管理。"
2241
2641
 
2242
2642
  #. @context: Linen color theme preview help line
2243
2643
  #: src/ui/dash/appearance/ColorThemeContent.tsx
@@ -2249,15 +2649,20 @@ msgstr "Jant 最初的配色,日常穩妥之選。"
2249
2649
  msgid "The page is public but stays out of Latest."
2250
2650
  msgstr "頁面是公開的,但不會出現在 Latest。"
2251
2651
 
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 "當內容語言沒有內建設定檔時使用的襯線備援字型。"
2652
+ #. @context: Help text for the primary language field
2653
+ #: src/ui/dash/settings/LanguageContent.tsx
2654
+ msgid "The root address (/, /feed) shows this language."
2655
+ msgstr "根位址(/、/feed)顯示這個語言的內容。"
2656
+
2657
+ #. @context: Body of the disable-multilingual dialog
2658
+ #: src/ui/dash/settings/LanguageContent.tsx
2659
+ 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."
2660
+ msgstr "根位址將恢復顯示所有語言,{prefix} 這類位址會重新導向到它,既有的連結和訂閱仍然有效。貼文網址和每篇貼文的語言都不受影響,隨時可以重新啟用。"
2256
2661
 
2257
2662
  #. @context: Custom URL target slug help text
2258
2663
  #: src/routes/dash/custom-urls.tsx
2259
2664
  msgid "The slug of the target post or collection"
2260
- msgstr "目標文章或選集的 slug"
2665
+ msgstr "目標貼文或選集的 slug"
2261
2666
 
2262
2667
  #. @context: Config Editor setting description
2263
2668
  #: src/ui/dash/settings/ConfigEditorContent.tsx
@@ -2272,7 +2677,7 @@ msgstr "主題指南"
2272
2677
  #. @context: Description for session management
2273
2678
  #: src/ui/dash/settings/SessionsContent.tsx
2274
2679
  msgid "These devices are currently signed in to your account. Revoke any session you don't recognize."
2275
- msgstr "這些裝置目前已登入您的帳號。撤銷任何您不認識的工作階段。"
2680
+ msgstr "這些裝置目前已登入你的帳號。撤銷任何你不認識的工作階段。"
2276
2681
 
2277
2682
  #. @context: Generic fallback blog name in the delete-account confirmation phrase when the site name is unavailable
2278
2683
  #: src/ui/dash/settings/DeleteAccountContent.tsx
@@ -2282,7 +2687,7 @@ msgstr "此部落格"
2282
2687
  #. @context: Code Injection security warning headline
2283
2688
  #: src/ui/dash/appearance/CodeInjectionContent.tsx
2284
2689
  msgid "This code runs on every page of your site."
2285
- msgstr "此程式碼會在您網站的每個頁面上執行。"
2690
+ msgstr "此程式碼會在你網站的每個頁面上執行。"
2286
2691
 
2287
2692
  #. @context: Help text for choosing whether /feed points to latest or featured posts
2288
2693
  #: src/ui/dash/settings/GeneralContent.tsx
@@ -2302,7 +2707,7 @@ msgstr "這是選集連結的最後一部分。"
2302
2707
  #. @context: Help text for avatar upload
2303
2708
  #: src/ui/dash/settings/AvatarContent.tsx
2304
2709
  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。"
2710
+ msgstr "此圖會用於你的 favicon 和 apple-touch-icon。為達最佳效果,請上傳至少 512x512 像素、背景為純色的正方形 PNG。"
2306
2711
 
2307
2712
  #. @context: Reserved collection slug error in Navigation settings
2308
2713
  #: src/ui/dash/appearance/NavigationContent.tsx
@@ -2327,7 +2732,7 @@ msgstr "此儲存庫已有內容。"
2327
2732
  #. @context: GitHub sync picker — blocking message when marker belongs to another site. Placeholder {host} is the other site's host.
2328
2733
  #: src/routes/dash/settings.tsx
2329
2734
  msgid "This repository is already backing up another Jant site ({host}). Pick a different repository."
2330
- msgstr "此儲存庫已在備份另一個 Jant 網站 ({host}). 請選擇其他儲存庫."
2735
+ msgstr "此儲存庫已在備份另一個 Jant 網站 ({host}). 請選擇其他儲存庫。"
2331
2736
 
2332
2737
  #. @context: GitHub sync picker — shown when the selected repo's marker matches this site
2333
2738
  #: src/routes/dash/settings.tsx
@@ -2339,16 +2744,41 @@ msgstr "此儲存庫已在備份本網站。"
2339
2744
  msgid "This setting wasn't saved. Check the value and try again."
2340
2745
  msgstr "此設定未儲存。請檢查設定值並再試一次。"
2341
2746
 
2747
+ #. @context: Toast when the Discover announcement cannot be sent because no directory is configured, or the site cannot be listed at all
2748
+ #: src/routes/dash/settings.tsx
2749
+ msgid "This site has no directory to announce to."
2750
+ msgstr "這個站點沒有可提交的目錄。"
2751
+
2752
+ #. @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.
2753
+ #: src/ui/dash/settings/GeneralContent.tsx
2754
+ 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."
2755
+ msgstr "目前仍只向 Discover 提供精選貼文,但沒有任何貼文標為 Featured,訂閱源裡沒有可顯示的內容。取消勾選再重新勾選,即可讓 Discover 讀取全部公開貼文。"
2756
+
2342
2757
  #. @context: Warning text on account deletion page
2343
2758
  #: src/ui/dash/settings/DeleteAccountContent.tsx
2344
2759
  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 "這會永久刪除您所有的資料 — 文章、媒體、選集、設定,以及您的帳戶。您的部落格將被重設為初始設定狀態。此操作無法復原。"
2760
+ msgstr "這會永久刪除你的全部資料——貼文、媒體、選集、設定和帳戶。部落格會重設為初始設定狀態。此操作無法復原。"
2761
+
2762
+ #. @context: Config Editor archive layout enum option
2763
+ #: src/ui/dash/settings/ConfigEditorContent.tsx
2764
+ msgid "Tile grid"
2765
+ msgstr "卡片網格"
2766
+
2767
+ #. @context: Settings subsection heading for the time zone field
2768
+ #: src/ui/dash/settings/GeneralContent.tsx
2769
+ msgid "Time"
2770
+ msgstr "時間"
2346
2771
 
2347
2772
  #. @context: Settings form field
2348
2773
  #: src/ui/dash/settings/GeneralContent.tsx
2349
2774
  msgid "Time Zone"
2350
2775
  msgstr "時區"
2351
2776
 
2777
+ #. @context: Toast after saving the time zone
2778
+ #: src/routes/dash/settings.tsx
2779
+ msgid "Time zone updated."
2780
+ msgstr "時區已更新。"
2781
+
2352
2782
  #. @context: Collection title field in Navigation settings
2353
2783
  #. @context: Title field label in quick page creation
2354
2784
  #: src/ui/dash/appearance/NavigationContent.tsx
@@ -2369,7 +2799,7 @@ msgstr "權杖名稱 (API 權杖名稱欄位。)"
2369
2799
  #. @context: API tokens description
2370
2800
  #: src/ui/dash/settings/ApiTokensContent.tsx
2371
2801
  msgid "Tokens let you access the API from scripts, shortcuts, and other tools without signing in."
2372
- msgstr "權杖讓您從腳本, 捷徑和其他工具存取 API 無需登入"
2802
+ msgstr "權杖讓你從腳本,捷徑和其他工具存取 API 無需登入"
2373
2803
 
2374
2804
  #. @context: GitHub sync picker — retry button
2375
2805
  #: src/routes/dash/settings.tsx
@@ -2379,7 +2809,29 @@ msgstr "重試"
2379
2809
  #. @context: Intro text on the settings home page below the title
2380
2810
  #: src/ui/dash/settings/SettingsRootContent.tsx
2381
2811
  msgid "Tune how your site looks, reads, and runs."
2382
- msgstr "調整您的網站外觀、可讀性與執行效能。"
2812
+ msgstr "調整你的網站外觀、可讀性與執行效能。"
2813
+
2814
+ #. @context: Confirm button in the disable-multilingual dialog
2815
+ #: src/ui/dash/settings/LanguageContent.tsx
2816
+ msgid "Turn off"
2817
+ msgstr "關閉"
2818
+
2819
+ #. @context: Title of the dialog confirming removal of the last additional language
2820
+ #. @context: Title of the disable-multilingual dialog
2821
+ #: src/ui/dash/settings/LanguageContent.tsx
2822
+ #: src/ui/dash/settings/LanguageContent.tsx
2823
+ msgid "Turn off multilingual content?"
2824
+ msgstr "關閉多語言?"
2825
+
2826
+ #. @context: Link in the multilingual section that opens the setup dialog
2827
+ #: src/ui/dash/settings/LanguageContent.tsx
2828
+ msgid "Turn on"
2829
+ msgstr "啟用"
2830
+
2831
+ #. @context: Title of the dialog that configures languages and turns multilingual on
2832
+ #: src/ui/dash/settings/LanguageContent.tsx
2833
+ msgid "Turn on multilingual content"
2834
+ msgstr "啟用多語言"
2383
2835
 
2384
2836
  #. @context: Custom URL form field
2385
2837
  #: src/routes/dash/custom-urls.tsx
@@ -2414,7 +2866,7 @@ msgstr "未知裝置"
2414
2866
  #. @context: Settings item description for password change
2415
2867
  #: src/ui/dash/settings/AccountMenuContent.tsx
2416
2868
  msgid "Update the password you use to sign in"
2417
- msgstr "更新您用來登入的密碼"
2869
+ msgstr "更新你用來登入的密碼"
2418
2870
 
2419
2871
  #. @context: Button to upload avatar image
2420
2872
  #: src/ui/dash/settings/AvatarContent.tsx
@@ -2424,7 +2876,7 @@ msgstr "上傳大頭貼"
2424
2876
  #. @context: Error toast when avatar upload fails
2425
2877
  #: src/routes/dash/settings.tsx
2426
2878
  msgid "Upload didn't go through. Try again in a moment."
2427
- msgstr "上傳未成功. 請稍後再試."
2879
+ msgstr "上傳未成功。請稍後再試。"
2428
2880
 
2429
2881
  #. @context: Error message when avatar upload fails
2430
2882
  #: src/ui/dash/settings/AvatarContent.tsx
@@ -2446,6 +2898,11 @@ msgstr "上傳中..."
2446
2898
  msgid "URL"
2447
2899
  msgstr "URL"
2448
2900
 
2901
+ #. @context: Description of the multilingual documentation link
2902
+ #: src/ui/dash/settings/LanguageContent.tsx
2903
+ msgid "URL structure, per-language feeds, and linking translations."
2904
+ msgstr "URL 結構、每種語言的訂閱來源,以及譯本關聯。"
2905
+
2449
2906
  #. @context: Heading for API token usage examples
2450
2907
  #: src/ui/dash/settings/ApiTokensContent.tsx
2451
2908
  msgid "Usage"
@@ -2466,15 +2923,10 @@ msgstr "使用小寫字母、數字和連字號。"
2466
2923
  msgid "Use these when you want a feed URL that never changes."
2467
2924
  msgstr "當你想要一個永遠不會改變的 feed URL 時,請使用這些。"
2468
2925
 
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
2926
  #. @context: Description for choosing featured posts as the main RSS feed
2475
2927
  #: src/ui/dash/settings/GeneralContent.tsx
2476
2928
  msgid "Uses featured posts for /feed."
2477
- msgstr "將精選文章用於 /feed."
2929
+ msgstr "將 Featured 貼文用於 /feed。"
2478
2930
 
2479
2931
  #. @context: Description for choosing the latest posts as the main RSS feed
2480
2932
  #: src/ui/dash/settings/GeneralContent.tsx
@@ -2491,6 +2943,11 @@ msgstr "極淺的象牙底,配淡淡的茶綠。"
2491
2943
  msgid "View"
2492
2944
  msgstr "檢視"
2493
2945
 
2946
+ #. @context: Link in the cannot-remove-language error, leading to that language's archive
2947
+ #: src/ui/dash/settings/LanguageContent.tsx
2948
+ msgid "View these posts"
2949
+ msgstr "查看這些貼文"
2950
+
2494
2951
  #. @context: Prefix before Custom CSS link on color theme page
2495
2952
  #: src/ui/dash/appearance/ColorThemeContent.tsx
2496
2953
  msgid "Want more control?"
@@ -2561,6 +3018,16 @@ msgstr "暖中性,適合長讀。"
2561
3018
  msgid "We'll prefill the name {name}. The list refreshes on return."
2562
3019
  msgstr "我們會預先填入名稱 {name}。返回時清單會重新整理。"
2563
3020
 
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 "你寫作的主要語言是?"
3030
+
2564
3031
  #. @context: Description for backup and restore documentation link in account settings
2565
3032
  #: src/ui/dash/settings/AccountMenuContent.tsx
2566
3033
  msgid "When to use site export, database backups, and recovery drills."
@@ -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 帳號"