@firecms/core 3.3.0-canary.d3242eb → 3.4.0-canary.00f9be5

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 (221) hide show
  1. package/README.md +4 -0
  2. package/dist/app/useApp.d.ts +1 -0
  3. package/dist/components/EntityCollectionTable/column_utils.d.ts +4 -3
  4. package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +6 -1
  5. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +3 -1
  6. package/dist/components/EntityCollectionView/EntityCollectionBoardView.d.ts +3 -1
  7. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +8 -0
  8. package/dist/components/EntityCollectionView/EntityCollectionViewActions.d.ts +3 -1
  9. package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +3 -1
  10. package/dist/components/EntityCollectionView/FiltersDialog.d.ts +2 -1
  11. package/dist/components/EntityCollectionView/useBoardDataController.d.ts +3 -1
  12. package/dist/components/EntityPreview.d.ts +3 -1
  13. package/dist/components/ErrorBoundary.d.ts +1 -3
  14. package/dist/components/LicenseBanner.d.ts +23 -0
  15. package/dist/components/ReferenceTable/ReferenceSelectionTable.d.ts +10 -1
  16. package/dist/components/SelectableTable/filters/filter_text_input.d.ts +30 -0
  17. package/dist/components/SelectableTable/filters/filter_text_input.test.d.ts +1 -0
  18. package/dist/components/common/table_url_params.d.ts +24 -0
  19. package/dist/components/common/useDataSourceTableController.d.ts +9 -1
  20. package/dist/components/common/useTableSearchHelper.d.ts +9 -1
  21. package/dist/components/index.d.ts +1 -0
  22. package/dist/contexts/LicenseStatusContext.d.ts +16 -0
  23. package/dist/core/DefaultDrawer.d.ts +10 -3
  24. package/dist/core/EntityEditView.d.ts +9 -1
  25. package/dist/core/EntityEditViewFormActions.d.ts +1 -1
  26. package/dist/core/field_configs.d.ts +1 -1
  27. package/dist/core/index.d.ts +1 -0
  28. package/dist/core/plugin_translations.d.ts +38 -0
  29. package/dist/core/pro_plugins.d.ts +40 -0
  30. package/dist/de-BF5vcQPY.js +703 -0
  31. package/dist/de-BF5vcQPY.js.map +1 -0
  32. package/dist/editor/extensions/Image.d.ts +11 -0
  33. package/dist/editor/index.d.ts +2 -1
  34. package/dist/editor/lazy_editor.d.ts +6 -0
  35. package/dist/editor-BSo_aS1I.js +4563 -0
  36. package/dist/editor-BSo_aS1I.js.map +1 -0
  37. package/dist/form/EntityForm.d.ts +8 -1
  38. package/dist/form/EntityFormActions.d.ts +2 -0
  39. package/dist/form/field_bindings/GeopointFieldBinding.d.ts +5 -0
  40. package/dist/form/index.d.ts +1 -0
  41. package/dist/fr-DH9_wyFI.js +703 -0
  42. package/dist/fr-DH9_wyFI.js.map +1 -0
  43. package/dist/hi-BM8dm1Lu.js +703 -0
  44. package/dist/hi-BM8dm1Lu.js.map +1 -0
  45. package/dist/hooks/data/delete.d.ts +1 -1
  46. package/dist/hooks/data/save.d.ts +1 -1
  47. package/dist/hooks/data/useCollectionFetch.d.ts +7 -1
  48. package/dist/hooks/data/useEntityFetch.d.ts +9 -1
  49. package/dist/hooks/index.d.ts +2 -0
  50. package/dist/hooks/useLicenseStatus.d.ts +16 -0
  51. package/dist/hooks/useProjectLog.d.ts +11 -6
  52. package/dist/hooks/useTranslation.d.ts +1 -1
  53. package/dist/i18n/__tests__/FireCMSi18nProvider.test.d.ts +1 -0
  54. package/dist/i18n/__tests__/nested_provider_lifecycle.test.d.ts +1 -0
  55. package/dist/index.es.js +4429 -10479
  56. package/dist/index.es.js.map +1 -1
  57. package/dist/index.umd.js +9313 -6582
  58. package/dist/index.umd.js.map +1 -1
  59. package/dist/it-D3K1gfe4.js +703 -0
  60. package/dist/it-D3K1gfe4.js.map +1 -0
  61. package/dist/locales/pl.d.ts +2 -0
  62. package/dist/pl-CP1zeLzn.js +705 -0
  63. package/dist/pl-CP1zeLzn.js.map +1 -0
  64. package/dist/preview/index.d.ts +1 -0
  65. package/dist/preview/property_previews/GeopointPropertyPreview.d.ts +4 -0
  66. package/dist/pt-Cus7eKQR.js +705 -0
  67. package/dist/pt-Cus7eKQR.js.map +1 -0
  68. package/dist/types/analytics.d.ts +1 -1
  69. package/dist/types/collections.d.ts +31 -0
  70. package/dist/types/datasource.d.ts +67 -4
  71. package/dist/types/entities.d.ts +21 -1
  72. package/dist/types/entity_actions.d.ts +6 -0
  73. package/dist/types/entity_callbacks.d.ts +21 -0
  74. package/dist/types/firecms.d.ts +18 -1
  75. package/dist/types/firecms_context.d.ts +8 -0
  76. package/dist/types/index.d.ts +1 -0
  77. package/dist/types/license.d.ts +55 -0
  78. package/dist/types/navigation.d.ts +34 -5
  79. package/dist/types/plugins.d.ts +22 -1
  80. package/dist/types/properties.d.ts +17 -1
  81. package/dist/types/side_entity_controller.d.ts +7 -0
  82. package/dist/types/translations.d.ts +54 -5
  83. package/dist/util/__tests__/collections.test.d.ts +1 -0
  84. package/dist/util/__tests__/urls.test.d.ts +1 -0
  85. package/dist/util/collections.d.ts +1 -1
  86. package/dist/util/date_fns_locales.d.ts +18 -0
  87. package/dist/util/entities.d.ts +1 -0
  88. package/dist/util/entity_cache.d.ts +11 -0
  89. package/dist/util/geopoint.d.ts +22 -0
  90. package/dist/util/index.d.ts +3 -0
  91. package/dist/util/lazy_eager.d.ts +3 -3
  92. package/dist/util/navigation_blocking.d.ts +22 -0
  93. package/dist/util/navigation_from_path.d.ts +17 -0
  94. package/dist/util/navigation_utils.d.ts +107 -3
  95. package/dist/util/parent_references_from_path.d.ts +16 -0
  96. package/dist/util/paths.d.ts +28 -0
  97. package/dist/util/permissions.d.ts +10 -4
  98. package/dist/util/urls.d.ts +22 -0
  99. package/package.json +17 -11
  100. package/src/app/Scaffold.tsx +54 -45
  101. package/src/app/useApp.tsx +1 -0
  102. package/src/components/DeleteEntityDialog.tsx +2 -0
  103. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +2 -2
  104. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +3 -1
  105. package/src/components/EntityCollectionTable/column_utils.tsx +11 -19
  106. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +1 -1
  107. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +7 -0
  108. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +5 -1
  109. package/src/components/EntityCollectionView/EntityCollectionBoardView.tsx +12 -0
  110. package/src/components/EntityCollectionView/EntityCollectionView.tsx +71 -17
  111. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +6 -2
  112. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +8 -1
  113. package/src/components/EntityCollectionView/FiltersDialog.tsx +39 -28
  114. package/src/components/EntityCollectionView/useBoardDataController.tsx +17 -1
  115. package/src/components/EntityPreview.tsx +45 -41
  116. package/src/components/ErrorBoundary.tsx +12 -18
  117. package/src/components/HomePage/NavigationCardBinding.tsx +6 -3
  118. package/src/components/LicenseBanner.tsx +207 -0
  119. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +19 -2
  120. package/src/components/ReferenceWidget.tsx +1 -1
  121. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +2 -2
  122. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +33 -7
  123. package/src/components/SelectableTable/filters/filter_text_input.test.ts +184 -0
  124. package/src/components/SelectableTable/filters/filter_text_input.ts +71 -0
  125. package/src/components/VirtualTable/VirtualTable.tsx +19 -8
  126. package/src/components/common/default_entity_actions.tsx +22 -2
  127. package/src/components/common/table_url_params.ts +172 -0
  128. package/src/components/common/useDataSourceTableController.tsx +126 -163
  129. package/src/components/common/useTableSearchHelper.ts +26 -2
  130. package/src/components/index.tsx +1 -0
  131. package/src/contexts/LicenseStatusContext.tsx +50 -0
  132. package/src/contexts/SnackbarProvider.tsx +14 -1
  133. package/src/core/DefaultAppBar.tsx +28 -16
  134. package/src/core/DefaultDrawer.tsx +151 -65
  135. package/src/core/DrawerNavigationGroup.tsx +27 -29
  136. package/src/core/DrawerNavigationItem.tsx +10 -12
  137. package/src/core/EntityEditView.tsx +77 -35
  138. package/src/core/EntityEditViewFormActions.tsx +3 -2
  139. package/src/core/EntitySidePanel.tsx +8 -4
  140. package/src/core/FireCMS.tsx +73 -47
  141. package/src/core/SideDialogs.tsx +44 -1
  142. package/src/core/field_configs.tsx +15 -0
  143. package/src/core/index.tsx +1 -0
  144. package/src/core/plugin_translations.ts +87 -0
  145. package/src/core/pro_plugins.ts +79 -0
  146. package/src/editor/components/SlashCommandMenu.tsx +4 -1
  147. package/src/editor/extensions/Image.ts +17 -1
  148. package/src/editor/hooks/useProseMirror.ts +5 -0
  149. package/src/editor/index.ts +11 -1
  150. package/src/editor/lazy_editor.tsx +33 -0
  151. package/src/form/EntityForm.tsx +31 -10
  152. package/src/form/EntityFormActions.tsx +2 -0
  153. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +1 -1
  154. package/src/form/field_bindings/GeopointFieldBinding.tsx +139 -0
  155. package/src/form/index.tsx +1 -0
  156. package/src/hooks/data/delete.ts +8 -0
  157. package/src/hooks/data/save.ts +6 -1
  158. package/src/hooks/data/useCollectionFetch.tsx +21 -1
  159. package/src/hooks/data/useEntityFetch.tsx +35 -4
  160. package/src/hooks/index.tsx +2 -0
  161. package/src/hooks/useBuildNavigationController.tsx +75 -16
  162. package/src/hooks/useFireCMSContext.tsx +7 -3
  163. package/src/hooks/useLicenseStatus.tsx +32 -0
  164. package/src/hooks/useProjectLog.tsx +27 -9
  165. package/src/hooks/useResolvedNavigationFrom.tsx +3 -1
  166. package/src/hooks/useTranslation.ts +3 -1
  167. package/src/hooks/useValidateAuthenticator.tsx +4 -0
  168. package/src/i18n/FireCMSi18nProvider.tsx +199 -23
  169. package/src/i18n/__tests__/FireCMSi18nProvider.test.tsx +91 -0
  170. package/src/i18n/__tests__/nested_provider_lifecycle.test.tsx +67 -0
  171. package/src/internal/useBuildDataSource.ts +37 -15
  172. package/src/internal/useBuildSideEntityController.tsx +20 -5
  173. package/src/locales/de.ts +37 -7
  174. package/src/locales/en.ts +41 -9
  175. package/src/locales/es.ts +37 -7
  176. package/src/locales/fr.ts +37 -7
  177. package/src/locales/hi.ts +37 -7
  178. package/src/locales/it.ts +37 -7
  179. package/src/locales/pl.ts +752 -0
  180. package/src/locales/pt.ts +37 -7
  181. package/src/preview/PropertyPreview.tsx +12 -0
  182. package/src/preview/components/DatePreview.tsx +2 -4
  183. package/src/preview/components/ReferencePreview.tsx +7 -3
  184. package/src/preview/components/StorageThumbnail.tsx +24 -2
  185. package/src/preview/index.ts +1 -0
  186. package/src/preview/property_previews/GeopointPropertyPreview.tsx +23 -0
  187. package/src/routes/FireCMSRoute.tsx +54 -27
  188. package/src/types/analytics.ts +3 -0
  189. package/src/types/collections.ts +34 -0
  190. package/src/types/datasource.ts +67 -4
  191. package/src/types/entities.ts +24 -1
  192. package/src/types/entity_actions.tsx +6 -0
  193. package/src/types/entity_callbacks.ts +24 -0
  194. package/src/types/firecms.tsx +19 -1
  195. package/src/types/firecms_context.tsx +9 -0
  196. package/src/types/index.ts +1 -0
  197. package/src/types/license.ts +63 -0
  198. package/src/types/navigation.ts +35 -5
  199. package/src/types/plugins.tsx +23 -1
  200. package/src/types/properties.ts +17 -0
  201. package/src/types/side_entity_controller.tsx +7 -0
  202. package/src/types/translations.ts +54 -5
  203. package/src/util/__tests__/collections.test.ts +32 -0
  204. package/src/util/__tests__/urls.test.ts +131 -0
  205. package/src/util/collections.ts +1 -1
  206. package/src/util/date_fns_locales.ts +168 -0
  207. package/src/util/entities.ts +16 -1
  208. package/src/util/entity_cache.ts +18 -0
  209. package/src/util/geopoint.ts +81 -0
  210. package/src/util/index.ts +3 -0
  211. package/src/util/lazy_eager.tsx +30 -8
  212. package/src/util/navigation_blocking.ts +45 -0
  213. package/src/util/navigation_from_path.ts +47 -7
  214. package/src/util/navigation_utils.ts +250 -5
  215. package/src/util/parent_references_from_path.ts +45 -4
  216. package/src/util/paths.ts +40 -3
  217. package/src/util/permissions.ts +22 -10
  218. package/src/util/previews.ts +8 -1
  219. package/src/util/resolutions.ts +11 -0
  220. package/src/util/urls.ts +52 -0
  221. package/src/util/useStorageUploadController.tsx +6 -1
