@jant/core 0.3.35 → 0.3.37

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 (307) hide show
  1. package/bin/commands/export.js +1 -1
  2. package/bin/commands/import-site.js +529 -0
  3. package/bin/commands/reset-password.js +3 -2
  4. package/dist/client/assets/heic-to-DIRPI3VF.js +1 -0
  5. package/dist/client/assets/module-RjUF93sV.js +716 -0
  6. package/dist/client/assets/native-48B9X9Wg.js +1 -0
  7. package/dist/client/assets/url-FWFqPJPb.js +1 -0
  8. package/dist/client/client.css +1 -1
  9. package/dist/client/client.js +4564 -3013
  10. package/dist/index.js +12885 -8161
  11. package/package.json +23 -6
  12. package/src/__tests__/helpers/app.ts +10 -10
  13. package/src/__tests__/helpers/db.ts +91 -87
  14. package/src/app.tsx +157 -31
  15. package/src/auth.ts +20 -2
  16. package/src/client/archive-nav.js +187 -0
  17. package/src/client/audio-player.ts +478 -0
  18. package/src/client/audio-processor.ts +84 -0
  19. package/src/{lib → client}/avatar-upload.ts +4 -3
  20. package/src/{lib → client}/collection-form-bridge.ts +2 -2
  21. package/src/{ui → client}/components/__tests__/jant-collection-form.test.ts +26 -9
  22. package/src/client/components/__tests__/jant-compose-dialog.test.ts +1140 -0
  23. package/src/client/components/__tests__/jant-compose-editor.test.ts +504 -0
  24. package/src/{ui → client}/components/__tests__/jant-post-form.test.ts +37 -17
  25. package/src/{ui → client}/components/__tests__/jant-settings-avatar.test.ts +2 -2
  26. package/src/{ui → client}/components/__tests__/jant-settings-general.test.ts +3 -3
  27. package/src/client/components/collection-sidebar-types.ts +43 -0
  28. package/src/{ui → client}/components/collection-types.ts +3 -4
  29. package/src/client/components/compose-types.ts +174 -0
  30. package/src/client/components/jant-collection-form.ts +667 -0
  31. package/src/client/components/jant-collection-sidebar.ts +805 -0
  32. package/src/client/components/jant-compose-dialog.ts +2161 -0
  33. package/src/client/components/jant-compose-editor.ts +1813 -0
  34. package/src/client/components/jant-compose-fullscreen.ts +283 -0
  35. package/src/client/components/jant-media-lightbox.ts +259 -0
  36. package/src/{ui → client}/components/jant-nav-manager.ts +97 -298
  37. package/src/{ui → client}/components/jant-post-form.ts +141 -12
  38. package/src/client/components/jant-post-menu.ts +1019 -0
  39. package/src/{ui → client}/components/jant-settings-avatar.ts +3 -3
  40. package/src/{ui → client}/components/jant-settings-general.ts +38 -4
  41. package/src/client/components/jant-text-preview.ts +232 -0
  42. package/src/{ui → client}/components/nav-manager-types.ts +6 -18
  43. package/src/{ui → client}/components/post-form-template.ts +137 -38
  44. package/src/{ui → client}/components/post-form-types.ts +15 -4
  45. package/src/client/compose-bridge.ts +583 -0
  46. package/src/{lib → client}/image-processor.ts +26 -8
  47. package/src/client/lazy-slugify.ts +51 -0
  48. package/src/client/media-metadata.ts +247 -0
  49. package/src/client/multipart-upload.ts +160 -0
  50. package/src/{lib → client}/nav-manager-bridge.ts +1 -1
  51. package/src/{lib → client}/post-form-bridge.ts +53 -2
  52. package/src/{lib → client}/settings-bridge.ts +3 -15
  53. package/src/client/thread-context.ts +140 -0
  54. package/src/client/tiptap/bubble-menu.ts +205 -0
  55. package/src/client/tiptap/create-editor.ts +86 -0
  56. package/src/client/tiptap/exitable-marks.ts +73 -0
  57. package/src/client/tiptap/extensions.ts +65 -0
  58. package/src/client/tiptap/image-node.ts +482 -0
  59. package/src/client/tiptap/link-toolbar.ts +371 -0
  60. package/src/client/tiptap/more-break.ts +50 -0
  61. package/src/client/tiptap/paste-image.ts +129 -0
  62. package/src/client/tiptap/slash-commands.ts +438 -0
  63. package/src/{lib → client}/toast.ts +101 -3
  64. package/src/client/types/sortablejs.d.ts +44 -0
  65. package/src/client/upload-with-metadata.ts +54 -0
  66. package/src/client/video-processor.ts +207 -0
  67. package/src/client.ts +27 -17
  68. package/src/db/__tests__/migrations.test.ts +118 -0
  69. package/src/db/index.ts +52 -0
  70. package/src/db/migrations/0000_baseline.sql +269 -0
  71. package/src/db/migrations/0001_fts_setup.sql +31 -0
  72. package/src/db/migrations/meta/0000_snapshot.json +703 -119
  73. package/src/db/migrations/meta/0001_snapshot.json +1337 -0
  74. package/src/db/migrations/meta/_journal.json +4 -39
  75. package/src/db/schema.ts +409 -140
  76. package/src/i18n/__tests__/detect.test.ts +115 -0
  77. package/src/i18n/context.tsx +2 -2
  78. package/src/i18n/detect.ts +85 -1
  79. package/src/i18n/i18n.ts +1 -1
  80. package/src/i18n/index.ts +2 -1
  81. package/src/i18n/locales/en.po +783 -1087
  82. package/src/i18n/locales/en.ts +1 -1
  83. package/src/i18n/locales/zh-Hans.po +867 -812
  84. package/src/i18n/locales/zh-Hans.ts +1 -1
  85. package/src/i18n/locales/zh-Hant.po +878 -823
  86. package/src/i18n/locales/zh-Hant.ts +1 -1
  87. package/src/i18n/middleware.ts +6 -0
  88. package/src/index.ts +5 -7
  89. package/src/lib/__tests__/blurhash-placeholder.test.ts +75 -0
  90. package/src/lib/__tests__/constants.test.ts +0 -1
  91. package/src/lib/__tests__/markdown-to-tiptap.test.ts +358 -0
  92. package/src/lib/__tests__/nanoid.test.ts +26 -0
  93. package/src/lib/__tests__/resolve-config.test.ts +2 -2
  94. package/src/lib/__tests__/schemas.test.ts +186 -65
  95. package/src/lib/__tests__/slug.test.ts +126 -0
  96. package/src/lib/__tests__/sse.test.ts +6 -6
  97. package/src/lib/__tests__/summary.test.ts +264 -0
  98. package/src/lib/__tests__/theme.test.ts +1 -1
  99. package/src/lib/__tests__/timeline.test.ts +33 -30
  100. package/src/lib/__tests__/tiptap-to-markdown.test.ts +346 -0
  101. package/src/lib/__tests__/url.test.ts +2 -2
  102. package/src/lib/__tests__/view.test.ts +140 -65
  103. package/src/lib/blurhash-placeholder.ts +102 -0
  104. package/src/lib/constants.ts +3 -1
  105. package/src/lib/emoji-catalog.ts +963 -0
  106. package/src/lib/errors.ts +11 -8
  107. package/src/lib/feed.ts +77 -31
  108. package/src/lib/html.ts +2 -1
  109. package/src/lib/icon-catalog.ts +5033 -1
  110. package/src/lib/icons.ts +3 -2
  111. package/src/lib/index.ts +0 -1
  112. package/src/lib/markdown-to-tiptap.ts +286 -0
  113. package/src/lib/media-helpers.ts +22 -12
  114. package/src/lib/nanoid.ts +29 -0
  115. package/src/lib/navigation.ts +1 -1
  116. package/src/lib/render.tsx +24 -5
  117. package/src/lib/resolve-config.ts +13 -2
  118. package/src/lib/schemas.ts +226 -58
  119. package/src/lib/search-snippet.ts +34 -0
  120. package/src/lib/slug.ts +96 -0
  121. package/src/lib/sse.ts +6 -6
  122. package/src/lib/storage.ts +115 -7
  123. package/src/lib/summary.ts +158 -0
  124. package/src/lib/theme.ts +11 -8
  125. package/src/lib/timeline.ts +76 -34
  126. package/src/lib/tiptap-render.ts +191 -0
  127. package/src/lib/tiptap-to-markdown.ts +305 -0
  128. package/src/lib/upload.ts +263 -14
  129. package/src/lib/url.ts +37 -22
  130. package/src/lib/view.ts +236 -55
  131. package/src/middleware/__tests__/auth.test.ts +191 -11
  132. package/src/middleware/__tests__/onboarding.test.ts +12 -10
  133. package/src/middleware/auth.ts +63 -9
  134. package/src/middleware/error-handler.ts +3 -3
  135. package/src/middleware/onboarding.ts +1 -1
  136. package/src/middleware/secure-headers.ts +40 -0
  137. package/src/preset.css +83 -2
  138. package/src/routes/__tests__/compose.test.ts +17 -24
  139. package/src/routes/api/__tests__/collections.test.ts +109 -61
  140. package/src/routes/api/__tests__/nav-items.test.ts +46 -29
  141. package/src/routes/api/__tests__/posts.test.ts +132 -68
  142. package/src/routes/api/__tests__/search.test.ts +15 -2
  143. package/src/routes/api/__tests__/upload-multipart.test.ts +534 -0
  144. package/src/routes/api/collections.ts +57 -31
  145. package/src/routes/api/custom-urls.ts +80 -0
  146. package/src/routes/api/export.ts +31 -0
  147. package/src/routes/api/nav-items.ts +23 -19
  148. package/src/routes/api/posts.ts +81 -62
  149. package/src/routes/api/search.ts +3 -4
  150. package/src/routes/api/upload-multipart.ts +245 -0
  151. package/src/routes/api/upload.ts +92 -24
  152. package/src/routes/auth/__tests__/setup.test.ts +20 -60
  153. package/src/routes/auth/reset.tsx +5 -4
  154. package/src/routes/auth/setup.tsx +39 -31
  155. package/src/routes/auth/signin.tsx +13 -14
  156. package/src/routes/compose.tsx +27 -63
  157. package/src/routes/dash/__tests__/settings-avatar.test.ts +44 -9
  158. package/src/routes/dash/custom-urls.tsx +414 -0
  159. package/src/routes/dash/settings.tsx +475 -99
  160. package/src/routes/feed/__tests__/rss.test.ts +22 -23
  161. package/src/routes/feed/rss.ts +6 -2
  162. package/src/routes/feed/sitemap.ts +2 -12
  163. package/src/routes/pages/__tests__/collections.test.ts +5 -6
  164. package/src/routes/pages/__tests__/featured.test.ts +36 -18
  165. package/src/routes/pages/archive.tsx +177 -37
  166. package/src/routes/pages/collection.tsx +43 -14
  167. package/src/routes/pages/collections.tsx +11 -2
  168. package/src/routes/pages/featured.tsx +27 -3
  169. package/src/routes/pages/home.tsx +15 -14
  170. package/src/routes/pages/latest.tsx +1 -11
  171. package/src/routes/pages/new.tsx +39 -0
  172. package/src/routes/pages/page.tsx +95 -49
  173. package/src/routes/pages/search.tsx +1 -1
  174. package/src/services/__tests__/api-token.test.ts +135 -0
  175. package/src/services/__tests__/collection.test.ts +275 -227
  176. package/src/services/__tests__/custom-url.test.ts +213 -0
  177. package/src/services/__tests__/media.test.ts +162 -22
  178. package/src/services/__tests__/navigation.test.ts +109 -68
  179. package/src/services/__tests__/post-timeline.test.ts +205 -32
  180. package/src/services/__tests__/post.test.ts +800 -230
  181. package/src/services/__tests__/search.test.ts +67 -10
  182. package/src/services/__tests__/settings.test.ts +3 -3
  183. package/src/services/api-token.ts +166 -0
  184. package/src/services/auth.ts +17 -2
  185. package/src/services/collection.ts +397 -131
  186. package/src/services/custom-url.ts +188 -0
  187. package/src/services/export.ts +802 -0
  188. package/src/services/index.ts +26 -19
  189. package/src/services/media.ts +100 -22
  190. package/src/services/navigation.ts +158 -47
  191. package/src/services/path.ts +339 -0
  192. package/src/services/post.ts +764 -172
  193. package/src/services/search.ts +161 -74
  194. package/src/services/settings.ts +6 -2
  195. package/src/styles/components.css +293 -62
  196. package/src/styles/tokens.css +93 -5
  197. package/src/styles/ui.css +4349 -766
  198. package/src/types/bindings.ts +8 -0
  199. package/src/types/config.ts +34 -4
  200. package/src/types/constants.ts +17 -2
  201. package/src/types/entities.ts +83 -37
  202. package/src/types/operations.ts +20 -27
  203. package/src/types/props.ts +52 -17
  204. package/src/types/views.ts +48 -24
  205. package/src/ui/color-themes.ts +133 -23
  206. package/src/ui/compose/ComposeDialog.tsx +255 -16
  207. package/src/ui/compose/ComposePrompt.tsx +1 -1
  208. package/src/ui/dash/CrudPageHeader.tsx +1 -1
  209. package/src/ui/dash/ListItemRow.tsx +1 -1
  210. package/src/ui/dash/StatusBadge.tsx +12 -2
  211. package/src/ui/dash/appearance/AdvancedContent.tsx +71 -59
  212. package/src/ui/dash/appearance/ColorThemeContent.tsx +48 -33
  213. package/src/ui/dash/appearance/FontThemeContent.tsx +65 -73
  214. package/src/ui/dash/appearance/NavigationContent.tsx +106 -135
  215. package/src/ui/dash/index.ts +0 -3
  216. package/src/ui/dash/settings/AccountContent.tsx +87 -146
  217. package/src/ui/dash/settings/AccountMenuContent.tsx +147 -0
  218. package/src/ui/dash/settings/ApiTokensContent.tsx +232 -0
  219. package/src/ui/dash/settings/AvatarContent.tsx +78 -0
  220. package/src/ui/dash/settings/GeneralContent.tsx +3 -62
  221. package/src/ui/dash/settings/SessionsContent.tsx +159 -0
  222. package/src/ui/dash/settings/SettingsRootContent.tsx +266 -0
  223. package/src/ui/feed/LinkCard.tsx +89 -40
  224. package/src/ui/feed/NoteCard.tsx +39 -25
  225. package/src/ui/feed/PostStatusBadges.tsx +67 -0
  226. package/src/ui/feed/QuoteCard.tsx +38 -23
  227. package/src/ui/feed/ThreadPreview.tsx +90 -26
  228. package/src/ui/feed/TimelineFeed.tsx +3 -2
  229. package/src/ui/feed/TimelineItem.tsx +15 -6
  230. package/src/ui/feed/__tests__/thread-preview.test.ts +107 -0
  231. package/src/ui/feed/thread-preview-state.ts +61 -0
  232. package/src/ui/font-themes.ts +2 -2
  233. package/src/ui/layouts/BaseLayout.tsx +2 -2
  234. package/src/ui/layouts/SiteLayout.tsx +116 -103
  235. package/src/ui/pages/ArchivePage.tsx +923 -95
  236. package/src/ui/pages/CollectionPage.tsx +6 -35
  237. package/src/ui/pages/CollectionsPage.tsx +2 -1
  238. package/src/ui/pages/ComposePage.tsx +54 -0
  239. package/src/ui/pages/FeaturedPage.tsx +2 -1
  240. package/src/ui/pages/HomePage.tsx +1 -1
  241. package/src/ui/pages/PostPage.tsx +30 -45
  242. package/src/ui/pages/SearchPage.tsx +182 -38
  243. package/src/ui/shared/AdminBreadcrumb.tsx +29 -0
  244. package/src/ui/shared/CollectionsSidebar.tsx +239 -4
  245. package/src/ui/shared/MediaGallery.tsx +475 -41
  246. package/src/ui/shared/PostFooter.tsx +204 -0
  247. package/src/ui/shared/StarRating.tsx +27 -0
  248. package/src/ui/shared/__tests__/format-chars.test.ts +35 -0
  249. package/src/ui/shared/index.ts +0 -1
  250. package/src/db/migrations/0000_square_wallflower.sql +0 -118
  251. package/src/db/migrations/0001_add_search_fts.sql +0 -34
  252. package/src/db/migrations/0002_add_media_attachments.sql +0 -3
  253. package/src/db/migrations/0003_add_navigation_links.sql +0 -8
  254. package/src/db/migrations/0004_add_storage_provider.sql +0 -3
  255. package/src/db/migrations/0005_v2_schema_migration.sql +0 -268
  256. package/src/db/migrations/0006_rename_slug_to_path.sql +0 -5
  257. package/src/db/migrations/0007_post_collections_m2m.sql +0 -94
  258. package/src/db/migrations/0008_add_collection_dividers.sql +0 -8
  259. package/src/db/migrations/0009_drop_collection_show_divider.sql +0 -2
  260. package/src/db/migrations/0010_add_performance_indexes.sql +0 -16
  261. package/src/db/migrations/0011_add_path_registry.sql +0 -23
  262. package/src/db/migrations/meta/0003_snapshot.json +0 -821
  263. package/src/lib/__tests__/sqid.test.ts +0 -65
  264. package/src/lib/collections-reorder.ts +0 -28
  265. package/src/lib/compose-bridge.ts +0 -280
  266. package/src/lib/media-upload.ts +0 -148
  267. package/src/lib/sqid.ts +0 -79
  268. package/src/routes/api/__tests__/pages.test.ts +0 -218
  269. package/src/routes/api/pages.ts +0 -73
  270. package/src/routes/dash/__tests__/pages.test.ts +0 -226
  271. package/src/routes/dash/appearance.tsx +0 -240
  272. package/src/routes/dash/collections.tsx +0 -211
  273. package/src/routes/dash/index.tsx +0 -103
  274. package/src/routes/dash/media.tsx +0 -132
  275. package/src/routes/dash/pages.tsx +0 -239
  276. package/src/routes/dash/posts.tsx +0 -334
  277. package/src/routes/dash/redirects.tsx +0 -257
  278. package/src/routes/pages/post.tsx +0 -59
  279. package/src/services/__tests__/page.test.ts +0 -298
  280. package/src/services/__tests__/path-registry.test.ts +0 -165
  281. package/src/services/__tests__/redirect.test.ts +0 -159
  282. package/src/services/page.ts +0 -203
  283. package/src/services/path-registry.ts +0 -160
  284. package/src/services/redirect.ts +0 -97
  285. package/src/types/sortablejs.d.ts +0 -29
  286. package/src/ui/components/__tests__/jant-compose-dialog.test.ts +0 -512
  287. package/src/ui/components/__tests__/jant-compose-editor.test.ts +0 -272
  288. package/src/ui/components/compose-types.ts +0 -75
  289. package/src/ui/components/jant-collection-form.ts +0 -512
  290. package/src/ui/components/jant-compose-dialog.ts +0 -495
  291. package/src/ui/components/jant-compose-editor.ts +0 -814
  292. package/src/ui/dash/PageForm.tsx +0 -185
  293. package/src/ui/dash/PostList.tsx +0 -95
  294. package/src/ui/dash/appearance/AppearanceNav.tsx +0 -60
  295. package/src/ui/dash/collections/CollectionForm.tsx +0 -166
  296. package/src/ui/dash/collections/CollectionsListContent.tsx +0 -146
  297. package/src/ui/dash/collections/IconPickerGrid.tsx +0 -50
  298. package/src/ui/dash/collections/ViewCollectionContent.tsx +0 -103
  299. package/src/ui/dash/media/MediaListContent.tsx +0 -201
  300. package/src/ui/dash/media/ViewMediaContent.tsx +0 -208
  301. package/src/ui/dash/pages/PagesContent.tsx +0 -74
  302. package/src/ui/dash/posts/PostForm.tsx +0 -248
  303. package/src/ui/dash/settings/SettingsNav.tsx +0 -52
  304. package/src/ui/layouts/DashLayout.tsx +0 -165
  305. package/src/ui/pages/SinglePage.tsx +0 -23
  306. package/src/ui/shared/ThreadView.tsx +0 -136
  307. /package/src/{ui → client}/components/settings-types.ts +0 -0
