@jant/core 0.6.16 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (592) hide show
  1. package/README.md +11 -11
  2. package/bin/commands/assets/upload.js +192 -15
  3. package/bin/commands/export.js +3 -1
  4. package/bin/commands/import-site.js +749 -220
  5. package/bin/commands/reset-password.js +21 -8
  6. package/bin/commands/setup.js +136 -0
  7. package/bin/commands/site/export.js +71 -34
  8. package/bin/commands/site/pull-media.js +2 -6
  9. package/bin/commands/site/snapshot/export.js +19 -61
  10. package/bin/commands/site/snapshot/import.js +23 -24
  11. package/bin/lib/d1-query.js +92 -18
  12. package/bin/lib/hugo-markdown.js +4 -0
  13. package/bin/lib/node-env.js +40 -4
  14. package/bin/lib/site-pull-media.js +21 -28
  15. package/bin/lib/site-selection.js +94 -29
  16. package/bin/lib/site-snapshot.js +338 -3
  17. package/bin/lib/sql-export.js +68 -5
  18. package/bin/lib/wrangler-cli.js +37 -2
  19. package/bin/lib/wrangler-json.js +35 -0
  20. package/bin/lib/zip-archive.js +187 -0
  21. package/dist/{app-C7_4oab9.js → app-ZcaI1kPN.js} +53190 -13529
  22. package/dist/client/.vite/manifest.json +255 -90
  23. package/dist/client/_assets/chunks/confirm-D7GrwsCN.js +45 -0
  24. package/dist/client/_assets/chunks/create-editor-B-m7X7S5.js +261 -0
  25. package/dist/client/_assets/chunks/{native-DpcrFAPh.js → emoji-mart-C4RpRKcU.js} +716 -1
  26. package/dist/client/_assets/chunks/footnote-rail-CmeoVtnU.js +1 -0
  27. package/dist/client/_assets/chunks/heic-to-CuP2Qlsw.js +1 -0
  28. package/dist/client/_assets/chunks/jant-locale-picker-DL6mIOT5.js +69 -0
  29. package/dist/client/_assets/chunks/lit-DW8VmJAT.js +2 -0
  30. package/dist/client/_assets/chunks/mediabunny-DRaCQ1r-.js +31 -0
  31. package/dist/client/_assets/chunks/rolldown-runtime-hePW80VL.js +1 -0
  32. package/dist/client/_assets/chunks/settings-paths-BcdySNx6.js +84 -0
  33. package/dist/client/_assets/chunks/site-header-nav-DzXsFk05.js +1 -0
  34. package/dist/client/_assets/chunks/slug-format-CRXO1AL5.js +1 -0
  35. package/dist/client/_assets/chunks/slugify-373citbs.js +1 -0
  36. package/dist/client/_assets/chunks/sortable-list-BJyd-LXE.js +2 -0
  37. package/dist/client/_assets/chunks/types-D5iF3H1a.js +1 -0
  38. package/dist/client/_assets/chunks/unsafe-html-B5ZEXaxg.js +1 -0
  39. package/dist/client/_assets/chunks/unsafe-svg-BkscJx69.js +2 -0
  40. package/dist/client/_assets/client-DAhoqPdr.css +2 -0
  41. package/dist/client/_assets/client-auth-CAMfTrKW.js +828 -0
  42. package/dist/client/_assets/client-author-DQ8R-8KR.css +2 -0
  43. package/dist/client/_assets/client-compose-D6rExKVK.js +2004 -0
  44. package/dist/client/_assets/client-knSEyUJO.js +295 -0
  45. package/dist/client/_assets/client-manage-sVOkqVbH.js +2170 -0
  46. package/dist/client/_assets/client-settings-CGR_nZ78.js +1112 -0
  47. package/dist/github-sync-Gw4orAHk.js +8398 -0
  48. package/dist/index.js +2 -5
  49. package/dist/node.js +11 -9
  50. package/package.json +15 -5
  51. package/src/__tests__/auth-session-freshness.test.ts +57 -0
  52. package/src/__tests__/basecoat-variants.test.ts +121 -0
  53. package/src/__tests__/bin/assets-upload.test.ts +68 -0
  54. package/src/__tests__/dev-scripts.test.ts +203 -0
  55. package/src/__tests__/export-collection-order.test.ts +276 -0
  56. package/src/__tests__/export-feed-ids.test.ts +184 -0
  57. package/src/__tests__/export-feed-order.test.ts +294 -0
  58. package/src/__tests__/export-hugo-build.test.ts +390 -0
  59. package/src/__tests__/export-import-roundtrip.test.ts +94 -0
  60. package/src/__tests__/export-service.test.ts +842 -28
  61. package/src/__tests__/export-smart-collection.test.ts +329 -0
  62. package/src/__tests__/helpers/component-css.ts +91 -0
  63. package/src/__tests__/helpers/db.ts +33 -0
  64. package/src/__tests__/helpers/export-fixtures.ts +3 -0
  65. package/src/__tests__/helpers/hugo-site.ts +146 -0
  66. package/src/__tests__/import-site-command.test.ts +487 -1
  67. package/src/__tests__/mise-config.test.ts +75 -4
  68. package/src/__tests__/node-dev-tasks.test.ts +264 -0
  69. package/src/__tests__/site-export-canonical-import.test.ts +149 -0
  70. package/src/__tests__/snapshot-canonical-replay.test.ts +179 -0
  71. package/src/__tests__/snapshot-settings.test.ts +97 -0
  72. package/src/__tests__/snapshot-tables.test.ts +219 -0
  73. package/src/__tests__/sql-export.test.ts +173 -0
  74. package/src/__tests__/stylesheet-audience.test.ts +159 -0
  75. package/src/__tests__/stylesheet-breakpoints.test.ts +183 -0
  76. package/src/__tests__/zip-archive.test.ts +106 -0
  77. package/src/app.tsx +86 -22
  78. package/src/auth.ts +18 -1
  79. package/src/client/__tests__/collection-page-actions.test.ts +51 -2
  80. package/src/client/__tests__/compose-bridge-image-upload.test.ts +196 -0
  81. package/src/client/__tests__/compose-bridge-video-poster.test.ts +159 -0
  82. package/src/client/__tests__/compose-bridge.test.ts +272 -0
  83. package/src/client/__tests__/compose-launch.test.ts +62 -1
  84. package/src/client/__tests__/compose-shortcuts.test.ts +38 -9
  85. package/src/client/__tests__/compose-triggers.test.ts +90 -0
  86. package/src/client/__tests__/copy-field.test.ts +162 -0
  87. package/src/client/__tests__/custom-url-menu.test.ts +127 -6
  88. package/src/client/__tests__/image-processor.test.ts +324 -2
  89. package/src/client/__tests__/lazy-entries.test.ts +92 -0
  90. package/src/client/__tests__/media-scroll-hint.test.ts +155 -0
  91. package/src/client/__tests__/runtime-paths.test.ts +84 -0
  92. package/src/client/__tests__/smart-collection-page-actions.test.ts +158 -0
  93. package/src/client/__tests__/toast.test.ts +23 -0
  94. package/src/client/__tests__/video-processor-probe.test.ts +175 -0
  95. package/src/client/__tests__/video-processor.test.ts +181 -0
  96. package/src/client/audio-processor.ts +24 -15
  97. package/src/client/audio-waveform.ts +49 -0
  98. package/src/client/collection-dialog-host.ts +72 -0
  99. package/src/client/collection-navigation.ts +51 -16
  100. package/src/client/collection-page-actions.ts +26 -0
  101. package/src/client/components/__tests__/jant-collection-dialog.test.ts +329 -0
  102. package/src/client/components/__tests__/jant-collection-directory.test.ts +274 -10
  103. package/src/client/components/__tests__/jant-collection-form.test.ts +59 -178
  104. package/src/client/components/__tests__/jant-command-palette.test.ts +28 -0
  105. package/src/client/components/__tests__/jant-compose-dialog-draft-storage.test.ts +340 -0
  106. package/src/client/components/__tests__/jant-compose-dialog.test.ts +1250 -53
  107. package/src/client/components/__tests__/jant-compose-editor.test.ts +544 -40
  108. package/src/client/components/__tests__/jant-compose-fullscreen.test.ts +0 -1
  109. package/src/client/components/__tests__/jant-locale-picker.test.ts +207 -0
  110. package/src/client/components/__tests__/jant-nav-manager.test.ts +234 -15
  111. package/src/client/components/__tests__/jant-post-menu.test.ts +413 -2
  112. package/src/client/components/__tests__/jant-post-picker.test.ts +197 -0
  113. package/src/client/components/__tests__/jant-settings-avatar.test.ts +15 -12
  114. package/src/client/components/__tests__/jant-settings-general.test.ts +561 -172
  115. package/src/client/components/__tests__/jant-settings-language.test.ts +851 -0
  116. package/src/client/components/__tests__/jant-smart-collection-dialog.test.ts +665 -0
  117. package/src/client/components/collection-dialog-types.ts +49 -0
  118. package/src/client/components/collection-manager-types.ts +32 -1
  119. package/src/client/components/collection-types.ts +1 -15
  120. package/src/client/components/compose-types.ts +75 -1
  121. package/src/client/components/jant-collection-dialog.ts +722 -0
  122. package/src/client/components/jant-collection-directory.ts +567 -182
  123. package/src/client/components/jant-collection-form.ts +53 -232
  124. package/src/client/components/jant-command-palette.ts +100 -49
  125. package/src/client/components/jant-compose-dialog.ts +1486 -707
  126. package/src/client/components/jant-compose-editor.ts +673 -336
  127. package/src/client/components/jant-compose-fullscreen.ts +51 -43
  128. package/src/client/components/jant-config-editor.ts +65 -53
  129. package/src/client/components/jant-confirm-dialog.ts +13 -11
  130. package/src/client/components/jant-locale-picker.ts +418 -0
  131. package/src/client/components/jant-media-lightbox.ts +146 -136
  132. package/src/client/components/jant-nav-manager.ts +690 -366
  133. package/src/client/components/jant-post-menu.ts +1086 -282
  134. package/src/client/components/jant-post-picker.ts +324 -0
  135. package/src/client/components/jant-repo-picker-types.ts +6 -1
  136. package/src/client/components/jant-repo-picker.ts +137 -108
  137. package/src/client/components/jant-settings-avatar.ts +31 -27
  138. package/src/client/components/jant-settings-general.ts +622 -543
  139. package/src/client/components/jant-settings-language.ts +1087 -0
  140. package/src/client/components/jant-smart-collection-dialog.ts +1021 -0
  141. package/src/client/components/jant-text-preview.ts +94 -86
  142. package/src/client/components/nav-manager-types.ts +62 -1
  143. package/src/client/components/settings-types.ts +14 -29
  144. package/src/client/components/smart-collection-conditions.ts +285 -0
  145. package/src/client/components/smart-collection-dialog-types.ts +68 -0
  146. package/src/client/compose-bridge.ts +214 -141
  147. package/src/client/compose-launch.ts +76 -2
  148. package/src/client/compose-shortcuts.ts +6 -8
  149. package/src/client/compose-triggers.ts +50 -0
  150. package/src/client/copy-field.ts +108 -0
  151. package/src/client/custom-url-menu.ts +60 -4
  152. package/src/client/icons.ts +14 -0
  153. package/src/client/image-plan.ts +165 -0
  154. package/src/client/image-processor.ts +195 -117
  155. package/src/client/image-worker-client.ts +45 -0
  156. package/src/client/image-worker.ts +135 -0
  157. package/src/client/lazy-entries.ts +95 -0
  158. package/src/client/lazy-slugify.ts +2 -2
  159. package/src/client/media-scroll-hint.ts +43 -2
  160. package/src/client/mediabunny.ts +29 -0
  161. package/src/client/post-picker.ts +41 -0
  162. package/src/client/runtime-paths.ts +74 -1
  163. package/src/client/settings-bridge.ts +4 -10
  164. package/src/client/site-header-nav.js +18 -6
  165. package/src/client/smart-collection-dialog-host.ts +116 -0
  166. package/src/client/smart-collection-page-actions.ts +208 -0
  167. package/src/client/tiptap/__tests__/bubble-menu.test.ts +110 -0
  168. package/src/client/tiptap/__tests__/floating-position.test.ts +136 -1
  169. package/src/client/tiptap/__tests__/inline-image-upload.test.ts +37 -0
  170. package/src/client/tiptap/__tests__/list-editing.test.ts +224 -86
  171. package/src/client/tiptap/__tests__/mark-exit.test.ts +1 -2
  172. package/src/client/tiptap/__tests__/markdown-clipboard.test.ts +26 -0
  173. package/src/client/tiptap/bubble-menu.ts +47 -16
  174. package/src/client/tiptap/extensions.ts +0 -3
  175. package/src/client/tiptap/floating-position.ts +216 -2
  176. package/src/client/tiptap/inline-image-upload.ts +7 -3
  177. package/src/client/tiptap/link-toolbar.ts +22 -9
  178. package/src/client/tiptap/structural-keymap.ts +158 -47
  179. package/src/client/toast.ts +13 -0
  180. package/src/client/types/vite-worker.d.ts +12 -0
  181. package/src/client/upload-with-metadata.ts +3 -13
  182. package/src/client/video-processor.ts +351 -107
  183. package/src/client-auth.ts +14 -31
  184. package/src/client-compose.ts +19 -0
  185. package/src/client-manage.ts +13 -0
  186. package/src/client-settings.ts +14 -0
  187. package/src/client-site.ts +10 -3
  188. package/src/client.ts +4 -0
  189. package/src/db/__tests__/backfill-nav-label-mirrors.test.ts +149 -0
  190. package/src/db/__tests__/d1-query.test.ts +56 -1
  191. package/src/db/__tests__/schema-enum-sources.test.ts +33 -0
  192. package/src/db/__tests__/smart-collection-placement.test.ts +402 -0
  193. package/src/db/backfills/0006_clear_mirrored_page_nav_labels.sql +31 -0
  194. package/src/db/migrations/0032_married_tomas.sql +3 -0
  195. package/src/db/migrations/0033_busy_johnny_storm.sql +198 -0
  196. package/src/db/migrations/0034_cheerful_rumiko_fujikawa.sql +35 -0
  197. package/src/db/migrations/meta/0032_snapshot.json +2582 -0
  198. package/src/db/migrations/meta/0033_snapshot.json +2816 -0
  199. package/src/db/migrations/meta/0034_snapshot.json +2816 -0
  200. package/src/db/migrations/meta/_journal.json +21 -0
  201. package/src/db/migrations/pg/0030_abandoned_nighthawk.sql +3 -0
  202. package/src/db/migrations/pg/0031_strong_ultimatum.sql +128 -0
  203. package/src/db/migrations/pg/0032_furry_multiple_man.sql +6 -0
  204. package/src/db/migrations/pg/meta/0030_snapshot.json +3329 -0
  205. package/src/db/migrations/pg/meta/0031_snapshot.json +3660 -0
  206. package/src/db/migrations/pg/meta/0032_snapshot.json +3660 -0
  207. package/src/db/migrations/pg/meta/_journal.json +21 -0
  208. package/src/db/pg/schema.ts +195 -27
  209. package/src/db/post-visibility.ts +117 -0
  210. package/src/db/schema.ts +222 -27
  211. package/src/i18n/__tests__/detect.test.ts +26 -81
  212. package/src/i18n/__tests__/supported-locales.test.ts +83 -0
  213. package/src/i18n/context.tsx +12 -2
  214. package/src/i18n/detect.ts +7 -66
  215. package/src/i18n/locales/glossary.zh-Hans.yml +44 -4
  216. package/src/i18n/locales/glossary.zh-Hant.yml +44 -4
  217. package/src/i18n/locales/public/en.po +490 -158
  218. package/src/i18n/locales/public/en.ts +1 -1
  219. package/src/i18n/locales/public/zh-Hans.po +487 -155
  220. package/src/i18n/locales/public/zh-Hans.ts +1 -1
  221. package/src/i18n/locales/public/zh-Hant.po +487 -155
  222. package/src/i18n/locales/public/zh-Hant.ts +1 -1
  223. package/src/i18n/locales/settings/en.po +555 -73
  224. package/src/i18n/locales/settings/en.ts +1 -1
  225. package/src/i18n/locales/settings/zh-Hans.po +601 -119
  226. package/src/i18n/locales/settings/zh-Hans.ts +1 -1
  227. package/src/i18n/locales/settings/zh-Hant.po +614 -132
  228. package/src/i18n/locales/settings/zh-Hant.ts +1 -1
  229. package/src/i18n/locales.ts +94 -0
  230. package/src/i18n/middleware.ts +12 -2
  231. package/src/i18n/supported-locales.ts +80 -0
  232. package/src/lib/__tests__/api-settings.test.ts +11 -2
  233. package/src/lib/__tests__/asset-path.test.ts +92 -0
  234. package/src/lib/__tests__/deferred.test.ts +90 -0
  235. package/src/lib/__tests__/discover-ping.test.ts +89 -0
  236. package/src/lib/__tests__/discover.test.ts +410 -0
  237. package/src/lib/__tests__/feed-policy.test.ts +26 -0
  238. package/src/lib/__tests__/feed.test.ts +1526 -15
  239. package/src/lib/__tests__/filter-dimensions.test.ts +341 -0
  240. package/src/lib/__tests__/github-sync-repo-name.test.ts +40 -0
  241. package/src/lib/__tests__/hosted-signin.test.ts +1 -1
  242. package/src/lib/__tests__/http-cache.test.ts +162 -0
  243. package/src/lib/__tests__/image.test.ts +27 -1
  244. package/src/lib/__tests__/jant-docs-dev.test.ts +21 -0
  245. package/src/lib/__tests__/jant-docs.test.ts +23 -0
  246. package/src/lib/__tests__/lang-detect.test.ts +231 -0
  247. package/src/lib/__tests__/markdown-to-tiptap.test.ts +105 -0
  248. package/src/lib/__tests__/markdown.test.ts +10 -0
  249. package/src/lib/__tests__/media-helpers.test.ts +81 -0
  250. package/src/lib/__tests__/navigation.test.ts +135 -1
  251. package/src/lib/__tests__/resolve-config.test.ts +131 -3
  252. package/src/lib/__tests__/schemas.test.ts +69 -5
  253. package/src/lib/__tests__/site-unavailable-page.test.ts +25 -0
  254. package/src/lib/__tests__/slug.test.ts +70 -0
  255. package/src/lib/__tests__/slugify.test.ts +85 -0
  256. package/src/lib/__tests__/storage.test.ts +32 -0
  257. package/src/lib/__tests__/thread-fold.test.ts +113 -0
  258. package/src/lib/__tests__/timeline.test.ts +87 -0
  259. package/src/lib/__tests__/tiptap-to-markdown.test.ts +172 -4
  260. package/src/lib/__tests__/upload-sideload.test.ts +14 -0
  261. package/src/lib/__tests__/url-fetch.test.ts +1 -2
  262. package/src/lib/__tests__/url.test.ts +78 -72
  263. package/src/lib/__tests__/view-language.test.ts +413 -0
  264. package/src/lib/__tests__/worker-response-cache.test.ts +90 -0
  265. package/src/lib/address.ts +57 -0
  266. package/src/lib/api-posts.ts +12 -0
  267. package/src/lib/asset-path.ts +98 -1
  268. package/src/lib/build-env.ts +16 -0
  269. package/src/lib/collection-groups.ts +5 -1
  270. package/src/lib/collection-paths.ts +3 -10
  271. package/src/lib/constants.ts +28 -3
  272. package/src/lib/copy-field.ts +36 -0
  273. package/src/lib/crypto.ts +40 -0
  274. package/src/lib/csp-builder.ts +2 -1
  275. package/src/lib/deferred.ts +79 -0
  276. package/src/lib/discover-ping.ts +141 -0
  277. package/src/lib/discover.ts +439 -0
  278. package/src/lib/env.ts +134 -0
  279. package/src/lib/errors.ts +33 -0
  280. package/src/lib/feed-policy.ts +236 -2
  281. package/src/lib/feed.ts +926 -73
  282. package/src/lib/filter-dimensions.ts +1349 -0
  283. package/src/lib/github-sync-repo-name.ts +45 -0
  284. package/src/lib/github-sync-site-config.ts +3 -0
  285. package/src/lib/hosted-signin.ts +1 -1
  286. package/src/lib/http-cache.ts +148 -0
  287. package/src/lib/hugo-markdown.ts +62 -0
  288. package/src/lib/icons.ts +9 -2
  289. package/src/lib/ids.ts +3 -0
  290. package/src/lib/image.ts +17 -4
  291. package/src/lib/jant-docs.ts +42 -0
  292. package/src/lib/lang-detect.ts +308 -0
  293. package/src/lib/markdown-manager.ts +392 -2
  294. package/src/lib/media-helpers.ts +13 -1
  295. package/src/lib/navigation.ts +78 -11
  296. package/src/lib/pagination.ts +28 -24
  297. package/src/lib/per-language-surfaces.ts +67 -0
  298. package/src/lib/post-body-html.ts +11 -4
  299. package/src/lib/post-meta.ts +19 -0
  300. package/src/lib/render.tsx +55 -7
  301. package/src/lib/resolve-config.ts +111 -6
  302. package/src/lib/schemas.ts +251 -15
  303. package/src/lib/site-header-fragment.tsx +2 -1
  304. package/src/lib/site-unavailable-page.ts +47 -0
  305. package/src/lib/slug.ts +51 -7
  306. package/src/lib/slugify.ts +113 -0
  307. package/src/lib/startup-config.ts +4 -6
  308. package/src/lib/storage.ts +7 -0
  309. package/src/lib/summary.ts +50 -0
  310. package/src/lib/thread-fold.ts +161 -0
  311. package/src/lib/time.ts +32 -0
  312. package/src/lib/timeline.ts +43 -2
  313. package/src/lib/tiptap-render.ts +1 -2
  314. package/src/lib/tiptap-to-markdown.ts +13 -7
  315. package/src/lib/upload.ts +16 -13
  316. package/src/lib/url.ts +159 -86
  317. package/src/lib/version.ts +10 -8
  318. package/src/lib/view-language.ts +436 -0
  319. package/src/lib/view.ts +53 -25
  320. package/src/lib/viewer-context.ts +62 -0
  321. package/src/middleware/__tests__/auth.test.ts +70 -2
  322. package/src/middleware/__tests__/cache-control.test.ts +71 -3
  323. package/src/middleware/__tests__/onboarding.test.ts +76 -5
  324. package/src/middleware/__tests__/secure-headers.test.ts +1 -1
  325. package/src/middleware/__tests__/session.test.ts +181 -33
  326. package/src/middleware/auth.ts +50 -31
  327. package/src/middleware/cache-control.ts +75 -10
  328. package/src/middleware/config.ts +6 -6
  329. package/src/middleware/error-handler.ts +12 -0
  330. package/src/middleware/onboarding.ts +32 -10
  331. package/src/middleware/secure-headers.ts +1 -1
  332. package/src/middleware/session.ts +96 -8
  333. package/src/node/__tests__/cli-migrate.test.ts +21 -19
  334. package/src/node/__tests__/cli-reset-password.test.ts +81 -8
  335. package/src/node/__tests__/cli-runtime-target.test.ts +48 -1
  336. package/src/node/__tests__/cli-setup.test.ts +163 -0
  337. package/src/node/__tests__/cli-site-selection.test.ts +128 -38
  338. package/src/node/__tests__/cli-site-snapshot.test.ts +67 -0
  339. package/src/node/__tests__/cli-snapshot-meta.test.ts +20 -0
  340. package/src/node/__tests__/runtime.test.ts +75 -0
  341. package/src/node/index.ts +3 -0
  342. package/src/node/request-handler.ts +3 -1
  343. package/src/preset.css +76 -22
  344. package/src/routes/__tests__/feed-validator.test.ts +156 -0
  345. package/src/routes/api/__tests__/collections.test.ts +114 -0
  346. package/src/routes/api/__tests__/discover.test.ts +222 -0
  347. package/src/routes/api/__tests__/nav-items.test.ts +212 -2
  348. package/src/routes/api/__tests__/post-translations.test.ts +829 -0
  349. package/src/routes/api/__tests__/posts.test.ts +24 -0
  350. package/src/routes/api/__tests__/settings.test.ts +24 -3
  351. package/src/routes/api/__tests__/telegram.test.ts +6 -5
  352. package/src/routes/api/__tests__/upload.test.ts +34 -0
  353. package/src/routes/api/collections.ts +49 -6
  354. package/src/routes/api/custom-urls.ts +0 -1
  355. package/src/routes/api/discover.ts +95 -0
  356. package/src/routes/api/export.ts +6 -3
  357. package/src/routes/api/internal/__tests__/sites.test.ts +42 -2
  358. package/src/routes/api/internal/sites.ts +0 -1
  359. package/src/routes/api/nav-items.ts +55 -8
  360. package/src/routes/api/posts.ts +161 -0
  361. package/src/routes/api/public/__tests__/archive.test.ts +111 -0
  362. package/src/routes/api/public/archive.ts +77 -81
  363. package/src/routes/api/public/posts.ts +44 -7
  364. package/src/routes/api/smart-collections.ts +132 -0
  365. package/src/routes/api/telegram.ts +2 -40
  366. package/src/routes/api/upload.ts +10 -3
  367. package/src/routes/api/uploads.ts +1 -2
  368. package/src/routes/auth/__tests__/setup-auth.test.ts +137 -0
  369. package/src/routes/auth/__tests__/setup-discover.test.ts +204 -0
  370. package/src/routes/auth/__tests__/setup-flow.test.ts +270 -0
  371. package/src/routes/auth/__tests__/setup-page.test.tsx +329 -0
  372. package/src/routes/auth/__tests__/setup-steps.test.ts +310 -0
  373. package/src/routes/auth/__tests__/setup.test.ts +278 -26
  374. package/src/routes/auth/__tests__/signin.test.ts +135 -0
  375. package/src/routes/auth/setup.tsx +934 -186
  376. package/src/routes/auth/signin.tsx +10 -8
  377. package/src/routes/compose.tsx +9 -0
  378. package/src/routes/dash/__tests__/custom-urls-archive.test.ts +44 -0
  379. package/src/routes/dash/__tests__/custom-urls-page.test.ts +49 -0
  380. package/src/routes/dash/__tests__/delete-account.test.ts +106 -0
  381. package/src/routes/dash/__tests__/github-sync-app.test.ts +365 -0
  382. package/src/routes/dash/__tests__/settings-discover.test.ts +213 -0
  383. package/src/routes/dash/custom-urls.tsx +1 -37
  384. package/src/routes/dash/settings.tsx +714 -111
  385. package/src/routes/discover-announce.ts +96 -0
  386. package/src/routes/feed/__tests__/feed.test.ts +165 -2
  387. package/src/routes/feed/feed.ts +69 -40
  388. package/src/routes/feed/sitemap.ts +95 -11
  389. package/src/routes/pages/__tests__/archive-indexing.test.ts +200 -0
  390. package/src/routes/pages/__tests__/archive-params.test.ts +370 -6
  391. package/src/routes/pages/__tests__/collection-routing.test.ts +16 -0
  392. package/src/routes/pages/__tests__/collections-feed-links.test.ts +72 -0
  393. package/src/routes/pages/__tests__/collections.test.ts +9 -3
  394. package/src/routes/pages/__tests__/custom-archive-url.test.ts +119 -0
  395. package/src/routes/pages/__tests__/feed-autodiscovery.test.ts +148 -0
  396. package/src/routes/pages/__tests__/language-routing.test.ts +679 -0
  397. package/src/routes/pages/__tests__/post-page-round-trips.test.ts +211 -0
  398. package/src/routes/pages/__tests__/post-preview-partial.test.ts +96 -0
  399. package/src/routes/pages/__tests__/smart-collection.test.ts +298 -0
  400. package/src/routes/pages/__tests__/subscribe.test.ts +248 -0
  401. package/src/routes/pages/__tests__/thread-order.test.ts +179 -0
  402. package/src/routes/pages/archive.tsx +487 -379
  403. package/src/routes/pages/collection.tsx +94 -96
  404. package/src/routes/pages/collections.tsx +38 -50
  405. package/src/routes/pages/featured.tsx +43 -18
  406. package/src/routes/pages/home.tsx +25 -6
  407. package/src/routes/pages/language.tsx +113 -0
  408. package/src/routes/pages/latest.tsx +26 -16
  409. package/src/routes/pages/new.tsx +3 -0
  410. package/src/routes/pages/page.tsx +228 -45
  411. package/src/routes/pages/partials.tsx +41 -0
  412. package/src/routes/pages/search.tsx +22 -5
  413. package/src/routes/pages/smart-collection.tsx +340 -0
  414. package/src/routes/pages/subscribe.tsx +182 -0
  415. package/src/runtime/__tests__/index.test.ts +19 -0
  416. package/src/runtime/__tests__/node.test.ts +129 -4
  417. package/src/runtime/__tests__/readiness.test.ts +23 -0
  418. package/src/runtime/cloudflare.ts +21 -2
  419. package/src/runtime/index.ts +27 -1
  420. package/src/runtime/node.ts +67 -1
  421. package/src/runtime/readiness.ts +15 -0
  422. package/src/runtime/site.ts +95 -24
  423. package/src/services/__tests__/auth.test.ts +116 -7
  424. package/src/services/__tests__/bootstrap-setup-instance.test.ts +230 -0
  425. package/src/services/__tests__/collection.test.ts +108 -4
  426. package/src/services/__tests__/custom-url.test.ts +34 -0
  427. package/src/services/__tests__/github-app-installations.test.ts +153 -0
  428. package/src/services/__tests__/github-sync-push.test.ts +46 -0
  429. package/src/services/__tests__/language.test.ts +495 -0
  430. package/src/services/__tests__/media.test.ts +31 -0
  431. package/src/services/__tests__/navigation.test.ts +213 -10
  432. package/src/services/__tests__/path.test.ts +236 -0
  433. package/src/services/__tests__/post-language.test.ts +830 -0
  434. package/src/services/__tests__/post-timeline.test.ts +127 -0
  435. package/src/services/__tests__/post.test.ts +120 -9
  436. package/src/services/__tests__/settings.test.ts +228 -17
  437. package/src/services/__tests__/site-admin.test.ts +5 -5
  438. package/src/services/__tests__/smart-collection.test.ts +651 -0
  439. package/src/services/about-page.ts +22 -1
  440. package/src/services/auth.ts +51 -49
  441. package/src/services/bootstrap.ts +408 -39
  442. package/src/services/collection-directory-position.ts +76 -0
  443. package/src/services/collection.ts +331 -46
  444. package/src/services/custom-url.ts +29 -24
  445. package/src/services/export-theme/assets/client-site.css +1 -1
  446. package/src/services/export-theme/assets/client-site.js +123 -123
  447. package/src/services/export-theme/layouts/_default/alias.html +27 -1
  448. package/src/services/export-theme/layouts/_default/list.html +2 -63
  449. package/src/services/export-theme/layouts/_default/rss.xml +103 -38
  450. package/src/services/export-theme/layouts/collections/list.html +3 -3
  451. package/src/services/export-theme/layouts/featured/list.html +1 -4
  452. package/src/services/export-theme/layouts/index.html +40 -26
  453. package/src/services/export-theme/layouts/partials/collection-members.html +100 -0
  454. package/src/services/export-theme/layouts/partials/collection-threads.html +33 -0
  455. package/src/services/export-theme/layouts/partials/featured-members.html +35 -0
  456. package/src/services/export-theme/layouts/partials/featured-thread.html +1 -1
  457. package/src/services/export-theme/layouts/partials/feed-post-content.xml +105 -2
  458. package/src/services/export-theme/layouts/partials/footer.html +1 -1
  459. package/src/services/export-theme/layouts/partials/head.html +1 -1
  460. package/src/services/export-theme/layouts/partials/header.html +5 -3
  461. package/src/services/export-theme/layouts/partials/jant-data.html +23 -0
  462. package/src/services/export-theme/layouts/partials/latest-members.html +48 -0
  463. package/src/services/export-theme/layouts/partials/media-gallery.html +35 -21
  464. package/src/services/export-theme/layouts/partials/pagination.html +14 -13
  465. package/src/services/export-theme/layouts/partials/post-card.html +8 -4
  466. package/src/services/export-theme/layouts/partials/reply.html +2 -1
  467. package/src/services/export-theme/layouts/partials/smart-collection-members.html +129 -0
  468. package/src/services/export-theme/layouts/partials/thread-preview.html +41 -31
  469. package/src/services/export-theme/layouts/post/list.html +1 -1
  470. package/src/services/export-theme/layouts/smart_collection/list.html +24 -0
  471. package/src/services/export-theme/styles/main.css +13 -2
  472. package/src/services/export-theme/theme.toml +1 -1
  473. package/src/services/export.ts +880 -72
  474. package/src/services/github-app-installations.ts +171 -4
  475. package/src/services/github-sync.ts +69 -15
  476. package/src/services/index.ts +34 -3
  477. package/src/services/language.ts +412 -0
  478. package/src/services/mcp.ts +22 -2
  479. package/src/services/media.ts +22 -7
  480. package/src/services/navigation.ts +429 -67
  481. package/src/services/path.ts +254 -6
  482. package/src/services/post.ts +1234 -190
  483. package/src/services/search.ts +39 -2
  484. package/src/services/settings.ts +238 -43
  485. package/src/services/site-admin.ts +27 -14
  486. package/src/services/site.ts +160 -32
  487. package/src/services/smart-collection.ts +636 -0
  488. package/src/services/telegram.ts +20 -22
  489. package/src/services/upload-session.ts +1 -3
  490. package/src/style-author.css +27 -0
  491. package/src/styles/components-author.css +1622 -0
  492. package/src/styles/components.css +24 -1571
  493. package/src/styles/site-media.css +16 -2
  494. package/src/styles/tokens.css +82 -12
  495. package/src/styles/ui-author.css +7602 -0
  496. package/src/styles/ui.css +1090 -7216
  497. package/src/types/app-context.ts +23 -0
  498. package/src/types/bindings.ts +8 -0
  499. package/src/types/config.ts +94 -15
  500. package/src/types/constants.ts +188 -16
  501. package/src/types/entities.ts +87 -1
  502. package/src/types/operations.ts +74 -2
  503. package/src/types/props.ts +157 -31
  504. package/src/types/views.ts +55 -1
  505. package/src/ui/__tests__/font-themes.test.ts +52 -12
  506. package/src/ui/compose/ComposeDialog.tsx +201 -7
  507. package/src/ui/compose/ComposePrompt.tsx +1 -5
  508. package/src/ui/compose/__tests__/ComposeDialog.test.tsx +125 -0
  509. package/src/ui/dash/appearance/AdvancedContent.tsx +2 -2
  510. package/src/ui/dash/appearance/CodeInjectionContent.tsx +12 -16
  511. package/src/ui/dash/appearance/NavigationContent.tsx +117 -16
  512. package/src/ui/dash/appearance/__tests__/NavigationContent.test.tsx +33 -11
  513. package/src/ui/dash/appearance/__tests__/system-nav-descriptions.test.ts +44 -0
  514. package/src/ui/dash/appearance/system-nav-descriptions.ts +75 -0
  515. package/src/ui/dash/settings/AccountMenuContent.tsx +2 -2
  516. package/src/ui/dash/settings/ApiTokensContent.tsx +2 -1
  517. package/src/ui/dash/settings/ConfigEditorContent.tsx +35 -16
  518. package/src/ui/dash/settings/GeneralContent.tsx +277 -113
  519. package/src/ui/dash/settings/LanguageContent.tsx +409 -0
  520. package/src/ui/dash/settings/SettingsRootContent.tsx +19 -1
  521. package/src/ui/dash/settings/__tests__/GeneralContent.test.tsx +324 -4
  522. package/src/ui/dash/settings/__tests__/LanguageContent.test.tsx +144 -0
  523. package/src/ui/dash/settings/__tests__/discover-copy.test.ts +66 -0
  524. package/src/ui/dash/settings/discover-copy.ts +116 -0
  525. package/src/ui/feed/LinkCard.tsx +55 -45
  526. package/src/ui/feed/NoteCard.tsx +9 -4
  527. package/src/ui/feed/PostStatusBadges.tsx +90 -43
  528. package/src/ui/feed/QuoteCard.tsx +55 -30
  529. package/src/ui/feed/ThreadPreview.tsx +6 -2
  530. package/src/ui/feed/__tests__/thread-preview.test.ts +13 -16
  531. package/src/ui/feed/__tests__/timeline-cards.test.ts +314 -49
  532. package/src/ui/feed/thread-preview-state.ts +20 -6
  533. package/src/ui/font-themes.ts +39 -29
  534. package/src/ui/layouts/BaseLayout.tsx +155 -10
  535. package/src/ui/layouts/SiteLayout.tsx +192 -34
  536. package/src/ui/layouts/__tests__/BaseLayout.test.tsx +196 -17
  537. package/src/ui/layouts/__tests__/SiteLayout.test.tsx +109 -85
  538. package/src/ui/pages/ArchivePage.tsx +282 -289
  539. package/src/ui/pages/CollectionPage.tsx +86 -76
  540. package/src/ui/pages/CollectionsPage.tsx +5 -0
  541. package/src/ui/pages/ComposePage.tsx +8 -0
  542. package/src/ui/pages/PostPage.tsx +47 -0
  543. package/src/ui/pages/SearchPage.tsx +3 -3
  544. package/src/ui/pages/SmartCollectionPage.tsx +434 -0
  545. package/src/ui/pages/SubscribePage.tsx +236 -0
  546. package/src/ui/pages/__tests__/ArchivePage.test.tsx +65 -9
  547. package/src/ui/pages/__tests__/collections-directory-rows.test.tsx +92 -0
  548. package/src/ui/pages/__tests__/collections-view-links.test.tsx +81 -0
  549. package/src/ui/shared/CollectionDirectory.tsx +178 -3
  550. package/src/ui/shared/CollectionsManager.tsx +70 -17
  551. package/src/ui/shared/CopyField.tsx +127 -0
  552. package/src/ui/shared/EmptyPostContent.tsx +23 -0
  553. package/src/ui/shared/MediaGallery.tsx +125 -46
  554. package/src/ui/shared/Pagination.tsx +20 -5
  555. package/src/ui/shared/PostFooter.tsx +20 -11
  556. package/src/ui/shared/__tests__/archive-labels.test.ts +100 -0
  557. package/src/ui/shared/__tests__/media-gallery.test.ts +210 -2
  558. package/src/ui/shared/__tests__/navigation-labels.test.ts +16 -22
  559. package/src/ui/shared/__tests__/pagination.test.ts +38 -24
  560. package/src/ui/shared/__tests__/post-footer.test.ts +32 -0
  561. package/src/ui/shared/archive-labels.ts +98 -0
  562. package/src/ui/shared/collection-management-labels.ts +94 -16
  563. package/src/ui/shared/navigation-labels.ts +45 -71
  564. package/src/ui/shared/post-article-attributes.ts +2 -0
  565. package/src/ui/shared/smart-collection-labels.ts +343 -0
  566. package/dist/app-C75Zc8dD.js +0 -6
  567. package/dist/client/_assets/chunks/heic-to-DUUaO23q.js +0 -1
  568. package/dist/client/_assets/chunks/module-DcsAZQZ_.js +0 -716
  569. package/dist/client/_assets/chunks/url-CU9pEbk5.js +0 -1
  570. package/dist/client/_assets/client-Bq0vre8Y.js +0 -296
  571. package/dist/client/_assets/client-D3VZyG4L.css +0 -2
  572. package/dist/client/_assets/client-auth-F2rb9WfF.js +0 -5571
  573. package/dist/env-BPYViDJJ.js +0 -281
  574. package/dist/export-Dl5KCiEs.js +0 -5562
  575. package/dist/github-api-BNF35Lkx.js +0 -176
  576. package/dist/github-app-DdiD-bC4.js +0 -275
  577. package/dist/github-sync-Bqg62IvV.js +0 -4
  578. package/dist/github-sync-HdK2EgvJ.js +0 -431
  579. package/dist/url-CbLAtlZe.js +0 -900
  580. package/src/client/__tests__/collection-created-notice.test.ts +0 -36
  581. package/src/client/__tests__/collection-form-bridge.test.ts +0 -216
  582. package/src/client/__tests__/post-form-bridge.test.ts +0 -82
  583. package/src/client/collection-created-notice.ts +0 -66
  584. package/src/client/collection-form-bridge.ts +0 -191
  585. package/src/client/components/__tests__/jant-post-form.test.ts +0 -193
  586. package/src/client/components/jant-post-form.ts +0 -422
  587. package/src/client/components/post-form-template.ts +0 -352
  588. package/src/client/components/post-form-types.ts +0 -96
  589. package/src/client/media-metadata.ts +0 -247
  590. package/src/client/post-form-bridge.ts +0 -193
  591. package/src/client/tiptap/exitable-marks.ts +0 -73
  592. package/src/ui/pages/CollectionEditorPage.tsx +0 -175
