@open-aippt/core 1.13.2

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 (142) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +98 -0
  3. package/bin.js +2 -0
  4. package/dist/build-DxTqmvsO.js +17 -0
  5. package/dist/cli/bin.d.ts +1 -0
  6. package/dist/cli/bin.js +86 -0
  7. package/dist/config-CjzqjrEA.js +4280 -0
  8. package/dist/config-DIC-yVPp.d.ts +23 -0
  9. package/dist/design-cpzS8aud.js +35 -0
  10. package/dist/dev-BYuTeJbA.js +20 -0
  11. package/dist/format-BCeKbTOM.js +1605 -0
  12. package/dist/index.d.ts +134 -0
  13. package/dist/index.js +467 -0
  14. package/dist/locale/index.d.ts +24 -0
  15. package/dist/locale/index.js +3 -0
  16. package/dist/preview-DlQvnJPq.js +18 -0
  17. package/dist/sync-BPZ0m27m.js +139 -0
  18. package/dist/sync-EsYusbbL.js +3 -0
  19. package/dist/types-CHmFPIG_.d.ts +430 -0
  20. package/dist/vite/index.d.ts +14 -0
  21. package/dist/vite/index.js +4 -0
  22. package/env.d.ts +59 -0
  23. package/package.json +103 -0
  24. package/skills/apply-comments/SKILL.md +83 -0
  25. package/skills/create-slide/SKILL.md +91 -0
  26. package/skills/create-theme/SKILL.md +250 -0
  27. package/skills/current-slide/SKILL.md +110 -0
  28. package/skills/slide-authoring/SKILL.md +625 -0
  29. package/src/app/app.tsx +47 -0
  30. package/src/app/components/asset-view.tsx +966 -0
  31. package/src/app/components/history-provider.tsx +120 -0
  32. package/src/app/components/image-placeholder.tsx +243 -0
  33. package/src/app/components/inspector/asset-picker-dialog.tsx +196 -0
  34. package/src/app/components/inspector/comment-widget.tsx +93 -0
  35. package/src/app/components/inspector/image-crop-dialog.tsx +212 -0
  36. package/src/app/components/inspector/inspect-overlay.tsx +387 -0
  37. package/src/app/components/inspector/inspector-panel.tsx +1115 -0
  38. package/src/app/components/inspector/inspector-provider.tsx +1218 -0
  39. package/src/app/components/inspector/save-bar.tsx +48 -0
  40. package/src/app/components/language-toggle.tsx +39 -0
  41. package/src/app/components/notes-drawer.tsx +120 -0
  42. package/src/app/components/overview-grid.tsx +363 -0
  43. package/src/app/components/panel/panel-fields.tsx +60 -0
  44. package/src/app/components/panel/panel-shell.tsx +80 -0
  45. package/src/app/components/panel/save-card.tsx +142 -0
  46. package/src/app/components/pdf-progress-toast.tsx +32 -0
  47. package/src/app/components/player.tsx +466 -0
  48. package/src/app/components/pptx-progress-toast.tsx +32 -0
  49. package/src/app/components/present/blackout-overlay.tsx +18 -0
  50. package/src/app/components/present/control-bar.tsx +315 -0
  51. package/src/app/components/present/help-overlay.tsx +57 -0
  52. package/src/app/components/present/jump-input.tsx +74 -0
  53. package/src/app/components/present/laser-pointer.tsx +39 -0
  54. package/src/app/components/present/progress-bar.tsx +26 -0
  55. package/src/app/components/present/use-idle.ts +46 -0
  56. package/src/app/components/present/use-pointer-near-bottom.ts +34 -0
  57. package/src/app/components/present/use-presenter-channel.ts +66 -0
  58. package/src/app/components/present/use-touch-swipe.ts +66 -0
  59. package/src/app/components/shared-element.tsx +48 -0
  60. package/src/app/components/sidebar/folder-item.tsx +258 -0
  61. package/src/app/components/sidebar/icon-picker.tsx +61 -0
  62. package/src/app/components/sidebar/mobile-pill.tsx +34 -0
  63. package/src/app/components/sidebar/sidebar-footer.tsx +105 -0
  64. package/src/app/components/sidebar/sidebar.tsx +284 -0
  65. package/src/app/components/slide-canvas.tsx +102 -0
  66. package/src/app/components/slide-transition-layer.tsx +844 -0
  67. package/src/app/components/style-panel/design-provider.tsx +148 -0
  68. package/src/app/components/style-panel/style-panel.tsx +349 -0
  69. package/src/app/components/style-panel/use-design.ts +112 -0
  70. package/src/app/components/theme-toggle.tsx +59 -0
  71. package/src/app/components/themes/theme-detail.tsx +305 -0
  72. package/src/app/components/themes/themes-gallery.tsx +149 -0
  73. package/src/app/components/thumbnail-rail.tsx +805 -0
  74. package/src/app/components/ui/badge.tsx +45 -0
  75. package/src/app/components/ui/button.tsx +99 -0
  76. package/src/app/components/ui/card.tsx +92 -0
  77. package/src/app/components/ui/context-menu.tsx +237 -0
  78. package/src/app/components/ui/dialog.tsx +157 -0
  79. package/src/app/components/ui/dropdown-menu.tsx +245 -0
  80. package/src/app/components/ui/input.tsx +25 -0
  81. package/src/app/components/ui/label.tsx +24 -0
  82. package/src/app/components/ui/popover.tsx +75 -0
  83. package/src/app/components/ui/progress.tsx +31 -0
  84. package/src/app/components/ui/scroll-area.tsx +53 -0
  85. package/src/app/components/ui/select.tsx +196 -0
  86. package/src/app/components/ui/separator.tsx +28 -0
  87. package/src/app/components/ui/slider.tsx +61 -0
  88. package/src/app/components/ui/sonner.tsx +48 -0
  89. package/src/app/components/ui/tabs.tsx +79 -0
  90. package/src/app/components/ui/textarea.tsx +22 -0
  91. package/src/app/components/ui/toggle-group.tsx +83 -0
  92. package/src/app/components/ui/toggle.tsx +45 -0
  93. package/src/app/components/ui/tooltip.tsx +58 -0
  94. package/src/app/favicon.ico +0 -0
  95. package/src/app/index.html +13 -0
  96. package/src/app/lib/assets.ts +242 -0
  97. package/src/app/lib/design-presets.ts +94 -0
  98. package/src/app/lib/design.ts +58 -0
  99. package/src/app/lib/export-html.ts +326 -0
  100. package/src/app/lib/export-pdf.ts +298 -0
  101. package/src/app/lib/export-pptx.ts +284 -0
  102. package/src/app/lib/folders.ts +239 -0
  103. package/src/app/lib/inspector/fiber.test.ts +154 -0
  104. package/src/app/lib/inspector/fiber.ts +85 -0
  105. package/src/app/lib/inspector/use-comments.ts +74 -0
  106. package/src/app/lib/inspector/use-editor.ts +73 -0
  107. package/src/app/lib/inspector/use-notes.ts +134 -0
  108. package/src/app/lib/locale-store.ts +67 -0
  109. package/src/app/lib/page-context.tsx +38 -0
  110. package/src/app/lib/print-ready.test.ts +32 -0
  111. package/src/app/lib/print-ready.ts +51 -0
  112. package/src/app/lib/sdk.test.ts +13 -0
  113. package/src/app/lib/sdk.ts +37 -0
  114. package/src/app/lib/slides.ts +26 -0
  115. package/src/app/lib/step-context.tsx +261 -0
  116. package/src/app/lib/themes.ts +22 -0
  117. package/src/app/lib/transition.ts +30 -0
  118. package/src/app/lib/use-agent-socket.ts +18 -0
  119. package/src/app/lib/use-click-page-navigation.ts +60 -0
  120. package/src/app/lib/use-is-mobile.ts +21 -0
  121. package/src/app/lib/use-locale.ts +8 -0
  122. package/src/app/lib/use-prefers-reduced-motion.ts +19 -0
  123. package/src/app/lib/use-slide-module.ts +48 -0
  124. package/src/app/lib/use-wheel-page-navigation.ts +99 -0
  125. package/src/app/lib/utils.test.ts +25 -0
  126. package/src/app/lib/utils.ts +6 -0
  127. package/src/app/main.tsx +14 -0
  128. package/src/app/routes/assets.tsx +9 -0
  129. package/src/app/routes/home-shell.tsx +213 -0
  130. package/src/app/routes/home.tsx +807 -0
  131. package/src/app/routes/presenter.tsx +418 -0
  132. package/src/app/routes/slide.tsx +1108 -0
  133. package/src/app/routes/themes.tsx +34 -0
  134. package/src/app/styles.css +429 -0
  135. package/src/app/virtual.d.ts +51 -0
  136. package/src/locale/en.ts +416 -0
  137. package/src/locale/format.ts +12 -0
  138. package/src/locale/index.ts +6 -0
  139. package/src/locale/ja.ts +422 -0
  140. package/src/locale/types.ts +443 -0
  141. package/src/locale/zh-cn.ts +414 -0
  142. package/src/locale/zh-tw.ts +414 -0