@@ -1,6 +1,6 @@
1
1
  msgid ""
2
2
  msgstr ""
3
- "POT-Creation-Date: 2026-02-01 08:44:08+0000\n"
3
+ "POT-Creation-Date: 2026-03-09 00:37+0800\n"
4
4
  "MIME-Version: 1.0\n"
5
5
  "Content-Type: text/plain; charset=utf-8\n"
6
6
  "Content-Transfer-Encoding: 8bit\n"
@@ -13,46 +13,64 @@ msgstr ""
13
13
  "Language-Team: \n"
14
14
  "Plural-Forms: \n"
15
15
 
16
+ #. @context: Link showing count of hidden thread posts between root and latest
17
+ #. placeholder {0}: hiddenCount === 1 ? "post" : "posts"
18
+ #: src/ui/feed/ThreadPreview.tsx
19
+ msgid "{hiddenCount} more {0}"
20
+ msgstr "還有 {hiddenCount} 則 {0}"
21
+
16
22
  #. @context: Custom CSS textarea placeholder
17
23
  #: src/ui/dash/appearance/AdvancedContent.tsx
18
24
  msgid "/* Your custom CSS here */"
19
- msgstr "/* 您的自訂 CSS 在這裡 */"
25
+ msgstr "/* 在此放入自訂 CSS */"
20
26
 
21
- #. @context: Navigation link
22
- #: src/ui/dash/collections/ViewCollectionContent.tsx
23
- msgid " Back to Collections"
24
- msgstr "← 返回收藏夾"
27
+ #. @context: Compose collection trigger label when multiple collections selected. %name% is the first collection name, %count% is how many more
28
+ #: src/ui/compose/ComposeDialog.tsx
29
+ msgid "%name% + %count% more"
30
+ msgstr ""
25
31
 
26
32
  #. @context: Add alt text label under attachment thumbnail
27
33
  #: src/ui/compose/ComposeDialog.tsx
28
34
  msgid "+ ALT"
29
- msgstr "+ ALT"
35
+ msgstr "+ 替代文字"
30
36
 
31
37
  #. @context: Redirect type option
32
- #: src/routes/dash/redirects.tsx
38
+ #: src/routes/dash/custom-urls.tsx
33
39
  msgid "301 (Permanent)"
34
- msgstr "301(永久)"
40
+ msgstr "301 (永久)"
35
41
 
36
42
  #. @context: Redirect type option
37
- #: src/routes/dash/redirects.tsx
43
+ #: src/routes/dash/custom-urls.tsx
38
44
  msgid "302 (Temporary)"
39
- msgstr "302(臨時)"
45
+ msgstr "302 (暫時)"
40
46
 
41
47
  #. @context: Help text for site description field
42
48
  #: src/ui/dash/settings/GeneralContent.tsx
43
49
  msgid "A short intro for search engines and feed readers. Plain text only."
44
- msgstr "為搜尋引擎和訂閱閱讀器提供的簡短介紹。僅限純文字。"
50
+ msgstr "供搜尋引擎與訂閱閱讀器使用的簡短介紹。僅限純文字。"
45
51
 
46
52
  #. @context: Settings form field for site description
47
53
  #: src/ui/dash/settings/GeneralContent.tsx
48
54
  msgid "About this blog"
49
- msgstr "關於這個部落格"
55
+ msgstr "關於本部落格"
50
56
 
51
- #. @context: Settings sub-navigation tab
52
- #: src/ui/dash/settings/SettingsNav.tsx
57
+ #. @context: Settings group label for account settings
58
+ #. @context: Settings item — account settings
59
+ #: src/ui/dash/settings/SettingsRootContent.tsx
60
+ #: src/ui/dash/settings/SettingsRootContent.tsx
53
61
  msgid "Account"
54
62
  msgstr "帳戶"
55
63
 
64
+ #. @context: Settings section heading for active sessions
65
+ #: src/ui/dash/settings/SessionsContent.tsx
66
+ msgid "Active Sessions"
67
+ msgstr ""
68
+
69
+ #. @context: Heading for list of active API tokens
70
+ #: src/ui/dash/settings/ApiTokensContent.tsx
71
+ msgid "Active Tokens"
72
+ msgstr "啟用的 API 權杖"
73
+
56
74
  #. @context: Add more attachments button
57
75
  #: src/ui/compose/ComposeDialog.tsx
58
76
  msgid "Add"
@@ -61,142 +79,156 @@ msgstr "新增"
61
79
  #. @context: Description in link popover form
62
80
  #: src/ui/dash/appearance/NavigationContent.tsx
63
81
  msgid "Add a custom link to any URL"
64
- msgstr "添加自定義連結到任何 URL"
82
+ msgstr "新增自訂連結至任意 URL"
65
83
 
66
84
  #. @context: Alt text panel title
67
85
  #: src/ui/compose/ComposeDialog.tsx
68
86
  msgid "Add alt text"
69
- msgstr "添加替代文字"
87
+ msgstr "新增替代文字"
70
88
 
71
- #. @context: Card description for page picker
72
- #: src/ui/dash/appearance/NavigationContent.tsx
73
- #~ msgid "Add an existing page to your navigation"
74
- #~ msgstr "將現有頁面添加到您的導航中"
89
+ #. @context: Action to create a new collection from compose
90
+ #: src/ui/compose/ComposeDialog.tsx
91
+ msgid "Add Collection"
92
+ msgstr "新增集合"
75
93
 
76
94
  #. @context: Custom CSS settings description
77
95
  #: src/ui/dash/appearance/AdvancedContent.tsx
78
96
  msgid "Add custom CSS to override any styles. Use data attributes like [data-page], [data-post], [data-format] to target specific elements."
79
- msgstr "添加自定義 CSS 以覆蓋任何樣式。使用數據屬性,如 [data-page][data-post][data-format] 來針對特定元素。"
97
+ msgstr "新增自訂 CSS 以覆寫任何樣式。使用像 [data-page], [data-post], [data-format] 的資料屬性來針對特定元素。"
80
98
 
81
99
  #. @context: Section heading for adding custom link to nav
82
100
  #: src/ui/dash/appearance/NavigationContent.tsx
83
101
  msgid "Add custom link to navigation"
84
- msgstr ""
102
+ msgstr "新增自訂連結至導覽列"
103
+
104
+ #. @context: Menu action to add a divider
105
+ #: src/ui/shared/CollectionsSidebar.tsx
106
+ msgid "Add Divider"
107
+ msgstr "新增分隔線"
85
108
 
86
109
  #. @context: Button and heading for adding custom link
87
110
  #: src/ui/dash/appearance/NavigationContent.tsx
88
111
  msgid "Add Link"
89
112
  msgstr "新增連結"
90
113
 
91
- #. @context: Button to open media picker
92
- #: src/ui/dash/posts/PostForm.tsx
93
- msgid "Add Media"
94
- msgstr "添加媒體"
95
-
96
- #. @context: Card title for adding page to nav
97
- #: src/ui/dash/appearance/NavigationContent.tsx
98
- #~ msgid "Add Page"
99
- #~ msgstr "新增頁面"
100
-
101
- #. @context: Section heading for adding page to nav
102
- #: src/ui/dash/appearance/NavigationContent.tsx
103
- msgid "Add page to navigation"
104
- msgstr ""
105
-
106
- #. @context: Section heading for adding nav items
107
- #: src/ui/dash/appearance/NavigationContent.tsx
108
- #~ msgid "Add to navigation"
109
- #~ msgstr "添加到導航"
110
-
111
- #. @context: Appearance sub-navigation tab
112
- #: src/ui/dash/appearance/AppearanceNav.tsx
114
+ #. @context: Settings group label for advanced settings
115
+ #: src/ui/dash/settings/SettingsRootContent.tsx
113
116
  msgid "Advanced"
114
117
  msgstr "進階"
115
118
 
116
- #. @context: Archive filter - all formats
119
+ #. @context: Description after API reference link
120
+ #: src/ui/dash/settings/ApiTokensContent.tsx
121
+ msgid "all available endpoints and request formats."
122
+ msgstr "所有可用的端點和請求格式."
123
+
124
+ #. @context: Archive filter - collection dropdown default
117
125
  #: src/ui/pages/ArchivePage.tsx
118
- msgid "All"
119
- msgstr "所有"
126
+ msgid "All collections"
127
+ msgstr "所有收藏集"
120
128
 
121
- #. @context: Message when no pages available to add
122
- #: src/ui/dash/appearance/NavigationContent.tsx
123
- msgid "All pages are already in navigation."
129
+ #. @context: Archive filter - all formats select option
130
+ #: src/ui/pages/ArchivePage.tsx
131
+ msgid "All formats"
132
+ msgstr "所有格式"
133
+
134
+ #. @context: Archive filter - all visibility select option
135
+ #: src/ui/pages/ArchivePage.tsx
136
+ msgid "All visibility"
124
137
  msgstr ""
125
138
 
126
- #. @context: Message when no pages available to add
127
- #: src/ui/dash/appearance/NavigationContent.tsx
128
- #~ msgid "All pages are in navigation"
129
- #~ msgstr "所有頁面都在導航中"
139
+ #. @context: Archive filter - year dropdown default
140
+ #: src/ui/pages/ArchivePage.tsx
141
+ msgid "All years"
142
+ msgstr "所有年份"
130
143
 
131
- #. @context: Hint text in alt text panel
132
- #: src/ui/compose/ComposeDialog.tsx
133
- msgid "Alt text improves accessibility"
134
- msgstr "替代文字改善可及性"
144
+ #. @context: Link to API documentation
145
+ #: src/ui/dash/settings/ApiTokensContent.tsx
146
+ msgid "API reference"
147
+ msgstr "API 參考"
135
148
 
136
- #. @context: Dashboard navigation - appearance settings
137
- #: src/ui/layouts/DashLayout.tsx
138
- msgid "Appearance"
139
- msgstr "外觀"
149
+ #. @context: Settings item API token settings
150
+ #. @context: Settings section heading
151
+ #: src/ui/dash/settings/ApiTokensContent.tsx
152
+ #: src/ui/dash/settings/SettingsRootContent.tsx
153
+ msgid "API Tokens"
154
+ msgstr "API 令牌"
155
+
156
+ #. @context: Appearance settings description
157
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
158
+ msgid "Applies to your entire site, including admin pages. All themes support dark mode."
159
+ msgstr "套用於整個網站,包括管理頁面。所有主題皆支援深色模式。"
140
160
 
141
161
  #. @context: Archive page title
142
162
  #: src/ui/pages/ArchivePage.tsx
143
163
  msgid "Archive"
144
- msgstr "檔案館"
164
+ msgstr "封存"
145
165
 
146
- #. @context: Confirmation dialog when deleting a post from the list
147
- #: src/ui/dash/PostList.tsx
148
- msgid "Are you sure you want to delete this post? This cannot be undone."
149
- msgstr "您確定要刪除這篇文章嗎?這個操作無法撤銷。"
166
+ #. @context: Archive media filter - audio
167
+ #: src/ui/pages/ArchivePage.tsx
168
+ msgid "Audio"
169
+ msgstr "音訊"
150
170
 
151
- #. @context: Attached text panel title
152
- #: src/ui/compose/ComposeDialog.tsx
153
- msgid "Attached Text"
154
- msgstr "附加文本"
171
+ #. @context: Error toast when authentication secret is missing from server config
172
+ #: src/routes/auth/setup.tsx
173
+ msgid "Auth secret is missing. Check your environment variables."
174
+ msgstr "驗證祕鑰遺失。請檢查您的環境變數。"
155
175
 
156
176
  #. @context: Error toast when authentication system is unavailable
157
177
  #: src/routes/auth/signin.tsx
158
- msgid "Auth not configured"
159
- msgstr "身份驗證未配置"
160
-
161
- #. @context: Error toast when authentication secret is missing from server config
162
- #: src/routes/auth/setup.tsx
163
- msgid "AUTH_SECRET not configured"
164
- msgstr "AUTH_SECRET 未配置"
178
+ msgid "Authentication isn't set up. Check your server config."
179
+ msgstr "身分驗證尚未設定. 請檢查您的伺服器設定."
165
180
 
166
181
  #. @context: Compose quote author placeholder
167
182
  #: src/ui/compose/ComposeDialog.tsx
168
183
  msgid "Author (optional)"
169
- msgstr "作者(可選)"
184
+ msgstr "作者 (選填)"
185
+
186
+ #. @context: Description after theming guide link on Custom CSS page
187
+ #: src/ui/dash/appearance/AdvancedContent.tsx
188
+ msgid "available CSS variables, data attributes, and examples."
189
+ msgstr ""
190
+
191
+ #. @context: Settings item — avatar settings
192
+ #: src/ui/dash/settings/SettingsRootContent.tsx
193
+ msgid "Avatar"
194
+ msgstr "頭像"
170
195
 
171
196
  #. @context: Toast after saving avatar display preference
172
197
  #. @context: Toast after saving avatar display preference
173
198
  #: src/routes/dash/settings.tsx
174
199
  #: src/routes/dash/settings.tsx