@@ -13,11 +13,46 @@ 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} 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}."
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, one {# existing post} other {# existing posts}} with no language yet will be marked as {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, one {# post is} other {# posts are}} still written in {language}. Change their language, or keep the 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, one {# post is} other {# posts are}} written in {language}, which is not on this list. Add it back, or change their language first."
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} settings shown"
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} 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."
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} is a directory of Jant blogs, curated by hand by the Jant community to help people find new Jant blogs and posts."
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 "{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."
55
+
21
56
  #. @context: Custom CSS textarea placeholder
22
57
  #: src/ui/dash/appearance/AdvancedContent.tsx
23
58
  msgid "/* Your custom CSS here */"
@@ -109,11 +144,26 @@ msgstr "Active Tokens"
109
144
  msgid "Add"
110
145
  msgstr "Add"
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 "Add {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 "Add a custom link to any 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 "Add as link"
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 "Add at least one more language to turn this on."
166
+
117
167
  #. @context: Button for adding a collection to nav
118
168
  #: src/ui/dash/appearance/NavigationContent.tsx
119
169
  msgid "Add Collection"
@@ -149,6 +199,11 @@ msgstr "Add it to navigation now or open the editor to add content."
149
199
  msgid "Add it to navigation now or open the editor to add details."
150
200
  msgstr "Add it to navigation now or open the editor to add details."
