@rigel-cms/rigel 1.0.0 → 1.1.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/README.md +4 -0
- package/docs/extensions.md +194 -0
- package/package.json +15 -3
- package/src/article-body.ts +49 -37
- package/src/article-render.ts +25 -2
- package/src/article.ts +44 -0
- package/src/config.ts +12 -2
- package/src/editor/App.svelte +98 -97
- package/src/editor/blocks/extension.ts +29 -0
- package/src/editor/blocks/index.ts +17 -15
- package/src/editor/blocks/video.ts +2 -1
- package/src/editor/i18n/README.md +23 -0
- package/src/editor/i18n/de/connection.json +136 -0
- package/src/editor/i18n/de/defaults.json +6 -0
- package/src/editor/i18n/de/fields.json +130 -0
- package/src/editor/i18n/de/local.json +49 -0
- package/src/editor/i18n/de/media.json +166 -0
- package/src/editor/i18n/de/richtext.json +116 -0
- package/src/editor/i18n/de/shell.json +181 -0
- package/src/editor/i18n/de/system.json +14 -0
- package/src/editor/i18n/de/validation.json +82 -0
- package/src/editor/i18n/en/connection.json +136 -0
- package/src/editor/i18n/en/defaults.json +6 -0
- package/src/editor/i18n/en/fields.json +130 -0
- package/src/editor/i18n/en/local.json +49 -0
- package/src/editor/i18n/en/media.json +166 -0
- package/src/editor/i18n/en/richtext.json +116 -0
- package/src/editor/i18n/en/shell.json +181 -0
- package/src/editor/i18n/en/system.json +14 -0
- package/src/editor/i18n/en/validation.json +82 -0
- package/src/editor/i18n/es/connection.json +136 -0
- package/src/editor/i18n/es/defaults.json +6 -0
- package/src/editor/i18n/es/fields.json +130 -0
- package/src/editor/i18n/es/local.json +49 -0
- package/src/editor/i18n/es/media.json +166 -0
- package/src/editor/i18n/es/richtext.json +116 -0
- package/src/editor/i18n/es/shell.json +181 -0
- package/src/editor/i18n/es/system.json +14 -0
- package/src/editor/i18n/es/validation.json +82 -0
- package/src/editor/i18n/format.ts +26 -0
- package/src/editor/i18n/fr/connection.json +136 -0
- package/src/editor/i18n/fr/defaults.json +6 -0
- package/src/editor/i18n/fr/fields.json +130 -0
- package/src/editor/i18n/fr/local.json +49 -0
- package/src/editor/i18n/fr/media.json +166 -0
- package/src/editor/i18n/fr/richtext.json +116 -0
- package/src/editor/i18n/fr/shell.json +181 -0
- package/src/editor/i18n/fr/system.json +14 -0
- package/src/editor/i18n/fr/validation.json +82 -0
- package/src/editor/i18n/index.ts +18 -0
- package/src/editor/i18n/it/connection.json +136 -0
- package/src/editor/i18n/it/defaults.json +6 -0
- package/src/editor/i18n/it/fields.json +130 -0
- package/src/editor/i18n/it/local.json +49 -0
- package/src/editor/i18n/it/media.json +166 -0
- package/src/editor/i18n/it/richtext.json +116 -0
- package/src/editor/i18n/it/shell.json +181 -0
- package/src/editor/i18n/it/system.json +14 -0
- package/src/editor/i18n/it/validation.json +82 -0
- package/src/editor/i18n/ja/connection.json +136 -0
- package/src/editor/i18n/ja/defaults.json +6 -0
- package/src/editor/i18n/ja/fields.json +130 -0
- package/src/editor/i18n/ja/local.json +49 -0
- package/src/editor/i18n/ja/media.json +166 -0
- package/src/editor/i18n/ja/richtext.json +116 -0
- package/src/editor/i18n/ja/shell.json +181 -0
- package/src/editor/i18n/ja/system.json +14 -0
- package/src/editor/i18n/ja/validation.json +82 -0
- package/src/editor/i18n/locales.ts +13 -0
- package/src/editor/i18n/nl/connection.json +136 -0
- package/src/editor/i18n/nl/defaults.json +6 -0
- package/src/editor/i18n/nl/fields.json +130 -0
- package/src/editor/i18n/nl/local.json +49 -0
- package/src/editor/i18n/nl/media.json +166 -0
- package/src/editor/i18n/nl/richtext.json +116 -0
- package/src/editor/i18n/nl/shell.json +181 -0
- package/src/editor/i18n/nl/system.json +14 -0
- package/src/editor/i18n/nl/validation.json +82 -0
- package/src/editor/i18n/ru/connection.json +138 -0
- package/src/editor/i18n/ru/defaults.json +6 -0
- package/src/editor/i18n/ru/fields.json +132 -0
- package/src/editor/i18n/ru/local.json +49 -0
- package/src/editor/i18n/ru/media.json +166 -0
- package/src/editor/i18n/ru/richtext.json +116 -0
- package/src/editor/i18n/ru/shell.json +181 -0
- package/src/editor/i18n/ru/system.json +14 -0
- package/src/editor/i18n/ru/validation.json +82 -0
- package/src/editor/i18n/server.ts +13 -0
- package/src/editor/i18n/zh/connection.json +136 -0
- package/src/editor/i18n/zh/defaults.json +6 -0
- package/src/editor/i18n/zh/fields.json +130 -0
- package/src/editor/i18n/zh/local.json +49 -0
- package/src/editor/i18n/zh/media.json +166 -0
- package/src/editor/i18n/zh/richtext.json +116 -0
- package/src/editor/i18n/zh/shell.json +181 -0
- package/src/editor/i18n/zh/system.json +14 -0
- package/src/editor/i18n/zh/validation.json +82 -0
- package/src/editor/lib/ActionDialog.svelte +5 -4
- package/src/editor/lib/BlockEditor.svelte +305 -88
- package/src/editor/lib/CollectionPanel.svelte +17 -15
- package/src/editor/lib/DatePicker.svelte +15 -12
- package/src/editor/lib/ExtensionMount.svelte +12 -0
- package/src/editor/lib/Field.svelte +3 -2
- package/src/editor/lib/ImagePicker.svelte +82 -81
- package/src/editor/lib/MarkdownEditor.svelte +25 -24
- package/src/editor/lib/MediaPicker.svelte +6 -5
- package/src/editor/lib/MenuEditor.svelte +31 -30
- package/src/editor/lib/PreviewFrame.svelte +11 -6
- package/src/editor/lib/PropertiesTabs.svelte +3 -2
- package/src/editor/lib/PublishDialog.svelte +15 -14
- package/src/editor/lib/ReferenceSelect.svelte +3 -2
- package/src/editor/lib/SchemaField.svelte +15 -13
- package/src/editor/lib/SchemaPanel.svelte +20 -19
- package/src/editor/lib/Select.svelte +3 -2
- package/src/editor/lib/SeoGuidance.svelte +6 -5
- package/src/editor/lib/Settings.svelte +54 -54
- package/src/editor/lib/Shortcuts.svelte +7 -6
- package/src/editor/lib/SitePreview.svelte +10 -9
- package/src/editor/lib/TopBar.svelte +18 -17
- package/src/editor/lib/UnsavedChanges.svelte +7 -6
- package/src/editor/lib/VisualEditor.svelte +14 -13
- package/src/editor/lib/calendar.ts +10 -4
- package/src/editor/lib/embed-preview.ts +23 -5
- package/src/editor/lib/extension-preview.ts +121 -0
- package/src/editor/lib/github-auth.ts +23 -22
- package/src/editor/lib/github-backend.ts +96 -91
- package/src/editor/lib/images.ts +33 -31
- package/src/editor/lib/menu-tree.ts +5 -4
- package/src/editor/lib/preview-frame.ts +4 -3
- package/src/editor/lib/schema-edit.ts +3 -2
- package/src/editor/lib/settings.ts +5 -3
- package/src/editor/lib/slash-command.ts +1 -0
- package/src/editor/lib/tooltip.ts +1 -1
- package/src/editor/main.ts +9 -0
- package/src/editor/styles.css +6 -3
- package/src/env.d.ts +11 -1
- package/src/extensions.ts +160 -0
- package/src/manifest/collections.ts +6 -5
- package/src/manifest/menu.ts +12 -10
- package/src/manifest/navigation.ts +9 -8
- package/src/manifest/references.ts +8 -7
- package/src/manifest/seo.ts +4 -3
- package/src/manifest/types.ts +1 -0
- package/src/preview.ts +22 -2
- package/src/routes/local-api.ts +5 -3
- package/src/routes/local-documents.ts +20 -16
- package/src/routes/local-media.ts +21 -16
- package/src/routes/local-menu.ts +9 -7
- package/src/routes/local-post.ts +18 -12
- package/src/routes/media-files.ts +10 -8
- package/src/routes/rigel-page.astro +2 -1
- package/src/schema/store.ts +22 -20
- package/src/schema/types.ts +1 -0
- package/src/schema/validate.ts +73 -69
- package/src/slugs.ts +11 -10
- package/src/vite/manifest-plugin.ts +33 -1
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fields.remove": "Remove",
|
|
3
|
+
"fields.addItem": "Add item",
|
|
4
|
+
"fields.colorPicker": "{label} picker",
|
|
5
|
+
"fields.colorHexValue": "{label} hex value",
|
|
6
|
+
"fields.hideValue": "Hide {label}",
|
|
7
|
+
"fields.showValue": "Show {label}",
|
|
8
|
+
"fields.choose": "Choose…",
|
|
9
|
+
"fields.itemNumber": "Item {number}",
|
|
10
|
+
"fields.moveItemUp": "Move {label} item {number} up",
|
|
11
|
+
"fields.moveItemDown": "Move {label} item {number} down",
|
|
12
|
+
"fields.duplicateItem": "Duplicate {label} item {number}",
|
|
13
|
+
"fields.removeItem": "Remove {label} item {number}",
|
|
14
|
+
"fields.itemLabel": "{label} item {number}",
|
|
15
|
+
"fields.moveUp": "Move up",
|
|
16
|
+
"fields.moveDown": "Move down",
|
|
17
|
+
"fields.duplicate": "Duplicate",
|
|
18
|
+
"fields.selectLabel": "Select {label}…",
|
|
19
|
+
"fields.unavailableReference": "Unavailable ({id})",
|
|
20
|
+
"fields.noEntries": "No entries have been declared yet.",
|
|
21
|
+
"fields.properties": "Properties",
|
|
22
|
+
"fields.content": "Content",
|
|
23
|
+
"fields.seo": "SEO",
|
|
24
|
+
"fields.selectOptions": "Select options…",
|
|
25
|
+
"fields.noOptions": "No options available.",
|
|
26
|
+
"fields.demoContentNotice": "Field examples for testing. These values are separate from your website settings.",
|
|
27
|
+
"fields.sharedContentNotice": "Shared content. Changes appear on every page that references it.",
|
|
28
|
+
"fields.pageProperties": "Page properties",
|
|
29
|
+
"fields.urlSlug": "URL slug",
|
|
30
|
+
"fields.documentSlugHint": "Changes the URL, not the document identifier or filename. The website route must use the slug metadata.",
|
|
31
|
+
"fields.newPageNotice": "New page. Save writes the JSON file; the route appears once the site has the file.",
|
|
32
|
+
"fields.structure": "Structure",
|
|
33
|
+
"fields.moveSectionUp": "Move {label} up",
|
|
34
|
+
"fields.moveSectionDown": "Move {label} down",
|
|
35
|
+
"fields.duplicateSection": "Duplicate {label}",
|
|
36
|
+
"fields.removeSection": "Remove {label}",
|
|
37
|
+
"fields.sectionTypeToAdd": "Section type to add",
|
|
38
|
+
"fields.chooseSection": "Choose a section…",
|
|
39
|
+
"fields.addSection": "Add section",
|
|
40
|
+
"fields.pendingSections.one": "{count} new section will appear after Save.",
|
|
41
|
+
"fields.pendingSections.other": "{count} new sections will appear after Save.",
|
|
42
|
+
"fields.sectionProperties": "Section properties",
|
|
43
|
+
"fields.editReference": "Edit {label} ↗",
|
|
44
|
+
"fields.articleDetails": "Article details",
|
|
45
|
+
"fields.collectionSlugHint": "Changes the URL, not the content filename. The website route must use the slug metadata.",
|
|
46
|
+
"fields.commaSeparatedLabel": "{label} (comma-separated)",
|
|
47
|
+
"fields.editArticleBody": "Edit article body in preview",
|
|
48
|
+
"fields.loadingPreview": "Loading preview…",
|
|
49
|
+
"fields.editArticleBodyHint": "Click the article body in the preview to edit. Content changes require Save.",
|
|
50
|
+
"fields.seoNotSet": "Not set",
|
|
51
|
+
"fields.seoTooShort": "Too short",
|
|
52
|
+
"fields.seoTooLong": "Too long",
|
|
53
|
+
"fields.seoRecommendedLength": "Recommended length",
|
|
54
|
+
"fields.seoTitleLength": "SEO title length",
|
|
55
|
+
"fields.seoDescriptionLength": "SEO description length",
|
|
56
|
+
"fields.seoLengthDetails": "{count} characters. {status}. Recommended {min} to {max}.",
|
|
57
|
+
"fields.seoRecommendedCharacters": "Recommended: {min}–{max} characters.",
|
|
58
|
+
"fields.seoRecommendedImageSize": "Recommended size: 1200 × 628 px.",
|
|
59
|
+
"fields.section": "Section",
|
|
60
|
+
"fields.menuItemNotFound": "Menu item not found",
|
|
61
|
+
"fields.menuMoveIntoSelf": "An item cannot be moved into itself or its children",
|
|
62
|
+
"fields.menuDropTargetMissing": "Drop target no longer exists",
|
|
63
|
+
"fields.menuMoveDepthLimit": "This move exceeds the {maxDepth}-level limit",
|
|
64
|
+
"fields.menuItemMoved": "Menu item moved",
|
|
65
|
+
"fields.menuCannotMoveItem": "Cannot move item",
|
|
66
|
+
"fields.menuMaximumLevels": "Maximum {maxDepth} levels",
|
|
67
|
+
"fields.menuNewItem": "New item",
|
|
68
|
+
"fields.menuItemAdded": "Menu item added",
|
|
69
|
+
"fields.menuMoveCancelled": "Move cancelled",
|
|
70
|
+
"fields.menuItems": "Menu items",
|
|
71
|
+
"fields.menuPath": "Menu path",
|
|
72
|
+
"fields.menuUntitledItem": "Untitled item",
|
|
73
|
+
"fields.menuItemDetails": "{label} details",
|
|
74
|
+
"fields.menuItemActions": "Actions for {label}",
|
|
75
|
+
"fields.menuUp": "Up",
|
|
76
|
+
"fields.menuDown": "Down",
|
|
77
|
+
"fields.menuIndent": "Indent",
|
|
78
|
+
"fields.menuOutdent": "Outdent",
|
|
79
|
+
"fields.menuLabel": "Label",
|
|
80
|
+
"fields.menuLabelFor": "Label for {id}",
|
|
81
|
+
"fields.menuUrl": "URL",
|
|
82
|
+
"fields.menuUrlFor": "URL for {id}",
|
|
83
|
+
"fields.menuUrlPlaceholder": "/about or https://example.com",
|
|
84
|
+
"fields.menuOpenInNewTab": "Open in new tab",
|
|
85
|
+
"fields.menuGroupItems": "Items",
|
|
86
|
+
"fields.menuDragItem": "Drag {label}",
|
|
87
|
+
"fields.menuOpenItem": "Open {label}",
|
|
88
|
+
"fields.menuEmptyGroup": "No items in this group.",
|
|
89
|
+
"fields.menuEmpty": "No menu items yet.",
|
|
90
|
+
"fields.menuAddChild": "Add child",
|
|
91
|
+
"fields.menuMaximumLevelsHint": "Maximum {maxDepth} levels.",
|
|
92
|
+
"fields.menuRemoveTitle": "Remove “{label}”?",
|
|
93
|
+
"fields.menuRemoveDescription": "This removes the item and all its children from the draft. Press Save to persist the change.",
|
|
94
|
+
"fields.menuItemRemoved": "Menu item removed",
|
|
95
|
+
"fields.calendarHeading": "{month} {year}",
|
|
96
|
+
"fields.chooseDate": "Choose date…",
|
|
97
|
+
"fields.calendarFor": "{label} calendar",
|
|
98
|
+
"fields.previousMonth": "Previous month",
|
|
99
|
+
"fields.calendarMonth": "Calendar month",
|
|
100
|
+
"fields.calendarYear": "Calendar year",
|
|
101
|
+
"fields.nextMonth": "Next month",
|
|
102
|
+
"fields.today": "Today",
|
|
103
|
+
"fields.clear": "Clear",
|
|
104
|
+
"fields.month.january": "January",
|
|
105
|
+
"fields.month.february": "February",
|
|
106
|
+
"fields.month.march": "March",
|
|
107
|
+
"fields.month.april": "April",
|
|
108
|
+
"fields.month.may": "May",
|
|
109
|
+
"fields.month.june": "June",
|
|
110
|
+
"fields.month.july": "July",
|
|
111
|
+
"fields.month.august": "August",
|
|
112
|
+
"fields.month.september": "September",
|
|
113
|
+
"fields.month.october": "October",
|
|
114
|
+
"fields.month.november": "November",
|
|
115
|
+
"fields.month.december": "December",
|
|
116
|
+
"fields.weekday.sunday": "Sunday",
|
|
117
|
+
"fields.weekday.monday": "Monday",
|
|
118
|
+
"fields.weekday.tuesday": "Tuesday",
|
|
119
|
+
"fields.weekday.wednesday": "Wednesday",
|
|
120
|
+
"fields.weekday.thursday": "Thursday",
|
|
121
|
+
"fields.weekday.friday": "Friday",
|
|
122
|
+
"fields.weekday.saturday": "Saturday",
|
|
123
|
+
"fields.weekdayShort.sunday": "Su",
|
|
124
|
+
"fields.weekdayShort.monday": "Mo",
|
|
125
|
+
"fields.weekdayShort.tuesday": "Tu",
|
|
126
|
+
"fields.weekdayShort.wednesday": "We",
|
|
127
|
+
"fields.weekdayShort.thursday": "Th",
|
|
128
|
+
"fields.weekdayShort.friday": "Fr",
|
|
129
|
+
"fields.weekdayShort.saturday": "Sa"
|
|
130
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"local.documentTooLarge": "Document exceeds the 1 MiB limit",
|
|
3
|
+
"local.dataRequired": "Body requires a data object",
|
|
4
|
+
"local.unknownDocument": "Unknown document",
|
|
5
|
+
"local.readDocumentFailed": "Could not read document",
|
|
6
|
+
"local.documentDeveloperOnly": "Documents are created and removed by the site developer",
|
|
7
|
+
"local.unknownDocumentTarget": "Unknown document type or slug",
|
|
8
|
+
"local.saveDocumentFailed": "Could not save document",
|
|
9
|
+
"local.unknownCollectionSlug": "Unknown collection/slug",
|
|
10
|
+
"local.invalidArticle": "Invalid article",
|
|
11
|
+
"local.postExists": "A post with that slug already exists. Reload the collection and create the draft again.",
|
|
12
|
+
"local.postNotFound": "No such post",
|
|
13
|
+
"local.invalidMenuSlug": "Invalid menu slug",
|
|
14
|
+
"local.menuDeveloperOnly": "Menus are declared by the site developer. Only existing menus can be edited.",
|
|
15
|
+
"local.menuSlugMismatch": "Menu slug must match the request slug",
|
|
16
|
+
"local.menuNotFound": "No such menu",
|
|
17
|
+
"local.notFound": "Not found",
|
|
18
|
+
"local.unsupportedMedia": "Unsupported or mismatched media type/filename",
|
|
19
|
+
"local.mediaTooLarge": "Media exceeds {limit} MB",
|
|
20
|
+
"local.emptyMedia": "Empty media body",
|
|
21
|
+
"local.readImageFailed": "Could not read image body",
|
|
22
|
+
"local.emptyImage": "Empty image body",
|
|
23
|
+
"local.mediaBytesMismatch": "Media type does not match its bytes",
|
|
24
|
+
"local.saveImageFailed": "Could not save image",
|
|
25
|
+
"local.saveMetadataFailed": "Could not save metadata",
|
|
26
|
+
"local.mediaUrlRequired": "A media URL is required",
|
|
27
|
+
"local.fileNotFound": "File not found",
|
|
28
|
+
"local.deleteFileFailed": "Could not delete file. Try again.",
|
|
29
|
+
"local.missingSlug": "Missing slug",
|
|
30
|
+
"local.copyNotFound": "No copy module for {slug}",
|
|
31
|
+
"local.copyValuesNotFound": "Could not locate values block in {slug}.ts",
|
|
32
|
+
"local.unknownDocumentType": "Unknown document type {type}",
|
|
33
|
+
"local.creatingDisabled": "Creating entries is disabled for this document type",
|
|
34
|
+
"local.invalidDocumentSlug": "Invalid document slug",
|
|
35
|
+
"local.documentObjectRequired": "Document must be an object",
|
|
36
|
+
"local.documentExists": "A document with that slug already exists",
|
|
37
|
+
"local.documentNotFound": "No such document",
|
|
38
|
+
"local.writeDocumentFailed": "Could not write document",
|
|
39
|
+
"local.invalidMetadataBody": "Invalid request body",
|
|
40
|
+
"local.unknownMetadataField": "Unknown metadata field",
|
|
41
|
+
"local.unknownAsset": "Unknown asset",
|
|
42
|
+
"local.invalidDisplayName": "Invalid display name",
|
|
43
|
+
"local.metadataTitleString": "Title must be a string",
|
|
44
|
+
"local.metadataDescriptionString": "Description must be a string",
|
|
45
|
+
"local.metadataAltString": "Alt text must be a string",
|
|
46
|
+
"local.metadataAltImagesOnly": "Alt text is only available for images",
|
|
47
|
+
"local.mediaDirectoryUnavailable": "Media directory unavailable",
|
|
48
|
+
"local.menuStorageUnavailable": "Could not access menu: invalid stored data or unsafe/unavailable storage"
|
|
49
|
+
}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
{
|
|
2
|
+
"media.insertMedia": "Insert media",
|
|
3
|
+
"media.image": "Image",
|
|
4
|
+
"media.video": "Video",
|
|
5
|
+
"media.insertImage": "Insert image",
|
|
6
|
+
"media.metadataSaveFailedStatus": "Metadata save failed ({status})",
|
|
7
|
+
"media.metadataSaved": "Metadata saved.",
|
|
8
|
+
"media.metadataSaveFailed": "Metadata save failed",
|
|
9
|
+
"media.deleteFailed": "Could not delete file ({status}). Try again.",
|
|
10
|
+
"media.fileDeleted": "File deleted.",
|
|
11
|
+
"media.listingUnavailable": "Media listing unavailable. Start the local dev server or rebuild the site.",
|
|
12
|
+
"media.enterVideoUrl": "Enter a video URL starting with https:// or /",
|
|
13
|
+
"media.enterImageUrl": "Enter an image URL starting with https:// or /",
|
|
14
|
+
"media.chooseVideoUrl": "Choose an MP4, WebM or MOV video URL.",
|
|
15
|
+
"media.chooseImageUrl": "Choose an image URL, not a document or other media file.",
|
|
16
|
+
"media.searchFailed": "Search failed",
|
|
17
|
+
"media.pasteVideoUrl": "Paste a {provider} video URL.",
|
|
18
|
+
"media.unsafeMediaUrl": "Unsafe media URL",
|
|
19
|
+
"media.uploadedMetadataFailed": "File uploaded, but metadata could not be saved ({status}). Retry to finish the import.",
|
|
20
|
+
"media.availableInLibrary": "Media available in the repository library.",
|
|
21
|
+
"media.photoImportFailed": "Photo import failed",
|
|
22
|
+
"media.chooseSupportedFile": "Choose a supported file up to {limit} MB with a safe filename.",
|
|
23
|
+
"media.chooseSupportedVideo": "Choose a supported video up to {limit} MB with a safe filename.",
|
|
24
|
+
"media.chooseSupportedImage": "Choose a supported image up to {limit} MB with a safe filename.",
|
|
25
|
+
"media.heading": "Media",
|
|
26
|
+
"media.upload": "Upload",
|
|
27
|
+
"media.noImage": "No image",
|
|
28
|
+
"media.choose": "Choose…",
|
|
29
|
+
"media.removeImage": "Remove image",
|
|
30
|
+
"media.repositoryWritable": "Repository media: public/{folder}. Uploads write files immediately on confirmation; content still requires Save.",
|
|
31
|
+
"media.repositorySnapshot": "Repository media: public/{folder}. Build-time snapshot. Uploads and stock imports require the local dev server; GitHub uploads are not connected.",
|
|
32
|
+
"media.view": "Media view",
|
|
33
|
+
"media.gridView": "Grid view",
|
|
34
|
+
"media.listView": "List view",
|
|
35
|
+
"media.type": "Media type",
|
|
36
|
+
"media.videoFormat": "Video format",
|
|
37
|
+
"media.imageFormat": "Image format",
|
|
38
|
+
"media.allItems": "All media items",
|
|
39
|
+
"media.allVideos": "All videos",
|
|
40
|
+
"media.allImages": "All images",
|
|
41
|
+
"media.category.Images": "Images",
|
|
42
|
+
"media.category.Audio": "Audio",
|
|
43
|
+
"media.category.Video": "Video",
|
|
44
|
+
"media.category.Documents": "Documents",
|
|
45
|
+
"media.category.Spreadsheets": "Spreadsheets",
|
|
46
|
+
"media.category.Archives": "Archives",
|
|
47
|
+
"media.category.Other": "Other",
|
|
48
|
+
"media.modifiedMonth": "Modified month",
|
|
49
|
+
"media.modifiedMonthHint": "Filesystem modified month (UTC), not upload date",
|
|
50
|
+
"media.allModifiedDates": "All modified dates",
|
|
51
|
+
"media.refresh": "Refresh",
|
|
52
|
+
"media.resetFilters": "Reset filters",
|
|
53
|
+
"media.searchMedia": "Search media",
|
|
54
|
+
"media.searchMediaPlaceholder": "Search media…",
|
|
55
|
+
"media.fileExtension": "FILE",
|
|
56
|
+
"media.library": "Media library",
|
|
57
|
+
"media.file": "File",
|
|
58
|
+
"media.fileType": "Type",
|
|
59
|
+
"media.size": "Size",
|
|
60
|
+
"media.modifiedUtc": "Modified (UTC)",
|
|
61
|
+
"media.loading": "Loading media…",
|
|
62
|
+
"media.noMatches": "No media match these filters.",
|
|
63
|
+
"media.emptyFolder": "No media in this folder yet.",
|
|
64
|
+
"media.editVideo": "Edit video",
|
|
65
|
+
"media.addVideoLink": "Add video link",
|
|
66
|
+
"media.uploadMedia": "Upload media",
|
|
67
|
+
"media.chooseVideo": "Choose video",
|
|
68
|
+
"media.chooseImage": "Choose image",
|
|
69
|
+
"media.editProviderVideo": "Edit {provider} video",
|
|
70
|
+
"media.addProviderVideo": "Add {provider} video",
|
|
71
|
+
"media.previewMedia": "Preview media",
|
|
72
|
+
"media.close": "Close",
|
|
73
|
+
"media.pdfPreview": "PDF preview",
|
|
74
|
+
"media.textPreview": "Text preview",
|
|
75
|
+
"media.selectedImagePreview": "Selected image preview",
|
|
76
|
+
"media.displayName": "Display name",
|
|
77
|
+
"media.mediaDisplayName": "Media display name",
|
|
78
|
+
"media.decorativeAlt": "Alt text (leave empty if decorative)",
|
|
79
|
+
"media.imageAlt": "Image alt text",
|
|
80
|
+
"media.alt": "Alt text",
|
|
81
|
+
"media.mediaAlt": "Media alt text",
|
|
82
|
+
"media.title": "Title",
|
|
83
|
+
"media.imageTitle": "Image title",
|
|
84
|
+
"media.mediaTitle": "Media title",
|
|
85
|
+
"media.description": "Description",
|
|
86
|
+
"media.imageDescription": "Image description",
|
|
87
|
+
"media.mediaDescription": "Media description",
|
|
88
|
+
"media.author": "Author: {author}",
|
|
89
|
+
"media.localUser": "Local user",
|
|
90
|
+
"media.videoUrl": "Video URL",
|
|
91
|
+
"media.imageUrl": "Image URL",
|
|
92
|
+
"media.captionOptional": "Caption (optional)",
|
|
93
|
+
"media.descriptiveAlt": "Alt text (describe the image; leave empty if decorative)",
|
|
94
|
+
"media.videoCaption": "Video caption",
|
|
95
|
+
"media.muted": "Muted",
|
|
96
|
+
"media.showControls": "Show controls",
|
|
97
|
+
"media.confirmUpload": "Confirmation uploads this file into the repository media folder. Content still requires Save.",
|
|
98
|
+
"media.confirmDownload": "Confirmation downloads this file into the repository media folder. Content still requires Save.",
|
|
99
|
+
"media.downloadFile": "Download file",
|
|
100
|
+
"media.deleteFile": "Delete file",
|
|
101
|
+
"media.filePath": "Media file path",
|
|
102
|
+
"media.cancel": "Cancel",
|
|
103
|
+
"media.saving": "Saving…",
|
|
104
|
+
"media.save": "Save",
|
|
105
|
+
"media.back": "Back",
|
|
106
|
+
"media.done": "Done",
|
|
107
|
+
"media.uploadingVideo": "Uploading video…",
|
|
108
|
+
"media.importingPhoto": "Importing photo…",
|
|
109
|
+
"media.useVideo": "Use video",
|
|
110
|
+
"media.uploadFile": "Upload file",
|
|
111
|
+
"media.importImage": "Import image",
|
|
112
|
+
"media.videoSources": "Video sources",
|
|
113
|
+
"media.imageSources": "Image sources",
|
|
114
|
+
"media.source.library": "library",
|
|
115
|
+
"media.source.upload": "upload",
|
|
116
|
+
"media.source.url": "url",
|
|
117
|
+
"media.unsplashUploadsHint": "Unsplash API photos require hotlinking and are available only when inserting images into content, not as repository uploads.",
|
|
118
|
+
"media.providerLinkHint": "Paste a {provider} link. Privacy-enhanced mode is enabled by default.",
|
|
119
|
+
"media.accessibleTitle": "Title for accessibility (optional)",
|
|
120
|
+
"media.privacyEnhanced": "Privacy-enhanced (no cookies until play)",
|
|
121
|
+
"media.updateVideo": "Update video",
|
|
122
|
+
"media.insert": "Insert",
|
|
123
|
+
"media.localFileHint": "Choose a local file, then preview and confirm. Nothing is uploaded until confirmation.",
|
|
124
|
+
"media.uploadVideoLimit": "Upload video (MP4, WebM, MOV) · {limit} MB maximum",
|
|
125
|
+
"media.uploadMediaLimit": "Upload media (images, audio, video, documents, spreadsheets, archives) · {limit} MB maximum",
|
|
126
|
+
"media.uploadImageLimit": "Upload image (JPEG, PNG, WebP, GIF, AVIF) · {limit} MB maximum",
|
|
127
|
+
"media.readOnlyUploads": "Local uploads require the local dev server. This library is read-only.",
|
|
128
|
+
"media.videoUrlPlaceholder": "https://… or /media/video.mp4",
|
|
129
|
+
"media.imageUrlPlaceholder": "https://… or /images/photo.jpg",
|
|
130
|
+
"media.useUrl": "Use this URL",
|
|
131
|
+
"media.picsumHint": "Placeholder photos from Lorem Picsum (seed, not semantic search).",
|
|
132
|
+
"media.unsplashHint": "Unsplash photos stay linked to Unsplash; selection records a download.",
|
|
133
|
+
"media.stockImportHint": "Import selected photos into the media folder (local dev only).",
|
|
134
|
+
"media.searchPhotos": "Search photos",
|
|
135
|
+
"media.searchPhotosPlaceholder": "Search photos…",
|
|
136
|
+
"media.search": "Search",
|
|
137
|
+
"media.noPhotos": "No photos found. Try another search.",
|
|
138
|
+
"media.deleteTitle": "Delete “{name}”?",
|
|
139
|
+
"media.deleteDescription": "This permanently deletes the file and its metadata. This cannot be undone. Any pages using this file will have broken media or links.",
|
|
140
|
+
"media.pexelsKeyPlaceholder": "e.g. Ab3dE6fG9hJ2…",
|
|
141
|
+
"media.pixabayKeyPlaceholder": "e.g. 12345678-abcdef012345…",
|
|
142
|
+
"media.unsplashKeyPlaceholder": "e.g. AbCdEf12_GhIjKl34…",
|
|
143
|
+
"media.providerStatus": "{provider} {status}",
|
|
144
|
+
"media.pixabayKeyRequired": "Add a Pixabay API key in Settings → Media",
|
|
145
|
+
"media.unsplashKeyRequired": "Add an Unsplash API key in Settings",
|
|
146
|
+
"media.pexelsKeyRequired": "Add a Pexels API key in Settings → Media",
|
|
147
|
+
"media.unknownStockProvider": "Unknown stock photo provider",
|
|
148
|
+
"media.unexpectedStockUrl": "Unexpected stock photo URL",
|
|
149
|
+
"media.unsplashPhotoMissing": "Unsplash photo or API key is missing",
|
|
150
|
+
"media.unsplashTrackingFailed": "Unsplash download tracking failed ({status})",
|
|
151
|
+
"media.unsafeImageUrl": "Unsafe image URL",
|
|
152
|
+
"media.remoteRequiresHttps": "Remote imports require HTTPS",
|
|
153
|
+
"media.unsplashHotlinkRequired": "Unsplash API images must stay hotlinked. Use Unsplash in the content image picker.",
|
|
154
|
+
"media.imageDownloadFailed": "Image download failed. The source must allow browser downloads (CORS); alternatively upload the image file.",
|
|
155
|
+
"media.photoDownloadFailed": "Photo download failed ({status})",
|
|
156
|
+
"media.photoLimitExceeded": "Photo exceeds the {limit} MB import limit",
|
|
157
|
+
"media.chooseImageFormat": "Choose a JPEG, PNG or WebP image.",
|
|
158
|
+
"media.emptyDownload": "Empty image download",
|
|
159
|
+
"media.uploadFailed": "Upload failed ({status}): {body}",
|
|
160
|
+
"media.invalidUploadedUrl": "Invalid uploaded asset URL",
|
|
161
|
+
"media.localImportRequired": "Photo import requires the local dev server",
|
|
162
|
+
"media.photoImportFailedStatus": "Photo import failed ({status})",
|
|
163
|
+
"media.invalidImportedUrl": "Invalid imported photo URL",
|
|
164
|
+
"media.providerVideo": "{provider} Video",
|
|
165
|
+
"media.embedCaption": "{provider} · {title}"
|
|
166
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
{
|
|
2
|
+
"richtext.bold": "Bold",
|
|
3
|
+
"richtext.italic": "Italic",
|
|
4
|
+
"richtext.inlineCode": "Inline code",
|
|
5
|
+
"richtext.strikethrough": "Strikethrough",
|
|
6
|
+
"richtext.underline": "Underline",
|
|
7
|
+
"richtext.highlight": "Highlight",
|
|
8
|
+
"richtext.subscript": "Subscript",
|
|
9
|
+
"richtext.superscript": "Superscript",
|
|
10
|
+
"richtext.video": "Video",
|
|
11
|
+
"richtext.youtube": "YouTube",
|
|
12
|
+
"richtext.vimeo": "Vimeo",
|
|
13
|
+
"richtext.body": "Body",
|
|
14
|
+
"richtext.loadArticleError": "Unable to load article",
|
|
15
|
+
"richtext.safeUrlError": "Enter a safe http, https, mailto or relative URL.",
|
|
16
|
+
"richtext.link": "Link",
|
|
17
|
+
"richtext.moreFormatting": "More formatting",
|
|
18
|
+
"richtext.tableControls": "Table controls",
|
|
19
|
+
"richtext.addRowBelow": "Add row below",
|
|
20
|
+
"richtext.addColumnRight": "Add column right",
|
|
21
|
+
"richtext.removeRow": "Remove row",
|
|
22
|
+
"richtext.removeColumn": "Remove column",
|
|
23
|
+
"richtext.headerRow": "Header row",
|
|
24
|
+
"richtext.imageEditing": "Image editing",
|
|
25
|
+
"richtext.bodyFormatting": "Body formatting",
|
|
26
|
+
"richtext.editAltText": "Edit alt text",
|
|
27
|
+
"richtext.editImageLink": "Edit image link",
|
|
28
|
+
"richtext.addImageLink": "Add image link",
|
|
29
|
+
"richtext.blockType": "Block type",
|
|
30
|
+
"richtext.replaceImage": "Replace image",
|
|
31
|
+
"richtext.insertMedia": "Insert media",
|
|
32
|
+
"richtext.table": "Table",
|
|
33
|
+
"richtext.bulletedList": "Bulleted list",
|
|
34
|
+
"richtext.numberedList": "Numbered list",
|
|
35
|
+
"richtext.undo": "Undo",
|
|
36
|
+
"richtext.redo": "Redo",
|
|
37
|
+
"richtext.addBlock": "Add block",
|
|
38
|
+
"richtext.moreActions": "More actions",
|
|
39
|
+
"richtext.viewAsMarkdown": "View as Markdown",
|
|
40
|
+
"richtext.editLink": "Edit link",
|
|
41
|
+
"richtext.linkUrl": "Link URL",
|
|
42
|
+
"richtext.applyLink": "Apply link",
|
|
43
|
+
"richtext.removeLink": "Remove link",
|
|
44
|
+
"richtext.closeLink": "Close link",
|
|
45
|
+
"richtext.editImageAltText": "Edit image alt text",
|
|
46
|
+
"richtext.decorativeAltText": "Alt text (leave empty if decorative)",
|
|
47
|
+
"richtext.imageAltText": "Image alt text",
|
|
48
|
+
"richtext.applyAltText": "Apply alt text",
|
|
49
|
+
"richtext.closeAltText": "Close alt text",
|
|
50
|
+
"richtext.selectedTextFormatting": "Selected text formatting",
|
|
51
|
+
"richtext.closeMarkdownView": "Close Markdown view",
|
|
52
|
+
"richtext.bodyAsMarkdown": "Body as Markdown",
|
|
53
|
+
"richtext.articleBlocks": "Article blocks",
|
|
54
|
+
"richtext.insertParagraphHere": "Insert paragraph here",
|
|
55
|
+
"richtext.insertParagraph": "Insert paragraph",
|
|
56
|
+
"richtext.blockOptionsHandle": "Block options and drag handle",
|
|
57
|
+
"richtext.dragBlockHint": "Drag to reorder; click for block options",
|
|
58
|
+
"richtext.insertBlock": "Insert block",
|
|
59
|
+
"richtext.chooseBlock": "Choose a block",
|
|
60
|
+
"richtext.findBlock": "Find a block",
|
|
61
|
+
"richtext.findBlockPlaceholder": "Find a block…",
|
|
62
|
+
"richtext.noMatchingBlocks": "No matching blocks.",
|
|
63
|
+
"richtext.addTable": "Add table",
|
|
64
|
+
"richtext.blockOptions": "Block options",
|
|
65
|
+
"richtext.duplicateBlock": "Duplicate block",
|
|
66
|
+
"richtext.deleteBlock": "Delete block",
|
|
67
|
+
"richtext.moveUp": "Move up",
|
|
68
|
+
"richtext.moveDown": "Move down",
|
|
69
|
+
"richtext.convertBlockType": "Convert block type",
|
|
70
|
+
"richtext.code": "Code",
|
|
71
|
+
"richtext.bulletList": "Bullet list",
|
|
72
|
+
"richtext.quote": "Quote",
|
|
73
|
+
"richtext.unsupportedMarkdown": "This Markdown contains formatting the visual editor cannot safely preserve. Edit the original source below; nothing has been converted.",
|
|
74
|
+
"richtext.visual": "Visual",
|
|
75
|
+
"richtext.markdown": "Markdown",
|
|
76
|
+
"richtext.textStyle": "Text style",
|
|
77
|
+
"richtext.paragraph": "Paragraph",
|
|
78
|
+
"richtext.codeBlock": "Code block",
|
|
79
|
+
"richtext.textFormatting": "Text formatting",
|
|
80
|
+
"richtext.listsAndQuote": "Lists and quote",
|
|
81
|
+
"richtext.image": "Image",
|
|
82
|
+
"richtext.divider": "Divider",
|
|
83
|
+
"richtext.pageLoadError": "The page could not be loaded in the preview.",
|
|
84
|
+
"richtext.liveEditingUnavailable": "This page isn’t set up for live editing. Changes won’t appear in this preview.",
|
|
85
|
+
"richtext.previewUnavailable": "Preview unavailable",
|
|
86
|
+
"richtext.previewMode": "Preview mode",
|
|
87
|
+
"richtext.browse": "Browse",
|
|
88
|
+
"richtext.edit": "Edit",
|
|
89
|
+
"richtext.editPreviewHint": "Click a region to edit it. Scripts, forms and links stay disabled.",
|
|
90
|
+
"richtext.browsePreviewHint": "Scripts, forms and links are disabled in this preview.",
|
|
91
|
+
"richtext.previewOnWebsite": "Preview on website",
|
|
92
|
+
"richtext.togglePropertiesPanel": "Toggle properties panel",
|
|
93
|
+
"richtext.newPagePreviewHint": "New page — Save writes the file. The route renders once the site has it.",
|
|
94
|
+
"richtext.noDocumentPreview": "No preview URL is mapped to this document. Use the properties panel to edit.",
|
|
95
|
+
"richtext.websitePageEditor": "Website page editor",
|
|
96
|
+
"richtext.editText": "Edit text",
|
|
97
|
+
"richtext.propertiesPanelWidth": "Properties panel width",
|
|
98
|
+
"richtext.preparedPageLoadError": "The prepared page could not be loaded. Check its URL and framing headers.",
|
|
99
|
+
"richtext.previewTimeout": "The preview took too long to load. Check its URL and try again.",
|
|
100
|
+
"richtext.loadingPreview": "Loading preview…",
|
|
101
|
+
"richtext.preparedPageUnavailable": "The prepared page could not be loaded.",
|
|
102
|
+
"richtext.noPreparedAnchors": "This page has no prepared Rigel anchors.",
|
|
103
|
+
"richtext.websitePreview": "Website preview",
|
|
104
|
+
"richtext.liveDraftPreview": "Live website draft preview",
|
|
105
|
+
"richtext.preparedTemplateHint": "Prepared template · Scripts, navigation and forms disabled. Unanchored fields and lists are not previewed.",
|
|
106
|
+
"richtext.menuPreviewUnsupported": "Menu preview is not supported.",
|
|
107
|
+
"richtext.noContentPreview": "No prepared preview URL is mapped to this content.",
|
|
108
|
+
"richtext.previewFetchError": "Draft preview could not be fetched. Check the URL, HTTPS, CORS (Access-Control-Allow-Origin for this editor), redirects and the editor’s connect-src policy. Authentication cookies are not sent.",
|
|
109
|
+
"richtext.previewHtmlError": "Draft preview did not return HTML. Check the mapped route and Content-Type header.",
|
|
110
|
+
"richtext.heading": "Heading {level}",
|
|
111
|
+
"richtext.editingMode": "{label} editing mode",
|
|
112
|
+
"richtext.formatting": "{label} formatting",
|
|
113
|
+
"richtext.markdownSource": "{label} Markdown source",
|
|
114
|
+
"richtext.panelPixels": "{width} pixels",
|
|
115
|
+
"richtext.previewHttpError": "Draft preview returned HTTP {status}. Check the draft deployment and mapped route."
|
|
116
|
+
}
|