@firecms/collection_editor 3.1.0 → 3.2.0-canary.44dc65b

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 (63) hide show
  1. package/dist/index.es.js +6887 -3709
  2. package/dist/index.es.js.map +1 -1
  3. package/dist/index.umd.js +6885 -3707
  4. package/dist/index.umd.js.map +1 -1
  5. package/dist/locales/de.d.ts +118 -0
  6. package/dist/locales/en.d.ts +118 -0
  7. package/dist/locales/es.d.ts +118 -0
  8. package/dist/locales/fr.d.ts +118 -0
  9. package/dist/locales/hi.d.ts +118 -0
  10. package/dist/locales/it.d.ts +118 -0
  11. package/dist/locales/pt.d.ts +118 -0
  12. package/package.json +8 -8
  13. package/src/locales/de.ts +123 -0
  14. package/src/locales/en.ts +143 -0
  15. package/src/locales/es.ts +123 -0
  16. package/src/locales/fr.ts +123 -0
  17. package/src/locales/hi.ts +123 -0
  18. package/src/locales/it.ts +123 -0
  19. package/src/locales/pt.ts +123 -0
  20. package/src/ui/EditorCollectionAction.tsx +3 -3
  21. package/src/ui/EditorEntityAction.tsx +3 -2
  22. package/src/ui/NewCollectionButton.tsx +3 -1
  23. package/src/ui/NewCollectionCard.tsx +7 -4
  24. package/src/ui/PropertyAddColumnComponent.tsx +3 -2
  25. package/src/ui/collection_editor/AICollectionGeneratorPopover.tsx +11 -10
  26. package/src/ui/collection_editor/CollectionDetailsForm.tsx +26 -24
  27. package/src/ui/collection_editor/CollectionEditorDialog.tsx +42 -38
  28. package/src/ui/collection_editor/CollectionEditorWelcomeView.tsx +19 -18
  29. package/src/ui/collection_editor/CollectionPropertiesEditorForm.tsx +12 -10
  30. package/src/ui/collection_editor/DisplaySettingsForm.tsx +19 -17
  31. package/src/ui/collection_editor/EntityActionsEditTab.tsx +11 -12
  32. package/src/ui/collection_editor/EntityActionsSelectDialog.tsx +5 -6
  33. package/src/ui/collection_editor/EntityCustomViewsSelectDialog.tsx +5 -5
  34. package/src/ui/collection_editor/EnumForm.tsx +6 -2
  35. package/src/ui/collection_editor/ExtendSettingsForm.tsx +8 -7
  36. package/src/ui/collection_editor/GeneralSettingsForm.tsx +36 -38
  37. package/src/ui/collection_editor/GetCodeDialog.tsx +13 -12
  38. package/src/ui/collection_editor/KanbanConfigSection.tsx +11 -9
  39. package/src/ui/collection_editor/LayoutModeSwitch.tsx +7 -4
  40. package/src/ui/collection_editor/PropertyEditView.tsx +74 -65
  41. package/src/ui/collection_editor/SubcollectionsEditTab.tsx +16 -19
  42. package/src/ui/collection_editor/ViewModeSwitch.tsx +8 -6
  43. package/src/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx +6 -3
  44. package/src/ui/collection_editor/import/CollectionEditorImportMapping.tsx +5 -2
  45. package/src/ui/collection_editor/properties/BooleanPropertyField.tsx +3 -1
  46. package/src/ui/collection_editor/properties/CommonPropertyFields.tsx +6 -4
  47. package/src/ui/collection_editor/properties/DateTimePropertyField.tsx +20 -18
  48. package/src/ui/collection_editor/properties/EnumPropertyField.tsx +5 -4
  49. package/src/ui/collection_editor/properties/MapPropertyField.tsx +8 -7
  50. package/src/ui/collection_editor/properties/MarkdownPropertyField.tsx +22 -23
  51. package/src/ui/collection_editor/properties/NumberPropertyField.tsx +3 -1
  52. package/src/ui/collection_editor/properties/ReferencePropertyField.tsx +5 -4
  53. package/src/ui/collection_editor/properties/StoragePropertyField.tsx +46 -51
  54. package/src/ui/collection_editor/properties/StringPropertyField.tsx +3 -1
  55. package/src/ui/collection_editor/properties/UrlPropertyField.tsx +12 -10
  56. package/src/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.tsx +7 -4
  57. package/src/ui/collection_editor/properties/conditions/ConditionsEditor.tsx +8 -3
  58. package/src/ui/collection_editor/properties/validation/ArrayPropertyValidation.tsx +5 -2
  59. package/src/ui/collection_editor/properties/validation/GeneralPropertyValidation.tsx +7 -5
  60. package/src/ui/collection_editor/properties/validation/NumberPropertyValidation.tsx +10 -7
  61. package/src/ui/collection_editor/properties/validation/StringPropertyValidation.tsx +11 -9
  62. package/src/ui/collection_editor/properties/validation/ValidationPanel.tsx +4 -1
  63. package/src/useCollectionEditorPlugin.tsx +22 -6