151
201
 
202
+ #. @context: Button that adds another content language
203
+ #: src/ui/dash/settings/LanguageContent.tsx
204
+ msgid "Add language"
205
+ msgstr "Add language"
206
+
152
207
  #. @context: Button and heading for adding custom link
153
208
  #: src/ui/dash/appearance/NavigationContent.tsx
154
209
  msgid "Add Link"
@@ -199,6 +254,16 @@ msgstr "all available endpoints and request formats."
199
254
  msgid "All collections are already in your navigation."
200
255
  msgstr "All collections are already in your navigation."
201
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 "All feed addresses"
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 "Allow {name} to list my site"
266
+
202
267
  #. @context: Config Editor setting description
203
268
  #: src/ui/dash/settings/ConfigEditorContent.tsx
204
269
  msgid "Allow published content to be read without an API token."
@@ -209,6 +274,11 @@ msgstr "Allow published content to be read without an API token."
209
274
  msgid "Allow search engines to index my site"
210
275
  msgstr "Allow search engines to index my site"
211
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 "Already in navigation. Drag it in the list above to move it."
281
+
212
282
  #. @context: Theme mode option description
213
283
  #: src/ui/dash/appearance/ColorThemeContent.tsx
214
284
  msgid "Always show the dark version of the theme."
@@ -224,6 +294,21 @@ msgstr "Always show the light version of the theme."
224
294
  msgid "An earthier, warmer tone."
