@firecms/core 3.4.0 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/dist/components/LicenseBanner.d.ts +24 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/contexts/LicenseStatusContext.d.ts +16 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/plugin_translations.d.ts +38 -0
- package/dist/core/pro_plugins.d.ts +40 -0
- package/dist/de-CBOjCvsy.js +707 -0
- package/dist/de-CBOjCvsy.js.map +1 -0
- package/dist/editor/extensions/Image.d.ts +11 -0
- package/dist/editor/index.d.ts +2 -1
- package/dist/editor/lazy_editor.d.ts +6 -0
- package/dist/editor-BSo_aS1I.js +4563 -0
- package/dist/editor-BSo_aS1I.js.map +1 -0
- package/dist/fr-DRfttcG0.js +707 -0
- package/dist/fr-DRfttcG0.js.map +1 -0
- package/dist/hi-DwieOZNf.js +707 -0
- package/dist/hi-DwieOZNf.js.map +1 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/useLicenseStatus.d.ts +16 -0
- package/dist/hooks/useProjectLog.d.ts +11 -6
- package/dist/hooks/useTranslation.d.ts +1 -1
- package/dist/index.es.js +2373 -10281
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +13166 -12269
- package/dist/index.umd.js.map +1 -1
- package/dist/it-l2KXtx9n.js +707 -0
- package/dist/it-l2KXtx9n.js.map +1 -0
- package/dist/pl-DPZrdKhi.js +709 -0
- package/dist/pl-DPZrdKhi.js.map +1 -0
- package/dist/pt-BoHpabw1.js +709 -0
- package/dist/pt-BoHpabw1.js.map +1 -0
- package/dist/types/analytics.d.ts +1 -1
- package/dist/types/firecms.d.ts +18 -1
- package/dist/types/firecms_context.d.ts +8 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/license.d.ts +81 -0
- package/dist/types/plugins.d.ts +9 -1
- package/dist/types/translations.d.ts +45 -2
- package/dist/util/date_fns_locales.d.ts +18 -0
- package/dist/util/index.d.ts +1 -0
- package/dist/util/lazy_eager.d.ts +3 -3
- package/dist/util/local_storage.d.ts +23 -0
- package/package.json +4 -5
- package/src/app/Scaffold.tsx +7 -0
- package/src/components/EntityCollectionView/utils.ts +4 -4
- package/src/components/LicenseBanner.tsx +287 -0
- package/src/components/index.tsx +1 -0
- package/src/contexts/LicenseStatusContext.tsx +50 -0
- package/src/core/DefaultAppBar.tsx +28 -16
- package/src/core/FireCMS.tsx +73 -47
- package/src/core/SideDialogs.tsx +44 -1
- package/src/core/index.tsx +1 -0
- package/src/core/plugin_translations.ts +87 -0
- package/src/core/pro_plugins.ts +79 -0
- package/src/editor/components/SlashCommandMenu.tsx +4 -1
- package/src/editor/extensions/Image.ts +17 -1
- package/src/editor/hooks/useProseMirror.ts +5 -0
- package/src/editor/index.ts +11 -1
- package/src/editor/lazy_editor.tsx +33 -0
- package/src/hooks/index.tsx +2 -0
- package/src/hooks/useBuildLocalConfigurationPersistence.tsx +9 -9
- package/src/hooks/useBuildModeController.tsx +6 -4
- package/src/hooks/useBuildNavigationController.tsx +47 -7
- package/src/hooks/useFireCMSContext.tsx +7 -3
- package/src/hooks/useLicenseStatus.tsx +32 -0
- package/src/hooks/useProjectLog.tsx +27 -9
- package/src/hooks/useTranslation.ts +3 -1
- package/src/i18n/FireCMSi18nProvider.tsx +169 -42
- package/src/locales/de.ts +23 -2
- package/src/locales/en.ts +28 -5
- package/src/locales/es.ts +23 -2
- package/src/locales/fr.ts +23 -2
- package/src/locales/hi.ts +23 -2
- package/src/locales/it.ts +23 -2
- package/src/locales/pl.ts +23 -2
- package/src/locales/pt.ts +23 -2
- package/src/preview/components/DatePreview.tsx +2 -4
- package/src/types/analytics.ts +3 -0
- package/src/types/firecms.tsx +19 -1
- package/src/types/firecms_context.tsx +9 -0
- package/src/types/index.ts +1 -0
- package/src/types/license.ts +90 -0
- package/src/types/plugins.tsx +10 -1
- package/src/types/translations.ts +45 -2
- package/src/util/date_fns_locales.ts +168 -0
- package/src/util/entity_cache.ts +10 -2
- package/src/util/index.ts +1 -0
- package/src/util/lazy_eager.tsx +30 -8
- package/src/util/local_storage.ts +52 -0
- package/src/util/navigation_utils.ts +6 -1
- package/src/util/useStorageUploadController.tsx +6 -1
|
@@ -3,16 +3,75 @@ import i18next, { i18n } from "i18next";
|
|
|
3
3
|
import { I18nContext, I18nextProvider, initReactI18next } from "react-i18next";
|
|
4
4
|
import { en } from "../locales/en";
|
|
5
5
|
import { es } from "../locales/es";
|
|
6
|
-
import { de } from "../locales/de";
|
|
7
|
-
import { fr } from "../locales/fr";
|
|
8
|
-
import { it } from "../locales/it";
|
|
9
|
-
import { hi } from "../locales/hi";
|
|
10
|
-
import { pt } from "../locales/pt";
|
|
11
|
-
import { pl } from "../locales/pl";
|
|
12
6
|
import { FireCMSTranslations } from "../types/translations";
|
|
7
|
+
import { getLocalStorageItem, setLocalStorageItem } from "../util/local_storage";
|
|
13
8
|
|
|
14
9
|
const FIRECMS_NS = "firecms_core";
|
|
15
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Translations that are not part of the bundle every app downloads.
|
|
13
|
+
*
|
|
14
|
+
* All eight locales used to be imported statically, which put ~305KB of strings
|
|
15
|
+
* — every language, for every user — into `@firecms/core` and therefore onto the
|
|
16
|
+
* startup path of every FireCMS app. Only the active language is ever read.
|
|
17
|
+
*
|
|
18
|
+
* `en` and `es` stay static: `en` is the fallback language and the base every
|
|
19
|
+
* unknown locale is seeded from, and both are re-exported from the package root,
|
|
20
|
+
* so a consumer may be importing them by name.
|
|
21
|
+
*
|
|
22
|
+
* The specifiers are written out rather than built from a template so bundlers
|
|
23
|
+
* can see them and emit one chunk per locale.
|
|
24
|
+
*/
|
|
25
|
+
const localeLoaders: Record<string, () => Promise<FireCMSTranslations>> = {
|
|
26
|
+
de: () => import("../locales/de").then((m) => m.de),
|
|
27
|
+
fr: () => import("../locales/fr").then((m) => m.fr),
|
|
28
|
+
it: () => import("../locales/it").then((m) => m.it),
|
|
29
|
+
hi: () => import("../locales/hi").then((m) => m.hi),
|
|
30
|
+
pt: () => import("../locales/pt").then((m) => m.pt),
|
|
31
|
+
pl: () => import("../locales/pl").then((m) => m.pl)
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Locale bundles available synchronously: the two static ones plus anything a
|
|
36
|
+
* previous provider already fetched. `buildResources` reads this, so a rebuild
|
|
37
|
+
* triggered by a changing `translations` prop cannot overwrite a lazily loaded
|
|
38
|
+
* language with the English base it would otherwise fall back to.
|
|
39
|
+
*/
|
|
40
|
+
const loadedLocales: Record<string, FireCMSTranslations> = {
|
|
41
|
+
en,
|
|
42
|
+
es
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const inFlightLocales: Record<string, Promise<void>> = {};
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Fetch a locale bundle into `loadedLocales`.
|
|
49
|
+
*
|
|
50
|
+
* Returns undefined when the bundle is already in memory or there is nothing to
|
|
51
|
+
* fetch, so callers can stay synchronous in the common case.
|
|
52
|
+
*/
|
|
53
|
+
function loadLocale(locale?: string): Promise<void> | undefined {
|
|
54
|
+
if (!locale) return undefined;
|
|
55
|
+
const language = locale.split("-")[0];
|
|
56
|
+
if (loadedLocales[language]) return undefined;
|
|
57
|
+
const loader = localeLoaders[language];
|
|
58
|
+
if (!loader) return undefined;
|
|
59
|
+
if (!inFlightLocales[language]) {
|
|
60
|
+
inFlightLocales[language] = loader()
|
|
61
|
+
.then((bundle) => {
|
|
62
|
+
loadedLocales[language] = bundle;
|
|
63
|
+
})
|
|
64
|
+
.catch(() => {
|
|
65
|
+
// A locale that fails to load falls back to English, which is
|
|
66
|
+
// what an unknown locale has always done.
|
|
67
|
+
})
|
|
68
|
+
.finally(() => {
|
|
69
|
+
delete inFlightLocales[language];
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
return inFlightLocales[language];
|
|
73
|
+
}
|
|
74
|
+
|
|
16
75
|
export const FIRECMS_LOCALE_STORAGE_KEY = "firecms_locale";
|
|
17
76
|
|
|
18
77
|
/** DeepPartial helper — allows partial overrides at any nesting level */
|
|
@@ -76,26 +135,15 @@ export function FireCMSi18nProvider({
|
|
|
76
135
|
|
|
77
136
|
// English baseline + this provider's overrides, with anything the parent
|
|
78
137
|
// already resolved layered in underneath the overrides.
|
|
79
|
-
const resources =
|
|
80
|
-
if (parentInstance) {
|
|
81
|
-
const inherited: Record<string, any> = parentInstance.services?.resourceStore?.data ?? {};
|
|
82
|
-
for (const [lang, namespaces] of Object.entries(inherited)) {
|
|
83
|
-
const bundle = (namespaces as any)?.[FIRECMS_NS];
|
|
84
|
-
if (!bundle) continue;
|
|
85
|
-
resources[lang] = {
|
|
86
|
-
[FIRECMS_NS]: {
|
|
87
|
-
...bundle,
|
|
88
|
-
...(translations?.[lang] ?? {})
|
|
89
|
-
}
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
}
|
|
138
|
+
const resources = buildResourcesWithParent(translations, parentInstance);
|
|
93
139
|
|
|
94
140
|
let initialLocale = parentInstance?.language ?? locale;
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
141
|
+
const stored = getLocalStorageItem(FIRECMS_LOCALE_STORAGE_KEY);
|
|
142
|
+
if (stored) initialLocale = stored;
|
|
143
|
+
|
|
144
|
+
// Kicked off before init so the request is in flight while i18next sets
|
|
145
|
+
// itself up, rather than after it.
|
|
146
|
+
const pendingInitialLocale = loadLocale(initialLocale);
|
|
99
147
|
|
|
100
148
|
instance
|
|
101
149
|
.use(initReactI18next)
|
|
@@ -109,14 +157,35 @@ export function FireCMSi18nProvider({
|
|
|
109
157
|
// React already escapes — don't double-escape
|
|
110
158
|
escapeValue: false,
|
|
111
159
|
},
|
|
160
|
+
react: {
|
|
161
|
+
// Locale bundles now arrive after init, and a bundle landing
|
|
162
|
+
// in the store raises an `added` event rather than
|
|
163
|
+
// `languageChanged`. react-i18next binds only the latter by
|
|
164
|
+
// default, so without this a language switched from the
|
|
165
|
+
// toggle would fetch its strings, put them in the store, and
|
|
166
|
+
// leave the UI sitting on the English fallback.
|
|
167
|
+
bindI18nStore: "added"
|
|
168
|
+
},
|
|
112
169
|
}, () => {
|
|
113
|
-
|
|
170
|
+
if (!pendingInitialLocale) {
|
|
171
|
+
setReady(true);
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
// Holding the first render until the active language has arrived
|
|
175
|
+
// keeps a non-English user from seeing English strings repaint.
|
|
176
|
+
// Only locales outside the static pair wait, and only on the
|
|
177
|
+
// first mount.
|
|
178
|
+
pendingInitialLocale.then(() => {
|
|
179
|
+
applyLoadedLocale(instance, initialLocale, translations, parentInstance);
|
|
180
|
+
setReady(true);
|
|
181
|
+
});
|
|
114
182
|
});
|
|
115
183
|
|
|
116
184
|
instance.on("languageChanged", (lng) => {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
185
|
+
setLocalStorageItem(FIRECMS_LOCALE_STORAGE_KEY, lng);
|
|
186
|
+
// Switching to a language whose bundle has not been fetched yet
|
|
187
|
+
// renders the English fallback until it lands.
|
|
188
|
+
loadLocale(lng)?.then(() => applyLoadedLocale(instance, lng, translations, parentInstance));
|
|
120
189
|
});
|
|
121
190
|
|
|
122
191
|
i18nRef.current = instance;
|
|
@@ -138,17 +207,23 @@ export function FireCMSi18nProvider({
|
|
|
138
207
|
// ONLY if the user hasn't explicitly set a preference
|
|
139
208
|
useEffect(() => {
|
|
140
209
|
if (i18nRef.current && i18nRef.current.language !== locale) {
|
|
141
|
-
const hasUserPreference =
|
|
210
|
+
const hasUserPreference = Boolean(getLocalStorageItem(FIRECMS_LOCALE_STORAGE_KEY));
|
|
142
211
|
if (!hasUserPreference) {
|
|
143
212
|
i18nRef.current.changeLanguage(locale);
|
|
144
213
|
}
|
|
145
214
|
}
|
|
146
215
|
}, [locale]);
|
|
147
216
|
|
|
148
|
-
// When consumer translations prop changes, update the resource bundles
|
|
217
|
+
// When consumer translations prop changes, update the resource bundles.
|
|
218
|
+
//
|
|
219
|
+
// Built through the same layering as the initial instance, parent included.
|
|
220
|
+
// Rebuilding from the bare English baseline here would overwrite whatever the
|
|
221
|
+
// host registered — a nested provider without translations of its own would
|
|
222
|
+
// reset the host's overrides to the built-in strings. That was already true;
|
|
223
|
+
// it was simply invisible until `bindI18nStore` made a store write repaint.
|
|
149
224
|
useEffect(() => {
|
|
150
225
|
if (!i18nRef.current) return;
|
|
151
|
-
const resources =
|
|
226
|
+
const resources = buildResourcesWithParent(translations, parentInstance);
|
|
152
227
|
for (const [lang, bundle] of Object.entries(resources)) {
|
|
153
228
|
i18nRef.current.addResourceBundle(
|
|
154
229
|
lang,
|
|
@@ -158,7 +233,7 @@ export function FireCMSi18nProvider({
|
|
|
158
233
|
true // overwrite existing keys
|
|
159
234
|
);
|
|
160
235
|
}
|
|
161
|
-
}, [translations]);
|
|
236
|
+
}, [translations, parentInstance]);
|
|
162
237
|
|
|
163
238
|
if (!ready || !i18nRef.current) return null;
|
|
164
239
|
|
|
@@ -169,6 +244,64 @@ export function FireCMSi18nProvider({
|
|
|
169
244
|
);
|
|
170
245
|
}
|
|
171
246
|
|
|
247
|
+
/**
|
|
248
|
+
* Push a lazily loaded locale bundle into a live i18next instance.
|
|
249
|
+
*
|
|
250
|
+
* Consumer overrides are re-applied on top, because the instance may already be
|
|
251
|
+
* holding a bundle that `buildResources` seeded from English for this language,
|
|
252
|
+
* and the real translations have to win over that seed while the overrides win
|
|
253
|
+
* over both.
|
|
254
|
+
*/
|
|
255
|
+
function applyLoadedLocale(
|
|
256
|
+
instance: i18n,
|
|
257
|
+
locale: string,
|
|
258
|
+
translations?: { [locale: string]: DeepPartial<FireCMSTranslations> },
|
|
259
|
+
parentInstance?: i18n
|
|
260
|
+
) {
|
|
261
|
+
const language = locale.split("-")[0];
|
|
262
|
+
if (!loadedLocales[language]) return;
|
|
263
|
+
const bundle = buildResourcesWithParent(translations, parentInstance)[language]?.[FIRECMS_NS];
|
|
264
|
+
if (!bundle) return;
|
|
265
|
+
instance.addResourceBundle(
|
|
266
|
+
language,
|
|
267
|
+
FIRECMS_NS,
|
|
268
|
+
bundle,
|
|
269
|
+
true, // deep merge
|
|
270
|
+
true // overwrite the English seed
|
|
271
|
+
);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* The full resource map for this provider: the locale bundles currently in
|
|
276
|
+
* memory, then anything the parent provider already resolved, then this
|
|
277
|
+
* provider's own overrides on top.
|
|
278
|
+
*
|
|
279
|
+
* Shared by every path that writes into the instance — initial construction, a
|
|
280
|
+
* changed `translations` prop, and a locale arriving late — so all three layer
|
|
281
|
+
* in the same order and none of them can undo another.
|
|
282
|
+
*/
|
|
283
|
+
function buildResourcesWithParent(
|
|
284
|
+
translations?: { [locale: string]: DeepPartial<FireCMSTranslations> },
|
|
285
|
+
parentInstance?: i18n
|
|
286
|
+
): Record<string, Record<string, object>> {
|
|
287
|
+
const resources = buildResources(translations);
|
|
288
|
+
if (!parentInstance) return resources;
|
|
289
|
+
|
|
290
|
+
const inherited: Record<string, any> = parentInstance.services?.resourceStore?.data ?? {};
|
|
291
|
+
for (const [lang, namespaces] of Object.entries(inherited)) {
|
|
292
|
+
const bundle = (namespaces as any)?.[FIRECMS_NS];
|
|
293
|
+
if (!bundle) continue;
|
|
294
|
+
resources[lang] = {
|
|
295
|
+
[FIRECMS_NS]: {
|
|
296
|
+
...(resources[lang]?.[FIRECMS_NS] ?? {}),
|
|
297
|
+
...bundle,
|
|
298
|
+
...(translations?.[lang] ?? {})
|
|
299
|
+
}
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
return resources;
|
|
303
|
+
}
|
|
304
|
+
|
|
172
305
|
/**
|
|
173
306
|
* Build an i18next resources object from the English baseline plus any
|
|
174
307
|
* consumer-provided overrides.
|
|
@@ -176,16 +309,10 @@ export function FireCMSi18nProvider({
|
|
|
176
309
|
function buildResources(
|
|
177
310
|
translations?: { [locale: string]: DeepPartial<FireCMSTranslations> }
|
|
178
311
|
): Record<string, Record<string, object>> {
|
|
179
|
-
const resources: Record<string, Record<string, object>> = {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
fr: { [FIRECMS_NS]: { ...fr } },
|
|
184
|
-
it: { [FIRECMS_NS]: { ...it } },
|
|
185
|
-
hi: { [FIRECMS_NS]: { ...hi } },
|
|
186
|
-
pt: { [FIRECMS_NS]: { ...pt } },
|
|
187
|
-
pl: { [FIRECMS_NS]: { ...pl } },
|
|
188
|
-
};
|
|
312
|
+
const resources: Record<string, Record<string, object>> = {};
|
|
313
|
+
for (const [lang, bundle] of Object.entries(loadedLocales)) {
|
|
314
|
+
resources[lang] = { [FIRECMS_NS]: { ...bundle } };
|
|
315
|
+
}
|
|
189
316
|
|
|
190
317
|
if (!translations) return resources;
|
|
191
318
|
|
package/src/locales/de.ts
CHANGED
|
@@ -65,8 +65,23 @@ export const de: FireCMSTranslations = {
|
|
|
65
65
|
select_from: "Aus {{name}} auswählen",
|
|
66
66
|
done: "Fertig",
|
|
67
67
|
log_out: "Abmelden",
|
|
68
|
-
|
|
69
|
-
|
|
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_suggestion_user_management: "{{users}} Personen nutzen dieses CMS. FireCMS PRO bringt eine Benutzerverwaltung mit Rollen und Berechtigungen pro Sammlung, 30 Tage kostenlos in Produktion.",
|
|
80
|
+
pro_suggestion_user_management_uncounted: "FireCMS PRO bringt eine Benutzerverwaltung mit Rollen und Berechtigungen pro Sammlung, 30 Tage kostenlos in Produktion.",
|
|
81
|
+
pro_suggestion_entity_history: "FireCMS PRO speichert jede Änderung an Ihren Inhalten mit ihrem Autor und kann sie rückgängig machen. 30 Tage kostenlos in Produktion.",
|
|
82
|
+
pro_suggestion_learn_more: "So fügen Sie es hinzu",
|
|
83
|
+
pro_features_paused: "PRO-Funktionen pausiert",
|
|
84
|
+
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
85
|
column_cannot_be_edited: "Diese Spalte kann nicht direkt bearbeitet werden",
|
|
71
86
|
close: "Schließen",
|
|
72
87
|
unsaved_local_changes: "Ungespeicherte lokale Änderungen",
|
|
@@ -390,6 +405,9 @@ export const de: FireCMSTranslations = {
|
|
|
390
405
|
large_number_of_documents: "Diese Sammlung hat eine große Anzahl von Dokumenten ({{count}}).",
|
|
391
406
|
include_undefined_values: "Undefinierte Werte einschließen",
|
|
392
407
|
export_apply_filter_sort: "Nur Ergebnisse exportieren, die dem aktuellen Filter/der aktuellen Sortierung entsprechen",
|
|
408
|
+
export_all_entities: "Alle Entitäten",
|
|
409
|
+
export_selected_entities: "Ausgewählte Entitäten ({{count}})",
|
|
410
|
+
export_error: "Die Daten konnten nicht exportiert werden: {{message}}",
|
|
393
411
|
submit: "Einreichen",
|
|
394
412
|
|
|
395
413
|
no_filterable_properties: "Keine filterbaren Eigenschaften verfügbar",
|
|
@@ -439,6 +457,7 @@ export const de: FireCMSTranslations = {
|
|
|
439
457
|
roles_menu: "Rollen",
|
|
440
458
|
project_settings: "Projekteinstellungen",
|
|
441
459
|
firestore_manager: "Firestore-Manager",
|
|
460
|
+
datatalk: "DataTalk",
|
|
442
461
|
manage_your_firestore_data: "Deine Firestore-Daten verwalten",
|
|
443
462
|
|
|
444
463
|
// ─── FireCMS Cloud Login ──────────────────────────────────────
|
|
@@ -455,6 +474,7 @@ export const de: FireCMSTranslations = {
|
|
|
455
474
|
not_the_admin_panel: "nicht auf das Admin-Panel.",
|
|
456
475
|
join_our_newsletter: "Melden Sie sich für unseren Newsletter an. Kein Spam, nur wichtige Updates!",
|
|
457
476
|
by_signing_in_you_agree_to_our: "Mit der Anmeldung stimmen Sie unseren",
|
|
477
|
+
please_accept_the_terms_to_continue: "Bitte akzeptieren Sie die Nutzungsbedingungen, um fortzufahren",
|
|
458
478
|
terms_and_conditions: "Allgemeinen Geschäftsbedingungen",
|
|
459
479
|
and_our: "und unserer",
|
|
460
480
|
privacy_policy: "Datenschutzerklärung",
|
|
@@ -497,6 +517,7 @@ export const de: FireCMSTranslations = {
|
|
|
497
517
|
licensed_projects_lowercase: "lizenzierte projekte",
|
|
498
518
|
manage: "Verwalten",
|
|
499
519
|
update_payment_method: "Zahlungsmethode aktualisieren",
|
|
520
|
+
stripe_portal_error: "Stripe konnte nicht geöffnet werden: {{message}}",
|
|
500
521
|
your_firecms_cloud_projects: "Ihre FireCMS Cloud Projekte",
|
|
501
522
|
status_active: "Aktiv",
|
|
502
523
|
status_trialing: "Testphase",
|
package/src/locales/en.ts
CHANGED
|
@@ -73,8 +73,23 @@ export const en: FireCMSTranslations = {
|
|
|
73
73
|
select_from: "Select from {{name}}",
|
|
74
74
|
done: "Done",
|
|
75
75
|
log_out: "Log out",
|
|
76
|
-
|
|
77
|
-
|
|
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_suggestion_user_management: "{{users}} people use this CMS. FireCMS PRO adds user management, with roles and per-collection permissions, free for 30 days in production.",
|
|
88
|
+
pro_suggestion_user_management_uncounted: "FireCMS PRO adds user management, with roles and per-collection permissions, free for 30 days in production.",
|
|
89
|
+
pro_suggestion_entity_history: "FireCMS PRO keeps a history of every change to your content and who made it, and lets you revert it. Free for 30 days in production.",
|
|
90
|
+
pro_suggestion_learn_more: "See how to add it",
|
|
91
|
+
pro_features_paused: "PRO features paused",
|
|
92
|
+
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
93
|
column_cannot_be_edited: "This column can't be edited directly",
|
|
79
94
|
close: "Close",
|
|
80
95
|
unsaved_local_changes: "Unsaved Local changes",
|
|
@@ -388,16 +403,19 @@ export const en: FireCMSTranslations = {
|
|
|
388
403
|
data_imported_successfully: "Data imported successfully",
|
|
389
404
|
export: "Export",
|
|
390
405
|
export_data: "Export data",
|
|
391
|
-
download_table_csv: "Download the
|
|
406
|
+
download_table_csv: "Download the content of this table as a CSV",
|
|
392
407
|
csv: "CSV",
|
|
393
408
|
json: "JSON",
|
|
394
409
|
dates_as_timestamps: "Dates as timestamps",
|
|
395
410
|
dates_as_strings: "Dates as strings",
|
|
396
411
|
flatten_arrays: "Flatten arrays",
|
|
397
412
|
download: "Download",
|
|
398
|
-
large_number_of_documents: "This
|
|
413
|
+
large_number_of_documents: "This collection has a large number of documents ({{count}}).",
|
|
399
414
|
include_undefined_values: "Include undefined values",
|
|
400
415
|
export_apply_filter_sort: "Only export results matching the current filter/sort",
|
|
416
|
+
export_all_entities: "All entities",
|
|
417
|
+
export_selected_entities: "Selected entities ({{count}})",
|
|
418
|
+
export_error: "Could not export the data: {{message}}",
|
|
401
419
|
submit: "Submit",
|
|
402
420
|
|
|
403
421
|
no_filterable_properties: "No filterable properties available",
|
|
@@ -448,6 +466,9 @@ export const en: FireCMSTranslations = {
|
|
|
448
466
|
project_settings: "Project settings",
|
|
449
467
|
firestore_manager: "Firestore Manager",
|
|
450
468
|
manage_your_firestore_data: "Manage your Firestore data",
|
|
469
|
+
// A product name. It is a key rather than a literal so a locale that uses a
|
|
470
|
+
// different script can transliterate it; most will inherit this value.
|
|
471
|
+
datatalk: "DataTalk",
|
|
451
472
|
|
|
452
473
|
// ─── FireCMS Cloud Login ──────────────────────────────────────
|
|
453
474
|
build_admin_panel_in_minutes: "Build Your Firebase Admin Panel in Minutes",
|
|
@@ -463,6 +484,7 @@ export const en: FireCMSTranslations = {
|
|
|
463
484
|
not_the_admin_panel: "not the admin panel.",
|
|
464
485
|
join_our_newsletter: "Join our newsletter. No spam, only important updates!",
|
|
465
486
|
by_signing_in_you_agree_to_our: "By signing in you agree to our",
|
|
487
|
+
please_accept_the_terms_to_continue: "Please accept the terms and conditions to continue",
|
|
466
488
|
terms_and_conditions: "Terms and Conditions",
|
|
467
489
|
and_our: "and our",
|
|
468
490
|
privacy_policy: "Privacy policy",
|
|
@@ -494,7 +516,7 @@ export const en: FireCMSTranslations = {
|
|
|
494
516
|
// --- SaaS Subscriptions ---
|
|
495
517
|
subscriptions: "Subscriptions",
|
|
496
518
|
manage_your_subscriptions_in_stripe: "Manage your subscriptions in Stripe",
|
|
497
|
-
go_to_your_stripe_portal: "Go
|
|
519
|
+
go_to_your_stripe_portal: "Go to your Stripe portal to view your billing history. You can also manage the subscriptions of the logged-in user there.",
|
|
498
520
|
your_pro_licenses: "Your PRO licenses",
|
|
499
521
|
create_new_license: "Create new license",
|
|
500
522
|
create_subscriptions_in_this_section: "Create subscriptions in this section only for self hosted FireCMS PRO. If you are using FireCMS Cloud, you can upgrade your project from within the project settings.",
|
|
@@ -505,6 +527,7 @@ export const en: FireCMSTranslations = {
|
|
|
505
527
|
licensed_projects_lowercase: "licensed projects",
|
|
506
528
|
manage: "Manage",
|
|
507
529
|
update_payment_method: "Update payment method",
|
|
530
|
+
stripe_portal_error: "Could not open Stripe: {{message}}",
|
|
508
531
|
your_firecms_cloud_projects: "Your FireCMS Cloud projects",
|
|
509
532
|
status_active: "Active",
|
|
510
533
|
status_trialing: "Trialing",
|
package/src/locales/es.ts
CHANGED
|
@@ -73,8 +73,23 @@ export const es: FireCMSTranslations = {
|
|
|
73
73
|
select_from: "Seleccionar de {{name}}",
|
|
74
74
|
done: "Hecho",
|
|
75
75
|
log_out: "Cerrar sesión",
|
|
76
|
-
|
|
77
|
-
|
|
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_suggestion_user_management: "{{users}} personas usan este CMS. FireCMS PRO añade gestión de usuarios, con roles y permisos por colección, gratis durante 30 días en producción.",
|
|
88
|
+
pro_suggestion_user_management_uncounted: "FireCMS PRO añade gestión de usuarios, con roles y permisos por colección, gratis durante 30 días en producción.",
|
|
89
|
+
pro_suggestion_entity_history: "FireCMS PRO guarda el historial de cada cambio en tu contenido y de quién lo hizo, y te deja revertirlo. Gratis durante 30 días en producción.",
|
|
90
|
+
pro_suggestion_learn_more: "Cómo añadirlo",
|
|
91
|
+
pro_features_paused: "Funciones PRO en pausa",
|
|
92
|
+
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
93
|
column_cannot_be_edited: "Esta columna no se puede editar directamente",
|
|
79
94
|
close: "Cerrar",
|
|
80
95
|
unsaved_local_changes: "Cambios locales sin guardar",
|
|
@@ -398,6 +413,9 @@ export const es: FireCMSTranslations = {
|
|
|
398
413
|
large_number_of_documents: "Esta colección posee un gran número de documentos ({{count}}).",
|
|
399
414
|
include_undefined_values: "Incluir valores omitidos (undefined)",
|
|
400
415
|
export_apply_filter_sort: "Exportar solo los resultados que coinciden con el filtro/orden actual",
|
|
416
|
+
export_all_entities: "Todas las entidades",
|
|
417
|
+
export_selected_entities: "Entidades seleccionadas ({{count}})",
|
|
418
|
+
export_error: "No se pudieron exportar los datos: {{message}}",
|
|
401
419
|
submit: "Enviar",
|
|
402
420
|
|
|
403
421
|
no_filterable_properties: "No hay propiedades filtrables disponibles",
|
|
@@ -447,6 +465,7 @@ export const es: FireCMSTranslations = {
|
|
|
447
465
|
roles_menu: "Roles",
|
|
448
466
|
project_settings: "Ajustes del proyecto",
|
|
449
467
|
firestore_manager: "Gestor de Firestore",
|
|
468
|
+
datatalk: "DataTalk",
|
|
450
469
|
manage_your_firestore_data: "Gestiona tus datos de Firestore",
|
|
451
470
|
|
|
452
471
|
// ─── FireCMS Cloud Login ──────────────────────────────────────
|
|
@@ -463,6 +482,7 @@ export const es: FireCMSTranslations = {
|
|
|
463
482
|
not_the_admin_panel: "no en el panel de administración.",
|
|
464
483
|
join_our_newsletter: "Únete a nuestro newsletter. ¡Sin spam, solo actualizaciones importantes!",
|
|
465
484
|
by_signing_in_you_agree_to_our: "Al iniciar sesión aceptas nuestros",
|
|
485
|
+
please_accept_the_terms_to_continue: "Acepta los términos y condiciones para continuar",
|
|
466
486
|
terms_and_conditions: "Términos y Condiciones",
|
|
467
487
|
and_our: "y nuestra",
|
|
468
488
|
privacy_policy: "Política de Privacidad",
|
|
@@ -505,6 +525,7 @@ export const es: FireCMSTranslations = {
|
|
|
505
525
|
licensed_projects_lowercase: "proyectos licenciados",
|
|
506
526
|
manage: "Administrar",
|
|
507
527
|
update_payment_method: "Actualizar método de pago",
|
|
528
|
+
stripe_portal_error: "No se pudo abrir Stripe: {{message}}",
|
|
508
529
|
your_firecms_cloud_projects: "Tus proyectos de FireCMS Cloud",
|
|
509
530
|
status_active: "Activo",
|
|
510
531
|
status_trialing: "En prueba",
|
package/src/locales/fr.ts
CHANGED
|
@@ -65,8 +65,23 @@ export const fr: FireCMSTranslations = {
|
|
|
65
65
|
select_from: "Sélectionner depuis {{name}}",
|
|
66
66
|
done: "Terminé",
|
|
67
67
|
log_out: "Se déconnecter",
|
|
68
|
-
|
|
69
|
-
|
|
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_suggestion_user_management: "{{users}} personnes utilisent ce CMS. FireCMS PRO ajoute la gestion des utilisateurs, avec des rôles et des permissions par collection, gratuite pendant 30 jours en production.",
|
|
80
|
+
pro_suggestion_user_management_uncounted: "FireCMS PRO ajoute la gestion des utilisateurs, avec des rôles et des permissions par collection, gratuite pendant 30 jours en production.",
|
|
81
|
+
pro_suggestion_entity_history: "FireCMS PRO conserve l'historique de chaque modification de votre contenu et de son auteur, et vous permet de l'annuler. Gratuit pendant 30 jours en production.",
|
|
82
|
+
pro_suggestion_learn_more: "Comment l'ajouter",
|
|
83
|
+
pro_features_paused: "Fonctionnalités PRO en pause",
|
|
84
|
+
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
85
|
column_cannot_be_edited: "Cette colonne ne peut pas être modifiée directement",
|
|
71
86
|
close: "Fermer",
|
|
72
87
|
unsaved_local_changes: "Modifications locales non enregistrées",
|
|
@@ -390,6 +405,9 @@ export const fr: FireCMSTranslations = {
|
|
|
390
405
|
large_number_of_documents: "Cette collection contient un grand nombre de documents ({{count}}).",
|
|
391
406
|
include_undefined_values: "Inclure les valeurs non définies",
|
|
392
407
|
export_apply_filter_sort: "N'exporter que les résultats correspondant au filtre/tri actuel",
|
|
408
|
+
export_all_entities: "Toutes les entités",
|
|
409
|
+
export_selected_entities: "Entités sélectionnées ({{count}})",
|
|
410
|
+
export_error: "Impossible d'exporter les données: {{message}}",
|
|
393
411
|
submit: "Soumettre",
|
|
394
412
|
|
|
395
413
|
no_filterable_properties: "Aucune propriété filtrable disponible",
|
|
@@ -439,6 +457,7 @@ export const fr: FireCMSTranslations = {
|
|
|
439
457
|
roles_menu: "Rôles",
|
|
440
458
|
project_settings: "Paramètres du projet",
|
|
441
459
|
firestore_manager: "Gestionnaire Firestore",
|
|
460
|
+
datatalk: "DataTalk",
|
|
442
461
|
manage_your_firestore_data: "Gérez vos données Firestore",
|
|
443
462
|
|
|
444
463
|
// ─── FireCMS Cloud Login ──────────────────────────────────────
|
|
@@ -455,6 +474,7 @@ export const fr: FireCMSTranslations = {
|
|
|
455
474
|
not_the_admin_panel: "pas sur le panneau d'administration.",
|
|
456
475
|
join_our_newsletter: "Inscrivez-vous à notre newsletter. Pas de spam, uniquement des mises à jour importantes !",
|
|
457
476
|
by_signing_in_you_agree_to_our: "En vous connectant, vous acceptez nos",
|
|
477
|
+
please_accept_the_terms_to_continue: "Veuillez accepter les conditions générales pour continuer",
|
|
458
478
|
terms_and_conditions: "Conditions générales",
|
|
459
479
|
and_our: "et notre",
|
|
460
480
|
privacy_policy: "Politique de confidentialité",
|
|
@@ -497,6 +517,7 @@ export const fr: FireCMSTranslations = {
|
|
|
497
517
|
licensed_projects_lowercase: "projets sous licence",
|
|
498
518
|
manage: "Gérer",
|
|
499
519
|
update_payment_method: "Mettre à jour le mode de paiement",
|
|
520
|
+
stripe_portal_error: "Impossible d'ouvrir Stripe : {{message}}",
|
|
500
521
|
your_firecms_cloud_projects: "Vos projets FireCMS Cloud",
|
|
501
522
|
status_active: "Actif",
|
|
502
523
|
status_trialing: "En période d'essai",
|
package/src/locales/hi.ts
CHANGED
|
@@ -65,8 +65,23 @@ export const hi: FireCMSTranslations = {
|
|
|
65
65
|
select_from: "{{name}} से चुनें",
|
|
66
66
|
done: "हो गया",
|
|
67
67
|
log_out: "लॉग आउट",
|
|
68
|
-
|
|
69
|
-
|
|
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_suggestion_user_management: "इस CMS को {{users}} लोग इस्तेमाल करते हैं। FireCMS PRO यूज़र मैनेजमेंट जोड़ता है, जिसमें रोल्स और हर कलेक्शन के लिए अनुमतियाँ हैं, प्रोडक्शन में 30 दिन मुफ़्त।",
|
|
80
|
+
pro_suggestion_user_management_uncounted: "FireCMS PRO यूज़र मैनेजमेंट जोड़ता है, जिसमें रोल्स और हर कलेक्शन के लिए अनुमतियाँ हैं, प्रोडक्शन में 30 दिन मुफ़्त।",
|
|
81
|
+
pro_suggestion_entity_history: "FireCMS PRO आपके कंटेंट के हर बदलाव की हिस्ट्री रखता है, किसने बदला यह भी, और आप उसे वापस ले सकते हैं। प्रोडक्शन में 30 दिन मुफ़्त।",
|
|
82
|
+
pro_suggestion_learn_more: "इसे जोड़ने का तरीका देखें",
|
|
83
|
+
pro_features_paused: "PRO सुविधाएँ रुकी हुई हैं",
|
|
84
|
+
user_management_paused_description: "यूज़र्स और रोल्स का प्रबंधन FireCMS PRO का हिस्सा है। आपके मौजूदा यूज़र्स और रोल्स अब भी तय करते हैं कि कौन साइन इन कर सकता है और क्या कर सकता है। इस प्रोजेक्ट को लाइसेंस मिलते ही आप उन्हें फिर से संपादित कर सकेंगे।",
|
|
70
85
|
column_cannot_be_edited: "इस कॉलम को सीधे संपादित नहीं किया जा सकता",
|
|
71
86
|
close: "बंद करें",
|
|
72
87
|
unsaved_local_changes: "सहेजे नहीं गए स्थानीय परिवर्तन",
|
|
@@ -390,6 +405,9 @@ export const hi: FireCMSTranslations = {
|
|
|
390
405
|
large_number_of_documents: "इस संग्रह में बड़ी संख्या में दस्तावेज़ हैं ({{count}})।",
|
|
391
406
|
include_undefined_values: "अपरिभाषित (undefined) मान शामिल करें",
|
|
392
407
|
export_apply_filter_sort: "केवल वर्तमान फ़िल्टर/सॉर्ट से मेल खाने वाले परिणाम निर्यात करें",
|
|
408
|
+
export_all_entities: "सभी इकाइयाँ",
|
|
409
|
+
export_selected_entities: "चयनित इकाइयाँ ({{count}})",
|
|
410
|
+
export_error: "डेटा निर्यात नहीं किया जा सका: {{message}}",
|
|
393
411
|
submit: "सबमिट करें",
|
|
394
412
|
|
|
395
413
|
no_filterable_properties: "कोई फ़िल्टर करने योग्य गुण उपलब्ध नहीं हैं",
|
|
@@ -439,6 +457,7 @@ export const hi: FireCMSTranslations = {
|
|
|
439
457
|
roles_menu: "भूमिकाएँ",
|
|
440
458
|
project_settings: "परियोजना सेटिंग",
|
|
441
459
|
firestore_manager: "Firestore मैनेजर",
|
|
460
|
+
datatalk: "DataTalk",
|
|
442
461
|
manage_your_firestore_data: "अपने Firestore डेटा का प्रबंधन करें",
|
|
443
462
|
|
|
444
463
|
// ─── FireCMS Cloud Login ──────────────────────────────────────
|
|
@@ -455,6 +474,7 @@ export const hi: FireCMSTranslations = {
|
|
|
455
474
|
not_the_admin_panel: "व्यवस्थापक पैनल पर नहीं।",
|
|
456
475
|
join_our_newsletter: "हमारे न्यूज़लेटर से जुड़ें। बिना किसी स्पैम के, केवल महत्वपूर्ण अपडेट!",
|
|
457
476
|
by_signing_in_you_agree_to_our: "साइन इन करके आप हमारे नियमों और शर्तों से सहमत होते हैं",
|
|
477
|
+
please_accept_the_terms_to_continue: "जारी रखने के लिए कृपया नियम और शर्तें स्वीकार करें",
|
|
458
478
|
terms_and_conditions: "नियम और शर्तें",
|
|
459
479
|
and_our: "और हमारी गोपनीयता नीति",
|
|
460
480
|
privacy_policy: "गोपनीयता नीति",
|
|
@@ -497,6 +517,7 @@ export const hi: FireCMSTranslations = {
|
|
|
497
517
|
licensed_projects_lowercase: "लाइसेंस प्राप्त प्रोजेक्ट्स",
|
|
498
518
|
manage: "प्रबंधित करें",
|
|
499
519
|
update_payment_method: "भुगतान विधि अपडेट करें",
|
|
520
|
+
stripe_portal_error: "Stripe नहीं खुल सका: {{message}}",
|
|
500
521
|
your_firecms_cloud_projects: "आपके FireCMS Cloud प्रोजेक्ट्स",
|
|
501
522
|
status_active: "सक्रिय",
|
|
502
523
|
status_trialing: "परीक्षण (ट्रायल)",
|