@firecms/collection_editor 3.0.1 → 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.
Files changed (119) hide show
  1. package/dist/ConfigControllerProvider.d.ts +6 -0
  2. package/dist/api/generateCollectionApi.d.ts +71 -0
  3. package/dist/api/index.d.ts +1 -0
  4. package/dist/index.d.ts +5 -1
  5. package/dist/index.es.js +15260 -8173
  6. package/dist/index.es.js.map +1 -1
  7. package/dist/index.umd.js +15257 -8170
  8. package/dist/index.umd.js.map +1 -1
  9. package/dist/locales/de.d.ts +120 -0
  10. package/dist/locales/en.d.ts +120 -0
  11. package/dist/locales/es.d.ts +120 -0
  12. package/dist/locales/fr.d.ts +120 -0
  13. package/dist/locales/hi.d.ts +120 -0
  14. package/dist/locales/it.d.ts +120 -0
  15. package/dist/locales/pt.d.ts +120 -0
  16. package/dist/types/collection_editor_controller.d.ts +14 -0
  17. package/dist/types/collection_inference.d.ts +8 -2
  18. package/dist/types/config_controller.d.ts +23 -2
  19. package/dist/ui/AddKanbanColumnAction.d.ts +11 -0
  20. package/dist/ui/KanbanSetupAction.d.ts +10 -0
  21. package/dist/ui/collection_editor/AICollectionGeneratorPopover.d.ts +37 -0
  22. package/dist/ui/collection_editor/AIModifiedPathsContext.d.ts +20 -0
  23. package/dist/ui/collection_editor/CollectionDetailsForm.d.ts +2 -3
  24. package/dist/ui/collection_editor/CollectionEditorDialog.d.ts +24 -0
  25. package/dist/ui/collection_editor/CollectionEditorWelcomeView.d.ts +4 -1
  26. package/dist/ui/collection_editor/CollectionJsonImportDialog.d.ts +7 -0
  27. package/dist/ui/collection_editor/CollectionYupValidation.d.ts +9 -13
  28. package/dist/ui/collection_editor/DisplaySettingsForm.d.ts +3 -0
  29. package/dist/ui/collection_editor/EntityActionsEditTab.d.ts +2 -1
  30. package/dist/ui/collection_editor/ExtendSettingsForm.d.ts +14 -0
  31. package/dist/ui/collection_editor/GeneralSettingsForm.d.ts +7 -0
  32. package/dist/ui/collection_editor/KanbanConfigSection.d.ts +4 -0
  33. package/dist/ui/collection_editor/PropertyEditView.d.ts +6 -1
  34. package/dist/ui/collection_editor/PropertyTree.d.ts +2 -1
  35. package/dist/ui/collection_editor/SubcollectionsEditTab.d.ts +2 -1
  36. package/dist/ui/collection_editor/ViewModeSwitch.d.ts +6 -0
  37. package/dist/ui/collection_editor/properties/EnumPropertyField.d.ts +2 -1
  38. package/dist/ui/collection_editor/properties/conditions/ConditionsEditor.d.ts +10 -0
  39. package/dist/ui/collection_editor/properties/conditions/ConditionsPanel.d.ts +2 -0
  40. package/dist/ui/collection_editor/properties/conditions/EnumConditionsEditor.d.ts +6 -0
  41. package/dist/ui/collection_editor/properties/conditions/index.d.ts +6 -0
  42. package/dist/ui/collection_editor/properties/conditions/property_paths.d.ts +19 -0
  43. package/dist/useCollectionEditorPlugin.d.ts +7 -1
  44. package/dist/utils/validateCollectionJson.d.ts +22 -0
  45. package/package.json +15 -15
  46. package/src/ConfigControllerProvider.tsx +82 -47
  47. package/src/api/generateCollectionApi.ts +119 -0
  48. package/src/api/index.ts +1 -0
  49. package/src/index.ts +28 -1
  50. package/src/locales/de.ts +125 -0
  51. package/src/locales/en.ts +145 -0
  52. package/src/locales/es.ts +125 -0
  53. package/src/locales/fr.ts +125 -0
  54. package/src/locales/hi.ts +125 -0
  55. package/src/locales/it.ts +125 -0
  56. package/src/locales/pt.ts +125 -0
  57. package/src/types/collection_editor_controller.tsx +16 -3
  58. package/src/types/collection_inference.ts +15 -2
  59. package/src/types/config_controller.tsx +27 -2
  60. package/src/ui/AddKanbanColumnAction.tsx +203 -0
  61. package/src/ui/EditorCollectionAction.tsx +3 -3
  62. package/src/ui/EditorCollectionActionStart.tsx +1 -2
  63. package/src/ui/EditorEntityAction.tsx +3 -2
  64. package/src/ui/HomePageEditorCollectionAction.tsx +41 -13
  65. package/src/ui/KanbanSetupAction.tsx +38 -0
  66. package/src/ui/MissingReferenceWidget.tsx +1 -1
  67. package/src/ui/NewCollectionButton.tsx +4 -2
  68. package/src/ui/NewCollectionCard.tsx +7 -4
  69. package/src/ui/PropertyAddColumnComponent.tsx +4 -3
  70. package/src/ui/collection_editor/AICollectionGeneratorPopover.tsx +243 -0
  71. package/src/ui/collection_editor/AIModifiedPathsContext.tsx +88 -0
  72. package/src/ui/collection_editor/CollectionDetailsForm.tsx +222 -267
  73. package/src/ui/collection_editor/CollectionEditorDialog.tsx +270 -198
  74. package/src/ui/collection_editor/CollectionEditorWelcomeView.tsx +138 -71
  75. package/src/ui/collection_editor/CollectionJsonImportDialog.tsx +171 -0
  76. package/src/ui/collection_editor/CollectionPropertiesEditorForm.tsx +202 -101
  77. package/src/ui/collection_editor/DisplaySettingsForm.tsx +335 -0
  78. package/src/ui/collection_editor/EntityActionsEditTab.tsx +106 -97
  79. package/src/ui/collection_editor/EntityActionsSelectDialog.tsx +8 -10
  80. package/src/ui/collection_editor/EntityCustomViewsSelectDialog.tsx +5 -7
  81. package/src/ui/collection_editor/EnumForm.tsx +153 -102
  82. package/src/ui/collection_editor/ExtendSettingsForm.tsx +94 -0
  83. package/src/ui/collection_editor/GeneralSettingsForm.tsx +335 -0
  84. package/src/ui/collection_editor/GetCodeDialog.tsx +63 -41
  85. package/src/ui/collection_editor/KanbanConfigSection.tsx +209 -0
  86. package/src/ui/collection_editor/LayoutModeSwitch.tsx +27 -43
  87. package/src/ui/collection_editor/PropertyEditView.tsx +272 -199
  88. package/src/ui/collection_editor/PropertyFieldPreview.tsx +1 -1
  89. package/src/ui/collection_editor/PropertyTree.tsx +130 -58
  90. package/src/ui/collection_editor/SubcollectionsEditTab.tsx +169 -163
  91. package/src/ui/collection_editor/UnsavedChangesDialog.tsx +0 -2
  92. package/src/ui/collection_editor/ViewModeSwitch.tsx +43 -0
  93. package/src/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx +6 -3
  94. package/src/ui/collection_editor/import/CollectionEditorImportMapping.tsx +5 -2
  95. package/src/ui/collection_editor/properties/BlockPropertyField.tsx +0 -2
  96. package/src/ui/collection_editor/properties/BooleanPropertyField.tsx +4 -1
  97. package/src/ui/collection_editor/properties/CommonPropertyFields.tsx +6 -4
  98. package/src/ui/collection_editor/properties/DateTimePropertyField.tsx +126 -42
  99. package/src/ui/collection_editor/properties/EnumPropertyField.tsx +32 -24
  100. package/src/ui/collection_editor/properties/MapPropertyField.tsx +8 -9
  101. package/src/ui/collection_editor/properties/MarkdownPropertyField.tsx +128 -53
  102. package/src/ui/collection_editor/properties/NumberPropertyField.tsx +3 -1
  103. package/src/ui/collection_editor/properties/ReferencePropertyField.tsx +5 -4
  104. package/src/ui/collection_editor/properties/StoragePropertyField.tsx +47 -52
  105. package/src/ui/collection_editor/properties/StringPropertyField.tsx +3 -1
  106. package/src/ui/collection_editor/properties/UrlPropertyField.tsx +12 -10
  107. package/src/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.tsx +23 -4
  108. package/src/ui/collection_editor/properties/conditions/ConditionsEditor.tsx +866 -0
  109. package/src/ui/collection_editor/properties/conditions/ConditionsPanel.tsx +28 -0
  110. package/src/ui/collection_editor/properties/conditions/EnumConditionsEditor.tsx +599 -0
  111. package/src/ui/collection_editor/properties/conditions/index.ts +6 -0
  112. package/src/ui/collection_editor/properties/conditions/property_paths.ts +92 -0
  113. package/src/ui/collection_editor/properties/validation/ArrayPropertyValidation.tsx +5 -2
  114. package/src/ui/collection_editor/properties/validation/GeneralPropertyValidation.tsx +7 -5
  115. package/src/ui/collection_editor/properties/validation/NumberPropertyValidation.tsx +10 -7
  116. package/src/ui/collection_editor/properties/validation/StringPropertyValidation.tsx +11 -9
  117. package/src/ui/collection_editor/properties/validation/ValidationPanel.tsx +5 -2
  118. package/src/useCollectionEditorPlugin.tsx +53 -22
  119. package/src/utils/validateCollectionJson.ts +380 -0