225
295
  msgstr "An earthier, warmer tone."
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 "Announce my site"
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 "Announcing your site. Reload to see the result."
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 "Any post written in another language can be corrected from its own menu afterwards."
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."
@@ -254,10 +339,8 @@ msgid "Applies to your entire site, including admin pages. Pick a palette, then
254
339
  msgstr "Applies to your entire site, including admin pages. Pick a palette, then choose whether it follows the system or stays fixed."
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 "Archive"
@@ -267,16 +350,21 @@ msgstr "Archive"
267
350
  msgid "Archive feed"
268
351
  msgstr "Archive feed"
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 "Archive filter parameters (e.g. 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 "Ask search engines not to index public pages or include them in results."
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 "At that address"
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 "Auth secret is missing. Check your environment variables."
367
+
280
368
  #. @context: Theme mode option label
281
369
  #: src/ui/dash/appearance/ColorThemeContent.tsx
282
370
  msgid "Auto"
@@ -369,6 +457,7 @@ msgstr "Calm and natural, easy on the eyes."
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 "Calm and natural, easy on the eyes."
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 "Cancel"
394
484
  msgid "Change Password"
395
485
  msgstr "Change Password"
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 "Change the primary language?"
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."
@@ -449,11 +544,6 @@ msgstr "Choose the time zone used to display dates and times."
449
544
  msgid "Choose the typography used across Jant."