175
- msgid "Avatar display setting saved successfully."
176
- msgstr "頭像顯示設置已成功保存。"
200
+ msgid "Avatar display updated."
201
+ msgstr "頭像顯示已更新。"
177
202
 
178
- #. @context: Button to go back to media list
179
- #: src/ui/dash/media/ViewMediaContent.tsx
203
+ #. @context: Link back from the new post page
204
+ #: src/ui/pages/ComposePage.tsx
180
205
  msgid "Back"
181
- msgstr "返回"
206
+ msgstr ""
207
+
208
+ #. @context: Settings item description for API tokens
209
+ #: src/ui/dash/settings/SettingsRootContent.tsx
210
+ msgid "Bearer tokens for scripts and automation"
211
+ msgstr "用於腳本與自動化的 Bearer 令牌"
182
212
 
183
213
  #. @context: Settings section heading for avatar
184
- #: src/ui/dash/settings/GeneralContent.tsx
214
+ #: src/ui/dash/settings/AvatarContent.tsx
185
215
  msgid "Blog Avatar"
186
216
  msgstr "部落格頭像"
187
217
 
188
- #. @context: Button to cancel and go back
189
218
  #. @context: Button to cancel form
190
219
  #. @context: Button to cancel form
191
220
  #. @context: Button to cancel form
221
+ #. @context: Button to cancel settings changes
192
222
  #. @context: Button to cancel unsaved changes and revert to original values
193
223
  #. @context: Close compose dialog
194
- #: src/routes/dash/redirects.tsx
224
+ #. @context: Confirm close action sheet - cancel and return to editor
225
+ #: src/routes/dash/custom-urls.tsx
195
226
  #: src/ui/compose/ComposeDialog.tsx
196
- #: src/ui/dash/collections/CollectionForm.tsx
197
- #: src/ui/dash/PageForm.tsx
198
- #: src/ui/dash/posts/PostForm.tsx
227
+ #: src/ui/compose/ComposeDialog.tsx
228
+ #: src/ui/compose/ComposeDialog.tsx
229
+ #: src/ui/dash/settings/AvatarContent.tsx
199
230
  #: src/ui/dash/settings/GeneralContent.tsx
231
+ #: src/ui/shared/CollectionsSidebar.tsx
200
232
  msgid "Cancel"
201
233
  msgstr "取消"
202
234
 
@@ -205,68 +237,55 @@ msgstr "取消"
205
237
  #: src/ui/dash/settings/AccountContent.tsx
206
238
  #: src/ui/dash/settings/AccountContent.tsx
207
239
  msgid "Change Password"
208
- msgstr "更改密碼"
240
+ msgstr "變更密碼"
241
+
242
+ #. @context: Settings item description for password change
243
+ #: src/ui/dash/settings/AccountMenuContent.tsx
244
+ msgid "Change your sign-in password"
245
+ msgstr "變更您的登入密碼"
209
246
 
210
247
  #. @context: Font theme settings description
211
248
  #: src/ui/dash/appearance/FontThemeContent.tsx
212
249
  msgid "Choose a font pairing for your site. All options use system fonts for fast loading."
213
- msgstr "選擇一個字體搭配以供您的網站使用。所有選項均使用系統字體以加快加載速度。"
214
-
215
- #. @context: Placeholder for page select combobox trigger
216
- #: src/ui/dash/appearance/NavigationContent.tsx
217
- msgid "Choose a page…"
218
- msgstr ""
250
+ msgstr "為您的網站選擇字型配對。所有選項皆使用系統字型以快速載入。"
219
251
 
220
- #. @context: Button to open icon picker
221
- #. @context: Icon picker dialog title
222
- #: src/ui/dash/collections/CollectionForm.tsx
223
- #: src/ui/dash/collections/CollectionForm.tsx
224
- msgid "Choose Icon"
225
- msgstr "選擇圖示"
226
-
227
- #. @context: Hint to click image for lightbox
228
- #: src/ui/dash/media/ViewMediaContent.tsx
229
- msgid "Click image to view full size"
230
- msgstr "點擊圖片以查看完整大小"
231
-
232
- #. @context: Button to close icon picker
233
- #: src/ui/dash/collections/CollectionForm.tsx
234
- msgid "Close"
235
- msgstr "關閉"
252
+ #. @context: Password reset page description
253
+ #: src/routes/auth/reset.tsx
254
+ msgid "Choose a new password."
255
+ msgstr "請選擇新密碼."
236
256
 
237
257
  #. @context: Compose collection selector trigger label
258
+ #. @context: Custom URL type option
259
+ #: src/routes/dash/custom-urls.tsx
238
260
  #: src/ui/compose/ComposeDialog.tsx
239
261
  msgid "Collection"
240
262
  msgstr "集合"
241
263
 
242
264
  #. @context: Collections page heading
243
- #. @context: Dashboard heading
244
265
  #. @context: Sidebar heading for collections nav
245
- #: src/ui/dash/collections/CollectionsListContent.tsx
266
+ #. @context: Sidebar heading for collections nav
246
267
  #: src/ui/pages/CollectionsPage.tsx
247
268
  #: src/ui/shared/CollectionsSidebar.tsx
269
+ #: src/ui/shared/CollectionsSidebar.tsx
248
270
  msgid "Collections"
249
- msgstr "收藏夾"
250
-
251
- #. @context: Post form field - assign to collections
252
- #: src/ui/dash/posts/PostForm.tsx
253
- msgid "Collections (optional)"
254
- msgstr "收藏(可選)"
271
+ msgstr "收藏集"
255
272
 
256
273
  #. @context: Appearance settings heading
274
+ #. @context: Settings item description for color theme
257
275
  #: src/ui/dash/appearance/ColorThemeContent.tsx
276
+ #: src/ui/dash/settings/SettingsRootContent.tsx
258
277
  msgid "Color theme"
259
- msgstr "顏色主題"
278
+ msgstr "色彩主題"
260
279
 
261
- #. @context: Appearance sub-navigation tab
262
- #: src/ui/dash/appearance/AppearanceNav.tsx
280
+ #. @context: Settings item — color theme settings
281
+ #: src/ui/dash/settings/SettingsRootContent.tsx
263
282
  msgid "Color Theme"
264
- msgstr "顏色主題"
283
+ msgstr "色彩主題"
265
284
 
266
285
  #. @context: Setup form submit button
267
286
  #: src/routes/auth/setup.tsx
268
287
  msgid "Complete Setup"
269
- msgstr "完成設置"
288
+ msgstr "完成設定"
270
289
 
271
290
  #. @context: Password form field
272
291
  #: src/ui/dash/settings/AccountContent.tsx
@@ -278,195 +297,261 @@ msgstr "確認新密碼"
278
297
  msgid "Confirm Password"
279
298
  msgstr "確認密碼"
280
299
 
281
- #. @context: Page form field label - content
282
- #. @context: Post form field
283
- #: src/ui/dash/PageForm.tsx
284
- #: src/ui/dash/posts/PostForm.tsx
285
- msgid "Content"
286
- msgstr "內容"
287
-
288
- #. @context: Button to copy Markdown to clipboard
289
- #. @context: Button to copy URL to clipboard
290
- #: src/ui/dash/media/ViewMediaContent.tsx
291
- #: src/ui/dash/media/ViewMediaContent.tsx
292
- msgid "Copy"
293
- msgstr "複製"
294
-
295
- #. @context: Button to save new collection
296
- #: src/ui/dash/collections/CollectionForm.tsx
297
- msgid "Create Collection"
298
- msgstr "創建收藏夾"
299
-
300
- #. @context: Button to create new page
301
- #: src/ui/dash/PageForm.tsx
302
- msgid "Create Page"
303
- msgstr "創建頁面"
304
-
305
- #. @context: Button to save new redirect
306
- #: src/routes/dash/redirects.tsx
307
- msgid "Create Redirect"
308
- msgstr "建立重定向"
300
+ #. @context: Feedback after copying API token
301
+ #: src/ui/dash/settings/ApiTokensContent.tsx
302
+ msgid "Copied"
303
+ msgstr "已複製"
304
+
305
+ #. @context: Button to copy API token to clipboard
306
+ #. @context: Button to copy API token to clipboard
307
+ #: src/ui/dash/settings/ApiTokensContent.tsx
308
+ #: src/ui/dash/settings/ApiTokensContent.tsx
309
+ msgid "Copy Token"
310
+ msgstr "複製 Token"
311
+
312
+ #. @context: Warning to copy newly created API token
313
+ #: src/ui/dash/settings/ApiTokensContent.tsx
314
+ msgid "Copy your token now it won't be shown again."
315
+ msgstr "請立即複製您的 token — 之後不會再顯示。"
316
+
317
+ #. @context: Error toast when account creation fails
318
+ #. @context: Error toast when account creation fails
319
+ #: src/routes/auth/setup.tsx
320
+ #: src/routes/auth/setup.tsx
321
+ msgid "Couldn't create your account. Check the details and try again."
322
+ msgstr "無法建立您的帳戶。請檢查資料後再試一次。"
323
+
324
+ #. @context: Error toast when nav delete fails
325
+ #: src/ui/dash/appearance/NavigationContent.tsx
326
+ msgid "Couldn't delete. Try again in a moment."
327
+ msgstr "無法刪除. 請稍後再試."
328
+
329
+ #. @context: Toast when publish fails and post is auto-saved as draft
330
+ #: src/ui/compose/ComposeDialog.tsx
331
+ msgid "Couldn't publish. Saved as draft."
332
+ msgstr "無法發布。已儲存為草稿。"
333
+
334
+ #. @context: Error toast when nav save fails
335
+ #. @context: Toast when save fails
336
+ #: src/ui/dash/appearance/NavigationContent.tsx
337
+ #: src/ui/shared/CollectionsSidebar.tsx
338
+ msgid "Couldn't save. Try again in a moment."
339
+ msgstr "無法儲存。 請稍後再試。"
340
+
341
+ #. @context: Compose collection combobox empty state when no collections exist
342
+ #: src/ui/compose/ComposeDialog.tsx
343
+ msgid "Create a collection to get started."
344
+ msgstr "建立一個集合以開始。"
345
+
346
+ #. @context: Label for curl example
347
+ #: src/ui/dash/settings/ApiTokensContent.tsx
348
+ msgid "Create a post with curl:"
349
+ msgstr "使用 curl 建立貼文:"
350
+
351
+ #. @context: Button to save new custom URL
352
+ #: src/routes/dash/custom-urls.tsx
353
+ msgid "Create Custom URL"
354
+ msgstr "建立自訂網址"
309
355
 
310
356
  #. @context: Setup page description
311
357
  #: src/routes/auth/setup.tsx
312
358
  msgid "Create your admin account."
313
- msgstr "建立您的管理員帳戶。"
359
+ msgstr "建立您的管理員帳號."
314
360
 
315
- #. @context: Button in empty state to create first post
316
- #: src/ui/dash/PostList.tsx
317
- msgid "Create your first post"
318
- msgstr "創建你的第一篇帖子"
361
+ #. @context: Token creation date
362
+ #. placeholder {0}: formatDate(token.createdAt)
363
+ #: src/ui/dash/settings/ApiTokensContent.tsx
364
+ msgid "Created {0}"
365
+ msgstr "建立於 {0}"
366
+
367
+ #. @context: Badge indicating the current active session
368
+ #: src/ui/dash/settings/SessionsContent.tsx
369
+ msgid "Current"
370
+ msgstr ""
319
371
 
320
372
  #. @context: Password form field
321
373
  #: src/ui/dash/settings/AccountContent.tsx
322
374
  msgid "Current Password"
323
- msgstr "當前密碼"
375
+ msgstr "目前密碼"
324
376
 
325
377
  #. @context: Error toast when current password verification fails
326
378
  #: src/routes/dash/settings.tsx
327
- msgid "Current password is incorrect."
328
- msgstr "當前密碼不正確。"
379
+ msgid "Current password doesn't match. Try again."
380
+ msgstr "目前的密碼不符。請再試一次。"
329
381
 
330
382
  #. @context: Appearance settings heading for custom CSS
383
+ #. @context: Link to Custom CSS settings from color theme page
384
+ #. @context: Settings item — custom CSS settings
331
385
  #: src/ui/dash/appearance/AdvancedContent.tsx
386
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
387
+ #: src/ui/dash/settings/SettingsRootContent.tsx
332
388
  msgid "Custom CSS"
333
389
  msgstr "自訂 CSS"
334
390
 
335
391
  #. @context: Toast after saving custom CSS
336
- #: src/routes/dash/appearance.tsx
337
- msgid "Custom CSS saved successfully."
338
- msgstr "自訂 CSS 已成功儲存。"
392
+ #: src/routes/dash/settings.tsx
393
+ msgid "Custom CSS updated."
394
+ msgstr "自訂 CSS 已更新。"
395
+
396
+ #. @context: Settings item description for custom CSS
397
+ #: src/ui/dash/settings/SettingsRootContent.tsx
398
+ msgid "Custom styling"
399
+ msgstr "自訂樣式"
400
+
401
+ #. @context: Settings item — custom URL settings
402
+ #. @context: Settings section heading
403
+ #: src/routes/dash/custom-urls.tsx
404
+ #: src/ui/dash/settings/SettingsRootContent.tsx
405
+ msgid "Custom URLs"
406
+ msgstr "自訂 URL"
339
407
 
340
408
  #. @context: Section heading for dangerous/destructive actions
341
409
  #: src/ui/dash/DangerZone.tsx
342
410
  msgid "Danger Zone"
343
411
  msgstr "危險區域"
344
412
 
345
- #. @context: Dashboard main heading
346
- #: src/routes/dash/index.tsx
347
- msgid "Dashboard"
348
- msgstr "儀表板"
349
-
350
- #. @context: Settings form field
351
- #: src/ui/dash/settings/GeneralContent.tsx
352
- #~ msgid "Default Homepage View"
353
- #~ msgstr "預設首頁視圖"
413
+ #. @context: Settings group label for data export/import
414
+ #: src/ui/dash/settings/AccountMenuContent.tsx
415
+ msgid "Data"
416
+ msgstr ""
354
417
 
418
+ #. @context: Button to delete custom URL
355
419
  #. @context: Button to delete item
356
- #. @context: Button to delete redirect
420
+ #. @context: Delete collection action
357
421
  #. @context: Delete nav item
358
- #: src/routes/dash/redirects.tsx
422
+ #: src/routes/dash/custom-urls.tsx
359
423
  #: src/ui/dash/ActionButtons.tsx
360
424
  #: src/ui/dash/appearance/NavigationContent.tsx
425
+ #: src/ui/shared/CollectionsSidebar.tsx
361
426
  msgid "Delete"
362
427
  msgstr "刪除"
363
428
 
364
- #. @context: Button to delete media
365
- #: src/ui/dash/media/ViewMediaContent.tsx
366
- msgid "Delete Media"
367
- msgstr "刪除媒體"
429
+ #. @context: Draft item action
430
+ #: src/ui/compose/ComposeDialog.tsx
431
+ msgid "Delete Draft"
432
+ msgstr "刪除草稿"
368
433
 
369
- #. @context: Button to delete page
370
- #: src/routes/dash/pages.tsx
371
- msgid "Delete Page"
372
- msgstr "刪除頁面"
434
+ #. @context: Confirm dialog for deleting a collection
435
+ #: src/ui/shared/CollectionsSidebar.tsx
436
+ msgid "Delete this collection permanently? Posts inside won't be removed."
437
+ msgstr "永久刪除此收藏?其中的文章不會被刪除。"
373
438
 
374
- #. @context: Warning message before deleting media
375
- #: src/ui/dash/media/ViewMediaContent.tsx
376
- msgid "Deleting this media will remove it permanently from storage."
377
- msgstr "刪除此媒體將永久從存儲中移除它。"
439
+ #. @context: Toast after deleting a collection
440
+ #: src/ui/shared/CollectionsSidebar.tsx
441
+ msgid "Deleted"
442
+ msgstr "已刪除"
378
443
 
379
444
  #. @context: Hint shown on signin page when demo credentials are pre-filled
380
445
  #: src/routes/auth/signin.tsx
381
- msgid "Demo account pre-filled. Just click Sign In."
382
- msgstr "示範帳戶已預填。只需點擊登入。"
446
+ msgid "Demo credentials are pre-filled hit Sign In to continue."
447
+ msgstr "示範憑證已預先填入 — 按「登入」以繼續。"
383
448
 
384
449
  #. @context: Alt text textarea placeholder
385
450
  #: src/ui/compose/ComposeDialog.tsx
386
451
  msgid "Describe this for people with visual impairments..."
387
- msgstr "為視障人士描述這個..."
452
+ msgstr "為視障者描述此內容..."
388
453
 
389
454
  #. @context: Collection form field