@@ -0,0 +1,414 @@
1
+ import type { Locale } from './types';
2
+
3
+ export const zhCN: Locale = {
4
+ id: 'zh-CN',
5
+
6
+ common: {
7
+ cancel: '取消',
8
+ save: '保存',
9
+ saving: '保存中',
10
+ saved: '已保存',
11
+ discard: '放弃',
12
+ delete: '删除',
13
+ rename: '重命名',
14
+ move: '移动',
15
+ close: '关闭',
16
+ loading: '加载中',
17
+ loadFailed: '加载失败',
18
+ failedToLoadSlide: '无法加载幻灯片',
19
+ home: '首页',
20
+ backToHome: '返回首页',
21
+ preview: '预览',
22
+ add: '添加',
23
+ done: '完成',
24
+ tryAgain: '重试',
25
+ undo: '撤销',
26
+ redo: '重做',
27
+ light: '浅色',
28
+ dark: '深色',
29
+ system: '系统',
30
+ selected: '已选中',
31
+ },
32
+
33
+ notFound: {
34
+ eyebrow: '404 · 未找到页面',
35
+ title: '未找到页面',
36
+ },
37
+
38
+ home: {
39
+ appTitle: 'open-aippt',
40
+ draft: '草稿',
41
+ duplicate: '复制',
42
+ themes: '主题',
43
+ assets: '素材',
44
+ folders: '文件夹',
45
+ newFolder: '新建文件夹',
46
+ folderName: '文件夹名称',
47
+ updateAvailable: 'open-aippt {version} 已发布,请更新软件包以获取最新版本。',
48
+ updatePackage: '更新',
49
+ updatingPackage: '更新中',
50
+ updatePackageDone: '已更新。请重启 dev server 以使用新版本。',
51
+ updatePackageFailed: '更新失败,请查看 dev server 输出。',
52
+ changeIcon: '更换图标',
53
+ iconEmojiTab: 'Emoji',
54
+ iconColorTab: '颜色',
55
+ folderActions: '文件夹操作',
56
+ searchPlaceholder: '搜索幻灯片',
57
+ clearSearch: '清除搜索',
58
+ sortLabel: '排序',
59
+ sortByCreatedDesc: '最新',
60
+ sortByCreatedAsc: '最旧',
61
+ sortByTitleAsc: 'A–Z',
62
+ sortByTitleDesc: 'Z–A',
63
+ noMatches: '没有匹配项',
64
+ nothingMatchesPrefix: '该文件夹中没有匹配 ',
65
+ nothingMatchesSuffix: ' 的内容。',
66
+ noSlidesYet: '尚无幻灯片',
67
+ createSlideHintPrefix: '在 agent 中执行 ',
68
+ createSlideHintSuffix: ' 开始创建。',
69
+ folderEmptyTitle: '{name} 为空',
70
+ folderEmptyHint: '从侧边栏将幻灯片从草稿拖入此文件夹。',
71
+ slideActions: '幻灯片操作',
72
+ moveToFolder: '移到文件夹…',
73
+ renameDialogEyebrow: '重命名',
74
+ renameDialogTitle: '重命名幻灯片',
75
+ renameDialogDescription: '为该幻灯片设置新的显示名称。',
76
+ slideNamePlaceholder: '幻灯片名称',
77
+ moveDialogEyebrow: '移动',
78
+ moveDialogTitle: '移动幻灯片',
79
+ moveDialogDescriptionPrefix: '为 ',
80
+ moveDialogDescriptionSuffix: ' 选择文件夹。',
81
+ deleteDialogEyebrow: '危险操作',
82
+ deleteDialogTitle: '删除幻灯片?',
83
+ deleteDialogDescriptionPrefix: '这将永久从磁盘移除 ',
84
+ deleteDialogDescriptionMid: ' 及其文件。',
85
+ deleteDialogDescriptionSuffix: '此操作无法撤销。',
86
+ toastFolderCreated: '已创建文件夹"{name}"',
87
+ toastFolderCreateFailed: '创建文件夹失败',
88
+ toastSlideDuplicated: '已将"{slide}"复制为 {newSlide}',
89
+ toastSlideDuplicateFailed: '无法复制幻灯片',
90
+ toastSlideMoved: '已将"{slide}"移至 {folder}',
91
+ toastSlideMoveFailed: '移动幻灯片失败',
92
+ toastFolderDeleted: '已删除文件夹"{name}"',
93
+ toastFolderDeleteFailed: '删除文件夹失败',
94
+ toastFolderReorderFailed: '文件夹排序失败',
95
+ pickIcon: '选择图标',
96
+ },
97
+
98
+ slide: {
99
+ agentConnected: 'Agent 已连接',
100
+ agentConnectedTooltip: '目前的 slide 与 Inspector 选择会即时同步给 agent。',
101
+ agentDisconnected: 'Agent 已断开',
102
+ agentDisconnectedTooltip:
103
+ '已和 dev server 断开连接,agent 没办法再看到你目前的 slide 或 Inspector 选择。请重新启动 dev server 来恢复连接。',
104
+ home: '首页',
105
+ backToHome: '返回首页',
106
+ download: '下载',
107
+ copyLink: '复制链接',
108
+ moreActions: '更多操作',
109
+ toastCopyLinkSuccess: '已复制链接到剪贴板',
110
+ toastCopyLinkFailed: '复制链接失败',
111
+ exportAsHtml: '导出为 HTML',
112
+ exportAsPdf: '导出为 PDF',
113
+ exportAsImagePptx: '导出图片 PPTX',
114
+ exportAsPptx: '导出 PPTX',
115
+ comingSoon: '即将推出',
116
+ pptxComingSoonTooltip: '可编辑的 PPTX 导出尚未支持,在此之前可以先使用“导出图片 PPTX”。',
117
+ pdfExportFailed: 'PDF 导出失败',
118
+ imagePptxExportFailed: 'PPTX 导出失败',
119
+ pdfExportSafariUnsupported:
120
+ '导出 PDF 目前不支持 Safari 设备,请尝试使用基于 Chromium 的浏览器替代。',
121
+ present: '演示',
122
+ presentMenuAria: '演示选项',
123
+ presentInWindow: '播放',
124
+ presentFullscreen: '全屏播放',
125
+ presentPresenter: '演讲者模式',
126
+ slidesTab: '幻灯片',
127
+ assetsTab: '素材',
128
+ renameSlide: '重命名幻灯片',
129
+ loadingEyebrow: '加载中',
130
+ emptyEyebrow: '空白',
131
+ nothingToShow: '没有可显示的内容。',
132
+ emptyHintPrefix: '',
133
+ emptyHintMust: ' 必须 ',
134
+ emptyHintSuffix: ' 一个非空的组件数组。',
135
+ },
136
+
137
+ presenter: {
138
+ eyebrow: '演讲者',
139
+ notLinked: '未连接',
140
+ nowShowing: '当前显示',
141
+ upNext: '下一张',
142
+ lastSlide: '最后一张',
143
+ endOfDeck: '演示结束',
144
+ speakerNotes: '演讲备注',
145
+ noNotesPrefix: '该幻灯片没有演讲备注。在你的幻灯片模块中添加 ',
146
+ noNotesSuffix: ' 即可在此查看备注。',
147
+ blackScreen: '黑屏',
148
+ whiteScreen: '白屏',
149
+ prev: '上一张',
150
+ next: '下一张',
151
+ black: '黑屏',
152
+ white: '白屏',
153
+ reset: '重置',
154
+ resetTimer: '重置计时器',
155
+ currentTime: '当前时间',
156
+ elapsed: '已用时',
157
+ jump: '跳至',
158
+ loadingSlide: '正在加载 {slideId}…',
159
+ },
160
+
161
+ present: {
162
+ prevSlideAria: '上一张幻灯片 (←)',
163
+ nextSlideAria: '下一张幻灯片 (→)',
164
+ overviewAria: '幻灯片总览 (O)',
165
+ blackoutAria: '黑屏 (B)',
166
+ whiteoutAria: '白屏 (W)',
167
+ laserAria: '激光笔 (L)',
168
+ presenterAria: '演讲者视图 (P)',
169
+ enterFullscreenAria: '进入全屏',
170
+ exitFullscreenAria: '退出全屏',
171
+ helpAria: '键盘快捷键 (?)',
172
+ exitAria: '退出 (Esc)',
173
+ elapsedTime: '已用时',
174
+ helpEyebrow: '演示模式',
175
+ helpTitle: '键盘快捷键',
176
+ shortcutNext: '下一张',
177
+ shortcutPrev: '上一张',
178
+ shortcutFirstLast: '第一张 / 最后一张',
179
+ shortcutJump: '跳至幻灯片',
180
+ shortcutOverview: '幻灯片总览',
181
+ shortcutBlack: '黑屏',
182
+ shortcutWhite: '白屏',
183
+ shortcutLaser: '激光笔',
184
+ shortcutPresenter: '打开演讲者视图',
185
+ shortcutToggleHelp: '切换此帮助',
186
+ shortcutCloseExit: '关闭遮罩 / 退出',
187
+ overviewDialogAria: '幻灯片总览',
188
+ overviewEyebrow: '总览',
189
+ overviewGoToAria: '前往第 {n} 张幻灯片',
190
+ nowBadge: '当前',
191
+ },
192
+
193
+ inspector: {
194
+ inspect: '检查',
195
+ deselect: '取消选择',
196
+ contentSection: '内容',
197
+ typographySection: '字体',
198
+ colorSection: '颜色',
199
+ textColor: '文字',
200
+ backgroundColor: '背景',
201
+ imageSection: '图片',
202
+ imagePlaceholderSection: '图片占位符',
203
+ elementTextPlaceholder: '元素文字',
204
+ sizeLabel: '大小',
205
+ weightLabel: '字重',
206
+ weightLight: '细体 · 300',
207
+ weightRegular: '常规 · 400',
208
+ weightMedium: '中等 · 500',
209
+ weightSemibold: '半粗 · 600',
210
+ weightBold: '粗体 · 700',
211
+ weightExtrabold: '特粗 · 800',
212
+ styleLabel: '样式',
213
+ boldAria: '粗体',
214
+ italicAria: '斜体',
215
+ lineHeightLabel: '行高',
216
+ trackingLabel: '字距',
217
+ alignLabel: '对齐',
218
+ clearAria: '清除',
219
+ replace: '替换…',
220
+ replaceImageDialogTitle: '替换图片',
221
+ replaceImageDescription: '从 {path} 选择素材。',
222
+ pickerLoading: '加载中…',
223
+ pickerEmpty: '该幻灯片的素材文件夹中尚无图片。请从「素材」标签页添加。',
224
+ placeholderHintLabel: '提示:',
225
+ crop: '裁剪…',
226
+ cropDialogTitle: '裁剪图片',
227
+ cropDialogDescription: '拖动框线决定要保留的可见区域。',
228
+ cropFitCover: '填满',
229
+ cropFitContain: '完整显示',
230
+ cropApply: '应用',
231
+ cropResetAria: '重置裁剪',
232
+ agentWatching: 'Agent 正在关注',
233
+ agentWatchingTooltip: '选取的元素会即时同步给 agent。',
234
+ agentNotWatching: 'Agent 没在关注',
235
+ agentNotWatchingTooltip:
236
+ '已和 dev server 断开连接,agent 看不到你选的元素了。请重新启动 dev server 来恢复连接。',
237
+ leaveComment: '留个 comment',
238
+ commentPlaceholder: '描述你希望代理执行的更改…',
239
+ commentShortcutHint: '⌘/ 聚焦 · ⌘↵ 添加',
240
+ addComment: '添加 comment',
241
+ unsavedChanges: {
242
+ one: '{count} 项未保存的更改',
243
+ other: '{count} 项未保存的更改',
244
+ },
245
+ commentsCount: {
246
+ one: '{count} 条评论',
247
+ other: '{count} 条评论',
248
+ },
249
+ commentLineLabel: '第 {n} 行',
250
+ commentsEmpty: '暂无评论。开启「检查」并点击幻灯片元素。',
251
+ commentsApplyHintPrefix: '在你的代理中运行 ',
252
+ commentsApplyHintSuffix: ' 以应用这些更改。',
253
+ commentDeleteAria: '删除',
254
+ saveFailed: '保存失败:',
255
+ },
256
+
257
+ stylePanel: {
258
+ designTokens: '设计样式',
259
+ draftBadge: '草稿',
260
+ unsavedTitle: '未保存',
261
+ closePanelAria: '关闭设计面板',
262
+ colorsSection: '颜色',
263
+ typographySection: '字体',
264
+ shapeSection: '形状',
265
+ backgroundLabel: '背景',
266
+ textLabel: '文字',
267
+ accentLabel: '强调色',
268
+ displayFontLabel: '展示',
269
+ bodyFontLabel: '正文',
270
+ heroLabel: '主标',
271
+ bodyLabel: '正文',
272
+ radiusLabel: '圆角',
273
+ designToggle: '设计',
274
+ designToggleTitle: '设计样式',
275
+ fontPresetCustom: '自定义…',
276
+ shuffleAria: '随机设计',
277
+ shuffleTitle: '随机配色获取灵感',
278
+ },
279
+
280
+ asset: {
281
+ devOnlyMessage: '素材管理仅在开发模式下可用。',
282
+ sectionAria: '幻灯片素材',
283
+ eyebrow: '素材',
284
+ scopeSlide: '当前幻灯片',
285
+ scopeGlobal: '全局',
286
+ fileCount: { one: '{count} 个文件', other: '{count} 个文件' },
287
+ usageUnused: '未使用',
288
+ searchLogos: '搜索 Logo',
289
+ upload: '上传',
290
+ dropToUpload: '拖入即可上传',
291
+ loading: '加载中…',
292
+ noAssetsYet: '尚无素材',
293
+ noAssetsHintPrefix: '将文件拖到任意位置,或使用 ',
294
+ noAssetsHintSuffix: '。',
295
+ nameAlreadyExists: '已存在同名文件。',
296
+ previewAria: '预览 {name}',
297
+ actionsAria: '{name} 的操作',
298
+ previewMenuItem: '预览',
299
+ renameMenuItem: '重命名',
300
+ deleteMenuItem: '删除',
301
+ conflictTitle: '文件已存在',
302
+ conflictDescription: '{name} 已在素材文件夹中。',
303
+ conflictReplace: '替换',
304
+ conflictRenameCopy: '重命名副本',
305
+ deleteAssetTitle: '删除素材',
306
+ deleteAssetDescription: '要删除 {name} 吗?幻灯片中引用此文件的导入将失效。',
307
+ deleteAssetInUseDescription: '{name} 在 {slides} 个幻灯片中被使用了 {count} 次。',
308
+ deleteAssetInUseHint: '删除后这些使用处会自动还原为图片占位符。',
309
+ deleteAndRevert: '删除并还原',
310
+ toastRevertFailed: '无法还原 {slideId} 中的使用',
311
+ toastDeletedWithRevert: '已删除 {name} 并还原 {count} 个使用处',
312
+ noPreview: '无预览',
313
+ importHintComment: 'import asset from ',
314
+ importHintSemi: ';',
315
+ logoSearchTitle: '搜索 Logo',
316
+ logoSearchPoweredByPrefix: '由 ',
317
+ logoSearchPlaceholder: '按品牌搜索…',
318
+ logoSearchErrorTitle: '无法连接至 svgl',
319
+ logoSearchErrorBody: '请检查网络连接后重试。',
320
+ logoSearchNoResults: '找不到「{query}」的 Logo',
321
+ logoSearchEmpty: '无可用 Logo',
322
+ logoSearchEmptyHintPrefix: '试试其他品牌名,或在以下网站浏览完整目录: ',
323
+ logoSearchEmptyHintSuffix: '。',
324
+ logoVariantLight: '浅色',
325
+ logoVariantDark: '深色',
326
+ toastUploadFailed: '上传失败 ({status})',
327
+ toastReplaced: '已替换 {name}',
328
+ toastUploadedAs: '已以 {name} 上传',
329
+ toastUploaded: '已上传 {name}',
330
+ toastRenameFailed: '重命名失败 ({status})',
331
+ toastRenamed: '已重命名为 {name}',
332
+ toastDeleteFailed: '删除失败 ({status})',
333
+ toastDeleted: '已删除 {name}',
334
+ toastDownloadFailed: '下载 Logo 失败',
335
+ toastSearchFailed: '搜索失败',
336
+ },
337
+
338
+ thumbnailRail: {
339
+ pages: '页面',
340
+ goToPageAria: '前往第 {n} 页',
341
+ duplicatePage: '复制',
342
+ deletePage: '删除',
343
+ pageActionsAria: '第 {n} 页的操作',
344
+ toastDuplicated: '已复制第 {n} 页',
345
+ toastDeleted: '已删除第 {n} 页',
346
+ toastDuplicateFailed: '无法复制页面',
347
+ toastDeleteFailed: '无法删除页面',
348
+ resizeRail: '调整缩略图栏宽度',
349
+ transitionIndicator: '有换页转场',
350
+ stepsIndicator: '有逐步揭示',
351
+ overviewAria: '幻灯片总览 (O)',
352
+ },
353
+
354
+ pdfToast: {
355
+ title: '导出 PDF',
356
+ processing: '正在处理第 {current} / {total} 页',
357
+ printing: '正在打开打印对话框…',
358
+ done: '完成',
359
+ },
360
+
361
+ pptxToast: {
362
+ title: '导出 PPTX',
363
+ processing: '正在渲染第 {current} / {total} 页',
364
+ generating: '正在组合演示文稿…',
365
+ done: '完成',
366
+ },
367
+
368
+ themeToggle: {
369
+ toggleAria: '切换主题',
370
+ title: '主题',
371
+ light: '浅色',
372
+ dark: '深色',
373
+ system: '系统',
374
+ },
375
+
376
+ languageToggle: {
377
+ toggleAria: '切换语言',
378
+ title: '语言',
379
+ },
380
+
381
+ imagePlaceholder: {
382
+ dropOverlay: '拖入图片以使用',
383
+ uploading: '上传中…',
384
+ uploadFailed: '图片上传失败',
385
+ },
386
+
387
+ notesDrawer: {
388
+ toggle: '演讲备注',
389
+ pageLabel: '第 {n} / {total} 页',
390
+ placeholder: '为这一页撰写演讲备注…',
391
+ statusSaving: '保存中…',
392
+ statusSaved: '已保存',
393
+ statusError: '保存失败:{msg}',
394
+ },
395
+
396
+ themes: {
397
+ title: '主题',
398
+ noThemesTitle: '尚无主题',
399
+ noThemesHintPrefix: '运行 ',
400
+ noThemesHintSuffix: ' 来创建一个 — 一个位于 themes/ 的 markdown 文件,加上同名的 demo slide。',
401
+ noDemoYet: '尚无 demo',
402
+ noDemoHintPrefix: '对此主题重新运行 ',
403
+ noDemoHintSuffix: ' 即可生成预览用的 slide。',
404
+ backToGallery: '返回主题列表',
405
+ pageOf: '第 {n}/{total} 页',
406
+ nextPageAria: '下一页',
407
+ prevPageAria: '上一页',
408
+ openThemeAria: '打开主题 {name}',
409
+ usedBy: '使用此主题的 slides',
410
+ usedByEmpty: '尚未有 slides 使用此主题。',
411
+ expandPromptAria: '展开 prompt',
412
+ collapsePromptAria: '收起 prompt',
413
+ },
414
+ };