450
545
  msgstr "Choose the typography used across 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 fallback"
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."
@@ -605,11 +695,25 @@ msgstr "Connecting will sync your site onto {repo}'s default branch on top of it
605
695
  msgid "Connecting…"
606
696
  msgstr "Connecting…"
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 "Content language"
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 "Content language, dashboard language, multilingual"
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 "Continue"
716
+
613
717
  #. @context: Slate color theme preview title
614
718
  #: src/ui/dash/appearance/ColorThemeContent.tsx
615
719
  msgid "Cool blue-gray"
@@ -670,6 +774,11 @@ msgstr "Couldn't create the collection. Check the details and try again."
670
774
  msgid "Couldn't create the page. Check the details and try again."
671
775
  msgstr "Couldn't create the page. Check the details and try again."
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 "Couldn't create your account. Check the details and try again."
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 "Create one on GitHub"
755
864
  msgid "Create Page"
756
865
  msgstr "Create Page"
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 "Create the account you write from."
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."
@@ -825,8 +939,13 @@ msgstr "Danger Zone"
825
939
  msgid "Dark"
826
940
  msgstr "Dark"
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 "Dashboard"
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 "Dashboard language"
832
951
 
@@ -893,6 +1012,11 @@ msgstr "Demo mode hides sessions, password changes, and account deletion. Export
893
1012
  msgid "Demo sites always stay hidden from search engines."
894
1013
  msgstr "Demo sites always stay hidden from search engines."
895
1014
 
1015
+ #. @context: Help text under the Jant Discover checkbox explaining that Discover is locked off in demo mode, shown in place of the usual help line. {name} is the directory's name and is rendered as the link to it, so keep it as one run of text.
1016
+ #: src/ui/dash/settings/GeneralContent.tsx
1017
+ msgid "Demo sites are never listed in {name}."
1018
+ msgstr "Demo sites are never listed in {name}."
1019
+
896
1020
  #. @context: Color theme preview collection label
897
1021
  #: src/ui/dash/appearance/ColorThemeContent.tsx
898
1022
  msgid "Design"
@@ -922,6 +1046,16 @@ msgstr "Disconnect from GitHub? The webhook will be removed. Your repository con
922
1046
  msgid "Disconnect Telegram? You can reconnect any time with a new binding code."
923
1047
  msgstr "Disconnect Telegram? You can reconnect any time with a new binding code."
924
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 community rules"
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 reads your Atom feed, so it needs feeds turned on."
1058
+
925
1059
  #. @context: Checkbox to show avatar in the site header
926
1060
  #: src/ui/dash/settings/AvatarContent.tsx
927
1061
  msgid "Display avatar in my site header"
@@ -1007,6 +1141,11 @@ msgstr "Edit the multi-line footer rendered at the bottom of public pages."
1007
1141
  msgid "Edit the multi-line introduction used on your home page and in metadata."
1008
1142
  msgstr "Edit the multi-line introduction used on your home page and in metadata."
1009
1143
 
1144
+ #. @context: Setup/signin form field - email
1145
+ #: src/routes/auth/setup.tsx
1146
+ msgid "Email"
1147
+ msgstr "Email"
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."
@@ -1061,6 +1200,11 @@ msgstr "Featured feed"
1061
1200
  msgid "Featured posts"
1062
1201
  msgstr "Featured posts"
1063
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 "Feed address sent. A directory reads a newly announced feed within {hours} hours."
1207
+
1064
1208
  #. @context: Toast after saving feed settings
1065
1209
  #: src/routes/dash/settings.tsx
1066
1210
  msgid "Feed settings updated."
@@ -1091,12 +1235,10 @@ msgstr "Fine-grained styling overrides"
1091
1235
  msgid "Fixed feed URLs"
1092
1236
  msgstr "Fixed feed URLs"
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 "Follow content language"
1102
1244
 
@@ -1122,6 +1264,11 @@ msgstr "Font theme"
1122
1264
  msgid "Font Theme"
1123
1265
  msgstr "Font Theme"
1124
1266
 
1267
+ #. @context: Config Editor archive layout enum option
1268
+ #: src/ui/dash/settings/ConfigEditorContent.tsx
1269
+ msgid "Full posts"
1270
+ msgstr "Full posts"
1271
+
1125
1272
  #. @context: Breadcrumb label
1126
1273
  #. @context: Settings item — general settings
1127
1274
  #. @context: Settings section heading
@@ -1150,6 +1297,11 @@ msgstr "Get a new code"
1150
1297
  msgid "GitHub Sync"
1151
1298
  msgstr "GitHub Sync"
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 "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."
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 "Header"
1160
1312
  msgid "Header links, built-in destinations, and overflow menu"
1161
1313
  msgstr "Header links, built-in destinations, and overflow menu"
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 "Header RSS points to your {feed} feed (/feed). Change what /feed returns in General."
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."
@@ -1222,6 +1369,11 @@ msgstr "Install the GitHub App to grant access without managing personal tokens.
1222
1369
  msgid "Integrations"
1223
1370
  msgstr "Integrations"
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 "Label and URL are required"
1247
1399
  msgid "Label is required"
1248
1400
  msgstr "Label is required"
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 "Language & Time"
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 "Language"
1408
+
1409
+ #. @context: Toast after adding a content language
1410
+ #: src/routes/dash/settings.tsx
1411
+ msgid "Language added."
1412
+ msgstr "Language added."
1413
+
1414
+ #. @context: Toast after removing a content language
1415
+ #: src/routes/dash/settings.tsx
1416
+ msgid "Language removed."
1417
+ msgstr "Language removed."
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 "Language removed. Multilingual content is off."
1254
1423
 
1255
- #. @context: Toast after saving language and time settings
1424
+ #. @context: Toast after saving a language setting
1256
1425
  #: src/routes/dash/settings.tsx
1257
- msgid "Language and time updated."
1258
- msgstr "Language and time updated."
1426
+ msgid "Language updated."
1427
+ msgstr "Language updated."
1428
+
1429
+ #. @context: Label above the list of the site's languages
1430
+ #: src/ui/dash/settings/LanguageContent.tsx
1431
+ msgid "Languages"
1432
+ msgstr "Languages"
1259
1433
 
1260
1434
  #. @context: Label for last push commit SHA on GitHub Sync status
1261
1435
  #: src/ui/dash/settings/GitHubSyncContent.tsx
@@ -1344,6 +1518,36 @@ msgstr "Link"
1344
1518
  msgid "Link added to navigation."
1345
1519
  msgstr "Link added to navigation."
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 "Link to posts you've marked as 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 "Link to the post archive"
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 "Link to your collections page"
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 "Link to your latest posts. Your homepage shows this feed."
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 "Links straight to /feed — the raw Atom file, currently your {feed} feed. Best for readers who already use a feed reader."
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 "Links to /subscribe, a page listing your feeds with copy buttons. Best for readers who don't already use one."
1550
+
1347
1551
  #. @context: Label for list posts curl example
1348
1552
  #: src/ui/dash/settings/ApiTokensContent.tsx
1349
1553
  msgid "List posts:"
@@ -1369,6 +1573,11 @@ msgstr "Main feed"
1369
1573
  msgid "Main RSS feed"
1370
1574
  msgstr "Main RSS feed"
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 "Make primary"
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 "More actions"
1439
1648
  msgid "More options are available after you create it."
1440
1649
  msgstr "More options are available after you create it."
1441
1650
 
1651
+ #. @context: Language settings toggle for multilingual content
1652
+ #: src/ui/dash/settings/LanguageContent.tsx
1653
+ msgid "Multilingual content"
1654
+ msgstr "Multilingual content"
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 "Multilingual content is off. Your languages are still saved."
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 "Multilingual content is on."
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 "Multilingual content is on. {count, plural, one {# post was marked} other {# posts were marked}} as {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 "Multilingual guide"
1675
+
1442
1676
  #. @context: Clay color theme preview body
1443
1677
  #: src/ui/dash/appearance/ColorThemeContent.tsx
1444
1678
  msgid "Muted red-brown background, earthy and warm."
@@ -1449,10 +1683,15 @@ msgstr "Muted red-brown background, earthy and warm."
1449
1683
  msgid "My Collection"
1450
1684
  msgstr "My Collection"
1451
1685
 
1686
+ #. @context: GitHub sync picker — hint under the create-on-github entry. Placeholder {name} is the suggested repo name.
1687
+ #: src/routes/dash/settings.tsx
1688
+ msgid "Name prefilled as {name}. The list refreshes when you return."
1689
+ msgstr "Name prefilled as {name}. The list refreshes when you return."
1690
+
1452
1691
  #. @context: Settings item description for general
1453
1692
  #: src/ui/dash/settings/SettingsRootContent.tsx
1454
- msgid "Name, metadata, language, and search defaults"
1455
- msgstr "Name, metadata, language, and search defaults"
1693
+ msgid "Name, visibility, feeds, and time zone"
1694
+ msgstr "Name, visibility, feeds, and time zone"
1456
1695
 
1457
1696
  #. @context: Breadcrumb label
1458
1697
  #. @context: Settings item — navigation settings
@@ -1461,6 +1700,11 @@ msgstr "Name, metadata, language, and search defaults"
1461
1700
  msgid "Navigation"
1462
1701
  msgstr "Navigation"
1463
1702
 
1703
+ #. @context: Shown for a page on the site that can only be a link, such as an archive URL
1704
+ #: src/ui/dash/appearance/NavigationContent.tsx
1705
+ msgid "Navigation holds that address as a link."
1706
+ msgstr "Navigation holds that address as a link."
1707
+
1464
1708
  #. @context: Section heading for nav items