@@ -0,0 +1,125 @@
1
+ export const collectionEditorTranslationsDe = {
2
+ file_upload_config: "Dateiupload-Konfiguration",
3
+ file_type_images: "Bilder",
4
+ file_type_videos: "Videos",
5
+ file_type_audio: "Audiodateien",
6
+ file_type_applications: "Dateien (pdf, zip, csv, excel...)",
7
+ file_type_text: "Textdateien",
8
+ only: "Nur",
9
+ all_file_types_allowed: "Alle Dateitypen erlaubt",
10
+ allowed_file_types: "Erlaubte Dateitypen",
11
+ file_name_label: "Dateiname",
12
+ storage_path_label: "Speicherpfad",
13
+ storage_placeholders_description: "Sie können die folgenden Platzhalter in den Werten für Dateiname und Speicherpfad verwenden:",
14
+ storage_placeholder_file: "{file} - Vollständiger Name der hochgeladenen Datei",
15
+ storage_placeholder_file_name: "{file.name} - Name der hochgeladenen Datei ohne Erweiterung",
16
+ storage_placeholder_file_ext: "{file.ext} - Erweiterung der hochgeladenen Datei",
17
+ storage_placeholder_entity_id: "{entityId} - ID der Entität",
18
+ storage_placeholder_property_key: "{propertyKey} - ID dieses Feldes",
19
+ storage_placeholder_path: "{path} - Pfad dieser Entität",
20
+ storage_placeholder_rand: "{rand} - Zufallswert zur Vermeidung von Namenskollisionen",
21
+ include_bucket_url: "Bucket-URL (gs://...) im gespeicherten Wert einschließen",
22
+ include_bucket_url_description: "Aktivieren Sie diese Einstellung, wenn Sie eine vollqualifizierte Speicher-URL (z. B. gs://mein-bucket/pfad/zur/datei) statt nur des Speicherpfads speichern möchten. Diese Einstellung kann nur bei der Erstellung geändert werden.",
23
+ save_url_instead_of_path: "URL statt Speicherpfad speichern",
24
+ save_url_description: "Aktivieren Sie diese Einstellung, wenn Sie bevorzugen, die Download-URL der hochgeladenen Datei statt des Speicherpfads zu speichern. Diese Einstellung kann nur bei der Erstellung geändert werden.",
25
+ max_size_bytes: "Maximale Größe (in Bytes)",
26
+ image_resize_configuration: "Bildgrößenanpassungs-Konfiguration",
27
+ image_resize_description: "Bilder vor dem Hochladen automatisch anpassen und optimieren (nur JPEG, PNG, WebP)",
28
+ max_width_px: "Maximale Breite (px)",
29
+ max_height_px: "Maximale Höhe (px)",
30
+ resize_mode: "Anpassungsmodus",
31
+ resize_contain: "Einpassen",
32
+ resize_contain_description: "Einpassen (innerhalb der Grenzen)",
33
+ resize_cover: "Abdecken",
34
+ resize_cover_description: "Abdecken (Grenzen füllen, kann zuschneiden)",
35
+ output_format: "Ausgabeformat",
36
+ format_original: "Original",
37
+ format_original_description: "Original (gleiches Format beibehalten)",
38
+ format_webp_description: "WebP (beste Komprimierung)",
39
+ quality_label: "Qualität (0–100)",
40
+ quality_hint: "Höhere Qualität = größere Datei. Empfohlen: 80–90 für Fotos, 90–100 für Grafiken",
41
+ preview_type: "Vorschautyp",
42
+ preview_image: "Bild",
43
+ preview_video: "Video",
44
+ preview_audio: "Audio",
45
+ display_url: "URL anzeigen",
46
+ default_value_not_set: "Standardwert nicht gesetzt",
47
+ default_value_is: "Standardwert ist {{value}}",
48
+ default_value_was_cleared: "Standardwert wurde gelöscht",
49
+ enum_missing_values: "Dieser Enum-Eigenschaft fehlen einige Werte",
50
+ mode_label: "Modus",
51
+ date_time_mode: "Datum/Uhrzeit",
52
+ date_mode: "Datum",
53
+ automatic_value: "Automatischer Wert",
54
+ auto_on_create: "Bei Erstellung",
55
+ auto_on_update: "Bei jeder Aktualisierung",
56
+ auto_none: "Keiner",
57
+ auto_value_description: "Dieses Feld automatisch beim Erstellen oder Aktualisieren der Entität aktualisieren",
58
+ timezone_label: "Zeitzone",
59
+ local_timezone: "Lokale Zeitzone",
60
+ timezone_description: "Zeitzone für die Anzeige und Eingabe von Daten. Werte werden immer in UTC gespeichert.",
61
+ target_collection: "Zielsammlung",
62
+ views_group: "Ansichten",
63
+ add_property_to: "Eigenschaft zu {{name}} hinzufügen",
64
+ add_first_property_to_group: "Erste Eigenschaft zu dieser Gruppe hinzufügen",
65
+ spread_children_as_columns: "Kinder als Spalten verteilen",
66
+ spread_children_description: "Setzen Sie dieses Flag auf true, wenn Sie die Kinder dieser Gruppe als einzelne Spalten anzeigen möchten. Dies funktioniert nur für Gruppen auf der obersten Ebene.",
67
+ paste_behavior: "Einfügeverhalten",
68
+ strip_html_on_paste: "HTML beim Einfügen entfernen",
69
+ strip_html_description: "HTML-Tags und Inline-Stile beim Einfügen von Inhalten aus externen Quellen entfernen",
70
+ convert_pasted_to_markdown: "Eingefügten Text in Markdown konvertieren",
71
+ convert_pasted_description: "Rich Text (von Google Docs, Word usw.) in sauberes Markdown-Format konvertieren",
72
+ markdown_url_note: "Bei Verwendung von Markdown werden die URLs der hochgeladenen Dateien immer im Textwert gespeichert (nicht der Pfad).",
73
+ hide_from_collection: "Aus Sammlung ausblenden",
74
+ hide_from_collection_tooltip: "Dieses Feld aus der Sammlungsansicht ausblenden. Es wird weiterhin in der Formularansicht sichtbar sein",
75
+ read_only: "Nur lesen",
76
+ read_only_tooltip: "Ist dieses Feld schreibgeschützt. Nur als Vorschau anzeigen",
77
+ nullable: "Nullable",
78
+ nullable_tooltip: "Erlaubt es, dieses Feld explizit auf null zu setzen. Dem Benutzer wird eine Löschen-Schaltfläche angezeigt",
79
+ tab_general: "Allgemein",
80
+ tab_display: "Anzeige",
81
+ tab_properties: "Eigenschaften",
82
+ tab_extend: "Erweitern",
83
+ unsaved_changes_in_collection: "Es gibt ungespeicherte Änderungen in dieser Sammlung",
84
+ error_persisting_collection: "Fehler beim Speichern der Sammlung: {{error}}",
85
+ details_in_console: "Details in der Konsole",
86
+ error_inferring_collection: "Fehler beim Ableiten der Sammlung: {{error}}",
87
+ collection_deleted: "Sammlung gelöscht",
88
+ data_imported_successfully_msg: "Daten erfolgreich importiert",
89
+ must_specify_path: "Sie müssen einen Pfad in der Datenbank für diese Sammlung angeben",
90
+ collection_path_already_exists: "Es gibt bereits eine Sammlung mit dem angegebenen Pfad. Wenn Sie mehrere Sammlungen mit demselben Datenbankpfad haben möchten, stellen Sie sicher, dass sie unterschiedliche IDs haben",
91
+ collection_path_odd_segments: "Sammlungspfade müssen eine ungerade Anzahl von Segmenten haben: {{path}}",
92
+ collection_uses_path_as_id: "Es gibt bereits eine Sammlung, die diesen Wert als Pfad verwendet",
93
+ collection_uses_this_id: "Es gibt bereits eine Sammlung, die diese ID verwendet",
94
+ delete_stored_config: "Gespeicherte Konfiguration löschen?",
95
+ delete_stored_config_body: "Dadurch werden keine Daten gelöscht, nur die gespeicherte Konfiguration, und der Code-Zustand wird wiederhergestellt.",
96
+ order_label: "Reihenfolge",
97
+
98
+ // Collection Properties Editor
99
+ select_property_to_edit: "Wähle eine Eigenschaft aus, um sie zu bearbeiten",
100
+ add_first_property: "Jetzt kannst du deine erste Eigenschaft hinzufügen",
101
+ add_new_property: "Neue Eigenschaft hinzufügen",
102
+ no_permission_add_properties: "Du hast keine Berechtigung, neue Eigenschaften hinzuzufügen",
103
+ get_code_for_collection: "Code für diese Sammlung abrufen",
104
+ add_properties_from_data: "Neue Eigenschaften basierend auf Daten hinzufügen",
105
+ collection_name_placeholder: "Sammlungsname",
106
+ created_by: "Erstellt von {{name}}",
107
+ property_defined_as_builder: "Diese Eigenschaft ist als Property Builder im Code definiert",
108
+
109
+ // Extend Settings
110
+ extend_title: "Erweitern",
111
+ extend_description: "Füge Untersammlungen, benutzerdefinierte Ansichten und Entitätsaktionen zu dieser Sammlung hinzu.",
112
+ collection_defined_in_code: "Diese Sammlung ist im Code definiert. Die in diesem Editor vorgenommenen Änderungen überschreiben die im Code definierten Eigenschaften. Du kannst die überschriebenen Werte löschen, um zum im Code definierten Zustand zurückzukehren.",
113
+ reset_to_code: "Auf Code zurücksetzen",
114
+
115
+ widget_group_text: "Text",
116
+ widget_group_boolean: "Boolean",
117
+ widget_group_users: "Benutzer",
118
+ widget_group_select: "Auswahl",
119
+ widget_group_number: "Zahl",
120
+ widget_group_file: "Datei",
121
+ widget_group_reference: "Referenz",
122
+ widget_group_date: "Datum",
123
+ widget_group_group: "Gruppe",
124
+ widget_group_array: "Array"
125
+ };
@@ -0,0 +1,145 @@
1
+ export const collectionEditorTranslationsEn = {
2
+ // Storage & File Upload
3
+ file_upload_config: "File upload config",
4
+ file_type_images: "Images",
5
+ file_type_videos: "Videos",
6
+ file_type_audio: "Audio files",
7
+ file_type_applications: "Files (pdf, zip, csv, excel...)",
8
+ file_type_text: "Text files",
9
+ only: "Only",
10
+ all_file_types_allowed: "All file types allowed",
11
+ allowed_file_types: "Allowed file types",
12
+ file_name_label: "File name",
13
+ storage_path_label: "Storage path",
14
+ storage_placeholders_description: "You can use the following placeholders in the file name and storage path values:",
15
+ storage_placeholder_file: "{file} - Full name of the uploaded file",
16
+ storage_placeholder_file_name: "{file.name} - Name of the uploaded file without extension",
17
+ storage_placeholder_file_ext: "{file.ext} - Extension of the uploaded file",
18
+ storage_placeholder_entity_id: "{entityId} - ID of the entity",
19
+ storage_placeholder_property_key: "{propertyKey} - ID of this field",
20
+ storage_placeholder_path: "{path} - Path of this entity",
21
+ storage_placeholder_rand: "{rand} - Random value used to avoid name collisions",
22
+ include_bucket_url: "Include bucket URL (gs://...) in saved value",
23
+ include_bucket_url_description: "Turn this setting on if you want to save a fully-qualified storage URL (e.g. gs://my-bucket/path/to/file) instead of just the storage path. You can only change this prop upon creation.",
24
+ save_url_instead_of_path: "Save URL instead of storage path",
25
+ save_url_description: "Turn this setting on, if you prefer to save the download URL of the uploaded file instead of the storage path. You can only change this prop upon creation.",
26
+ max_size_bytes: "Max size (in bytes)",
27
+ image_resize_configuration: "Image Resize Configuration",
28
+ image_resize_description: "Automatically resize and optimize images before upload (JPEG, PNG, WebP only)",
29
+ max_width_px: "Max width (px)",
30
+ max_height_px: "Max height (px)",
31
+ resize_mode: "Resize mode",
32
+ resize_contain: "Contain",
33
+ resize_contain_description: "Contain (fit within bounds)",
34
+ resize_cover: "Cover",
35
+ resize_cover_description: "Cover (fill bounds, may crop)",
36
+ output_format: "Output format",
37
+ format_original: "Original",
38
+ format_original_description: "Original (keep same format)",
39
+ format_webp_description: "WebP (best compression)",
40
+ quality_label: "Quality (0-100)",
41
+ quality_hint: "Higher quality = larger file size. Recommended: 80-90 for photos, 90-100 for graphics",
42
+
43
+ // URL Property
44
+ preview_type: "Preview type",
45
+ preview_image: "Image",
46
+ preview_video: "Video",
47
+ preview_audio: "Audio",
48
+ display_url: "Display URL",
49
+
50
+ // Boolean Property
51
+ default_value_not_set: "Default value not set",
52
+ default_value_is: "Default value is {{value}}",
53
+
54
+ // Enum Property
55
+ default_value_was_cleared: "Default value was cleared",
56
+ enum_missing_values: "This enum property is missing some values",
57
+
58
+ // DateTime Property
59
+ mode_label: "Mode",
60
+ date_time_mode: "Date/Time",
61
+ date_mode: "Date",
62
+ automatic_value: "Automatic value",
63
+ auto_on_create: "On create",
64
+ auto_on_update: "On any update",
65
+ auto_none: "None",
66
+ auto_value_description: "Update this field automatically when creating or updating the entity",
67
+ timezone_label: "Timezone",
68
+ local_timezone: "Local timezone",
69
+ timezone_description: "Timezone for displaying and inputting dates. Values are always stored in UTC.",
70
+
71
+ // Reference Property
72
+ target_collection: "Target collection",
73
+ views_group: "Views",
74
+
75
+ // Map Property
76
+ add_property_to: "Add property to {{name}}",
77
+ add_first_property_to_group: "Add the first property to this group",
78
+ spread_children_as_columns: "Spread children as columns",
79
+ spread_children_description: "Set this flag to true if you want to display the children of this group as individual columns. This will only work for top level groups.",
80
+
81
+ // Markdown Property
82
+ paste_behavior: "Paste behavior",
83
+ strip_html_on_paste: "Strip HTML on paste",
84
+ strip_html_description: "Remove HTML tags and inline styles when pasting content from external sources",
85
+ convert_pasted_to_markdown: "Convert pasted text to markdown",
86
+ convert_pasted_description: "Convert rich text (from Google Docs, Word, etc.) to clean markdown format",
87
+ markdown_url_note: "When using Markdown, the URL of the uploaded files are always saved in the text value (not the path).",
88
+
89
+ // Advanced Property
90
+ hide_from_collection: "Hide from collection",
91
+ hide_from_collection_tooltip: "Hide this field from the collection view. It will still be visible in the form view",
92
+ read_only: "Read only",
93
+ read_only_tooltip: "Is this a read only field. Display only as a preview",
94
+ nullable: "Nullable",
95
+ nullable_tooltip: "Allow this field to be explicitly set to null. A clear button will be shown to the user",
96
+
97
+ // Dialog & Tabs
98
+ tab_general: "General",
99
+ tab_display: "Display",
100
+ tab_properties: "Properties",
101
+ tab_extend: "Extend",
102
+ unsaved_changes_in_collection: "There are unsaved changes in this collection",
103
+ error_persisting_collection: "Error persisting collection: {{error}}",
104
+ details_in_console: "Details in the console",
105
+ error_inferring_collection: "Error inferring collection: {{error}}",
106
+ collection_deleted: "Collection deleted",
107
+ data_imported_successfully_msg: "Data imported successfully",
108
+ must_specify_path: "You must specify a path in the database for this collection",
109
+ collection_path_already_exists: "There is already a collection with the specified path. If you want to have multiple collections referring to the same database path, make sure they have different ids",
110
+ collection_path_odd_segments: "Collection paths must have an odd number of segments: {{path}}",
111
+ collection_uses_path_as_id: "There is already a collection that uses this value as a path",
112
+ collection_uses_this_id: "There is already a collection which uses this id",
113
+ delete_stored_config: "Delete the stored config?",
114
+ delete_stored_config_body: "This will not delete any data, only the stored config, and reset to the code state.",
115
+ order_label: "Order",
116
+
117
+ // Collection Properties Editor
118
+ select_property_to_edit: "Select a property to edit it",
119
+ add_first_property: "Now you can add your first property",
120
+ add_new_property: "Add new property",
121
+ no_permission_add_properties: "You don't have permission to add new properties",
122
+ get_code_for_collection: "Get the code for this collection",
123
+ add_properties_from_data: "Add new properties based on data",
124
+ collection_name_placeholder: "Collection name",
125
+ created_by: "Created by {{name}}",
126
+ property_defined_as_builder: "This property is defined as a property builder in code",
127
+
128
+ // Extend Settings
129
+ extend_title: "Extend",
130
+ extend_description: "Add subcollections, custom views, and entity actions to this collection.",
131
+ collection_defined_in_code: "This collection is defined in code. The changes done in this editor will override the properties defined in code. You can delete the overridden values to revert to the state defined in code.",
132
+ reset_to_code: "Reset to code",
133
+
134
+ // Widget Type Groups
135
+ widget_group_text: "Text",
136
+ widget_group_boolean: "Boolean",
137
+ widget_group_users: "Users",
138
+ widget_group_select: "Select",
139
+ widget_group_number: "Number",
140
+ widget_group_file: "File",
141
+ widget_group_reference: "Reference",
142
+ widget_group_date: "Date",
143
+ widget_group_group: "Group",
144
+ widget_group_array: "Array"
145
+ };
@@ -0,0 +1,125 @@
1
+ export const collectionEditorTranslationsEs = {
2
+ file_upload_config: "Configuración de subida de archivos",
3
+ file_type_images: "Imágenes",
4
+ file_type_videos: "Videos",
5
+ file_type_audio: "Archivos de audio",
6
+ file_type_applications: "Archivos (pdf, zip, csv, excel...)",
7
+ file_type_text: "Archivos de texto",
8
+ only: "Solo",
9
+ all_file_types_allowed: "Todos los tipos de archivo permitidos",
10
+ allowed_file_types: "Tipos de archivo permitidos",
11
+ file_name_label: "Nombre del archivo",
12
+ storage_path_label: "Ruta de almacenamiento",
13
+ storage_placeholders_description: "Puedes usar los siguientes marcadores en los valores del nombre de archivo y la ruta de almacenamiento:",
14
+ storage_placeholder_file: "{file} - Nombre completo del archivo subido",
15
+ storage_placeholder_file_name: "{file.name} - Nombre del archivo subido sin extensión",
16
+ storage_placeholder_file_ext: "{file.ext} - Extensión del archivo subido",
17
+ storage_placeholder_entity_id: "{entityId} - ID de la entidad",
18
+ storage_placeholder_property_key: "{propertyKey} - ID de este campo",
19
+ storage_placeholder_path: "{path} - Ruta de esta entidad",
20
+ storage_placeholder_rand: "{rand} - Valor aleatorio para evitar colisiones de nombres",
21
+ include_bucket_url: "Incluir URL del bucket (gs://...) en el valor guardado",
22
+ include_bucket_url_description: "Activa esta opción si deseas guardar una URL de almacenamiento completa (ej. gs://mi-bucket/ruta/al/archivo) en lugar de solo la ruta de almacenamiento. Solo puedes cambiar esta opción al crear.",
23
+ save_url_instead_of_path: "Guardar URL en lugar de ruta de almacenamiento",
24
+ save_url_description: "Activa esta opción si prefieres guardar la URL de descarga del archivo subido en lugar de la ruta de almacenamiento. Solo puedes cambiar esta opción al crear.",
25
+ max_size_bytes: "Tamaño máximo (en bytes)",
26
+ image_resize_configuration: "Configuración de redimensionamiento de imagen",
27
+ image_resize_description: "Redimensionar y optimizar imágenes automáticamente antes de subirlas (solo JPEG, PNG, WebP)",
28
+ max_width_px: "Ancho máximo (px)",
29
+ max_height_px: "Alto máximo (px)",
30
+ resize_mode: "Modo de redimensionamiento",
31
+ resize_contain: "Contener",
32
+ resize_contain_description: "Contener (ajustar dentro de los límites)",
33
+ resize_cover: "Cubrir",
34
+ resize_cover_description: "Cubrir (rellenar límites, puede recortar)",
35
+ output_format: "Formato de salida",
36
+ format_original: "Original",
37
+ format_original_description: "Original (mantener mismo formato)",
38
+ format_webp_description: "WebP (mejor compresión)",
39
+ quality_label: "Calidad (0–100)",
40
+ quality_hint: "Mayor calidad = archivo más grande. Recomendado: 80–90 para fotos, 90–100 para gráficos",
41
+ preview_type: "Tipo de vista previa",
42
+ preview_image: "Imagen",
43
+ preview_video: "Video",
44
+ preview_audio: "Audio",
45
+ display_url: "Mostrar URL",
46
+ default_value_not_set: "Valor predeterminado no establecido",
47
+ default_value_is: "El valor predeterminado es {{value}}",
48
+ default_value_was_cleared: "El valor predeterminado fue eliminado",
49
+ enum_missing_values: "A esta propiedad enum le faltan algunos valores",
50
+ mode_label: "Modo",
51
+ date_time_mode: "Fecha/Hora",
52
+ date_mode: "Fecha",
53
+ automatic_value: "Valor automático",
54
+ auto_on_create: "Al crear",
55
+ auto_on_update: "En cada actualización",
56
+ auto_none: "Ninguno",
57
+ auto_value_description: "Actualizar este campo automáticamente al crear o actualizar la entidad",
58
+ timezone_label: "Zona horaria",
59
+ local_timezone: "Zona horaria local",
60
+ timezone_description: "Zona horaria para mostrar e ingresar fechas. Los valores se almacenan siempre en UTC.",
61
+ target_collection: "Colección de destino",
62
+ views_group: "Vistas",
63
+ add_property_to: "Añadir propiedad a {{name}}",
64
+ add_first_property_to_group: "Añade la primera propiedad a este grupo",
65
+ spread_children_as_columns: "Distribuir hijos como columnas",
66
+ spread_children_description: "Activa esta opción si deseas mostrar los hijos de este grupo como columnas individuales. Solo funciona para grupos de nivel superior.",
67
+ paste_behavior: "Comportamiento al pegar",
68
+ strip_html_on_paste: "Eliminar HTML al pegar",
69
+ strip_html_description: "Eliminar etiquetas HTML y estilos en línea al pegar contenido de fuentes externas",
70
+ convert_pasted_to_markdown: "Convertir texto pegado a markdown",
71
+ convert_pasted_description: "Convertir texto enriquecido (de Google Docs, Word, etc.) a formato markdown limpio",
72
+ markdown_url_note: "Al usar Markdown, las URLs de los archivos subidos siempre se guardan en el valor de texto (no la ruta).",
73
+ hide_from_collection: "Ocultar de la colección",
74
+ hide_from_collection_tooltip: "Ocultar este campo de la vista de colección. Seguirá visible en la vista de formulario",
75
+ read_only: "Solo lectura",
76
+ read_only_tooltip: "Es un campo de solo lectura. Mostrar solo como vista previa",
77
+ nullable: "Nullable",
78
+ nullable_tooltip: "Permitir que este campo se establezca explícitamente como null. Se mostrará un botón de borrar al usuario",
79
+ tab_general: "General",
80
+ tab_display: "Visualización",
81
+ tab_properties: "Propiedades",
82
+ tab_extend: "Extender",
83
+ unsaved_changes_in_collection: "Hay cambios sin guardar en esta colección",
84
+ error_persisting_collection: "Error al guardar la colección: {{error}}",
85
+ details_in_console: "Detalles en la consola",
86
+ error_inferring_collection: "Error al inferir la colección: {{error}}",
87
+ collection_deleted: "Colección eliminada",
88
+ data_imported_successfully_msg: "Datos importados correctamente",
89
+ must_specify_path: "Debes especificar una ruta en la base de datos para esta colección",
90
+ collection_path_already_exists: "Ya existe una colección con la ruta especificada. Si deseas tener múltiples colecciones con la misma ruta de base de datos, asegúrate de que tengan IDs diferentes",
91
+ collection_path_odd_segments: "Las rutas de colección deben tener un número impar de segmentos: {{path}}",
92
+ collection_uses_path_as_id: "Ya existe una colección que usa este valor como ruta",
93
+ collection_uses_this_id: "Ya existe una colección que usa este ID",
94
+ delete_stored_config: "¿Eliminar la configuración almacenada?",
95
+ delete_stored_config_body: "Esto no eliminará ningún dato, solo la configuración almacenada, y se restaurará al estado del código.",
96
+ order_label: "Orden",
97
+
98
+ // Collection Properties Editor
99
+ select_property_to_edit: "Selecciona una propiedad para editarla",
100
+ add_first_property: "Ahora puedes añadir tu primera propiedad",
101
+ add_new_property: "Añadir nueva propiedad",
102
+ no_permission_add_properties: "No tienes permiso para añadir nuevas propiedades",
103
+ get_code_for_collection: "Obtener el código de esta colección",
104
+ add_properties_from_data: "Añadir nuevas propiedades basadas en datos",
105
+ collection_name_placeholder: "Nombre de la colección",
106
+ created_by: "Creado por {{name}}",
107
+ property_defined_as_builder: "Esta propiedad está definida como un property builder en código",
108
+
109
+ // Extend Settings
110
+ extend_title: "Extender",
111
+ extend_description: "Añade subcolecciones, vistas personalizadas y acciones de entidad a esta colección.",
112
+ collection_defined_in_code: "Esta colección está definida en código. Los cambios realizados en este editor sobreescribirán las propiedades definidas en código. Puedes eliminar los valores sobreescritos para volver al estado definido en código.",
113
+ reset_to_code: "Restablecer al código",
114
+
115
+ widget_group_text: "Texto",
116
+ widget_group_boolean: "Booleano",
117
+ widget_group_users: "Usuarios",
118
+ widget_group_select: "Selección",
119
+ widget_group_number: "Número",
120
+ widget_group_file: "Archivo",
121
+ widget_group_reference: "Referencia",
122
+ widget_group_date: "Fecha",
123
+ widget_group_group: "Grupo",
124
+ widget_group_array: "Lista"
125
+ };
@@ -0,0 +1,125 @@
1
+ export const collectionEditorTranslationsFr = {
2
+ file_upload_config: "Configuration du téléchargement de fichiers",
3
+ file_type_images: "Images",
4
+ file_type_videos: "Vidéos",
5
+ file_type_audio: "Fichiers audio",
6
+ file_type_applications: "Fichiers (pdf, zip, csv, excel...)",
7
+ file_type_text: "Fichiers texte",
8
+ only: "Uniquement",
9
+ all_file_types_allowed: "Tous les types de fichiers autorisés",
10
+ allowed_file_types: "Types de fichiers autorisés",
11
+ file_name_label: "Nom du fichier",
12
+ storage_path_label: "Chemin de stockage",
13
+ storage_placeholders_description: "Vous pouvez utiliser les espaces réservés suivants dans les valeurs du nom de fichier et du chemin de stockage :",
14
+ storage_placeholder_file: "{file} - Nom complet du fichier téléchargé",
15
+ storage_placeholder_file_name: "{file.name} - Nom du fichier téléchargé sans extension",
16
+ storage_placeholder_file_ext: "{file.ext} - Extension du fichier téléchargé",
17
+ storage_placeholder_entity_id: "{entityId} - ID de l'entité",
18
+ storage_placeholder_property_key: "{propertyKey} - ID de ce champ",
19
+ storage_placeholder_path: "{path} - Chemin de cette entité",
20
+ storage_placeholder_rand: "{rand} - Valeur aléatoire pour éviter les conflits de noms",
21
+ include_bucket_url: "Inclure l'URL du bucket (gs://...) dans la valeur enregistrée",
22
+ include_bucket_url_description: "Activez ce paramètre si vous souhaitez enregistrer une URL de stockage complète (ex. gs://mon-bucket/chemin/vers/fichier) au lieu du simple chemin de stockage. Vous ne pouvez modifier ce paramètre qu'à la création.",
23
+ save_url_instead_of_path: "Enregistrer l'URL au lieu du chemin de stockage",
24
+ save_url_description: "Activez ce paramètre si vous préférez enregistrer l'URL de téléchargement du fichier plutôt que le chemin de stockage. Vous ne pouvez modifier ce paramètre qu'à la création.",
25
+ max_size_bytes: "Taille maximale (en octets)",
26
+ image_resize_configuration: "Configuration du redimensionnement d'image",
27
+ image_resize_description: "Redimensionner et optimiser automatiquement les images avant le téléchargement (JPEG, PNG, WebP uniquement)",
28
+ max_width_px: "Largeur max (px)",
29
+ max_height_px: "Hauteur max (px)",
30
+ resize_mode: "Mode de redimensionnement",
31
+ resize_contain: "Contenir",
32
+ resize_contain_description: "Contenir (ajuster aux limites)",
33
+ resize_cover: "Couvrir",
34
+ resize_cover_description: "Couvrir (remplir les limites, peut rogner)",
35
+ output_format: "Format de sortie",
36
+ format_original: "Original",
37
+ format_original_description: "Original (conserver le même format)",
38
+ format_webp_description: "WebP (meilleure compression)",
39
+ quality_label: "Qualité (0–100)",
40
+ quality_hint: "Qualité plus élevée = fichier plus volumineux. Recommandé : 80–90 pour les photos, 90–100 pour les graphiques",
41
+ preview_type: "Type d'aperçu",
42
+ preview_image: "Image",
43
+ preview_video: "Vidéo",
44
+ preview_audio: "Audio",
45
+ display_url: "Afficher l'URL",
46
+ default_value_not_set: "Valeur par défaut non définie",
47
+ default_value_is: "La valeur par défaut est {{value}}",
48
+ default_value_was_cleared: "La valeur par défaut a été supprimée",
49
+ enum_missing_values: "Cette propriété enum est incomplète",
50
+ mode_label: "Mode",
51
+ date_time_mode: "Date/Heure",
52
+ date_mode: "Date",
53
+ automatic_value: "Valeur automatique",
54
+ auto_on_create: "À la création",
55
+ auto_on_update: "À chaque mise à jour",
56
+ auto_none: "Aucune",
57
+ auto_value_description: "Mettre à jour ce champ automatiquement lors de la création ou de la mise à jour de l'entité",
58
+ timezone_label: "Fuseau horaire",
59
+ local_timezone: "Fuseau horaire local",
60
+ timezone_description: "Fuseau horaire pour l'affichage et la saisie des dates. Les valeurs sont toujours stockées en UTC.",
61
+ target_collection: "Collection cible",
62
+ views_group: "Vues",
63
+ add_property_to: "Ajouter une propriété à {{name}}",
64
+ add_first_property_to_group: "Ajoutez la première propriété à ce groupe",
65
+ spread_children_as_columns: "Étendre les enfants en colonnes",
66
+ spread_children_description: "Activez cette option si vous souhaitez afficher les enfants de ce groupe en colonnes individuelles. Cela ne fonctionne que pour les groupes de premier niveau.",
67
+ paste_behavior: "Comportement du collage",
68
+ strip_html_on_paste: "Supprimer le HTML au collage",
69
+ strip_html_description: "Supprimer les balises HTML et les styles en ligne lors du collage de contenu provenant de sources externes",
70
+ convert_pasted_to_markdown: "Convertir le texte collé en markdown",
71
+ convert_pasted_description: "Convertir le texte enrichi (de Google Docs, Word, etc.) en format markdown propre",
72
+ markdown_url_note: "Avec Markdown, les URL des fichiers téléchargés sont toujours enregistrées dans la valeur texte (pas le chemin).",
73
+ hide_from_collection: "Masquer de la collection",
74
+ hide_from_collection_tooltip: "Masquer ce champ de la vue collection. Il restera visible dans la vue formulaire",
75
+ read_only: "Lecture seule",
76
+ read_only_tooltip: "Ce champ est en lecture seule. Affichage en aperçu uniquement",
77
+ nullable: "Nullable",
78
+ nullable_tooltip: "Permettre de définir explicitement ce champ comme null. Un bouton d'effacement sera affiché à l'utilisateur",
79
+ tab_general: "Général",
80
+ tab_display: "Affichage",
81
+ tab_properties: "Propriétés",
82
+ tab_extend: "Extension",
83
+ unsaved_changes_in_collection: "Il y a des modifications non enregistrées dans cette collection",
84
+ error_persisting_collection: "Erreur lors de la sauvegarde de la collection : {{error}}",
85
+ details_in_console: "Détails dans la console",
86
+ error_inferring_collection: "Erreur lors de l'inférence de la collection : {{error}}",
87
+ collection_deleted: "Collection supprimée",
88
+ data_imported_successfully_msg: "Données importées avec succès",
89
+ must_specify_path: "Vous devez spécifier un chemin dans la base de données pour cette collection",
90
+ collection_path_already_exists: "Il existe déjà une collection avec le chemin spécifié. Si vous souhaitez avoir plusieurs collections avec le même chemin, assurez-vous qu'elles ont des ID différents",
91
+ collection_path_odd_segments: "Les chemins de collection doivent avoir un nombre impair de segments : {{path}}",
92
+ collection_uses_path_as_id: "Il existe déjà une collection qui utilise cette valeur comme chemin",
93
+ collection_uses_this_id: "Il existe déjà une collection qui utilise cet ID",
94
+ delete_stored_config: "Supprimer la configuration enregistrée ?",
95
+ delete_stored_config_body: "Cela ne supprimera aucune donnée, uniquement la configuration enregistrée, et restaurera l'état du code.",
96
+ order_label: "Ordre",
97
+
98
+ // Collection Properties Editor
99
+ select_property_to_edit: "Sélectionnez une propriété pour la modifier",
100
+ add_first_property: "Vous pouvez maintenant ajouter votre première propriété",
101
+ add_new_property: "Ajouter une nouvelle propriété",
102
+ no_permission_add_properties: "Vous n'avez pas la permission d'ajouter de nouvelles propriétés",
103
+ get_code_for_collection: "Obtenir le code de cette collection",
104
+ add_properties_from_data: "Ajouter de nouvelles propriétés basées sur les données",
105
+ collection_name_placeholder: "Nom de la collection",
106
+ created_by: "Créé par {{name}}",
107
+ property_defined_as_builder: "Cette propriété est définie comme un property builder dans le code",
108
+
109
+ // Extend Settings
110
+ extend_title: "Extension",
111
+ extend_description: "Ajoutez des sous-collections, des vues personnalisées et des actions d’entité à cette collection.",
112
+ collection_defined_in_code: "Cette collection est définie dans le code. Les modifications effectuées dans cet éditeur remplaceront les propriétés définies dans le code. Vous pouvez supprimer les valeurs remplacées pour revenir à l'état défini dans le code.",
113
+ reset_to_code: "Réinitialiser au code",
114
+
115
+ widget_group_text: "Texte",
116
+ widget_group_boolean: "Booléen",
117
+ widget_group_users: "Utilisateurs",
118
+ widget_group_select: "Sélection",
119
+ widget_group_number: "Nombre",
120
+ widget_group_file: "Fichier",
121
+ widget_group_reference: "Référence",
122
+ widget_group_date: "Date",
123
+ widget_group_group: "Groupe",
124
+ widget_group_array: "Liste"
125
+ };