390
- #: src/ui/dash/collections/CollectionForm.tsx
455
+ #. @context: Collection form field
456
+ #: src/ui/compose/ComposeDialog.tsx
457
+ #: src/ui/shared/CollectionsSidebar.tsx
391
458
  msgid "Description (optional)"
392
- msgstr "描述(可選)"
459
+ msgstr "描述(選填)"
460
+
461
+ #. @context: Settings group label for design settings
462
+ #: src/ui/dash/settings/SettingsRootContent.tsx
463
+ msgid "Design"
464
+ msgstr "設計"
393
465
 
466
+ #. @context: Redirect destination field
467
+ #: src/routes/dash/custom-urls.tsx
468
+ msgid "Destination"
469
+ msgstr "目的地"
470
+
471
+ #. @context: Confirm close action sheet - discard changes button for editing published post
394
472
  #. @context: More menu - discard post
395
473
  #: src/ui/compose/ComposeDialog.tsx
474
+ #: src/ui/compose/ComposeDialog.tsx
396
475
  msgid "Discard"
397
- msgstr "丟棄"
476
+ msgstr "放棄"
398
477
 
399
478
  #. @context: Checkbox to show avatar in the site header
400
- #: src/ui/dash/settings/GeneralContent.tsx
479
+ #: src/ui/dash/settings/AvatarContent.tsx
401
480
  msgid "Display avatar in my site header"
402
- msgstr "在我的網站標頭中顯示頭像"
481
+ msgstr "在我的網站標頭顯示頭像"
403
482
 
404
483
  #. @context: Help text for site footer field
405
484
  #: src/ui/dash/settings/GeneralContent.tsx
406
485
  msgid "Displayed at the bottom of all posts and pages. Markdown supported."
407
- msgstr "顯示在所有文章和頁面的底部。支持Markdown"
486
+ msgstr "顯示於所有文章與頁面的底部。支援 Markdown."
487
+
488
+ #. @context: Confirm close action sheet subtitle when editing a published post
489
+ #: src/ui/compose/ComposeDialog.tsx
490
+ msgid "Do you want to publish your changes or discard them?"
491
+ msgstr ""
492
+
493
+ #. @context: Confirm close action sheet - discard button
494
+ #: src/ui/compose/ComposeDialog.tsx
495
+ msgid "Don't save"
496
+ msgstr "不儲存"
408
497
 
498
+ #. @context: Button to exit reorder mode
409
499
  #. @context: Close attached text panel
410
- #. @context: Close media picker button
500
+ #. @context: Compose button - update existing post
501
+ #: src/ui/compose/ComposeDialog.tsx
411
502
  #: src/ui/compose/ComposeDialog.tsx
412
- #: src/ui/dash/posts/PostForm.tsx
503
+ #: src/ui/shared/CollectionsSidebar.tsx
413
504
  msgid "Done"
414
505
  msgstr "完成"
415
506
 
416
- #. @context: Page status option - draft
507
+ #. @context: Settings item description for site export
508
+ #: src/ui/dash/settings/AccountMenuContent.tsx
509
+ msgid "Download as a Zola static site (.zip)"
510
+ msgstr ""
511
+
417
512
  #. @context: Post status badge - draft
418
- #. @context: Post status option
419
- #: src/ui/dash/PageForm.tsx
420
- #: src/ui/dash/posts/PostForm.tsx
421
513
  #: src/ui/dash/StatusBadge.tsx
422
514
  msgid "Draft"
423
515
  msgstr "草稿"
424
516
 
517
+ #. @context: Toast after draft deletion
518
+ #: src/ui/compose/ComposeDialog.tsx
519
+ msgid "Draft deleted."
520
+ msgstr "草稿已刪除."
521
+
522
+ #. @context: Toast shown when a local draft is restored on compose open
523
+ #: src/ui/compose/ComposeDialog.tsx
524
+ msgid "Draft restored."
525
+ msgstr "草稿已還原。"
526
+
425
527
  #. @context: Toast after saving a draft post
426
528
  #. @context: Toast after saving a draft post
427
529
  #: src/routes/compose.tsx
428
530
  #: src/routes/compose.tsx
429
531
  msgid "Draft saved."
430
- msgstr "草稿已保存。"
532
+ msgstr "草稿已儲存。"
431
533
 
432
- #. @context: Post status label
433
- #: src/routes/dash/index.tsx
534
+ #. @context: Drafts panel title
535
+ #: src/ui/compose/ComposeDialog.tsx
434
536
  msgid "Drafts"
435
537
  msgstr "草稿"
436
538
 
437
- #. @context: Button to edit collection
438
- #. @context: Button to edit collection
539
+ #. @context: Placeholder for API token name input
540
+ #: src/ui/dash/settings/ApiTokensContent.tsx
541
+ msgid "e.g. iOS Shortcuts"
542
+ msgstr "例如 iOS Shortcuts"
543
+
439
544
  #. @context: Button to edit item
440
- #. @context: Button to edit page
441
- #. @context: Button to edit page
442
- #. @context: Button to edit post
443
- #. @context: Button to edit post
444
- #: src/routes/dash/pages.tsx
445
- #: src/routes/dash/posts.tsx
545
+ #. @context: Per-collection edit action
446
546
  #: src/ui/dash/ActionButtons.tsx
447
- #: src/ui/dash/collections/CollectionsListContent.tsx
448
- #: src/ui/dash/collections/ViewCollectionContent.tsx
449
- #: src/ui/dash/pages/PagesContent.tsx
450
- #: src/ui/dash/PostList.tsx
547
+ #: src/ui/shared/CollectionsSidebar.tsx
451
548
  msgid "Edit"
452
549
  msgstr "編輯"
453
550
 
454
- #. @context: Page heading
455
- #: src/ui/dash/collections/CollectionForm.tsx
456
- msgid "Edit Collection"
457
- msgstr "編輯收藏集"
458
-
459
- #. @context: Edit page main heading
460
- #. @context: Link to edit the page
461
- #: src/routes/dash/pages.tsx
462
- #: src/ui/dash/appearance/NavigationContent.tsx
463
- msgid "Edit Page"
464
- msgstr "編輯頁面"
465
-
466
- #. @context: Page heading
467
- #: src/routes/dash/posts.tsx
468
- msgid "Edit Post"
469
- msgstr "編輯文章"
551
+ #. @context: Compose dialog header title in edit mode
552
+ #: src/ui/compose/ComposeDialog.tsx
553
+ msgid "Edit post"
554
+ msgstr "編輯貼文"
470
555
 
471
556
  #. @context: Setup/signin form field - email
472
557
  #. @context: Setup/signin form field - email
@@ -475,167 +560,146 @@ msgstr "編輯文章"
475
560
  msgid "Email"
476
561
  msgstr "電子郵件"
477
562
 
478
- #. @context: Password reset page description
479
- #: src/routes/auth/reset.tsx
480
- msgid "Enter your new password."
481
- msgstr "請輸入您的新密碼。"
563
+ #. @context: Compose toolbar - emoji picker tooltip
564
+ #: src/ui/compose/ComposeDialog.tsx
565
+ msgid "Emoji"
566
+ msgstr "表情符號"
567
+
568
+ #. @context: Emoji picker tab label
569
+ #. @context: Emoji picker tab label
570
+ #: src/ui/compose/ComposeDialog.tsx
571
+ #: src/ui/shared/CollectionsSidebar.tsx
572
+ msgid "Emojis"
573
+ msgstr "表情符號"
482
574
 
483
575
  #. @context: Plural entry count label
484
576
  #: src/ui/pages/CollectionsPage.tsx
485
577
  msgid "entries"
486
- msgstr "條目"
578
+ msgstr "項目"
487
579
 
488
580
  #. @context: Singular entry count label
489
581
  #: src/ui/pages/CollectionsPage.tsx
490
582
  msgid "entry"
491
- msgstr "條目"
492
-
493
- #. @context: Error toast when account creation fails
494
- #. @context: Error toast when account creation fails
495
- #: src/routes/auth/setup.tsx
496
- #: src/routes/auth/setup.tsx
497
- msgid "Failed to create account"
498
- msgstr "無法創建帳戶"
583
+ msgstr "項目"
499
584
 
500
- #. @context: Error toast when nav delete fails
501
- #: src/ui/dash/appearance/NavigationContent.tsx
502
- msgid "Failed to delete. Please try again."
503
- msgstr "刪除失敗。請再試一次。"
504
-
505
- #. @context: Toast when post save fails
506
- #: src/ui/dash/posts/PostForm.tsx
507
- msgid "Failed to save post. Please try again."
508
- msgstr "無法保存帖子。請再試一次。"
509
-
510
- #. @context: Error toast when nav save fails
511
- #: src/ui/dash/appearance/NavigationContent.tsx
512
- msgid "Failed to save. Please try again."
513
- msgstr "保存失敗。請再試一次。"
585
+ #. @context: Settings item export site as Zola ZIP
586
+ #: src/ui/dash/settings/AccountMenuContent.tsx
587
+ msgid "Export Site"
588
+ msgstr ""
514
589
 
515
- #. @context: Error toast when profile update fails
516
- #: src/routes/dash/settings.tsx
517
- msgid "Failed to update profile."
518
- msgstr "無法更新個人資料。"
590
+ #. @context: Settings item description for avatar
591
+ #: src/ui/dash/settings/SettingsRootContent.tsx
592
+ msgid "Favicon and header icon"
593
+ msgstr "網站小圖示與頁首圖示"
519
594
 
520
- #. @context: Archive filter - featured posts
595
+ #. @context: Archive visibility filter - featured posts
521
596
  #. @context: Browse filter for featured posts
522
597
  #. @context: Browse filter label
523
598
  #. @context: Browse filter label
524
599
  #. @context: Browse filter label for featured posts
525
600
  #. @context: Post badge - featured
526
- #. @context: Post form checkbox - mark as featured
527
601
  #: src/ui/dash/appearance/NavigationContent.tsx
528
602
  #: src/ui/dash/appearance/NavigationContent.tsx
529
603
  #: src/ui/dash/appearance/NavigationContent.tsx
530
- #: src/ui/dash/posts/PostForm.tsx
531
604
  #: src/ui/dash/StatusBadge.tsx
532
605
  #: src/ui/layouts/SiteLayout.tsx
533
606
  #: src/ui/pages/ArchivePage.tsx
534
607
  msgid "Featured"
535
608
  msgstr "精選"
536
609
 
610
+ #. @context: Error toast when file storage is not set up
611
+ #. @context: Error when file storage is not set up
612
+ #: src/routes/api/upload.ts
613
+ #: src/routes/dash/settings.tsx
614
+ msgid "File storage isn't set up. Check your server config."
615
+ msgstr "檔案儲存尚未設定。請檢查您的伺服器設定。"
616
+
617
+ #. @context: Toast after successful file upload
618
+ #: src/routes/api/upload.ts
619
+ msgid "File uploaded."
620
+ msgstr "檔案已上傳。"
621
+
622
+ #. @context: Archive media filter - files/documents
623
+ #: src/ui/pages/ArchivePage.tsx
624
+ msgid "Files"
625
+ msgstr "檔案"
626
+
537
627
  #. @context: Appearance settings heading for font theme
538
628
  #: src/ui/dash/appearance/FontThemeContent.tsx
539
629
  msgid "Font theme"
540
630
  msgstr "字型主題"
541
631
 
542
- #. @context: Appearance sub-navigation tab
543
- #: src/ui/dash/appearance/AppearanceNav.tsx
632
+ #. @context: Settings item — font theme settings
633
+ #: src/ui/dash/settings/SettingsRootContent.tsx
544
634
  msgid "Font Theme"
545
635
  msgstr "字型主題"
546
636
 
547
- #. @context: Post form field - post format
548
- #: src/ui/dash/posts/PostForm.tsx
549
- msgid "Format"
550
- msgstr "格式"
551
-
552
637
  #. @context: Search results count - multiple
553
638
  #. placeholder {0}: String(results.length)
554
639
  #: src/ui/pages/SearchPage.tsx
555
640
  msgid "Found {0} results"
556
- msgstr "找到 {0} 個結果"
641
+ msgstr "找到 {0} 筆結果"
557
642
 
558
643
  #. @context: Search results count - single
559
644
  #: src/ui/pages/SearchPage.tsx
560
645
  msgid "Found 1 result"
561
646
  msgstr "找到 1 個結果"
562
647
 
563
- #. @context: Redirect form field
564
- #: src/routes/dash/redirects.tsx
565
- msgid "From Path"
566
- msgstr "來源路徑"
567
-
648
+ #. @context: Settings item — general settings
568
649
  #. @context: Settings section heading
569
- #. @context: Settings sub-navigation tab
570
650
  #: src/ui/dash/settings/GeneralContent.tsx
571
- #: src/ui/dash/settings/SettingsNav.tsx
651
+ #: src/ui/dash/settings/SettingsRootContent.tsx
572
652
  msgid "General"
573
- msgstr "一般設定"
653
+ msgstr "一般"
654
+
655
+ #. @context: Button to create new API token
656
+ #: src/ui/dash/settings/ApiTokensContent.tsx
657
+ msgid "Generate Token"
658
+ msgstr "產生 Token"
574
659
 
575
660
  #. @context: Compose link title placeholder
576
661
  #: src/ui/compose/ComposeDialog.tsx
577
662
  msgid "Give it a title..."
578
- msgstr "給它一個標題..."
663
+ msgstr "為連結加上標題..."
664
+
665
+ #. @context: Settings item description for navigation
666
+ #: src/ui/dash/settings/SettingsRootContent.tsx
667
+ msgid "Header links, featured"
668
+ msgstr "頁首連結,精選"
579
669
 
670
+ #. @context: Hint text in alt text panel
671
+ #: src/ui/compose/ComposeDialog.tsx
672
+ msgid "Helps screen readers describe the image"
673
+ msgstr "協助螢幕閱讀器描述圖片"
674
+
675
+ #. @context: Collection sort order option
580
676
  #. @context: Collection sort order option
581
- #: src/ui/dash/collections/CollectionForm.tsx
677
+ #: src/ui/compose/ComposeDialog.tsx
678
+ #: src/ui/shared/CollectionsSidebar.tsx
582
679
  msgid "Highest rated"
583
- msgstr "最高評價"
680
+ msgstr "評分最高"
584
681
 
585
682
  #. @context: Toast after saving home default view setting
586
683
  #: src/ui/dash/appearance/NavigationContent.tsx
587
684
  msgid "Home view saved"
588
- msgstr ""
685
+ msgstr "首頁檢視已儲存"
589
686
 
590
- #. @context: Collection form field
591
- #: src/ui/dash/collections/CollectionForm.tsx
592
- msgid "Icon (optional)"
593
- msgstr "圖示(可選)"
594
-
595
- #. @context: Media upload instructions - auto optimization
596
- #: src/ui/dash/media/MediaListContent.tsx
597
- msgid "Images are automatically optimized: resized to max 1920px, converted to WebP, and metadata stripped."
598
- msgstr "圖片會自動優化:調整大小至最大 1920 像素,轉換為 WebP 格式,並去除元數據。"
599
-
600
- #. @context: Error toast when sign-in credentials are wrong
601
- #: src/routes/auth/signin.tsx
602
- msgid "Invalid email or password"
603
- msgstr "無效的電子郵件或密碼"
604
-
605
- #. @context: Error toast when selected font theme is not valid
606
- #: src/routes/dash/appearance.tsx
607
- msgid "Invalid font theme selected."
608
- msgstr "選擇的字體主題無效。"
609
-
610
- #. @context: Fallback validation error for compose form
611
- #. @context: Fallback validation error for page form
612
- #. @context: Fallback validation error for page form
613
- #. @context: Fallback validation error for password reset form
614
- #. @context: Fallback validation error for setup form
615
- #. @context: Fallback validation error for sign-in form
616
- #: src/routes/auth/reset.tsx
617
- #: src/routes/auth/setup.tsx
618
- #: src/routes/auth/signin.tsx
619
- #: src/routes/compose.tsx
620
- #: src/routes/dash/pages.tsx
621
- #: src/routes/dash/pages.tsx
622
- msgid "Invalid input"
623
- msgstr "無效的輸入"
624
-
625
- #. @context: Password reset error heading
626
- #: src/routes/auth/reset.tsx
627
- msgid "Invalid or Expired Link"
628
- msgstr "無效或已過期的連結"
687
+ #. @context: Icon picker tab label
688
+ #. @context: Icon picker tab label
689
+ #: src/ui/compose/ComposeDialog.tsx
690
+ #: src/ui/shared/CollectionsSidebar.tsx
691
+ msgid "Icons"
692
+ msgstr "圖示"
629
693
 