1465
1709
  #: src/ui/dash/appearance/NavigationContent.tsx
1466
1710
  msgid "Navigation items"
@@ -1540,8 +1784,10 @@ msgstr "No custom URLs yet. Create one to add redirects or custom paths for post
1540
1784
  msgid "No file selected. Choose a file to upload."
1541
1785
  msgstr "No file selected. Choose a file to upload."
1542
1786
 
1543
- #. @context: Empty state shown when the language search filters out every entry
1544
- #: src/ui/dash/settings/GeneralContent.tsx
1787
+ #. @context: Empty state in the language picker
1788
+ #. @context: Empty state in the language picker
1789
+ #: src/routes/auth/setup.tsx
1790
+ #: src/ui/dash/settings/LanguageContent.tsx
1545
1791
  msgid "No matches."
1546
1792
  msgstr "No matches."
1547
1793
 
@@ -1565,6 +1811,11 @@ msgstr "No pages available. Create one to add it to navigation."
1565
1811
  msgid "No repositories match."
1566
1812
  msgstr "No repositories match."
1567
1813
 
1814
+ #. @context: Discover status line before the site has ever announced itself. The button under the lines is how it is sent.
1815
+ #: src/ui/dash/settings/GeneralContent.tsx
1816
+ msgid "Not announced yet. No directory has been told this site exists."
1817
+ msgstr "Not announced yet. No directory has been told this site exists."
1818
+
1568
1819
  #. @context: Config Editor linked setting status
1569
1820
  #. @context: Config Editor linked setting status
1570
1821
  #: src/ui/dash/settings/ConfigEditorContent.tsx
@@ -1584,16 +1835,36 @@ msgstr "Not synced yet"
1584
1835
  msgid "Note"
1585
1836
  msgstr "Note"
1586
1837
 
1838
+ #. @context: Shown when a pasted address matches no page on the site
1839
+ #: src/ui/dash/appearance/NavigationContent.tsx
1840
+ msgid "Nothing at {address}. Check it, or search by title."
1841
+ msgstr "Nothing at {address}. Check it, or search by title."
1842
+
1587
1843
  #. @context: Config Editor empty search state
1588
1844
  #: src/ui/dash/settings/ConfigEditorContent.tsx
1589
1845
  msgid "Nothing matches this search. Try a different name or description."
1590
1846
  msgstr "Nothing matches this search. Try a different name or description."
1591
1847
 
1848
+ #. @context: Discover status line when the site does not meet the directory's threshold yet. Stated as jant.me's rule, because a directory of your own may decide differently.
1849
+ #: src/ui/dash/settings/GeneralContent.tsx
1850
+ msgid "Nothing published yet. jant.me lists a blog once it has {minCount, plural, one {one public post} other {# public posts}}."
1851
+ msgstr "Nothing published yet. jant.me lists a blog once it has {minCount, plural, one {one public post} other {# public posts}}."
1852
+
1592
1853
  #. @context: Tufte color theme preview body
1593
1854
  #: src/ui/dash/appearance/ColorThemeContent.tsx
1594
1855
  msgid "Off-white paper with a deep forest-green accent."
1595
1856
  msgstr "Off-white paper with a deep forest-green accent."
1596
1857
 
1858
+ #. @context: Status badge — multilingual content is on
1859
+ #: src/ui/dash/settings/LanguageContent.tsx
1860
+ msgid "On"
1861
+ msgstr "On"
1862
+
1863
+ #. @context: Title of the stamping warning in the multilingual dialog
1864
+ #: src/ui/dash/settings/LanguageContent.tsx
1865
+ msgid "One-time change to your existing posts"
1866
+ msgstr "One-time change to your existing posts"
1867
+
1597
1868
  #. @context: Caption inside the manual Telegram binding fallback. {linkOpen}/{linkClose} wrap the bot username as a t.me link — keep them around the @username token in translations.
1598
1869
  #: src/ui/dash/settings/TelegramContent.tsx
1599
1870
  msgid "Open {linkOpen}@{botUsername}{linkClose} and send:"
@@ -1616,16 +1887,31 @@ msgstr "Open Telegram to connect"
1616
1887
  msgid "Open the bot and send the binding code, then anything you message it becomes a note."
1617
1888
  msgstr "Open the bot and send the binding code, then anything you message it becomes a note."
1618
1889
 
1890
+ #. @context: Accessible label on a language row's actions menu trigger
1891
+ #: src/ui/dash/settings/LanguageContent.tsx
1892
+ msgid "Options for {language}"
1893
+ msgstr "Options for {language}"
1894
+
1619
1895
  #. @context: Separator between the QR code and the deep-link button on the Telegram connect page
1620
1896
  #: src/ui/dash/settings/TelegramContent.tsx
1621
1897
  msgid "or"
1622
1898
  msgstr "or"
1623
1899
 
1900
+ #. @context: Link to the directory's manual submission form, shown only when the automatic announcement failed
1901
+ #: src/ui/dash/settings/GeneralContent.tsx
1902
+ msgid "Or submit your address by hand"
1903
+ msgstr "Or submit your address by hand"
1904
+
1624
1905
  #. @context: Ember color theme preview body
1625
1906
  #: src/ui/dash/appearance/ColorThemeContent.tsx
1626
1907
  msgid "Orange-tinted background. The warmest palette."
1627
1908
  msgstr "Orange-tinted background. The warmest palette."
1628
1909
 
1910
+ #. @context: Label for the list of non-primary languages
1911
+ #: src/ui/dash/settings/LanguageContent.tsx
1912
+ msgid "Other languages"
1913
+ msgstr "Other languages"
1914
+
1629
1915
  #. @context: GitHub sync picker — placeholder text showing the expected input shape
1630
1916
  #: src/routes/dash/settings.tsx
1631
1917
  msgid "owner/repo"
@@ -1673,6 +1959,8 @@ msgstr "Palette, surface tone, and overall mood"
1673
1959
 
1674
1960
  #. @context: Breadcrumb label
1675
1961
  #. @context: Settings item — password settings
1962
+ #. @context: Setup/signin form field - password
1963
+ #: src/routes/auth/setup.tsx
1676
1964
  #: src/routes/dash/settings.tsx
1677
1965
  #: src/ui/dash/settings/AccountMenuContent.tsx
1678
1966
  msgid "Password"
@@ -1740,11 +2028,31 @@ msgstr "Pinned"
1740
2028
  msgid "Post"
1741
2029
  msgstr "Post"
1742
2030
 
2031
+ #. @context: Reassurance line at the bottom of the multilingual dialog
2032
+ #: src/ui/dash/settings/LanguageContent.tsx
2033
+ msgid "Post addresses do not change, and you can turn this off again at any time."
2034
+ msgstr "Post addresses do not change, and you can turn this off again at any time."
2035
+
1743
2036
  #. @context: Settings item description for Telegram integration
1744
2037
  #: src/ui/dash/settings/SettingsRootContent.tsx
1745
2038
  msgid "Post notes by messaging a Telegram bot"
1746
2039
  msgstr "Post notes by messaging a Telegram bot"
1747
2040
 
2041
+ #. @context: Badge on the language served at the root address
2042
+ #: src/ui/dash/settings/LanguageContent.tsx
2043
+ msgid "Primary"
2044
+ msgstr "Primary"
2045
+
2046
+ #. @context: Label the content language field takes once multilingual is on
2047
+ #: src/ui/dash/settings/LanguageContent.tsx
2048
+ msgid "Primary language"
2049
+ msgstr "Primary language"
2050
+
2051
+ #. @context: Toast after changing the primary language
2052
+ #: src/routes/dash/settings.tsx
2053
+ msgid "Primary language changed."
2054
+ msgstr "Primary language changed."
2055
+
1748
2056
  #. @context: GitHub sync picker — badge next to private repos
1749
2057
  #: src/routes/dash/settings.tsx
1750
2058
  msgid "Private"
@@ -1785,21 +2093,11 @@ msgstr "Push all posts to GitHub right now instead of waiting for the next autom
1785
2093
  msgid "QR code linking to the Telegram bot"
1786
2094
  msgstr "QR code linking to the Telegram bot"
1787
2095
 
1788
- #. @context: Archive custom URL query params field
1789
- #: src/routes/dash/custom-urls.tsx
1790
- msgid "Query Parameters"
1791
- msgstr "Query Parameters"
1792
-
1793
2096
  #. @context: Post format badge - quote
1794
2097
  #: src/ui/dash/FormatBadge.tsx
1795
2098
  msgid "Quote"
1796
2099
  msgstr "Quote"
1797
2100
 
1798
- #. @context: Lead text before a live <html lang> preview of the content language
1799
- #: src/ui/dash/settings/GeneralContent.tsx
1800
- msgid "Readers and search engines see"
1801
- msgstr "Readers and search engines see"
1802
-
1803
2101
  #. @context: Heading above recent pages in the page picker
1804
2102
  #: src/ui/dash/appearance/NavigationContent.tsx
1805
2103
  msgid "Recently updated"
@@ -1834,6 +2132,16 @@ msgstr "Refresh repository list"
1834
2132
  msgid "Remove"
1835
2133
  msgstr "Remove"
1836
2134
 
2135
+ #. @context: Accessible label on the button removing a language
2136
+ #: src/ui/dash/settings/LanguageContent.tsx
2137
+ msgid "Remove {language}"
2138
+ msgstr "Remove {language}"
2139
+
2140
+ #. @context: Confirm button when removing the last additional language
2141
+ #: src/ui/dash/settings/LanguageContent.tsx
2142
+ msgid "Remove and turn off"
2143
+ msgstr "Remove and turn off"
2144
+
1837
2145
  #. @context: Button to remove the saved Telegram bot token
1838
2146
  #: src/ui/dash/settings/TelegramContent.tsx
1839
2147
  msgid "Remove bot"
@@ -1914,10 +2222,12 @@ msgstr "Sandy background with a green accent."
1914
2222
  #. @context: Button to save settings
1915
2223
  #. @context: Button to save settings changes
1916
2224
  #. @context: Save nav item changes
2225
+ #. @context: Settings save button
1917
2226
  #: src/ui/dash/appearance/CodeInjectionContent.tsx
1918
2227
  #: src/ui/dash/appearance/NavigationContent.tsx
1919
2228
  #: src/ui/dash/settings/AvatarContent.tsx
1920
2229
  #: src/ui/dash/settings/GeneralContent.tsx
2230
+ #: src/ui/dash/settings/LanguageContent.tsx
1921
2231
  msgid "Save"
1922
2232
  msgstr "Save"
1923
2233
 
@@ -1937,25 +2247,32 @@ msgid "Saved"
1937
2247
  msgstr "Saved"
1938
2248
 
1939
2249
  #. @context: Config Editor row save status
2250
+ #. @context: Settings save in progress
1940
2251
  #: src/ui/dash/settings/ConfigEditorContent.tsx
