@open-slide/core 1.2.0 → 1.4.0
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.
- package/dist/{build-6BeQ3cxb.js → build-1Rqivz0d.js} +2 -2
- package/dist/cli/bin.js +5 -5
- package/dist/{config-AxZ5OE1u.js → config-XZJnC_fu.js} +735 -64
- package/dist/{config-CtT8K4VF.d.ts → config-s0YUbmUe.d.ts} +3 -1
- package/dist/{dev-C9eLmUEq.js → dev-0W8gYiSa.js} +2 -2
- package/dist/en-7GU-DHbJ.js +361 -0
- package/dist/index.d.ts +4 -3
- package/dist/index.js +229 -39
- package/dist/locale/index.d.ts +1 -1
- package/dist/locale/index.js +136 -342
- package/dist/{preview-Cunm-f4i.js → preview-DT9hJvzM.js} +2 -2
- package/dist/sync-j9_QPovT.js +3 -0
- package/dist/{types-CRHIeoNq.d.ts → types-QCpkHkiS.d.ts} +42 -2
- package/dist/vite/index.d.ts +2 -2
- package/dist/vite/index.js +2 -2
- package/package.json +9 -1
- package/skills/create-slide/SKILL.md +1 -1
- package/skills/create-theme/SKILL.md +60 -12
- package/skills/slide-authoring/SKILL.md +21 -2
- package/src/app/app.tsx +13 -1
- package/src/app/components/asset-view.tsx +37 -22
- package/src/app/components/image-placeholder.tsx +123 -1
- package/src/app/components/inspector/inspect-overlay.tsx +49 -3
- package/src/app/components/inspector/inspector-panel.tsx +370 -30
- package/src/app/components/inspector/inspector-provider.tsx +390 -49
- package/src/app/components/player.tsx +25 -5
- package/src/app/components/present/control-bar.tsx +12 -0
- package/src/app/components/sidebar/folder-item.tsx +27 -5
- package/src/app/components/sidebar/mobile-pill.tsx +34 -0
- package/src/app/components/sidebar/sidebar.tsx +20 -0
- package/src/app/components/themes/theme-detail.tsx +300 -0
- package/src/app/components/themes/themes-gallery.tsx +146 -0
- package/src/app/components/thumbnail-rail.tsx +17 -5
- package/src/app/lib/assets.ts +55 -2
- package/src/app/lib/export-pdf.ts +6 -0
- package/src/app/lib/inspector/use-editor.ts +9 -1
- package/src/app/lib/sdk.ts +1 -0
- package/src/app/lib/slides.ts +17 -1
- package/src/app/lib/themes.ts +22 -0
- package/src/app/lib/use-agent-socket.ts +18 -0
- package/src/app/lib/use-slide-module.ts +48 -0
- package/src/app/routes/assets.tsx +9 -0
- package/src/app/routes/home-shell.tsx +194 -0
- package/src/app/routes/home.tsx +89 -207
- package/src/app/routes/presenter.tsx +2 -20
- package/src/app/routes/slide.tsx +217 -54
- package/src/app/routes/themes.tsx +34 -0
- package/src/app/virtual.d.ts +20 -0
- package/src/locale/en.ts +49 -7
- package/src/locale/ja.ts +50 -7
- package/src/locale/types.ts +44 -2
- package/src/locale/zh-cn.ts +49 -8
- package/src/locale/zh-tw.ts +49 -8
- package/dist/sync-B4eLo2H6.js +0 -3
- /package/dist/{design-C13iz9_4.js → design-cpzS8aud.js} +0 -0
- /package/dist/{sync-3oqN1WyK.js → sync-BCJDRIqo.js} +0 -0
package/dist/locale/index.js
CHANGED
|
@@ -1,325 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
const en = {
|
|
3
|
-
id: "en",
|
|
4
|
-
common: {
|
|
5
|
-
cancel: "Cancel",
|
|
6
|
-
save: "Save",
|
|
7
|
-
saving: "Saving",
|
|
8
|
-
saved: "Saved",
|
|
9
|
-
discard: "Discard",
|
|
10
|
-
delete: "Delete",
|
|
11
|
-
rename: "Rename",
|
|
12
|
-
move: "Move",
|
|
13
|
-
close: "Close",
|
|
14
|
-
loading: "Loading",
|
|
15
|
-
loadFailed: "Load failed",
|
|
16
|
-
failedToLoadSlide: "Failed to load slide",
|
|
17
|
-
home: "Home",
|
|
18
|
-
backToHome: "Back to home",
|
|
19
|
-
preview: "Preview",
|
|
20
|
-
add: "Add",
|
|
21
|
-
done: "Done",
|
|
22
|
-
tryAgain: "Try again",
|
|
23
|
-
undo: "Undo",
|
|
24
|
-
redo: "Redo",
|
|
25
|
-
light: "Light",
|
|
26
|
-
dark: "Dark",
|
|
27
|
-
system: "System",
|
|
28
|
-
selected: "Selected"
|
|
29
|
-
},
|
|
30
|
-
notFound: {
|
|
31
|
-
eyebrow: "404 · not found",
|
|
32
|
-
title: "Page not found"
|
|
33
|
-
},
|
|
34
|
-
home: {
|
|
35
|
-
appTitle: "open-slide",
|
|
36
|
-
draft: "Draft",
|
|
37
|
-
folders: "Folders",
|
|
38
|
-
newFolder: "New folder",
|
|
39
|
-
folderName: "Folder name",
|
|
40
|
-
changeIcon: "Change icon",
|
|
41
|
-
iconEmojiTab: "Emoji",
|
|
42
|
-
iconColorTab: "Color",
|
|
43
|
-
folderActions: "Folder actions",
|
|
44
|
-
searchPlaceholder: "Search slides",
|
|
45
|
-
clearSearch: "Clear search",
|
|
46
|
-
noMatches: "No matches",
|
|
47
|
-
nothingMatchesPrefix: "Nothing matches ",
|
|
48
|
-
nothingMatchesSuffix: " in this folder.",
|
|
49
|
-
noSlidesYet: "No slides yet",
|
|
50
|
-
createSlideHintPrefix: "Create ",
|
|
51
|
-
createSlideHintMid: " that ",
|
|
52
|
-
createSlideHintSuffix: ".",
|
|
53
|
-
folderEmptyTitle: "{name} is empty",
|
|
54
|
-
folderEmptyHint: "Drag a slide from Draft into this folder in the sidebar.",
|
|
55
|
-
slideActions: "Slide actions",
|
|
56
|
-
moveToFolder: "Move to folder…",
|
|
57
|
-
renameDialogEyebrow: "Rename",
|
|
58
|
-
renameDialogTitle: "Rename slide",
|
|
59
|
-
renameDialogDescription: "Give this slide a new display name.",
|
|
60
|
-
slideNamePlaceholder: "Slide name",
|
|
61
|
-
moveDialogEyebrow: "Move",
|
|
62
|
-
moveDialogTitle: "Move slide",
|
|
63
|
-
moveDialogDescriptionPrefix: "Choose a folder for ",
|
|
64
|
-
moveDialogDescriptionSuffix: ".",
|
|
65
|
-
deleteDialogEyebrow: "Destructive",
|
|
66
|
-
deleteDialogTitle: "Delete slide?",
|
|
67
|
-
deleteDialogDescriptionPrefix: "This permanently removes ",
|
|
68
|
-
deleteDialogDescriptionMid: " and its files from disk. ",
|
|
69
|
-
deleteDialogDescriptionSuffix: "This action cannot be undone.",
|
|
70
|
-
toastFolderCreated: "Created folder “{name}”",
|
|
71
|
-
toastFolderCreateFailed: "Failed to create folder",
|
|
72
|
-
toastSlideMoved: "Moved “{slide}” to {folder}",
|
|
73
|
-
toastSlideMoveFailed: "Failed to move slide",
|
|
74
|
-
toastFolderDeleted: "Deleted folder “{name}”",
|
|
75
|
-
toastFolderDeleteFailed: "Failed to delete folder",
|
|
76
|
-
pickIcon: "Pick icon"
|
|
77
|
-
},
|
|
78
|
-
slide: {
|
|
79
|
-
home: "Home",
|
|
80
|
-
backToHome: "Back to home",
|
|
81
|
-
agentConnected: "Agent connected",
|
|
82
|
-
agentConnectedTooltip: "The dev server is publishing your current slide and inspector selection to your agent. Ask \"this slide\" or \"this element\" in chat and it will resolve. Disappears in production builds.",
|
|
83
|
-
download: "Download",
|
|
84
|
-
exportAsHtml: "Export as HTML",
|
|
85
|
-
exportAsPdf: "Export as PDF",
|
|
86
|
-
pdfExportFailed: "PDF export failed",
|
|
87
|
-
present: "Present",
|
|
88
|
-
slidesTab: "Slides",
|
|
89
|
-
assetsTab: "Assets",
|
|
90
|
-
renameSlide: "Rename slide",
|
|
91
|
-
loadingEyebrow: "Loading",
|
|
92
|
-
emptyEyebrow: "Empty",
|
|
93
|
-
nothingToShow: "Nothing to show.",
|
|
94
|
-
emptyHintPrefix: "",
|
|
95
|
-
emptyHintMust: " must ",
|
|
96
|
-
emptyHintSuffix: " a non-empty array of components."
|
|
97
|
-
},
|
|
98
|
-
presenter: {
|
|
99
|
-
eyebrow: "Presenter",
|
|
100
|
-
notLinked: "Not linked",
|
|
101
|
-
nowShowing: "Now showing",
|
|
102
|
-
upNext: "Up next",
|
|
103
|
-
lastSlide: "Last slide",
|
|
104
|
-
endOfDeck: "End of deck",
|
|
105
|
-
speakerNotes: "Speaker notes",
|
|
106
|
-
noNotesPrefix: "No speaker notes for this slide. Add ",
|
|
107
|
-
noNotesSuffix: " to your slide module to see notes here.",
|
|
108
|
-
blackScreen: "Black screen",
|
|
109
|
-
whiteScreen: "White screen",
|
|
110
|
-
prev: "Prev",
|
|
111
|
-
next: "Next",
|
|
112
|
-
black: "Black",
|
|
113
|
-
white: "White",
|
|
114
|
-
reset: "Reset",
|
|
115
|
-
resetTimer: "Reset timer",
|
|
116
|
-
currentTime: "Current time",
|
|
117
|
-
elapsed: "Elapsed",
|
|
118
|
-
jump: "Jump",
|
|
119
|
-
loadingSlide: "Loading {slideId}…"
|
|
120
|
-
},
|
|
121
|
-
present: {
|
|
122
|
-
prevSlideAria: "Previous slide (←)",
|
|
123
|
-
nextSlideAria: "Next slide (→)",
|
|
124
|
-
overviewAria: "Slide overview (O)",
|
|
125
|
-
blackoutAria: "Black screen (B)",
|
|
126
|
-
whiteoutAria: "White screen (W)",
|
|
127
|
-
laserAria: "Laser pointer (L)",
|
|
128
|
-
presenterAria: "Presenter view (P)",
|
|
129
|
-
helpAria: "Keyboard shortcuts (?)",
|
|
130
|
-
exitAria: "Exit (Esc)",
|
|
131
|
-
elapsedTime: "Elapsed time",
|
|
132
|
-
helpEyebrow: "Present mode",
|
|
133
|
-
helpTitle: "Keyboard shortcuts",
|
|
134
|
-
shortcutNext: "Next slide",
|
|
135
|
-
shortcutPrev: "Previous slide",
|
|
136
|
-
shortcutFirstLast: "First / last slide",
|
|
137
|
-
shortcutJump: "Jump to slide",
|
|
138
|
-
shortcutOverview: "Slide overview",
|
|
139
|
-
shortcutBlack: "Black screen",
|
|
140
|
-
shortcutWhite: "White screen",
|
|
141
|
-
shortcutLaser: "Laser pointer",
|
|
142
|
-
shortcutPresenter: "Open Presenter View",
|
|
143
|
-
shortcutToggleHelp: "Toggle this help",
|
|
144
|
-
shortcutCloseExit: "Close overlay / exit",
|
|
145
|
-
overviewDialogAria: "Slide overview",
|
|
146
|
-
overviewEyebrow: "Overview",
|
|
147
|
-
overviewGoToAria: "Go to slide {n}",
|
|
148
|
-
nowBadge: "Now"
|
|
149
|
-
},
|
|
150
|
-
inspector: {
|
|
151
|
-
inspect: "Inspect",
|
|
152
|
-
deselect: "Deselect",
|
|
153
|
-
agentWatching: "Agent is watching",
|
|
154
|
-
agentWatchingTooltip: "Your agent already sees the selected element via the dev server — just ask it in chat. Leave comments here only when you want to queue a few before asking.",
|
|
155
|
-
contentSection: "Content",
|
|
156
|
-
typographySection: "Typography",
|
|
157
|
-
colorSection: "Color",
|
|
158
|
-
textColor: "Text",
|
|
159
|
-
backgroundColor: "Background",
|
|
160
|
-
imageSection: "Image",
|
|
161
|
-
imagePlaceholderSection: "Image placeholder",
|
|
162
|
-
elementTextPlaceholder: "Element text",
|
|
163
|
-
sizeLabel: "Size",
|
|
164
|
-
weightLabel: "Weight",
|
|
165
|
-
weightLight: "Light · 300",
|
|
166
|
-
weightRegular: "Regular · 400",
|
|
167
|
-
weightMedium: "Medium · 500",
|
|
168
|
-
weightSemibold: "Semibold · 600",
|
|
169
|
-
weightBold: "Bold · 700",
|
|
170
|
-
weightExtrabold: "Extrabold · 800",
|
|
171
|
-
styleLabel: "Style",
|
|
172
|
-
boldAria: "Bold",
|
|
173
|
-
italicAria: "Italic",
|
|
174
|
-
lineHeightLabel: "Line height",
|
|
175
|
-
trackingLabel: "Tracking",
|
|
176
|
-
alignLabel: "Align",
|
|
177
|
-
clearAria: "Clear",
|
|
178
|
-
replace: "Replace…",
|
|
179
|
-
replaceImageDialogTitle: "Replace image",
|
|
180
|
-
replaceImageDescription: "Pick an asset from {path}.",
|
|
181
|
-
pickerLoading: "Loading…",
|
|
182
|
-
pickerEmpty: "No images in this slide's assets folder yet. Add some from the Assets tab.",
|
|
183
|
-
placeholderHintLabel: "Hint:",
|
|
184
|
-
crop: "Crop…",
|
|
185
|
-
cropDialogTitle: "Crop image",
|
|
186
|
-
cropDialogDescription: "Drag the frame to choose what stays visible.",
|
|
187
|
-
cropFitCover: "Fill",
|
|
188
|
-
cropFitContain: "Fit",
|
|
189
|
-
cropApply: "Apply",
|
|
190
|
-
cropResetAria: "Reset crop",
|
|
191
|
-
leaveComment: "Leave a comment",
|
|
192
|
-
commentPlaceholder: "Describe a change for the agent…",
|
|
193
|
-
commentShortcutHint: "⌘↵ to add",
|
|
194
|
-
addComment: "Add comment",
|
|
195
|
-
unsavedChanges: {
|
|
196
|
-
one: "{count} unsaved change",
|
|
197
|
-
other: "{count} unsaved changes"
|
|
198
|
-
},
|
|
199
|
-
commentsCount: {
|
|
200
|
-
one: "{count} comment",
|
|
201
|
-
other: "{count} comments"
|
|
202
|
-
},
|
|
203
|
-
commentLineLabel: "line {n}",
|
|
204
|
-
commentsEmpty: "No comments yet. Toggle Inspect and click a slide element.",
|
|
205
|
-
commentsApplyHintPrefix: "Run ",
|
|
206
|
-
commentsApplyHintSuffix: " in your agent to apply these.",
|
|
207
|
-
commentDeleteAria: "Delete",
|
|
208
|
-
saveFailed: "Couldn't save:"
|
|
209
|
-
},
|
|
210
|
-
stylePanel: {
|
|
211
|
-
designTokens: "Design tokens",
|
|
212
|
-
draftBadge: "draft",
|
|
213
|
-
unsavedTitle: "Unsaved",
|
|
214
|
-
closePanelAria: "Close design panel",
|
|
215
|
-
colorsSection: "Colors",
|
|
216
|
-
typographySection: "Typography",
|
|
217
|
-
shapeSection: "Shape",
|
|
218
|
-
backgroundLabel: "Background",
|
|
219
|
-
textLabel: "Text",
|
|
220
|
-
accentLabel: "Accent",
|
|
221
|
-
displayFontLabel: "Display",
|
|
222
|
-
bodyFontLabel: "Body",
|
|
223
|
-
heroLabel: "Hero",
|
|
224
|
-
bodyLabel: "Body",
|
|
225
|
-
radiusLabel: "Radius",
|
|
226
|
-
designToggle: "Design",
|
|
227
|
-
designToggleTitle: "Design tokens",
|
|
228
|
-
fontPresetCustom: "Custom…",
|
|
229
|
-
shuffleAria: "Shuffle design",
|
|
230
|
-
shuffleTitle: "Shuffle for inspiration"
|
|
231
|
-
},
|
|
232
|
-
asset: {
|
|
233
|
-
devOnlyMessage: "Asset management is only available in dev mode.",
|
|
234
|
-
sectionAria: "Slide assets",
|
|
235
|
-
eyebrow: "Assets",
|
|
236
|
-
fileCount: {
|
|
237
|
-
one: "{count} file",
|
|
238
|
-
other: "{count} files"
|
|
239
|
-
},
|
|
240
|
-
searchLogos: "Search logos",
|
|
241
|
-
upload: "Upload",
|
|
242
|
-
dropToUpload: "Drop to upload",
|
|
243
|
-
loading: "Loading…",
|
|
244
|
-
noAssetsYet: "No assets yet",
|
|
245
|
-
noAssetsHintPrefix: "Drop files anywhere here, or use ",
|
|
246
|
-
noAssetsHintSuffix: ".",
|
|
247
|
-
nameAlreadyExists: "A file with that name already exists.",
|
|
248
|
-
previewAria: "Preview {name}",
|
|
249
|
-
actionsAria: "Actions for {name}",
|
|
250
|
-
previewMenuItem: "Preview",
|
|
251
|
-
renameMenuItem: "Rename",
|
|
252
|
-
deleteMenuItem: "Delete",
|
|
253
|
-
conflictTitle: "File already exists",
|
|
254
|
-
conflictDescription: "{name} is already in this slide's assets folder.",
|
|
255
|
-
conflictReplace: "Replace",
|
|
256
|
-
conflictRenameCopy: "Rename copy",
|
|
257
|
-
deleteAssetTitle: "Delete asset",
|
|
258
|
-
deleteAssetDescription: "Delete {name}? Imports referencing this file in the slide will break.",
|
|
259
|
-
noPreview: "No preview available",
|
|
260
|
-
importHintComment: "import asset from ",
|
|
261
|
-
importHintSemi: ";",
|
|
262
|
-
logoSearchTitle: "Search logos",
|
|
263
|
-
logoSearchPoweredByPrefix: "Powered by ",
|
|
264
|
-
logoSearchPlaceholder: "Search by brand…",
|
|
265
|
-
logoSearchErrorTitle: "Couldn't reach svgl",
|
|
266
|
-
logoSearchErrorBody: "Check your connection and try again.",
|
|
267
|
-
logoSearchNoResults: "No logos for \"{query}\"",
|
|
268
|
-
logoSearchEmpty: "No logos available",
|
|
269
|
-
logoSearchEmptyHintPrefix: "Try a different brand name, or browse the full catalog at ",
|
|
270
|
-
logoSearchEmptyHintSuffix: ".",
|
|
271
|
-
logoVariantLight: "Light",
|
|
272
|
-
logoVariantDark: "Dark",
|
|
273
|
-
toastUploadFailed: "Upload failed ({status})",
|
|
274
|
-
toastReplaced: "Replaced {name}",
|
|
275
|
-
toastUploadedAs: "Uploaded as {name}",
|
|
276
|
-
toastUploaded: "Uploaded {name}",
|
|
277
|
-
toastRenameFailed: "Rename failed ({status})",
|
|
278
|
-
toastRenamed: "Renamed to {name}",
|
|
279
|
-
toastDeleteFailed: "Delete failed ({status})",
|
|
280
|
-
toastDeleted: "Deleted {name}",
|
|
281
|
-
toastDownloadFailed: "Failed to download logo",
|
|
282
|
-
toastSearchFailed: "Search failed"
|
|
283
|
-
},
|
|
284
|
-
thumbnailRail: {
|
|
285
|
-
pages: "Pages",
|
|
286
|
-
goToPageAria: "Go to page {n}",
|
|
287
|
-
duplicatePage: "Duplicate",
|
|
288
|
-
deletePage: "Delete",
|
|
289
|
-
pageActionsAria: "Page {n} actions",
|
|
290
|
-
toastDuplicated: "Duplicated page {n}",
|
|
291
|
-
toastDeleted: "Deleted page {n}",
|
|
292
|
-
toastDuplicateFailed: "Could not duplicate page",
|
|
293
|
-
toastDeleteFailed: "Could not delete page"
|
|
294
|
-
},
|
|
295
|
-
pdfToast: {
|
|
296
|
-
title: "Exporting PDF",
|
|
297
|
-
processing: "Processing page {current} of {total}",
|
|
298
|
-
printing: "Opening print dialog…",
|
|
299
|
-
done: "Done"
|
|
300
|
-
},
|
|
301
|
-
themeToggle: {
|
|
302
|
-
toggleAria: "Toggle theme",
|
|
303
|
-
title: "Theme",
|
|
304
|
-
light: "Light",
|
|
305
|
-
dark: "Dark",
|
|
306
|
-
system: "System"
|
|
307
|
-
},
|
|
308
|
-
clickNav: {
|
|
309
|
-
prevAria: "Previous page",
|
|
310
|
-
nextAria: "Next page"
|
|
311
|
-
},
|
|
312
|
-
notesDrawer: {
|
|
313
|
-
toggle: "Notes",
|
|
314
|
-
pageLabel: "page {n}/{total}",
|
|
315
|
-
placeholder: "Write speaker notes for this slide…",
|
|
316
|
-
statusSaving: "Saving…",
|
|
317
|
-
statusSaved: "Saved",
|
|
318
|
-
statusError: "Save failed: {msg}"
|
|
319
|
-
}
|
|
320
|
-
};
|
|
1
|
+
import { en } from "../en-7GU-DHbJ.js";
|
|
321
2
|
|
|
322
|
-
//#endregion
|
|
323
3
|
//#region src/locale/format.ts
|
|
324
4
|
function format(template, vars) {
|
|
325
5
|
return template.replace(/\{(\w+)\}/g, (m, key) => {
|
|
@@ -368,6 +48,8 @@ const ja = {
|
|
|
368
48
|
home: {
|
|
369
49
|
appTitle: "open-slide",
|
|
370
50
|
draft: "下書き",
|
|
51
|
+
themes: "テーマ",
|
|
52
|
+
assets: "アセット",
|
|
371
53
|
folders: "フォルダ",
|
|
372
54
|
newFolder: "新規フォルダ",
|
|
373
55
|
folderName: "フォルダ名",
|
|
@@ -381,9 +63,8 @@ const ja = {
|
|
|
381
63
|
nothingMatchesPrefix: "このフォルダ内に ",
|
|
382
64
|
nothingMatchesSuffix: " に一致する項目はありません。",
|
|
383
65
|
noSlidesYet: "スライドはまだありません",
|
|
384
|
-
createSlideHintPrefix: "",
|
|
385
|
-
|
|
386
|
-
createSlideHintSuffix: " してください。",
|
|
66
|
+
createSlideHintPrefix: "エージェントで ",
|
|
67
|
+
createSlideHintSuffix: " を実行してスライドを作成しましょう。",
|
|
387
68
|
folderEmptyTitle: "{name} は空です",
|
|
388
69
|
folderEmptyHint: "サイドバーから下書きのスライドをこのフォルダにドラッグしてください。",
|
|
389
70
|
slideActions: "スライド操作",
|
|
@@ -411,14 +92,21 @@ const ja = {
|
|
|
411
92
|
},
|
|
412
93
|
slide: {
|
|
413
94
|
agentConnected: "エージェント接続中",
|
|
414
|
-
agentConnectedTooltip: "現在のスライドと Inspector
|
|
95
|
+
agentConnectedTooltip: "現在のスライドと Inspector の選択はエージェントにリアルタイムで同期されています。",
|
|
96
|
+
agentDisconnected: "エージェント切断",
|
|
97
|
+
agentDisconnectedTooltip: "dev server との接続が切れたため、現在のスライドや Inspector の選択がエージェントに届かなくなっています。dev server を再起動して接続を復旧してください。",
|
|
415
98
|
home: "ホーム",
|
|
416
99
|
backToHome: "ホームへ戻る",
|
|
417
100
|
download: "ダウンロード",
|
|
418
101
|
exportAsHtml: "HTML として書き出し",
|
|
419
102
|
exportAsPdf: "PDF として書き出し",
|
|
420
103
|
pdfExportFailed: "PDF の書き出しに失敗しました",
|
|
104
|
+
pdfExportSafariUnsupported: "PDF の書き出しは現在 Safari では対応していません。Chromium ベースのブラウザでお試しください。",
|
|
421
105
|
present: "発表",
|
|
106
|
+
presentMenuAria: "発表オプション",
|
|
107
|
+
presentInWindow: "再生",
|
|
108
|
+
presentFullscreen: "フルスクリーン再生",
|
|
109
|
+
presentPresenter: "発表者モード",
|
|
422
110
|
slidesTab: "スライド",
|
|
423
111
|
assetsTab: "アセット",
|
|
424
112
|
renameSlide: "スライドの名前を変更",
|
|
@@ -460,6 +148,8 @@ const ja = {
|
|
|
460
148
|
whiteoutAria: "白い画面 (W)",
|
|
461
149
|
laserAria: "レーザーポインタ (L)",
|
|
462
150
|
presenterAria: "発表者ビュー (P)",
|
|
151
|
+
enterFullscreenAria: "フルスクリーンへ",
|
|
152
|
+
exitFullscreenAria: "フルスクリーン解除",
|
|
463
153
|
helpAria: "キーボードショートカット (?)",
|
|
464
154
|
exitAria: "終了 (Esc)",
|
|
465
155
|
elapsedTime: "経過時間",
|
|
@@ -521,7 +211,9 @@ const ja = {
|
|
|
521
211
|
cropApply: "適用",
|
|
522
212
|
cropResetAria: "トリミングをリセット",
|
|
523
213
|
agentWatching: "エージェント監視中",
|
|
524
|
-
agentWatchingTooltip: "
|
|
214
|
+
agentWatchingTooltip: "選択中の要素はエージェントにリアルタイムで同期されています。",
|
|
215
|
+
agentNotWatching: "エージェント未接続",
|
|
216
|
+
agentNotWatchingTooltip: "dev server との接続が切れたため、選択中の要素がエージェントに見えなくなっています。dev server を再起動して接続を復旧してください。",
|
|
525
217
|
leaveComment: "コメントを残す",
|
|
526
218
|
commentPlaceholder: "エージェントに依頼する変更を記述…",
|
|
527
219
|
commentShortcutHint: "⌘↵ で追加",
|
|
@@ -567,6 +259,8 @@ const ja = {
|
|
|
567
259
|
devOnlyMessage: "アセット管理は開発モードでのみ利用できます。",
|
|
568
260
|
sectionAria: "スライドのアセット",
|
|
569
261
|
eyebrow: "アセット",
|
|
262
|
+
scopeSlide: "このスライド",
|
|
263
|
+
scopeGlobal: "グローバル",
|
|
570
264
|
fileCount: {
|
|
571
265
|
one: "ファイル {count} 件",
|
|
572
266
|
other: "ファイル {count} 件"
|
|
@@ -585,7 +279,7 @@ const ja = {
|
|
|
585
279
|
renameMenuItem: "名前を変更",
|
|
586
280
|
deleteMenuItem: "削除",
|
|
587
281
|
conflictTitle: "ファイルがすでに存在します",
|
|
588
|
-
conflictDescription: "{name}
|
|
282
|
+
conflictDescription: "{name} はすでにアセットフォルダにあります。",
|
|
589
283
|
conflictReplace: "置き換え",
|
|
590
284
|
conflictRenameCopy: "コピーをリネーム",
|
|
591
285
|
deleteAssetTitle: "アセットを削除",
|
|
@@ -624,7 +318,8 @@ const ja = {
|
|
|
624
318
|
toastDuplicated: "ページ {n} を複製しました",
|
|
625
319
|
toastDeleted: "ページ {n} を削除しました",
|
|
626
320
|
toastDuplicateFailed: "ページを複製できませんでした",
|
|
627
|
-
toastDeleteFailed: "ページを削除できませんでした"
|
|
321
|
+
toastDeleteFailed: "ページを削除できませんでした",
|
|
322
|
+
resizeRail: "サムネイル幅を調整"
|
|
628
323
|
},
|
|
629
324
|
pdfToast: {
|
|
630
325
|
title: "PDF を書き出し中",
|
|
@@ -643,6 +338,11 @@ const ja = {
|
|
|
643
338
|
prevAria: "前のページ",
|
|
644
339
|
nextAria: "次のページ"
|
|
645
340
|
},
|
|
341
|
+
imagePlaceholder: {
|
|
342
|
+
dropOverlay: "ここにドロップして使用",
|
|
343
|
+
uploading: "アップロード中…",
|
|
344
|
+
uploadFailed: "画像のアップロードに失敗しました"
|
|
345
|
+
},
|
|
646
346
|
notesDrawer: {
|
|
647
347
|
toggle: "発表者ノート",
|
|
648
348
|
pageLabel: "{n} / {total} ページ",
|
|
@@ -650,6 +350,24 @@ const ja = {
|
|
|
650
350
|
statusSaving: "保存中…",
|
|
651
351
|
statusSaved: "保存済み",
|
|
652
352
|
statusError: "保存に失敗しました: {msg}"
|
|
353
|
+
},
|
|
354
|
+
themes: {
|
|
355
|
+
title: "テーマ",
|
|
356
|
+
noThemesTitle: "テーマがまだありません",
|
|
357
|
+
noThemesHintPrefix: "",
|
|
358
|
+
noThemesHintSuffix: " を実行して作成 — themes/ に markdown ファイルと同名の demo スライドを置きます。",
|
|
359
|
+
noDemoYet: "デモがまだありません",
|
|
360
|
+
noDemoHintPrefix: "このテーマで ",
|
|
361
|
+
noDemoHintSuffix: " を再実行するとプレビュー用スライドが生成されます。",
|
|
362
|
+
backToGallery: "テーマ一覧へ戻る",
|
|
363
|
+
pageOf: "{n}/{total} ページ",
|
|
364
|
+
nextPageAria: "次のページ",
|
|
365
|
+
prevPageAria: "前のページ",
|
|
366
|
+
openThemeAria: "テーマ {name} を開く",
|
|
367
|
+
usedBy: "このテーマを使うスライド",
|
|
368
|
+
usedByEmpty: "このテーマを使うスライドはまだありません。",
|
|
369
|
+
expandPromptAria: "プロンプトを展開",
|
|
370
|
+
collapsePromptAria: "プロンプトを折りたたむ"
|
|
653
371
|
}
|
|
654
372
|
};
|
|
655
373
|
|
|
@@ -690,6 +408,8 @@ const zhCN = {
|
|
|
690
408
|
home: {
|
|
691
409
|
appTitle: "open-slide",
|
|
692
410
|
draft: "草稿",
|
|
411
|
+
themes: "主题",
|
|
412
|
+
assets: "素材",
|
|
693
413
|
folders: "文件夹",
|
|
694
414
|
newFolder: "新建文件夹",
|
|
695
415
|
folderName: "文件夹名称",
|
|
@@ -703,9 +423,8 @@ const zhCN = {
|
|
|
703
423
|
nothingMatchesPrefix: "该文件夹中没有匹配 ",
|
|
704
424
|
nothingMatchesSuffix: " 的内容。",
|
|
705
425
|
noSlidesYet: "尚无幻灯片",
|
|
706
|
-
createSlideHintPrefix: "
|
|
707
|
-
|
|
708
|
-
createSlideHintSuffix: "。",
|
|
426
|
+
createSlideHintPrefix: "在 agent 中执行 ",
|
|
427
|
+
createSlideHintSuffix: " 开始创建。",
|
|
709
428
|
folderEmptyTitle: "{name} 为空",
|
|
710
429
|
folderEmptyHint: "从侧边栏将幻灯片从草稿拖入此文件夹。",
|
|
711
430
|
slideActions: "幻灯片操作",
|
|
@@ -733,14 +452,21 @@ const zhCN = {
|
|
|
733
452
|
},
|
|
734
453
|
slide: {
|
|
735
454
|
agentConnected: "Agent 已连接",
|
|
736
|
-
agentConnectedTooltip: "
|
|
455
|
+
agentConnectedTooltip: "目前的 slide 与 Inspector 选择会即时同步给 agent。",
|
|
456
|
+
agentDisconnected: "Agent 已断开",
|
|
457
|
+
agentDisconnectedTooltip: "已和 dev server 断开连接,agent 没办法再看到你目前的 slide 或 Inspector 选择。请重新启动 dev server 来恢复连接。",
|
|
737
458
|
home: "首页",
|
|
738
459
|
backToHome: "返回首页",
|
|
739
460
|
download: "下载",
|
|
740
461
|
exportAsHtml: "导出为 HTML",
|
|
741
462
|
exportAsPdf: "导出为 PDF",
|
|
742
463
|
pdfExportFailed: "PDF 导出失败",
|
|
464
|
+
pdfExportSafariUnsupported: "导出 PDF 目前不支持 Safari 设备,请尝试使用基于 Chromium 的浏览器替代。",
|
|
743
465
|
present: "演示",
|
|
466
|
+
presentMenuAria: "演示选项",
|
|
467
|
+
presentInWindow: "播放",
|
|
468
|
+
presentFullscreen: "全屏播放",
|
|
469
|
+
presentPresenter: "演讲者模式",
|
|
744
470
|
slidesTab: "幻灯片",
|
|
745
471
|
assetsTab: "素材",
|
|
746
472
|
renameSlide: "重命名幻灯片",
|
|
@@ -782,6 +508,8 @@ const zhCN = {
|
|
|
782
508
|
whiteoutAria: "白屏 (W)",
|
|
783
509
|
laserAria: "激光笔 (L)",
|
|
784
510
|
presenterAria: "演讲者视图 (P)",
|
|
511
|
+
enterFullscreenAria: "进入全屏",
|
|
512
|
+
exitFullscreenAria: "退出全屏",
|
|
785
513
|
helpAria: "键盘快捷键 (?)",
|
|
786
514
|
exitAria: "退出 (Esc)",
|
|
787
515
|
elapsedTime: "已用时",
|
|
@@ -843,7 +571,9 @@ const zhCN = {
|
|
|
843
571
|
cropApply: "应用",
|
|
844
572
|
cropResetAria: "重置裁剪",
|
|
845
573
|
agentWatching: "Agent 正在关注",
|
|
846
|
-
agentWatchingTooltip: "
|
|
574
|
+
agentWatchingTooltip: "选取的元素会即时同步给 agent。",
|
|
575
|
+
agentNotWatching: "Agent 没在关注",
|
|
576
|
+
agentNotWatchingTooltip: "已和 dev server 断开连接,agent 看不到你选的元素了。请重新启动 dev server 来恢复连接。",
|
|
847
577
|
leaveComment: "留个 comment",
|
|
848
578
|
commentPlaceholder: "描述你希望代理执行的更改…",
|
|
849
579
|
commentShortcutHint: "⌘↵ 添加",
|
|
@@ -889,6 +619,8 @@ const zhCN = {
|
|
|
889
619
|
devOnlyMessage: "素材管理仅在开发模式下可用。",
|
|
890
620
|
sectionAria: "幻灯片素材",
|
|
891
621
|
eyebrow: "素材",
|
|
622
|
+
scopeSlide: "当前幻灯片",
|
|
623
|
+
scopeGlobal: "全局",
|
|
892
624
|
fileCount: {
|
|
893
625
|
one: "{count} 个文件",
|
|
894
626
|
other: "{count} 个文件"
|
|
@@ -907,7 +639,7 @@ const zhCN = {
|
|
|
907
639
|
renameMenuItem: "重命名",
|
|
908
640
|
deleteMenuItem: "删除",
|
|
909
641
|
conflictTitle: "文件已存在",
|
|
910
|
-
conflictDescription: "{name}
|
|
642
|
+
conflictDescription: "{name} 已在素材文件夹中。",
|
|
911
643
|
conflictReplace: "替换",
|
|
912
644
|
conflictRenameCopy: "重命名副本",
|
|
913
645
|
deleteAssetTitle: "删除素材",
|
|
@@ -946,7 +678,8 @@ const zhCN = {
|
|
|
946
678
|
toastDuplicated: "已复制第 {n} 页",
|
|
947
679
|
toastDeleted: "已删除第 {n} 页",
|
|
948
680
|
toastDuplicateFailed: "无法复制页面",
|
|
949
|
-
toastDeleteFailed: "无法删除页面"
|
|
681
|
+
toastDeleteFailed: "无法删除页面",
|
|
682
|
+
resizeRail: "调整缩略图栏宽度"
|
|
950
683
|
},
|
|
951
684
|
pdfToast: {
|
|
952
685
|
title: "导出 PDF",
|
|
@@ -965,6 +698,11 @@ const zhCN = {
|
|
|
965
698
|
prevAria: "上一页",
|
|
966
699
|
nextAria: "下一页"
|
|
967
700
|
},
|
|
701
|
+
imagePlaceholder: {
|
|
702
|
+
dropOverlay: "拖入图片以使用",
|
|
703
|
+
uploading: "上传中…",
|
|
704
|
+
uploadFailed: "图片上传失败"
|
|
705
|
+
},
|
|
968
706
|
notesDrawer: {
|
|
969
707
|
toggle: "演讲备注",
|
|
970
708
|
pageLabel: "第 {n} / {total} 页",
|
|
@@ -972,6 +710,24 @@ const zhCN = {
|
|
|
972
710
|
statusSaving: "保存中…",
|
|
973
711
|
statusSaved: "已保存",
|
|
974
712
|
statusError: "保存失败:{msg}"
|
|
713
|
+
},
|
|
714
|
+
themes: {
|
|
715
|
+
title: "主题",
|
|
716
|
+
noThemesTitle: "尚无主题",
|
|
717
|
+
noThemesHintPrefix: "运行 ",
|
|
718
|
+
noThemesHintSuffix: " 来创建一个 — 一个位于 themes/ 的 markdown 文件,加上同名的 demo slide。",
|
|
719
|
+
noDemoYet: "尚无 demo",
|
|
720
|
+
noDemoHintPrefix: "对此主题重新运行 ",
|
|
721
|
+
noDemoHintSuffix: " 即可生成预览用的 slide。",
|
|
722
|
+
backToGallery: "返回主题列表",
|
|
723
|
+
pageOf: "第 {n}/{total} 页",
|
|
724
|
+
nextPageAria: "下一页",
|
|
725
|
+
prevPageAria: "上一页",
|
|
726
|
+
openThemeAria: "打开主题 {name}",
|
|
727
|
+
usedBy: "使用此主题的 slides",
|
|
728
|
+
usedByEmpty: "尚未有 slides 使用此主题。",
|
|
729
|
+
expandPromptAria: "展开 prompt",
|
|
730
|
+
collapsePromptAria: "收起 prompt"
|
|
975
731
|
}
|
|
976
732
|
};
|
|
977
733
|
|
|
@@ -1012,6 +768,8 @@ const zhTW = {
|
|
|
1012
768
|
home: {
|
|
1013
769
|
appTitle: "open-slide",
|
|
1014
770
|
draft: "草稿",
|
|
771
|
+
themes: "主題",
|
|
772
|
+
assets: "素材",
|
|
1015
773
|
folders: "資料夾",
|
|
1016
774
|
newFolder: "新增資料夾",
|
|
1017
775
|
folderName: "資料夾名稱",
|
|
@@ -1025,9 +783,8 @@ const zhTW = {
|
|
|
1025
783
|
nothingMatchesPrefix: "此資料夾中沒有相符 ",
|
|
1026
784
|
nothingMatchesSuffix: " 的項目。",
|
|
1027
785
|
noSlidesYet: "尚無投影片",
|
|
1028
|
-
createSlideHintPrefix: "
|
|
1029
|
-
|
|
1030
|
-
createSlideHintSuffix: "。",
|
|
786
|
+
createSlideHintPrefix: "在 agent 中執行 ",
|
|
787
|
+
createSlideHintSuffix: " 開始建立。",
|
|
1031
788
|
folderEmptyTitle: "{name} 為空",
|
|
1032
789
|
folderEmptyHint: "從側邊欄將投影片從草稿拖入此資料夾。",
|
|
1033
790
|
slideActions: "投影片操作",
|
|
@@ -1055,14 +812,21 @@ const zhTW = {
|
|
|
1055
812
|
},
|
|
1056
813
|
slide: {
|
|
1057
814
|
agentConnected: "Agent 已連線",
|
|
1058
|
-
agentConnectedTooltip: "
|
|
815
|
+
agentConnectedTooltip: "目前的 slide 與 Inspector 選擇會即時同步給 agent。",
|
|
816
|
+
agentDisconnected: "Agent 已斷線",
|
|
817
|
+
agentDisconnectedTooltip: "已和 dev server 斷線,agent 沒辦法再看到你目前的 slide 或 Inspector 選擇。請重新啟動 dev server 來恢復連線。",
|
|
1059
818
|
home: "首頁",
|
|
1060
819
|
backToHome: "返回首頁",
|
|
1061
820
|
download: "下載",
|
|
1062
821
|
exportAsHtml: "匯出為 HTML",
|
|
1063
822
|
exportAsPdf: "匯出為 PDF",
|
|
1064
823
|
pdfExportFailed: "PDF 匯出失敗",
|
|
824
|
+
pdfExportSafariUnsupported: "匯出 PDF 目前不支援 Safari 裝置,請嘗試用 Chromium 基底瀏覽器替代。",
|
|
1065
825
|
present: "簡報",
|
|
826
|
+
presentMenuAria: "簡報選項",
|
|
827
|
+
presentInWindow: "播放",
|
|
828
|
+
presentFullscreen: "全螢幕播放",
|
|
829
|
+
presentPresenter: "簡報者模式",
|
|
1066
830
|
slidesTab: "投影片",
|
|
1067
831
|
assetsTab: "素材",
|
|
1068
832
|
renameSlide: "重新命名投影片",
|
|
@@ -1104,6 +868,8 @@ const zhTW = {
|
|
|
1104
868
|
whiteoutAria: "白屏 (W)",
|
|
1105
869
|
laserAria: "雷射筆 (L)",
|
|
1106
870
|
presenterAria: "主講人檢視 (P)",
|
|
871
|
+
enterFullscreenAria: "進入全螢幕",
|
|
872
|
+
exitFullscreenAria: "退出全螢幕",
|
|
1107
873
|
helpAria: "鍵盤快速鍵 (?)",
|
|
1108
874
|
exitAria: "離開 (Esc)",
|
|
1109
875
|
elapsedTime: "已耗時",
|
|
@@ -1165,7 +931,9 @@ const zhTW = {
|
|
|
1165
931
|
cropApply: "套用",
|
|
1166
932
|
cropResetAria: "重設裁切",
|
|
1167
933
|
agentWatching: "Agent 正在關注",
|
|
1168
|
-
agentWatchingTooltip: "
|
|
934
|
+
agentWatchingTooltip: "選取的元素會即時同步給 agent。",
|
|
935
|
+
agentNotWatching: "Agent 沒在關注",
|
|
936
|
+
agentNotWatchingTooltip: "已和 dev server 斷線,agent 看不到你選的元素了。請重新啟動 dev server 來恢復連線。",
|
|
1169
937
|
leaveComment: "留個 comment",
|
|
1170
938
|
commentPlaceholder: "描述你希望代理進行的修改…",
|
|
1171
939
|
commentShortcutHint: "⌘↵ 新增",
|
|
@@ -1211,6 +979,8 @@ const zhTW = {
|
|
|
1211
979
|
devOnlyMessage: "素材管理僅在開發模式下可用。",
|
|
1212
980
|
sectionAria: "投影片素材",
|
|
1213
981
|
eyebrow: "素材",
|
|
982
|
+
scopeSlide: "此投影片",
|
|
983
|
+
scopeGlobal: "全域",
|
|
1214
984
|
fileCount: {
|
|
1215
985
|
one: "{count} 個檔案",
|
|
1216
986
|
other: "{count} 個檔案"
|
|
@@ -1229,7 +999,7 @@ const zhTW = {
|
|
|
1229
999
|
renameMenuItem: "重新命名",
|
|
1230
1000
|
deleteMenuItem: "刪除",
|
|
1231
1001
|
conflictTitle: "檔案已存在",
|
|
1232
|
-
conflictDescription: "{name}
|
|
1002
|
+
conflictDescription: "{name} 已在素材資料夾中。",
|
|
1233
1003
|
conflictReplace: "取代",
|
|
1234
1004
|
conflictRenameCopy: "重新命名副本",
|
|
1235
1005
|
deleteAssetTitle: "刪除素材",
|
|
@@ -1268,7 +1038,8 @@ const zhTW = {
|
|
|
1268
1038
|
toastDuplicated: "已複製第 {n} 頁",
|
|
1269
1039
|
toastDeleted: "已刪除第 {n} 頁",
|
|
1270
1040
|
toastDuplicateFailed: "無法複製頁面",
|
|
1271
|
-
toastDeleteFailed: "無法刪除頁面"
|
|
1041
|
+
toastDeleteFailed: "無法刪除頁面",
|
|
1042
|
+
resizeRail: "調整縮圖欄寬度"
|
|
1272
1043
|
},
|
|
1273
1044
|
pdfToast: {
|
|
1274
1045
|
title: "匯出 PDF",
|
|
@@ -1287,6 +1058,11 @@ const zhTW = {
|
|
|
1287
1058
|
prevAria: "上一頁",
|
|
1288
1059
|
nextAria: "下一頁"
|
|
1289
1060
|
},
|
|
1061
|
+
imagePlaceholder: {
|
|
1062
|
+
dropOverlay: "拖入圖片以使用",
|
|
1063
|
+
uploading: "上傳中…",
|
|
1064
|
+
uploadFailed: "圖片上傳失敗"
|
|
1065
|
+
},
|
|
1290
1066
|
notesDrawer: {
|
|
1291
1067
|
toggle: "講稿",
|
|
1292
1068
|
pageLabel: "第 {n} / {total} 頁",
|
|
@@ -1294,6 +1070,24 @@ const zhTW = {
|
|
|
1294
1070
|
statusSaving: "儲存中…",
|
|
1295
1071
|
statusSaved: "已儲存",
|
|
1296
1072
|
statusError: "儲存失敗:{msg}"
|
|
1073
|
+
},
|
|
1074
|
+
themes: {
|
|
1075
|
+
title: "主題",
|
|
1076
|
+
noThemesTitle: "尚無主題",
|
|
1077
|
+
noThemesHintPrefix: "執行 ",
|
|
1078
|
+
noThemesHintSuffix: " 來建立一個 — 一個位於 themes/ 的 markdown 檔案,加上同名的 demo slide。",
|
|
1079
|
+
noDemoYet: "尚無 demo",
|
|
1080
|
+
noDemoHintPrefix: "對此主題重新執行 ",
|
|
1081
|
+
noDemoHintSuffix: " 即可產生預覽用的 slide。",
|
|
1082
|
+
backToGallery: "返回主題列表",
|
|
1083
|
+
pageOf: "第 {n}/{total} 頁",
|
|
1084
|
+
nextPageAria: "下一頁",
|
|
1085
|
+
prevPageAria: "上一頁",
|
|
1086
|
+
openThemeAria: "開啟主題 {name}",
|
|
1087
|
+
usedBy: "使用此主題的 slides",
|
|
1088
|
+
usedByEmpty: "尚未有 slides 使用此主題。",
|
|
1089
|
+
expandPromptAria: "展開 prompt",
|
|
1090
|
+
collapsePromptAria: "收合 prompt"
|
|
1297
1091
|
}
|
|
1298
1092
|
};
|
|
1299
1093
|
|