630
- #. @context: Error toast when selected theme is not valid
631
- #: src/routes/dash/appearance.tsx
632
- msgid "Invalid theme selected."
633
- msgstr "選擇的主題無效。"
694
+ #. @context: Archive media filter - images
695
+ #: src/ui/pages/ArchivePage.tsx
696
+ msgid "Images"
697
+ msgstr "圖片"
634
698
 
635
699
  #. @context: Checkbox for allowing search engine indexing
636
700
  #: src/ui/dash/settings/GeneralContent.tsx
637
701
  msgid "It's OK for search engines to index my site"
638
- msgstr "允許搜尋引擎索引我的網站是可以的"
702
+ msgstr "允許搜尋引擎索引我的網站"
639
703
 
640
704
  #. @context: Nav item label field
641
705
  #: src/ui/dash/appearance/NavigationContent.tsx
@@ -645,18 +709,24 @@ msgstr "標籤"
645
709
  #. @context: Error toast when nav link fields are empty
646
710
  #: src/ui/dash/appearance/NavigationContent.tsx
647
711
  msgid "Label and URL are required"
648
- msgstr "標籤和網址是必填的"
712
+ msgstr "標籤和 URL 為必填"
649
713
 
650
714
  #. @context: Error toast when nav label is empty
651
715
  #: src/ui/dash/appearance/NavigationContent.tsx
652
716
  msgid "Label is required"
653
- msgstr "標籤是必需的"
717
+ msgstr "標籤為必填"
654
718
 
655
719
  #. @context: Settings form field
656
720
  #: src/ui/dash/settings/GeneralContent.tsx
657
721
  msgid "Language"
658
722
  msgstr "語言"
659
723
 
724
+ #. @context: Token last used date
725
+ #. placeholder {0}: formatDate(token.lastUsedAt)
726
+ #: src/ui/dash/settings/ApiTokensContent.tsx
727
+ msgid "Last used {0}"
728
+ msgstr "上次使用於 {0}"
729
+
660
730
  #. @context: Browse filter for latest posts
661
731
  #. @context: Browse filter label
662
732
  #. @context: Browse filter label
@@ -668,18 +738,21 @@ msgstr "語言"
668
738
  msgid "Latest"
669
739
  msgstr "最新"
670
740
 
741
+ #. @context: Suffix after Custom CSS link on color theme page
742
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
743
+ msgid "lets you override any theme variable."
744
+ msgstr ""
745
+
671
746
  #. @context: Nav item type badge
672
747
  #: src/ui/dash/appearance/NavigationContent.tsx
673
748
  msgid "link"
674
- msgstr "鏈接"
749
+ msgstr "連結"
675
750
 
676
751
  #. @context: Compose format tab
677
752
  #. @context: Post format badge - link
678
753
  #. @context: Post format label - link
679
- #. @context: Post format option
680
754
  #: src/ui/compose/ComposeDialog.tsx
681
755
  #: src/ui/dash/FormatBadge.tsx
682
- #: src/ui/dash/posts/PostForm.tsx
683
756
  #: src/ui/pages/ArchivePage.tsx
684
757
  msgid "Link"
685
758
  msgstr "連結"
@@ -689,64 +762,52 @@ msgstr "連結"
689
762
  msgid "Links"
690
763
  msgstr "連結"
691
764
 
765
+ #. @context: Label for max visible nav links number input
766
+ #: src/ui/dash/appearance/NavigationContent.tsx
767
+ msgid "Links shown in header"
768
+ msgstr "頁首顯示的連結數量"
769
+
770
+ #. @context: Label for list posts curl example
771
+ #: src/ui/dash/settings/ApiTokensContent.tsx
772
+ msgid "List posts:"
773
+ msgstr "列出貼文:"
774
+
692
775
  #. @context: Pagination button - load more items
693
776
  #: src/ui/shared/Pagination.tsx
694
777
  msgid "Load more"
695
778
  msgstr "載入更多"
696
779
 
697
- #. @context: Loading state for media picker
698
- #: src/ui/dash/posts/PostForm.tsx
699
- msgid "Loading..."
700
- msgstr "載入中..."
701
-
702
- #. @context: Page slug validation message
703
- #: src/ui/dash/PageForm.tsx
704
- msgid "Lowercase letters, numbers, and hyphens only"
705
- msgstr "僅限小寫字母、數字和連字符"
706
-
707
780
  #. @context: Collection sort order option
708
- #: src/ui/dash/collections/CollectionForm.tsx
781
+ #. @context: Collection sort order option
782
+ #: src/ui/compose/ComposeDialog.tsx
783
+ #: src/ui/shared/CollectionsSidebar.tsx
709
784
  msgid "Lowest rated"
710
- msgstr "最低評價"
785
+ msgstr "評分最低"
711
786
 
712
- #. @context: Media detail section - Markdown snippet
713
- #: src/ui/dash/media/ViewMediaContent.tsx
714
- msgid "Markdown"
715
- msgstr "Markdown"
787
+ #. @context: Settings item description for sessions
788
+ #: src/ui/dash/settings/AccountMenuContent.tsx
789
+ msgid "Manage active sign-in sessions"
790
+ msgstr ""
716
791
 
717
792
  #. @context: Placeholder hint for markdown-enabled textareas
718
793
  #: src/ui/dash/settings/GeneralContent.tsx
719
794
  msgid "Markdown supported"
720
- msgstr "支援Markdown"
721
-
722
- #. @context: Label for max visible nav links number input
723
- #: src/ui/dash/appearance/NavigationContent.tsx
724
- msgid "Max visible links"
725
- msgstr ""
795
+ msgstr "支援 Markdown"
726
796
 
727
797
  #. @context: Toast after saving max visible nav links setting
728
798
  #: src/ui/dash/appearance/NavigationContent.tsx
729
799
  msgid "Max visible links saved"
730
- msgstr ""
731
-
732
- #. @context: Settings form field for max visible nav links in header before overflow menu
733
- #: src/ui/dash/settings/GeneralContent.tsx
734
- #~ msgid "Max Visible Nav Links"
735
- #~ msgstr "最大可見導航連結"
800
+ msgstr "已儲存最大可見導覽連結數"
736
801
 
737
802
  #. @context: Compose toolbar - media tooltip
738
- #. @context: Media main heading
739
- #. @context: Post form field - media attachments
740
803
  #: src/ui/compose/ComposeDialog.tsx
741
- #: src/ui/dash/media/MediaListContent.tsx
742
- #: src/ui/dash/posts/PostForm.tsx
743
804
  msgid "Media"
744
805
  msgstr "媒體"
745
806
 
746
- #. @context: Dashboard header menu button
747
- #: src/ui/layouts/DashLayout.tsx
748
- msgid "Menu"
749
- msgstr "菜單"
807
+ #. @context: Aria-label for more button
808
+ #: src/ui/shared/CollectionsSidebar.tsx
809
+ msgid "More actions"
810
+ msgstr "更多操作"
750
811
 
751
812
  #. @context: Button to show overflow nav links
752
813
  #: src/ui/layouts/SiteLayout.tsx
@@ -754,55 +815,47 @@ msgid "More links"
754
815
  msgstr "更多連結"
755
816
 
756
817
  #. @context: Collection title placeholder
757
- #: src/ui/dash/collections/CollectionForm.tsx
818
+ #. @context: Collection title placeholder
819
+ #: src/ui/compose/ComposeDialog.tsx
820
+ #: src/ui/shared/CollectionsSidebar.tsx
758
821
  msgid "My Collection"
759
822
  msgstr "我的收藏"
760
823
 
761
- #. @context: Account settings form field
762
- #: src/ui/dash/settings/AccountContent.tsx
763
- msgid "Name"
764
- msgstr "名稱"
765
-
766
- #. @context: Error toast when display name is empty
767
- #: src/routes/dash/settings.tsx
768
- msgid "Name is required."
769
- msgstr "名稱是必填的。"
824
+ #. @context: Settings item description for general
825
+ #: src/ui/dash/settings/SettingsRootContent.tsx
826
+ msgid "Name, description, language"
827
+ msgstr "名稱、描述、語言"
770
828
 
771
- #. @context: Appearance sub-navigation tab
772
- #: src/ui/dash/appearance/AppearanceNav.tsx
829
+ #. @context: Settings item — navigation settings
830
+ #: src/ui/dash/settings/SettingsRootContent.tsx
773
831
  msgid "Navigation"
774
- msgstr "導航"
832
+ msgstr "導覽"
775
833
 
776
834
  #. @context: Section heading for nav items
777
835
  #: src/ui/dash/appearance/NavigationContent.tsx
778
836
  msgid "Navigation items"
779
- msgstr "導航項目"
837
+ msgstr "導覽項目"
780
838
 
781
- #. @context: Help text with link
782
- #: src/routes/dash/index.tsx
783
- msgid "Need help? Visit the <0>documentation</0>"
784
- msgstr "需要幫助嗎?請訪問<0>文檔</0>。"
839
+ #. @context: Label for nav preview section
840
+ #. @context: Label for nav preview section
841
+ #: src/ui/dash/appearance/NavigationContent.tsx
842
+ #: src/ui/dash/appearance/NavigationContent.tsx
843
+ msgid "Navigation Preview"
844
+ msgstr "導覽預覽"
785
845
 
786
- #. @context: Button to create new collection
787
- #. @context: Button to create new collection
788
- #. @context: Page heading
789
- #: src/ui/dash/collections/CollectionForm.tsx
790
- #: src/ui/dash/collections/CollectionsListContent.tsx
791
- #: src/ui/dash/collections/CollectionsListContent.tsx
846
+ #. @context: Tooltip/aria for add collection button
847
+ #: src/ui/shared/CollectionsSidebar.tsx
792
848
  msgid "New Collection"
793
- msgstr "新收藏集"
794
-
795
- #. @context: Button to add divider between collections
796
- #: src/ui/dash/collections/CollectionsListContent.tsx
797
- msgid "New Divider"
798
- msgstr "新分隔線"
849
+ msgstr "建立新集合"
799
850
 
800
- #. @context: Button to create new page
801
- #. @context: New page main heading
802
- #: src/routes/dash/pages.tsx
803
- #: src/ui/dash/pages/PagesContent.tsx
804
- msgid "New Page"
805
- msgstr "新頁面"
851
+ #. @context: Button to create new custom URL
852
+ #. @context: Button to create new custom URL
853
+ #. @context: Page heading
854
+ #: src/routes/dash/custom-urls.tsx
855
+ #: src/routes/dash/custom-urls.tsx
856
+ #: src/routes/dash/custom-urls.tsx
857
+ msgid "New Custom URL"
858
+ msgstr "新增自訂網址"
806
859
 
807
860
  #. @context: Password form field
808
861
  #. @context: Password reset form field
@@ -811,28 +864,19 @@ msgstr "新頁面"
811
864
  msgid "New Password"
812
865
  msgstr "新密碼"
813
866
 
814
- #. @context: Button to create new post
815
- #. @context: Button to create new post
816
- #. @context: Page heading
817
- #: src/routes/dash/index.tsx
818
- #: src/routes/dash/posts.tsx
819
- #: src/routes/dash/posts.tsx
820
- msgid "New Post"
821
- msgstr "新帖子"
822
-
823
- #. @context: Button to create new redirect
824
- #. @context: Button to create new redirect
825
- #. @context: Page heading
826
- #: src/routes/dash/redirects.tsx
827
- #: src/routes/dash/redirects.tsx
828
- #: src/routes/dash/redirects.tsx
829
- msgid "New Redirect"
830
- msgstr "新重定向"
867
+ #. @context: Browser page title for the new post page
868
+ #. @context: Page title for the new post page
869
+ #: src/routes/pages/new.tsx
870
+ #: src/ui/pages/ComposePage.tsx
871
+ msgid "New post"
872
+ msgstr ""
831
873
 
832
874
  #. @context: Collection sort order option
833
- #: src/ui/dash/collections/CollectionForm.tsx
875
+ #. @context: Collection sort order option
876
+ #: src/ui/compose/ComposeDialog.tsx
877
+ #: src/ui/shared/CollectionsSidebar.tsx
834
878
  msgid "Newest first"
835
- msgstr "最新的在前"
879
+ msgstr "由新到舊"
836
880
 
837
881
  #. @context: Pagination button - next page
838
882
  #. @context: Pagination button - next page
@@ -841,161 +885,119 @@ msgstr "最新的在前"
841
885
  msgid "Next"
842
886
  msgstr "下一頁"
843
887
 
844
- #. @context: Compose collection combobox empty state
845
- #: src/ui/compose/ComposeDialog.tsx
846
- msgid "No collections found."
847
- msgstr "找不到任何收藏。"
888
+ #. @context: Empty state when no sessions exist (shouldn't normally appear)
889
+ #: src/ui/dash/settings/SessionsContent.tsx
890
+ msgid "No active sessions found."
891
+ msgstr ""
848
892
 
849
- #. @context: Empty state message
850
893
  #. @context: Empty state message on collections page
851
- #: src/ui/dash/collections/CollectionsListContent.tsx
852
894
  #: src/ui/pages/CollectionsPage.tsx
853
- msgid "No collections yet."
854
- msgstr "尚未有任何收藏。"
895
+ msgid "No collections yet. Start one to organize posts by topic."
896
+ msgstr "尚未建立任何收藏集。建立一個以主題整理貼文。"
897
+
898
+ #. @context: Empty state message
899
+ #: src/routes/dash/custom-urls.tsx
900
+ msgid "No custom URLs yet. Create one to add redirects or custom paths for posts."
901
+ msgstr "尚未有自訂網址。建立一個來新增轉址或為文章設定自訂路徑。"
902
+
903
+ #. @context: Drafts panel empty state
904
+ #: src/ui/compose/ComposeDialog.tsx
905
+ msgid "No drafts yet. Save a draft to find it here."
906
+ msgstr "尚無草稿. 儲存草稿後將會顯示在此."
855
907
 
856
908
  #. @context: Empty state message on featured page
857
909
  #: src/ui/pages/FeaturedPage.tsx
858
- msgid "No featured posts yet."
859
- msgstr "尚未有精選文章。"
910
+ msgid "No featured posts. Mark a post as featured to highlight it here."
911
+ msgstr "目前沒有精選貼文。將貼文標記為精選即可在此處突顯"
860
912
 
913
+ #. @context: Error toast when no file was selected for upload
861
914
  #. @context: Error when no file was selected for upload
862
915
  #: src/routes/api/upload.ts
863
- msgid "No file provided"
864
- msgstr "未提供檔案"
865
-
866
- #. @context: Error toast when no file was selected for upload
867
916
  #: src/routes/dash/settings.tsx
868
- msgid "No file provided."
869
- msgstr "未提供檔案。"
917
+ msgid "No file selected. Choose a file to upload."
918
+ msgstr "未選取任何檔案。請選擇要上傳的檔案。"
870
919
 
871
- #. @context: Post form media empty state
872
- #: src/ui/dash/posts/PostForm.tsx
873
- msgid "No media selected yet."
874
- msgstr "尚未選擇任何媒體。"
875
-
876
- #. @context: Empty state message when no media exists
877
- #: src/ui/dash/media/MediaListContent.tsx
878
- msgid "No media uploaded yet."
879
- msgstr "尚未上傳任何媒體。"
920
+ #. @context: Compose collection combobox empty state when search has no results
921
+ #: src/ui/compose/ComposeDialog.tsx
922
+ msgid "No matching collections."
923
+ msgstr "找不到符合的集合。"
880
924
 
881
925
  #. @context: Empty state for navigation items
882
926
  #: src/ui/dash/appearance/NavigationContent.tsx
883
- msgid "No navigation items yet. Add pages, links, or enable system items below."
884
- msgstr "尚未有導航項目。請在下方添加頁面、鏈接或啟用系統項目。"
927
+ msgid "No navigation items yet. Add links or enable system items below."
928
+ msgstr "目前尚無導覽項目。新增連結或在下方啟用系統項目。"
885
929
 
886
- #. @context: Empty state when page search has no results
887
- #: src/ui/dash/appearance/NavigationContent.tsx
888
- msgid "No pages found."
889
- msgstr ""
890
-
891
- #. @context: Empty state for pages list
892
- #: src/ui/dash/pages/PagesContent.tsx
893
- msgid "No pages yet. Create your first page to get started."
894
- msgstr "尚未有頁面。創建您的第一個頁面以開始使用。"
895
-
896
- #. @context: Archive empty state
930
+ #. @context: Archive empty state with filters
897
931
  #: src/ui/pages/ArchivePage.tsx