2252
+ #: src/ui/dash/settings/LanguageContent.tsx
1941
2253
  msgid "Saving…"
1942
2254
  msgstr "Saving…"
1943
2255
 
1944
- #. @context: Settings section heading for search engine indexing settings
1945
- #: src/ui/dash/settings/GeneralContent.tsx
1946
- msgid "Search"
1947
- msgstr "Search"
1948
-
1949
2256
  #. @context: Config Editor page description
1950
2257
  #: src/ui/dash/settings/ConfigEditorContent.tsx
1951
2258
  msgid "Search and edit runtime settings. Changes apply immediately; reset restores the environment or built-in default."
1952
2259
  msgstr "Search and edit runtime settings. Changes apply immediately; reset restores the environment or built-in default."
1953
2260
 
2261
+ #. @context: Shown under the Jant Discover checkbox when the site has turned search engines away and has never answered Discover itself, which is what unticks the box. Says why the box moved, and that it is still the owner's to tick.
2262
+ #: src/ui/dash/settings/GeneralContent.tsx
2263
+ msgid "Search engine indexing is off, so this site is not listed by default. Ticking the box above lists it anyway."
2264
+ msgstr "Search engine indexing is off, so this site is not listed by default. Ticking the box above lists it anyway."
2265
+
1954
2266
  #. @context: Placeholder for the navigation page search
1955
2267
  #: src/ui/dash/appearance/NavigationContent.tsx
1956
2268
  msgid "Search pages"
1957
2269
  msgstr "Search pages"
1958
2270
 
2271
+ #. @context: Placeholder for the navigation page search, which also accepts a pasted URL or path
2272
+ #: src/ui/dash/appearance/NavigationContent.tsx
2273
+ msgid "Search pages, or paste an address"
2274
+ msgstr "Search pages, or paste an address"
2275
+
1959
2276
  #. @context: GitHub sync picker — search input placeholder
1960
2277
  #: src/routes/dash/settings.tsx
1961
2278
  msgid "Search repositories"
@@ -1980,8 +2297,10 @@ msgstr "Search settings"
1980
2297
  msgid "Search settings updated."
1981
2298
  msgstr "Search settings updated."
1982
2299
 
1983
- #. @context: Placeholder inside the language combobox search field
1984
- #: src/ui/dash/settings/GeneralContent.tsx
2300
+ #. @context: Placeholder in the language picker search box
2301
+ #. @context: Placeholder in the language picker search box
2302
+ #: src/routes/auth/setup.tsx
2303
+ #: src/ui/dash/settings/LanguageContent.tsx
1985
2304
  msgid "Search…"
1986
2305
  msgstr "Search…"
1987
2306
 
@@ -2047,6 +2366,11 @@ msgstr "Set results per search page; reset to inherit the main page size."
2047
2366
  msgid "Set the default number of items shown per page."
2048
2367
  msgstr "Set the default number of items shown per page."
2049
2368
 
2369
+ #. @context: Setup heading on the second self-hosted screen, which asks for the site's name and language
2370
+ #: src/routes/auth/setup.tsx
2371
+ msgid "Set up your site"
2372
+ msgstr "Set up your site"
2373
+
2050
2374
  #. @context: Breadcrumb label
2051
2375
  #. @context: Page title for the settings home page
2052
2376
  #: src/routes/dash/settings.tsx
@@ -2054,6 +2378,11 @@ msgstr "Set the default number of items shown per page."
2054
2378
  msgid "Settings"
2055
2379
  msgstr "Settings"
2056
2380
 
2381
+ #. @context: Name of the first-run setup screen — shown above the setup card and as the browser tab title
2382
+ #: src/routes/auth/setup.tsx
2383
+ msgid "Setup"
2384
+ msgstr "Setup"
2385
+
2057
2386
  #. @context: Checkbox for showing the optional Jant credit link on the home page
2058
2387
  #: src/ui/dash/settings/GeneralContent.tsx
2059
2388
  msgid "Show \"Build with Jant\" at the bottom of the home page"
@@ -2084,6 +2413,11 @@ msgstr "Show the site avatar in the public header."
2084
2413
  msgid "Showing {shown} of {total}"
2085
2414
  msgstr "Showing {shown} of {total}"
2086
2415
 
2416
+ #. @context: Description for the settings system navigation toggle
2417
+ #: src/ui/dash/appearance/system-nav-descriptions.ts
2418
+ msgid "Shows 'Settings' when logged in, 'Sign in' when logged out"
2419
+ msgstr "Shows 'Settings' when logged in, 'Sign in' when logged out"
2420
+
2087
2421
  #. @context: Settings link — sign out action
2088
2422
  #: src/ui/dash/settings/SettingsRootContent.tsx
2089
2423
  msgid "Sign Out"
@@ -2099,9 +2433,11 @@ msgstr "Sign-in, export, and deletion"
2099
2433
  msgid "Signed in {date}"
2100
2434
  msgstr "Signed in {date}"
2101
2435
 
2436
+ #. @context: Language settings section for reader-facing settings
2102
2437
  #. @context: Settings group label for site settings
2103
2438
  #. @context: Settings subsection heading for basic site fields
2104
2439
  #: src/ui/dash/settings/GeneralContent.tsx
2440
+ #: src/ui/dash/settings/LanguageContent.tsx
2105
2441
  #: src/ui/dash/settings/SettingsRootContent.tsx
2106
2442
  msgid "Site"
2107
2443
  msgstr "Site"
@@ -2119,6 +2455,8 @@ msgid "Site Header"
2119
2455
  msgstr "Site Header"
2120
2456
 
2121
2457
  #. @context: Settings form field
2458
+ #. @context: Setup form field - site name
2459
+ #: src/routes/auth/setup.tsx
2122
2460
  #: src/ui/dash/settings/GeneralContent.tsx
2123
2461
  msgid "Site Name"
2124
2462
  msgstr "Site Name"
@@ -2128,6 +2466,18 @@ msgstr "Site Name"
2128
2466
  msgid "Site settings updated."
2129
2467
  msgstr "Site settings updated."
2130
2468
 
2469
+ #. @context: Settings section heading covering search engine indexing and the Jant Discover directory
2470
+ #: src/ui/dash/settings/GeneralContent.tsx
2471
+ msgid "Site visibility"
2472
+ msgstr "Site visibility"
2473
+
2474
+ #. @context: Toast after saving the site visibility settings
2475
+ #. @context: Toast after saving the site visibility settings
2476
+ #: src/routes/dash/settings.tsx
2477
+ #: src/routes/dash/settings.tsx
2478
+ msgid "Site visibility updated."
2479
+ msgstr "Site visibility updated."
2480
+
2131
2481
  #. @context: Settings item description for code injection
2132
2482
  #: src/ui/dash/settings/SettingsRootContent.tsx
2133
2483
  msgid "Site-wide HTML for analytics and widgets"
@@ -2148,6 +2498,21 @@ msgstr "Soft green"
2148
2498
  msgid "Soft ivory"
2149
2499
  msgstr "Soft ivory"
2150
2500
 
2501
+ #. @context: Fallback validation error for setup form
2502
+ #: src/routes/auth/setup.tsx
2503
+ msgid "Something doesn't look right. Check the form and try again."
2504
+ msgstr "Something doesn't look right. Check the form and try again."
2505
+
2506
+ #. @context: Setup submit button on the last screen, after which the site is live
2507
+ #: src/routes/auth/setup.tsx
2508
+ msgid "Start writing"
2509
+ msgstr "Start writing"
2510
+
2511
+ #. @context: How far along first-run setup is, shown beside the screen's name on a self-hosted install
2512
+ #: src/routes/auth/setup.tsx
2513
+ msgid "Step {current} of {total}"
2514
+ msgstr "Step {current} of {total}"
2515
+
2151
2516
  #. @context: Description for the Telegram disconnect action
2152
2517
  #: src/ui/dash/settings/TelegramContent.tsx
2153
2518
  msgid "Stop accepting posts from Telegram. Your existing notes stay published."
@@ -2158,6 +2523,11 @@ msgstr "Stop accepting posts from Telegram. Your existing notes stay published."
2158
2523
  msgid "Suggested links"
2159
2524
  msgstr "Suggested links"
2160
2525
 
2526
+ #. @context: Confirm button in the change-primary-language dialog
2527
+ #: src/ui/dash/settings/LanguageContent.tsx
2528
+ msgid "Switch"
2529
+ msgstr "Switch"
2530
+
2161
2531
  #. @context: Button to trigger a full content push to GitHub on GitHub Sync settings
2162
2532
  #: src/ui/dash/settings/GitHubSyncContent.tsx
2163
2533
  msgid "Sync Now"
@@ -2199,6 +2569,11 @@ msgstr "Telegram is set up, but the bot couldn't be reached. Check the bot token
2199
2569
  msgid "That address is already in use. Choose another one."
2200
2570
  msgstr "That address is already in use. Choose another one."
2201
2571
 
2572
+ #. @context: Shown when a pasted address points off the site
2573
+ #: src/ui/dash/appearance/NavigationContent.tsx
2574
+ msgid "That address is on another site. Navigation holds it as a link."
2575
+ msgstr "That address is on another site. Navigation holds it as a link."
2576
+
2202
2577
  #. @context: Validation error for a reserved page slug
2203
2578
  #: src/ui/dash/appearance/NavigationContent.tsx
2204
2579
  msgid "That address is reserved. Choose another one."
@@ -2209,6 +2584,21 @@ msgstr "That address is reserved. Choose another one."
2209
2584
  msgid "That font theme isn't available. Pick another one."
2210
2585
  msgstr "That font theme isn't available. Pick another one."
2211
2586
 
2587
+ #. @context: Shown when a pasted address resolves to an untitled post
2588
+ #: src/ui/dash/appearance/NavigationContent.tsx
2589
+ msgid "That page has no title yet, so a menu has nothing to show."
2590
+ msgstr "That page has no title yet, so a menu has nothing to show."
2591
+
2592
+ #. @context: Shown when a pasted address resolves to a draft
2593
+ #: src/ui/dash/appearance/NavigationContent.tsx
2594
+ msgid "That page is a draft. Publish it, then add it."
2595
+ msgstr "That page is a draft. Publish it, then add it."
2596
+
2597
+ #. @context: Shown when a pasted address resolves to a private page
2598
+ #: src/ui/dash/appearance/NavigationContent.tsx
2599
+ msgid "That page is private, so nobody could open it from a menu."
2600
+ msgstr "That page is private, so nobody could open it from a menu."
2601
+
2212
2602
  #. @context: Error toast when selected theme is not valid
2213
2603
  #: src/routes/dash/settings.tsx
2214
2604
  msgid "That theme isn't available. Pick another one."
@@ -2224,20 +2614,35 @@ msgstr "The cleanest, most neutral option."
2224
2614
  msgid "The default. Calm and easy for long reading."
2225
2615
  msgstr "The default. Calm and easy for long reading."
2226
2616
 
2227
- #. @context: Help text under the dashboard language picker
2617
+ #. @context: Discover status line when the announcement failed. {reason} is the error, such as an HTTP status or a network message.
2228
2618
  #: src/ui/dash/settings/GeneralContent.tsx