@@ -13,6 +13,7 @@ import {
13
13
  import { getNavigationEntriesFromPath, NavigationViewInternal } from "../util/navigation_from_path";
14
14
  import { useLocation } from "react-router-dom";
15
15
  import {
16
+ encodeEntityId,
16
17
  removeInitialAndTrailingSlashes,
17
18
  resolveCollection,
18
19
  resolveDefaultSelectedView,
@@ -223,12 +224,14 @@ export function buildSidePanelsFromUrl(path: string, collections: EntityCollecti
223
224
  let sidePanel: EntitySidePanelProps<any> | undefined = undefined;
224
225
  let lastCollectionPath = "";
225
226
  let lastCollectionId: string | undefined = undefined;
227
+ let lastCollectionSegments: string[] | undefined = undefined;
226
228
  for (let i = 0; i < navigationViewsForPath.length; i++) {
227
229
  const navigationEntry = navigationViewsForPath[i];
228
230
 
229
231
  if (navigationEntry.type === "collection") {
230
232
  lastCollectionPath = navigationEntry.path;
231
233
  lastCollectionId = navigationEntry.collection.id;
234
+ lastCollectionSegments = navigationEntry.pathSegments;
232
235
  }
233
236
 
234
237
  const previousEntry = navigationViewsForPath[i - 1];
@@ -236,6 +239,7 @@ export function buildSidePanelsFromUrl(path: string, collections: EntityCollecti
236
239
  sidePanel = {
237
240
  path: navigationEntry.path,
238
241
  fullIdPath: navigationEntry.fullIdPath,
242
+ pathSegments: navigationEntry.pathSegments,
239
243
  entityId: navigationEntry.entityId,
240
244
  copy: false,
241
245
  width: navigationEntry.parentCollection?.sideDialogWidth
@@ -258,6 +262,9 @@ export function buildSidePanelsFromUrl(path: string, collections: EntityCollecti
258
262
  sidePanel = {
259
263
  path: lastCollectionPath,
260
264
  fullIdPath: lastCollectionId,
265
+ // A new entity still needs unambiguous segments: it may be created inside a
266
+ // subcollection whose parent id contains "/".
267
+ pathSegments: lastCollectionSegments,
261
268
  copy: false
262
269
  }
263
270
  }
@@ -274,11 +281,17 @@ const propsToSidePanel = (props: EntitySidePanelProps,
274
281
  locationSearch: string
275
282
  ): SideDialogPanelProps => {
276
283
 
277
- const collectionPath = removeInitialAndTrailingSlashes(props.path);
284
+ // The URL is the ESCAPED representation of the chain — it is what `buildSidePanelsFromUrl`
285
+ // and `FireCMSRoute` parse back on reload, on a deep link, and on every pathname change.
286
+ // `props.path` is the RAW datasource path, so a parent entity id containing "/" reads back
287
+ // there as extra collection/entity hops and resolves to a different entity entirely.
288
+ // `fullIdPath` carries the same chain with its ids already escaped, which is what it is
289
+ // threaded alongside `path` for.
290
+ const urlChain = removeInitialAndTrailingSlashes(props.fullIdPath ?? props.path);
278
291
 
279
292
  const urlPath = props.entityId
280
- ? buildUrlCollectionPath(`${collectionPath}/${props.entityId}${props.selectedTab ? "/" + props.selectedTab : ""}${locationSearch}#${SIDE_URL_HASH}`)
281
- : buildUrlCollectionPath(`${collectionPath}${locationSearch}#${NEW_URL_HASH}`);
293
+ ? buildUrlCollectionPath(`${urlChain}/${encodeEntityId(props.entityId)}${props.selectedTab ? "/" + props.selectedTab : ""}${locationSearch}#${SIDE_URL_HASH}`)
294
+ : buildUrlCollectionPath(`${urlChain}${locationSearch}#${NEW_URL_HASH}`);
282
295
 
283
296
  const resolvedPanelProps: EntitySidePanelProps<any> = {
284
297
  ...props,
@@ -287,10 +300,12 @@ const propsToSidePanel = (props: EntitySidePanelProps,
287
300
 
288
301
  const entityViewWidth = getEntityViewWidth(props, smallLayout, customizationController, authController);
289
302
  return {
290
- key: `${props.path}/${props.entityId}`,
303
+ // Built from the escaped chain so that two different chains which happen to flatten
304
+ // to the same raw string are still two different panels.
305
+ key: `${urlChain}/${props.entityId ? encodeEntityId(props.entityId) : ""}`,
291
306
  component: undefined, // Lazy render in SideDialogs for better performance
292
307
  urlPath: urlPath,
293
- parentUrlPath: buildUrlCollectionPath(collectionPath),
308
+ parentUrlPath: buildUrlCollectionPath(urlChain),
294
309
  width: entityViewWidth,
295
310
  onClose: props.onClose,
296
311
  additional: resolvedPanelProps
package/src/locales/de.ts CHANGED
@@ -65,8 +65,19 @@ export const de: FireCMSTranslations = {
65
65
  select_from: "Aus {{name}} auswählen",
66
66
  done: "Fertig",
67
67
  log_out: "Abmelden",
68
- license_needed: "Lizenz erforderlich",
69
- license_description: "Sie benötigen eine gültige Lizenz, um FireCMS PRO zu verwenden. Bitte wenden Sie sich an {{email}} für weitere Informationen.",
68
+ license_trial_banner: "FireCMS PRO-Testphase: noch {{days}} Tage in Produktion.",
69
+ license_trial_banner_one: "FireCMS PRO-Testphase: noch {{days}} Tag in Produktion.",
70
+ license_expired_banner: "Ihre PRO-Testphase ist am {{date}} abgelaufen. PRO-Funktionen wie Schema-Editor, Import/Export und Verlauf sind pausiert; Ihre Daten und Sammlungen funktionieren weiterhin.",
71
+ license_expired_banner_undated: "Ihre PRO-Testphase ist abgelaufen. PRO-Funktionen wie Schema-Editor, Import/Export und Verlauf sind pausiert; Ihre Daten und Sammlungen funktionieren weiterhin.",
72
+ license_invalid_project_banner: "Dieser Lizenzschlüssel ist nicht mit dem Projekt {{projectId}} verknüpft. Bis dahin sind die PRO-Funktionen pausiert.",
73
+ license_invalid_project_banner_unnamed: "Dieser Lizenzschlüssel ist nicht mit diesem Projekt verknüpft. Bis dahin sind die PRO-Funktionen pausiert.",
74
+ license_over_quota_banner: "Die Lizenz dieses Projekts deckt {{licensed}} Projekte in Produktion ab, und dieses gehört nicht dazu. PRO-Funktionen wie Schema-Editor, Import/Export und Verlauf sind pausiert; Ihre Daten und Sammlungen funktionieren weiterhin.",
75
+ license_over_quota_banner_one: "Die Lizenz dieses Projekts deckt {{licensed}} Projekt in Produktion ab, und das ist ein anderes. PRO-Funktionen wie Schema-Editor, Import/Export und Verlauf sind pausiert; Ihre Daten und Sammlungen funktionieren weiterhin.",
76
+ license_get_license: "Lizenz erwerben",
77
+ license_update_license: "Lizenz aktualisieren",
78
+ license_add_project_to_license: "Zu Ihrer Lizenz hinzufügen",
79
+ pro_features_paused: "PRO-Funktionen pausiert",
80
+ user_management_paused_description: "Die Verwaltung von Benutzern und Rollen ist Teil von FireCMS PRO. Ihre bestehenden Benutzer und Rollen legen weiterhin fest, wer sich anmelden darf und was er tun kann. Bearbeiten können Sie sie wieder, sobald dieses Projekt eine Lizenz hat.",
70
81
  column_cannot_be_edited: "Diese Spalte kann nicht direkt bearbeitet werden",
71
82
  close: "Schließen",
72
83
  unsaved_local_changes: "Ungespeicherte lokale Änderungen",
@@ -146,8 +157,8 @@ export const de: FireCMSTranslations = {
146
157
  // ─── Error states ─────────────────────────────────────────────
147
158
  error: "Fehler",
148
159
  error_uploading_file: "Fehler beim Hochladen der Datei",
149
- error_deleting: "Fehler beim Löschen",
150
- error_before_delete: "Fehler vor dem Löschen",
160
+ error_deleting: "Fehler beim Löschen: {{message}}",
161
+ error_before_delete: "Fehler vor dem Löschen: {{message}}",
151
162
  error_updating_asset: "Fehler beim Aktualisieren des Assets",
152
163
  error_deleting_asset: "Fehler beim Löschen des Assets",
153
164
  error_firestore_index: "Für diese Abfrage ist ein Firestore-Index erforderlich.",
@@ -389,6 +400,10 @@ export const de: FireCMSTranslations = {
389
400
  download: "Herunterladen",
390
401
  large_number_of_documents: "Diese Sammlung hat eine große Anzahl von Dokumenten ({{count}}).",
391
402
  include_undefined_values: "Undefinierte Werte einschließen",
403
+ export_apply_filter_sort: "Nur Ergebnisse exportieren, die dem aktuellen Filter/der aktuellen Sortierung entsprechen",
404
+ export_all_entities: "Alle Entitäten",
405
+ export_selected_entities: "Ausgewählte Entitäten ({{count}})",
406
+ export_error: "Die Daten konnten nicht exportiert werden: {{message}}",
392
407
  submit: "Einreichen",
393
408
 
394
409
  no_filterable_properties: "Keine filterbaren Eigenschaften verfügbar",
@@ -437,8 +452,9 @@ export const de: FireCMSTranslations = {
437
452
  cms_users: "CMS-Benutzer",
438
453
  roles_menu: "Rollen",
439
454
  project_settings: "Projekteinstellungen",
440
- firestore_explorer: "Firestore-Explorer",
441
- explore_your_firestore_data: "Deine Firestore-Daten durchsuchen",
455
+ firestore_manager: "Firestore-Manager",
456
+ datatalk: "DataTalk",
457
+ manage_your_firestore_data: "Deine Firestore-Daten verwalten",
442
458
 
443
459
  // ─── FireCMS Cloud Login ──────────────────────────────────────
444
460
  build_admin_panel_in_minutes: "Erstellen Sie Ihr Firebase Admin Panel in wenigen Minuten",
@@ -454,6 +470,7 @@ export const de: FireCMSTranslations = {
454
470
  not_the_admin_panel: "nicht auf das Admin-Panel.",
455
471
  join_our_newsletter: "Melden Sie sich für unseren Newsletter an. Kein Spam, nur wichtige Updates!",
456
472
  by_signing_in_you_agree_to_our: "Mit der Anmeldung stimmen Sie unseren",
473
+ please_accept_the_terms_to_continue: "Bitte akzeptieren Sie die Nutzungsbedingungen, um fortzufahren",
457
474
  terms_and_conditions: "Allgemeinen Geschäftsbedingungen",
458
475
  and_our: "und unserer",
459
476
  privacy_policy: "Datenschutzerklärung",
@@ -496,6 +513,7 @@ export const de: FireCMSTranslations = {
496
513
  licensed_projects_lowercase: "lizenzierte projekte",
497
514
  manage: "Verwalten",
498
515
  update_payment_method: "Zahlungsmethode aktualisieren",
516
+ stripe_portal_error: "Stripe konnte nicht geöffnet werden: {{message}}",
499
517
  your_firecms_cloud_projects: "Ihre FireCMS Cloud Projekte",
500
518
  status_active: "Aktiv",
501
519
  status_trialing: "Testphase",
@@ -514,10 +532,18 @@ export const de: FireCMSTranslations = {
514
532
  auto_setup_collections_button: "Sammlungen automatisch einrichten",
515
533
  auto_setup_collections_title: "Sammlungen automatisch einrichten?",
516
534
  auto_setup_collections_desc: "Dadurch werden automatisch Sammlungskonfigurationen für Sammlungen erstellt, die noch <b>NICHT</b> zugeordnet sind.",
517
- this_can_take_a_minute: "Dies kann ein bis zwei Minuten dauern",
535
+ setting_up_collections: "Sammlungen werden eingerichtet",
536
+ setting_up_collection: "{{name}} wird eingerichtet",
518
537
  no_collections_found_to_setup: "Keine einzurichtenden Sammlungen gefunden",
519
538
  collections_have_been_setup: "Sammlungen wurden automatisch eingerichtet",
520
539
  error_setting_up_collections: "Fehler beim automatischen Einrichten der Sammlungen",
540
+ setup_collections_title: "Set up collections",
541
+ setup_collections_select_desc: "Select which collections to automatically set up:",
542
+ select_all: "Select all",
543
+ deselect_all: "Deselect all",
544
+ setup_collections_confirm: "Set up ({{count}})",
545
+ collection_setup_success: "{{name}} has been set up",
546
+ go_to_collection: "Go to collection",
521
547
  add_your: "Fügen Sie Ihre",
522
548
  database_collections: "Datenbanksammlungen",
523
549
  to_firecms: "zu FireCMS hinzu",
@@ -578,6 +604,10 @@ export const de: FireCMSTranslations = {
578
604
  order_property_not_found: "Eigenschaft \"{{property}}\" existiert nicht oder ist keine Zahlen-Eigenschaft. Bitte wählen Sie eine gültige Eigenschaft oder löschen Sie die Auswahl.",
579
605
  no_number_properties: "Keine Zahlen-Eigenschaften gefunden. Fügen Sie eine Zahlen-Eigenschaft hinzu, um die Sortierung zu aktivieren.",
580
606
  order_property_description: "Wählen Sie eine Zahlen-Eigenschaft, um die Reihenfolge der Elemente beizubehalten",
607
+ image_property: "Bild-Eigenschaft",
608
+ image_property_not_found: "Eigenschaft \"{{property}}\" existiert nicht oder ist keine Bild-Eigenschaft. Bitte wählen Sie eine gültige Eigenschaft oder löschen Sie die Auswahl.",
609
+ no_image_properties: "Keine Bild-Eigenschaften gefunden. Fügen Sie eine Speicher- oder Bild-URL-Eigenschaft hinzu, um sie als Vorschaubild zu verwenden.",
610
+ image_property_description: "Wählen Sie die Eigenschaft, die als Vorschaubild in den Ansichten Karten und Kanban verwendet wird. Wenn nicht festgelegt, wird automatisch die erste passende Bild-Eigenschaft verwendet.",
581
611
  display_settings: "Anzeigeeinstellungen",
582
612
  default_row_size: "Standard-Zeilengröße",
583
613
  side_dialog_width: "Seitendialog-Breite",
package/src/locales/en.ts CHANGED
@@ -73,8 +73,19 @@ export const en: FireCMSTranslations = {
73
73
  select_from: "Select from {{name}}",
74
74
  done: "Done",
75
75
  log_out: "Log out",
76
- license_needed: "License needed",
77
- license_description: "You need a valid license to use FireCMS PRO. Please reach out at {{email}} for more information.",
76
+ license_trial_banner: "FireCMS PRO trial: {{days}} days left in production.",
77
+ license_trial_banner_one: "FireCMS PRO trial: {{days}} day left in production.",
78
+ license_expired_banner: "Your PRO trial ended on {{date}}. PRO features such as the schema editor, import/export and history are paused; your data and collections still work.",
79
+ license_expired_banner_undated: "Your PRO trial has ended. PRO features such as the schema editor, import/export and history are paused; your data and collections still work.",
80
+ license_invalid_project_banner: "This license key is not linked to project {{projectId}}. PRO features are paused until it is.",
81
+ license_invalid_project_banner_unnamed: "This license key is not linked to this project. PRO features are paused until it is.",
82
+ license_over_quota_banner: "This project's license pays for {{licensed}} projects in production, and this is not one of them. PRO features such as the schema editor, import/export and history are paused; your data and collections still work.",
83
+ license_over_quota_banner_one: "This project's license pays for {{licensed}} project in production, and it is a different one. PRO features such as the schema editor, import/export and history are paused; your data and collections still work.",
84
+ license_get_license: "Get a license",
85
+ license_update_license: "Update your license",
86
+ license_add_project_to_license: "Add it to your license",
87
+ pro_features_paused: "PRO features paused",
88
+ user_management_paused_description: "Managing users and roles is part of FireCMS PRO. Your existing users and roles still decide who can sign in and what they can do, and you can edit them again once this project has a license.",
78
89
  column_cannot_be_edited: "This column can't be edited directly",
79
90
  close: "Close",
80
91
  unsaved_local_changes: "Unsaved Local changes",
@@ -154,8 +165,8 @@ export const en: FireCMSTranslations = {
154
165
  // ─── Error states ─────────────────────────────────────────────
155
166
  error: "Error",
156
167
  error_uploading_file: "Error uploading file",
157
- error_deleting: "Error deleting",
158
- error_before_delete: "Error before delete",
168
+ error_deleting: "Error deleting: {{message}}",
169
+ error_before_delete: "Error before delete: {{message}}",
159
170
  error_updating_asset: "Error updating asset",
160
171
  error_deleting_asset: "Error deleting asset",
161
172
  error_firestore_index: "A Firestore index is required for this query.",
@@ -388,15 +399,19 @@ export const en: FireCMSTranslations = {
388
399
  data_imported_successfully: "Data imported successfully",
389
400
  export: "Export",
390
401
  export_data: "Export data",
391
- download_table_csv: "Download the the content of this table as a CSV",
402
+ download_table_csv: "Download the content of this table as a CSV",
392
403
  csv: "CSV",
393
404
  json: "JSON",
394
405
  dates_as_timestamps: "Dates as timestamps",
395
406
  dates_as_strings: "Dates as strings",
396
407
  flatten_arrays: "Flatten arrays",
397
408
  download: "Download",
398
- large_number_of_documents: "This collections has a large number of documents ({{count}}).",
409
+ large_number_of_documents: "This collection has a large number of documents ({{count}}).",
399
410
  include_undefined_values: "Include undefined values",
411
+ export_apply_filter_sort: "Only export results matching the current filter/sort",
412
+ export_all_entities: "All entities",
413
+ export_selected_entities: "Selected entities ({{count}})",
414
+ export_error: "Could not export the data: {{message}}",
400
415
  submit: "Submit",
401
416
 
402
417
  no_filterable_properties: "No filterable properties available",
@@ -445,8 +460,11 @@ export const en: FireCMSTranslations = {
445
460
  cms_users: "CMS Users",
446
461
  roles_menu: "Roles",
447
462
  project_settings: "Project settings",
448
- firestore_explorer: "Firestore Explorer",
449
- explore_your_firestore_data: "Explore your Firestore data",
463
+ firestore_manager: "Firestore Manager",
464
+ manage_your_firestore_data: "Manage your Firestore data",
465
+ // A product name. It is a key rather than a literal so a locale that uses a
466
+ // different script can transliterate it; most will inherit this value.
467
+ datatalk: "DataTalk",
450
468
 
451
469
  // ─── FireCMS Cloud Login ──────────────────────────────────────
452
470
  build_admin_panel_in_minutes: "Build Your Firebase Admin Panel in Minutes",
@@ -462,6 +480,7 @@ export const en: FireCMSTranslations = {
462
480
  not_the_admin_panel: "not the admin panel.",
463
481
  join_our_newsletter: "Join our newsletter. No spam, only important updates!",
464
482
  by_signing_in_you_agree_to_our: "By signing in you agree to our",
483
+ please_accept_the_terms_to_continue: "Please accept the terms and conditions to continue",
465
484
  terms_and_conditions: "Terms and Conditions",
466
485
  and_our: "and our",
467
486
  privacy_policy: "Privacy policy",
@@ -504,6 +523,7 @@ export const en: FireCMSTranslations = {
504
523
  licensed_projects_lowercase: "licensed projects",
505
524
  manage: "Manage",
506
525
  update_payment_method: "Update payment method",
526
+ stripe_portal_error: "Could not open Stripe: {{message}}",
507
527
  your_firecms_cloud_projects: "Your FireCMS Cloud projects",
508
528
  status_active: "Active",
509
529
  status_trialing: "Trialing",
@@ -522,10 +542,18 @@ export const en: FireCMSTranslations = {
522
542
  auto_setup_collections_button: "Automatically set up collections",
523
543
  auto_setup_collections_title: "Automatically set up collections?",
524
544
  auto_setup_collections_desc: "This will automatically create collection configs for collections that are <b>NOT</b> already mapped",
525
- this_can_take_a_minute: "This can take a minute or two",
545
+ setting_up_collections: "Setting up collections",
546
+ setting_up_collection: "Setting up {{name}}",
526
547
  no_collections_found_to_setup: "No collections found to setup.",
527
548
  collections_have_been_setup: "Collections have been automatically setup.",
528
549
  error_setting_up_collections: "Error automatically setting up collections",
550
+ setup_collections_title: "Set up collections",
551
+ setup_collections_select_desc: "Select which collections to automatically set up:",
552
+ select_all: "Select all",
553
+ deselect_all: "Deselect all",
554
+ setup_collections_confirm: "Set up ({{count}})",
555
+ collection_setup_success: "{{name}} has been set up",
556
+ go_to_collection: "Go to collection",
529
557
 
530
558
  // --- Home Suggestions ---
531
559
  add_your: "Add your",
@@ -590,6 +618,10 @@ export const en: FireCMSTranslations = {
590
618
  order_property_not_found: "Property \"{{property}}\" does not exist or is not a number property. Please select a valid property or clear the selection.",
591
619
  no_number_properties: "No number properties found. Add a number property to enable ordering.",
592
620
  order_property_description: "Select a number property to persist the order of items",
621
+ image_property: "Image Property",
622
+ image_property_not_found: "Property \"{{property}}\" does not exist or is not an image property. Please select a valid property or clear the selection.",
623
+ no_image_properties: "No image properties found. Add a storage or URL image property to use as a thumbnail.",
624
+ image_property_description: "Select the property used as the thumbnail image in Cards and Kanban view modes. If not set, the first matching image property will be used automatically.",
593
625
  display_settings: "Display settings",
594
626
  default_row_size: "Default row size",
595
627
  side_dialog_width: "Side dialog width",
package/src/locales/es.ts CHANGED
@@ -73,8 +73,19 @@ export const es: FireCMSTranslations = {
73
73
  select_from: "Seleccionar de {{name}}",
74
74
  done: "Hecho",
75
75
  log_out: "Cerrar sesión",
76
- license_needed: "Licencia necesaria",
77
- license_description: "Necesitas una licencia válida para usar FireCMS PRO. Por favor, contáctanos en {{email}} para obtener más información.",
76
+ license_trial_banner: "Prueba de FireCMS PRO: quedan {{days}} días en producción.",
77
+ license_trial_banner_one: "Prueba de FireCMS PRO: queda {{days}} día en producción.",
78
+ license_expired_banner: "Tu prueba de PRO terminó el {{date}}. Las funciones PRO, como el editor de esquemas, la importación/exportación y el historial, están en pausa; tus datos y colecciones siguen funcionando.",
79
+ license_expired_banner_undated: "Tu prueba de PRO ha terminado. Las funciones PRO, como el editor de esquemas, la importación/exportación y el historial, están en pausa; tus datos y colecciones siguen funcionando.",
80
+ license_invalid_project_banner: "Esta clave de licencia no está vinculada al proyecto {{projectId}}. Las funciones PRO están en pausa hasta que lo esté.",
81
+ license_invalid_project_banner_unnamed: "Esta clave de licencia no está vinculada a este proyecto. Las funciones PRO están en pausa hasta que lo esté.",
82
+ license_over_quota_banner: "La licencia de este proyecto cubre {{licensed}} proyectos en producción y este no es uno de ellos. Las funciones PRO, como el editor de esquemas, la importación/exportación y el historial, están en pausa; tus datos y colecciones siguen funcionando.",
83
+ license_over_quota_banner_one: "La licencia de este proyecto cubre {{licensed}} proyecto en producción y es otro distinto. Las funciones PRO, como el editor de esquemas, la importación/exportación y el historial, están en pausa; tus datos y colecciones siguen funcionando.",
84
+ license_get_license: "Obtener una licencia",
85
+ license_update_license: "Actualizar tu licencia",
86
+ license_add_project_to_license: "Añadirlo a tu licencia",
87
+ pro_features_paused: "Funciones PRO en pausa",
88
+ user_management_paused_description: "La gestión de usuarios y roles forma parte de FireCMS PRO. Tus usuarios y roles actuales siguen decidiendo quién puede iniciar sesión y qué puede hacer, y podrás editarlos de nuevo cuando este proyecto tenga una licencia.",
78
89
  column_cannot_be_edited: "Esta columna no se puede editar directamente",
79
90
  close: "Cerrar",
80
91
  unsaved_local_changes: "Cambios locales sin guardar",
@@ -152,8 +163,8 @@ export const es: FireCMSTranslations = {
152
163
  // ─── Error states ─────────────────────────────────────────────
153
164
  error: "Error",
154
165
  error_uploading_file: "Error al subir archivo",
155
- error_deleting: "Error al eliminar",
156
- error_before_delete: "Error antes de eliminar",
166
+ error_deleting: "Error al eliminar: {{message}}",
167
+ error_before_delete: "Error antes de eliminar: {{message}}",
157
168
  error_updating_asset: "Error al actualizar recurso",
158
169
  error_deleting_asset: "Error al eliminar recurso",
159
170
  error_firestore_index: "Se requiere un índice de Firestore para esta consulta.",
@@ -397,6 +408,10 @@ export const es: FireCMSTranslations = {
397
408
  download: "Descargar",
398
409
  large_number_of_documents: "Esta colección posee un gran número de documentos ({{count}}).",
399
410
  include_undefined_values: "Incluir valores omitidos (undefined)",
411
+ export_apply_filter_sort: "Exportar solo los resultados que coinciden con el filtro/orden actual",
412
+ export_all_entities: "Todas las entidades",
413
+ export_selected_entities: "Entidades seleccionadas ({{count}})",
414
+ export_error: "No se pudieron exportar los datos: {{message}}",
400
415
  submit: "Enviar",
401
416
 
402
417
  no_filterable_properties: "No hay propiedades filtrables disponibles",
@@ -445,8 +460,9 @@ export const es: FireCMSTranslations = {
445
460
  cms_users: "Usuarios del CMS",
446
461
  roles_menu: "Roles",
447
462
  project_settings: "Ajustes del proyecto",
448
- firestore_explorer: "Explorador de Firestore",
449
- explore_your_firestore_data: "Explora tus datos de Firestore",
463
+ firestore_manager: "Gestor de Firestore",
464
+ datatalk: "DataTalk",
465
+ manage_your_firestore_data: "Gestiona tus datos de Firestore",
450
466
 
451
467
  // ─── FireCMS Cloud Login ──────────────────────────────────────
452
468
  build_admin_panel_in_minutes: "Crea tu panel de administración de Firebase en minutos",
@@ -462,6 +478,7 @@ export const es: FireCMSTranslations = {
462
478
  not_the_admin_panel: "no en el panel de administración.",
463
479
  join_our_newsletter: "Únete a nuestro newsletter. ¡Sin spam, solo actualizaciones importantes!",
464
480
  by_signing_in_you_agree_to_our: "Al iniciar sesión aceptas nuestros",
481
+ please_accept_the_terms_to_continue: "Acepta los términos y condiciones para continuar",
465
482
  terms_and_conditions: "Términos y Condiciones",
466
483
  and_our: "y nuestra",
467
484
  privacy_policy: "Política de Privacidad",
@@ -504,6 +521,7 @@ export const es: FireCMSTranslations = {
504
521
  licensed_projects_lowercase: "proyectos licenciados",
505
522
  manage: "Administrar",
506
523
  update_payment_method: "Actualizar método de pago",
524
+ stripe_portal_error: "No se pudo abrir Stripe: {{message}}",
507
525
  your_firecms_cloud_projects: "Tus proyectos de FireCMS Cloud",
508
526
  status_active: "Activo",
509
527
  status_trialing: "En prueba",
@@ -522,10 +540,18 @@ export const es: FireCMSTranslations = {
522
540
  auto_setup_collections_button: "Configurar colecciones automáticamente",
523
541
  auto_setup_collections_title: "¿Configurar colecciones automáticamente?",
524
542
  auto_setup_collections_desc: "Esto creará automáticamente la configuración de las colecciones que <b>NO</b> estén mapeadas",
525
- this_can_take_a_minute: "Esto puede tardar un minuto o dos",
543
+ setting_up_collections: "Configurando colecciones",
544
+ setting_up_collection: "Configurando {{name}}",
526
545
  no_collections_found_to_setup: "No se encontraron colecciones para configurar",
527
546
  collections_have_been_setup: "¡Tus colecciones han sido configuradas!",
528
547
  error_setting_up_collections: "Error al configurar colecciones",
548
+ setup_collections_title: "Set up collections",
549
+ setup_collections_select_desc: "Select which collections to automatically set up:",
550
+ select_all: "Select all",
551
+ deselect_all: "Deselect all",
552
+ setup_collections_confirm: "Set up ({{count}})",
553
+ collection_setup_success: "{{name}} has been set up",
554
+ go_to_collection: "Go to collection",
529
555
 
530
556
  // --- Home Suggestions ---
531
557
  add_your: "Añade tus",
@@ -590,6 +616,10 @@ export const es: FireCMSTranslations = {
590
616
  order_property_not_found: "La propiedad \"{{property}}\" no existe o no es una propiedad numérica. Selecciona una propiedad válida o borra la selección.",
591
617
  no_number_properties: "No se encontraron propiedades numéricas. Agrega una propiedad numérica para habilitar el ordenamiento.",
592
618
  order_property_description: "Selecciona una propiedad numérica para mantener el orden de los elementos",
619
+ image_property: "Propiedad de imagen",
620
+ image_property_not_found: "La propiedad \"{{property}}\" no existe o no es una propiedad de imagen. Selecciona una propiedad válida o borra la selección.",
621
+ no_image_properties: "No se encontraron propiedades de imagen. Agrega una propiedad de almacenamiento o URL de imagen para usarla como miniatura.",
622
+ image_property_description: "Selecciona la propiedad usada como miniatura en las vistas de Tarjetas y Kanban. Si no se establece, se usará automáticamente la primera propiedad de imagen que coincida.",
593
623
  display_settings: "Configuración de visualización",
594
624
  default_row_size: "Tamaño de fila predeterminado",
595
625
  side_dialog_width: "Ancho del diálogo lateral",
package/src/locales/fr.ts CHANGED
@@ -65,8 +65,19 @@ export const fr: FireCMSTranslations = {
65
65
  select_from: "Sélectionner depuis {{name}}",
66
66
  done: "Terminé",
67
67
  log_out: "Se déconnecter",
68
- license_needed: "Licence requise",
69
- license_description: "Vous avez besoin d'une licence valide pour utiliser FireCMS PRO. Veuillez nous contacter à {{email}} pour plus d'informations.",
68
+ license_trial_banner: "Essai de FireCMS PRO : {{days}} jours restants en production.",
69
+ license_trial_banner_one: "Essai de FireCMS PRO : {{days}} jour restant en production.",
70
+ license_expired_banner: "Votre essai PRO a pris fin le {{date}}. Les fonctions PRO, comme l'éditeur de schémas, l'import/export et l'historique, sont en pause ; vos données et vos collections fonctionnent toujours.",
71
+ license_expired_banner_undated: "Votre essai PRO a pris fin. Les fonctions PRO, comme l'éditeur de schémas, l'import/export et l'historique, sont en pause ; vos données et vos collections fonctionnent toujours.",
72
+ license_invalid_project_banner: "Cette clé de licence n'est pas associée au projet {{projectId}}. Les fonctionnalités PRO sont en pause d'ici là.",
73
+ license_invalid_project_banner_unnamed: "Cette clé de licence n'est pas associée à ce projet. Les fonctionnalités PRO sont en pause d'ici là.",
74
+ license_over_quota_banner: "La licence de ce projet couvre {{licensed}} projets en production, et celui-ci n'en fait pas partie. Les fonctions PRO, comme l'éditeur de schémas, l'import/export et l'historique, sont en pause ; vos données et vos collections fonctionnent toujours.",
75
+ license_over_quota_banner_one: "La licence de ce projet couvre {{licensed}} projet en production, et c'en est un autre. Les fonctions PRO, comme l'éditeur de schémas, l'import/export et l'historique, sont en pause ; vos données et vos collections fonctionnent toujours.",
76
+ license_get_license: "Obtenir une licence",
77
+ license_update_license: "Mettre à jour votre licence",
78
+ license_add_project_to_license: "L'ajouter à votre licence",
79
+ pro_features_paused: "Fonctionnalités PRO en pause",
80
+ user_management_paused_description: "La gestion des utilisateurs et des rôles fait partie de FireCMS PRO. Vos utilisateurs et rôles existants déterminent toujours qui peut se connecter et ce qu'il peut faire, et vous pourrez à nouveau les modifier dès que ce projet aura une licence.",
70
81
  column_cannot_be_edited: "Cette colonne ne peut pas être modifiée directement",
71
82
  close: "Fermer",
72
83
  unsaved_local_changes: "Modifications locales non enregistrées",
@@ -146,8 +157,8 @@ export const fr: FireCMSTranslations = {
146
157
  // ─── Error states ─────────────────────────────────────────────
147
158
  error: "Erreur",
148
159
  error_uploading_file: "Erreur lors du téléchargement du fichier",
149
- error_deleting: "Erreur lors de la suppression",
150
- error_before_delete: "Erreur avant la suppression",
160
+ error_deleting: "Erreur lors de la suppression: {{message}}",
161
+ error_before_delete: "Erreur avant la suppression: {{message}}",
151
162
  error_updating_asset: "Erreur lors de la mise à jour de l'actif",
152
163
  error_deleting_asset: "Erreur lors de la suppression de l'actif",
153
164
  error_firestore_index: "Un index Firestore est requis pour cette requête.",
@@ -389,6 +400,10 @@ export const fr: FireCMSTranslations = {
389
400
  download: "Télécharger",
390
401
  large_number_of_documents: "Cette collection contient un grand nombre de documents ({{count}}).",
391
402
  include_undefined_values: "Inclure les valeurs non définies",
403
+ export_apply_filter_sort: "N'exporter que les résultats correspondant au filtre/tri actuel",
404
+ export_all_entities: "Toutes les entités",
405
+ export_selected_entities: "Entités sélectionnées ({{count}})",
406
+ export_error: "Impossible d'exporter les données: {{message}}",
392
407
  submit: "Soumettre",
393
408
 
394
409
  no_filterable_properties: "Aucune propriété filtrable disponible",
@@ -437,8 +452,9 @@ export const fr: FireCMSTranslations = {
437
452
  cms_users: "Utilisateurs du CMS",
438
453
  roles_menu: "Rôles",
439
454
  project_settings: "Paramètres du projet",
440
- firestore_explorer: "Explorateur Firestore",
441
- explore_your_firestore_data: "Explorez vos données Firestore",
455
+ firestore_manager: "Gestionnaire Firestore",
456
+ datatalk: "DataTalk",
457
+ manage_your_firestore_data: "Gérez vos données Firestore",
442
458
 
443
459
  // ─── FireCMS Cloud Login ──────────────────────────────────────
444
460
  build_admin_panel_in_minutes: "Créez votre panneau d'administration Firebase en quelques minutes",
@@ -454,6 +470,7 @@ export const fr: FireCMSTranslations = {
454
470
  not_the_admin_panel: "pas sur le panneau d'administration.",
455
471
  join_our_newsletter: "Inscrivez-vous à notre newsletter. Pas de spam, uniquement des mises à jour importantes !",
456
472
  by_signing_in_you_agree_to_our: "En vous connectant, vous acceptez nos",
473
+ please_accept_the_terms_to_continue: "Veuillez accepter les conditions générales pour continuer",
457
474
  terms_and_conditions: "Conditions générales",
458
475
  and_our: "et notre",
459
476
  privacy_policy: "Politique de confidentialité",
@@ -496,6 +513,7 @@ export const fr: FireCMSTranslations = {
496
513
  licensed_projects_lowercase: "projets sous licence",
497
514
  manage: "Gérer",
498
515
  update_payment_method: "Mettre à jour le mode de paiement",
516
+ stripe_portal_error: "Impossible d'ouvrir Stripe : {{message}}",
499
517
  your_firecms_cloud_projects: "Vos projets FireCMS Cloud",
500
518
  status_active: "Actif",
501
519
  status_trialing: "En période d'essai",
@@ -514,10 +532,18 @@ export const fr: FireCMSTranslations = {
514
532
  auto_setup_collections_button: "Configurer les collections automatiquement",
515
533
  auto_setup_collections_title: "Configurer les collections automatiquement ?",
516
534
  auto_setup_collections_desc: "Cela créera automatiquement des configurations de collection pour les collections qui ne sont <b>PAS</b> déjà mappées",
517
- this_can_take_a_minute: "Cela peut prendre une minute",
535
+ setting_up_collections: "Configuration des collections",
536
+ setting_up_collection: "Configuration de {{name}}",
518
537
  no_collections_found_to_setup: "Aucune collection à configurer trouvée",
519
538
  collections_have_been_setup: "Les collections ont été configurées",
520
539
  error_setting_up_collections: "Erreur lors de la configuration des collections",
540
+ setup_collections_title: "Set up collections",
541
+ setup_collections_select_desc: "Select which collections to automatically set up:",
542
+ select_all: "Select all",
543
+ deselect_all: "Deselect all",
544
+ setup_collections_confirm: "Set up ({{count}})",
545
+ collection_setup_success: "{{name}} has been set up",
546
+ go_to_collection: "Go to collection",
521
547
  add_your: "Ajoutez vos",
522
548
  database_collections: "collections de base de données",
523
549
  to_firecms: "à FireCMS",
@@ -578,6 +604,10 @@ export const fr: FireCMSTranslations = {
578
604
  order_property_not_found: "La propriété \"{{property}}\" n'existe pas ou n'est pas une propriété numérique. Veuillez sélectionner une propriété valide ou effacer la sélection.",
579
605
  no_number_properties: "Aucune propriété numérique trouvée. Ajoutez une propriété numérique pour activer le tri.",
580
606
  order_property_description: "Sélectionnez une propriété numérique pour conserver l'ordre des éléments",
607
+ image_property: "Propriété d'image",
608
+ image_property_not_found: "La propriété \"{{property}}\" n'existe pas ou n'est pas une propriété d'image. Veuillez sélectionner une propriété valide ou effacer la sélection.",
609
+ no_image_properties: "Aucune propriété d'image trouvée. Ajoutez une propriété de stockage ou d'URL d'image à utiliser comme miniature.",
610
+ image_property_description: "Sélectionnez la propriété utilisée comme miniature dans les vues Cartes et Kanban. Si elle n'est pas définie, la première propriété d'image correspondante sera utilisée automatiquement.",
581
611
  display_settings: "Paramètres d'affichage",
582
612
  default_row_size: "Taille de ligne par défaut",
583
613
  side_dialog_width: "Largeur du dialogue latéral",
package/src/locales/hi.ts CHANGED
@@ -65,8 +65,19 @@ export const hi: FireCMSTranslations = {
65
65
  select_from: "{{name}} से चुनें",
66
66
  done: "हो गया",
67
67
  log_out: "लॉग आउट",
68
- license_needed: "लाइसेंस आवश्यक है",
69
- license_description: "FireCMS PRO का उपयोग करने के लिए आपको एक वैध लाइसेंस की आवश्यकता है। कृपया अधिक जानकारी के लिए {{email}} पर संपर्क करें।",
68
+ license_trial_banner: "FireCMS PRO ट्रायल: प्रोडक्शन में {{days}} दिन बाकी हैं।",
69
+ license_trial_banner_one: "FireCMS PRO ट्रायल: प्रोडक्शन में {{days}} दिन बाकी है।",
70
+ license_expired_banner: "आपका PRO ट्रायल {{date}} को समाप्त हो गया। स्कीमा एडिटर, इम्पोर्ट/एक्सपोर्ट और हिस्ट्री जैसी PRO सुविधाएँ रोक दी गई हैं; आपका डेटा और कलेक्शन्स काम करते रहेंगे।",
71
+ license_expired_banner_undated: "आपका PRO ट्रायल समाप्त हो गया है। स्कीमा एडिटर, इम्पोर्ट/एक्सपोर्ट और हिस्ट्री जैसी PRO सुविधाएँ रोक दी गई हैं; आपका डेटा और कलेक्शन्स काम करते रहेंगे।",
72
+ license_invalid_project_banner: "यह लाइसेंस कुंजी प्रोजेक्ट {{projectId}} से जुड़ी नहीं है। जब तक यह जुड़ नहीं जाती, PRO सुविधाएँ रुकी रहेंगी।",
73
+ license_invalid_project_banner_unnamed: "यह लाइसेंस कुंजी इस प्रोजेक्ट से जुड़ी नहीं है। जब तक यह जुड़ नहीं जाती, PRO सुविधाएँ रुकी रहेंगी।",
74
+ license_over_quota_banner: "इस प्रोजेक्ट का लाइसेंस प्रोडक्शन में {{licensed}} प्रोजेक्ट कवर करता है, और यह उनमें से एक नहीं है। स्कीमा एडिटर, इम्पोर्ट/एक्सपोर्ट और हिस्ट्री जैसी PRO सुविधाएँ रोक दी गई हैं; आपका डेटा और कलेक्शन्स काम करते रहेंगे।",
75
+ license_over_quota_banner_one: "इस प्रोजेक्ट का लाइसेंस प्रोडक्शन में {{licensed}} प्रोजेक्ट कवर करता है, और वह कोई दूसरा प्रोजेक्ट है। स्कीमा एडिटर, इम्पोर्ट/एक्सपोर्ट और हिस्ट्री जैसी PRO सुविधाएँ रोक दी गई हैं; आपका डेटा और कलेक्शन्स काम करते रहेंगे।",
76
+ license_get_license: "लाइसेंस लें",
77
+ license_update_license: "अपना लाइसेंस अपडेट करें",
78
+ license_add_project_to_license: "इसे अपने लाइसेंस में जोड़ें",
79
+ pro_features_paused: "PRO सुविधाएँ रुकी हुई हैं",
80
+ user_management_paused_description: "यूज़र्स और रोल्स का प्रबंधन FireCMS PRO का हिस्सा है। आपके मौजूदा यूज़र्स और रोल्स अब भी तय करते हैं कि कौन साइन इन कर सकता है और क्या कर सकता है। इस प्रोजेक्ट को लाइसेंस मिलते ही आप उन्हें फिर से संपादित कर सकेंगे।",
70
81
  column_cannot_be_edited: "इस कॉलम को सीधे संपादित नहीं किया जा सकता",
71
82
  close: "बंद करें",
72
83
  unsaved_local_changes: "सहेजे नहीं गए स्थानीय परिवर्तन",
@@ -146,8 +157,8 @@ export const hi: FireCMSTranslations = {
146
157
  // ─── Error states ─────────────────────────────────────────────
147
158
  error: "त्रुटि",
148
159
  error_uploading_file: "फ़ाइल अपलोड करने में त्रुटि",
149
- error_deleting: "हटाने में त्रुटि",
150
- error_before_delete: "हटाने से पहले त्रुटि",
160
+ error_deleting: "हटाने में त्रुटि: {{message}}",
161
+ error_before_delete: "हटाने से पहले त्रुटि: {{message}}",
151
162
  error_updating_asset: "एसेट अपडेट करने में त्रुटि",
152
163
  error_deleting_asset: "एसेट हटाने में त्रुटि",
153
164
  error_firestore_index: "इस क्वेरी के लिए Firestore इंडेक्स आवश्यक है।",
@@ -389,6 +400,10 @@ export const hi: FireCMSTranslations = {
389
400
  download: "डाउनलोड",
390
401
  large_number_of_documents: "इस संग्रह में बड़ी संख्या में दस्तावेज़ हैं ({{count}})।",
391
402
  include_undefined_values: "अपरिभाषित (undefined) मान शामिल करें",
403
+ export_apply_filter_sort: "केवल वर्तमान फ़िल्टर/सॉर्ट से मेल खाने वाले परिणाम निर्यात करें",
404
+ export_all_entities: "सभी इकाइयाँ",
405
+ export_selected_entities: "चयनित इकाइयाँ ({{count}})",
406
+ export_error: "डेटा निर्यात नहीं किया जा सका: {{message}}",
392
407
  submit: "सबमिट करें",
393
408
 
394
409
  no_filterable_properties: "कोई फ़िल्टर करने योग्य गुण उपलब्ध नहीं हैं",
@@ -437,8 +452,9 @@ export const hi: FireCMSTranslations = {
437
452
  cms_users: "CMS उपयोगकर्ता",
438
453
  roles_menu: "भूमिकाएँ",
439
454
  project_settings: "परियोजना सेटिंग",
440
- firestore_explorer: "Firestore एक्सप्लोरर",
441
- explore_your_firestore_data: "अपने Firestore डेटा का अन्वेषण करें",
455
+ firestore_manager: "Firestore मैनेजर",
456
+ datatalk: "DataTalk",
457
+ manage_your_firestore_data: "अपने Firestore डेटा का प्रबंधन करें",
442
458
 
443
459
  // ─── FireCMS Cloud Login ──────────────────────────────────────
444
460
  build_admin_panel_in_minutes: "मिनटों में अपना Firebase एडमिन पैनल बनाएं",
@@ -454,6 +470,7 @@ export const hi: FireCMSTranslations = {
454
470
  not_the_admin_panel: "व्यवस्थापक पैनल पर नहीं।",
455
471
  join_our_newsletter: "हमारे न्यूज़लेटर से जुड़ें। बिना किसी स्पैम के, केवल महत्वपूर्ण अपडेट!",
456
472
  by_signing_in_you_agree_to_our: "साइन इन करके आप हमारे नियमों और शर्तों से सहमत होते हैं",
473
+ please_accept_the_terms_to_continue: "जारी रखने के लिए कृपया नियम और शर्तें स्वीकार करें",
457
474
  terms_and_conditions: "नियम और शर्तें",
458
475
  and_our: "और हमारी गोपनीयता नीति",
459
476
  privacy_policy: "गोपनीयता नीति",
@@ -496,6 +513,7 @@ export const hi: FireCMSTranslations = {
496
513
  licensed_projects_lowercase: "लाइसेंस प्राप्त प्रोजेक्ट्स",
497
514
  manage: "प्रबंधित करें",
498
515
  update_payment_method: "भुगतान विधि अपडेट करें",
516
+ stripe_portal_error: "Stripe नहीं खुल सका: {{message}}",
499
517
  your_firecms_cloud_projects: "आपके FireCMS Cloud प्रोजेक्ट्स",
500
518
  status_active: "सक्रिय",
501
519
  status_trialing: "परीक्षण (ट्रायल)",
@@ -514,10 +532,18 @@ export const hi: FireCMSTranslations = {
514
532
  auto_setup_collections_button: "संग्रहों को स्वचालित रूप से सेट करें",
515
533
  auto_setup_collections_title: "संग्रहों की स्वचालित सेटअप",
516
534
  auto_setup_collections_desc: "अपने मौजूदा Firestore डेटा के आधार पर संग्रहों को स्वचालित रूप से सेट करें। FireCMS को आपके लिए परफेक्ट CMS कॉन्फ़िगर करने दें।",
517
- this_can_take_a_minute: "इसमें एक मिनट लग सकता है",
535
+ setting_up_collections: "संग्रह सेट किए जा रहे हैं",
536
+ setting_up_collection: "{{name}} सेट किया जा रहा है",
518
537
  no_collections_found_to_setup: "सेट करने के लिए कोई संग्रह नहीं मिला",
519
538
  collections_have_been_setup: "संग्रहों को सेट कर दिया गया है",
520
539
  error_setting_up_collections: "संग्रह सेट करने में त्रुटि",
540
+ setup_collections_title: "Set up collections",
541
+ setup_collections_select_desc: "Select which collections to automatically set up:",
542
+ select_all: "Select all",
543
+ deselect_all: "Deselect all",
544
+ setup_collections_confirm: "Set up ({{count}})",
545
+ collection_setup_success: "{{name}} has been set up",
546
+ go_to_collection: "Go to collection",
521
547
  add_your: "अपने",
522
548
  database_collections: "डेटाबेस संग्रह",
523
549
  to_firecms: "को FireCMS में जोड़ें",
@@ -578,6 +604,10 @@ export const hi: FireCMSTranslations = {
578
604
  order_property_not_found: "प्रॉपर्टी \"{{property}}\" मौजूद नहीं है या एक संख्या प्रॉपर्टी नहीं है। कृपया एक वैध प्रॉपर्टी चुनें या चयन साफ़ करें।",
579
605
  no_number_properties: "कोई संख्या प्रॉपर्टी नहीं मिली। क्रम सक्षम करने के लिए एक संख्या प्रॉपर्टी जोड़ें।",
580
606
  order_property_description: "आइटम का क्रम बनाए रखने के लिए एक संख्या प्रॉपर्टी चुनें",
607
+ image_property: "इमेज प्रॉपर्टी",
608
+ image_property_not_found: "प्रॉपर्टी \"{{property}}\" मौजूद नहीं है या एक इमेज प्रॉपर्टी नहीं है। कृपया एक वैध प्रॉपर्टी चुनें या चयन साफ़ करें।",
609
+ no_image_properties: "कोई इमेज प्रॉपर्टी नहीं मिली। थंबनेल के रूप में उपयोग करने के लिए एक स्टोरेज या URL इमेज प्रॉपर्टी जोड़ें।",
610
+ image_property_description: "कार्ड्स और कानबन व्यू मोड में थंबनेल इमेज के रूप में उपयोग की जाने वाली प्रॉपर्टी चुनें। यदि सेट नहीं किया गया है, तो पहली मिलान वाली इमेज प्रॉपर्टी स्वचालित रूप से उपयोग की जाएगी।",
581
611
  display_settings: "प्रदर्शन सेटिंग्स",
582
612
  default_row_size: "डिफ़ॉल्ट पंक्ति आकार",
583
613
  side_dialog_width: "साइड डायलॉग चौड़ाई",