898
- msgid "No posts found."
899
- msgstr "未找到任何帖子。"
900
-
901
- #. @context: Empty state message
902
- #. @context: Empty state message
903
- #: src/ui/dash/collections/ViewCollectionContent.tsx
904
- #: src/ui/pages/CollectionPage.tsx
905
- msgid "No posts in this collection."
906
- msgstr "此集合中沒有帖子。"
907
-
908
- #. @context: Empty state message on home page
909
- #. @context: Empty state message when no posts exist
910
- #: src/ui/dash/PostList.tsx
911
- #: src/ui/pages/HomePage.tsx
912
- msgid "No posts yet."
913
- msgstr "尚未有帖子。"
914
-
915
- #. @context: Empty state message
916
- #: src/routes/dash/redirects.tsx
917
- msgid "No redirects configured."
918
- msgstr "未配置任何重定向。"
932
+ msgid "No posts match these filters. Try adjusting your selection or clear all filters."
933
+ msgstr "沒有貼文符合這些篩選條件。請調整您的選擇或清除所有篩選條件。"
919
934
 
920
935
  #. @context: Search empty results
921
936
  #: src/ui/pages/SearchPage.tsx
922
- msgid "No results found."
923
- msgstr "未找到結果。"
937
+ msgid "No results. Try different keywords."
938
+ msgstr "沒有結果。請嘗試不同的關鍵字。"
924
939
 
925
940
  #. @context: Compose format tab
926
941
  #. @context: Post format badge - note
927
942
  #. @context: Post format label - note
928
- #. @context: Post format option
929
943
  #: src/ui/compose/ComposeDialog.tsx
930
944
  #: src/ui/dash/FormatBadge.tsx
931
- #: src/ui/dash/posts/PostForm.tsx
932
945
  #: src/ui/pages/ArchivePage.tsx
933
946
  msgid "Note"
934
- msgstr "備註"
947
+ msgstr "筆記"
935
948
 
936
949
  #. @context: Post format label plural - notes
937
950
  #: src/ui/pages/ArchivePage.tsx
938
951
  msgid "Notes"
939
952
  msgstr "筆記"
940
953
 
954
+ #. @context: Empty state message on home page
955
+ #: src/ui/pages/HomePage.tsx
956
+ msgid "Nothing here yet."
957
+ msgstr "這裡還沒有任何內容."
958
+
941
959
  #. @context: Collection sort order option
942
- #: src/ui/dash/collections/CollectionForm.tsx
960
+ #. @context: Collection sort order option
961
+ #: src/ui/compose/ComposeDialog.tsx
962
+ #: src/ui/shared/CollectionsSidebar.tsx
943
963
  msgid "Oldest first"
944
- msgstr "最舊的在前"
964
+ msgstr "由舊到新"
945
965
 
946
- #. @context: Toast after saving navigation item order
966
+ #. @context: Switch label for setting featured posts as default homepage
947
967
  #: src/ui/dash/appearance/NavigationContent.tsx
948
- msgid "Order saved"
949
- msgstr "已保存順序"
968
+ msgid "Open with Featured posts"
969
+ msgstr "以精選貼文開啟"
950
970
 
951
- #. @context: Nav item type badge
971
+ #. @context: Toast after reordering collections
972
+ #. @context: Toast after saving navigation item order
952
973
  #: src/ui/dash/appearance/NavigationContent.tsx
953
- msgid "page"
954
- msgstr "頁面"
955
-
956
- #. @context: Default page heading when untitled
957
- #: src/routes/dash/pages.tsx
958
- msgid "Page"
959
- msgstr "頁面"
974
+ #: src/ui/shared/CollectionsSidebar.tsx
975
+ msgid "Order saved"
976
+ msgstr "排序已儲存"
960
977
 
961
978
  #. @context: Pagination - current page indicator
962
979
  #: src/ui/shared/Pagination.tsx
963
980
  msgid "Page {page}"
964
- msgstr "頁面 {page}"
965
-
966
- #. @context: Page content placeholder
967
- #: src/ui/dash/PageForm.tsx
968
- msgid "Page content (Markdown supported)..."
969
- msgstr "頁面內容(支持Markdown)..."
970
-
971
- #. @context: Page title placeholder
972
- #: src/ui/dash/PageForm.tsx
973
- msgid "Page title..."
974
- msgstr "頁面標題..."
975
-
976
- #. @context: Dashboard navigation - pages management
977
- #. @context: Pages main heading
978
- #: src/ui/dash/pages/PagesContent.tsx
979
- #: src/ui/layouts/DashLayout.tsx
980
- msgid "Pages"
981
- msgstr "頁面"
981
+ msgstr " {page}"
982
982
 
983
+ #. @context: Settings item — password settings
983
984
  #. @context: Setup/signin form field - password
984
985
  #. @context: Setup/signin form field - password
985
986
  #: src/routes/auth/setup.tsx
986
987
  #: src/routes/auth/signin.tsx
988
+ #: src/ui/dash/settings/AccountMenuContent.tsx
987
989
  msgid "Password"
988
990
  msgstr "密碼"
989
991
 
990
992
  #. @context: Toast after changing account password
991
993
  #: src/routes/dash/settings.tsx
992
- msgid "Password changed successfully."
993
- msgstr "密碼已成功更改。"
994
+ msgid "Password changed."
995
+ msgstr "密碼已變更."
994
996
 
995
997
  #. @context: Error toast when new password and confirmation differ
996
998
  #: src/routes/dash/settings.tsx
997
- msgid "Passwords do not match."
998
- msgstr "密碼不匹配。"
999
+ msgid "Passwords don't match. Make sure both fields are identical."
1000
+ msgstr "密碼不相符. 請確保兩個欄位相同."
999
1001
 
1000
1002
  #. @context: Attached text placeholder
1001
1003
  #: src/ui/compose/ComposeDialog.tsx
@@ -1004,69 +1006,51 @@ msgid ""
1004
1006
  "\n"
1005
1007
  "Markdown formatting will be preserved."
1006
1008
  msgstr ""
1007
- "粘貼一篇長文章、AI 回應或任何文本...\n"
1009
+ "貼上長文章、AI 回覆或任何文字...\n"
1008
1010
  "\n"
1009
- "Markdown 格式將被保留。"
1011
+ "Markdown 格式會被保留."
1010
1012
 
1011
1013
  #. @context: Compose link URL placeholder
1012
1014
  #: src/ui/compose/ComposeDialog.tsx
1013
1015
  msgid "Paste a URL..."
1014
- msgstr "粘貼一個網址..."
1016
+ msgstr "貼上網址..."
1017
+
1018
+ #. @context: Custom URL form field
1019
+ #: src/routes/dash/custom-urls.tsx
1020
+ msgid "Path"
1021
+ msgstr "路徑"
1015
1022
 
1016
- #. @context: Link to individual post in thread
1017
1023
  #. @context: Link to permanent URL of post
1018
- #: src/ui/pages/PostPage.tsx
1019
- #: src/ui/shared/ThreadView.tsx
1024
+ #: src/ui/shared/PostFooter.tsx
1020
1025
  msgid "Permalink"
1021
- msgstr "永久鏈接"
1026
+ msgstr "永久連結"
1022
1027
 
1023
1028
  #. @context: Post badge - pinned
1024
- #. @context: Post form checkbox - pin to top
1025
- #: src/ui/dash/posts/PostForm.tsx
1026
1029
  #: src/ui/dash/StatusBadge.tsx
1027
1030
  msgid "Pinned"
1028
- msgstr "置頂"
1031
+ msgstr "已釘選"
1029
1032
 
1030
1033
  #. @context: Compose button - publish post
1031
- #. @context: Default post title
1032
- #: src/routes/dash/posts.tsx
1034
+ #. @context: Custom URL type option
1035
+ #: src/routes/dash/custom-urls.tsx
1033
1036
  #: src/ui/compose/ComposeDialog.tsx
1034
1037
  msgid "Post"
1035
- msgstr "文章"
1036
-
1037
- #. @context: Toast after creating post
1038
- #: src/ui/dash/posts/PostForm.tsx
1039
- msgid "Post published successfully."
1040
- msgstr "發佈文章成功。"
1041
-
1042
- #. @context: Post title placeholder
1043
- #: src/ui/dash/posts/PostForm.tsx
1044
- msgid "Post title..."
1045
- msgstr "文章標題..."
1046
-
1047
- #. @context: Toast after editing post
1048
- #: src/ui/dash/posts/PostForm.tsx
1049
- msgid "Post updated successfully."
1050
- msgstr "帖子已成功更新。"
1038
+ msgstr "發佈"
1051
1039
 
1052
- #. @context: Dashboard heading
1053
- #: src/routes/dash/posts.tsx
1054
- msgid "Posts"
1055
- msgstr "文章"
1040
+ #. @context: Compose dropdown option - publish post and mark it as featured
1041
+ #: src/ui/compose/ComposeDialog.tsx
1042
+ msgid "Post as Featured"
1043
+ msgstr ""
1056
1044
 
1057
- #. @context: Collection posts section heading
1058
- #: src/ui/dash/collections/ViewCollectionContent.tsx
1059
- msgid "Posts in Collection ({count})"
1060
- msgstr "收藏中的帖子 ({count})"
1045
+ #. @context: Compose dropdown option - publish post visible only when logged in
1046
+ #: src/ui/compose/ComposeDialog.tsx
1047
+ msgid "Post as Private"
1048
+ msgstr ""
1061
1049
 
1062
- #. @context: Label for nav preview section
1063
- #. @context: Label for nav preview section
1064
- #. @context: Media detail section - preview
1065
- #: src/ui/dash/appearance/NavigationContent.tsx
1066
- #: src/ui/dash/appearance/NavigationContent.tsx
1067
- #: src/ui/dash/media/ViewMediaContent.tsx
1068
- msgid "Preview"
1069
- msgstr "預覽"
1050
+ #. @context: Compose dropdown option - publish post with unlisted visibility, hidden from main feed
1051
+ #: src/ui/compose/ComposeDialog.tsx
1052
+ msgid "Post Unlisted"
1053
+ msgstr ""
1070
1054
 
1071
1055
  #. @context: Pagination button - previous page
1072
1056
  #. @context: Pagination button - previous page
@@ -1075,98 +1059,96 @@ msgstr "預覽"
1075
1059
  msgid "Previous"
1076
1060
  msgstr "上一頁"
1077
1061
 
1062
+ #. @context: Archive visibility filter - private posts
1063
+ #: src/ui/pages/ArchivePage.tsx
1064
+ msgid "Private"
1065
+ msgstr ""
1066
+
1078
1067
  #. @context: Avatar upload button text while generating favicon variants
1079
- #. @context: Upload status - processing
1080
- #: src/ui/dash/media/MediaListContent.tsx
1081
- #: src/ui/dash/settings/GeneralContent.tsx
1068
+ #: src/ui/dash/settings/AvatarContent.tsx
1082
1069
  msgid "Processing..."
1083
1070
  msgstr "處理中..."
1084
1071
 
1085
- #. @context: Account settings section heading
1086
- #: src/ui/dash/settings/AccountContent.tsx
1087
- msgid "Profile"
1088
- msgstr "個人資料"
1089
-
1090
- #. @context: Toast after saving user profile
1091
- #: src/routes/dash/settings.tsx
1092
- msgid "Profile saved successfully."
1093
- msgstr "個人資料已成功儲存。"
1072
+ #. @context: Archive visibility filter - public posts
1073
+ #: src/ui/pages/ArchivePage.tsx
1074
+ msgid "Public"
1075
+ msgstr ""
1094
1076
 
1095
- #. @context: Button to publish new post
1096
- #: src/ui/dash/posts/PostForm.tsx
1077
+ #. @context: Confirm close action sheet - publish update button for editing published post
1078
+ #: src/ui/compose/ComposeDialog.tsx
1097
1079
  msgid "Publish"
1098
- msgstr "發佈"
1080
+ msgstr ""
1099
1081
 
1100
- #. @context: Page status option - published
1101
1082
  #. @context: Post status badge - published
1102
- #. @context: Post status label
1103
- #. @context: Post status option
1104
- #: src/routes/dash/index.tsx
1105
- #: src/ui/dash/PageForm.tsx
1106
- #: src/ui/dash/posts/PostForm.tsx
1107
1083
  #: src/ui/dash/StatusBadge.tsx
1108
1084
  msgid "Published"
1109
1085
  msgstr "已發佈"
1110
1086
 
1111
- #. @context: Page status helper text
1112
- #: src/ui/dash/PageForm.tsx
1113
- msgid "Published pages are accessible via their slug. Drafts are not visible."
1114
- msgstr "已發佈的頁面可以通過其標識符訪問。草稿不可見。"
1115
-
1116
1087
  #. @context: Toast shown after successful deferred publish
1117
1088
  #: src/ui/compose/ComposeDialog.tsx
1118
1089
  msgid "Published!"
1119
1090
  msgstr "已發佈!"
1120
1091
 
1121
- #. @context: Dashboard section title
1122
- #: src/routes/dash/index.tsx
1123
- msgid "Quick Actions"
1124
- msgstr "快速操作"
1125
-
1126
1092
  #. @context: Compose format tab
1127
1093
  #. @context: Post format badge - quote
1128
1094
  #. @context: Post format label - quote
1129
- #. @context: Post format option
1130
1095
  #: src/ui/compose/ComposeDialog.tsx
1131
1096
  #: src/ui/dash/FormatBadge.tsx
1132
- #: src/ui/dash/posts/PostForm.tsx
1133
1097
  #: src/ui/pages/ArchivePage.tsx
1134
1098
  msgid "Quote"
1135
1099
  msgstr "引用"
1136
1100
 
1137
- #. @context: Post form field - quoted text
1138
- #: src/ui/dash/posts/PostForm.tsx
1139
- msgid "Quote Text"
1140
- msgstr "引用文本"
1141
-
1142
1101
  #. @context: Post format label plural - quotes
1143
1102
  #: src/ui/pages/ArchivePage.tsx
1144
1103
  msgid "Quotes"
1145
1104
  msgstr "引用"
1146
1105
 
1147
- #. @context: Settings section heading
1148
- #. @context: Settings sub-navigation tab
1149
- #: src/routes/dash/redirects.tsx
1150
- #: src/ui/dash/settings/SettingsNav.tsx
1151
- msgid "Redirects"
1152
- msgstr "重定向"
1106
+ #. @context: Compose toolbar - rate tooltip
1107
+ #: src/ui/compose/ComposeDialog.tsx
1108
+ msgid "Rate"
1109
+ msgstr "評分"
1110
+
1111
+ #. @context: Custom URL type option
1112
+ #: src/routes/dash/custom-urls.tsx
1113
+ msgid "Redirect"
1114
+ msgstr "重新導向"
1115
+
1116
+ #. @context: Redirect type field
1117
+ #: src/routes/dash/custom-urls.tsx
1118
+ msgid "Redirect Type"
1119
+ msgstr "重新導向類型"
1120
+
1121
+ #. @context: Settings item description for custom URLs
1122
+ #: src/ui/dash/settings/SettingsRootContent.tsx
1123
+ msgid "Redirects and custom paths"
1124
+ msgstr "重新導向與自訂路徑"
1153
1125
 
1126
+ #. @context: Button to remove icon
1154
1127
  #. @context: Button to remove icon
1155
1128
  #. @context: Button to remove the blog avatar
1156
- #. @context: Remove media attachment button
1157
- #. @context: Remove page from navigation
1129
+ #. @context: Remove system item from navigation
1130
+ #: src/ui/compose/ComposeDialog.tsx
1158
1131
  #: src/ui/dash/appearance/NavigationContent.tsx
1159
- #: src/ui/dash/collections/CollectionForm.tsx
1160
- #: src/ui/dash/posts/PostForm.tsx
1161
- #: src/ui/dash/settings/GeneralContent.tsx
1132
+ #: src/ui/dash/settings/AvatarContent.tsx
1133
+ #: src/ui/shared/CollectionsSidebar.tsx
1162
1134
  msgid "Remove"
1163
1135
  msgstr "移除"
1164
1136
 
1165
- #. @context: Button to delete a divider
1166
- #: src/ui/dash/collections/CollectionsListContent.tsx
1167
- msgid "Remove divider"
1137
+ #. @context: Tooltip for divider delete button
1138
+ #: src/ui/shared/CollectionsSidebar.tsx
1139
+ msgid "Remove Divider"
1168
1140
  msgstr "移除分隔線"
1169
1141
 
1142
+ #. @context: Menu action to reorder collections
1143
+ #: src/ui/shared/CollectionsSidebar.tsx
1144
+ msgid "Reorder"
1145
+ msgstr "重新排序"
1146
+
1147
+ #. @context: Compose button - reply to post
1148
+ #: src/ui/compose/ComposeDialog.tsx
1149
+ msgid "Reply"
1150
+ msgstr "回覆"
1151
+
1170
1152
  #. @context: Password reset form submit button
1171
1153
  #. @context: Password reset page heading