2229
- msgid "The language this admin dashboard shows in. Available in English, 简体中文, and 繁體中文."
2230
- msgstr "The language this admin dashboard shows in. Available in English, 简体中文, and 繁體中文."
2619
+ msgid "The directory could not be reached: {reason}"
2620
+ msgstr "The directory could not be reached: {reason}"
2621
+
2622
+ #. @context: Help text for the dashboard language field
2623
+ #: src/ui/dash/settings/LanguageContent.tsx
2624
+ msgid "The language of your admin pages. Only you see this."
2625
+ msgstr "The language of your admin pages. Only you see this."
2231
2626
 
2232
2627
  #. @context: Config Editor setting description
2233
2628
  #: src/ui/dash/settings/ConfigEditorContent.tsx
2234
2629
  msgid "The language used by the private Jant dashboard."
2235
2630
  msgstr "The language used by the private Jant dashboard."
2236
2631
 
2237
- #. @context: Help text under the content language picker
2238
- #: src/ui/dash/settings/GeneralContent.tsx
2239
- msgid "The language your posts are written in. Announced to readers and search engines through HTML lang and your RSS feed. Any BCP 47 tag works."
2240
- msgstr "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."
2632
+ #. @context: Help text for the content language field
2633
+ #: src/ui/dash/settings/LanguageContent.tsx
2634
+ msgid "The language you write in."
2635
+ msgstr "The language you write in."
2636
+
2637
+ #. @context: Setup form help text under the content language field
2638
+ #: src/routes/auth/setup.tsx
2639
+ msgid "The language your readers and search engines see."
2640
+ msgstr "The language your readers and search engines see."
2641
+
2642
+ #. @context: Config Editor linked setting description
2643
+ #: src/ui/dash/settings/ConfigEditorContent.tsx
2644
+ msgid "The languages served under a URL prefix. Managed on the Language page."
2645
+ msgstr "The languages served under a URL prefix. Managed on the Language page."
2241
2646
 
2242
2647
  #. @context: Linen color theme preview help line
2243
2648
  #: src/ui/dash/appearance/ColorThemeContent.tsx
@@ -2249,10 +2654,15 @@ msgstr "The original Jant palette, and a solid everyday pick."
2249
2654
  msgid "The page is public but stays out of Latest."
2250
2655
  msgstr "The page is public but stays out of Latest."
2251
2656
 
2252
- #. @context: Config Editor setting description
2253
- #: src/ui/dash/settings/ConfigEditorContent.tsx
2254
- msgid "The serif fallback used when the content language has no built-in profile."
2255
- msgstr "The serif fallback used when the content language has no built-in profile."
2657
+ #. @context: Help text for the primary language field
2658
+ #: src/ui/dash/settings/LanguageContent.tsx
2659
+ msgid "The root address (/, /feed) shows this language."
2660
+ msgstr "The root address (/, /feed) shows this language."
2661
+
2662
+ #. @context: Body of the disable-multilingual dialog
2663
+ #: src/ui/dash/settings/LanguageContent.tsx
2664
+ msgid "The root address goes back to showing every language, and addresses like {prefix} redirect to it, so existing links and feed subscriptions keep working. Post addresses and each post's language are unchanged, so you can turn this back on any time."
2665
+ msgstr "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."
2256
2666
 
2257
2667
  #. @context: Custom URL target slug help text
2258
2668
  #: src/routes/dash/custom-urls.tsx
@@ -2339,16 +2749,41 @@ msgstr "This repository is already backing up this site."
2339
2749
  msgid "This setting wasn't saved. Check the value and try again."
2340
2750
  msgstr "This setting wasn't saved. Check the value and try again."
2341
2751
 
2752
+ #. @context: Toast when the Discover announcement cannot be sent because no directory is configured, or the site cannot be listed at all
2753
+ #: src/routes/dash/settings.tsx
2754
+ msgid "This site has no directory to announce to."
2755
+ msgstr "This site has no directory to announce to."
2756
+
2757
+ #. @context: Discover status line for a site that chose the old featured-only mode and has no featured posts. Says how to move to the current setting, which reads every public post.
2758
+ #: src/ui/dash/settings/GeneralContent.tsx
2759
+ msgid "This site still limits Discover to featured posts, and no post is marked Featured, so your feed carries nothing to show. Untick and tick the box to let Discover read every public post."
2760
+ msgstr "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."
2761
+
2342
2762
  #. @context: Warning text on account deletion page
2343
2763
  #: src/ui/dash/settings/DeleteAccountContent.tsx
2344
2764
  msgid "This will permanently delete all your data — posts, media, collections, settings, and your account. Your blog will be reset to its initial setup state. This cannot be undone."
2345
2765
  msgstr "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."
2346
2766
 
2767
+ #. @context: Config Editor archive layout enum option
2768
+ #: src/ui/dash/settings/ConfigEditorContent.tsx
2769
+ msgid "Tile grid"
2770
+ msgstr "Tile grid"
2771
+
2772
+ #. @context: Settings subsection heading for the time zone field
2773
+ #: src/ui/dash/settings/GeneralContent.tsx
2774
+ msgid "Time"
2775
+ msgstr "Time"
2776
+
2347
2777
  #. @context: Settings form field
2348
2778
  #: src/ui/dash/settings/GeneralContent.tsx
2349
2779
  msgid "Time Zone"
2350
2780
  msgstr "Time Zone"
2351
2781
 
2782
+ #. @context: Toast after saving the time zone
2783
+ #: src/routes/dash/settings.tsx
2784
+ msgid "Time zone updated."
2785
+ msgstr "Time zone updated."
2786
+
2352
2787
  #. @context: Collection title field in Navigation settings
2353
2788
  #. @context: Title field label in quick page creation
2354
2789
  #: src/ui/dash/appearance/NavigationContent.tsx
@@ -2381,6 +2816,28 @@ msgstr "Try again"
2381
2816
  msgid "Tune how your site looks, reads, and runs."
2382
2817
  msgstr "Tune how your site looks, reads, and runs."
2383
2818
 
2819
+ #. @context: Confirm button in the disable-multilingual dialog
2820
+ #: src/ui/dash/settings/LanguageContent.tsx
2821
+ msgid "Turn off"
2822
+ msgstr "Turn off"
2823
+
2824
+ #. @context: Title of the dialog confirming removal of the last additional language
2825
+ #. @context: Title of the disable-multilingual dialog
2826
+ #: src/ui/dash/settings/LanguageContent.tsx
2827
+ #: src/ui/dash/settings/LanguageContent.tsx
2828
+ msgid "Turn off multilingual content?"
2829
+ msgstr "Turn off multilingual content?"
2830
+
2831
+ #. @context: Link in the multilingual section that opens the setup dialog
2832
+ #: src/ui/dash/settings/LanguageContent.tsx
2833
+ msgid "Turn on"
2834
+ msgstr "Turn on"
2835
+
2836
+ #. @context: Title of the dialog that configures languages and turns multilingual on
2837
+ #: src/ui/dash/settings/LanguageContent.tsx
2838
+ msgid "Turn on multilingual content"
2839
+ msgstr "Turn on multilingual content"
2840
+
2384
2841
  #. @context: Custom URL form field
2385
2842
  #: src/routes/dash/custom-urls.tsx
2386
2843
  msgid "Type"
@@ -2446,6 +2903,11 @@ msgstr "Uploading..."
2446
2903
  msgid "URL"
2447
2904
  msgstr "URL"
2448
2905
 
2906
+ #. @context: Description of the multilingual documentation link
2907
+ #: src/ui/dash/settings/LanguageContent.tsx
2908
+ msgid "URL structure, per-language feeds, and linking translations."
2909
+ msgstr "URL structure, per-language feeds, and linking translations."
2910
+
2449
2911
  #. @context: Heading for API token usage examples
2450
2912
  #: src/ui/dash/settings/ApiTokensContent.tsx
2451
2913
  msgid "Usage"
@@ -2466,11 +2928,6 @@ msgstr "Use lowercase letters, numbers, and hyphens."
2466
2928
  msgid "Use these when you want a feed URL that never changes."
2467
2929
  msgstr "Use these when you want a feed URL that never changes."
2468
2930
 
2469
- #. @context: Help text for the manual CJK font fallback setting
2470
- #: src/ui/dash/settings/GeneralContent.tsx
2471
- msgid "Used when the content language has no built-in font profile. Your font theme still controls serif and sans styling."
2472
- msgstr "Used when the content language has no built-in font profile. Your font theme still controls serif and sans styling."
2473
-
2474
2931
  #. @context: Description for choosing featured posts as the main RSS feed
2475
2932
  #: src/ui/dash/settings/GeneralContent.tsx
2476
2933
  msgid "Uses featured posts for /feed."
@@ -2491,6 +2948,11 @@ msgstr "Very light ivory with a faint tea-green accent."
2491
2948
  msgid "View"
2492
2949
  msgstr "View"
2493
2950
 
2951
+ #. @context: Link in the cannot-remove-language error, leading to that language's archive
2952
+ #: src/ui/dash/settings/LanguageContent.tsx
2953
+ msgid "View these posts"
2954
+ msgstr "View these posts"
2955
+
2494
2956
  #. @context: Prefix before Custom CSS link on color theme page
2495
2957
  #: src/ui/dash/appearance/ColorThemeContent.tsx
2496
2958
  msgid "Want more control?"
@@ -2556,10 +3018,15 @@ msgstr "Warm terracotta"
2556
3018
  msgid "Warm-neutral and easy for long reading."
2557
3019
  msgstr "Warm-neutral and easy for long reading."
2558
3020
 
2559
- #. @context: GitHub sync picker — hint under the create-on-github entry. Placeholder {name} is the suggested repo name.
2560
- #: src/routes/dash/settings.tsx
2561
- msgid "We'll prefill the name {name}. The list refreshes on return."
2562
- msgstr "We'll prefill the name {name}. The list refreshes on return."
3021
+ #. @context: Setup page welcome heading
3022
+ #: src/routes/auth/setup.tsx
3023
+ msgid "Welcome to Jant"
3024
+ msgstr "Welcome to 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 "What language do you write in?"
2563
3030
 
2564
3031
  #. @context: Description for backup and restore documentation link in account settings
2565
3032
  #: src/ui/dash/settings/AccountMenuContent.tsx
@@ -2571,6 +3038,16 @@ msgstr "When to use site export, database backups, and recovery drills."
2571
3038
  msgid "When you want a cooler, sharper look."
2572
3039
  msgstr "When you want a cooler, sharper look."
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 "Whether each language gets its own home page, archive, and feed. Managed on the Language page."
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 "Which layout /archive opens with. Readers can switch layouts from the page."
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."
@@ -2581,6 +3058,11 @@ msgstr "Which post stream the canonical /feed URL returns."
2581
3058
  msgid "Yellow-tinted paper with an olive-green accent."
2582
3059
  msgstr "Yellow-tinted paper with an olive-green accent."
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 "You can change all of this later in Settings."
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"