@rigel-cms/rigel 1.0.0 → 1.2.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 +8 -0
- package/docs/content-locales.md +53 -0
- package/docs/extensions.md +194 -0
- package/package.json +16 -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 +26 -2
- package/src/editor/App.svelte +149 -107
- 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 +182 -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 +182 -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 +182 -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 +182 -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 +182 -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 +182 -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 +182 -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 +182 -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 +182 -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 +5 -4
- 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 +19 -18
- 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 +15 -3
- package/src/env.d.ts +11 -1
- package/src/extensions.ts +160 -0
- package/src/index.ts +1 -1
- package/src/manifest/collections.ts +6 -5
- package/src/manifest/content-locales.ts +45 -0
- package/src/manifest/menu.ts +12 -10
- package/src/manifest/navigation.ts +13 -8
- package/src/manifest/references.ts +8 -7
- package/src/manifest/seo.ts +4 -3
- package/src/manifest/types.ts +4 -0
- package/src/preview.ts +36 -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 +2 -0
- package/src/schema/validate.ts +73 -69
- package/src/slugs.ts +11 -10
- package/src/vite/manifest-plugin.ts +38 -2
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
{
|
|
2
|
+
"media.insertMedia": "Insertar archivos multimedia",
|
|
3
|
+
"media.image": "Imagen",
|
|
4
|
+
"media.video": "Video",
|
|
5
|
+
"media.insertImage": "Insertar imagen",
|
|
6
|
+
"media.metadataSaveFailedStatus": "No se pudieron guardar los metadatos ({status})",
|
|
7
|
+
"media.metadataSaved": "Metadatos guardados.",
|
|
8
|
+
"media.metadataSaveFailed": "No se pudieron guardar los metadatos",
|
|
9
|
+
"media.deleteFailed": "No se pudo eliminar el archivo ({status}). Inténtalo de nuevo.",
|
|
10
|
+
"media.fileDeleted": "Archivo eliminado.",
|
|
11
|
+
"media.listingUnavailable": "La lista de archivos multimedia no está disponible. Inicia el servidor de desarrollo local o vuelve a compilar el sitio.",
|
|
12
|
+
"media.enterVideoUrl": "Introduce una URL de video que comience por https:// o /",
|
|
13
|
+
"media.enterImageUrl": "Introduce una URL de imagen que comience por https:// o /",
|
|
14
|
+
"media.chooseVideoUrl": "Elige una URL de video MP4, WebM o MOV.",
|
|
15
|
+
"media.chooseImageUrl": "Elige una URL de imagen, no de un documento u otro archivo multimedia.",
|
|
16
|
+
"media.searchFailed": "La búsqueda falló",
|
|
17
|
+
"media.pasteVideoUrl": "Pega una URL de video de {provider}.",
|
|
18
|
+
"media.unsafeMediaUrl": "URL de archivo multimedia no segura",
|
|
19
|
+
"media.uploadedMetadataFailed": "El archivo se subió, pero no se pudieron guardar los metadatos ({status}). Inténtalo de nuevo para completar la importación.",
|
|
20
|
+
"media.availableInLibrary": "Archivo multimedia disponible en la biblioteca del repositorio.",
|
|
21
|
+
"media.photoImportFailed": "No se pudo importar la foto",
|
|
22
|
+
"media.chooseSupportedFile": "Elige un archivo compatible de hasta {limit} MB con un nombre de archivo seguro.",
|
|
23
|
+
"media.chooseSupportedVideo": "Elige un video compatible de hasta {limit} MB con un nombre de archivo seguro.",
|
|
24
|
+
"media.chooseSupportedImage": "Elige una imagen compatible de hasta {limit} MB con un nombre de archivo seguro.",
|
|
25
|
+
"media.heading": "Archivos multimedia",
|
|
26
|
+
"media.upload": "Subir",
|
|
27
|
+
"media.noImage": "Sin imagen",
|
|
28
|
+
"media.choose": "Elegir…",
|
|
29
|
+
"media.removeImage": "Quitar imagen",
|
|
30
|
+
"media.repositoryWritable": "Archivos multimedia del repositorio: public/{folder}. Al confirmar una subida, los archivos se escriben de inmediato; el contenido aún requiere Guardar.",
|
|
31
|
+
"media.repositorySnapshot": "Archivos multimedia del repositorio: public/{folder}. Instantánea generada durante la compilación. Las subidas y las importaciones de fotos de bancos de imágenes requieren el servidor de desarrollo local; las subidas a GitHub no están conectadas.",
|
|
32
|
+
"media.view": "Vista de archivos multimedia",
|
|
33
|
+
"media.gridView": "Vista de cuadrícula",
|
|
34
|
+
"media.listView": "Vista de lista",
|
|
35
|
+
"media.type": "Tipo de archivo multimedia",
|
|
36
|
+
"media.videoFormat": "Formato de video",
|
|
37
|
+
"media.imageFormat": "Formato de imagen",
|
|
38
|
+
"media.allItems": "Todos los archivos multimedia",
|
|
39
|
+
"media.allVideos": "Todos los videos",
|
|
40
|
+
"media.allImages": "Todas las imágenes",
|
|
41
|
+
"media.category.Images": "Imágenes",
|
|
42
|
+
"media.category.Audio": "Audio",
|
|
43
|
+
"media.category.Video": "Video",
|
|
44
|
+
"media.category.Documents": "Documentos",
|
|
45
|
+
"media.category.Spreadsheets": "Hojas de cálculo",
|
|
46
|
+
"media.category.Archives": "Archivos comprimidos",
|
|
47
|
+
"media.category.Other": "Otros",
|
|
48
|
+
"media.modifiedMonth": "Mes de modificación",
|
|
49
|
+
"media.modifiedMonthHint": "Mes de modificación en el sistema de archivos (UTC), no la fecha de subida",
|
|
50
|
+
"media.allModifiedDates": "Todas las fechas de modificación",
|
|
51
|
+
"media.refresh": "Actualizar",
|
|
52
|
+
"media.resetFilters": "Restablecer filtros",
|
|
53
|
+
"media.searchMedia": "Buscar archivos multimedia",
|
|
54
|
+
"media.searchMediaPlaceholder": "Buscar archivos multimedia…",
|
|
55
|
+
"media.fileExtension": "ARCHIVO",
|
|
56
|
+
"media.library": "Biblioteca de archivos multimedia",
|
|
57
|
+
"media.file": "Archivo",
|
|
58
|
+
"media.fileType": "Tipo",
|
|
59
|
+
"media.size": "Tamaño",
|
|
60
|
+
"media.modifiedUtc": "Modificado (UTC)",
|
|
61
|
+
"media.loading": "Cargando archivos multimedia…",
|
|
62
|
+
"media.noMatches": "Ningún archivo multimedia coincide con estos filtros.",
|
|
63
|
+
"media.emptyFolder": "Aún no hay archivos multimedia en esta carpeta.",
|
|
64
|
+
"media.editVideo": "Editar video",
|
|
65
|
+
"media.addVideoLink": "Añadir enlace de video",
|
|
66
|
+
"media.uploadMedia": "Subir archivos multimedia",
|
|
67
|
+
"media.chooseVideo": "Elegir video",
|
|
68
|
+
"media.chooseImage": "Elegir imagen",
|
|
69
|
+
"media.editProviderVideo": "Editar video de {provider}",
|
|
70
|
+
"media.addProviderVideo": "Añadir video de {provider}",
|
|
71
|
+
"media.previewMedia": "Vista previa de archivos multimedia",
|
|
72
|
+
"media.close": "Cerrar",
|
|
73
|
+
"media.pdfPreview": "Vista previa del PDF",
|
|
74
|
+
"media.textPreview": "Vista previa del texto",
|
|
75
|
+
"media.selectedImagePreview": "Vista previa de la imagen seleccionada",
|
|
76
|
+
"media.displayName": "Nombre visible",
|
|
77
|
+
"media.mediaDisplayName": "Nombre visible del archivo multimedia",
|
|
78
|
+
"media.decorativeAlt": "Texto alternativo (dejar vacío si es decorativa)",
|
|
79
|
+
"media.imageAlt": "Texto alternativo de la imagen",
|
|
80
|
+
"media.alt": "Texto alternativo",
|
|
81
|
+
"media.mediaAlt": "Texto alternativo del archivo multimedia",
|
|
82
|
+
"media.title": "Título",
|
|
83
|
+
"media.imageTitle": "Título de la imagen",
|
|
84
|
+
"media.mediaTitle": "Título del archivo multimedia",
|
|
85
|
+
"media.description": "Descripción",
|
|
86
|
+
"media.imageDescription": "Descripción de la imagen",
|
|
87
|
+
"media.mediaDescription": "Descripción del archivo multimedia",
|
|
88
|
+
"media.author": "Autor: {author}",
|
|
89
|
+
"media.localUser": "Usuario local",
|
|
90
|
+
"media.videoUrl": "URL del video",
|
|
91
|
+
"media.imageUrl": "URL de la imagen",
|
|
92
|
+
"media.captionOptional": "Leyenda (opcional)",
|
|
93
|
+
"media.descriptiveAlt": "Texto alternativo (describe la imagen; dejar vacío si es decorativa)",
|
|
94
|
+
"media.videoCaption": "Leyenda del video",
|
|
95
|
+
"media.muted": "Silenciado",
|
|
96
|
+
"media.showControls": "Mostrar controles",
|
|
97
|
+
"media.confirmUpload": "Al confirmar, este archivo se sube a la carpeta de archivos multimedia del repositorio. El contenido aún requiere Guardar.",
|
|
98
|
+
"media.confirmDownload": "Al confirmar, este archivo se descarga en la carpeta de archivos multimedia del repositorio. El contenido aún requiere Guardar.",
|
|
99
|
+
"media.downloadFile": "Descargar archivo",
|
|
100
|
+
"media.deleteFile": "Eliminar archivo",
|
|
101
|
+
"media.filePath": "Ruta del archivo multimedia",
|
|
102
|
+
"media.cancel": "Cancelar",
|
|
103
|
+
"media.saving": "Guardando…",
|
|
104
|
+
"media.save": "Guardar",
|
|
105
|
+
"media.back": "Volver",
|
|
106
|
+
"media.done": "Listo",
|
|
107
|
+
"media.uploadingVideo": "Subiendo video…",
|
|
108
|
+
"media.importingPhoto": "Importando foto…",
|
|
109
|
+
"media.useVideo": "Usar video",
|
|
110
|
+
"media.uploadFile": "Subir archivo",
|
|
111
|
+
"media.importImage": "Importar imagen",
|
|
112
|
+
"media.videoSources": "Fuentes de video",
|
|
113
|
+
"media.imageSources": "Fuentes de imágenes",
|
|
114
|
+
"media.source.library": "biblioteca",
|
|
115
|
+
"media.source.upload": "subir",
|
|
116
|
+
"media.source.url": "url",
|
|
117
|
+
"media.unsplashUploadsHint": "Las fotos de la API de Unsplash deben enlazarse directamente a su origen y solo están disponibles al insertar imágenes en el contenido, no para subirlas al repositorio.",
|
|
118
|
+
"media.providerLinkHint": "Pega un enlace de {provider}. El modo de privacidad mejorada está activado de forma predeterminada.",
|
|
119
|
+
"media.accessibleTitle": "Título para accesibilidad (opcional)",
|
|
120
|
+
"media.privacyEnhanced": "Privacidad mejorada (sin cookies hasta la reproducción)",
|
|
121
|
+
"media.updateVideo": "Actualizar video",
|
|
122
|
+
"media.insert": "Insertar",
|
|
123
|
+
"media.localFileHint": "Elige un archivo local, revisa la vista previa y confirma. No se sube nada hasta la confirmación.",
|
|
124
|
+
"media.uploadVideoLimit": "Subir video (MP4, WebM, MOV) · {limit} MB como máximo",
|
|
125
|
+
"media.uploadMediaLimit": "Subir archivos multimedia (imágenes, audio, video, documentos, hojas de cálculo, archivos comprimidos) · {limit} MB como máximo",
|
|
126
|
+
"media.uploadImageLimit": "Subir imagen (JPEG, PNG, WebP, GIF, AVIF) · {limit} MB como máximo",
|
|
127
|
+
"media.readOnlyUploads": "Las subidas locales requieren el servidor de desarrollo local. Esta biblioteca es de solo lectura.",
|
|
128
|
+
"media.videoUrlPlaceholder": "https://… o /media/video.mp4",
|
|
129
|
+
"media.imageUrlPlaceholder": "https://… o /images/photo.jpg",
|
|
130
|
+
"media.useUrl": "Usar esta URL",
|
|
131
|
+
"media.picsumHint": "Fotos de muestra de Lorem Picsum (selección por semilla, no búsqueda semántica).",
|
|
132
|
+
"media.unsplashHint": "Las fotos de Unsplash permanecen enlazadas a Unsplash; al seleccionar una, se registra una descarga.",
|
|
133
|
+
"media.stockImportHint": "Importa las fotos seleccionadas a la carpeta de archivos multimedia (solo en desarrollo local).",
|
|
134
|
+
"media.searchPhotos": "Buscar fotos",
|
|
135
|
+
"media.searchPhotosPlaceholder": "Buscar fotos…",
|
|
136
|
+
"media.search": "Buscar",
|
|
137
|
+
"media.noPhotos": "No se encontraron fotos. Prueba otra búsqueda.",
|
|
138
|
+
"media.deleteTitle": "¿Eliminar “{name}”?",
|
|
139
|
+
"media.deleteDescription": "Esto elimina permanentemente el archivo y sus metadatos. Esta acción no se puede deshacer. Las páginas que usen este archivo tendrán archivos multimedia o enlaces rotos.",
|
|
140
|
+
"media.pexelsKeyPlaceholder": "p. ej., Ab3dE6fG9hJ2…",
|
|
141
|
+
"media.pixabayKeyPlaceholder": "p. ej., 12345678-abcdef012345…",
|
|
142
|
+
"media.unsplashKeyPlaceholder": "p. ej., AbCdEf12_GhIjKl34…",
|
|
143
|
+
"media.providerStatus": "{provider} {status}",
|
|
144
|
+
"media.pixabayKeyRequired": "Añade una clave de API de Pixabay en Configuración → Archivos multimedia",
|
|
145
|
+
"media.unsplashKeyRequired": "Añade una clave de API de Unsplash en Configuración",
|
|
146
|
+
"media.pexelsKeyRequired": "Añade una clave de API de Pexels en Configuración → Archivos multimedia",
|
|
147
|
+
"media.unknownStockProvider": "Proveedor de fotos de banco de imágenes desconocido",
|
|
148
|
+
"media.unexpectedStockUrl": "URL de foto de banco de imágenes inesperada",
|
|
149
|
+
"media.unsplashPhotoMissing": "Falta la foto de Unsplash o la clave de API",
|
|
150
|
+
"media.unsplashTrackingFailed": "No se pudo registrar la descarga en Unsplash ({status})",
|
|
151
|
+
"media.unsafeImageUrl": "URL de imagen no segura",
|
|
152
|
+
"media.remoteRequiresHttps": "Las importaciones remotas requieren HTTPS",
|
|
153
|
+
"media.unsplashHotlinkRequired": "Las imágenes de la API de Unsplash deben permanecer enlazadas directamente a su origen. Usa Unsplash en el selector de imágenes del contenido.",
|
|
154
|
+
"media.imageDownloadFailed": "No se pudo descargar la imagen. El origen debe permitir las descargas desde el navegador (CORS); como alternativa, sube el archivo de imagen.",
|
|
155
|
+
"media.photoDownloadFailed": "No se pudo descargar la foto ({status})",
|
|
156
|
+
"media.photoLimitExceeded": "La foto supera el límite de importación de {limit} MB",
|
|
157
|
+
"media.chooseImageFormat": "Elige una imagen JPEG, PNG o WebP.",
|
|
158
|
+
"media.emptyDownload": "La descarga de la imagen está vacía",
|
|
159
|
+
"media.uploadFailed": "No se pudo subir el archivo ({status}): {body}",
|
|
160
|
+
"media.invalidUploadedUrl": "URL del recurso subido no válida",
|
|
161
|
+
"media.localImportRequired": "La importación de fotos requiere el servidor de desarrollo local",
|
|
162
|
+
"media.photoImportFailedStatus": "No se pudo importar la foto ({status})",
|
|
163
|
+
"media.invalidImportedUrl": "URL de la foto importada no válida",
|
|
164
|
+
"media.providerVideo": "Video de {provider}",
|
|
165
|
+
"media.embedCaption": "{provider} · {title}"
|
|
166
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
{
|
|
2
|
+
"richtext.bold": "Negrita",
|
|
3
|
+
"richtext.italic": "Cursiva",
|
|
4
|
+
"richtext.inlineCode": "Código en línea",
|
|
5
|
+
"richtext.strikethrough": "Tachado",
|
|
6
|
+
"richtext.underline": "Subrayado",
|
|
7
|
+
"richtext.highlight": "Resaltado",
|
|
8
|
+
"richtext.subscript": "Subíndice",
|
|
9
|
+
"richtext.superscript": "Superíndice",
|
|
10
|
+
"richtext.video": "Vídeo",
|
|
11
|
+
"richtext.youtube": "YouTube",
|
|
12
|
+
"richtext.vimeo": "Vimeo",
|
|
13
|
+
"richtext.body": "Cuerpo",
|
|
14
|
+
"richtext.loadArticleError": "No se pudo cargar el artículo",
|
|
15
|
+
"richtext.safeUrlError": "Introduce una URL segura con http, https o mailto, o una URL relativa.",
|
|
16
|
+
"richtext.link": "Enlace",
|
|
17
|
+
"richtext.moreFormatting": "Más opciones de formato",
|
|
18
|
+
"richtext.tableControls": "Controles de tabla",
|
|
19
|
+
"richtext.addRowBelow": "Añadir fila debajo",
|
|
20
|
+
"richtext.addColumnRight": "Añadir columna a la derecha",
|
|
21
|
+
"richtext.removeRow": "Eliminar fila",
|
|
22
|
+
"richtext.removeColumn": "Eliminar columna",
|
|
23
|
+
"richtext.headerRow": "Fila de encabezado",
|
|
24
|
+
"richtext.imageEditing": "Edición de imagen",
|
|
25
|
+
"richtext.bodyFormatting": "Formato del cuerpo",
|
|
26
|
+
"richtext.editAltText": "Editar texto alternativo",
|
|
27
|
+
"richtext.editImageLink": "Editar enlace de la imagen",
|
|
28
|
+
"richtext.addImageLink": "Añadir enlace a la imagen",
|
|
29
|
+
"richtext.blockType": "Tipo de bloque",
|
|
30
|
+
"richtext.replaceImage": "Reemplazar imagen",
|
|
31
|
+
"richtext.insertMedia": "Insertar contenido multimedia",
|
|
32
|
+
"richtext.table": "Tabla",
|
|
33
|
+
"richtext.bulletedList": "Lista con viñetas",
|
|
34
|
+
"richtext.numberedList": "Lista numerada",
|
|
35
|
+
"richtext.undo": "Deshacer",
|
|
36
|
+
"richtext.redo": "Rehacer",
|
|
37
|
+
"richtext.addBlock": "Añadir bloque",
|
|
38
|
+
"richtext.moreActions": "Más acciones",
|
|
39
|
+
"richtext.viewAsMarkdown": "Ver como Markdown",
|
|
40
|
+
"richtext.editLink": "Editar enlace",
|
|
41
|
+
"richtext.linkUrl": "URL del enlace",
|
|
42
|
+
"richtext.applyLink": "Aplicar enlace",
|
|
43
|
+
"richtext.removeLink": "Eliminar enlace",
|
|
44
|
+
"richtext.closeLink": "Cerrar enlace",
|
|
45
|
+
"richtext.editImageAltText": "Editar texto alternativo de la imagen",
|
|
46
|
+
"richtext.decorativeAltText": "Texto alternativo (dejar vacío si es decorativa)",
|
|
47
|
+
"richtext.imageAltText": "Texto alternativo de la imagen",
|
|
48
|
+
"richtext.applyAltText": "Aplicar texto alternativo",
|
|
49
|
+
"richtext.closeAltText": "Cerrar texto alternativo",
|
|
50
|
+
"richtext.selectedTextFormatting": "Formato del texto seleccionado",
|
|
51
|
+
"richtext.closeMarkdownView": "Cerrar vista de Markdown",
|
|
52
|
+
"richtext.bodyAsMarkdown": "Cuerpo en Markdown",
|
|
53
|
+
"richtext.articleBlocks": "Bloques del artículo",
|
|
54
|
+
"richtext.insertParagraphHere": "Insertar párrafo aquí",
|
|
55
|
+
"richtext.insertParagraph": "Insertar párrafo",
|
|
56
|
+
"richtext.blockOptionsHandle": "Opciones del bloque y control de arrastre",
|
|
57
|
+
"richtext.dragBlockHint": "Arrastra para reordenar; haz clic para ver las opciones del bloque",
|
|
58
|
+
"richtext.insertBlock": "Insertar bloque",
|
|
59
|
+
"richtext.chooseBlock": "Elegir un bloque",
|
|
60
|
+
"richtext.findBlock": "Buscar un bloque",
|
|
61
|
+
"richtext.findBlockPlaceholder": "Buscar un bloque…",
|
|
62
|
+
"richtext.noMatchingBlocks": "No hay bloques que coincidan.",
|
|
63
|
+
"richtext.addTable": "Añadir tabla",
|
|
64
|
+
"richtext.blockOptions": "Opciones del bloque",
|
|
65
|
+
"richtext.duplicateBlock": "Duplicar bloque",
|
|
66
|
+
"richtext.deleteBlock": "Eliminar bloque",
|
|
67
|
+
"richtext.moveUp": "Mover arriba",
|
|
68
|
+
"richtext.moveDown": "Mover abajo",
|
|
69
|
+
"richtext.convertBlockType": "Convertir tipo de bloque",
|
|
70
|
+
"richtext.code": "Código",
|
|
71
|
+
"richtext.bulletList": "Lista con viñetas",
|
|
72
|
+
"richtext.quote": "Cita",
|
|
73
|
+
"richtext.unsupportedMarkdown": "Este Markdown contiene formato que el editor visual no puede conservar de forma segura. Edita el código fuente original a continuación; no se ha convertido nada.",
|
|
74
|
+
"richtext.visual": "Visual",
|
|
75
|
+
"richtext.markdown": "Markdown",
|
|
76
|
+
"richtext.textStyle": "Estilo de texto",
|
|
77
|
+
"richtext.paragraph": "Párrafo",
|
|
78
|
+
"richtext.codeBlock": "Bloque de código",
|
|
79
|
+
"richtext.textFormatting": "Formato de texto",
|
|
80
|
+
"richtext.listsAndQuote": "Listas y cita",
|
|
81
|
+
"richtext.image": "Imagen",
|
|
82
|
+
"richtext.divider": "Separador",
|
|
83
|
+
"richtext.pageLoadError": "No se pudo cargar la página en la vista previa.",
|
|
84
|
+
"richtext.liveEditingUnavailable": "Esta página no está configurada para la edición en directo. Los cambios no aparecerán en esta vista previa.",
|
|
85
|
+
"richtext.previewUnavailable": "Vista previa no disponible",
|
|
86
|
+
"richtext.previewMode": "Modo de vista previa",
|
|
87
|
+
"richtext.browse": "Navegar",
|
|
88
|
+
"richtext.edit": "Editar",
|
|
89
|
+
"richtext.editPreviewHint": "Haz clic en una región para editarla. Los scripts, formularios y enlaces permanecen desactivados.",
|
|
90
|
+
"richtext.browsePreviewHint": "Los scripts, formularios y enlaces están desactivados en esta vista previa.",
|
|
91
|
+
"richtext.previewOnWebsite": "Vista previa en el sitio web",
|
|
92
|
+
"richtext.togglePropertiesPanel": "Mostrar u ocultar el panel de propiedades",
|
|
93
|
+
"richtext.newPagePreviewHint": "Página nueva: Guardar escribe el archivo. La ruta se muestra una vez que el sitio dispone de él.",
|
|
94
|
+
"richtext.noDocumentPreview": "Este documento no tiene una URL de vista previa asignada. Usa el panel de propiedades para editarlo.",
|
|
95
|
+
"richtext.websitePageEditor": "Editor de páginas del sitio web",
|
|
96
|
+
"richtext.editText": "Editar texto",
|
|
97
|
+
"richtext.propertiesPanelWidth": "Ancho del panel de propiedades",
|
|
98
|
+
"richtext.preparedPageLoadError": "No se pudo cargar la página preparada. Comprueba su URL y las cabeceras que controlan su inclusión en marcos.",
|
|
99
|
+
"richtext.previewTimeout": "La vista previa tardó demasiado en cargarse. Comprueba su URL e inténtalo de nuevo.",
|
|
100
|
+
"richtext.loadingPreview": "Cargando vista previa…",
|
|
101
|
+
"richtext.preparedPageUnavailable": "No se pudo cargar la página preparada.",
|
|
102
|
+
"richtext.noPreparedAnchors": "Esta página no tiene puntos de anclaje de Rigel preparados.",
|
|
103
|
+
"richtext.websitePreview": "Vista previa del sitio web",
|
|
104
|
+
"richtext.liveDraftPreview": "Vista previa en directo del borrador del sitio web",
|
|
105
|
+
"richtext.preparedTemplateHint": "Plantilla preparada · Scripts, navegación y formularios desactivados. Los campos y listas sin puntos de anclaje no se muestran en la vista previa.",
|
|
106
|
+
"richtext.menuPreviewUnsupported": "La vista previa de menús no es compatible.",
|
|
107
|
+
"richtext.noContentPreview": "Este contenido no tiene una URL de vista previa preparada asignada.",
|
|
108
|
+
"richtext.previewFetchError": "No se pudo obtener la vista previa del borrador. Comprueba la URL, HTTPS, CORS (Access-Control-Allow-Origin para este editor), las redirecciones y la política connect-src del editor. No se envían cookies de autenticación.",
|
|
109
|
+
"richtext.previewHtmlError": "La vista previa del borrador no devolvió HTML. Comprueba la ruta asignada y la cabecera Content-Type.",
|
|
110
|
+
"richtext.heading": "Encabezado {level}",
|
|
111
|
+
"richtext.editingMode": "Modo de edición de {label}",
|
|
112
|
+
"richtext.formatting": "Formato de {label}",
|
|
113
|
+
"richtext.markdownSource": "Código fuente Markdown de {label}",
|
|
114
|
+
"richtext.panelPixels": "{width} píxeles",
|
|
115
|
+
"richtext.previewHttpError": "La vista previa del borrador devolvió HTTP {status}. Comprueba el despliegue del borrador y la ruta asignada."
|
|
116
|
+
}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
{
|
|
2
|
+
"shell.search": "Buscar",
|
|
3
|
+
"shell.searchShortcut": "⌘/Ctrl + K",
|
|
4
|
+
"shell.closeDialog": "Cerrar diálogo",
|
|
5
|
+
"shell.escapeKey": "Esc",
|
|
6
|
+
"shell.escapeKeyLowercase": "esc",
|
|
7
|
+
"shell.keyboardShortcuts": "Atajos de teclado",
|
|
8
|
+
"shell.keyboardShortcutsMenu": "Atajos de teclado",
|
|
9
|
+
"shell.page": "Página",
|
|
10
|
+
"shell.collection": "Colección",
|
|
11
|
+
"shell.menus": "Menús",
|
|
12
|
+
"shell.searchItemHint": "{name} · {slug}",
|
|
13
|
+
"shell.searchMenuHint": "Menú · {slug}",
|
|
14
|
+
"shell.searchContent": "Buscar contenido",
|
|
15
|
+
"shell.searchContentTooltip": "Buscar contenido (⌘K)",
|
|
16
|
+
"shell.searchPlaceholder": "Buscar…",
|
|
17
|
+
"shell.searchPagesCollectionsPosts": "Buscar páginas, colecciones y entradas",
|
|
18
|
+
"shell.searchPagesCollectionsPostsPlaceholder": "Buscar páginas, colecciones y entradas…",
|
|
19
|
+
"shell.searchResults": "Resultados de búsqueda",
|
|
20
|
+
"shell.noResults": "Sin resultados",
|
|
21
|
+
"shell.searchNavigate": "navegar",
|
|
22
|
+
"shell.searchOpen": "abrir",
|
|
23
|
+
"shell.searchClose": "cerrar",
|
|
24
|
+
"shell.appearance": "Apariencia",
|
|
25
|
+
"shell.editor": "Editor",
|
|
26
|
+
"shell.connection": "Conexión",
|
|
27
|
+
"shell.media": "Archivos multimedia",
|
|
28
|
+
"shell.language": "Idioma",
|
|
29
|
+
"shell.advanced": "Opciones avanzadas",
|
|
30
|
+
"shell.apiKeysStorageError": "No se pudieron guardar las claves de API en este navegador. Permite el almacenamiento del navegador e inténtalo de nuevo.",
|
|
31
|
+
"shell.settings": "Configuración",
|
|
32
|
+
"shell.close": "Cerrar",
|
|
33
|
+
"shell.theme": "Tema",
|
|
34
|
+
"shell.themeSystem": "Sistema",
|
|
35
|
+
"shell.themeLight": "Claro",
|
|
36
|
+
"shell.themeDark": "Oscuro",
|
|
37
|
+
"shell.accessibility": "Accesibilidad",
|
|
38
|
+
"shell.highContrastMode": "Modo de alto contraste",
|
|
39
|
+
"shell.highContrastHint": "Texto y bordes más definidos en los temas claro y oscuro.",
|
|
40
|
+
"shell.editorExperience": "Experiencia de edición",
|
|
41
|
+
"shell.articleBodyEditing": "Edición del cuerpo del artículo",
|
|
42
|
+
"shell.sidebar": "Barra lateral",
|
|
43
|
+
"shell.inlinePreview": "Vista previa en línea",
|
|
44
|
+
"shell.editorExperienceHint": "La vista previa en línea permite hacer clic en el cuerpo de un artículo y escribir directamente en la página. Los demás campos permanecen en la barra lateral. Esta preferencia se guarda en este navegador; para guardar el contenido sigue siendo necesario pulsar Guardar.",
|
|
45
|
+
"shell.githubAccount": "Cuenta de GitHub",
|
|
46
|
+
"shell.noGithubAccount": "No hay ninguna cuenta de GitHub conectada.",
|
|
47
|
+
"shell.repository": "Repositorio",
|
|
48
|
+
"shell.editingBranch": "Rama de edición",
|
|
49
|
+
"shell.publishingBranch": "Rama de publicación",
|
|
50
|
+
"shell.localMode": "Modo local",
|
|
51
|
+
"shell.localModeHint": "No hay ninguna cuenta de GitHub conectada. El contenido se guarda en archivos locales al pulsar Guardar.",
|
|
52
|
+
"shell.stockPhotoApiKeys": "Claves de API de servicios de bancos de imágenes",
|
|
53
|
+
"shell.stockPhotoApiKeysHint": "Gestiona las claves de API de los servicios de bancos de imágenes. Las claves se guardan automáticamente solo en este navegador.",
|
|
54
|
+
"shell.providerAccessKey": "Clave de acceso de {name}",
|
|
55
|
+
"shell.providerApiKey": "Clave de API de {name}",
|
|
56
|
+
"shell.getAccessKey": "Obtener clave de acceso",
|
|
57
|
+
"shell.getApiKey": "Obtener clave de API",
|
|
58
|
+
"shell.hideKey": "Ocultar {name}",
|
|
59
|
+
"shell.showKey": "Mostrar {name}",
|
|
60
|
+
"shell.keyFormatError": "Revisa el formato de {name}.",
|
|
61
|
+
"shell.editorInterfaceLanguage": "Idioma de la interfaz del editor",
|
|
62
|
+
|
|
63
|
+
"shell.developerMode": "Modo de desarrollador",
|
|
64
|
+
"shell.enableDevMode": "Activar modo de desarrollador",
|
|
65
|
+
"shell.devModeHint": "Muestra el JSON sin procesar del borrador actual y las claves de los campos junto a sus etiquetas.",
|
|
66
|
+
"shell.clearData": "Borrar datos",
|
|
67
|
+
"shell.fileCacheHint": "Actualmente, Rigel no almacena el contenido de los archivos ni las miniaturas en una caché persistente del navegador.",
|
|
68
|
+
"shell.clearFileCache": "Borrar caché de archivos",
|
|
69
|
+
"shell.eraseAllDataHint": "Borra la configuración de Rigel, las claves de API y los borradores sin guardar de este navegador. Los archivos ya guardados en el repositorio no se ven afectados.",
|
|
70
|
+
"shell.eraseDataError": "No se pudieron borrar los datos del navegador. Revisa los permisos de almacenamiento del navegador e inténtalo de nuevo.",
|
|
71
|
+
"shell.eraseAllData": "Borrar todos los datos",
|
|
72
|
+
"shell.waitForSave": "Espera a que termine el guardado actual.",
|
|
73
|
+
"shell.publishReviewInactive": "La revisión de publicación ya no está activa. Vuelve a conectarte y a revisar los cambios.",
|
|
74
|
+
"shell.saveBeforeReview": "Primero guarda los cambios pendientes y luego revisa la publicación. Tus cambios siguen aquí.",
|
|
75
|
+
"shell.reviewError": "No se pudieron revisar los cambios guardados.",
|
|
76
|
+
"shell.draftsSynced": "Borradores sincronizados. No se ha publicado nada. Cierra este diálogo y vuelve a revisar los cambios antes de publicar.",
|
|
77
|
+
"shell.publishedToBranch": "Publicado en {name}. El despliegue configurado ya puede comenzar; el sitio no se actualiza al instante. La rama de borradores se conserva.",
|
|
78
|
+
"shell.publishVerificationError": "No se pudo verificar la publicación. Revisa GitHub antes de volver a intentarlo.",
|
|
79
|
+
"shell.configurationLoadError": "No se pudo cargar la configuración del editor. Vuelve a compilar el sitio e inténtalo de nuevo.",
|
|
80
|
+
"shell.configurationIncomplete": "La configuración del editor está incompleta. Vuelve a compilar el sitio e inténtalo de nuevo.",
|
|
81
|
+
"shell.configurationLoadFailed": "No se pudo cargar la configuración del editor.",
|
|
82
|
+
"shell.waitForGithubVerification": "Espera a que se verifique el acceso a GitHub antes de guardar.",
|
|
83
|
+
"shell.connectBeforeSaving": "Conecta GitHub y verifica el acceso al repositorio antes de guardar.",
|
|
84
|
+
"shell.sessionExpiredRetry": "Tu sesión de GitHub ha caducado. Vuelve a conectar GitHub e inténtalo de nuevo. Tus cambios sin guardar siguen aquí.",
|
|
85
|
+
"shell.sessionExpiredCheckAccess": "Tu sesión de GitHub ha caducado. Vuelve a iniciar sesión para comprobar el acceso al repositorio.",
|
|
86
|
+
"shell.githubConnectionError": "No se pudo conectar GitHub. Intenta iniciar sesión de nuevo.",
|
|
87
|
+
"shell.githubAccessError": "No se pudo comprobar el acceso a GitHub. Inténtalo de nuevo.",
|
|
88
|
+
"shell.selectBeforeSaving": "Selecciona contenido antes de guardar.",
|
|
89
|
+
"shell.saveFailedStatus": "Error al guardar ({status})",
|
|
90
|
+
"shell.saveChangesError": "No se pudieron guardar los cambios",
|
|
91
|
+
"shell.githubUser": "Usuario de GitHub",
|
|
92
|
+
"shell.localUser": "Usuario local",
|
|
93
|
+
"shell.eraseBrowserDataTitle": "¿Borrar los datos del navegador?",
|
|
94
|
+
"shell.eraseData": "Borrar datos",
|
|
95
|
+
"shell.eraseBrowserDataDescription": "Se eliminarán de este navegador la configuración de Rigel, las claves de API, el inicio de sesión de GitHub y los borradores sin guardar. Los archivos guardados en el repositorio no cambiarán. El editor se volverá a cargar.",
|
|
96
|
+
"shell.name": "Nombre",
|
|
97
|
+
"shell.slug": "Slug",
|
|
98
|
+
"shell.title": "Título",
|
|
99
|
+
"shell.category": "Categoría",
|
|
100
|
+
"shell.allMenus": "Todos los menús",
|
|
101
|
+
"shell.documents": "Documentos",
|
|
102
|
+
"shell.allNamedEntries": "Todo en {name}",
|
|
103
|
+
"shell.allPages": "Todas las páginas",
|
|
104
|
+
"shell.allEntries": "Todas las entradas",
|
|
105
|
+
"shell.settingsStorageError": "No se pudo guardar la configuración en este navegador. Permite el almacenamiento del navegador e inténtalo de nuevo.",
|
|
106
|
+
"shell.addDocument": "Añadir {name}",
|
|
107
|
+
"shell.newDocumentDescription": "Introduce un nombre para crear un borrador a partir de la plantilla. No se escribe nada hasta que pulses Guardar.",
|
|
108
|
+
"shell.pageName": "Nombre de la página",
|
|
109
|
+
"shell.createDraft": "Crear borrador",
|
|
110
|
+
"shell.titleRequired": "Introduce un título que contenga letras o números.",
|
|
111
|
+
"shell.slugAlreadyUsed": "El slug \"{slug}\" ya está en uso en otro documento o página.",
|
|
112
|
+
"shell.addToCollection": "Añadir a {name}",
|
|
113
|
+
"shell.newPostDescription": "Introduce un título para crear un borrador. No se escribe nada hasta que pulses Guardar.",
|
|
114
|
+
"shell.deletePostTitle": "¿Eliminar «{name}»?",
|
|
115
|
+
"shell.delete": "Eliminar",
|
|
116
|
+
"shell.discardNewPostDescription": "Se descartarán la nueva entrada y sus cambios sin guardar.",
|
|
117
|
+
"shell.deleteRemotePostDescription": "Se eliminará {slug}.json de {branch} y se descartarán los cambios sin guardar. Esta acción no se puede deshacer en el editor.",
|
|
118
|
+
"shell.deleteLocalPostDescription": "Se eliminará {slug}.json y se descartarán los cambios sin guardar. Esta acción no se puede deshacer en el editor.",
|
|
119
|
+
"shell.deleteFailedStatus": "Error al eliminar ({status})",
|
|
120
|
+
"shell.signedOutAnotherTab": "Se ha cerrado la sesión en otra pestaña. Vuelve a conectar GitHub para guardar. Tus cambios sin guardar siguen aquí.",
|
|
121
|
+
"shell.loadingEditor": "Cargando el editor",
|
|
122
|
+
"shell.connectGithub": "Conectar GitHub",
|
|
123
|
+
"shell.retryLoading": "Volver a cargar",
|
|
124
|
+
"shell.loadingConfiguration": "Cargando la configuración del editor…",
|
|
125
|
+
"shell.signedInAs": "Sesión iniciada como {name}.",
|
|
126
|
+
"shell.noEditingAccess": "No tienes permiso para editar. Contacta con el administrador del sitio web.",
|
|
127
|
+
"shell.openingEditor": "Abriendo el editor…",
|
|
128
|
+
"shell.accessConfirmed": "Acceso confirmado. Intenta abrir el editor de nuevo.",
|
|
129
|
+
"shell.manageGithubAccess": "Gestionar acceso a GitHub",
|
|
130
|
+
"shell.signInHint": "Inicia sesión para editar este sitio web.",
|
|
131
|
+
"shell.checkingAccess": "Comprobando el acceso…",
|
|
132
|
+
"shell.openEditor": "Abrir editor",
|
|
133
|
+
"shell.checkAccess": "Comprobar acceso",
|
|
134
|
+
"shell.signingIn": "Iniciando sesión…",
|
|
135
|
+
"shell.signInAgain": "Volver a iniciar sesión",
|
|
136
|
+
"shell.signInWithGithub": "Iniciar sesión con GitHub",
|
|
137
|
+
"shell.legalNotice": "Al continuar, aceptas los {terms} y confirmas haber leído la {privacy}.",
|
|
138
|
+
"shell.termsOfUse": "Términos de uso",
|
|
139
|
+
"shell.privacyPolicy": "Política de privacidad",
|
|
140
|
+
"shell.welcome": "Bienvenido",
|
|
141
|
+
"shell.content": "Contenido",
|
|
142
|
+
"shell.contentLanguage": "Idioma del contenido",
|
|
143
|
+
"shell.publish": "Publicar",
|
|
144
|
+
"shell.saveBeforePublishing": "Guardar los cambios antes de publicar",
|
|
145
|
+
"shell.publishSavedChanges": "Publicar los cambios guardados de la rama",
|
|
146
|
+
"shell.expandSidebar": "Expandir barra lateral",
|
|
147
|
+
"shell.collapseSidebar": "Contraer barra lateral",
|
|
148
|
+
"shell.githubUserMenu": "Menú de usuario de GitHub",
|
|
149
|
+
"shell.localUserMenu": "Menú de usuario local",
|
|
150
|
+
"shell.liveSite": "Sitio publicado",
|
|
151
|
+
"shell.configureGithubAccess": "Configurar acceso a GitHub",
|
|
152
|
+
"shell.reconnectGithub": "Volver a conectar GitHub",
|
|
153
|
+
"shell.signOutTooltip": "Cerrar sesión en este editor",
|
|
154
|
+
"shell.signOut": "Cerrar sesión",
|
|
155
|
+
"shell.githubBackendHint": "backend: github",
|
|
156
|
+
"shell.sessionExpired": "Tu sesión de GitHub ha caducado. Tus cambios sin guardar siguen aquí.",
|
|
157
|
+
"shell.repositoryAccessChanged": "El acceso al repositorio ha cambiado. Vuelve a conectar GitHub antes de guardar.",
|
|
158
|
+
"shell.connecting": "Conectando…",
|
|
159
|
+
"shell.backTo": "← Volver a {name}",
|
|
160
|
+
"shell.pages": "Páginas",
|
|
161
|
+
"shell.saving": "Guardando…",
|
|
162
|
+
"shell.saveFailed": "Error al guardar",
|
|
163
|
+
"shell.unsaved": "Sin guardar",
|
|
164
|
+
"shell.saved": "Guardado",
|
|
165
|
+
"shell.save": "Guardar",
|
|
166
|
+
"shell.addNew": "Añadir nuevo",
|
|
167
|
+
"shell.deletePost": "Eliminar entrada",
|
|
168
|
+
"shell.retrySave": "Volver a guardar",
|
|
169
|
+
"shell.dismissSaveError": "Descartar error de guardado",
|
|
170
|
+
"shell.loading": "Cargando…",
|
|
171
|
+
"shell.draftBadge": "borrador",
|
|
172
|
+
"shell.noEntries": "Sin entradas",
|
|
173
|
+
"shell.websiteRoute": "Ruta del sitio web",
|
|
174
|
+
"shell.notConfigured": "Sin configurar",
|
|
175
|
+
"shell.fixedRouteHint": "Esta página de contenido usa una ruta fija de Astro. Su URL solo se puede cambiar en el código del sitio web; los metadatos del slug no pueden cambiar su ubicación.",
|
|
176
|
+
"shell.welcomeTitle": "Te damos la bienvenida a Rigel CMS",
|
|
177
|
+
"shell.welcomeTagline": "El mejor CMS de todo el universo.",
|
|
178
|
+
"shell.welcomeHint": "Selecciona una página o colección de la barra lateral para empezar a editar.",
|
|
179
|
+
"shell.currentDraft": "Borrador actual",
|
|
180
|
+
"shell.editorPreviewWidth": "Ancho del editor y de la vista previa",
|
|
181
|
+
"shell.editorWidthPercent": "Ancho del editor: {percent}%"
|
|
182
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"system.editorTitle": "Rigel — Editor de contenido",
|
|
3
|
+
"system.sidebar.website": "Sitio web",
|
|
4
|
+
"system.sidebar.pages": "Páginas",
|
|
5
|
+
"system.sidebar.shared": "Contenido compartido",
|
|
6
|
+
"system.sidebar.menus": "Menús",
|
|
7
|
+
"system.sidebar.assets": "Recursos",
|
|
8
|
+
"system.sidebar.media": "Archivos multimedia",
|
|
9
|
+
"system.sidebar.more": "Más contenido",
|
|
10
|
+
"system.reference.unavailable": "No disponible ({id})",
|
|
11
|
+
"system.reference.expectedMany": "{label}: se esperaba una lista de referencias",
|
|
12
|
+
"system.reference.expectedOne": "{label}: se esperaba una referencia",
|
|
13
|
+
"system.reference.existingOnly": "{label}: selecciona solo entradas existentes"
|
|
14
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
{
|
|
2
|
+
"validation.body.invalidTree": "El árbol de bloques del artículo no es válido o es demasiado grande",
|
|
3
|
+
"validation.body.unsupportedBlock": "Bloque de artículo no compatible",
|
|
4
|
+
"validation.body.expectedBlock": "Se esperaba un bloque de artículo",
|
|
5
|
+
"validation.body.nestedTable": "No se admiten tablas anidadas",
|
|
6
|
+
"validation.body.tableStructure": "Estructura de tabla no válida",
|
|
7
|
+
"validation.body.tableContent": "Contenido de tabla no válido",
|
|
8
|
+
"validation.body.tableCell": "Celda de tabla no válida o celdas combinadas no compatibles",
|
|
9
|
+
"validation.body.tableCellStyles": "No se admiten estilos personalizados en las celdas de la tabla",
|
|
10
|
+
"validation.body.tableDimensions": "Dimensiones de tabla no válidas",
|
|
11
|
+
"validation.body.tableColumnWidths": "Anchos de columna de tabla no válidos",
|
|
12
|
+
"validation.body.listItems": "Las listas deben contener elementos de lista",
|
|
13
|
+
"validation.body.inlineContent": "Se esperaba contenido en línea del artículo",
|
|
14
|
+
"validation.body.headingLevel": "Usa niveles de encabezado del 1 al 6",
|
|
15
|
+
"validation.body.listType": "Tipo de lista no compatible",
|
|
16
|
+
"validation.body.listStart": "Valor inicial de lista no válido",
|
|
17
|
+
"validation.body.invalidText": "Texto de artículo no válido",
|
|
18
|
+
"validation.body.textSize": "El texto del artículo es demasiado grande",
|
|
19
|
+
"validation.body.customStyles": "No se admiten estilos personalizados en el artículo",
|
|
20
|
+
"validation.body.imageRequired": "Las imágenes requieren una URL y un texto alternativo",
|
|
21
|
+
"validation.body.linkRequired": "Los enlaces requieren una URL",
|
|
22
|
+
"validation.body.imageUrl": "URL de imagen no segura",
|
|
23
|
+
"validation.body.imageLinkUrl": "URL del enlace de la imagen no segura",
|
|
24
|
+
"validation.body.linkUrl": "URL de enlace no segura",
|
|
25
|
+
"validation.body.videoUrl": "URL de vídeo no segura",
|
|
26
|
+
"validation.body.videoPosterUrl": "URL de la imagen de portada del vídeo no segura",
|
|
27
|
+
"validation.body.videoCaption": "Leyenda de vídeo no válida",
|
|
28
|
+
"validation.body.videoPlayback": "Configuración de reproducción de vídeo no válida",
|
|
29
|
+
"validation.body.videoEmbed": "Inserción de vídeo no válida",
|
|
30
|
+
"validation.body.embedTitle": "Título del contenido insertado no válido",
|
|
31
|
+
"validation.body.imageCredit": "Crédito de imagen no válido",
|
|
32
|
+
"validation.body.imageCreditUrl": "URL del crédito de la imagen no segura",
|
|
33
|
+
"validation.body.childrenRequired": "El bloque del artículo requiere elementos secundarios",
|
|
34
|
+
"validation.body.emptyTable": "Los elementos de la tabla no pueden estar vacíos",
|
|
35
|
+
"validation.body.tableSize": "La tabla debe ser rectangular y tener un máximo de 50 filas y 20 columnas",
|
|
36
|
+
"validation.body.unexpectedChildren": "Elementos secundarios inesperados en el artículo",
|
|
37
|
+
"validation.body.expectedBody": "Se esperaba un cuerpo de artículo de Lexical",
|
|
38
|
+
"validation.slug.required": "El slug de URL debe contener letras o números.",
|
|
39
|
+
"validation.slug.invalid": "Slug de URL no válido; usa letras minúsculas, números y guiones simples.",
|
|
40
|
+
"validation.slug.duplicate": "El slug de URL «{slug}» ya está en uso.",
|
|
41
|
+
"validation.collection.invalid": "Frontmatter del artículo no válido",
|
|
42
|
+
"validation.collection.required": "{label}: se requiere un valor",
|
|
43
|
+
"validation.collection.expected": "{label}: se esperaba un valor de tipo {type}",
|
|
44
|
+
"validation.menu.maxDepth": "maxDepth del menú debe ser un número entero del 1 al 10",
|
|
45
|
+
"validation.menu.required": "El menú requiere un slug con letras minúsculas, números y guiones, un title y un array items",
|
|
46
|
+
"validation.menu.depth": "El menú supera la profundidad máxima de {maxDepth}",
|
|
47
|
+
"validation.menu.itemRequired": "Los elementos del menú requieren id, label y url no vacíos, y un array children",
|
|
48
|
+
"validation.menu.duplicateId": "id de elemento del menú duplicado: {id}",
|
|
49
|
+
"validation.menu.newTab": "newTab del elemento del menú debe ser un booleano",
|
|
50
|
+
"validation.menu.unsafeUrl": "URL de menú no segura",
|
|
51
|
+
"validation.menu.invalidUrl": "URL de menú no válida",
|
|
52
|
+
"validation.menu.unsafeProtocol": "Protocolo de URL de menú no seguro",
|
|
53
|
+
"validation.schema.unknownObject": "{path}: tipo de objeto desconocido",
|
|
54
|
+
"validation.schema.unknownDocument": "{path}: tipo de documento desconocido",
|
|
55
|
+
"validation.schema.required": "{path}: se requiere un valor",
|
|
56
|
+
"validation.schema.unsafeKey": "{path}: clave no segura {key}",
|
|
57
|
+
"validation.schema.object": "{path}: debe ser un objeto",
|
|
58
|
+
"validation.schema.array": "{path}: debe ser un array",
|
|
59
|
+
"validation.schema.minItems": "{path}: requiere al menos {min} elementos",
|
|
60
|
+
"validation.schema.maxItems": "{path}: admite como máximo {max} elementos",
|
|
61
|
+
"validation.schema.reference": "{path}: debe ser una referencia",
|
|
62
|
+
"validation.schema.section": "{path}: debe ser una sección de tipo {name}",
|
|
63
|
+
"validation.schema.scalar": "{path}: debe ser un valor de tipo {type}",
|
|
64
|
+
"validation.schema.stableKey": "{path}: requiere una _key estable",
|
|
65
|
+
"validation.schema.duplicateKey": "{path}: _key duplicada {key}",
|
|
66
|
+
"validation.schema.unknownSection": "{path}: tipo de sección desconocido {type}",
|
|
67
|
+
"validation.schema.arrayItem": "{path}: no coincide con ningún tipo de elemento permitido en el array",
|
|
68
|
+
"validation.schema.referenceId": "{path}: id de referencia no válido",
|
|
69
|
+
"validation.schema.referenceTarget": "{path}: la referencia debe apuntar a {targets}",
|
|
70
|
+
"validation.schema.referenceAlternatives": "{target} o {alternatives}",
|
|
71
|
+
"validation.schema.referenceProperty": "{path}: propiedad de referencia desconocida {key}",
|
|
72
|
+
"validation.schema.unresolvedTarget": "{path}: no se encuentra el destino {ref} de la referencia",
|
|
73
|
+
"validation.schema.undeclaredTarget": "{path}: el tipo de destino de la referencia no está declarado",
|
|
74
|
+
"validation.schema.duplicateDocument": "id de documento duplicado: {id}",
|
|
75
|
+
"validation.schema.slug": "{path}: el slug debe contener letras minúsculas, números y guiones simples",
|
|
76
|
+
"validation.schema.documentObject": "{path}: el documento debe ser un objeto",
|
|
77
|
+
"validation.schema.documentType": "{path}: _type debe ser {type}",
|
|
78
|
+
"validation.schema.documentId": "{path}: _id debe ser {id}",
|
|
79
|
+
"validation.schema.selfReference": "{path}: un documento no puede referenciarse a sí mismo",
|
|
80
|
+
"validation.schema.unresolvedReference": "{path}: no se encuentra la referencia {ref}",
|
|
81
|
+
"validation.schema.disallowedReference": "{path}: la referencia {ref} no es un destino permitido"
|
|
82
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import system from "./en/system.json" with { type: "json" };
|
|
2
|
+
import validation from "./en/validation.json" with { type: "json" };
|
|
3
|
+
import local from "./en/local.json" with { type: "json" };
|
|
4
|
+
import defaults from "./en/defaults.json" with { type: "json" };
|
|
5
|
+
|
|
6
|
+
export type Parameters = Record<string, string | number>;
|
|
7
|
+
export type Translator = (key: string, parameters?: Parameters) => string;
|
|
8
|
+
export type Dictionaries = Record<string, Record<string, string>>;
|
|
9
|
+
|
|
10
|
+
export function formatMessage(catalogs: Dictionaries, language: string, key: string, parameters: Parameters = {}): string {
|
|
11
|
+
const count = parameters.count;
|
|
12
|
+
const plural = typeof count === "number" && Number.isFinite(count);
|
|
13
|
+
const lookup = (code: string) => {
|
|
14
|
+
const messages = catalogs[code] ?? {};
|
|
15
|
+
const category = plural ? new Intl.PluralRules(code).select(count as number) : undefined;
|
|
16
|
+
for (const candidate of category ? [`${key}.${category}`, key, `${key}.other`] : [key]) {
|
|
17
|
+
const value = messages[candidate];
|
|
18
|
+
if (Object.hasOwn(messages, candidate) && typeof value === "string" && value.length) return value;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
const message = lookup(language) ?? lookup("en") ?? key;
|
|
22
|
+
return message.replace(/\{([a-zA-Z][\w]*)\}/g, (placeholder, name: string) => Object.hasOwn(parameters, name) ? String(parameters[name]) : placeholder);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const english = { ...system, ...validation, ...local, ...defaults };
|
|
26
|
+
export const systemMessage: Translator = (key, parameters) => formatMessage({ en: english }, "en", key, parameters);
|