1172
1154
  #: src/routes/auth/reset.tsx
@@ -1174,12 +1156,32 @@ msgstr "移除分隔線"
1174
1156
  msgid "Reset Password"
1175
1157
  msgstr "重設密碼"
1176
1158
 
1159
+ #. @context: Button to revoke API token
1160
+ #. @context: Button to revoke a session
1161
+ #: src/ui/dash/settings/ApiTokensContent.tsx
1162
+ #: src/ui/dash/settings/SessionsContent.tsx
1163
+ msgid "Revoke"
1164
+ msgstr "撤銷"
1165
+
1166
+ #. @context: Confirm dialog for revoking API token
1167
+ #: src/ui/dash/settings/ApiTokensContent.tsx
1168
+ msgid "Revoke this token? Any scripts using it will stop working."
1169
+ msgstr "撤銷此權杖?任何使用它的腳本將會停止運作。"
1170
+
1171
+ #. @context: Button to save collection
1172
+ #. @context: Button to save collection
1177
1173
  #. @context: Button to save settings
1174
+ #. @context: Button to save settings changes
1175
+ #. @context: Confirm close action sheet - save draft button
1178
1176
  #. @context: Save nav item changes
1177
+ #: src/ui/compose/ComposeDialog.tsx
1178
+ #: src/ui/compose/ComposeDialog.tsx
1179
1179
  #: src/ui/dash/appearance/NavigationContent.tsx
1180
+ #: src/ui/dash/settings/AvatarContent.tsx
1180
1181
  #: src/ui/dash/settings/GeneralContent.tsx
1182
+ #: src/ui/shared/CollectionsSidebar.tsx
1181
1183
  msgid "Save"
1182
- msgstr "保存"
1184
+ msgstr "儲存"
1183
1185
 
1184
1186
  #. @context: More menu - save draft
1185
1187
  #: src/ui/compose/ComposeDialog.tsx
@@ -1196,15 +1198,20 @@ msgstr "儲存為草稿"
1196
1198
  msgid "Save CSS"
1197
1199
  msgstr "儲存 CSS"
1198
1200
 
1199
- #. @context: Button to save profile
1200
- #: src/ui/dash/settings/AccountContent.tsx
1201
- msgid "Save Profile"
1202
- msgstr "保存個人資料"
1201
+ #. @context: Confirm close action sheet subtitle
1202
+ #: src/ui/compose/ComposeDialog.tsx
1203
+ msgid "Save to drafts to edit and post at a later time."
1204
+ msgstr "儲存到草稿,稍後可編輯並發佈。"
1203
1205
 
1204
- #. @context: Compose toolbar - score tooltip
1206
+ #. @context: Confirm close action sheet title
1205
1207
  #: src/ui/compose/ComposeDialog.tsx
1206
- msgid "Score"
1207
- msgstr "分數"
1208
+ msgid "Save to drafts?"
1209
+ msgstr "要儲存為草稿嗎?"
1210
+
1211
+ #. @context: Toast after saving a collection
1212
+ #: src/ui/shared/CollectionsSidebar.tsx
1213
+ msgid "Saved"
1214
+ msgstr "已儲存"
1208
1215
 
1209
1216
  #. @context: Search icon link in browse nav
1210
1217
  #. @context: Search page title
@@ -1215,31 +1222,30 @@ msgstr "分數"
1215
1222
  msgid "Search"
1216
1223
  msgstr "搜尋"
1217
1224
 
1225
+ #. @context: Emoji picker search placeholder
1226
+ #. @context: Emoji picker search placeholder
1227
+ #: src/ui/compose/ComposeDialog.tsx
1228
+ #: src/ui/shared/CollectionsSidebar.tsx
1229
+ msgid "Search emojis..."
1230
+ msgstr "搜尋表情符號..."
1231
+
1218
1232
  #. @context: Icon picker search placeholder
1219
- #: src/ui/dash/collections/CollectionForm.tsx
1233
+ #. @context: Icon picker search placeholder
1234
+ #: src/ui/compose/ComposeDialog.tsx
1235
+ #: src/ui/shared/CollectionsSidebar.tsx
1220
1236
  msgid "Search icons..."
1221
1237
  msgstr "搜尋圖示..."
1222
1238
 
1223
- #. @context: Placeholder for page search input in combobox
1224
- #: src/ui/dash/appearance/NavigationContent.tsx
1225
- msgid "Search pages…"
1226
- msgstr ""
1227
-
1228
1239
  #. @context: Search input placeholder
1229
1240
  #: src/ui/pages/SearchPage.tsx
1230
1241
  msgid "Search posts..."
1231
- msgstr "搜尋帖子..."
1242
+ msgstr "搜尋文章..."
1232
1243
 
1233
1244
  #. @context: Compose collection combobox search placeholder
1234
1245
  #: src/ui/compose/ComposeDialog.tsx
1235
1246
  msgid "Search..."
1236
1247
  msgstr "搜尋..."
1237
1248
 
1238
- #. @context: Media picker dialog title
1239
- #: src/ui/dash/posts/PostForm.tsx
1240
- msgid "Select Media"
1241
- msgstr "選擇媒體"
1242
-
1243
1249
  #. @context: Settings section heading for SEO
1244
1250
  #: src/ui/dash/settings/GeneralContent.tsx
1245
1251
  msgid "SEO"
@@ -1249,26 +1255,37 @@ msgstr "SEO"
1249
1255
  #. @context: Toast after saving SEO settings
1250
1256
  #: src/routes/dash/settings.tsx
1251
1257
  #: src/routes/dash/settings.tsx
1252
- msgid "SEO settings saved successfully."
1253
- msgstr "SEO 設定已成功儲存。"
1258
+ msgid "SEO settings updated."
1259
+ msgstr "已更新 SEO 設定."
1254
1260
 
1255
- #. @context: Dashboard navigation - site settings
1256
- #: src/ui/layouts/DashLayout.tsx
1257
- msgid "Settings"
1258
- msgstr "設定"
1261
+ #. @context: Settings item session management
1262
+ #: src/ui/dash/settings/AccountMenuContent.tsx
1263
+ msgid "Sessions"
1264
+ msgstr ""
1265
+
1266
+ #. @context: Settings item description for account
1267
+ #: src/ui/dash/settings/SettingsRootContent.tsx
1268
+ msgid "Sessions, password, export"
1269
+ msgstr ""
1259
1270
 
1260
- #. @context: Toast after saving general settings
1261
1271
  #. @context: Toast after saving general settings
1262
1272
  #: src/routes/dash/settings.tsx
1263
- #: src/routes/dash/settings.tsx
1264
- msgid "Settings saved successfully."
1265
- msgstr "設置已成功保存。"
1273
+ msgid "Settings updated."
1274
+ msgstr "設定已更新."
1266
1275
 
1267
- #. @context: Link to show remaining thread replies
1268
- #. placeholder {0}: remainingCount === 1 ? "reply" : "replies"
1276
+ #. @context: Button to collapse expanded thread context
1277
+ #. @context: Collapse reply context
1278
+ #: src/ui/compose/ComposeDialog.tsx
1269
1279
  #: src/ui/feed/ThreadPreview.tsx
1270
- msgid "Show {remainingCount} more {0}"
1271
- msgstr "顯示 {remainingCount} 個更多 {0}"
1280
+ msgid "Show less"
1281
+ msgstr "顯示較少"
1282
+
1283
+ #. @context: Button to expand faded thread context
1284
+ #. @context: Expand reply context
1285
+ #: src/ui/compose/ComposeDialog.tsx
1286
+ #: src/ui/feed/ThreadPreview.tsx
1287
+ msgid "Show more"
1288
+ msgstr "顯示更多"
1272
1289
 
1273
1290
  #. @context: Sign in form submit button
1274
1291
  #. @context: Sign in page heading
@@ -1277,30 +1294,61 @@ msgstr "顯示 {remainingCount} 個更多 {0}"
1277
1294
  msgid "Sign In"
1278
1295
  msgstr "登入"
1279
1296
 
1280
- #. @context: Dashboard menu item to sign out
1281
- #: src/ui/layouts/DashLayout.tsx
1297
+ #. @context: Settings link sign out action
1298
+ #: src/ui/dash/settings/SettingsRootContent.tsx
1282
1299
  msgid "Sign Out"
1283
1300
  msgstr "登出"
1284
1301
 
1302
+ #. @context: Session creation date
1303
+ #. placeholder {0}: formatDate(session.createdAt)
1304
+ #: src/ui/dash/settings/SessionsContent.tsx
1305
+ msgid "Signed in {0}"
1306
+ msgstr ""
1307
+
1308
+ #. @context: Settings group label for site settings
1309
+ #: src/ui/dash/settings/SettingsRootContent.tsx
1310
+ msgid "Site"
1311
+ msgstr "網站"
1312
+
1285
1313
  #. @context: Settings section heading for site footer
1286
1314
  #: src/ui/dash/settings/GeneralContent.tsx
1287
1315
  msgid "Site Footer"
1288
- msgstr "網站頁腳"
1316
+ msgstr "網站頁尾"
1289
1317
 
1290
1318
  #. @context: Settings form field
1319
+ #. @context: Setup form field - site name
1320
+ #: src/routes/auth/setup.tsx
1291
1321
  #: src/ui/dash/settings/GeneralContent.tsx
1292
1322
  msgid "Site Name"
1293
1323
  msgstr "網站名稱"
1294
1324
 
1295
1325
  #. @context: Collection form field
1296
- #. @context: Page form field label - URL slug
1297
- #: src/ui/dash/collections/CollectionForm.tsx
1298
- #: src/ui/dash/PageForm.tsx
1326
+ #. @context: Collection form field
1327
+ #: src/ui/compose/ComposeDialog.tsx
1328
+ #: src/ui/shared/CollectionsSidebar.tsx
1299
1329
  msgid "Slug"
1300
- msgstr "縮略名"
1330
+ msgstr "網址別名"
1331
+
1332
+ #. @context: Toast when uploads fail and post is auto-saved as draft
1333
+ #: src/ui/compose/ComposeDialog.tsx
1334
+ msgid "Some uploads failed. Saved as draft."
1335
+ msgstr "部分上傳失敗。已儲存為草稿。"
1301
1336
 
1337
+ #. @context: Fallback validation error for compose form
1338
+ #. @context: Fallback validation error for password reset form
1339
+ #. @context: Fallback validation error for setup form
1340
+ #. @context: Fallback validation error for sign-in form
1341
+ #: src/routes/auth/reset.tsx
1342
+ #: src/routes/auth/setup.tsx
1343
+ #: src/routes/auth/signin.tsx
1344
+ #: src/routes/compose.tsx
1345
+ msgid "Something doesn't look right. Check the form and try again."
1346
+ msgstr "有些地方看起來不對。請檢查表單並再試一次。"
1347
+
1348
+ #. @context: Collection form field
1302
1349
  #. @context: Collection form field
1303
- #: src/ui/dash/collections/CollectionForm.tsx
1350
+ #: src/ui/compose/ComposeDialog.tsx
1351
+ #: src/ui/shared/CollectionsSidebar.tsx
1304
1352
  msgid "Sort Order"
1305
1353
  msgstr "排序順序"
1306
1354
 
@@ -1309,27 +1357,10 @@ msgstr "排序順序"
1309
1357
  msgid "Source link (optional)"
1310
1358
  msgstr "來源連結(選填)"
1311
1359
 
1312
- #. @context: Page form field label - publish status
1313
- #. @context: Post form field
1314
- #: src/ui/dash/PageForm.tsx
1315
- #: src/ui/dash/posts/PostForm.tsx
1316
- msgid "Status"
1317
- msgstr "狀態"
1318
-
1319
- #. @context: Error when file storage is not set up
1320
- #: src/routes/api/upload.ts
1321
- msgid "Storage not configured"
1322
- msgstr "儲存未配置"
1323
-
1324
- #. @context: Error toast when file storage is not set up
1325
- #: src/routes/dash/settings.tsx
1326
- msgid "Storage not configured."
1327
- msgstr "儲存空間未配置。"
1328
-
1329
1360
  #. @context: Attached text panel hint
1330
1361
  #: src/ui/compose/ComposeDialog.tsx
1331
1362
  msgid "Supplementary content attached to your post"
1332
- msgstr "附加在您帖子上的補充內容"
1363
+ msgstr "附加於您的貼文的補充內容"
1333
1364
 
1334
1365
  #. @context: Nav item type badge
1335
1366
  #: src/ui/dash/appearance/NavigationContent.tsx
@@ -1341,241 +1372,265 @@ msgstr "系統"
1341
1372
  msgid "System links"
1342
1373
  msgstr "系統連結"
1343
1374
 
1344
- #. @context: Redirect to path help text
1345
- #: src/routes/dash/redirects.tsx
1346
- msgid "The destination path or URL"
1347
- msgstr "目的地路徑或 URL"
1375
+ #. @context: Label on failed upload overlay button, tells user tapping retries the upload
1376
+ #: src/ui/compose/ComposeDialog.tsx
1377
+ msgid "Tap to retry"
1378
+ msgstr "輕觸以重試"
1379
+
1380
+ #. @context: Custom URL target slug field
1381
+ #: src/routes/dash/custom-urls.tsx
1382
+ msgid "Target Slug"
1383
+ msgstr "目標網址別名"
1384
+
1385
+ #. @context: Archive media filter - posts without any media attachments
1386
+ #. @context: Archive media filter - posts without any media attachments
1387
+ #: src/ui/pages/ArchivePage.tsx
1388
+ #: src/ui/pages/ArchivePage.tsx
1389
+ msgid "Text"
1390
+ msgstr ""
1391
+
1392
+ #. @context: Archive media filter - text file attachments
1393
+ #. @context: Attached text panel title
1394
+ #: src/ui/compose/ComposeDialog.tsx
1395
+ #: src/ui/pages/ArchivePage.tsx
1396
+ msgid "Text attachment"
1397
+ msgstr "文字附件"
1398
+
1399
+ #. @context: Error toast when selected font theme is not valid
1400
+ #: src/routes/dash/settings.tsx
1401
+ msgid "That font theme isn't available. Pick another one."
1402
+ msgstr "該字型主題不可用。請選擇其他一個。"
1403
+
1404
+ #. @context: Error toast when selected theme is not valid
1405
+ #: src/routes/dash/settings.tsx
1406
+ msgid "That theme isn't available. Pick another one."
1407
+ msgstr "該主題不可用。請選擇其他主題。"
1348
1408
 
1349
- #. @context: Redirect from path help text
1350
- #: src/routes/dash/redirects.tsx
1351
- msgid "The path to redirect from"
1352
- msgstr "重定向來源的路徑"
1409
+ #. @context: Custom URL path help text
1410
+ #: src/routes/dash/custom-urls.tsx
1411
+ msgid "The custom URL path (without leading slash)"
1412
+ msgstr "自訂 URL 路徑 (不含前導斜線)"
1353
1413
 
1354
1414
  #. @context: Font theme preview sentence for body text
1355
1415
  #. @context: Font theme preview sentence for headings
1356
1416
  #: src/ui/dash/appearance/FontThemeContent.tsx
1357
1417
  #: src/ui/dash/appearance/FontThemeContent.tsx
1358
1418
  msgid "The quick brown fox jumps over the lazy dog."
1359
- msgstr "敏捷的棕色狐狸跳過懶惰的狗。"
1419
+ msgstr "敏捷的棕色狐狸躍過那隻懶惰的狗。"
1360
1420
 
1361
- #. @context: Quote text placeholder
1362
- #: src/ui/dash/posts/PostForm.tsx
1363
- msgid "The text being quoted..."
1364
- msgstr "被引用的文本..."
1421
+ #. @context: Description for max visible nav links, explains overflow behavior
1422
+ #: src/ui/dash/appearance/NavigationContent.tsx
1423
+ msgid "The rest will be tucked into a ··· menu"
1424
+ msgstr "其餘項目會被收納到 ··· 選單"
1365
1425
 
1366
- #. @context: Page slug helper text
1367
- #: src/ui/dash/PageForm.tsx
1368
- msgid "The URL path for this page. Use lowercase letters, numbers, and hyphens."
1369
- msgstr "此頁面的 URL 路徑。使用小寫字母、數字和連字符。"
1426
+ #. @context: Custom URL target slug help text
1427
+ #: src/routes/dash/custom-urls.tsx
1428
+ msgid "The slug of the target post or collection"
1429
+ msgstr "目標貼文或集合的 URL slug"
1370
1430
 
