@firecms/media_manager 3.1.0-canary.02232f4
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/LICENSE +6 -0
- package/dist/MediaManagerProvider.d.ts +14 -0
- package/dist/components/MediaAssetCard.d.ts +13 -0
- package/dist/components/MediaAssetDetails.d.ts +11 -0
- package/dist/components/MediaLibraryCard.d.ts +8 -0
- package/dist/components/MediaLibraryView.d.ts +9 -0
- package/dist/components/MediaUploadDialog.d.ts +13 -0
- package/dist/components/index.d.ts +5 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.es.js +1741 -0
- package/dist/index.es.js.map +1 -0
- package/dist/index.umd.js +1737 -0
- package/dist/index.umd.js.map +1 -0
- package/dist/locales/de.d.ts +45 -0
- package/dist/locales/en.d.ts +45 -0
- package/dist/locales/es.d.ts +45 -0
- package/dist/locales/fr.d.ts +45 -0
- package/dist/locales/hi.d.ts +45 -0
- package/dist/locales/it.d.ts +45 -0
- package/dist/locales/pt.d.ts +45 -0
- package/dist/types/config.d.ts +87 -0
- package/dist/types/controller.d.ts +66 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/media_asset.d.ts +70 -0
- package/dist/useMediaManagerController.d.ts +18 -0
- package/dist/useMediaManagerPlugin.d.ts +23 -0
- package/package.json +58 -0
- package/src/MediaManagerProvider.tsx +34 -0
- package/src/components/MediaAssetCard.tsx +134 -0
- package/src/components/MediaAssetDetails.tsx +353 -0
- package/src/components/MediaLibraryCard.tsx +58 -0
- package/src/components/MediaLibraryView.tsx +196 -0
- package/src/components/MediaUploadDialog.tsx +266 -0
- package/src/components/index.ts +5 -0
- package/src/index.ts +10 -0
- package/src/locales/de.ts +45 -0
- package/src/locales/en.ts +45 -0
- package/src/locales/es.ts +45 -0
- package/src/locales/fr.ts +45 -0
- package/src/locales/hi.ts +45 -0
- package/src/locales/it.ts +45 -0
- package/src/locales/pt.ts +45 -0
- package/src/types/config.ts +100 -0
- package/src/types/controller.ts +79 -0
- package/src/types/index.ts +3 -0
- package/src/types/media_asset.ts +84 -0
- package/src/useMediaManagerController.tsx +387 -0
- package/src/useMediaManagerPlugin.tsx +114 -0
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
import React, { useCallback, useState } from "react";
|
|
2
|
+
import {
|
|
3
|
+
Button,
|
|
4
|
+
Typography,
|
|
5
|
+
cls,
|
|
6
|
+
Dialog,
|
|
7
|
+
DialogActions,
|
|
8
|
+
DialogContent,
|
|
9
|
+
CloudUploadIcon,
|
|
10
|
+
CircularProgress
|
|
11
|
+
} from "@firecms/ui";
|
|
12
|
+
import { useTranslation } from "@firecms/core";
|
|
13
|
+
|
|
14
|
+
export interface MediaUploadDialogProps {
|
|
15
|
+
open: boolean;
|
|
16
|
+
onClose: () => void;
|
|
17
|
+
onUpload: (files: File[]) => Promise<void>;
|
|
18
|
+
maxFileSize?: number;
|
|
19
|
+
acceptedMimeTypes?: string[];
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Dialog component for uploading files to the media library.
|
|
24
|
+
* Supports drag-and-drop and file browser selection.
|
|
25
|
+
*/
|
|
26
|
+
export function MediaUploadDialog({
|
|
27
|
+
open,
|
|
28
|
+
onClose,
|
|
29
|
+
onUpload,
|
|
30
|
+
maxFileSize = 52428800, // 50MB default
|
|
31
|
+
acceptedMimeTypes
|
|
32
|
+
}: MediaUploadDialogProps) {
|
|
33
|
+
const [isDragging, setIsDragging] = useState(false);
|
|
34
|
+
const [uploading, setUploading] = useState(false);
|
|
35
|
+
const [error, setError] = useState<string | null>(null);
|
|
36
|
+
const [selectedFiles, setSelectedFiles] = useState<File[]>([]);
|
|
37
|
+
const { t } = useTranslation();
|
|
38
|
+
|
|
39
|
+
const validateFiles = useCallback((files: File[]): { valid: File[]; errors: string[] } => {
|
|
40
|
+
const valid: File[] = [];
|
|
41
|
+
const errors: string[] = [];
|
|
42
|
+
|
|
43
|
+
for (const file of files) {
|
|
44
|
+
if (maxFileSize && file.size > maxFileSize) {
|
|
45
|
+
errors.push(t("media_file_too_large", { name: file.name, size: formatSize(maxFileSize) }));
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
if (acceptedMimeTypes && !acceptedMimeTypes.some(type => {
|
|
49
|
+
if (type.endsWith("/*")) {
|
|
50
|
+
return file.type.startsWith(type.slice(0, -1));
|
|
51
|
+
}
|
|
52
|
+
return file.type === type;
|
|
53
|
+
})) {
|
|
54
|
+
errors.push(t("media_file_type_not_allowed", { name: file.name }));
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
valid.push(file);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return { valid, errors };
|
|
61
|
+
}, [maxFileSize, acceptedMimeTypes]);
|
|
62
|
+
|
|
63
|
+
const handleDragOver = useCallback((e: React.DragEvent) => {
|
|
64
|
+
e.preventDefault();
|
|
65
|
+
setIsDragging(true);
|
|
66
|
+
}, []);
|
|
67
|
+
|
|
68
|
+
const handleDragLeave = useCallback((e: React.DragEvent) => {
|
|
69
|
+
e.preventDefault();
|
|
70
|
+
setIsDragging(false);
|
|
71
|
+
}, []);
|
|
72
|
+
|
|
73
|
+
const handleDrop = useCallback((e: React.DragEvent) => {
|
|
74
|
+
e.preventDefault();
|
|
75
|
+
setIsDragging(false);
|
|
76
|
+
|
|
77
|
+
const files = Array.from(e.dataTransfer.files);
|
|
78
|
+
const { valid, errors } = validateFiles(files);
|
|
79
|
+
|
|
80
|
+
if (errors.length > 0) {
|
|
81
|
+
setError(errors.join("\n"));
|
|
82
|
+
} else {
|
|
83
|
+
setError(null);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
setSelectedFiles(prev => [...prev, ...valid]);
|
|
87
|
+
}, [validateFiles]);
|
|
88
|
+
|
|
89
|
+
const handleFileSelect = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {
|
|
90
|
+
const files = Array.from(e.target.files ?? []);
|
|
91
|
+
const { valid, errors } = validateFiles(files);
|
|
92
|
+
|
|
93
|
+
if (errors.length > 0) {
|
|
94
|
+
setError(errors.join("\n"));
|
|
95
|
+
} else {
|
|
96
|
+
setError(null);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
setSelectedFiles(prev => [...prev, ...valid]);
|
|
100
|
+
}, [validateFiles]);
|
|
101
|
+
|
|
102
|
+
const handleRemoveFile = useCallback((index: number) => {
|
|
103
|
+
setSelectedFiles(prev => prev.filter((_, i) => i !== index));
|
|
104
|
+
}, []);
|
|
105
|
+
|
|
106
|
+
const handleUpload = useCallback(async () => {
|
|
107
|
+
if (selectedFiles.length === 0) return;
|
|
108
|
+
|
|
109
|
+
setUploading(true);
|
|
110
|
+
setError(null);
|
|
111
|
+
|
|
112
|
+
try {
|
|
113
|
+
await onUpload(selectedFiles);
|
|
114
|
+
setSelectedFiles([]);
|
|
115
|
+
onClose();
|
|
116
|
+
} catch (err) {
|
|
117
|
+
setError(err instanceof Error ? err.message : t("media_upload_failed"));
|
|
118
|
+
} finally {
|
|
119
|
+
setUploading(false);
|
|
120
|
+
}
|
|
121
|
+
}, [selectedFiles, onUpload, onClose]);
|
|
122
|
+
|
|
123
|
+
const handleClose = useCallback(() => {
|
|
124
|
+
if (!uploading) {
|
|
125
|
+
setSelectedFiles([]);
|
|
126
|
+
setError(null);
|
|
127
|
+
onClose();
|
|
128
|
+
}
|
|
129
|
+
}, [uploading, onClose]);
|
|
130
|
+
|
|
131
|
+
const formatSize = (bytes: number): string => {
|
|
132
|
+
if (bytes < 1024) return `${bytes} B`;
|
|
133
|
+
if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;
|
|
134
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
return (
|
|
138
|
+
<Dialog
|
|
139
|
+
open={open}
|
|
140
|
+
onOpenChange={(open) => !open && handleClose()}
|
|
141
|
+
maxWidth="md"
|
|
142
|
+
>
|
|
143
|
+
<DialogContent className="p-0">
|
|
144
|
+
<div className="p-4 border-b border-surface-accent-200 dark:border-surface-accent-700">
|
|
145
|
+
<Typography variant="h6">
|
|
146
|
+
{t("media_upload_files")}
|
|
147
|
+
</Typography>
|
|
148
|
+
</div>
|
|
149
|
+
|
|
150
|
+
<div className="p-4">
|
|
151
|
+
{/* Drop Zone */}
|
|
152
|
+
<div
|
|
153
|
+
className={cls(
|
|
154
|
+
"border-2 border-dashed rounded-lg p-8",
|
|
155
|
+
"flex flex-col items-center justify-center gap-4",
|
|
156
|
+
"transition-colors duration-150",
|
|
157
|
+
isDragging
|
|
158
|
+
? "border-primary bg-primary/5"
|
|
159
|
+
: "border-surface-accent-300 dark:border-surface-accent-600",
|
|
160
|
+
"hover:border-primary hover:bg-primary/5",
|
|
161
|
+
"cursor-pointer"
|
|
162
|
+
)}
|
|
163
|
+
onDragOver={handleDragOver}
|
|
164
|
+
onDragLeave={handleDragLeave}
|
|
165
|
+
onDrop={handleDrop}
|
|
166
|
+
onClick={() => document.getElementById("file-upload-input")?.click()}
|
|
167
|
+
>
|
|
168
|
+
<CloudUploadIcon
|
|
169
|
+
size="large"
|
|
170
|
+
className={cls(
|
|
171
|
+
isDragging ? "text-primary" : "text-surface-accent-400"
|
|
172
|
+
)}
|
|
173
|
+
/>
|
|
174
|
+
<div className="text-center">
|
|
175
|
+
<Typography variant="body1" className="font-medium">
|
|
176
|
+
{t("media_drop_files")}
|
|
177
|
+
</Typography>
|
|
178
|
+
<Typography variant="caption" className="text-surface-accent-500">
|
|
179
|
+
{t("media_max_file_size", { size: formatSize(maxFileSize) })}
|
|
180
|
+
</Typography>
|
|
181
|
+
</div>
|
|
182
|
+
<input
|
|
183
|
+
id="file-upload-input"
|
|
184
|
+
type="file"
|
|
185
|
+
multiple
|
|
186
|
+
accept={acceptedMimeTypes?.join(",")}
|
|
187
|
+
onChange={handleFileSelect}
|
|
188
|
+
className="hidden"
|
|
189
|
+
/>
|
|
190
|
+
</div>
|
|
191
|
+
|
|
192
|
+
{/* Error Display */}
|
|
193
|
+
{error && (
|
|
194
|
+
<Typography variant="caption" className="text-red-500 mt-2 block whitespace-pre-line">
|
|
195
|
+
{error}
|
|
196
|
+
</Typography>
|
|
197
|
+
)}
|
|
198
|
+
|
|
199
|
+
{/* Selected Files */}
|
|
200
|
+
{selectedFiles.length > 0 && (
|
|
201
|
+
<div className="mt-4 space-y-2">
|
|
202
|
+
<Typography variant="caption" className="text-surface-accent-500">
|
|
203
|
+
{t("media_selected_files_count", { count: selectedFiles.length.toString() })}
|
|
204
|
+
</Typography>
|
|
205
|
+
<div className="max-h-40 overflow-auto space-y-1">
|
|
206
|
+
{selectedFiles.map((file, index) => (
|
|
207
|
+
<div
|
|
208
|
+
key={`${file.name}-${index}`}
|
|
209
|
+
className={cls(
|
|
210
|
+
"flex items-center justify-between p-2 rounded",
|
|
211
|
+
"bg-surface-accent-50 dark:bg-surface-accent-800"
|
|
212
|
+
)}
|
|
213
|
+
>
|
|
214
|
+
<div className="flex-1 min-w-0 mr-2">
|
|
215
|
+
<Typography variant="body2" className="truncate">
|
|
216
|
+
{file.name}
|
|
217
|
+
</Typography>
|
|
218
|
+
<Typography variant="caption" className="text-surface-accent-500">
|
|
219
|
+
{formatSize(file.size)}
|
|
220
|
+
</Typography>
|
|
221
|
+
</div>
|
|
222
|
+
<Button
|
|
223
|
+
variant="text"
|
|
224
|
+
size="small"
|
|
225
|
+
onClick={(e) => {
|
|
226
|
+
e.stopPropagation();
|
|
227
|
+
handleRemoveFile(index);
|
|
228
|
+
}}
|
|
229
|
+
disabled={uploading}
|
|
230
|
+
>
|
|
231
|
+
{t("media_remove")}
|
|
232
|
+
</Button>
|
|
233
|
+
</div>
|
|
234
|
+
))}
|
|
235
|
+
</div>
|
|
236
|
+
</div>
|
|
237
|
+
)}
|
|
238
|
+
</div>
|
|
239
|
+
</DialogContent>
|
|
240
|
+
|
|
241
|
+
<DialogActions>
|
|
242
|
+
<Button
|
|
243
|
+
variant="text"
|
|
244
|
+
onClick={handleClose}
|
|
245
|
+
disabled={uploading}
|
|
246
|
+
>
|
|
247
|
+
{t("cancel")}
|
|
248
|
+
</Button>
|
|
249
|
+
<Button
|
|
250
|
+
variant="filled"
|
|
251
|
+
onClick={handleUpload}
|
|
252
|
+
disabled={selectedFiles.length === 0 || uploading}
|
|
253
|
+
>
|
|
254
|
+
{uploading ? (
|
|
255
|
+
<>
|
|
256
|
+
<CircularProgress size="smallest" />
|
|
257
|
+
{t("media_uploading")}
|
|
258
|
+
</>
|
|
259
|
+
) : (
|
|
260
|
+
`${t("media_upload")} ${selectedFiles.length > 0 ? `(${selectedFiles.length})` : ""}`
|
|
261
|
+
)}
|
|
262
|
+
</Button>
|
|
263
|
+
</DialogActions>
|
|
264
|
+
</Dialog>
|
|
265
|
+
);
|
|
266
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export const mediaManagerTranslationsDe = {
|
|
2
|
+
media_library: "Mediathek",
|
|
3
|
+
media_library_description: "Bilder und Dateien verwalten",
|
|
4
|
+
media_search_assets: "Assets durchsuchen...",
|
|
5
|
+
media_grid_view: "Rasteransicht",
|
|
6
|
+
media_list_view: "Listenansicht",
|
|
7
|
+
media_refresh: "Aktualisieren",
|
|
8
|
+
media_upload: "Hochladen",
|
|
9
|
+
media_error_loading: "Fehler beim Laden der Assets: {{message}}",
|
|
10
|
+
media_try_again: "Erneut versuchen",
|
|
11
|
+
media_no_assets: "Noch keine Medien-Assets",
|
|
12
|
+
media_upload_first_file: "Laden Sie Ihre erste Datei hoch",
|
|
13
|
+
media_asset_updated: "Asset erfolgreich aktualisiert",
|
|
14
|
+
media_error_updating: "Fehler beim Aktualisieren des Assets: {{message}}",
|
|
15
|
+
media_asset_deleted: "Asset erfolgreich gelöscht",
|
|
16
|
+
media_error_deleting: "Fehler beim Löschen des Assets: {{message}}",
|
|
17
|
+
media_error_getting_url: "Fehler beim Abrufen der Download-URL",
|
|
18
|
+
media_preview_not_available: "Vorschau nicht verfügbar",
|
|
19
|
+
media_dimensions: "Abmessungen",
|
|
20
|
+
media_size: "Größe",
|
|
21
|
+
media_type: "Typ",
|
|
22
|
+
media_created: "Erstellt",
|
|
23
|
+
media_file_name: "Dateiname",
|
|
24
|
+
media_title: "Titel",
|
|
25
|
+
media_alt_text: "Alternativtext",
|
|
26
|
+
media_recommended_seo: "Empfohlen für SEO",
|
|
27
|
+
media_caption: "Bildunterschrift",
|
|
28
|
+
media_tags: "Schlagwörter",
|
|
29
|
+
media_add_tag: "Schlagwort hinzufügen...",
|
|
30
|
+
media_add: "Hinzufügen",
|
|
31
|
+
media_save_changes: "Änderungen speichern",
|
|
32
|
+
media_delete_asset: "Asset löschen?",
|
|
33
|
+
media_delete_confirmation: "Sind Sie sicher, dass Sie \"{{name}}\" löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.",
|
|
34
|
+
media_file_too_large: "{{name}}: Datei ist zu groß (max. {{size}})",
|
|
35
|
+
media_file_type_not_allowed: "{{name}}: Dateityp nicht zulässig",
|
|
36
|
+
media_upload_failed: "Hochladen fehlgeschlagen",
|
|
37
|
+
media_upload_files: "Dateien hochladen",
|
|
38
|
+
media_drop_files: "Dateien hier ablegen oder zum Durchsuchen klicken",
|
|
39
|
+
media_max_file_size: "Maximale Dateigröße: {{size}}",
|
|
40
|
+
media_selected_files_count: "Ausgewählte Dateien ({{count}})",
|
|
41
|
+
media_remove: "Entfernen",
|
|
42
|
+
media_uploading: "Wird hochgeladen...",
|
|
43
|
+
media_manage_description: "Verwalten Sie Ihre Mediendateien und Assets",
|
|
44
|
+
media_assets_count: "{{count}} Assets"
|
|
45
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export const mediaManagerTranslationsEn = {
|
|
2
|
+
media_library: "Media Library",
|
|
3
|
+
media_library_description: "Manage images and files",
|
|
4
|
+
media_search_assets: "Search assets...",
|
|
5
|
+
media_grid_view: "Grid view",
|
|
6
|
+
media_list_view: "List view",
|
|
7
|
+
media_refresh: "Refresh",
|
|
8
|
+
media_upload: "Upload",
|
|
9
|
+
media_error_loading: "Error loading assets: {{message}}",
|
|
10
|
+
media_try_again: "Try Again",
|
|
11
|
+
media_no_assets: "No media assets yet",
|
|
12
|
+
media_upload_first_file: "Upload your first file",
|
|
13
|
+
media_asset_updated: "Asset updated successfully",
|
|
14
|
+
media_error_updating: "Error updating asset: {{message}}",
|
|
15
|
+
media_asset_deleted: "Asset deleted successfully",
|
|
16
|
+
media_error_deleting: "Error deleting asset: {{message}}",
|
|
17
|
+
media_error_getting_url: "Error getting download URL",
|
|
18
|
+
media_preview_not_available: "Preview not available",
|
|
19
|
+
media_dimensions: "Dimensions",
|
|
20
|
+
media_size: "Size",
|
|
21
|
+
media_type: "Type",
|
|
22
|
+
media_created: "Created",
|
|
23
|
+
media_file_name: "File Name",
|
|
24
|
+
media_title: "Title",
|
|
25
|
+
media_alt_text: "Alt Text",
|
|
26
|
+
media_recommended_seo: "Recommended for SEO",
|
|
27
|
+
media_caption: "Caption",
|
|
28
|
+
media_tags: "Tags",
|
|
29
|
+
media_add_tag: "Add a tag...",
|
|
30
|
+
media_add: "Add",
|
|
31
|
+
media_save_changes: "Save Changes",
|
|
32
|
+
media_delete_asset: "Delete Asset?",
|
|
33
|
+
media_delete_confirmation: "Are you sure you want to delete \"{{name}}\"? This action cannot be undone.",
|
|
34
|
+
media_file_too_large: "{{name}}: File too large (max {{size}})",
|
|
35
|
+
media_file_type_not_allowed: "{{name}}: File type not allowed",
|
|
36
|
+
media_upload_failed: "Upload failed",
|
|
37
|
+
media_upload_files: "Upload Files",
|
|
38
|
+
media_drop_files: "Drop files here or click to browse",
|
|
39
|
+
media_max_file_size: "Maximum file size: {{size}}",
|
|
40
|
+
media_selected_files_count: "Selected files ({{count}})",
|
|
41
|
+
media_remove: "Remove",
|
|
42
|
+
media_uploading: "Uploading...",
|
|
43
|
+
media_manage_description: "Manage your media files and assets",
|
|
44
|
+
media_assets_count: "{{count}} assets"
|
|
45
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export const mediaManagerTranslationsEs = {
|
|
2
|
+
media_library: "Biblioteca de Medios",
|
|
3
|
+
media_library_description: "Gestionar imágenes y archivos",
|
|
4
|
+
media_search_assets: "Buscar recursos...",
|
|
5
|
+
media_grid_view: "Vista de cuadrícula",
|
|
6
|
+
media_list_view: "Vista de lista",
|
|
7
|
+
media_refresh: "Actualizar",
|
|
8
|
+
media_upload: "Subir",
|
|
9
|
+
media_error_loading: "Error al cargar recursos: {{message}}",
|
|
10
|
+
media_try_again: "Volver a intentar",
|
|
11
|
+
media_no_assets: "Aún no hay recursos multimedia",
|
|
12
|
+
media_upload_first_file: "Sube tu primer archivo",
|
|
13
|
+
media_asset_updated: "Recurso actualizado con éxito",
|
|
14
|
+
media_error_updating: "Error al actualizar recurso: {{message}}",
|
|
15
|
+
media_asset_deleted: "Recurso eliminado con éxito",
|
|
16
|
+
media_error_deleting: "Error al eliminar recurso: {{message}}",
|
|
17
|
+
media_error_getting_url: "Error al obtener URL de descarga",
|
|
18
|
+
media_preview_not_available: "Vista previa no disponible",
|
|
19
|
+
media_dimensions: "Dimensiones",
|
|
20
|
+
media_size: "Tamaño",
|
|
21
|
+
media_type: "Tipo",
|
|
22
|
+
media_created: "Creado",
|
|
23
|
+
media_file_name: "Nombre del archivo",
|
|
24
|
+
media_title: "Título",
|
|
25
|
+
media_alt_text: "Texto alternativo",
|
|
26
|
+
media_recommended_seo: "Recomendado para SEO",
|
|
27
|
+
media_caption: "Leyenda",
|
|
28
|
+
media_tags: "Etiquetas",
|
|
29
|
+
media_add_tag: "Añadir una etiqueta...",
|
|
30
|
+
media_add: "Añadir",
|
|
31
|
+
media_save_changes: "Guardar cambios",
|
|
32
|
+
media_delete_asset: "¿Eliminar recurso?",
|
|
33
|
+
media_delete_confirmation: "¿Estás seguro de que deseas eliminar \"{{name}}\"? Esta acción no se puede deshacer.",
|
|
34
|
+
media_file_too_large: "{{name}}: Archivo demasiado grande (máx. {{size}})",
|
|
35
|
+
media_file_type_not_allowed: "{{name}}: Tipo de archivo no permitido",
|
|
36
|
+
media_upload_failed: "Error al subir",
|
|
37
|
+
media_upload_files: "Subir archivos",
|
|
38
|
+
media_drop_files: "Suelta archivos aquí o haz clic para buscar",
|
|
39
|
+
media_max_file_size: "Tamaño máximo de archivo: {{size}}",
|
|
40
|
+
media_selected_files_count: "Archivos seleccionados ({{count}})",
|
|
41
|
+
media_remove: "Quitar",
|
|
42
|
+
media_uploading: "Subiendo...",
|
|
43
|
+
media_manage_description: "Gestiona tus archivos y recursos multimedia",
|
|
44
|
+
media_assets_count: "{{count}} recursos"
|
|
45
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export const mediaManagerTranslationsFr = {
|
|
2
|
+
media_library: "Médiathèque",
|
|
3
|
+
media_library_description: "Gérer les images et les fichiers",
|
|
4
|
+
media_search_assets: "Rechercher des éléments...",
|
|
5
|
+
media_grid_view: "Vue en grille",
|
|
6
|
+
media_list_view: "Vue en liste",
|
|
7
|
+
media_refresh: "Rafraîchir",
|
|
8
|
+
media_upload: "Télécharger",
|
|
9
|
+
media_error_loading: "Erreur lors du chargement des éléments : {{message}}",
|
|
10
|
+
media_try_again: "Réessayer",
|
|
11
|
+
media_no_assets: "Pas encore d'éléments multimédias",
|
|
12
|
+
media_upload_first_file: "Téléchargez votre premier fichier",
|
|
13
|
+
media_asset_updated: "Élément mis à jour avec succès",
|
|
14
|
+
media_error_updating: "Erreur lors de la mise à jour de l'élément : {{message}}",
|
|
15
|
+
media_asset_deleted: "Élément supprimé avec succès",
|
|
16
|
+
media_error_deleting: "Erreur lors de la suppression de l'élément : {{message}}",
|
|
17
|
+
media_error_getting_url: "Erreur lors de l'obtention de l'URL de téléchargement",
|
|
18
|
+
media_preview_not_available: "Aperçu non disponible",
|
|
19
|
+
media_dimensions: "Dimensions",
|
|
20
|
+
media_size: "Taille",
|
|
21
|
+
media_type: "Type",
|
|
22
|
+
media_created: "Créé",
|
|
23
|
+
media_file_name: "Nom du fichier",
|
|
24
|
+
media_title: "Titre",
|
|
25
|
+
media_alt_text: "Texte alternatif",
|
|
26
|
+
media_recommended_seo: "Recommandé pour le référencement (SEO)",
|
|
27
|
+
media_caption: "Légende",
|
|
28
|
+
media_tags: "Balises",
|
|
29
|
+
media_add_tag: "Ajouter une balise...",
|
|
30
|
+
media_add: "Ajouter",
|
|
31
|
+
media_save_changes: "Enregistrer les modifications",
|
|
32
|
+
media_delete_asset: "Supprimer l'élément ?",
|
|
33
|
+
media_delete_confirmation: "Êtes-vous sûr de vouloir supprimer \"{{name}}\" ? Cette action ne peut pas être annulée.",
|
|
34
|
+
media_file_too_large: "{{name}} : Fichier trop volumineux (max {{size}})",
|
|
35
|
+
media_file_type_not_allowed: "{{name}} : Type de fichier non autorisé",
|
|
36
|
+
media_upload_failed: "Le téléchargement a échoué",
|
|
37
|
+
media_upload_files: "Télécharger des fichiers",
|
|
38
|
+
media_drop_files: "Déposez les fichiers ici ou cliquez pour parcourir",
|
|
39
|
+
media_max_file_size: "Taille maximale du fichier : {{size}}",
|
|
40
|
+
media_selected_files_count: "Fichiers sélectionnés ({{count}})",
|
|
41
|
+
media_remove: "Retirer",
|
|
42
|
+
media_uploading: "Téléchargement en cours...",
|
|
43
|
+
media_manage_description: "Gérez vos fichiers et éléments multimédias",
|
|
44
|
+
media_assets_count: "{{count}} éléments"
|
|
45
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export const mediaManagerTranslationsHi = {
|
|
2
|
+
media_library: "मीडिया लाइब्रेरी",
|
|
3
|
+
media_library_description: "चित्र और फ़ाइलें प्रबंधित करें",
|
|
4
|
+
media_search_assets: "संपत्तियां खोजें...",
|
|
5
|
+
media_grid_view: "ग्रिड दृश्य",
|
|
6
|
+
media_list_view: "सूची दृश्य",
|
|
7
|
+
media_refresh: "रीफ्रेश करें",
|
|
8
|
+
media_upload: "अपलोड करें",
|
|
9
|
+
media_error_loading: "संपत्तियों को लोड करने में त्रुटि: {{message}}",
|
|
10
|
+
media_try_again: "पुनः प्रयास करें",
|
|
11
|
+
media_no_assets: "अभी तक कोई मीडिया संपत्ति नहीं",
|
|
12
|
+
media_upload_first_file: "अपनी पहली फ़ाइल अपलोड करें",
|
|
13
|
+
media_asset_updated: "संपत्ति सफलतापूर्वक अपडेट की गई",
|
|
14
|
+
media_error_updating: "संपत्ति को अपडेट करने में त्रुटि: {{message}}",
|
|
15
|
+
media_asset_deleted: "संपत्ति सफलतापूर्वक हटा दी गई",
|
|
16
|
+
media_error_deleting: "संपत्ति को हटाने में त्रुटि: {{message}}",
|
|
17
|
+
media_error_getting_url: "डाउनलोड URL प्राप्त करने में त्रुटि",
|
|
18
|
+
media_preview_not_available: "पूर्वावलोकन उपलब्ध नहीं है",
|
|
19
|
+
media_dimensions: "आयाम",
|
|
20
|
+
media_size: "आकार",
|
|
21
|
+
media_type: "प्रकार",
|
|
22
|
+
media_created: "बनाया गया",
|
|
23
|
+
media_file_name: "फ़ाइल का नाम",
|
|
24
|
+
media_title: "शीर्षक",
|
|
25
|
+
media_alt_text: "वैकल्पिक पाठ",
|
|
26
|
+
media_recommended_seo: "SEO के लिए अनुशंसित",
|
|
27
|
+
media_caption: "कैप्शन",
|
|
28
|
+
media_tags: "टैग",
|
|
29
|
+
media_add_tag: "एक टैग जोड़ें...",
|
|
30
|
+
media_add: "जोड़ें",
|
|
31
|
+
media_save_changes: "परिवर्तन सहेजें",
|
|
32
|
+
media_delete_asset: "संपत्ति हटाएं?",
|
|
33
|
+
media_delete_confirmation: "क्या आप निश्चित रूप से \"{{name}}\" को हटाना चाहते हैं? यह क्रिया पूर्ववत नहीं की जा सकती।",
|
|
34
|
+
media_file_too_large: "{{name}}: फ़ाइल बहुत बड़ी है (अधिकतम {{size}})",
|
|
35
|
+
media_file_type_not_allowed: "{{name}}: फ़ाइल प्रकार की अनुमति नहीं है",
|
|
36
|
+
media_upload_failed: "अपलोड विफल रहा",
|
|
37
|
+
media_upload_files: "फ़ाइलें अपलोड करें",
|
|
38
|
+
media_drop_files: "फ़ाइलें यहाँ छोड़ें या ब्राउज़ करने के लिए क्लिक करें",
|
|
39
|
+
media_max_file_size: "अधिकतम फ़ाइल आकार: {{size}}",
|
|
40
|
+
media_selected_files_count: "चयनित फ़ाइलें ({{count}})",
|
|
41
|
+
media_remove: "हटाएं",
|
|
42
|
+
media_uploading: "अपलोड हो रहा है...",
|
|
43
|
+
media_manage_description: "अपनी मीडिया फ़ाइलें और संपत्तियां प्रबंधित करें",
|
|
44
|
+
media_assets_count: "{{count}} संपत्तियां"
|
|
45
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export const mediaManagerTranslationsIt = {
|
|
2
|
+
media_library: "Libreria multimediale",
|
|
3
|
+
media_library_description: "Gestisci immagini e file",
|
|
4
|
+
media_search_assets: "Cerca risorse...",
|
|
5
|
+
media_grid_view: "Visualizzazione griglia",
|
|
6
|
+
media_list_view: "Visualizzazione elenco",
|
|
7
|
+
media_refresh: "Aggiorna",
|
|
8
|
+
media_upload: "Carica",
|
|
9
|
+
media_error_loading: "Errore durante il caricamento delle risorse: {{message}}",
|
|
10
|
+
media_try_again: "Riprova",
|
|
11
|
+
media_no_assets: "Nessuna risorsa multimediale ancora presente",
|
|
12
|
+
media_upload_first_file: "Carica il tuo primo file",
|
|
13
|
+
media_asset_updated: "Risorsa aggiornata con successo",
|
|
14
|
+
media_error_updating: "Errore durante l'aggiornamento della risorsa: {{message}}",
|
|
15
|
+
media_asset_deleted: "Risorsa eliminata con successo",
|
|
16
|
+
media_error_deleting: "Errore durante l'eliminazione della risorsa: {{message}}",
|
|
17
|
+
media_error_getting_url: "Errore durante il recupero dell'URL di download",
|
|
18
|
+
media_preview_not_available: "Anteprima non disponibile",
|
|
19
|
+
media_dimensions: "Dimensioni",
|
|
20
|
+
media_size: "Dimensione",
|
|
21
|
+
media_type: "Tipo",
|
|
22
|
+
media_created: "Creato",
|
|
23
|
+
media_file_name: "Nome file",
|
|
24
|
+
media_title: "Titolo",
|
|
25
|
+
media_alt_text: "Testo alternativo",
|
|
26
|
+
media_recommended_seo: "Consigliato per la SEO",
|
|
27
|
+
media_caption: "Didascalia",
|
|
28
|
+
media_tags: "Tag",
|
|
29
|
+
media_add_tag: "Aggiungi un tag...",
|
|
30
|
+
media_add: "Aggiungi",
|
|
31
|
+
media_save_changes: "Salva modifiche",
|
|
32
|
+
media_delete_asset: "Elimina risorsa?",
|
|
33
|
+
media_delete_confirmation: "Sei sicuro di voler eliminare \"{{name}}\"? Questa azione non può essere annullata.",
|
|
34
|
+
media_file_too_large: "{{name}}: File troppo grande (max {{size}})",
|
|
35
|
+
media_file_type_not_allowed: "{{name}}: Tipo di file non consentito",
|
|
36
|
+
media_upload_failed: "Caricamento fallito",
|
|
37
|
+
media_upload_files: "Carica file",
|
|
38
|
+
media_drop_files: "Rilascia i file qui o fai clic per sfogliare",
|
|
39
|
+
media_max_file_size: "Dimensione massima del file: {{size}}",
|
|
40
|
+
media_selected_files_count: "File selezionati ({{count}})",
|
|
41
|
+
media_remove: "Rimuovi",
|
|
42
|
+
media_uploading: "Caricamento in corso...",
|
|
43
|
+
media_manage_description: "Gestisci i tuoi file e risorse multimediali",
|
|
44
|
+
media_assets_count: "{{count}} risorse"
|
|
45
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export const mediaManagerTranslationsPt = {
|
|
2
|
+
media_library: "Biblioteca de Média",
|
|
3
|
+
media_library_description: "Gerir imagens e ficheiros",
|
|
4
|
+
media_search_assets: "Pesquisar recursos...",
|
|
5
|
+
media_grid_view: "Vista em grelha",
|
|
6
|
+
media_list_view: "Vista em lista",
|
|
7
|
+
media_refresh: "Atualizar",
|
|
8
|
+
media_upload: "Carregar",
|
|
9
|
+
media_error_loading: "Erro ao carregar recursos: {{message}}",
|
|
10
|
+
media_try_again: "Tentar Novamente",
|
|
11
|
+
media_no_assets: "Ainda não há recursos de média",
|
|
12
|
+
media_upload_first_file: "Carregue o seu primeiro ficheiro",
|
|
13
|
+
media_asset_updated: "Recurso atualizado com sucesso",
|
|
14
|
+
media_error_updating: "Erro ao atualizar recurso: {{message}}",
|
|
15
|
+
media_asset_deleted: "Recurso eliminado com sucesso",
|
|
16
|
+
media_error_deleting: "Erro ao eliminar recurso: {{message}}",
|
|
17
|
+
media_error_getting_url: "Erro ao obter URL de download",
|
|
18
|
+
media_preview_not_available: "Pré-visualização não disponível",
|
|
19
|
+
media_dimensions: "Dimensões",
|
|
20
|
+
media_size: "Tamanho",
|
|
21
|
+
media_type: "Tipo",
|
|
22
|
+
media_created: "Criado",
|
|
23
|
+
media_file_name: "Nome do Ficheiro",
|
|
24
|
+
media_title: "Título",
|
|
25
|
+
media_alt_text: "Texto Alternativo",
|
|
26
|
+
media_recommended_seo: "Recomendado para SEO",
|
|
27
|
+
media_caption: "Legenda",
|
|
28
|
+
media_tags: "Etiquetas",
|
|
29
|
+
media_add_tag: "Adicionar uma etiqueta...",
|
|
30
|
+
media_add: "Adicionar",
|
|
31
|
+
media_save_changes: "Guardar Alterações",
|
|
32
|
+
media_delete_asset: "Eliminar Recurso?",
|
|
33
|
+
media_delete_confirmation: "Tem a certeza de que quer eliminar \"{{name}}\"? Esta ação não pode ser desfeita.",
|
|
34
|
+
media_file_too_large: "{{name}}: Ficheiro demasiado grande (máx {{size}})",
|
|
35
|
+
media_file_type_not_allowed: "{{name}}: Tipo de ficheiro não permitido",
|
|
36
|
+
media_upload_failed: "Falha no carregamento",
|
|
37
|
+
media_upload_files: "Carregar Ficheiros",
|
|
38
|
+
media_drop_files: "Solte ficheiros aqui ou clique para navegar",
|
|
39
|
+
media_max_file_size: "Tamanho máximo de ficheiro: {{size}}",
|
|
40
|
+
media_selected_files_count: "Ficheiros selecionados ({{count}})",
|
|
41
|
+
media_remove: "Remover",
|
|
42
|
+
media_uploading: "A carregar...",
|
|
43
|
+
media_manage_description: "Gerir os seus ficheiros e recursos de média",
|
|
44
|
+
media_assets_count: "{{count}} recursos"
|
|
45
|
+
};
|