@strapi/i18n 0.0.0 → 5.0.0-beta.7
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 +17 -1
- package/dist/_chunks/SettingsPage-BvzzUueI.js +584 -0
- package/dist/_chunks/SettingsPage-BvzzUueI.js.map +1 -0
- package/dist/_chunks/SettingsPage-CB5yd4O3.mjs +564 -0
- package/dist/_chunks/SettingsPage-CB5yd4O3.mjs.map +1 -0
- package/dist/_chunks/de-9eCAqqrB.mjs +66 -0
- package/dist/_chunks/de-9eCAqqrB.mjs.map +1 -0
- package/dist/_chunks/de-DtWiGdHl.js +66 -0
- package/dist/_chunks/de-DtWiGdHl.js.map +1 -0
- package/dist/_chunks/dk-2qBjxt-P.mjs +66 -0
- package/dist/_chunks/dk-2qBjxt-P.mjs.map +1 -0
- package/dist/_chunks/dk-D8C-casx.js +66 -0
- package/dist/_chunks/dk-D8C-casx.js.map +1 -0
- package/dist/_chunks/en-BuBc6LKZ.js +69 -0
- package/dist/_chunks/en-BuBc6LKZ.js.map +1 -0
- package/dist/_chunks/en-CnrTsjWS.mjs +69 -0
- package/dist/_chunks/en-CnrTsjWS.mjs.map +1 -0
- package/dist/_chunks/es-DS-XFGSw.js +66 -0
- package/dist/_chunks/es-DS-XFGSw.js.map +1 -0
- package/dist/_chunks/es-DlmMVaBG.mjs +66 -0
- package/dist/_chunks/es-DlmMVaBG.mjs.map +1 -0
- package/dist/_chunks/fr-3S6ke71d.mjs +66 -0
- package/dist/_chunks/fr-3S6ke71d.mjs.map +1 -0
- package/dist/_chunks/fr-BTjekDpq.js +66 -0
- package/dist/_chunks/fr-BTjekDpq.js.map +1 -0
- package/dist/_chunks/index-DRjoX_5r.js +1084 -0
- package/dist/_chunks/index-DRjoX_5r.js.map +1 -0
- package/dist/_chunks/index-aiqKWFfV.mjs +1061 -0
- package/dist/_chunks/index-aiqKWFfV.mjs.map +1 -0
- package/dist/_chunks/ko-DmcGUBQ3.js +65 -0
- package/dist/_chunks/ko-DmcGUBQ3.js.map +1 -0
- package/dist/_chunks/ko-qTjQ8IMw.mjs +65 -0
- package/dist/_chunks/ko-qTjQ8IMw.mjs.map +1 -0
- package/dist/_chunks/pl-B67TSHqT.mjs +66 -0
- package/dist/_chunks/pl-B67TSHqT.mjs.map +1 -0
- package/dist/_chunks/pl-Cn5RYonZ.js +66 -0
- package/dist/_chunks/pl-Cn5RYonZ.js.map +1 -0
- package/dist/_chunks/ru-BMBgVL3s.js +68 -0
- package/dist/_chunks/ru-BMBgVL3s.js.map +1 -0
- package/dist/_chunks/ru-hagMa57T.mjs +68 -0
- package/dist/_chunks/ru-hagMa57T.mjs.map +1 -0
- package/dist/_chunks/tr-CarUU76c.js +66 -0
- package/dist/_chunks/tr-CarUU76c.js.map +1 -0
- package/dist/_chunks/tr-Dw_jmkG-.mjs +66 -0
- package/dist/_chunks/tr-Dw_jmkG-.mjs.map +1 -0
- package/dist/_chunks/zh-57YM4amO.mjs +66 -0
- package/dist/_chunks/zh-57YM4amO.mjs.map +1 -0
- package/dist/_chunks/zh-CukOviB0.js +66 -0
- package/dist/_chunks/zh-CukOviB0.js.map +1 -0
- package/dist/_chunks/zh-Hans-DSHIXAa3.js +57 -0
- package/dist/_chunks/zh-Hans-DSHIXAa3.js.map +1 -0
- package/dist/_chunks/zh-Hans-Dyc-aR-h.mjs +57 -0
- package/dist/_chunks/zh-Hans-Dyc-aR-h.mjs.map +1 -0
- package/dist/admin/index.js +6 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/index.mjs +7 -0
- package/dist/admin/index.mjs.map +1 -0
- package/dist/admin/src/components/CMHeaderActions.d.ts +4 -0
- package/dist/admin/src/components/CMListViewModalsAdditionalInformation.d.ts +4 -0
- package/dist/admin/src/components/CheckboxConfirmation.d.ts +20 -0
- package/dist/admin/src/components/CreateLocale.d.ts +29 -0
- package/dist/admin/src/components/DeleteLocale.d.ts +5 -0
- package/dist/admin/src/components/EditLocale.d.ts +13 -0
- package/dist/admin/src/components/Initializer.d.ts +5 -0
- package/dist/admin/src/components/LocaleListCell.d.ts +9 -0
- package/dist/admin/src/components/LocalePicker.d.ts +2 -0
- package/dist/admin/src/components/LocaleTable.d.ts +11 -0
- package/dist/admin/src/constants.d.ts +22 -0
- package/dist/admin/src/contentManagerHooks/editView.d.ts +6 -0
- package/dist/admin/src/contentManagerHooks/listView.d.ts +22 -0
- package/dist/admin/src/contentReleasesHooks/releaseDetailsView.d.ts +36 -0
- package/dist/admin/src/hooks/useI18n.d.ts +16 -0
- package/dist/admin/src/index.d.ts +16 -0
- package/dist/admin/src/middlewares/extendCTBAttributeInitialData.d.ts +4 -0
- package/dist/admin/src/middlewares/extendCTBInitialData.d.ts +4 -0
- package/dist/admin/src/middlewares/rbac-middleware.d.ts +3 -0
- package/dist/admin/src/pages/SettingsPage.d.ts +3 -0
- package/dist/admin/src/pluginId.d.ts +1 -0
- package/dist/admin/src/services/api.d.ts +3 -0
- package/dist/admin/src/services/locales.d.ts +4 -0
- package/dist/admin/src/types.d.ts +9 -0
- package/dist/admin/src/utils/baseQuery.d.ts +19 -0
- package/dist/admin/src/utils/fields.d.ts +7 -0
- package/dist/admin/src/utils/getTranslation.d.ts +2 -0
- package/dist/admin/src/utils/prefixPluginTranslations.d.ts +3 -0
- package/dist/admin/src/utils/schemas.d.ts +24 -0
- package/dist/admin/src/utils/strings.d.ts +2 -0
- package/dist/server/index.js +3522 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/index.mjs +3503 -0
- package/dist/server/index.mjs.map +1 -0
- package/dist/server/src/bootstrap.d.ts +6 -0
- package/dist/server/src/bootstrap.d.ts.map +1 -0
- package/dist/server/src/constants/index.d.ts +15 -0
- package/dist/server/src/constants/index.d.ts.map +1 -0
- package/dist/server/src/content-types/index.d.ts +37 -0
- package/dist/server/src/content-types/index.d.ts.map +1 -0
- package/dist/server/src/content-types/locale/index.d.ts +35 -0
- package/dist/server/src/content-types/locale/index.d.ts.map +1 -0
- package/dist/server/src/controllers/content-types.d.ts +6 -0
- package/dist/server/src/controllers/content-types.d.ts.map +1 -0
- package/dist/server/src/controllers/index.d.ts +10 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -0
- package/dist/server/src/controllers/iso-locales.d.ts +4 -0
- package/dist/server/src/controllers/iso-locales.d.ts.map +1 -0
- package/dist/server/src/controllers/locales.d.ts +4 -0
- package/dist/server/src/controllers/locales.d.ts.map +1 -0
- package/dist/server/src/controllers/validate-locale-creation.d.ts +4 -0
- package/dist/server/src/controllers/validate-locale-creation.d.ts.map +1 -0
- package/dist/server/src/domain/locale.d.ts +11 -0
- package/dist/server/src/domain/locale.d.ts.map +1 -0
- package/dist/server/src/graphql.d.ts +8 -0
- package/dist/server/src/graphql.d.ts.map +1 -0
- package/dist/server/src/index.d.ts +148 -0
- package/dist/server/src/index.d.ts.map +1 -0
- package/dist/server/src/migrations/content-type/disable/index.d.ts +3 -0
- package/dist/server/src/migrations/content-type/disable/index.d.ts.map +1 -0
- package/dist/server/src/migrations/content-type/enable/index.d.ts +3 -0
- package/dist/server/src/migrations/content-type/enable/index.d.ts.map +1 -0
- package/dist/server/src/register.d.ts +6 -0
- package/dist/server/src/register.d.ts.map +1 -0
- package/dist/server/src/routes/admin.d.ts +18 -0
- package/dist/server/src/routes/admin.d.ts.map +1 -0
- package/dist/server/src/routes/content-api.d.ts +10 -0
- package/dist/server/src/routes/content-api.d.ts.map +1 -0
- package/dist/server/src/routes/index.d.ts +28 -0
- package/dist/server/src/routes/index.d.ts.map +1 -0
- package/dist/server/src/services/content-types.d.ts +13 -0
- package/dist/server/src/services/content-types.d.ts.map +1 -0
- package/dist/server/src/services/entity-service-decorator.d.ts +29 -0
- package/dist/server/src/services/entity-service-decorator.d.ts.map +1 -0
- package/dist/server/src/services/index.d.ts +71 -0
- package/dist/server/src/services/index.d.ts.map +1 -0
- package/dist/server/src/services/iso-locales.d.ts +10 -0
- package/dist/server/src/services/iso-locales.d.ts.map +1 -0
- package/dist/server/src/services/locales.d.ts +17 -0
- package/dist/server/src/services/locales.d.ts.map +1 -0
- package/dist/server/src/services/localizations.d.ts +8 -0
- package/dist/server/src/services/localizations.d.ts.map +1 -0
- package/dist/server/src/services/metrics.d.ts +8 -0
- package/dist/server/src/services/metrics.d.ts.map +1 -0
- package/dist/server/src/services/permissions/actions.d.ts +16 -0
- package/dist/server/src/services/permissions/actions.d.ts.map +1 -0
- package/dist/server/src/services/permissions/conditions.d.ts +15 -0
- package/dist/server/src/services/permissions/conditions.d.ts.map +1 -0
- package/dist/server/src/services/permissions/engine.d.ts +6 -0
- package/dist/server/src/services/permissions/engine.d.ts.map +1 -0
- package/dist/server/src/services/permissions/sections-builder.d.ts +6 -0
- package/dist/server/src/services/permissions/sections-builder.d.ts.map +1 -0
- package/dist/server/src/services/permissions.d.ts +28 -0
- package/dist/server/src/services/permissions.d.ts.map +1 -0
- package/dist/server/src/utils/index.d.ts +43 -0
- package/dist/server/src/utils/index.d.ts.map +1 -0
- package/dist/server/src/validation/content-types.d.ts +3 -0
- package/dist/server/src/validation/content-types.d.ts.map +1 -0
- package/dist/server/src/validation/locales.d.ts +12 -0
- package/dist/server/src/validation/locales.d.ts.map +1 -0
- package/dist/shared/contracts/content-manager.d.ts +27 -0
- package/dist/shared/contracts/iso-locales.d.ts +21 -0
- package/dist/shared/contracts/locales.d.ts +77 -0
- package/dist/shared/contracts/shared.d.ts +6 -0
- package/package.json +82 -4
- package/strapi-server.js +3 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index-aiqKWFfV.mjs","sources":["../../admin/src/pluginId.ts","../../admin/src/utils/getTranslation.ts","../../admin/src/components/CheckboxConfirmation.tsx","../../admin/src/utils/fields.ts","../../admin/src/utils/strings.ts","../../admin/src/hooks/useI18n.ts","../../admin/src/utils/baseQuery.ts","../../admin/src/services/api.ts","../../admin/src/services/locales.ts","../../admin/src/components/CMHeaderActions.tsx","../../admin/src/components/CMListViewModalsAdditionalInformation.tsx","../../admin/src/components/Initializer.tsx","../../admin/src/components/LocalePicker.tsx","../../admin/src/constants.ts","../../admin/src/contentManagerHooks/editView.tsx","../../admin/src/components/LocaleListCell.tsx","../../admin/src/contentManagerHooks/listView.tsx","../../admin/src/contentReleasesHooks/releaseDetailsView.ts","../../admin/src/middlewares/extendCTBAttributeInitialData.ts","../../admin/src/middlewares/extendCTBInitialData.ts","../../admin/src/middlewares/rbac-middleware.ts","../../admin/src/utils/prefixPluginTranslations.ts","../../admin/src/utils/schemas.ts","../../admin/src/index.ts"],"sourcesContent":["export const pluginId = 'i18n';\n","import { pluginId } from '../pluginId';\n\nconst getTranslation = (id: string) => `${pluginId}.${id}`;\n\nexport { getTranslation };\n","import * as React from 'react';\n\nimport {\n Button,\n Checkbox,\n Dialog,\n DialogBody,\n DialogFooter,\n Field,\n Flex,\n Typography,\n} from '@strapi/design-system';\nimport { WarningCircle } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { getTranslation } from '../utils/getTranslation';\n\nconst TextAlignTypography = styled(Typography)`\n text-align: center;\n`;\n\ninterface IntlMessage extends MessageDescriptor {\n values: object;\n}\n\ninterface CheckboxConfirmationProps {\n description: IntlMessage;\n intlLabel: IntlMessage;\n isCreating?: boolean;\n name: string;\n onChange: (event: { target: { name: string; value: boolean; type: string } }) => void;\n value: boolean;\n}\n\nconst CheckboxConfirmation = ({\n description,\n isCreating = false,\n intlLabel,\n name,\n onChange,\n value,\n}: CheckboxConfirmationProps) => {\n const { formatMessage } = useIntl();\n const [isOpen, setIsOpen] = React.useState(false);\n\n const handleChange = (value: boolean) => {\n if (isCreating || value) {\n return onChange({ target: { name, value, type: 'checkbox' } });\n }\n\n if (!value) {\n return setIsOpen(true);\n }\n\n return null;\n };\n\n const handleConfirm = () => {\n onChange({ target: { name, value: false, type: 'checkbox' } });\n setIsOpen(false);\n };\n\n const handleToggle = () => setIsOpen((prev) => !prev);\n\n const label = intlLabel.id\n ? formatMessage(\n { id: intlLabel.id, defaultMessage: intlLabel.defaultMessage },\n { ...intlLabel.values }\n )\n : name;\n\n const hint = description\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { ...description.values }\n )\n : '';\n\n return (\n <>\n <Field.Root hint={hint} name={name}>\n <Checkbox onValueChange={handleChange} value={value} type=\"checkbox\">\n {label}\n </Checkbox>\n <Field.Hint />\n </Field.Root>\n {isOpen && (\n <Dialog onClose={handleToggle} title=\"Confirmation\" isOpen={isOpen}>\n <DialogBody icon={<WarningCircle />}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex justifyContent=\"center\">\n <TextAlignTypography id=\"confirm-description\">\n {formatMessage({\n id: getTranslation('CheckboxConfirmation.Modal.content'),\n defaultMessage:\n 'Disabling localization will engender the deletion of all your content but the one associated to your default locale (if existing).',\n })}\n </TextAlignTypography>\n </Flex>\n <Flex justifyContent=\"center\">\n <Typography fontWeight=\"semiBold\" id=\"confirm-description\">\n {formatMessage({\n id: getTranslation('CheckboxConfirmation.Modal.body'),\n defaultMessage: 'Do you want to disable it?',\n })}\n </Typography>\n </Flex>\n </Flex>\n </DialogBody>\n <DialogFooter\n startAction={\n <Button onClick={handleToggle} variant=\"tertiary\">\n {formatMessage({\n id: 'components.popUpWarning.button.cancel',\n defaultMessage: 'No, cancel',\n })}\n </Button>\n }\n endAction={\n <Button variant=\"danger-light\" onClick={handleConfirm}>\n {formatMessage({\n id: getTranslation('CheckboxConfirmation.Modal.button-confirm'),\n defaultMessage: 'Yes, disable',\n })}\n </Button>\n }\n />\n </Dialog>\n )}\n </>\n );\n};\n\nexport { CheckboxConfirmation };\n","const LOCALIZED_FIELDS = [\n 'biginteger',\n 'boolean',\n 'component',\n 'date',\n 'datetime',\n 'decimal',\n 'dynamiczone',\n 'email',\n 'enumeration',\n 'float',\n 'integer',\n 'json',\n 'media',\n 'number',\n 'password',\n 'richtext',\n 'blocks',\n 'string',\n 'text',\n 'time',\n];\n\nconst doesPluginOptionsHaveI18nLocalized = (\n opts?: object\n): opts is { i18n: { localized: boolean } } =>\n typeof opts === 'object' &&\n opts !== null &&\n 'i18n' in opts &&\n typeof opts.i18n === 'object' &&\n opts.i18n !== null &&\n 'localized' in opts.i18n &&\n typeof opts.i18n.localized === 'boolean';\n\nexport { LOCALIZED_FIELDS, doesPluginOptionsHaveI18nLocalized };\n","const capitalize = (str: string) => str.charAt(0).toUpperCase() + str.slice(1);\n\nexport { capitalize };\n","import * as React from 'react';\n\nimport { useAuth } from '@strapi/admin/strapi-admin';\nimport { unstable_useDocument as useDocument } from '@strapi/content-manager/strapi-admin';\nimport { useParams } from 'react-router-dom';\n\nimport { doesPluginOptionsHaveI18nLocalized } from '../utils/fields';\nimport { capitalize } from '../utils/strings';\n\ntype UseI18n = () => {\n hasI18n: boolean;\n canCreate: string[];\n canRead: string[];\n canUpdate: string[];\n canDelete: string[];\n canPublish: string[];\n};\n\n/**\n * @alpha\n * @description This hook is used to get the i18n status of a content type.\n * Also returns the CRUDP permission locale properties for the content type\n * so we know which locales the user can perform actions on.\n */\nconst useI18n: UseI18n = () => {\n // Extract the params from the URL to pass to our useDocument hook\n const params = useParams<{ collectionType: string; slug: string; model: string }>();\n\n const userPermissions = useAuth('useI18n', (state) => state.permissions);\n const actions = React.useMemo(() => {\n const permissions = userPermissions.filter((permission) => permission.subject === params.slug);\n\n return permissions.reduce<Omit<ReturnType<UseI18n>, 'hasI18n'>>(\n (acc, permission) => {\n const [actionShorthand] = permission.action.split('.').slice(-1);\n\n return {\n ...acc,\n [`can${capitalize(actionShorthand)}`]: permission.properties?.locales ?? [],\n };\n },\n { canCreate: [], canRead: [], canUpdate: [], canDelete: [], canPublish: [] }\n );\n }, [params.slug, userPermissions]);\n\n const { schema } = useDocument(\n {\n // We can non-null assert these because below we skip the query if they are not present\n collectionType: params.collectionType!,\n model: params.slug!,\n },\n {\n skip: !params.slug || !params.collectionType,\n }\n );\n\n if (doesPluginOptionsHaveI18nLocalized(schema?.pluginOptions)) {\n return {\n hasI18n: schema.pluginOptions.i18n.localized,\n ...actions,\n };\n }\n\n return {\n hasI18n: false,\n ...actions,\n };\n};\n\nexport { useI18n };\n","import { SerializedError } from '@reduxjs/toolkit';\nimport { BaseQueryFn } from '@reduxjs/toolkit/query';\nimport {\n getFetchClient,\n isFetchError,\n type ApiError,\n type FetchOptions,\n} from '@strapi/admin/strapi-admin';\n\nexport interface QueryArguments {\n url: string;\n method?: string;\n data?: unknown;\n config?: FetchOptions;\n}\n\nexport interface UnknownApiError {\n name: 'UnknownError';\n message: string;\n details?: unknown;\n status?: number;\n}\n\nexport type BaseQueryError = ApiError | UnknownApiError | SerializedError;\n\nconst fetchBaseQuery =\n (): BaseQueryFn<string | QueryArguments, unknown, BaseQueryError> =>\n async (query, { signal }) => {\n try {\n const { get, post, del, put } = getFetchClient();\n\n if (typeof query === 'string') {\n const result = await get(query, { signal });\n return { data: result.data };\n } else {\n const { url, method = 'GET', data, config } = query;\n\n if (method === 'POST') {\n const result = await post(url, data, {\n ...config,\n signal,\n });\n return { data: result.data };\n }\n\n if (method === 'DELETE') {\n const result = await del(url, {\n ...config,\n signal,\n });\n return { data: result.data };\n }\n\n if (method === 'PUT') {\n const result = await put(url, data, {\n ...config,\n signal,\n });\n return { data: result.data };\n }\n\n /**\n * Default is GET.\n */\n const result = await get(url, {\n ...config,\n signal,\n });\n return { data: result.data };\n }\n } catch (err) {\n /**\n * Handle error of type FetchError\n *\n * This format mimics what we want from an FetchError which is what the\n * rest of the app works with, except this format is \"serializable\" since\n * it goes into the redux store.\n *\n * NOTE – passing the whole response will highlight this \"serializability\" issue.\n */\n\n if (isFetchError(err)) {\n if (\n typeof err.response?.data === 'object' &&\n err.response?.data !== null &&\n 'error' in err.response?.data\n ) {\n /**\n * This will most likely be ApiError\n */\n return { data: undefined, error: err.response?.data.error };\n } else {\n return {\n data: undefined,\n error: {\n name: 'UnknownError',\n message: 'There was an unknown error response from the API',\n details: err.response,\n status: err.status,\n } as UnknownApiError,\n };\n }\n }\n\n const error = err as Error;\n return {\n data: undefined,\n error: {\n name: error.name,\n message: error.message,\n stack: error.stack,\n } satisfies SerializedError,\n };\n }\n };\n\nconst isBaseQueryError = (error: BaseQueryError): error is ApiError | UnknownApiError => {\n return error.name !== undefined;\n};\n\nexport { fetchBaseQuery, isBaseQueryError };\n","import { createApi } from '@reduxjs/toolkit/query/react';\n\nimport { fetchBaseQuery, type UnknownApiError } from '../utils/baseQuery';\n\nconst i18nApi = createApi({\n reducerPath: 'i18nApi',\n baseQuery: fetchBaseQuery(),\n tagTypes: ['Locale'],\n endpoints: () => ({}),\n});\n\nexport { i18nApi, type UnknownApiError };\n","import { i18nApi } from './api';\n\nimport type { GetISOLocales } from '../../../shared/contracts/iso-locales';\nimport type {\n GetLocales,\n CreateLocale,\n DeleteLocale,\n UpdateLocale,\n} from '../../../shared/contracts/locales';\n\nconst localesApi = i18nApi.injectEndpoints({\n endpoints: (builder) => ({\n createLocale: builder.mutation<CreateLocale.Response, CreateLocale.Request['body']>({\n query: (data) => ({\n url: '/i18n/locales',\n method: 'POST',\n data,\n }),\n invalidatesTags: [{ type: 'Locale', id: 'LIST' }],\n }),\n deleteLocale: builder.mutation<DeleteLocale.Response, DeleteLocale.Params['id']>({\n query: (id) => ({\n url: `/i18n/locales/${id}`,\n method: 'DELETE',\n }),\n invalidatesTags: (result, error, id) => [{ type: 'Locale', id }],\n }),\n getLocales: builder.query<GetLocales.Response, void>({\n query: () => '/i18n/locales',\n providesTags: (res) => [\n { type: 'Locale', id: 'LIST' },\n ...(Array.isArray(res)\n ? res.map((locale) => ({\n type: 'Locale' as const,\n id: locale.id,\n }))\n : []),\n ],\n }),\n getDefaultLocales: builder.query<GetISOLocales.Response, void>({\n query: () => '/i18n/iso-locales',\n }),\n updateLocale: builder.mutation<\n UpdateLocale.Response,\n UpdateLocale.Request['body'] & UpdateLocale.Params\n >({\n query: ({ id, ...data }) => ({\n url: `/i18n/locales/${id}`,\n method: 'PUT',\n data,\n }),\n invalidatesTags: (result, error, { id }) => [{ type: 'Locale', id }],\n }),\n }),\n});\n\nconst {\n useCreateLocaleMutation,\n useDeleteLocaleMutation,\n useGetLocalesQuery,\n useGetDefaultLocalesQuery,\n useUpdateLocaleMutation,\n} = localesApi;\n\nexport {\n useCreateLocaleMutation,\n useDeleteLocaleMutation,\n useGetLocalesQuery,\n useGetDefaultLocalesQuery,\n useUpdateLocaleMutation,\n};\n","import * as React from 'react';\n\nimport { useNotification, useQueryParams } from '@strapi/admin/strapi-admin';\nimport {\n type HeaderActionComponent,\n unstable_useDocument as useDocument,\n unstable_useDocumentActions as useDocumentActions,\n type DocumentActionComponent,\n} from '@strapi/content-manager/strapi-admin';\nimport { Flex, Status, Typography } from '@strapi/design-system';\nimport { Trash, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useI18n } from '../hooks/useI18n';\nimport { useGetLocalesQuery } from '../services/locales';\nimport { getTranslation } from '../utils/getTranslation';\nimport { capitalize } from '../utils/strings';\n\nimport type { I18nBaseQuery } from '../types';\n\n/* -------------------------------------------------------------------------------------------------\n * LocalePickerAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst LocalePickerAction: HeaderActionComponent = ({\n document,\n meta,\n model,\n collectionType,\n documentId,\n}) => {\n const { formatMessage } = useIntl();\n const [{ query }, setQuery] = useQueryParams<I18nBaseQuery>();\n const { hasI18n, canCreate, canRead } = useI18n();\n const { data: locales = [] } = useGetLocalesQuery();\n const { schema } = useDocument({ model, collectionType, documentId });\n\n const handleSelect = React.useCallback(\n (value: string) => {\n setQuery({\n plugins: {\n ...query.plugins,\n i18n: {\n locale: value,\n },\n },\n });\n },\n [query.plugins, setQuery]\n );\n\n React.useEffect(() => {\n if (!Array.isArray(locales) || !hasI18n) {\n return;\n }\n /**\n * Handle the case where the current locale query param doesn't exist\n * in the list of available locales, so we redirect to the default locale.\n */\n const currentDesiredLocale = query.plugins?.i18n?.locale;\n const doesLocaleExist = locales.find((loc) => loc.code === currentDesiredLocale);\n const defaultLocale = locales.find((locale) => locale.isDefault);\n if (!doesLocaleExist && defaultLocale?.code) {\n handleSelect(defaultLocale.code);\n }\n }, [handleSelect, hasI18n, locales, query.plugins?.i18n?.locale]);\n\n if (!hasI18n || !Array.isArray(locales) || locales.length === 0) {\n return null;\n }\n\n const currentLocale = query.plugins?.i18n?.locale || locales.find((loc) => loc.isDefault)?.code;\n\n const allCurrentLocales = [\n { status: getDocumentStatus(document, meta), locale: currentLocale },\n ...(meta?.availableLocales ?? []),\n ];\n\n return {\n label: formatMessage({\n id: getTranslation('Settings.locales.modal.locales.label'),\n defaultMessage: 'Locales',\n }),\n options: locales.map((locale) => {\n const currentLocaleDoc = allCurrentLocales.find((doc) =>\n 'locale' in doc ? doc.locale === locale.code : false\n );\n const status = currentLocaleDoc?.status ?? 'draft';\n\n const permissionsToCheck = currentLocaleDoc ? canCreate : canRead;\n\n const statusVariant =\n status === 'draft' ? 'primary' : status === 'published' ? 'success' : 'alternative';\n\n return {\n disabled: !permissionsToCheck.includes(locale.code),\n value: locale.code,\n label: locale.name,\n startIcon: schema?.options?.draftAndPublish ? (\n <Status\n display=\"flex\"\n paddingLeft=\"6px\"\n paddingRight=\"6px\"\n paddingTop=\"2px\"\n paddingBottom=\"2px\"\n showBullet={false}\n size={'S'}\n variant={statusVariant}\n >\n <Typography tag=\"span\" variant=\"pi\" fontWeight=\"bold\">\n {capitalize(status)}\n </Typography>\n </Status>\n ) : null,\n };\n }),\n onSelect: handleSelect,\n value: currentLocale,\n };\n};\n\ntype UseDocument = typeof useDocument;\n\nconst getDocumentStatus = (\n document: ReturnType<UseDocument>['document'],\n meta: ReturnType<UseDocument>['meta']\n): 'draft' | 'published' | 'modified' => {\n const docStatus = document?.status;\n const statuses = meta?.availableStatus ?? [];\n\n /**\n * Creating an entry\n */\n if (!docStatus) {\n return 'draft';\n }\n\n /**\n * We're viewing a draft, but the document could have a published version\n */\n if (docStatus === 'draft' && statuses.find((doc) => doc.publishedAt !== null)) {\n return 'published';\n }\n\n return docStatus;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DeleteLocaleAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst DeleteLocaleAction: DocumentActionComponent = ({\n document,\n documentId,\n model,\n collectionType,\n}) => {\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { delete: deleteAction } = useDocumentActions();\n const { hasI18n, canDelete } = useI18n();\n\n if (!hasI18n) {\n return null;\n }\n\n return {\n disabled:\n (document?.locale && !canDelete.includes(document.locale)) || !document || !document.id,\n position: ['header', 'table-row'],\n label: formatMessage({\n id: getTranslation('actions.delete.label'),\n defaultMessage: 'Delete locale',\n }),\n icon: <StyledTrash />,\n variant: 'danger',\n dialog: {\n type: 'dialog',\n title: formatMessage({\n id: getTranslation('actions.delete.dialog.title'),\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: getTranslation('actions.delete.dialog.body'),\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n ),\n onConfirm: async () => {\n if (!documentId || !document?.locale) {\n console.error(\n \"You're trying to delete a document without an id or locale, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: getTranslation('actions.delete.error'),\n defaultMessage: 'An error occurred while trying to delete the document locale.',\n }),\n type: 'danger',\n });\n\n return;\n }\n\n const res = await deleteAction({\n documentId,\n model,\n collectionType,\n params: { locale: document.locale },\n });\n\n if (!('error' in res)) {\n navigate({ pathname: `../${collectionType}/${model}` }, { replace: true });\n }\n },\n },\n };\n};\n\n/**\n * Because the icon system is completely broken, we have to do\n * this to remove the fill from the cog.\n */\nconst StyledTrash = styled(Trash)`\n path {\n fill: currentColor;\n }\n`;\n\nexport { DeleteLocaleAction, LocalePickerAction };\n","import * as React from 'react';\n\nimport { Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useI18n } from '../hooks/useI18n';\nimport { getTranslation } from '../utils/getTranslation';\n\nconst Emphasis = (chunks: React.ReactNode) => {\n return (\n <Typography fontWeight=\"semiBold\" textColor=\"danger500\">\n {chunks}\n </Typography>\n );\n};\n\nconst DeleteModalAdditionalInfo = () => {\n const { hasI18n } = useI18n();\n const { formatMessage } = useIntl();\n\n if (!hasI18n) {\n return null;\n }\n\n return (\n <Typography textColor=\"danger500\">\n {formatMessage(\n {\n id: getTranslation('Settings.list.actions.deleteAdditionalInfos'),\n defaultMessage:\n 'This will delete the active locale versions <em>(from Internationalization)</em>',\n },\n {\n em: Emphasis,\n }\n )}\n </Typography>\n );\n};\n\nconst PublishModalAdditionalInfo = () => {\n const { hasI18n } = useI18n();\n const { formatMessage } = useIntl();\n\n if (!hasI18n) {\n return null;\n }\n\n return (\n <Typography textColor=\"danger500\">\n {formatMessage(\n {\n id: getTranslation('Settings.list.actions.publishAdditionalInfos'),\n defaultMessage:\n 'This will publish the active locale versions <em>(from Internationalization)</em>',\n },\n {\n em: Emphasis,\n }\n )}\n </Typography>\n );\n};\n\nconst UnpublishModalAdditionalInfo = () => {\n const { hasI18n } = useI18n();\n const { formatMessage } = useIntl();\n\n if (!hasI18n) {\n return null;\n }\n\n return (\n <Typography textColor=\"danger500\">\n {formatMessage(\n {\n id: getTranslation('Settings.list.actions.unpublishAdditionalInfos'),\n defaultMessage:\n 'This will unpublish the active locale versions <em>(from Internationalization)</em>',\n },\n {\n em: Emphasis,\n }\n )}\n </Typography>\n );\n};\n\nexport { DeleteModalAdditionalInfo, PublishModalAdditionalInfo, UnpublishModalAdditionalInfo };\n","import * as React from 'react';\n\nimport { pluginId } from '../pluginId';\n\ntype InitializerProps = {\n setPlugin: (plugin: string) => void;\n};\n\nconst Initializer = ({ setPlugin }: InitializerProps) => {\n const setPluginRef = React.useRef(setPlugin);\n\n React.useEffect(() => {\n setPluginRef.current(pluginId);\n }, []);\n\n return null;\n};\n\nexport { Initializer };\n","import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport { SingleSelect, SingleSelectOption } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useI18n } from '../hooks/useI18n';\nimport { useGetLocalesQuery } from '../services/locales';\nimport { getTranslation } from '../utils/getTranslation';\n\nimport type { I18nBaseQuery } from '../types';\n\ninterface Query extends I18nBaseQuery {\n page?: number;\n}\n\nconst LocalePicker = () => {\n const { formatMessage } = useIntl();\n const [{ query }, setQuery] = useQueryParams<Query>();\n\n const { hasI18n, canRead, canCreate } = useI18n();\n const { data: locales = [] } = useGetLocalesQuery(undefined, {\n skip: !hasI18n,\n });\n\n const handleChange = React.useCallback(\n (code: string, replace = false) => {\n setQuery(\n {\n page: 1,\n plugins: { ...query.plugins, i18n: { locale: code } },\n },\n 'push',\n replace\n );\n },\n [query.plugins, setQuery]\n );\n\n React.useEffect(() => {\n if (!Array.isArray(locales) || !hasI18n) {\n return;\n }\n /**\n * Handle the case where the current locale query param doesn't exist\n * in the list of available locales, so we redirect to the default locale.\n */\n const currentDesiredLocale = query.plugins?.i18n?.locale;\n const doesLocaleExist = locales.find((loc) => loc.code === currentDesiredLocale);\n const defaultLocale = locales.find((locale) => locale.isDefault);\n if (!doesLocaleExist && defaultLocale?.code) {\n handleChange(defaultLocale.code, true);\n }\n }, [hasI18n, handleChange, locales, query.plugins?.i18n?.locale]);\n\n if (!hasI18n || !Array.isArray(locales) || locales.length === 0) {\n return null;\n }\n\n const displayedLocales = locales.filter((locale) => {\n /**\n * If you can create or read we allow you to see the locale exists\n * this is because in the ListView, you may be able to create a new entry\n * in a locale you can't read.\n */\n return canCreate.includes(locale.code) || canRead.includes(locale.code);\n });\n\n return (\n <SingleSelect\n size=\"S\"\n aria-label={formatMessage({\n id: getTranslation('actions.select-locale'),\n defaultMessage: 'Select locale',\n })}\n value={query.plugins?.i18n?.locale || locales.find((locale) => locale.isDefault)?.code}\n // @ts-expect-error – This can be removed in V2 of the DS.\n onChange={handleChange}\n >\n {displayedLocales.map((locale) => (\n <SingleSelectOption key={locale.id} value={locale.code}>\n {locale.name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n\nexport { LocalePicker };\n","export const PERMISSIONS = {\n accessMain: [{ action: 'plugin::i18n.locale.read', subject: null }],\n create: [{ action: 'plugin::i18n.locale.create', subject: null }],\n delete: [{ action: 'plugin::i18n.locale.delete', subject: null }],\n update: [{ action: 'plugin::i18n.locale.update', subject: null }],\n read: [{ action: 'plugin::i18n.locale.read', subject: null }],\n};\n","/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { Flex, VisuallyHidden } from '@strapi/design-system';\nimport { Earth, EarthStriked } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { getTranslation } from '../utils/getTranslation';\n\nimport type { EditFieldLayout, EditLayout } from '@strapi/content-manager/strapi-admin';\n\ninterface MutateEditViewArgs {\n layout: EditLayout;\n}\n\nconst mutateEditViewHook = ({ layout }: MutateEditViewArgs): MutateEditViewArgs => {\n if (\n 'i18n' in layout.options &&\n typeof layout.options.i18n === 'object' &&\n layout.options.i18n !== null &&\n 'localized' in layout.options.i18n &&\n !layout.options.i18n.localized\n ) {\n return { layout };\n }\n\n const components = Object.entries(layout.components).reduce<EditLayout['components']>(\n (acc, [key, componentLayout]) => {\n return {\n ...acc,\n [key]: {\n ...componentLayout,\n layout: componentLayout.layout.map((row) => row.map(addLabelActionToField)),\n },\n };\n },\n {}\n );\n\n return {\n layout: {\n ...layout,\n components,\n layout: layout.layout.map((panel) => panel.map((row) => row.map(addLabelActionToField))),\n },\n } satisfies Pick<MutateEditViewArgs, 'layout'>;\n};\n\nconst addLabelActionToField = (field: EditFieldLayout) => {\n const isFieldLocalized = doesFieldHaveI18nPluginOpt(field.attribute.pluginOptions)\n ? field.attribute.pluginOptions.i18n.localized\n : true || ['uid', 'relation'].includes(field.attribute.type);\n\n const labelActionProps = {\n title: {\n id: isFieldLocalized\n ? getTranslation('Field.localized')\n : getTranslation('Field.not-localized'),\n defaultMessage: isFieldLocalized\n ? 'This value is unique for the selected locale'\n : 'This value is the same across all locales',\n },\n icon: isFieldLocalized ? <Earth /> : <EarthStriked />,\n };\n\n return {\n ...field,\n labelAction: <LabelAction {...labelActionProps} />,\n };\n};\n\nconst doesFieldHaveI18nPluginOpt = (\n pluginOpts?: object\n): pluginOpts is { i18n: { localized: boolean } } => {\n if (!pluginOpts) {\n return false;\n }\n\n return (\n 'i18n' in pluginOpts &&\n typeof pluginOpts.i18n === 'object' &&\n pluginOpts.i18n !== null &&\n 'localized' in pluginOpts.i18n\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * LabelAction\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LabelActionProps {\n title: MessageDescriptor;\n icon: React.ReactNode;\n}\n\nconst LabelAction = ({ title, icon }: LabelActionProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Span tag=\"span\">\n <VisuallyHidden tag=\"span\">{`(${formatMessage(title)})`}</VisuallyHidden>\n {React.cloneElement(icon as React.ReactElement, {\n 'aria-hidden': true,\n focusable: false, // See: https://allyjs.io/tutorials/focusing-in-svg.html#making-svg-elements-focusable\n })}\n </Span>\n );\n};\n\nconst Span = styled(Flex)`\n svg {\n width: 12px;\n height: 12px;\n\n fill: ${({ theme }) => theme.colors.neutral500};\n\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n`;\n\nexport { mutateEditViewHook };\n","import * as React from 'react';\n\nimport { unstable_useDocument as useDocument } from '@strapi/content-manager/strapi-admin';\nimport { Box, Flex, Popover, Typography, useCollator } from '@strapi/design-system';\nimport { CaretDown } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { Locale } from '../../../shared/contracts/locales';\nimport { useGetLocalesQuery } from '../services/locales';\n\ninterface LocaleListCellProps {\n documentId: string;\n collectionType: string;\n locale: string;\n model: string;\n}\n\nconst LocaleListCell = ({\n documentId,\n locale: currentLocale,\n collectionType,\n model,\n}: LocaleListCellProps) => {\n const { meta, isLoading } = useDocument({\n documentId,\n collectionType,\n model,\n params: {\n locale: currentLocale,\n },\n });\n\n const { locale: language } = useIntl();\n const [visible, setVisible] = React.useState(false);\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n const { data: locales = [] } = useGetLocalesQuery();\n const handleTogglePopover: React.MouseEventHandler<HTMLButtonElement> = (e) => {\n e.stopPropagation();\n setVisible((prev) => !prev);\n };\n const formatter = useCollator(language, {\n sensitivity: 'base',\n });\n\n if (!Array.isArray(locales) || isLoading) {\n return null;\n }\n\n const availableLocales = meta?.availableLocales.map((doc) => doc.locale) ?? [];\n const localesForDocument = locales\n .reduce<Locale[]>((acc, locale) => {\n const createdLocale = [currentLocale, ...availableLocales].find((loc) => {\n return loc === locale.code;\n });\n\n if (createdLocale) {\n acc.push(locale);\n }\n\n return acc;\n }, [])\n .map((locale) => {\n if (locale.isDefault) {\n return `${locale.name} (default)`;\n }\n\n return locale.name;\n })\n .toSorted((a, b) => formatter.compare(a, b));\n\n return (\n <Button type=\"button\" onClick={handleTogglePopover} ref={buttonRef}>\n <ActionWrapper\n minWidth=\"100%\"\n alignItems=\"center\"\n justifyContent=\"center\"\n height=\"3.2rem\"\n width=\"3.2rem\"\n >\n <Typography textColor=\"neutral800\" ellipsis>\n {localesForDocument.join(', ')}\n </Typography>\n <Flex>\n <CaretDown />\n </Flex>\n </ActionWrapper>\n {visible && (\n <Popover\n onDismiss={() => setVisible(false)}\n source={buttonRef as React.MutableRefObject<HTMLElement>}\n spacing={16}\n centered\n >\n <ul>\n {localesForDocument.map((name) => (\n <Box key={name} padding={3} tag=\"li\">\n <Typography>{name}</Typography>\n </Box>\n ))}\n </ul>\n </Popover>\n )}\n </Button>\n );\n};\n\nconst Button = styled.button`\n width: 100%;\n\n svg {\n > g,\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n &:hover {\n svg {\n > g,\n path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n }\n }\n &:active {\n svg {\n > g,\n path {\n fill: ${({ theme }) => theme.colors.neutral400};\n }\n }\n }\n`;\n\nconst ActionWrapper = styled(Flex)`\n svg {\n height: 0.4rem;\n }\n`;\n\nexport { LocaleListCell };\nexport type { LocaleListCellProps };\n","/* eslint-disable check-file/filename-naming-convention */\nimport { LocaleListCell } from '../components/LocaleListCell';\nimport { doesPluginOptionsHaveI18nLocalized } from '../utils/fields';\nimport { getTranslation } from '../utils/getTranslation';\n\nimport type { ListFieldLayout, ListLayout } from '@strapi/content-manager/strapi-admin';\n\n/* -------------------------------------------------------------------------------------------------\n * addColumnToTableHook\n * -----------------------------------------------------------------------------------------------*/\ninterface AddColumnToTableHookArgs {\n layout: ListLayout;\n displayedHeaders: ListFieldLayout[];\n}\n\nconst addColumnToTableHook = ({ displayedHeaders, layout }: AddColumnToTableHookArgs) => {\n const { options } = layout;\n\n const isFieldLocalized = doesPluginOptionsHaveI18nLocalized(options)\n ? options.i18n.localized\n : false;\n\n if (!isFieldLocalized) {\n return { displayedHeaders, layout };\n }\n\n return {\n displayedHeaders: [\n ...displayedHeaders,\n {\n attribute: { type: 'string' },\n label: {\n id: getTranslation('list-view.table.header.label'),\n defaultMessage: 'Available in',\n },\n searchable: false,\n sortable: false,\n name: 'locales',\n // @ts-expect-error – ID is seen as number | string; this will change when we move the type over.\n cellFormatter: (props, _header, meta) => <LocaleListCell {...props} {...meta} />,\n },\n ],\n layout,\n };\n};\n\nexport { addColumnToTableHook };\n","import { Schema } from '@strapi/types';\n/* -------------------------------------------------------------------------------------------------\n * addLocaleToReleasesHook\n * -----------------------------------------------------------------------------------------------*/\ninterface AddLocaleToReleasesHookArgs {\n displayedHeaders: {\n key: string;\n fieldSchema: Schema.Attribute.Kind | 'custom';\n metadatas: {\n label: { id: string; defaultMessage: string };\n searchable: boolean;\n sortable: boolean;\n };\n name: string;\n }[];\n hasI18nEnabled: boolean;\n}\n\nconst addLocaleToReleasesHook = ({ displayedHeaders = [] }: AddLocaleToReleasesHookArgs) => {\n return {\n displayedHeaders: [\n // TODO: Fix when migrating to v5\n // ...displayedHeaders,\n {\n key: '__locale__',\n fieldSchema: { type: 'string' },\n metadatas: {\n label: {\n id: 'content-releases.page.ReleaseDetails.table.header.label.locale',\n defaultMessage: 'locale',\n },\n searchable: false,\n sortable: false,\n },\n name: 'locale',\n },\n ],\n hasI18nEnabled: true,\n };\n};\n\nexport { addLocaleToReleasesHook };\n","import get from 'lodash/get';\n\nimport type { Middleware } from '@reduxjs/toolkit';\nimport type { Store } from '@strapi/admin/strapi-admin';\n\nconst extendCTBAttributeInitialDataMiddleware: () => Middleware<\n object,\n ReturnType<Store['getState']>\n> = () => {\n return ({ getState }) =>\n (next) =>\n (action) => {\n const enhanceAction = () => {\n // the block here is to catch the error when trying to access the state\n // of the ctb when the plugin is not mounted\n try {\n const store = getState();\n\n const hasi18nEnabled = get(\n store,\n [\n 'content-type-builder_dataManagerProvider',\n 'modifiedData',\n 'contentType',\n 'schema',\n 'pluginOptions',\n 'i18n',\n 'localized',\n ],\n false\n );\n\n if (hasi18nEnabled) {\n const pluginOptions = action.options\n ? { ...action.options.pluginOptions, i18n: { localized: true } }\n : { i18n: { localized: true } };\n\n return next({\n ...action,\n options: {\n pluginOptions,\n },\n });\n }\n\n return next(action);\n } catch (err) {\n return next(action);\n }\n };\n\n if (\n action.type === 'ContentTypeBuilder/FormModal/SET_ATTRIBUTE_DATA_SCHEMA' &&\n action.forTarget === 'contentType' &&\n !['relation', 'component'].includes(action.attributeType) &&\n !action.isEditing\n ) {\n return enhanceAction();\n }\n\n if (\n action.type === 'ContentTypeBuilder/FormModal/SET_CUSTOM_FIELD_DATA_SCHEMA' &&\n action.forTarget === 'contentType' &&\n !action.isEditing\n ) {\n return enhanceAction();\n }\n\n if (\n (action.type ===\n 'ContentTypeBuilder/FormModal/RESET_PROPS_AND_SET_FORM_FOR_ADDING_AN_EXISTING_COMPO' ||\n action.type === 'ContentTypeBuilder/FormModal/RESET_PROPS_AND_SAVE_CURRENT_DATA') &&\n action.forTarget === 'contentType'\n ) {\n return enhanceAction();\n }\n\n return next(action);\n };\n};\n\nexport { extendCTBAttributeInitialDataMiddleware };\n","import type { Middleware } from '@reduxjs/toolkit';\nimport type { Store } from '@strapi/admin/strapi-admin';\n\nconst extendCTBInitialDataMiddleware: () => Middleware<\n object,\n ReturnType<Store['getState']>\n> = () => {\n return () => (next) => (action) => {\n if (\n action.type === 'ContentTypeBuilder/FormModal/SET_DATA_TO_EDIT' &&\n action.modalType === 'contentType'\n ) {\n const i18n = { localized: false };\n\n const pluginOptions = action.data.pluginOptions\n ? { ...action.data.pluginOptions, i18n }\n : { i18n };\n\n const data = { ...action.data, pluginOptions };\n\n if (action.actionType === 'create') {\n return next({ ...action, data });\n }\n\n // Override the action if the pluginOption config does not contain i18n\n // In this case we need to set the proper initialData shape\n if (!action.data.pluginOptions?.i18n?.localized) {\n return next({ ...action, data });\n }\n }\n\n // action is not the one we want to override\n return next(action);\n };\n};\n\nexport { extendCTBInitialDataMiddleware };\n","/* eslint-disable check-file/filename-naming-convention */\nimport * as qs from 'qs';\nimport { matchPath } from 'react-router-dom';\n\nimport type { RBACMiddleware } from '@strapi/admin/strapi-admin';\n\nconst localeMiddleware: RBACMiddleware = (ctx) => (next) => (permissions) => {\n const match = matchPath('/content-manager/:collectionType/:model?/:id', ctx.pathname);\n\n if (!match) {\n return next(permissions);\n }\n\n const search = qs.parse(ctx.search);\n\n if (typeof search !== 'object') {\n return next(permissions);\n }\n\n if (!('plugins' in search && typeof search.plugins === 'object')) {\n return next(permissions);\n }\n\n if (\n !(\n 'i18n' in search.plugins &&\n typeof search.plugins.i18n === 'object' &&\n !Array.isArray(search.plugins.i18n)\n )\n ) {\n return next(permissions);\n }\n\n const { locale } = search.plugins.i18n;\n\n if (typeof locale !== 'string') {\n return next(permissions);\n }\n\n const revisedPermissions = permissions.filter(\n (permission) =>\n !permission.properties?.locales || permission.properties.locales.includes(locale)\n );\n\n return next(revisedPermissions);\n};\n\nexport { localeMiddleware };\n","type TradOptions = Record<string, string>;\n\nconst prefixPluginTranslations = (trad: TradOptions, pluginId: string): TradOptions => {\n if (!pluginId) {\n throw new TypeError(\"pluginId can't be empty\");\n }\n return Object.keys(trad).reduce((acc, current) => {\n acc[`${pluginId}.${current}`] = trad[current];\n return acc;\n }, {} as TradOptions);\n};\n\nexport { prefixPluginTranslations };\n","import omit from 'lodash/omit';\n\nimport { LOCALIZED_FIELDS, doesPluginOptionsHaveI18nLocalized } from './fields';\n\nimport type { Schema } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * mutateCTBContentTypeSchema\n * -----------------------------------------------------------------------------------------------*/\n\nconst mutateCTBContentTypeSchema = (\n nextSchema: Schema.ContentType,\n prevSchema?: {\n apiID?: string;\n schema?: Schema.ContentType;\n uid?: string;\n }\n) => {\n // Don't perform mutations components\n if (!doesPluginOptionsHaveI18nLocalized(nextSchema.pluginOptions)) {\n return nextSchema;\n }\n\n const isNextSchemaLocalized = nextSchema.pluginOptions.i18n.localized;\n const isPrevSchemaLocalized = doesPluginOptionsHaveI18nLocalized(\n prevSchema?.schema?.pluginOptions\n )\n ? prevSchema?.schema?.pluginOptions.i18n.localized\n : false;\n\n // No need to perform modification on the schema, if the i18n feature was not changed\n // at the ct level\n if (isNextSchemaLocalized && isPrevSchemaLocalized) {\n return nextSchema;\n }\n\n if (isNextSchemaLocalized) {\n const attributes = addLocalisationToFields(nextSchema.attributes);\n\n return { ...nextSchema, attributes };\n }\n\n // Remove the i18n object from the pluginOptions\n if (!isNextSchemaLocalized) {\n const pluginOptions = omit(nextSchema.pluginOptions, 'i18n');\n const attributes = disableAttributesLocalisation(nextSchema.attributes);\n\n return { ...nextSchema, pluginOptions, attributes };\n }\n\n return nextSchema;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * addLocalisationToFields\n * -----------------------------------------------------------------------------------------------*/\n\nconst addLocalisationToFields = (attributes: Schema.ContentType['attributes']) =>\n Object.keys(attributes).reduce<Schema.ContentType['attributes']>((acc, current) => {\n const currentAttribute = attributes[current];\n\n if (LOCALIZED_FIELDS.includes(currentAttribute.type)) {\n const i18n = { localized: true };\n\n const pluginOptions = currentAttribute.pluginOptions\n ? { ...currentAttribute.pluginOptions, i18n }\n : { i18n };\n\n acc[current] = { ...currentAttribute, pluginOptions };\n\n return acc;\n }\n\n acc[current] = currentAttribute;\n\n return acc;\n }, {});\n\n/* -------------------------------------------------------------------------------------------------\n * disableAttributesLocalisation\n * -----------------------------------------------------------------------------------------------*/\n\ntype OmitByPath<T extends object, K extends string[]> = Pick<T, Exclude<keyof T, K[number]>>;\n\nconst disableAttributesLocalisation = (attributes: Schema.ContentType['attributes']) =>\n Object.keys(attributes).reduce<\n Record<string, OmitByPath<Schema.ContentType['attributes'][string], ['pluginOptions', 'i18n']>>\n >((acc, current) => {\n acc[current] = omit(attributes[current], 'pluginOptions.i18n');\n\n return acc;\n }, {});\n\nexport { mutateCTBContentTypeSchema };\n","import get from 'lodash/get';\nimport * as yup from 'yup';\n\nimport { CheckboxConfirmation } from './components/CheckboxConfirmation';\nimport { DeleteLocaleAction, LocalePickerAction } from './components/CMHeaderActions';\nimport {\n DeleteModalAdditionalInfo,\n PublishModalAdditionalInfo,\n UnpublishModalAdditionalInfo,\n} from './components/CMListViewModalsAdditionalInformation';\nimport { Initializer } from './components/Initializer';\nimport { LocalePicker } from './components/LocalePicker';\nimport { PERMISSIONS } from './constants';\nimport { mutateEditViewHook } from './contentManagerHooks/editView';\nimport { addColumnToTableHook } from './contentManagerHooks/listView';\nimport { addLocaleToReleasesHook } from './contentReleasesHooks/releaseDetailsView';\nimport { extendCTBAttributeInitialDataMiddleware } from './middlewares/extendCTBAttributeInitialData';\nimport { extendCTBInitialDataMiddleware } from './middlewares/extendCTBInitialData';\nimport { localeMiddleware } from './middlewares/rbac-middleware';\nimport { pluginId } from './pluginId';\nimport { i18nApi } from './services/api';\nimport { LOCALIZED_FIELDS } from './utils/fields';\nimport { getTranslation } from './utils/getTranslation';\nimport { prefixPluginTranslations } from './utils/prefixPluginTranslations';\nimport { mutateCTBContentTypeSchema } from './utils/schemas';\n\nimport type { DocumentActionComponent } from '@strapi/content-manager/strapi-admin';\n\n// eslint-disable-next-line import/no-default-export\nexport default {\n register(app: any) {\n app.addMiddlewares([extendCTBAttributeInitialDataMiddleware, extendCTBInitialDataMiddleware]);\n app.addMiddlewares([() => i18nApi.middleware]);\n app.addReducers({\n [i18nApi.reducerPath]: i18nApi.reducer,\n });\n app.addRBACMiddleware([localeMiddleware]);\n app.registerPlugin({\n id: pluginId,\n initializer: Initializer,\n isReady: false,\n name: pluginId,\n });\n },\n bootstrap(app: any) {\n // // Hook that adds a column into the CM's LV table\n app.registerHook('Admin/CM/pages/ListView/inject-column-in-table', addColumnToTableHook);\n app.registerHook('Admin/CM/pages/EditView/mutate-edit-view-layout', mutateEditViewHook);\n // Hooks that checks if the locale is present in the release\n app.registerHook(\n 'ContentReleases/pages/ReleaseDetails/add-locale-in-releases',\n addLocaleToReleasesHook\n );\n\n // Add the settings link\n app.addSettingsLink('global', {\n intlLabel: {\n id: getTranslation('plugin.name'),\n defaultMessage: 'Internationalization',\n },\n id: 'internationalization',\n to: 'internationalization',\n Component: () =>\n import('./pages/SettingsPage').then((mod) => ({ default: mod.ProtectedSettingsPage })),\n permissions: PERMISSIONS.accessMain,\n });\n\n const contentManager = app.getPlugin('content-manager');\n\n contentManager.apis.addDocumentHeaderAction([LocalePickerAction]);\n contentManager.apis.addDocumentAction((actions: DocumentActionComponent[]) => {\n const indexOfDeleteAction = actions.findIndex((action) => action.type === 'delete');\n actions.splice(indexOfDeleteAction, 0, DeleteLocaleAction);\n return actions;\n });\n\n contentManager.injectComponent('listView', 'actions', {\n name: 'i18n-locale-filter',\n Component: LocalePicker,\n });\n\n contentManager.injectComponent('listView', 'publishModalAdditionalInfos', {\n name: 'i18n-publish-bullets-in-modal',\n Component: PublishModalAdditionalInfo,\n });\n\n contentManager.injectComponent('listView', 'unpublishModalAdditionalInfos', {\n name: 'i18n-unpublish-bullets-in-modal',\n Component: UnpublishModalAdditionalInfo,\n });\n\n contentManager.injectComponent('listView', 'deleteModalAdditionalInfos', {\n name: 'i18n-delete-bullets-in-modal',\n Component: DeleteModalAdditionalInfo,\n });\n\n const ctbPlugin = app.getPlugin('content-type-builder');\n\n if (ctbPlugin) {\n const ctbFormsAPI = ctbPlugin.apis.forms;\n ctbFormsAPI.addContentTypeSchemaMutation(mutateCTBContentTypeSchema);\n ctbFormsAPI.components.add({ id: 'checkboxConfirmation', component: CheckboxConfirmation });\n\n ctbFormsAPI.extendContentType({\n validator: () => ({\n i18n: yup.object().shape({\n localized: yup.bool(),\n }),\n }),\n form: {\n advanced() {\n return [\n {\n name: 'pluginOptions.i18n.localized',\n description: {\n id: getTranslation('plugin.schema.i18n.localized.description-content-type'),\n defaultMessage: 'Allows translating an entry into different languages',\n },\n type: 'checkboxConfirmation',\n intlLabel: {\n id: getTranslation('plugin.schema.i18n.localized.label-content-type'),\n defaultMessage: 'Localization',\n },\n },\n ];\n },\n },\n });\n\n ctbFormsAPI.extendFields(LOCALIZED_FIELDS, {\n validator: (args: any) => ({\n i18n: yup.object().shape({\n localized: yup.bool().test({\n name: 'ensure-unique-localization',\n message: getTranslation('plugin.schema.i18n.ensure-unique-localization'),\n test(value) {\n if (value === undefined || value) {\n return true;\n }\n\n const unique = get(args, ['3', 'modifiedData', 'unique'], null);\n\n // Unique fields must be localized\n if (unique && !value) {\n return false;\n }\n\n return true;\n },\n }),\n }),\n }),\n form: {\n advanced({ contentTypeSchema, forTarget, type, step }: any) {\n if (forTarget !== 'contentType') {\n return [];\n }\n\n const hasI18nEnabled = get(\n contentTypeSchema,\n ['schema', 'pluginOptions', 'i18n', 'localized'],\n false\n );\n\n if (!hasI18nEnabled) {\n return [];\n }\n\n if (type === 'component' && step === '1') {\n return [];\n }\n\n return [\n {\n name: 'pluginOptions.i18n.localized',\n description: {\n id: getTranslation('plugin.schema.i18n.localized.description-field'),\n defaultMessage: 'The field can have different values in each locale',\n },\n type: 'checkbox',\n intlLabel: {\n id: getTranslation('plugin.schema.i18n.localized.label-field'),\n defaultMessage: 'Enable localization for this field',\n },\n },\n ];\n },\n },\n });\n }\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, pluginId),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n"],"names":["value","Button","useDocument","get","result","useDocumentActions","pluginId"],"mappings":"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"}
|
@@ -0,0 +1,65 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
3
|
+
const ko = {
|
4
|
+
"CMEditViewCopyLocale.copy-failure": "로케일 복사 실패",
|
5
|
+
"CMEditViewCopyLocale.copy-success": "로케일 복사됨",
|
6
|
+
"CMEditViewCopyLocale.copy-text": "다른 로케일에서 복사하기",
|
7
|
+
"CMEditViewCopyLocale.submit-text": "네, 가져옵니다",
|
8
|
+
"CMListView.popover.display-locales.label": "Display translated locales",
|
9
|
+
"CheckboxConfirmation.Modal.body": "사용하지 않도록 설정하시겠습니까?",
|
10
|
+
"CheckboxConfirmation.Modal.button-confirm": "네, 비활성화합니다.",
|
11
|
+
"CheckboxConfirmation.Modal.content": "지역화(localization) 기능을 해제하면 기본 로케일에 연결된 콘텐츠를 제외한 모든 콘텐츠가 삭제됩니다.",
|
12
|
+
"Field.localized": "이 값은 선택한 로케일에서 고유합니다.",
|
13
|
+
"Field.not-localized": "이 값은 모든 로케일에서 공통입니다.",
|
14
|
+
"Settings.list.actions.add": "로케일 추가",
|
15
|
+
"Settings.list.actions.delete": "로케일 삭제",
|
16
|
+
"Settings.list.actions.deleteAdditionalInfos": "This will delete the active locale versions <em>(from Internationalization)</em>",
|
17
|
+
"Settings.list.actions.edit": "로케일 수정",
|
18
|
+
"Settings.list.description": "국제화 플러그인에 대한 설정을 구성합니다.",
|
19
|
+
"Settings.list.empty.description": "이건 일반적인 동작이 아니며, 데이터베이스를 수동으로 수정한 걸로 파악됩니다. Strapi를 올바르게 사용하려면 데이터베이스에 로케일이 하나 이상 저장되어 있어야 합니다.",
|
20
|
+
"Settings.list.empty.title": "로케일이 없습니다.",
|
21
|
+
"Settings.locales.list.sort.default": "Sort by the default locale",
|
22
|
+
"Settings.locales.list.sort.displayName": "Sort by display name",
|
23
|
+
"Settings.locales.list.sort.id": "Sort by ID",
|
24
|
+
"Settings.locales.modal.advanced": "고급 설정",
|
25
|
+
"Settings.locales.modal.advanced.setAsDefault": "기본 로케일로 설정",
|
26
|
+
"Settings.locales.modal.advanced.setAsDefault.hint": "하나의 기본 로케일은 필수입니다.",
|
27
|
+
"Settings.locales.modal.advanced.settings": "설정",
|
28
|
+
"Settings.locales.modal.base": "기본 설정",
|
29
|
+
"Settings.locales.modal.create.alreadyExist": "이 로케일은 이미 존재합니다.",
|
30
|
+
"Settings.locales.modal.create.defaultLocales.loading": "사용 가능한 로케일을 불러오는 중...",
|
31
|
+
"Settings.locales.modal.create.success": "로케일이 추가되었습니다.",
|
32
|
+
"Settings.locales.modal.create.tab.label": "Navigating between the I18N basic settings and advanced settings",
|
33
|
+
"Settings.locales.modal.delete.confirm": "네, 삭제합니다",
|
34
|
+
"Settings.locales.modal.delete.message": "이 로케일을 삭제하면 연결된 콘텐츠가 모두 삭제됩니다. 콘텐츠를 유지하려면 먼저 다른 로케일에 콘텐츠를 옮겨주세요.",
|
35
|
+
"Settings.locales.modal.delete.secondMessage": "이 로케일을 삭제하시겠습니까?",
|
36
|
+
"Settings.locales.modal.delete.success": "로케일이 삭제되었습니다.",
|
37
|
+
"Settings.locales.modal.edit.confirmation": "완료",
|
38
|
+
"Settings.locales.modal.create.code.label": "Locales",
|
39
|
+
"Settings.locales.modal.edit.success": "로케일이 수정되었습니다.",
|
40
|
+
"Settings.locales.modal.edit.tab.label": "Navigating between the I18N basic settings and advanced settings",
|
41
|
+
"Settings.locales.modal.create.name.label": "로케일 표시 이름",
|
42
|
+
"Settings.locales.modal.create.name.label.description": "어드민 패널에서 해당 이름 아래에 로케일이 표시됩니다.",
|
43
|
+
"Settings.locales.modal.create.name.label.error": "로케일 표시 이름은 50자 미만으로만 가능합니다.",
|
44
|
+
"Settings.locales.modal.locales.label": "로케일",
|
45
|
+
"Settings.locales.modal.locales.loaded": "로케일 목록을 불러왔습니다.",
|
46
|
+
"Settings.locales.modal.title": "설정",
|
47
|
+
"Settings.locales.row.default-locale": "기본값",
|
48
|
+
"Settings.locales.row.displayName": "표시 이름",
|
49
|
+
"Settings.locales.row.id": "ID",
|
50
|
+
"Settings.permissions.loading": "권한을 불러오는 중",
|
51
|
+
"Settings.permissions.read.denied.description": "내용을 보려면 시스템 관리자에게 문의하세요.",
|
52
|
+
"Settings.permissions.read.denied.title": "콘텐츠에 액세스할 수 있는 권한이 없습니다.",
|
53
|
+
"actions.select-locale": "로케일 선택",
|
54
|
+
"components.Select.locales.not-available": "사용 가능한 콘텐츠 없음",
|
55
|
+
"plugin.description.long": "이 플러그인을 사용하면 어드민 패널과 API에서 서로 다른 언어로 된 컨텐츠를 만들고, 읽고, 업데이트할 수 있습니다.",
|
56
|
+
"plugin.description.short": "이 플러그인을 사용하면 어드민 패널과 API에서 서로 다른 언어로 된 컨텐츠를 만들고, 읽고, 업데이트할 수 있습니다.",
|
57
|
+
"plugin.name": "국제화",
|
58
|
+
"plugin.schema.i18n.ensure-unique-localization": "유니크 필드는 지역화(localized)되어야 합니다.",
|
59
|
+
"plugin.schema.i18n.localized.description-content-type": "로케일별로 콘텐츠를 저장할 수 있습니다.",
|
60
|
+
"plugin.schema.i18n.localized.description-field": "필드는 각 로케일에서 서로 다른 값을 가질 수 있습니다.",
|
61
|
+
"plugin.schema.i18n.localized.label-content-type": "이 콘텐츠 타입의 지역화(localization) 켜기",
|
62
|
+
"plugin.schema.i18n.localized.label-field": "이 필드의 지역화(localization) 켜기"
|
63
|
+
};
|
64
|
+
exports.default = ko;
|
65
|
+
//# sourceMappingURL=ko-DmcGUBQ3.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ko-DmcGUBQ3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
@@ -0,0 +1,65 @@
|
|
1
|
+
const ko = {
|
2
|
+
"CMEditViewCopyLocale.copy-failure": "로케일 복사 실패",
|
3
|
+
"CMEditViewCopyLocale.copy-success": "로케일 복사됨",
|
4
|
+
"CMEditViewCopyLocale.copy-text": "다른 로케일에서 복사하기",
|
5
|
+
"CMEditViewCopyLocale.submit-text": "네, 가져옵니다",
|
6
|
+
"CMListView.popover.display-locales.label": "Display translated locales",
|
7
|
+
"CheckboxConfirmation.Modal.body": "사용하지 않도록 설정하시겠습니까?",
|
8
|
+
"CheckboxConfirmation.Modal.button-confirm": "네, 비활성화합니다.",
|
9
|
+
"CheckboxConfirmation.Modal.content": "지역화(localization) 기능을 해제하면 기본 로케일에 연결된 콘텐츠를 제외한 모든 콘텐츠가 삭제됩니다.",
|
10
|
+
"Field.localized": "이 값은 선택한 로케일에서 고유합니다.",
|
11
|
+
"Field.not-localized": "이 값은 모든 로케일에서 공통입니다.",
|
12
|
+
"Settings.list.actions.add": "로케일 추가",
|
13
|
+
"Settings.list.actions.delete": "로케일 삭제",
|
14
|
+
"Settings.list.actions.deleteAdditionalInfos": "This will delete the active locale versions <em>(from Internationalization)</em>",
|
15
|
+
"Settings.list.actions.edit": "로케일 수정",
|
16
|
+
"Settings.list.description": "국제화 플러그인에 대한 설정을 구성합니다.",
|
17
|
+
"Settings.list.empty.description": "이건 일반적인 동작이 아니며, 데이터베이스를 수동으로 수정한 걸로 파악됩니다. Strapi를 올바르게 사용하려면 데이터베이스에 로케일이 하나 이상 저장되어 있어야 합니다.",
|
18
|
+
"Settings.list.empty.title": "로케일이 없습니다.",
|
19
|
+
"Settings.locales.list.sort.default": "Sort by the default locale",
|
20
|
+
"Settings.locales.list.sort.displayName": "Sort by display name",
|
21
|
+
"Settings.locales.list.sort.id": "Sort by ID",
|
22
|
+
"Settings.locales.modal.advanced": "고급 설정",
|
23
|
+
"Settings.locales.modal.advanced.setAsDefault": "기본 로케일로 설정",
|
24
|
+
"Settings.locales.modal.advanced.setAsDefault.hint": "하나의 기본 로케일은 필수입니다.",
|
25
|
+
"Settings.locales.modal.advanced.settings": "설정",
|
26
|
+
"Settings.locales.modal.base": "기본 설정",
|
27
|
+
"Settings.locales.modal.create.alreadyExist": "이 로케일은 이미 존재합니다.",
|
28
|
+
"Settings.locales.modal.create.defaultLocales.loading": "사용 가능한 로케일을 불러오는 중...",
|
29
|
+
"Settings.locales.modal.create.success": "로케일이 추가되었습니다.",
|
30
|
+
"Settings.locales.modal.create.tab.label": "Navigating between the I18N basic settings and advanced settings",
|
31
|
+
"Settings.locales.modal.delete.confirm": "네, 삭제합니다",
|
32
|
+
"Settings.locales.modal.delete.message": "이 로케일을 삭제하면 연결된 콘텐츠가 모두 삭제됩니다. 콘텐츠를 유지하려면 먼저 다른 로케일에 콘텐츠를 옮겨주세요.",
|
33
|
+
"Settings.locales.modal.delete.secondMessage": "이 로케일을 삭제하시겠습니까?",
|
34
|
+
"Settings.locales.modal.delete.success": "로케일이 삭제되었습니다.",
|
35
|
+
"Settings.locales.modal.edit.confirmation": "완료",
|
36
|
+
"Settings.locales.modal.create.code.label": "Locales",
|
37
|
+
"Settings.locales.modal.edit.success": "로케일이 수정되었습니다.",
|
38
|
+
"Settings.locales.modal.edit.tab.label": "Navigating between the I18N basic settings and advanced settings",
|
39
|
+
"Settings.locales.modal.create.name.label": "로케일 표시 이름",
|
40
|
+
"Settings.locales.modal.create.name.label.description": "어드민 패널에서 해당 이름 아래에 로케일이 표시됩니다.",
|
41
|
+
"Settings.locales.modal.create.name.label.error": "로케일 표시 이름은 50자 미만으로만 가능합니다.",
|
42
|
+
"Settings.locales.modal.locales.label": "로케일",
|
43
|
+
"Settings.locales.modal.locales.loaded": "로케일 목록을 불러왔습니다.",
|
44
|
+
"Settings.locales.modal.title": "설정",
|
45
|
+
"Settings.locales.row.default-locale": "기본값",
|
46
|
+
"Settings.locales.row.displayName": "표시 이름",
|
47
|
+
"Settings.locales.row.id": "ID",
|
48
|
+
"Settings.permissions.loading": "권한을 불러오는 중",
|
49
|
+
"Settings.permissions.read.denied.description": "내용을 보려면 시스템 관리자에게 문의하세요.",
|
50
|
+
"Settings.permissions.read.denied.title": "콘텐츠에 액세스할 수 있는 권한이 없습니다.",
|
51
|
+
"actions.select-locale": "로케일 선택",
|
52
|
+
"components.Select.locales.not-available": "사용 가능한 콘텐츠 없음",
|
53
|
+
"plugin.description.long": "이 플러그인을 사용하면 어드민 패널과 API에서 서로 다른 언어로 된 컨텐츠를 만들고, 읽고, 업데이트할 수 있습니다.",
|
54
|
+
"plugin.description.short": "이 플러그인을 사용하면 어드민 패널과 API에서 서로 다른 언어로 된 컨텐츠를 만들고, 읽고, 업데이트할 수 있습니다.",
|
55
|
+
"plugin.name": "국제화",
|
56
|
+
"plugin.schema.i18n.ensure-unique-localization": "유니크 필드는 지역화(localized)되어야 합니다.",
|
57
|
+
"plugin.schema.i18n.localized.description-content-type": "로케일별로 콘텐츠를 저장할 수 있습니다.",
|
58
|
+
"plugin.schema.i18n.localized.description-field": "필드는 각 로케일에서 서로 다른 값을 가질 수 있습니다.",
|
59
|
+
"plugin.schema.i18n.localized.label-content-type": "이 콘텐츠 타입의 지역화(localization) 켜기",
|
60
|
+
"plugin.schema.i18n.localized.label-field": "이 필드의 지역화(localization) 켜기"
|
61
|
+
};
|
62
|
+
export {
|
63
|
+
ko as default
|
64
|
+
};
|
65
|
+
//# sourceMappingURL=ko-qTjQ8IMw.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ko-qTjQ8IMw.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
@@ -0,0 +1,66 @@
|
|
1
|
+
const pl = {
|
2
|
+
"CMEditViewCopyLocale.copy-failure": "Nie udało się skopiować ustawień regionalnych",
|
3
|
+
"CMEditViewCopyLocale.copy-success": "Ustawienia regionalne skopiowane",
|
4
|
+
"CMEditViewCopyLocale.copy-text": "Wypełnij używając innych ustawień regionalnych",
|
5
|
+
"CMEditViewCopyLocale.submit-text": "Tak, wypełnij",
|
6
|
+
"CMListView.popover.display-locales.label": "Wyświetl przetłumaczone ustawienia regionalne",
|
7
|
+
"CheckboxConfirmation.Modal.body": "Czy chcesz to wyłączyć?",
|
8
|
+
"CheckboxConfirmation.Modal.button-confirm": "Tak, wyłącz",
|
9
|
+
"CheckboxConfirmation.Modal.content": "Wyłączenie lokalizacji sprawi, że zostanie usunięta cała zawartość oprócz tej powiązanej z domyślnym ustawieniem regionalnym (o ile taka istnieje).",
|
10
|
+
"Field.localized": "Ta wartość jest unikalna dla wybranych ustawień regionalnych",
|
11
|
+
"Field.not-localized": "Ta wartość jest wspólna dla wszystkich ustawień regionalnych",
|
12
|
+
"Settings.list.actions.add": "Dodaj nowe",
|
13
|
+
"Settings.list.actions.delete": "Usuń",
|
14
|
+
"Settings.list.actions.deleteAdditionalInfos": "Aktywne ustawienia regionalne zostaną usnięte <em>(from Internationalization)</em>",
|
15
|
+
"Settings.list.actions.edit": "Edytuj",
|
16
|
+
"Settings.list.description": "Skonfiguruj ustawienia dla pluginu Internationalization",
|
17
|
+
"Settings.list.empty.description": "To nie jest standardowe zachowanie, co oznacza że ostatecznie zmieniłeś bazę danych manualnie. Aby poprawnie używać strapi upewnij się, że w bazie masz zapisane przynajmniej jedno ustawienie regionalne.",
|
18
|
+
"Settings.list.empty.title": "Brak ustawień regionalnych.",
|
19
|
+
"Settings.locales.default": "domyślne",
|
20
|
+
"Settings.locales.list.sort.default": "Sortuj domyślnie",
|
21
|
+
"Settings.locales.list.sort.displayName": "Sortuj po nazwie",
|
22
|
+
"Settings.locales.list.sort.id": "Sortuj po ID",
|
23
|
+
"Settings.locales.modal.advanced": "Ustawienia zaawansowane",
|
24
|
+
"Settings.locales.modal.advanced.setAsDefault": "Ustaw jako domyślne",
|
25
|
+
"Settings.locales.modal.advanced.setAsDefault.hint": "Jedno domyślne ustawienie regionalne jest wymagane, zmień to poprzez wybranie innego.",
|
26
|
+
"Settings.locales.modal.advanced.settings": "Ustawienia",
|
27
|
+
"Settings.locales.modal.base": "Ustawienia podstawowe",
|
28
|
+
"Settings.locales.modal.create.alreadyExist": "To ustawienie już istnieje",
|
29
|
+
"Settings.locales.modal.create.defaultLocales.loading": "Ładowanie dostępnych ustawień regionalnych...",
|
30
|
+
"Settings.locales.modal.create.success": "Ustawienie dodane",
|
31
|
+
"Settings.locales.modal.create.tab.label": "Nawigowanie pomiędzy I18N podstawowowymi a zaawansowanymi ustawieniami",
|
32
|
+
"Settings.locales.modal.delete.confirm": "Tak, usuń",
|
33
|
+
"Settings.locales.modal.delete.message": "Usunięcie tego ustawienia usunie również całą powiązaną zawartość. Jeśli chcesz zatrzymać jakąś treść upewnij się, że przeniosłeś ją do innych ustawień regionalnych.",
|
34
|
+
"Settings.locales.modal.delete.secondMessage": "Czy chcesz usunąć to ustawienie?",
|
35
|
+
"Settings.locales.modal.delete.success": "Usunięto",
|
36
|
+
"Settings.locales.modal.edit.confirmation": "Zakończ",
|
37
|
+
"Settings.locales.modal.create.code.label": "Ustawienia regionalne",
|
38
|
+
"Settings.locales.modal.edit.success": "Edytowano",
|
39
|
+
"Settings.locales.modal.edit.tab.label": "Nawigowanie pomiędzy I18N podstawowowymi a zaawansowanymi ustawieniami",
|
40
|
+
"Settings.locales.modal.create.name.label": "Nazwa wyświetlana dla ustawienia regionalnego",
|
41
|
+
"Settings.locales.modal.create.name.label.description": "Zostanie wyświetlone pod taką nazwą w panelu administracyjnym.",
|
42
|
+
"Settings.locales.modal.create.name.label.error": "Nazwa wyświetlana nie może mieć więcej niż 50 znaków.",
|
43
|
+
"Settings.locales.modal.locales.label": "Ustawienia regionalne",
|
44
|
+
"Settings.locales.modal.locales.loaded": "Pomyślnie załadowane.",
|
45
|
+
"Settings.locales.modal.title": "Konfiguracja",
|
46
|
+
"Settings.locales.row.default-locale": "Domyślne",
|
47
|
+
"Settings.locales.row.displayName": "Nazwa",
|
48
|
+
"Settings.locales.row.id": "ID",
|
49
|
+
"Settings.permissions.loading": "Ładowanie uprawnień",
|
50
|
+
"Settings.permissions.read.denied.description": "Aby mieć możliwość przeczytania tego, pamiętaj aby skontaktować się z administratorem.",
|
51
|
+
"Settings.permissions.read.denied.title": "Nie masz uprawnień by otrzymać dostęp do tej zawartości",
|
52
|
+
"actions.select-locale": "Wybierz",
|
53
|
+
"components.Select.locales.not-available": "Brak dostępnej zawartości",
|
54
|
+
"plugin.description.long": "Ten plugin umożliwia tworzenie, czytanie i aktualizowanie treści w różnych językach, zarówno z poziomu panelu admina jak i z API.",
|
55
|
+
"plugin.description.short": "Ten plugin umożliwia tworzenie, czytanie i aktualizowanie treści w różnych językach, zarówno z poziomu panelu admina jak i z API.",
|
56
|
+
"plugin.name": "Internationalization",
|
57
|
+
"plugin.schema.i18n.ensure-unique-localization": "Unikalne pola muszą zostać zlokalizowane",
|
58
|
+
"plugin.schema.i18n.localized.description-content-type": "Pozwala mieć treść w różnych ustawieniach regionalnych",
|
59
|
+
"plugin.schema.i18n.localized.description-field": "To pole może mieć różne wartości w zależności od różnych ustawień regionalnych",
|
60
|
+
"plugin.schema.i18n.localized.label-content-type": "Włącz lokalizację dla tego typu treści",
|
61
|
+
"plugin.schema.i18n.localized.label-field": "Włącz lokalizację dla tego pola"
|
62
|
+
};
|
63
|
+
export {
|
64
|
+
pl as default
|
65
|
+
};
|
66
|
+
//# sourceMappingURL=pl-B67TSHqT.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"pl-B67TSHqT.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
@@ -0,0 +1,66 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
3
|
+
const pl = {
|
4
|
+
"CMEditViewCopyLocale.copy-failure": "Nie udało się skopiować ustawień regionalnych",
|
5
|
+
"CMEditViewCopyLocale.copy-success": "Ustawienia regionalne skopiowane",
|
6
|
+
"CMEditViewCopyLocale.copy-text": "Wypełnij używając innych ustawień regionalnych",
|
7
|
+
"CMEditViewCopyLocale.submit-text": "Tak, wypełnij",
|
8
|
+
"CMListView.popover.display-locales.label": "Wyświetl przetłumaczone ustawienia regionalne",
|
9
|
+
"CheckboxConfirmation.Modal.body": "Czy chcesz to wyłączyć?",
|
10
|
+
"CheckboxConfirmation.Modal.button-confirm": "Tak, wyłącz",
|
11
|
+
"CheckboxConfirmation.Modal.content": "Wyłączenie lokalizacji sprawi, że zostanie usunięta cała zawartość oprócz tej powiązanej z domyślnym ustawieniem regionalnym (o ile taka istnieje).",
|
12
|
+
"Field.localized": "Ta wartość jest unikalna dla wybranych ustawień regionalnych",
|
13
|
+
"Field.not-localized": "Ta wartość jest wspólna dla wszystkich ustawień regionalnych",
|
14
|
+
"Settings.list.actions.add": "Dodaj nowe",
|
15
|
+
"Settings.list.actions.delete": "Usuń",
|
16
|
+
"Settings.list.actions.deleteAdditionalInfos": "Aktywne ustawienia regionalne zostaną usnięte <em>(from Internationalization)</em>",
|
17
|
+
"Settings.list.actions.edit": "Edytuj",
|
18
|
+
"Settings.list.description": "Skonfiguruj ustawienia dla pluginu Internationalization",
|
19
|
+
"Settings.list.empty.description": "To nie jest standardowe zachowanie, co oznacza że ostatecznie zmieniłeś bazę danych manualnie. Aby poprawnie używać strapi upewnij się, że w bazie masz zapisane przynajmniej jedno ustawienie regionalne.",
|
20
|
+
"Settings.list.empty.title": "Brak ustawień regionalnych.",
|
21
|
+
"Settings.locales.default": "domyślne",
|
22
|
+
"Settings.locales.list.sort.default": "Sortuj domyślnie",
|
23
|
+
"Settings.locales.list.sort.displayName": "Sortuj po nazwie",
|
24
|
+
"Settings.locales.list.sort.id": "Sortuj po ID",
|
25
|
+
"Settings.locales.modal.advanced": "Ustawienia zaawansowane",
|
26
|
+
"Settings.locales.modal.advanced.setAsDefault": "Ustaw jako domyślne",
|
27
|
+
"Settings.locales.modal.advanced.setAsDefault.hint": "Jedno domyślne ustawienie regionalne jest wymagane, zmień to poprzez wybranie innego.",
|
28
|
+
"Settings.locales.modal.advanced.settings": "Ustawienia",
|
29
|
+
"Settings.locales.modal.base": "Ustawienia podstawowe",
|
30
|
+
"Settings.locales.modal.create.alreadyExist": "To ustawienie już istnieje",
|
31
|
+
"Settings.locales.modal.create.defaultLocales.loading": "Ładowanie dostępnych ustawień regionalnych...",
|
32
|
+
"Settings.locales.modal.create.success": "Ustawienie dodane",
|
33
|
+
"Settings.locales.modal.create.tab.label": "Nawigowanie pomiędzy I18N podstawowowymi a zaawansowanymi ustawieniami",
|
34
|
+
"Settings.locales.modal.delete.confirm": "Tak, usuń",
|
35
|
+
"Settings.locales.modal.delete.message": "Usunięcie tego ustawienia usunie również całą powiązaną zawartość. Jeśli chcesz zatrzymać jakąś treść upewnij się, że przeniosłeś ją do innych ustawień regionalnych.",
|
36
|
+
"Settings.locales.modal.delete.secondMessage": "Czy chcesz usunąć to ustawienie?",
|
37
|
+
"Settings.locales.modal.delete.success": "Usunięto",
|
38
|
+
"Settings.locales.modal.edit.confirmation": "Zakończ",
|
39
|
+
"Settings.locales.modal.create.code.label": "Ustawienia regionalne",
|
40
|
+
"Settings.locales.modal.edit.success": "Edytowano",
|
41
|
+
"Settings.locales.modal.edit.tab.label": "Nawigowanie pomiędzy I18N podstawowowymi a zaawansowanymi ustawieniami",
|
42
|
+
"Settings.locales.modal.create.name.label": "Nazwa wyświetlana dla ustawienia regionalnego",
|
43
|
+
"Settings.locales.modal.create.name.label.description": "Zostanie wyświetlone pod taką nazwą w panelu administracyjnym.",
|
44
|
+
"Settings.locales.modal.create.name.label.error": "Nazwa wyświetlana nie może mieć więcej niż 50 znaków.",
|
45
|
+
"Settings.locales.modal.locales.label": "Ustawienia regionalne",
|
46
|
+
"Settings.locales.modal.locales.loaded": "Pomyślnie załadowane.",
|
47
|
+
"Settings.locales.modal.title": "Konfiguracja",
|
48
|
+
"Settings.locales.row.default-locale": "Domyślne",
|
49
|
+
"Settings.locales.row.displayName": "Nazwa",
|
50
|
+
"Settings.locales.row.id": "ID",
|
51
|
+
"Settings.permissions.loading": "Ładowanie uprawnień",
|
52
|
+
"Settings.permissions.read.denied.description": "Aby mieć możliwość przeczytania tego, pamiętaj aby skontaktować się z administratorem.",
|
53
|
+
"Settings.permissions.read.denied.title": "Nie masz uprawnień by otrzymać dostęp do tej zawartości",
|
54
|
+
"actions.select-locale": "Wybierz",
|
55
|
+
"components.Select.locales.not-available": "Brak dostępnej zawartości",
|
56
|
+
"plugin.description.long": "Ten plugin umożliwia tworzenie, czytanie i aktualizowanie treści w różnych językach, zarówno z poziomu panelu admina jak i z API.",
|
57
|
+
"plugin.description.short": "Ten plugin umożliwia tworzenie, czytanie i aktualizowanie treści w różnych językach, zarówno z poziomu panelu admina jak i z API.",
|
58
|
+
"plugin.name": "Internationalization",
|
59
|
+
"plugin.schema.i18n.ensure-unique-localization": "Unikalne pola muszą zostać zlokalizowane",
|
60
|
+
"plugin.schema.i18n.localized.description-content-type": "Pozwala mieć treść w różnych ustawieniach regionalnych",
|
61
|
+
"plugin.schema.i18n.localized.description-field": "To pole może mieć różne wartości w zależności od różnych ustawień regionalnych",
|
62
|
+
"plugin.schema.i18n.localized.label-content-type": "Włącz lokalizację dla tego typu treści",
|
63
|
+
"plugin.schema.i18n.localized.label-field": "Włącz lokalizację dla tego pola"
|
64
|
+
};
|
65
|
+
exports.default = pl;
|
66
|
+
//# sourceMappingURL=pl-Cn5RYonZ.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"pl-Cn5RYonZ.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
@@ -0,0 +1,68 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
3
|
+
const ru = {
|
4
|
+
"CMEditViewCopyLocale.copy-failure": "Не удалось скопировать перевод",
|
5
|
+
"CMEditViewCopyLocale.copy-success": "Перевод скопирована",
|
6
|
+
"CMEditViewCopyLocale.copy-text": "Заполните данные из другого языка",
|
7
|
+
"CMEditViewCopyLocale.submit-text": "Да, заполнить",
|
8
|
+
"CMListView.popover.display-locales.label": "Отображать переведенные языки",
|
9
|
+
"CheckboxConfirmation.Modal.body": "Вы хотите выключить это?",
|
10
|
+
"CheckboxConfirmation.Modal.button-confirm": "Да, выключить",
|
11
|
+
"CheckboxConfirmation.Modal.content": "Отключение перевода приведет к удалению всего вашего контента, кроме того, который связан с вашим языком по умолчанию (если вообще он существует).",
|
12
|
+
"Field.localized": "Это значение уникально для выбранного перевода",
|
13
|
+
"Field.not-localized": "Это значение является общим для всех переводов",
|
14
|
+
"Settings.list.actions.add": "Добавить новый перевод",
|
15
|
+
"Settings.list.actions.delete": "Удалить перевод",
|
16
|
+
"Settings.list.actions.deleteAdditionalInfos": "Это приведет к удалению активных версий перевода <em>(из плагина интернационализации)</em>",
|
17
|
+
"Settings.list.actions.edit": "Редактировать перевод",
|
18
|
+
"Settings.list.actions.publishAdditionalInfos": "При этом будут опубликованы активные языковые версии <em>(из плагина Интернационализация)</em>",
|
19
|
+
"Settings.list.actions.unpublishAdditionalInfos": "При этом будут скрыты (сняты с публикации) активные языковые версии <em>(из плагина Интернационализация)</em>",
|
20
|
+
"Settings.list.description": "Настройте параметры для плагина интернационализации",
|
21
|
+
"Settings.list.empty.description": "Это необычное поведение, означающее, что всё-таки вы изменили базу данных вручную. Убедитесь, что базе данных сохранён хотя бы один перевод, чтобы иметь возможность правильно использовать Strapi.",
|
22
|
+
"Settings.list.empty.title": "Переводов нет.",
|
23
|
+
"Settings.locales.default": "По умолчанию",
|
24
|
+
"Settings.locales.list.sort.default": "Сортировать переводы по умолчанию",
|
25
|
+
"Settings.locales.list.sort.displayName": "Сортировать по отображаемому имени",
|
26
|
+
"Settings.locales.list.sort.id": "Сортировать по ID",
|
27
|
+
"Settings.locales.modal.advanced": "Расширенные настройки",
|
28
|
+
"Settings.locales.modal.advanced.setAsDefault": "Установить в качестве перевода по умолчанию",
|
29
|
+
"Settings.locales.modal.advanced.setAsDefault.hint": "Необходим один перевод по умолчанию, вы можете изменить его выбрав другой перевод",
|
30
|
+
"Settings.locales.modal.advanced.settings": "Настройки",
|
31
|
+
"Settings.locales.modal.base": "Основные настройки",
|
32
|
+
"Settings.locales.modal.create.alreadyExist": "Этот перевод уже существует",
|
33
|
+
"Settings.locales.modal.create.defaultLocales.loading": "Загрузка доступных переводов...",
|
34
|
+
"Settings.locales.modal.create.success": "Перевод успешно добавлен",
|
35
|
+
"Settings.locales.modal.create.tab.label": "Переключение между основными настройками этого плагина и расширенными настройками",
|
36
|
+
"Settings.locales.modal.delete.confirm": "Да, удалить",
|
37
|
+
"Settings.locales.modal.delete.message": "Удаление этого перевода приведет к удалению всего связанного с ним содержимого. Если вы хотите сохранить какой-то контент, обязательно сначала перенесите его в другой язык (перераспределите в другой перевод).",
|
38
|
+
"Settings.locales.modal.delete.secondMessage": "Вы хотите удалить этот перевод?",
|
39
|
+
"Settings.locales.modal.delete.success": "Перевод успешно удалён",
|
40
|
+
"Settings.locales.modal.edit.confirmation": "Готово!",
|
41
|
+
"Settings.locales.modal.create.code.label": "Переводы",
|
42
|
+
"Settings.locales.modal.edit.success": "Перевод успешно отредактирован",
|
43
|
+
"Settings.locales.modal.edit.tab.label": "Переключение между основными настройками этого плагина и расширенными настройками",
|
44
|
+
"Settings.locales.modal.create.name.label": "Отображаемое имя перевода",
|
45
|
+
"Settings.locales.modal.create.name.label.description": "Перевод будет отображаться под этим именем в панели администратора",
|
46
|
+
"Settings.locales.modal.create.name.label.error": "Отображаемое имя перевода может содержать не более 50 символов.",
|
47
|
+
"Settings.locales.modal.locales.label": "Переводы",
|
48
|
+
"Settings.locales.modal.locales.loaded": "Переводы были успешно загружены.",
|
49
|
+
"Settings.locales.modal.title": "Настройки",
|
50
|
+
"Settings.locales.row.default-locale": "Перевод по умолчанию",
|
51
|
+
"Settings.locales.row.displayName": "Отображаемое имя",
|
52
|
+
"Settings.locales.row.id": "ID",
|
53
|
+
"Settings.permissions.loading": "Разрешения на загрузку",
|
54
|
+
"Settings.permissions.read.denied.description": "Чтобы иметь возможность прочитать это, обязательно свяжитесь с администратором вашей системы.",
|
55
|
+
"Settings.permissions.read.denied.title": "У вас нет прав доступа к этому контенту.",
|
56
|
+
"actions.select-locale": "Выбрать перевод",
|
57
|
+
"components.Select.locales.not-available": "Нет доступного контента",
|
58
|
+
"plugin.description.long": "Этот плагин позволяет создавать, читать и обновлять контент (словом, производить всевозможные действия с контентом) на разных языках, как из панели администратора, так и через API.",
|
59
|
+
"plugin.description.short": "Этот плагин позволяет создавать, читать и обновлять контент на разных языках, как из панели администратора, так и через API.",
|
60
|
+
"plugin.name": "Интернационализация",
|
61
|
+
"plugin.schema.i18n.ensure-unique-localization": "Уникальные поля должны быть переведены",
|
62
|
+
"plugin.schema.i18n.localized.description-content-type": "Позволяет перевести запись на разные языки",
|
63
|
+
"plugin.schema.i18n.localized.description-field": "Поле может иметь разные значения на каждом языке",
|
64
|
+
"plugin.schema.i18n.localized.label-content-type": "Интернационализация",
|
65
|
+
"plugin.schema.i18n.localized.label-field": "Включить перевод для этого поля"
|
66
|
+
};
|
67
|
+
exports.default = ru;
|
68
|
+
//# sourceMappingURL=ru-BMBgVL3s.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ru-BMBgVL3s.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|