@strapi/i18n 0.0.0-experimental.93181c8b900e97a04bf10785b368657101ec98d8 → 0.0.0-experimental.953e1857bbad81a3c34f5d6511736c1bc8b91dcb
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/dist/_chunks/{SettingsPage-CPNFX0bZ.mjs → SettingsPage-BHvunuIF.mjs} +4 -4
- package/dist/_chunks/SettingsPage-BHvunuIF.mjs.map +1 -0
- package/dist/_chunks/{SettingsPage-C-1h_H38.js → SettingsPage-Bcj7380u.js} +4 -4
- package/dist/_chunks/SettingsPage-Bcj7380u.js.map +1 -0
- package/dist/_chunks/{en-CwI88-PP.js → en-BKBz3tro.js} +10 -4
- package/dist/_chunks/en-BKBz3tro.js.map +1 -0
- package/dist/_chunks/{en-CtekP_47.mjs → en-DlXfy6Gy.mjs} +10 -4
- package/dist/_chunks/en-DlXfy6Gy.mjs.map +1 -0
- package/dist/_chunks/{index-jpk39Rxo.js → index-BKZbxhpm.js} +261 -37
- package/dist/_chunks/index-BKZbxhpm.js.map +1 -0
- package/dist/_chunks/{index-CgjpU2bY.mjs → index-DUdrr5PR.mjs} +264 -40
- package/dist/_chunks/index-DUdrr5PR.mjs.map +1 -0
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/components/CMHeaderActions.d.ts +28 -3
- package/dist/admin/src/components/CreateLocale.d.ts +6 -6
- package/dist/admin/src/utils/clean.d.ts +4 -0
- package/dist/server/index.js +389 -485
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +391 -487
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/bootstrap.d.ts +1 -4
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +7 -11
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/register.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +6 -8
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/sanitize/index.d.ts +11 -0
- package/dist/server/src/services/sanitize/index.d.ts.map +1 -0
- package/dist/server/src/utils/index.d.ts +2 -2
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/package.json +10 -10
- package/dist/_chunks/SettingsPage-C-1h_H38.js.map +0 -1
- package/dist/_chunks/SettingsPage-CPNFX0bZ.mjs.map +0 -1
- package/dist/_chunks/en-CtekP_47.mjs.map +0 -1
- package/dist/_chunks/en-CwI88-PP.js.map +0 -1
- package/dist/_chunks/index-CgjpU2bY.mjs.map +0 -1
- package/dist/_chunks/index-jpk39Rxo.js.map +0 -1
- package/dist/server/src/migrations/content-type/disable/index.d.ts +0 -3
- package/dist/server/src/migrations/content-type/disable/index.d.ts.map +0 -1
- package/dist/server/src/migrations/content-type/enable/index.d.ts +0 -3
- package/dist/server/src/migrations/content-type/enable/index.d.ts.map +0 -1
- package/dist/server/src/services/entity-service-decorator.d.ts +0 -29
- package/dist/server/src/services/entity-service-decorator.d.ts.map +0 -1
- package/strapi-server.js +0 -3
@@ -1,13 +1,13 @@
|
|
1
1
|
import get from "lodash/get";
|
2
2
|
import * as yup from "yup";
|
3
|
-
import { jsxs, jsx } from "react/jsx-runtime";
|
3
|
+
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
4
4
|
import * as React from "react";
|
5
5
|
import { Typography, Dialog, Field, Checkbox, Flex, Button, Modal, Box, Status, IconButton, Tooltip, SingleSelect, SingleSelectOption, VisuallyHidden, useCollator, Popover } from "@strapi/design-system";
|
6
|
-
import { WarningCircle, Pencil, CrossCircle, CheckCircle, ArrowsCounterClockwise, Trash, ListPlus, Cross, Earth, EarthStriked, CaretDown } from "@strapi/icons";
|
6
|
+
import { WarningCircle, Pencil, CrossCircle, CheckCircle, ArrowsCounterClockwise, Trash, Plus, Download, ListPlus, Cross, Earth, EarthStriked, CaretDown } from "@strapi/icons";
|
7
7
|
import { useIntl } from "react-intl";
|
8
8
|
import { styled } from "styled-components";
|
9
9
|
import { skipToken } from "@reduxjs/toolkit/query";
|
10
|
-
import { useAuth, adminApi, useTable, Table, useQueryParams, useNotification, useAPIErrorHandler } from "@strapi/admin/strapi-admin";
|
10
|
+
import { useAuth, adminApi, useTable, Table, useQueryParams, useForm, useNotification, useAPIErrorHandler } from "@strapi/admin/strapi-admin";
|
11
11
|
import { unstable_useDocument, unstable_useDocumentActions, buildValidParams } from "@strapi/content-manager/strapi-admin";
|
12
12
|
import { useParams, Link, useNavigate, matchPath } from "react-router-dom";
|
13
13
|
import * as qs from "qs";
|
@@ -217,6 +217,86 @@ const relationsApi = i18nApi.injectEndpoints({
|
|
217
217
|
})
|
218
218
|
});
|
219
219
|
const { useGetManyDraftRelationCountQuery } = relationsApi;
|
220
|
+
const cleanData = (data, schema, components) => {
|
221
|
+
const cleanedData = removeFields(data, [
|
222
|
+
"createdAt",
|
223
|
+
"createdBy",
|
224
|
+
"updatedAt",
|
225
|
+
"updatedBy",
|
226
|
+
"id",
|
227
|
+
"documentId",
|
228
|
+
"publishedAt",
|
229
|
+
"strapi_stage",
|
230
|
+
"strapi_assignee",
|
231
|
+
"locale",
|
232
|
+
"status"
|
233
|
+
]);
|
234
|
+
const cleanedDataWithoutPasswordAndRelation = recursiveRemoveFieldTypes(
|
235
|
+
cleanedData,
|
236
|
+
schema,
|
237
|
+
components,
|
238
|
+
["relation", "password"]
|
239
|
+
);
|
240
|
+
return cleanedDataWithoutPasswordAndRelation;
|
241
|
+
};
|
242
|
+
const removeFields = (data, fields) => {
|
243
|
+
return Object.keys(data).reduce((acc, current) => {
|
244
|
+
if (fields.includes(current)) {
|
245
|
+
return acc;
|
246
|
+
}
|
247
|
+
acc[current] = data[current];
|
248
|
+
return acc;
|
249
|
+
}, {});
|
250
|
+
};
|
251
|
+
const recursiveRemoveFieldTypes = (data, schema, components, fields) => {
|
252
|
+
return Object.keys(data).reduce((acc, current) => {
|
253
|
+
const attribute = schema.attributes[current] ?? { type: void 0 };
|
254
|
+
if (fields.includes(attribute.type)) {
|
255
|
+
return acc;
|
256
|
+
}
|
257
|
+
if (attribute.type === "dynamiczone") {
|
258
|
+
acc[current] = data[current].map((componentValue, index2) => {
|
259
|
+
const { id: _, ...rest } = recursiveRemoveFieldTypes(
|
260
|
+
componentValue,
|
261
|
+
components[componentValue.__component],
|
262
|
+
components,
|
263
|
+
fields
|
264
|
+
);
|
265
|
+
return {
|
266
|
+
...rest,
|
267
|
+
__temp_key__: index2 + 1
|
268
|
+
};
|
269
|
+
});
|
270
|
+
} else if (attribute.type === "component") {
|
271
|
+
const { repeatable, component } = attribute;
|
272
|
+
if (repeatable) {
|
273
|
+
acc[current] = (data[current] ?? []).map((compoData, index2) => {
|
274
|
+
const { id: _, ...rest } = recursiveRemoveFieldTypes(
|
275
|
+
compoData,
|
276
|
+
components[component],
|
277
|
+
components,
|
278
|
+
fields
|
279
|
+
);
|
280
|
+
return {
|
281
|
+
...rest,
|
282
|
+
__temp_key__: index2 + 1
|
283
|
+
};
|
284
|
+
});
|
285
|
+
} else {
|
286
|
+
const { id: _, ...rest } = recursiveRemoveFieldTypes(
|
287
|
+
data[current] ?? {},
|
288
|
+
components[component],
|
289
|
+
components,
|
290
|
+
fields
|
291
|
+
);
|
292
|
+
acc[current] = rest;
|
293
|
+
}
|
294
|
+
} else {
|
295
|
+
acc[current] = data[current];
|
296
|
+
}
|
297
|
+
return acc;
|
298
|
+
}, {});
|
299
|
+
};
|
220
300
|
const isErrorMessageDescriptor = (object) => {
|
221
301
|
return typeof object === "object" && object !== null && "id" in object && "defaultMessage" in object;
|
222
302
|
};
|
@@ -411,6 +491,48 @@ const BulkLocaleActionModal = ({
|
|
411
491
|
] }) })
|
412
492
|
] });
|
413
493
|
};
|
494
|
+
const statusVariants = {
|
495
|
+
draft: "secondary",
|
496
|
+
published: "success",
|
497
|
+
modified: "alternative"
|
498
|
+
};
|
499
|
+
const LocaleOption = ({
|
500
|
+
isDraftAndPublishEnabled,
|
501
|
+
locale,
|
502
|
+
status,
|
503
|
+
entryExists
|
504
|
+
}) => {
|
505
|
+
const { formatMessage } = useIntl();
|
506
|
+
if (!entryExists) {
|
507
|
+
return formatMessage(
|
508
|
+
{
|
509
|
+
id: getTranslation("CMEditViewLocalePicker.locale.create"),
|
510
|
+
defaultMessage: "Create <bold>{locale}</bold> locale"
|
511
|
+
},
|
512
|
+
{
|
513
|
+
bold: (locale2) => /* @__PURE__ */ jsx("b", { children: locale2 }),
|
514
|
+
locale: locale.name
|
515
|
+
}
|
516
|
+
);
|
517
|
+
}
|
518
|
+
return /* @__PURE__ */ jsxs(Flex, { width: "100%", gap: 1, justifyContent: "space-between", children: [
|
519
|
+
/* @__PURE__ */ jsx(Typography, { children: locale.name }),
|
520
|
+
isDraftAndPublishEnabled ? /* @__PURE__ */ jsx(
|
521
|
+
Status,
|
522
|
+
{
|
523
|
+
display: "flex",
|
524
|
+
paddingLeft: "6px",
|
525
|
+
paddingRight: "6px",
|
526
|
+
paddingTop: "2px",
|
527
|
+
paddingBottom: "2px",
|
528
|
+
showBullet: false,
|
529
|
+
size: "S",
|
530
|
+
variant: statusVariants[status],
|
531
|
+
children: /* @__PURE__ */ jsx(Typography, { tag: "span", variant: "pi", fontWeight: "bold", children: capitalize(status) })
|
532
|
+
}
|
533
|
+
) : null
|
534
|
+
] });
|
535
|
+
};
|
414
536
|
const LocalePickerAction = ({
|
415
537
|
document,
|
416
538
|
meta,
|
@@ -422,7 +544,13 @@ const LocalePickerAction = ({
|
|
422
544
|
const [{ query }, setQuery] = useQueryParams();
|
423
545
|
const { hasI18n, canCreate, canRead } = useI18n();
|
424
546
|
const { data: locales = [] } = useGetLocalesQuery();
|
425
|
-
const
|
547
|
+
const currentDesiredLocale = query.plugins?.i18n?.locale;
|
548
|
+
const { schema } = unstable_useDocument({
|
549
|
+
model,
|
550
|
+
collectionType,
|
551
|
+
documentId,
|
552
|
+
params: { locale: currentDesiredLocale }
|
553
|
+
});
|
426
554
|
const handleSelect = React.useCallback(
|
427
555
|
(value) => {
|
428
556
|
setQuery({
|
@@ -440,53 +568,47 @@ const LocalePickerAction = ({
|
|
440
568
|
if (!Array.isArray(locales) || !hasI18n) {
|
441
569
|
return;
|
442
570
|
}
|
443
|
-
const currentDesiredLocale = query.plugins?.i18n?.locale;
|
444
571
|
const doesLocaleExist = locales.find((loc) => loc.code === currentDesiredLocale);
|
445
572
|
const defaultLocale = locales.find((locale) => locale.isDefault);
|
446
573
|
if (!doesLocaleExist && defaultLocale?.code) {
|
447
574
|
handleSelect(defaultLocale.code);
|
448
575
|
}
|
449
|
-
}, [handleSelect, hasI18n, locales,
|
450
|
-
|
451
|
-
return null;
|
452
|
-
}
|
453
|
-
const currentLocale = query.plugins?.i18n?.locale || locales.find((loc) => loc.isDefault)?.code;
|
576
|
+
}, [handleSelect, hasI18n, locales, currentDesiredLocale]);
|
577
|
+
const currentLocale = Array.isArray(locales) ? locales.find((locale) => locale.code === currentDesiredLocale) : void 0;
|
454
578
|
const allCurrentLocales = [
|
455
|
-
{ status: getDocumentStatus(document, meta), locale: currentLocale },
|
579
|
+
{ status: getDocumentStatus(document, meta), locale: currentLocale?.code },
|
456
580
|
...meta?.availableLocales ?? []
|
457
581
|
];
|
582
|
+
if (!hasI18n || !Array.isArray(locales) || locales.length === 0) {
|
583
|
+
return null;
|
584
|
+
}
|
458
585
|
return {
|
459
586
|
label: formatMessage({
|
460
587
|
id: getTranslation("Settings.locales.modal.locales.label"),
|
461
588
|
defaultMessage: "Locales"
|
462
589
|
}),
|
463
590
|
options: locales.map((locale) => {
|
591
|
+
const entryWithLocaleExists = allCurrentLocales.some((doc) => doc.locale === locale.code);
|
464
592
|
const currentLocaleDoc = allCurrentLocales.find(
|
465
593
|
(doc) => "locale" in doc ? doc.locale === locale.code : false
|
466
594
|
);
|
467
|
-
const
|
468
|
-
const permissionsToCheck = currentLocaleDoc ? canCreate : canRead;
|
469
|
-
const statusVariant = status === "draft" ? "primary" : status === "published" ? "success" : "alternative";
|
595
|
+
const permissionsToCheck = currentLocaleDoc ? canRead : canCreate;
|
470
596
|
return {
|
471
597
|
disabled: !permissionsToCheck.includes(locale.code),
|
472
598
|
value: locale.code,
|
473
|
-
label:
|
474
|
-
|
475
|
-
Status,
|
599
|
+
label: /* @__PURE__ */ jsx(
|
600
|
+
LocaleOption,
|
476
601
|
{
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
paddingBottom: "2px",
|
482
|
-
showBullet: false,
|
483
|
-
size: "S",
|
484
|
-
variant: statusVariant,
|
485
|
-
children: /* @__PURE__ */ jsx(Typography, { tag: "span", variant: "pi", fontWeight: "bold", children: capitalize(status) })
|
602
|
+
isDraftAndPublishEnabled: !!schema?.options?.draftAndPublish,
|
603
|
+
locale,
|
604
|
+
status: currentLocaleDoc?.status,
|
605
|
+
entryExists: entryWithLocaleExists
|
486
606
|
}
|
487
|
-
)
|
607
|
+
),
|
608
|
+
startIcon: !entryWithLocaleExists ? /* @__PURE__ */ jsx(Plus, {}) : null
|
488
609
|
};
|
489
610
|
}),
|
611
|
+
customizeContent: () => currentLocale?.name,
|
490
612
|
onSelect: handleSelect,
|
491
613
|
value: currentLocale
|
492
614
|
};
|
@@ -502,6 +624,99 @@ const getDocumentStatus = (document, meta) => {
|
|
502
624
|
}
|
503
625
|
return docStatus;
|
504
626
|
};
|
627
|
+
const FillFromAnotherLocaleAction = ({
|
628
|
+
documentId,
|
629
|
+
meta,
|
630
|
+
model,
|
631
|
+
collectionType
|
632
|
+
}) => {
|
633
|
+
const { formatMessage } = useIntl();
|
634
|
+
const [{ query }] = useQueryParams();
|
635
|
+
const { hasI18n } = useI18n();
|
636
|
+
const currentDesiredLocale = query.plugins?.i18n?.locale;
|
637
|
+
const [localeSelected, setLocaleSelected] = React.useState(null);
|
638
|
+
const setValues = useForm("FillFromAnotherLocale", (state) => state.setValues);
|
639
|
+
const { getDocument } = unstable_useDocumentActions();
|
640
|
+
const { schema, components } = unstable_useDocument({
|
641
|
+
model,
|
642
|
+
documentId,
|
643
|
+
collectionType,
|
644
|
+
params: { locale: currentDesiredLocale }
|
645
|
+
});
|
646
|
+
const { data: locales = [] } = useGetLocalesQuery();
|
647
|
+
const availableLocales = Array.isArray(locales) ? locales.filter((locale) => meta?.availableLocales.some((l) => l.locale === locale.code)) : [];
|
648
|
+
const fillFromLocale = (onClose) => async () => {
|
649
|
+
const response = await getDocument({
|
650
|
+
collectionType,
|
651
|
+
model,
|
652
|
+
documentId,
|
653
|
+
params: { locale: localeSelected }
|
654
|
+
});
|
655
|
+
if (!response || !schema) {
|
656
|
+
return;
|
657
|
+
}
|
658
|
+
const { data } = response;
|
659
|
+
const cleanedData = cleanData(data, schema, components);
|
660
|
+
setValues(cleanedData);
|
661
|
+
onClose();
|
662
|
+
};
|
663
|
+
if (!hasI18n) {
|
664
|
+
return null;
|
665
|
+
}
|
666
|
+
return {
|
667
|
+
type: "icon",
|
668
|
+
icon: /* @__PURE__ */ jsx(Download, {}),
|
669
|
+
disabled: availableLocales.length === 0,
|
670
|
+
label: formatMessage({
|
671
|
+
id: getTranslation("CMEditViewCopyLocale.copy-text"),
|
672
|
+
defaultMessage: "Fill in from another locale"
|
673
|
+
}),
|
674
|
+
dialog: {
|
675
|
+
type: "dialog",
|
676
|
+
title: formatMessage({
|
677
|
+
id: getTranslation("CMEditViewCopyLocale.dialog.title"),
|
678
|
+
defaultMessage: "Confirmation"
|
679
|
+
}),
|
680
|
+
content: ({ onClose }) => /* @__PURE__ */ jsxs(Fragment, { children: [
|
681
|
+
/* @__PURE__ */ jsx(Dialog.Body, { children: /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: 3, children: [
|
682
|
+
/* @__PURE__ */ jsx(WarningCircle, { width: "24px", height: "24px", fill: "danger600" }),
|
683
|
+
/* @__PURE__ */ jsx(Typography, { textAlign: "center", children: formatMessage({
|
684
|
+
id: getTranslation("CMEditViewCopyLocale.dialog.body"),
|
685
|
+
defaultMessage: "Your current content will be erased and filled by the content of the selected locale:"
|
686
|
+
}) }),
|
687
|
+
/* @__PURE__ */ jsxs(Field.Root, { width: "100%", children: [
|
688
|
+
/* @__PURE__ */ jsx(Field.Label, { children: formatMessage({
|
689
|
+
id: getTranslation("CMEditViewCopyLocale.dialog.field.label"),
|
690
|
+
defaultMessage: "Locale"
|
691
|
+
}) }),
|
692
|
+
/* @__PURE__ */ jsx(
|
693
|
+
SingleSelect,
|
694
|
+
{
|
695
|
+
value: localeSelected,
|
696
|
+
placeholder: formatMessage({
|
697
|
+
id: getTranslation("CMEditViewCopyLocale.dialog.field.placeholder"),
|
698
|
+
defaultMessage: "Select one locale..."
|
699
|
+
}),
|
700
|
+
onChange: (value) => setLocaleSelected(value),
|
701
|
+
children: availableLocales.map((locale) => /* @__PURE__ */ jsx(SingleSelectOption, { value: locale.code, children: locale.name }, locale.code))
|
702
|
+
}
|
703
|
+
)
|
704
|
+
] })
|
705
|
+
] }) }),
|
706
|
+
/* @__PURE__ */ jsx(Dialog.Footer, { children: /* @__PURE__ */ jsxs(Flex, { gap: 2, width: "100%", children: [
|
707
|
+
/* @__PURE__ */ jsx(Button, { flex: "auto", variant: "tertiary", onClick: onClose, children: formatMessage({
|
708
|
+
id: getTranslation("CMEditViewCopyLocale.cancel-text"),
|
709
|
+
defaultMessage: "No, cancel"
|
710
|
+
}) }),
|
711
|
+
/* @__PURE__ */ jsx(Button, { flex: "auto", variant: "success", onClick: fillFromLocale(onClose), children: formatMessage({
|
712
|
+
id: getTranslation("CMEditViewCopyLocale.submit-text"),
|
713
|
+
defaultMessage: "Yes, fill in"
|
714
|
+
}) })
|
715
|
+
] }) })
|
716
|
+
] })
|
717
|
+
}
|
718
|
+
};
|
719
|
+
};
|
505
720
|
const DeleteLocaleAction = ({
|
506
721
|
document,
|
507
722
|
documentId,
|
@@ -513,16 +728,23 @@ const DeleteLocaleAction = ({
|
|
513
728
|
const { toggleNotification } = useNotification();
|
514
729
|
const { delete: deleteAction } = unstable_useDocumentActions();
|
515
730
|
const { hasI18n, canDelete } = useI18n();
|
731
|
+
const [{ query }] = useQueryParams();
|
732
|
+
const { data: locales = [] } = useGetLocalesQuery();
|
733
|
+
const currentDesiredLocale = query.plugins?.i18n?.locale;
|
734
|
+
const locale = !("error" in locales) && locales.find((loc) => loc.code === currentDesiredLocale);
|
516
735
|
if (!hasI18n) {
|
517
736
|
return null;
|
518
737
|
}
|
519
738
|
return {
|
520
739
|
disabled: document?.locale && !canDelete.includes(document.locale) || !document || !document.id,
|
521
740
|
position: ["header", "table-row"],
|
522
|
-
label: formatMessage(
|
523
|
-
|
524
|
-
|
525
|
-
|
741
|
+
label: formatMessage(
|
742
|
+
{
|
743
|
+
id: getTranslation("actions.delete.label"),
|
744
|
+
defaultMessage: "Delete entry ({locale})"
|
745
|
+
},
|
746
|
+
{ locale: locale && locale.name }
|
747
|
+
),
|
526
748
|
icon: /* @__PURE__ */ jsx(StyledTrash, {}),
|
527
749
|
variant: "danger",
|
528
750
|
dialog: {
|
@@ -539,7 +761,12 @@ const DeleteLocaleAction = ({
|
|
539
761
|
}) })
|
540
762
|
] }),
|
541
763
|
onConfirm: async () => {
|
542
|
-
|
764
|
+
const unableToDelete = (
|
765
|
+
// We are unable to delete a collection type without a document ID
|
766
|
+
// & unable to delete generally if there is no document locale
|
767
|
+
collectionType !== "single-types" && !documentId || !document?.locale
|
768
|
+
);
|
769
|
+
if (unableToDelete) {
|
543
770
|
console.error(
|
544
771
|
"You're trying to delete a document without an id or locale, this is likely a bug with Strapi. Please open an issue."
|
545
772
|
);
|
@@ -598,7 +825,7 @@ const BulkLocaleAction = ({
|
|
598
825
|
}
|
599
826
|
},
|
600
827
|
{
|
601
|
-
skip: !hasI18n
|
828
|
+
skip: !hasI18n || !baseLocale
|
602
829
|
}
|
603
830
|
);
|
604
831
|
const { data: localesMetadata = [] } = useGetLocalesQuery(hasI18n ? void 0 : skipToken);
|
@@ -1172,9 +1399,6 @@ const localeMiddleware = (ctx) => (next) => (permissions) => {
|
|
1172
1399
|
return next(revisedPermissions);
|
1173
1400
|
};
|
1174
1401
|
const prefixPluginTranslations = (trad, pluginId2) => {
|
1175
|
-
if (!pluginId2) {
|
1176
|
-
throw new TypeError("pluginId can't be empty");
|
1177
|
-
}
|
1178
1402
|
return Object.keys(trad).reduce((acc, current) => {
|
1179
1403
|
acc[`${pluginId2}.${current}`] = trad[current];
|
1180
1404
|
return acc;
|
@@ -1244,11 +1468,11 @@ const index = {
|
|
1244
1468
|
},
|
1245
1469
|
id: "internationalization",
|
1246
1470
|
to: "internationalization",
|
1247
|
-
Component: () => import("./SettingsPage-
|
1471
|
+
Component: () => import("./SettingsPage-BHvunuIF.mjs").then((mod) => ({ default: mod.ProtectedSettingsPage })),
|
1248
1472
|
permissions: PERMISSIONS.accessMain
|
1249
1473
|
});
|
1250
1474
|
const contentManager = app.getPlugin("content-manager");
|
1251
|
-
contentManager.apis.addDocumentHeaderAction([LocalePickerAction]);
|
1475
|
+
contentManager.apis.addDocumentHeaderAction([LocalePickerAction, FillFromAnotherLocaleAction]);
|
1252
1476
|
contentManager.apis.addDocumentAction((actions) => {
|
1253
1477
|
const indexOfDeleteAction = actions.findIndex((action) => action.type === "delete");
|
1254
1478
|
actions.splice(indexOfDeleteAction, 0, DeleteLocaleAction);
|
@@ -1362,7 +1586,7 @@ const index = {
|
|
1362
1586
|
async registerTrads({ locales }) {
|
1363
1587
|
const importedTrads = await Promise.all(
|
1364
1588
|
locales.map((locale) => {
|
1365
|
-
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/de.json": () => import("./de-9eCAqqrB.mjs"), "./translations/dk.json": () => import("./dk-2qBjxt-P.mjs"), "./translations/en.json": () => import("./en-
|
1589
|
+
return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/de.json": () => import("./de-9eCAqqrB.mjs"), "./translations/dk.json": () => import("./dk-2qBjxt-P.mjs"), "./translations/en.json": () => import("./en-DlXfy6Gy.mjs"), "./translations/es.json": () => import("./es-DlmMVaBG.mjs"), "./translations/fr.json": () => import("./fr-3S6ke71d.mjs"), "./translations/ko.json": () => import("./ko-qTjQ8IMw.mjs"), "./translations/pl.json": () => import("./pl-B67TSHqT.mjs"), "./translations/ru.json": () => import("./ru-hagMa57T.mjs"), "./translations/tr.json": () => import("./tr-Dw_jmkG-.mjs"), "./translations/zh-Hans.json": () => import("./zh-Hans-Dyc-aR-h.mjs"), "./translations/zh.json": () => import("./zh-57YM4amO.mjs") }), `./translations/${locale}.json`).then(({ default: data }) => {
|
1366
1590
|
return {
|
1367
1591
|
data: prefixPluginTranslations(data, pluginId),
|
1368
1592
|
locale
|
@@ -1388,4 +1612,4 @@ export {
|
|
1388
1612
|
index as i,
|
1389
1613
|
useCreateLocaleMutation as u
|
1390
1614
|
};
|
1391
|
-
//# sourceMappingURL=index-
|
1615
|
+
//# sourceMappingURL=index-DUdrr5PR.mjs.map
|