1371
- #. @context: Help text for avatar upload
1372
- #: src/ui/dash/settings/GeneralContent.tsx
1373
- msgid "This is used for your favicon and apple-touch-icon. For best results, upload a square image at least 180x180 pixels."
1374
- msgstr "這是用於您的網站圖標和蘋果觸控圖標。為了獲得最佳效果,請上傳至少 180x180 像素的正方形圖片。"
1431
+ #. @context: Link to theming documentation on Custom CSS page
1432
+ #: src/ui/dash/appearance/AdvancedContent.tsx
1433
+ msgid "Theming guide"
1434
+ msgstr ""
1375
1435
 
1376
- #. @context: Password reset error description
1377
- #: src/routes/auth/reset.tsx
1378
- msgid "This password reset link is invalid or has expired. Please generate a new one."
1379
- msgstr "此密碼重設連結無效或已過期。請生成一個新的連結。"
1436
+ #. @context: Description for session management
1437
+ #: src/ui/dash/settings/SessionsContent.tsx
1438
+ msgid "These devices are currently signed in to your account. Revoke any session you don't recognize."
1439
+ msgstr ""
1380
1440
 
1381
- #. @context: Appearance settings description
1382
- #: src/ui/dash/appearance/ColorThemeContent.tsx
1383
- msgid "This will theme both your site and your dashboard. All color themes support dark mode."
1384
- msgstr "這將為您的網站和儀表板設置主題。所有顏色主題都支持深色模式。"
1441
+ #. @context: Empty state message
1442
+ #: src/ui/pages/CollectionPage.tsx
1443
+ msgid "This collection is empty. Add posts from the editor."
1444
+ msgstr "此收藏為空。請從編輯器新增文章。"
1385
1445
 
1386
- #. @context: Thread view indicator - first post in thread
1387
- #: src/ui/shared/ThreadView.tsx
1388
- msgid "Thread start"
1389
- msgstr "線程開始"
1446
+ #. @context: Help text for avatar upload
1447
+ #: src/ui/dash/settings/AvatarContent.tsx
1448
+ msgid "This is used for your favicon and apple-touch-icon. For best results, upload a square image at least 180x180 pixels."
1449
+ msgstr "這會用於你的 favicon 和 apple-touch-icon。為達最佳效果,請上傳至少 180x180 像素的正方形圖片。"
1390
1450
 
1391
- #. @context: Thread view header - multiple posts
1392
- #: src/ui/shared/ThreadView.tsx
1393
- msgid "Thread with {count} posts"
1394
- msgstr "包含 {count} 則帖子的主題"
1451
+ #. @context: Password reset error heading
1452
+ #: src/routes/auth/reset.tsx
1453
+ msgid "This Link Has Expired"
1454
+ msgstr "此連結已過期"
1395
1455
 
1396
- #. @context: Thread view header - single post
1397
- #: src/ui/shared/ThreadView.tsx
1398
- msgid "Thread with 1 post"
1399
- msgstr "包含 1 則貼文的主題"
1456
+ #. @context: Password reset error description
1457
+ #: src/routes/auth/reset.tsx
1458
+ msgid "This reset link is no longer valid. Request a new one to continue."
1459
+ msgstr "此重設連結已不再有效。請申請新的連結以繼續。"
1400
1460
 
1401
1461
  #. @context: Settings form field
1402
1462
  #: src/ui/dash/settings/GeneralContent.tsx
1403
1463
  msgid "Time Zone"
1404
1464
  msgstr "時區"
1405
1465
 
1466
+ #. @context: Collection form field
1406
1467
  #. @context: Collection form field
1407
1468
  #. @context: Compose note title placeholder
1408
1469
  #. @context: Compose toolbar - title tooltip
1409
- #. @context: Page form field label - title
1410
1470
  #: src/ui/compose/ComposeDialog.tsx
1411
1471
  #: src/ui/compose/ComposeDialog.tsx
1412
- #: src/ui/dash/collections/CollectionForm.tsx
1413
- #: src/ui/dash/PageForm.tsx
1472
+ #: src/ui/compose/ComposeDialog.tsx
1473
+ #: src/ui/shared/CollectionsSidebar.tsx
1414
1474
  msgid "Title"
1415
1475
  msgstr "標題"
1416
1476
 
1417
- #. @context: Post form field
1418
- #: src/ui/dash/posts/PostForm.tsx
1419
- msgid "Title (optional)"
1420
- msgstr "標題(選填)"
1421
-
1422
- #. @context: Redirect form field
1423
- #: src/routes/dash/redirects.tsx
1424
- msgid "To Path"
1425
- msgstr "到路徑"
1477
+ #. @context: Archive filter - notes that have a title
1478
+ #. @context: Archive filter - notes that have a title
1479
+ #: src/ui/pages/ArchivePage.tsx
1480
+ #: src/ui/pages/ArchivePage.tsx
1481
+ msgid "Titled"
1482
+ msgstr "有標題"
1426
1483
 
1427
1484
  #. @context: Description for system nav toggles
1428
1485
  #: src/ui/dash/appearance/NavigationContent.tsx
1429
- msgid "Toggle built-in navigation items. Enabled items appear in your navigation alongside pages and links."
1430
- msgstr "切換內建導航項目。啟用的項目會與頁面和連結一起顯示在您的導航中。"
1486
+ msgid "Toggle built-in navigation items. Enabled items appear in your navigation alongside links."
1487
+ msgstr "切換內建導覽項目. 已啟用的項目會連同連結一起出現在您的導覽中."
1431
1488
 
1432
1489
  #. @context: Button to expand/collapse nav item edit
1433
1490
  #: src/ui/dash/appearance/NavigationContent.tsx
1434
1491
  msgid "Toggle edit panel"
1435
1492
  msgstr "切換編輯面板"
1436
1493
 
1437
- #. @context: Redirect form field
1438
- #: src/routes/dash/redirects.tsx
1494
+ #. @context: API token name field label
1495
+ #: src/ui/dash/settings/ApiTokensContent.tsx
1496
+ msgid "Token name"
1497
+ msgstr "令牌名稱"
1498
+
1499
+ #. @context: API tokens description
1500
+ #: src/ui/dash/settings/ApiTokensContent.tsx
1501
+ msgid "Tokens let you access the API from scripts, shortcuts, and other tools without signing in."
1502
+ msgstr "權杖讓你在不用登入的情況下,從腳本、捷徑和其他工具存取 API。"
1503
+
1504
+ #. @context: Custom URL form field
1505
+ #: src/routes/dash/custom-urls.tsx
1439
1506
  msgid "Type"
1440
1507
  msgstr "類型"
1441
1508
 
1442
1509
  #. @context: Compose quote text placeholder
1443
1510
  #: src/ui/compose/ComposeDialog.tsx
1444
1511
  msgid "Type the quote..."
1445
- msgstr "輸入引用..."
1446
-
1447
- #. @context: Default title for untitled page
1448
- #. @context: Default title for untitled post
1449
- #: src/ui/dash/pages/PagesContent.tsx
1450
- #: src/ui/dash/PostList.tsx
1451
- msgid "Untitled"
1452
- msgstr "無標題"
1512
+ msgstr "輸入引述..."
1453
1513
 
1454
- #. @context: Button to update existing post
1455
- #: src/ui/dash/posts/PostForm.tsx
1456
- msgid "Update"
1457
- msgstr "更新"
1514
+ #. @context: Settings item description for font theme
1515
+ #: src/ui/dash/settings/SettingsRootContent.tsx
1516
+ msgid "Typography"
1517
+ msgstr "排版"
1458
1518
 
1459
- #. @context: Button to save collection changes
1460
- #: src/ui/dash/collections/CollectionForm.tsx
1461
- msgid "Update Collection"
1462
- msgstr "更新收藏集"
1519
+ #. @context: Fallback label when session device can't be identified
1520
+ #: src/ui/dash/settings/SessionsContent.tsx
1521
+ msgid "Unknown device"
1522
+ msgstr ""
1463
1523
 
1464
- #. @context: Button to update existing page
1465
- #: src/ui/dash/PageForm.tsx
1466
- msgid "Update Page"
1467
- msgstr "更新頁面"
1524
+ #. @context: Archive visibility filter - unlisted posts
1525
+ #. @context: Post badge - unlisted
1526
+ #: src/ui/dash/StatusBadge.tsx
1527
+ #: src/ui/pages/ArchivePage.tsx
1528
+ msgid "Unlisted"
1529
+ msgstr "未列出"
1468
1530
 
1469
- #. @context: Button to upload media file
1470
- #: src/ui/dash/media/MediaListContent.tsx
1471
- msgid "Upload"
1472
- msgstr "上傳"
1531
+ #. @context: Archive filter - notes without a title
1532
+ #. @context: Archive filter - notes without a title
1533
+ #: src/ui/pages/ArchivePage.tsx
1534
+ #: src/ui/pages/ArchivePage.tsx
1535
+ msgid "Untitled"
1536
+ msgstr "無標題"
1473
1537
 
1474
1538
  #. @context: Button to upload avatar image
1475
- #: src/ui/dash/settings/GeneralContent.tsx
1539
+ #: src/ui/dash/settings/AvatarContent.tsx
1476
1540
  msgid "Upload Avatar"
1477
1541
  msgstr "上傳頭像"
1478
1542
 
1479
- #. @context: Error message when avatar upload fails
1480
1543
  #. @context: Error toast when avatar upload fails
1481
1544
  #. @context: Error when file upload fails
1482
- #. @context: Upload error message
1483
1545
  #: src/routes/api/upload.ts
1484
1546
  #: src/routes/dash/settings.tsx
1485
- #: src/ui/dash/media/MediaListContent.tsx
1486
- #: src/ui/dash/settings/GeneralContent.tsx
1547
+ msgid "Upload didn't go through. Try again in a moment."
1548
+ msgstr "上傳失敗。請稍後再試。"
1549
+
1550
+ #. @context: Error message when avatar upload fails
1551
+ #: src/ui/dash/settings/AvatarContent.tsx
1487
1552
  msgid "Upload failed. Please try again."
1488
1553
  msgstr "上傳失敗。請再試一次。"
1489
1554
 
1490
- #. @context: Toast after successful file upload
1491
- #: src/routes/api/upload.ts
1492
- msgid "Upload successful!"
1493
- msgstr "上傳成功!"
1494
-
1495
1555
  #. @context: Avatar upload button text while uploading
1496
1556
  #. @context: Toast shown during background upload
1497
- #. @context: Upload status - uploading
1498
1557
  #: src/ui/compose/ComposeDialog.tsx
1499
- #: src/ui/dash/media/MediaListContent.tsx
1500
- #: src/ui/dash/settings/GeneralContent.tsx
1558
+ #: src/ui/dash/settings/AvatarContent.tsx
1501
1559
  msgid "Uploading..."
1502
1560
  msgstr "上傳中..."
1503
1561
 
1504
- #. @context: Media detail section - URL
1505
1562
  #. @context: Nav item URL field
1506
1563
  #: src/ui/dash/appearance/NavigationContent.tsx
1507
- #: src/ui/dash/media/ViewMediaContent.tsx
1508
1564
  msgid "URL"
1509
- msgstr "網址"
1510
-
1511
- #. @context: Post form field - source URL
1512
- #: src/ui/dash/posts/PostForm.tsx
1513
- msgid "URL (optional)"
1514
- msgstr "網址(可選)"
1565
+ msgstr "URL"
1515
1566
 
1516
1567
  #. @context: Collection path help text
1517
- #: src/ui/dash/collections/CollectionForm.tsx
1568
+ #. @context: Collection path help text
1569
+ #: src/ui/compose/ComposeDialog.tsx
1570
+ #: src/ui/shared/CollectionsSidebar.tsx
1518
1571
  msgid "URL-safe identifier (lowercase, numbers, hyphens). For CJK titles, slug will be auto-generated on the server."
1519
- msgstr "URL安全識別碼(小寫、數字、連字符)。對於CJK標題,slug將在伺服器上自動生成。"
1572
+ msgstr "URL 安全的識別字串(小寫、數字、連字號)。對於 CJK 標題,slug 將在伺服器上自動產生。"
1520
1573
 
1521
- #. @context: Switch label for setting featured posts as default homepage
1522
- #: src/ui/dash/appearance/NavigationContent.tsx
1523
- msgid "Use Featured as default home view"
1524
- msgstr ""
1574
+ #. @context: Heading for API token usage examples
1575
+ #: src/ui/dash/settings/ApiTokensContent.tsx
1576
+ msgid "Usage"
1577
+ msgstr "使用方式"
1525
1578
 
1526
- #. @context: Media URL helper text
1527
- #: src/ui/dash/media/ViewMediaContent.tsx
1528
- msgid "Use this URL to embed the media in your posts."
1529
- msgstr "使用此 URL 將媒體嵌入到您的帖子中。"
1579
+ #. @context: Archive media filter - video
1580
+ #: src/ui/pages/ArchivePage.tsx
1581
+ msgid "Video"
1582
+ msgstr "影片"
1530
1583
 
1531
- #. @context: Button to view collection
1532
1584
  #. @context: Button to view item on public site
1533
- #. @context: Button to view page on public site
1534
- #. @context: Button to view page on public site
1535
- #. @context: Button to view post
1536
- #. @context: Button to view post on public site
1537
- #: src/routes/dash/pages.tsx
1538
- #: src/routes/dash/posts.tsx
1585
+ #. @context: Toast action button to view the published post
1586
+ #: src/ui/compose/ComposeDialog.tsx
1539
1587
  #: src/ui/dash/ActionButtons.tsx
1540
- #: src/ui/dash/collections/ViewCollectionContent.tsx
1541
- #: src/ui/dash/pages/PagesContent.tsx
1542
- #: src/ui/dash/PostList.tsx
1543
1588
  msgid "View"
1544
- msgstr "查看"
1589
+ msgstr "檢視"
1545
1590
 
1546
- #. @context: Dashboard header link to view the public site
1547
- #: src/ui/layouts/DashLayout.tsx
1548
- msgid "View Site"
1549
- msgstr "查看網站"
1591
+ #. @context: Prefix before Custom CSS link on color theme page
1592
+ #: src/ui/dash/appearance/ColorThemeContent.tsx
1593
+ msgid "Want more control?"
1594
+ msgstr ""
1550
1595
 
1551
1596
  #. @context: Setup page welcome heading
1552
1597
  #: src/routes/auth/setup.tsx
1553
1598
  msgid "Welcome to Jant"
1554
- msgstr "歡迎來到 Jant"
1599
+ msgstr "歡迎使用 Jant"
1555
1600
 
1556
1601
  #. @context: Compose prompt placeholder text
1557
- #. @context: Post content placeholder
1558
1602
  #: src/ui/compose/ComposePrompt.tsx
1559
- #: src/ui/dash/posts/PostForm.tsx
1560
1603
  msgid "What's on your mind?"
1561
- msgstr "你在想什麼?"
1604
+ msgstr "在想什麼?"
1562
1605
 
1563
1606
  #. @context: Compose body placeholder
1564
1607
  #: src/ui/compose/ComposeDialog.tsx
1565
1608
  msgid "What's on your mind..."
1566
- msgstr "你在想什麼..."
1609
+ msgstr "在想什麼..."
1567
1610
 
1568
1611
  #. @context: Collection description placeholder
1569
- #: src/ui/dash/collections/CollectionForm.tsx
1612
+ #. @context: Collection description placeholder
1613
+ #: src/ui/compose/ComposeDialog.tsx
1614
+ #: src/ui/shared/CollectionsSidebar.tsx
1570
1615
  msgid "What's this collection about?"
1571
- msgstr "這個收藏是關於什麼的?"
1616
+ msgstr "這個收藏是關於什麼?"
1572
1617
 
1573
- #. @context: Setup form field - user name
1574
- #: src/routes/auth/setup.tsx
1575
- msgid "Your Name"
1576
- msgstr "您的姓名"
1618
+ #. @context: Description for featured default toggle, explains what happens when off
1619
+ #: src/ui/dash/appearance/NavigationContent.tsx
1620
+ msgid "When off, visitors see your latest posts first"
1621
+ msgstr "關閉時, 訪客會先看到你的最新文章"
1622
+
1623
+ #. @context: Error toast when sign-in credentials are wrong
1624
+ #: src/routes/auth/signin.tsx
1625
+ msgid "Wrong email or password. Check your credentials and try again."
1626
+ msgstr "電子郵件或密碼錯誤。請檢查您的登入資訊後重試。"
1627
+
1628
+ #. @context: Confirm close action sheet title when editing a published post
1629
+ #: src/ui/compose/ComposeDialog.tsx
1630
+ msgid "You have unsaved changes"
1631
+ msgstr ""
1577
1632
 
1578
1633
  #. @context: Compose thoughts placeholder
1579
1634
  #: src/ui/compose/ComposeDialog.tsx
1580
1635
  msgid "Your thoughts (optional)"
1581
- msgstr "您的想法(可選)"
1636
+ msgstr "你的想法(選填)"