@@ -0,0 +1,123 @@
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
+ tab_general: "Général",
78
+ tab_display: "Affichage",
79
+ tab_properties: "Propriétés",
80
+ tab_extend: "Extension",
81
+ unsaved_changes_in_collection: "Il y a des modifications non enregistrées dans cette collection",
82
+ error_persisting_collection: "Erreur lors de la sauvegarde de la collection : {{error}}",
83
+ details_in_console: "Détails dans la console",
84
+ error_inferring_collection: "Erreur lors de l'inférence de la collection : {{error}}",
85
+ collection_deleted: "Collection supprimée",
86
+ data_imported_successfully_msg: "Données importées avec succès",
87
+ must_specify_path: "Vous devez spécifier un chemin dans la base de données pour cette collection",
88
+ 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",
89
+ collection_path_odd_segments: "Les chemins de collection doivent avoir un nombre impair de segments : {{path}}",
90
+ collection_uses_path_as_id: "Il existe déjà une collection qui utilise cette valeur comme chemin",
91
+ collection_uses_this_id: "Il existe déjà une collection qui utilise cet ID",
92
+ delete_stored_config: "Supprimer la configuration enregistrée ?",
93
+ delete_stored_config_body: "Cela ne supprimera aucune donnée, uniquement la configuration enregistrée, et restaurera l'état du code.",
94
+ order_label: "Ordre",
95
+
96
+ // Collection Properties Editor
97
+ select_property_to_edit: "Sélectionnez une propriété pour la modifier",
98
+ add_first_property: "Vous pouvez maintenant ajouter votre première propriété",
99
+ add_new_property: "Ajouter une nouvelle propriété",
100
+ no_permission_add_properties: "Vous n'avez pas la permission d'ajouter de nouvelles propriétés",
101
+ get_code_for_collection: "Obtenir le code de cette collection",
102
+ add_properties_from_data: "Ajouter de nouvelles propriétés basées sur les données",
103
+ collection_name_placeholder: "Nom de la collection",
104
+ created_by: "Créé par {{name}}",
105
+ property_defined_as_builder: "Cette propriété est définie comme un property builder dans le code",
106
+
107
+ // Extend Settings
108
+ extend_title: "Extension",
109
+ extend_description: "Ajoutez des sous-collections, des vues personnalisées et des actions d’entité à cette collection.",
110
+ 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.",
111
+ reset_to_code: "Réinitialiser au code",
112
+
113
+ widget_group_text: "Texte",
114
+ widget_group_boolean: "Booléen",
115
+ widget_group_users: "Utilisateurs",
116
+ widget_group_select: "Sélection",
117
+ widget_group_number: "Nombre",
118
+ widget_group_file: "Fichier",
119
+ widget_group_reference: "Référence",
120
+ widget_group_date: "Date",
121
+ widget_group_group: "Groupe",
122
+ widget_group_array: "Liste"
123
+ };
@@ -0,0 +1,123 @@
1
+ export const collectionEditorTranslationsHi = {
2
+ file_upload_config: "फ़ाइल अपलोड कॉन्फ़िगरेशन",
3
+ file_type_images: "चित्र",
4
+ file_type_videos: "वीडियो",
5
+ file_type_audio: "ऑडियो फ़ाइलें",
6
+ file_type_applications: "फ़ाइलें (pdf, zip, csv, excel...)",
7
+ file_type_text: "टेक्स्ट फ़ाइलें",
8
+ only: "केवल",
9
+ all_file_types_allowed: "सभी फ़ाइल प्रकार अनुमत",
10
+ allowed_file_types: "अनुमत फ़ाइल प्रकार",
11
+ file_name_label: "फ़ाइल का नाम",
12
+ storage_path_label: "स्टोरेज पथ",
13
+ storage_placeholders_description: "आप फ़ाइल नाम और स्टोरेज पथ मानों में निम्नलिखित प्लेसहोल्डर्स का उपयोग कर सकते हैं:",
14
+ storage_placeholder_file: "{file} - अपलोड की गई फ़ाइल का पूरा नाम",
15
+ storage_placeholder_file_name: "{file.name} - एक्सटेंशन के बिना अपलोड की गई फ़ाइल का नाम",
16
+ storage_placeholder_file_ext: "{file.ext} - अपलोड की गई फ़ाइल का एक्सटेंशन",
17
+ storage_placeholder_entity_id: "{entityId} - इकाई की ID",
18
+ storage_placeholder_property_key: "{propertyKey} - इस फ़ील्ड की ID",
19
+ storage_placeholder_path: "{path} - इस इकाई का पथ",
20
+ storage_placeholder_rand: "{rand} - नाम टकराव से बचने के लिए यादृच्छिक मूल्य",
21
+ include_bucket_url: "सहेजे गए मान में बकेट URL (gs://...) शामिल करें",
22
+ include_bucket_url_description: "यदि आप केवल स्टोरेज पथ के बजाय पूरी तरह से योग्य स्टोरेज URL (जैसे gs://my-bucket/path/to/file) सहेजना चाहते हैं तो इस सेटिंग को चालू करें। आप इसे केवल निर्माण के समय बदल सकते हैं।",
23
+ save_url_instead_of_path: "स्टोरेज पथ के बजाय URL सहेजें",
24
+ save_url_description: "यदि आप स्टोरेज पथ के बजाय अपलोड की गई फ़ाइल का डाउनलोड URL सहेजना पसंद करते हैं तो इस सेटिंग को चालू करें। आप इसे केवल निर्माण के समय बदल सकते हैं।",
25
+ max_size_bytes: "अधिकतम आकार (बाइट में)",
26
+ image_resize_configuration: "छवि आकार बदलने का कॉन्फ़िगरेशन",
27
+ image_resize_description: "अपलोड से पहले स्वचालित रूप से छवियों का आकार बदलें और अनुकूलित करें (केवल JPEG, PNG, WebP)",
28
+ max_width_px: "अधिकतम चौड़ाई (px)",
29
+ max_height_px: "अधिकतम ऊंचाई (px)",
30
+ resize_mode: "आकार बदलने का मोड",
31
+ resize_contain: "समाहित करें",
32
+ resize_contain_description: "समाहित करें (सीमाओं के भीतर फ़िट करें)",
33
+ resize_cover: "कवर",
34
+ resize_cover_description: "कवर (सीमाएँ भरें, काट सकता है)",
35
+ output_format: "आउटपुट प्रारूप",
36
+ format_original: "मूल",
37
+ format_original_description: "मूल (समान प्रारूप रखें)",
38
+ format_webp_description: "WebP (सर्वोत्तम संपीड़न)",
39
+ quality_label: "गुणवत्ता (0–100)",
40
+ quality_hint: "उच्च गुणवत्ता = बड़ा फ़ाइल आकार। अनुशंसित: फ़ोटो के लिए 80–90, ग्राफ़िक्स के लिए 90–100",
41
+ preview_type: "पूर्वावलोकन प्रकार",
42
+ preview_image: "छवि",
43
+ preview_video: "वीडियो",
44
+ preview_audio: "ऑडियो",
45
+ display_url: "URL दिखाएँ",
46
+ default_value_not_set: "डिफ़ॉल्ट मान सेट नहीं है",
47
+ default_value_is: "डिफ़ॉल्ट मान {{value}} है",
48
+ default_value_was_cleared: "डिफ़ॉल्ट मान हटा दिया गया",
49
+ enum_missing_values: "इस enum प्रॉपर्टी में कुछ मान अनुपस्थित हैं",
50
+ mode_label: "मोड",
51
+ date_time_mode: "दिनांक/समय",
52
+ date_mode: "दिनांक",
53
+ automatic_value: "स्वचालित मान",
54
+ auto_on_create: "निर्माण पर",
55
+ auto_on_update: "किसी भी अपडेट पर",
56
+ auto_none: "कोई नहीं",
57
+ auto_value_description: "इकाई बनाते या अपडेट करते समय इस फ़ील्ड को स्वचालित रूप से अपडेट करें",
58
+ timezone_label: "समय क्षेत्र",
59
+ local_timezone: "स्थानीय समय क्षेत्र",
60
+ timezone_description: "तारीखों को प्रदर्शित और इनपुट करने के लिए समय क्षेत्र। मान हमेशा UTC में संग्रहीत होते हैं।",
61
+ target_collection: "लक्ष्य संग्रह",
62
+ views_group: "दृश्य",
63
+ add_property_to: "{{name}} में प्रॉपर्टी जोड़ें",
64
+ add_first_property_to_group: "इस समूह में पहली प्रॉपर्टी जोड़ें",
65
+ spread_children_as_columns: "बच्चों को कॉलम के रूप में फैलाएँ",
66
+ spread_children_description: "यदि आप इस समूह के बच्चों को व्यक्तिगत कॉलम के रूप में प्रदर्शित करना चाहते हैं तो इसे चालू करें। यह केवल शीर्ष स्तर के समूहों के लिए काम करता है।",
67
+ paste_behavior: "पेस्ट व्यवहार",
68
+ strip_html_on_paste: "पेस्ट करते समय HTML हटाएँ",
69
+ strip_html_description: "बाहरी स्रोतों से सामग्री पेस्ट करते समय HTML टैग और इनलाइन स्टाइल हटाएँ",
70
+ convert_pasted_to_markdown: "पेस्ट किए गए टेक्स्ट को markdown में बदलें",
71
+ convert_pasted_description: "रिच टेक्स्ट (Google Docs, Word, आदि से) को साफ़ markdown प्रारूप में बदलें",
72
+ markdown_url_note: "Markdown का उपयोग करते समय, अपलोड की गई फ़ाइलों का URL हमेशा टेक्स्ट मान में सहेजा जाता है (पथ नहीं)।",
73
+ hide_from_collection: "संग्रह से छिपाएँ",
74
+ hide_from_collection_tooltip: "इस फ़ील्ड को संग्रह दृश्य से छिपाएँ। यह फ़ॉर्म दृश्य में अभी भी दिखाई देगा",
75
+ read_only: "केवल पढ़ने के लिए",
76
+ read_only_tooltip: "क्या यह फ़ील्ड केवल पढ़ने के लिए है। केवल पूर्वावलोकन के रूप में प्रदर्शित करें",
77
+ tab_general: "सामान्य",
78
+ tab_display: "प्रदर्शन",
79
+ tab_properties: "प्रॉपर्टीज़",
80
+ tab_extend: "विस्तार",
81
+ unsaved_changes_in_collection: "इस संग्रह में असहेजे परिवर्तन हैं",
82
+ error_persisting_collection: "संग्रह सहेजने में त्रुटि: {{error}}",
83
+ details_in_console: "कंसोल में विवरण",
84
+ error_inferring_collection: "संग्रह अनुमान में त्रुटि: {{error}}",
85
+ collection_deleted: "संग्रह हटाया गया",
86
+ data_imported_successfully_msg: "डेटा सफलतापूर्वक आयातित",
87
+ must_specify_path: "आपको इस संग्रह के लिए डेटाबेस में एक पथ निर्दिष्ट करना होगा",
88
+ collection_path_already_exists: "निर्दिष्ट पथ के साथ पहले से ही एक संग्रह है। यदि आप एक ही डेटाबेस पथ के साथ कई संग्रह चाहते हैं, तो सुनिश्चित करें कि उनकी अलग-अलग ID हों",
89
+ collection_path_odd_segments: "संग्रह पथों में विषम संख्या में खंड होने चाहिए: {{path}}",
90
+ collection_uses_path_as_id: "पहले से ही एक संग्रह है जो इस मान को पथ के रूप में उपयोग करता है",
91
+ collection_uses_this_id: "पहले से ही एक संग्रह है जो इस ID का उपयोग करता है",
92
+ delete_stored_config: "सहेजा गया कॉन्फ़िगरेशन हटाएँ?",
93
+ delete_stored_config_body: "यह कोई डेटा नहीं हटाएगा, केवल सहेजा गया कॉन्फ़िगरेशन, और कोड स्थिति में रीसेट करेगा।",
94
+ order_label: "क्रम",
95
+
96
+ // Collection Properties Editor
97
+ select_property_to_edit: "संपादित करने के लिए एक प्रॉपर्टी चुनें",
98
+ add_first_property: "अब आप अपनी पहली प्रॉपर्टी जोड़ सकते हैं",
99
+ add_new_property: "नई प्रॉपर्टी जोड़ें",
100
+ no_permission_add_properties: "आपको नई प्रॉपर्टीज़ जोड़ने की अनुमति नहीं है",
101
+ get_code_for_collection: "इस संग्रह का कोड प्राप्त करें",
102
+ add_properties_from_data: "डेटा के आधार पर नई प्रॉपर्टीज़ जोड़ें",
103
+ collection_name_placeholder: "संग्रह का नाम",
104
+ created_by: "{{name}} द्वारा बनाया गया",
105
+ property_defined_as_builder: "यह प्रॉपर्टी कोड में property builder के रूप में परिभाषित है",
106
+
107
+ // Extend Settings
108
+ extend_title: "विस्तार",
109
+ extend_description: "इस संग्रह में उप-संग्रह, कस्टम दृश्य और इकाई क्रियाएँ जोड़ें।",
110
+ collection_defined_in_code: "यह संग्रह कोड में परिभाषित है। इस संपादक में किए गए परिवर्तन कोड में परिभाषित प्रॉपर्टीज़ को ओवरराइड करेंगे। आप ओवरराइड किए गए मानों को हटाकर कोड में परिभाषित स्थिति पर वापस जा सकते हैं।",
111
+ reset_to_code: "कोड पर रीसेट करें",
112
+
113
+ widget_group_text: "टेक्स्ट",
114
+ widget_group_boolean: "बूलियन",
115
+ widget_group_users: "उपयोगकर्ता",
116
+ widget_group_select: "चयन",
117
+ widget_group_number: "संख्या",
118
+ widget_group_file: "फ़ाइल",
119
+ widget_group_reference: "संदर्भ",
120
+ widget_group_date: "दिनांक",
121
+ widget_group_group: "समूह",
122
+ widget_group_array: "सूची"
123
+ };
@@ -0,0 +1,123 @@
1
+ export const collectionEditorTranslationsIt = {
2
+ file_upload_config: "Configurazione caricamento file",
3
+ file_type_images: "Immagini",
4
+ file_type_videos: "Video",
5
+ file_type_audio: "File audio",
6
+ file_type_applications: "File (pdf, zip, csv, excel...)",
7
+ file_type_text: "File di testo",
8
+ only: "Solo",
9
+ all_file_types_allowed: "Tutti i tipi di file consentiti",
10
+ allowed_file_types: "Tipi di file consentiti",
11
+ file_name_label: "Nome del file",
12
+ storage_path_label: "Percorso di archiviazione",
13
+ storage_placeholders_description: "Puoi utilizzare i seguenti segnaposto nei valori del nome file e del percorso di archiviazione:",
14
+ storage_placeholder_file: "{file} - Nome completo del file caricato",
15
+ storage_placeholder_file_name: "{file.name} - Nome del file caricato senza estensione",
16
+ storage_placeholder_file_ext: "{file.ext} - Estensione del file caricato",
17
+ storage_placeholder_entity_id: "{entityId} - ID dell'entità",
18
+ storage_placeholder_property_key: "{propertyKey} - ID di questo campo",
19
+ storage_placeholder_path: "{path} - Percorso di questa entità",
20
+ storage_placeholder_rand: "{rand} - Valore casuale per evitare conflitti di nomi",
21
+ include_bucket_url: "Includi URL del bucket (gs://...) nel valore salvato",
22
+ include_bucket_url_description: "Attiva questa impostazione se desideri salvare un URL di archiviazione completo (es. gs://mio-bucket/percorso/al/file) invece del solo percorso di archiviazione. Puoi modificare questa impostazione solo alla creazione.",
23
+ save_url_instead_of_path: "Salva URL invece del percorso di archiviazione",
24
+ save_url_description: "Attiva questa impostazione se preferisci salvare l'URL di download del file caricato invece del percorso di archiviazione. Puoi modificare questa impostazione solo alla creazione.",
25
+ max_size_bytes: "Dimensione massima (in byte)",
26
+ image_resize_configuration: "Configurazione ridimensionamento immagine",
27
+ image_resize_description: "Ridimensiona e ottimizza automaticamente le immagini prima del caricamento (solo JPEG, PNG, WebP)",
28
+ max_width_px: "Larghezza max (px)",
29
+ max_height_px: "Altezza max (px)",
30
+ resize_mode: "Modalità ridimensionamento",
31
+ resize_contain: "Contenere",
32
+ resize_contain_description: "Contenere (adatta ai limiti)",
33
+ resize_cover: "Coprire",
34
+ resize_cover_description: "Coprire (riempi i limiti, può ritagliare)",
35
+ output_format: "Formato di output",
36
+ format_original: "Originale",
37
+ format_original_description: "Originale (mantieni lo stesso formato)",
38
+ format_webp_description: "WebP (migliore compressione)",
39
+ quality_label: "Qualità (0–100)",
40
+ quality_hint: "Qualità superiore = file più grande. Consigliato: 80–90 per foto, 90–100 per grafica",
41
+ preview_type: "Tipo anteprima",
42
+ preview_image: "Immagine",
43
+ preview_video: "Video",
44
+ preview_audio: "Audio",
45
+ display_url: "Mostra URL",
46
+ default_value_not_set: "Valore predefinito non impostato",
47
+ default_value_is: "Il valore predefinito è {{value}}",
48
+ default_value_was_cleared: "Il valore predefinito è stato rimosso",
49
+ enum_missing_values: "Questa proprietà enum è incompleta",
50
+ mode_label: "Modalità",
51
+ date_time_mode: "Data/Ora",
52
+ date_mode: "Data",
53
+ automatic_value: "Valore automatico",
54
+ auto_on_create: "Alla creazione",
55
+ auto_on_update: "Ad ogni aggiornamento",
56
+ auto_none: "Nessuno",
57
+ auto_value_description: "Aggiorna questo campo automaticamente alla creazione o aggiornamento dell'entità",
58
+ timezone_label: "Fuso orario",
59
+ local_timezone: "Fuso orario locale",
60
+ timezone_description: "Fuso orario per la visualizzazione e l'inserimento delle date. I valori sono sempre memorizzati in UTC.",
61
+ target_collection: "Collezione di destinazione",
62
+ views_group: "Viste",
63
+ add_property_to: "Aggiungi proprietà a {{name}}",
64
+ add_first_property_to_group: "Aggiungi la prima proprietà a questo gruppo",
65
+ spread_children_as_columns: "Espandi figli come colonne",
66
+ spread_children_description: "Attiva questa opzione se desideri visualizzare i figli di questo gruppo come colonne individuali. Funziona solo per i gruppi di primo livello.",
67
+ paste_behavior: "Comportamento incolla",
68
+ strip_html_on_paste: "Rimuovi HTML all'incolla",
69
+ strip_html_description: "Rimuovi tag HTML e stili inline quando incolli contenuti da fonti esterne",
70
+ convert_pasted_to_markdown: "Converti testo incollato in markdown",
71
+ convert_pasted_description: "Converti testo formattato (da Google Docs, Word, ecc.) in formato markdown pulito",
72
+ markdown_url_note: "Quando si utilizza Markdown, gli URL dei file caricati vengono sempre salvati nel valore testo (non il percorso).",
73
+ hide_from_collection: "Nascondi dalla collezione",
74
+ hide_from_collection_tooltip: "Nascondi questo campo dalla vista collezione. Sarà comunque visibile nella vista modulo",
75
+ read_only: "Sola lettura",
76
+ read_only_tooltip: "Questo è un campo di sola lettura. Visualizza solo come anteprima",
77
+ tab_general: "Generale",
78
+ tab_display: "Visualizzazione",
79
+ tab_properties: "Proprietà",
80
+ tab_extend: "Estendi",
81
+ unsaved_changes_in_collection: "Ci sono modifiche non salvate in questa collezione",
82
+ error_persisting_collection: "Errore nel salvataggio della collezione: {{error}}",
83
+ details_in_console: "Dettagli nella console",
84
+ error_inferring_collection: "Errore nell'inferenza della collezione: {{error}}",
85
+ collection_deleted: "Collezione eliminata",
86
+ data_imported_successfully_msg: "Dati importati con successo",
87
+ must_specify_path: "Devi specificare un percorso nel database per questa collezione",
88
+ collection_path_already_exists: "Esiste già una collezione con il percorso specificato. Se desideri avere più collezioni con lo stesso percorso, assicurati che abbiano ID diversi",
89
+ collection_path_odd_segments: "I percorsi delle collezioni devono avere un numero dispari di segmenti: {{path}}",
90
+ collection_uses_path_as_id: "Esiste già una collezione che utilizza questo valore come percorso",
91
+ collection_uses_this_id: "Esiste già una collezione che utilizza questo ID",
92
+ delete_stored_config: "Eliminare la configurazione salvata?",
93
+ delete_stored_config_body: "Questo non eliminerà alcun dato, solo la configurazione salvata, e ripristinerà lo stato del codice.",
94
+ order_label: "Ordine",
95
+
96
+ // Collection Properties Editor
97
+ select_property_to_edit: "Seleziona una proprietà per modificarla",
98
+ add_first_property: "Ora puoi aggiungere la tua prima proprietà",
99
+ add_new_property: "Aggiungi nuova proprietà",
100
+ no_permission_add_properties: "Non hai i permessi per aggiungere nuove proprietà",
101
+ get_code_for_collection: "Ottieni il codice di questa collezione",
102
+ add_properties_from_data: "Aggiungi nuove proprietà basate sui dati",
103
+ collection_name_placeholder: "Nome della collezione",
104
+ created_by: "Creato da {{name}}",
105
+ property_defined_as_builder: "Questa proprietà è definita come property builder nel codice",
106
+
107
+ // Extend Settings
108
+ extend_title: "Estendi",
109
+ extend_description: "Aggiungi sotto-collezioni, viste personalizzate e azioni entità a questa collezione.",
110
+ collection_defined_in_code: "Questa collezione è definita nel codice. Le modifiche effettuate in questo editor sovrascriveranno le proprietà definite nel codice. Puoi eliminare i valori sovrascritti per tornare allo stato definito nel codice.",
111
+ reset_to_code: "Ripristina al codice",
112
+
113
+ widget_group_text: "Testo",
114
+ widget_group_boolean: "Booleano",
115
+ widget_group_users: "Utenti",
116
+ widget_group_select: "Selezione",
117
+ widget_group_number: "Numero",
118
+ widget_group_file: "File",
119
+ widget_group_reference: "Riferimento",
120
+ widget_group_date: "Data",
121
+ widget_group_group: "Gruppo",
122
+ widget_group_array: "Lista"
123
+ };
@@ -0,0 +1,123 @@
1
+ export const collectionEditorTranslationsPt = {
2
+ file_upload_config: "Configuração de upload de arquivo",
3
+ file_type_images: "Imagens",
4
+ file_type_videos: "Vídeos",
5
+ file_type_audio: "Arquivos de áudio",
6
+ file_type_applications: "Arquivos (pdf, zip, csv, excel...)",
7
+ file_type_text: "Arquivos de texto",
8
+ only: "Apenas",
9
+ all_file_types_allowed: "Todos os tipos de arquivo permitidos",
10
+ allowed_file_types: "Tipos de arquivo permitidos",
11
+ file_name_label: "Nome do arquivo",
12
+ storage_path_label: "Caminho de armazenamento",
13
+ storage_placeholders_description: "Você pode usar os seguintes marcadores nos valores do nome do arquivo e do caminho de armazenamento:",
14
+ storage_placeholder_file: "{file} - Nome completo do arquivo enviado",
15
+ storage_placeholder_file_name: "{file.name} - Nome do arquivo enviado sem extensão",
16
+ storage_placeholder_file_ext: "{file.ext} - Extensão do arquivo enviado",
17
+ storage_placeholder_entity_id: "{entityId} - ID da entidade",
18
+ storage_placeholder_property_key: "{propertyKey} - ID deste campo",
19
+ storage_placeholder_path: "{path} - Caminho desta entidade",
20
+ storage_placeholder_rand: "{rand} - Valor aleatório para evitar colisões de nomes",
21
+ include_bucket_url: "Incluir URL do bucket (gs://...) no valor salvo",
22
+ include_bucket_url_description: "Ative esta configuração se deseja salvar uma URL de armazenamento completa (ex. gs://meu-bucket/caminho/para/arquivo) em vez de apenas o caminho de armazenamento. Você só pode alterar esta configuração na criação.",
23
+ save_url_instead_of_path: "Salvar URL em vez do caminho de armazenamento",
24
+ save_url_description: "Ative esta configuração se preferir salvar a URL de download do arquivo enviado em vez do caminho de armazenamento. Você só pode alterar esta configuração na criação.",
25
+ max_size_bytes: "Tamanho máximo (em bytes)",
26
+ image_resize_configuration: "Configuração de redimensionamento de imagem",
27
+ image_resize_description: "Redimensionar e otimizar imagens automaticamente antes do upload (apenas JPEG, PNG, WebP)",
28
+ max_width_px: "Largura máx (px)",
29
+ max_height_px: "Altura máx (px)",
30
+ resize_mode: "Modo de redimensionamento",
31
+ resize_contain: "Conter",
32
+ resize_contain_description: "Conter (ajustar dentro dos limites)",
33
+ resize_cover: "Cobrir",
34
+ resize_cover_description: "Cobrir (preencher limites, pode cortar)",
35
+ output_format: "Formato de saída",
36
+ format_original: "Original",
37
+ format_original_description: "Original (manter mesmo formato)",
38
+ format_webp_description: "WebP (melhor compressão)",
39
+ quality_label: "Qualidade (0–100)",
40
+ quality_hint: "Maior qualidade = arquivo maior. Recomendado: 80–90 para fotos, 90–100 para gráficos",
41
+ preview_type: "Tipo de pré-visualização",
42
+ preview_image: "Imagem",
43
+ preview_video: "Vídeo",
44
+ preview_audio: "Áudio",
45
+ display_url: "Exibir URL",
46
+ default_value_not_set: "Valor padrão não definido",
47
+ default_value_is: "O valor padrão é {{value}}",
48
+ default_value_was_cleared: "O valor padrão foi removido",
49
+ enum_missing_values: "Esta propriedade enum está com valores faltando",
50
+ mode_label: "Modo",
51
+ date_time_mode: "Data/Hora",
52
+ date_mode: "Data",
53
+ automatic_value: "Valor automático",
54
+ auto_on_create: "Na criação",
55
+ auto_on_update: "Em qualquer atualização",
56
+ auto_none: "Nenhum",
57
+ auto_value_description: "Atualizar este campo automaticamente ao criar ou atualizar a entidade",
58
+ timezone_label: "Fuso horário",
59
+ local_timezone: "Fuso horário local",
60
+ timezone_description: "Fuso horário para exibir e inserir datas. Os valores são sempre armazenados em UTC.",
61
+ target_collection: "Coleção alvo",
62
+ views_group: "Visualizações",
63
+ add_property_to: "Adicionar propriedade a {{name}}",
64
+ add_first_property_to_group: "Adicione a primeira propriedade a este grupo",
65
+ spread_children_as_columns: "Expandir filhos como colunas",
66
+ spread_children_description: "Ative esta opção se deseja exibir os filhos deste grupo como colunas individuais. Isso só funciona para grupos de nível superior.",
67
+ paste_behavior: "Comportamento ao colar",
68
+ strip_html_on_paste: "Remover HTML ao colar",
69
+ strip_html_description: "Remover tags HTML e estilos inline ao colar conteúdo de fontes externas",
70
+ convert_pasted_to_markdown: "Converter texto colado em markdown",
71
+ convert_pasted_description: "Converter texto rico (do Google Docs, Word, etc.) em formato markdown limpo",
72
+ markdown_url_note: "Ao usar Markdown, as URLs dos arquivos enviados são sempre salvas no valor de texto (não o caminho).",
73
+ hide_from_collection: "Ocultar da coleção",
74
+ hide_from_collection_tooltip: "Ocultar este campo da visualização da coleção. Ele ainda estará visível na visualização do formulário",
75
+ read_only: "Somente leitura",
76
+ read_only_tooltip: "Este é um campo somente leitura. Exibir apenas como pré-visualização",
77
+ tab_general: "Geral",
78
+ tab_display: "Exibição",
79
+ tab_properties: "Propriedades",
80
+ tab_extend: "Estender",
81
+ unsaved_changes_in_collection: "Existem alterações não salvas nesta coleção",
82
+ error_persisting_collection: "Erro ao salvar a coleção: {{error}}",
83
+ details_in_console: "Detalhes no console",
84
+ error_inferring_collection: "Erro ao inferir a coleção: {{error}}",
85
+ collection_deleted: "Coleção excluída",
86
+ data_imported_successfully_msg: "Dados importados com sucesso",
87
+ must_specify_path: "Você deve especificar um caminho no banco de dados para esta coleção",
88
+ collection_path_already_exists: "Já existe uma coleção com o caminho especificado. Se deseja ter múltiplas coleções com o mesmo caminho de banco de dados, certifique-se de que tenham IDs diferentes",
89
+ collection_path_odd_segments: "Os caminhos de coleção devem ter um número ímpar de segmentos: {{path}}",
90
+ collection_uses_path_as_id: "Já existe uma coleção que usa este valor como caminho",
91
+ collection_uses_this_id: "Já existe uma coleção que usa este ID",
92
+ delete_stored_config: "Excluir a configuração salva?",
93
+ delete_stored_config_body: "Isso não excluirá nenhum dado, apenas a configuração salva, e restaurará ao estado do código.",
94
+ order_label: "Ordem",
95
+
96
+ // Collection Properties Editor
97
+ select_property_to_edit: "Selecione uma propriedade para editá-la",
98
+ add_first_property: "Agora você pode adicionar sua primeira propriedade",
99
+ add_new_property: "Adicionar nova propriedade",
100
+ no_permission_add_properties: "Você não tem permissão para adicionar novas propriedades",
101
+ get_code_for_collection: "Obter o código desta coleção",
102
+ add_properties_from_data: "Adicionar novas propriedades com base nos dados",
103
+ collection_name_placeholder: "Nome da coleção",
104
+ created_by: "Criado por {{name}}",
105
+ property_defined_as_builder: "Esta propriedade está definida como um property builder no código",
106
+
107
+ // Extend Settings
108
+ extend_title: "Estender",
109
+ extend_description: "Adicione subcoleções, visualizações personalizadas e ações de entidade a esta coleção.",
110
+ collection_defined_in_code: "Esta coleção está definida no código. As alterações feitas neste editor substituirão as propriedades definidas no código. Você pode excluir os valores substituídos para voltar ao estado definido no código.",
111
+ reset_to_code: "Restaurar ao código",
112
+
113
+ widget_group_text: "Texto",
114
+ widget_group_boolean: "Booleano",
115
+ widget_group_users: "Usuários",
116
+ widget_group_select: "Seleção",
117
+ widget_group_number: "Número",
118
+ widget_group_file: "Arquivo",
119
+ widget_group_reference: "Referência",
120
+ widget_group_date: "Data",
121
+ widget_group_group: "Grupo",
122
+ widget_group_array: "Lista"
123
+ };
@@ -1,4 +1,4 @@
1
- import { CollectionActionsProps, useAuthController, useNavigationController } from "@firecms/core";
1
+ import { CollectionActionsProps, useAuthController, useNavigationController, useTranslation } from "@firecms/core";
2
2
  import { IconButton, SettingsIcon, Tooltip, } from "@firecms/ui";
