@jant/core 0.3.35 → 0.3.37

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