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