3
3
 
4
4
  import { useCollectionEditorController } from "../useCollectionEditorController";
@@ -16,7 +16,7 @@ export function EditorCollectionAction({
16
16
  const collectionEditorController = useCollectionEditorController();
17
17
 
18
18
  const parentCollection = navigationController.getCollectionFromIds(parentCollectionIds);
19
-
19
+ const { t } = useTranslation();
20
20
  const canEditCollection = collectionEditorController.configPermissions
21
21
  ? collectionEditorController.configPermissions({
22
22
  user: authController.user,
@@ -26,7 +26,7 @@ export function EditorCollectionAction({
26
26
 
27
27
  const editorButton = <Tooltip
28
28
  asChild={true}
29
- title={canEditCollection ? "Edit collection" : "You don't have permissions to edit this collection"}>
29
+ title={canEditCollection ? t("edit_collection") : t("no_permissions_edit_collection")}>
30
30
  <IconButton
31
31
  size={"small"}
32
32
  color={"primary"}
@@ -1,4 +1,4 @@
1
- import { PluginFormActionProps, useAuthController, useNavigationController } from "@firecms/core";
1
+ import { PluginFormActionProps, useAuthController, useNavigationController, useTranslation } from "@firecms/core";
2
2
  import { IconButton, SettingsIcon, Tooltip, } from "@firecms/ui";
3
3
 
4
4
  import { useCollectionEditorController } from "../useCollectionEditorController";
@@ -14,6 +14,7 @@ export function EditorEntityAction({
14
14
  const authController = useAuthController();
15
15
  const navigationController = useNavigationController();
16
16
  const collectionEditorController = useCollectionEditorController();
17
+ const { t } = useTranslation();
17
18
 
18
19
  const parentCollection = navigationController.getCollectionFromIds(parentCollectionIds);
19
20
 
@@ -28,7 +29,7 @@ export function EditorEntityAction({
28
29
 
29
30
  const editorButton = <Tooltip
30
31
  asChild={true}
31
- title={canEditCollection ? (isDirty ? "You need to save the document before changing the schema" : "Edit schema for this form") : "You don't have permissions to edit this collection"}>
32
+ title={canEditCollection ? (isDirty ? t("save_before_changing_schema") : t("edit_schema_for_this_form")) : t("no_permissions_to_edit_collection")}>
32
33
  <IconButton
33
34
  color={"primary"}
34
35
  disabled={!canEditCollection || isDirty}
@@ -1,7 +1,9 @@
1
1
  import { AddIcon, Button } from "@firecms/ui";
2
+ import { useTranslation } from "@firecms/core";
2
3
  import { useCollectionEditorController } from "../useCollectionEditorController";
3
4
 
4
5
  export function NewCollectionButton() {
6
+ const { t } = useTranslation();
5
7
  const collectionEditorController = useCollectionEditorController();
6
8
  return <div className={"bg-surface-50 dark:bg-surface-900 min-w-fit rounded"}>
7
9
  <Button className={"min-w-fit"}
@@ -12,7 +14,7 @@ export function NewCollectionButton() {
12
14
  sourceClick: "new_collection_button"
13
15
  })}>
14
16
  <AddIcon/>
15
- New collection
17
+ {t("new_collection")}
16
18
  </Button>
17
19
  </div>
18
20
  }
@@ -1,4 +1,4 @@
1
- import { PluginHomePageAdditionalCardsProps, useAuthController } from "@firecms/core";
1
+ import { PluginHomePageAdditionalCardsProps, useAuthController, useTranslation } from "@firecms/core";
2
2
  import { AddIcon, Card, cls, Typography } from "@firecms/ui";
3
3
  import { useCollectionEditorController } from "../useCollectionEditorController";
4
4
 
@@ -12,6 +12,8 @@ export function NewCollectionCard({
12
12
 
13
13
  const authController = useAuthController();
14
14
 
15
+ const { t } = useTranslation();
16
+
15
17
  const collectionEditorController = useCollectionEditorController();
16
18
  const canCreateCollections = collectionEditorController.configPermissions
17
19
  ? collectionEditorController.configPermissions({
@@ -35,11 +37,12 @@ export function NewCollectionCard({
35
37
  <AddIcon color="primary" size={"large"}/>
36
38
  <Typography color="primary"
37
39
  variant={"caption"}
38
- className={"font-medium"}>{"Add new collection".toUpperCase()}</Typography>
40
+ className={"font-medium"}>{t("add_new_collection").toUpperCase()}</Typography>
39
41
 
40
42
  {!canCreateCollections &&
41
- <Typography variant={"caption"}>You don&apos;t have permissions to create
42
- collections</Typography>
43
+ <Typography variant={"caption"}>
44
+ {t("no_permissions_create_collection")}
45
+ </Typography>
43
46
  }
44
47
  </div>
45
48
 
@@ -1,4 +1,4 @@
1
- import { EntityTableController, getDefaultPropertiesOrder, useAuthController } from "@firecms/core";
1
+ import { EntityTableController, getDefaultPropertiesOrder, useAuthController, useTranslation } from "@firecms/core";
2
2
  import { AddIcon, Tooltip } from "@firecms/ui";
3
3
  import { useCollectionEditorController } from "../useCollectionEditorController";
4
4
  import { PersistedCollection } from "../types/persisted_collection";
@@ -17,6 +17,7 @@ export function PropertyAddColumnComponent({
17
17
 
18
18
  const authController = useAuthController();
19
19
  const collectionEditorController = useCollectionEditorController();
20
+ const { t } = useTranslation();
20
21
  const canEditCollection = collectionEditorController.configPermissions
21
22
  ? collectionEditorController.configPermissions({
22
23
  user: authController.user,
@@ -27,7 +28,7 @@ export function PropertyAddColumnComponent({
27
28
  return (
28
29
  <Tooltip
29
30
  asChild={true}
30
- title={canEditCollection ? "Add new property" : "You don't have permission to add new properties"}>
31
+ title={canEditCollection ? t("add_new_property") : t("no_permission_add_properties")}>
31
32
  <div
32
33
  className={"p-0.5 w-20 h-full flex items-center justify-center cursor-pointer bg-surface-100 bg-opacity-40 bg-surface-100/40 hover:bg-surface-100 dark:bg-surface-950 dark:bg-opacity-40 dark:bg-surface-950/40 dark:hover:bg-surface-950"}
33
34
  // className={onHover ? "bg-white dark:bg-surface-950" : undefined}