Compare commits
123 Commits
fix/5285/r
...
feat/folde
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
46e82d2931 | ||
|
|
8d507996c8 | ||
|
|
aa82763cb8 | ||
|
|
e7e6a7dd97 | ||
|
|
e14c670a51 | ||
|
|
21f5d3473c | ||
|
|
36597110e9 | ||
|
|
4f2b237858 | ||
|
|
d90afba70d | ||
|
|
decd512daa | ||
|
|
b2bf95b17b | ||
|
|
10e29dd5e2 | ||
|
|
4c4ae1295e | ||
|
|
adb805dadb | ||
|
|
e5f0ca3d45 | ||
|
|
fe2b7693cc | ||
|
|
30d4a098b1 | ||
|
|
aa7918fe6e | ||
|
|
f23f87243c | ||
|
|
41b75882a1 | ||
|
|
cfd3c34aba | ||
|
|
270137e92e | ||
|
|
cab817d2aa | ||
|
|
db622e2b79 | ||
|
|
c52204317a | ||
|
|
a85af1a6d3 | ||
|
|
bccadd5101 | ||
|
|
2fa723743e | ||
|
|
2904de778d | ||
|
|
d37dfb1376 | ||
|
|
b203f617af | ||
|
|
ee46f27881 | ||
|
|
2426784726 | ||
|
|
95b78a5951 | ||
|
|
d1c1ad2a1d | ||
|
|
2980bdb799 | ||
|
|
fe6923d0a7 | ||
|
|
7eec63ae69 | ||
|
|
77a7bc5e9c | ||
|
|
780becc88a | ||
|
|
a2d394ec82 | ||
|
|
b1c8c96e97 | ||
|
|
6b6b596489 | ||
|
|
a89bc1479f | ||
|
|
bd9f3b5bd2 | ||
|
|
2584ff42eb | ||
|
|
cc1f5fb70c | ||
|
|
4f7f378b84 | ||
|
|
b279fa7bde | ||
|
|
93230a5915 | ||
|
|
9f31daf8e7 | ||
|
|
ded7164dca | ||
|
|
cc4526844a | ||
|
|
362f25f593 | ||
|
|
7567d2358a | ||
|
|
b418c3cade | ||
|
|
db0d07d9a7 | ||
|
|
b56e2faad2 | ||
|
|
56982f9811 | ||
|
|
9e1258811a | ||
|
|
1d2accfcbb | ||
|
|
4a8bea2dde | ||
|
|
0149e42276 | ||
|
|
36d9900774 | ||
|
|
f4d624a0c5 | ||
|
|
57bcfcc8be | ||
|
|
d73ddbde0c | ||
|
|
189dd64799 | ||
|
|
572ce2955a | ||
|
|
87ca312a54 | ||
|
|
2b2fa67031 | ||
|
|
2f45749634 | ||
|
|
0534dd9506 | ||
|
|
aee1ea1346 | ||
|
|
82ba8cf8f4 | ||
|
|
1dfff2b0b0 | ||
|
|
6b695355c3 | ||
|
|
29c32d3141 | ||
|
|
f6afbed5d2 | ||
|
|
5dcf96ca10 | ||
|
|
91c22bd88c | ||
|
|
0d8b5677d9 | ||
|
|
e55c89c4b7 | ||
|
|
f762d683c6 | ||
|
|
953c538af0 | ||
|
|
65d0272950 | ||
|
|
c570d6178c | ||
|
|
c935420937 | ||
|
|
72dd527a15 | ||
|
|
1d6e0941e7 | ||
|
|
91f7deb278 | ||
|
|
d3986cfaf0 | ||
|
|
4a9de40098 | ||
|
|
f4679a4088 | ||
|
|
cb8ee7d2b0 | ||
|
|
06ef8da836 | ||
|
|
91dc98978d | ||
|
|
07ff1ee7be | ||
|
|
72d393d24c | ||
|
|
95d4324af3 | ||
|
|
a617d3166c | ||
|
|
6770e7a1b3 | ||
|
|
f5e535dacf | ||
|
|
3d9c25e278 | ||
|
|
3bdb127ad4 | ||
|
|
de4be1eb78 | ||
|
|
d26529282f | ||
|
|
2694603353 | ||
|
|
9630de1bac | ||
|
|
91e867ecb1 | ||
|
|
25e196bdd7 | ||
|
|
b631eebdb5 | ||
|
|
a66f134cf6 | ||
|
|
b3aec9a23f | ||
|
|
31911d87c1 | ||
|
|
2d37ac41a2 | ||
|
|
b68af8ba31 | ||
|
|
4c775d1ced | ||
|
|
4706019a22 | ||
|
|
9c33a48192 | ||
|
|
8ec6784645 | ||
|
|
8d9bf835a0 | ||
|
|
2eef7ee388 |
7
.vscode/launch.json
vendored
7
.vscode/launch.json
vendored
@@ -118,6 +118,13 @@
|
||||
"request": "launch",
|
||||
"type": "node-terminal"
|
||||
},
|
||||
{
|
||||
"command": "pnpm tsx --no-deprecation test/dev.ts folder-view",
|
||||
"cwd": "${workspaceFolder}",
|
||||
"name": "Run Dev Folder View",
|
||||
"request": "launch",
|
||||
"type": "node-terminal"
|
||||
},
|
||||
{
|
||||
"command": "pnpm tsx --no-deprecation test/dev.ts localization",
|
||||
"cwd": "${workspaceFolder}",
|
||||
|
||||
@@ -81,7 +81,7 @@ To install a Database Adapter, you can run **one** of the following commands:
|
||||
|
||||
#### 2. Copy Payload files into your Next.js app folder
|
||||
|
||||
Payload installs directly in your Next.js `/app` folder, and you'll need to place some files into that folder for Payload to run. You can copy these files from the [Blank Template](https://github.com/payloadcms/payload/tree/main/templates/blank/src/app/(payload)) on GitHub. Once you have the required Payload files in place in your `/app` folder, you should have something like this:
|
||||
Payload installs directly in your Next.js `/app` folder, and you'll need to place some files into that folder for Payload to run. You can copy these files from the [Blank Template](<https://github.com/payloadcms/payload/tree/main/templates/blank/src/app/(payload)>) on GitHub. Once you have the required Payload files in place in your `/app` folder, you should have something like this:
|
||||
|
||||
```plaintext
|
||||
app/
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
'use client'
|
||||
import type { SanitizedConfig } from 'payload'
|
||||
|
||||
import { Link } from '@payloadcms/ui'
|
||||
import { Button } from '@payloadcms/ui'
|
||||
import { useParams, usePathname, useSearchParams } from 'next/navigation.js'
|
||||
import { formatAdminURL } from 'payload/shared'
|
||||
import React from 'react'
|
||||
@@ -13,7 +13,6 @@ export const DocumentTabLink: React.FC<{
|
||||
children?: React.ReactNode
|
||||
href: string
|
||||
isActive?: boolean
|
||||
isCollection?: boolean
|
||||
newTab?: boolean
|
||||
}> = ({
|
||||
adminRoute,
|
||||
@@ -54,19 +53,17 @@ export const DocumentTabLink: React.FC<{
|
||||
isActiveFromProps
|
||||
|
||||
return (
|
||||
<li
|
||||
<Button
|
||||
aria-label={ariaLabel}
|
||||
buttonStyle="tab"
|
||||
className={[baseClass, isActive && `${baseClass}--active`].filter(Boolean).join(' ')}
|
||||
disabled={isActive}
|
||||
el={!isActive || href !== pathname ? 'link' : 'div'}
|
||||
newTab={newTab}
|
||||
size="medium"
|
||||
to={!isActive || href !== pathname ? hrefWithLocale : undefined}
|
||||
>
|
||||
<Link
|
||||
className={`${baseClass}__link`}
|
||||
href={!isActive || href !== pathname ? hrefWithLocale : ''}
|
||||
prefetch={false}
|
||||
{...(newTab && { rel: 'noopener noreferrer', target: '_blank' })}
|
||||
tabIndex={isActive ? -1 : 0}
|
||||
>
|
||||
{children}
|
||||
</Link>
|
||||
</li>
|
||||
{children}
|
||||
</Button>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,74 +1,24 @@
|
||||
@import '../../../../scss/styles.scss';
|
||||
|
||||
@layer payload-default {
|
||||
.doc-tab {
|
||||
@extend %h5;
|
||||
position: relative;
|
||||
|
||||
&__link {
|
||||
text-decoration: none;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
white-space: nowrap;
|
||||
|
||||
// Use a pseudo element for the accessability so that it doesn't take up DOM space
|
||||
// Also because the parent element has `overflow: hidden` which would clip an outline
|
||||
&:focus-visible::after {
|
||||
content: '';
|
||||
border: var(--accessibility-outline);
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
pointer-events: none;
|
||||
}
|
||||
}
|
||||
|
||||
&:focus:not(:focus-visible) {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
&::before {
|
||||
content: '';
|
||||
display: block;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: var(--style-radius-s);
|
||||
background-color: var(--theme-elevation-50);
|
||||
opacity: 0;
|
||||
}
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
white-space: nowrap;
|
||||
|
||||
&:hover {
|
||||
&::before {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.doc-tab__count {
|
||||
.pill-version-count {
|
||||
background-color: var(--theme-elevation-150);
|
||||
}
|
||||
}
|
||||
|
||||
&--active {
|
||||
font-weight: 600;
|
||||
&::before {
|
||||
opacity: 1;
|
||||
background-color: var(--theme-elevation-100);
|
||||
}
|
||||
|
||||
.doc-tab {
|
||||
&__count {
|
||||
background-color: var(--theme-elevation-250);
|
||||
}
|
||||
.pill-version-count {
|
||||
background-color: var(--theme-elevation-250);
|
||||
}
|
||||
|
||||
&:hover {
|
||||
.doc-tab {
|
||||
&__count {
|
||||
background-color: var(--theme-elevation-250);
|
||||
}
|
||||
.pill-version-count {
|
||||
background-color: var(--theme-elevation-250);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -80,16 +30,7 @@
|
||||
gap: 4px;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
line-height: base(1.2);
|
||||
padding: base(0.2) base(0.6);
|
||||
}
|
||||
|
||||
&__count {
|
||||
line-height: base(0.8);
|
||||
min-width: base(0.8);
|
||||
text-align: center;
|
||||
background-color: var(--theme-elevation-100);
|
||||
border-radius: var(--style-radius-s);
|
||||
line-height: calc(var(--base) * 1.2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,7 +68,6 @@ export const DocumentTab: React.FC<
|
||||
baseClass={baseClass}
|
||||
href={href}
|
||||
isActive={isActive}
|
||||
isCollection={!!collectionConfig && !globalConfig}
|
||||
newTab={newTab}
|
||||
>
|
||||
<span className={`${baseClass}__label`}>
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
@layer payload-default {
|
||||
.pill-version-count {
|
||||
line-height: calc(var(--base) * 0.8);
|
||||
min-width: calc(var(--base) * 0.8);
|
||||
text-align: center;
|
||||
background-color: var(--theme-elevation-100);
|
||||
border-radius: var(--style-radius-s);
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,9 @@
|
||||
import { useDocumentInfo } from '@payloadcms/ui'
|
||||
import React from 'react'
|
||||
|
||||
import { baseClass } from '../../Tab/index.js'
|
||||
import './index.scss'
|
||||
|
||||
const baseClass = 'pill-version-count'
|
||||
|
||||
export const VersionsPill: React.FC = () => {
|
||||
const { versionCount } = useDocumentInfo()
|
||||
@@ -11,5 +13,5 @@ export const VersionsPill: React.FC = () => {
|
||||
return null
|
||||
}
|
||||
|
||||
return <span className={`${baseClass}__count`}>{versionCount}</span>
|
||||
return <span className={baseClass}>{versionCount}</span>
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import type { groupNavItems } from '@payloadcms/ui/shared'
|
||||
import type { NavPreferences } from 'payload'
|
||||
|
||||
import { getTranslation } from '@payloadcms/translations'
|
||||
import { Link, NavGroup, useConfig, useTranslation } from '@payloadcms/ui'
|
||||
import { BrowseByFolderButton, Link, NavGroup, useConfig, useTranslation } from '@payloadcms/ui'
|
||||
import { EntityType } from '@payloadcms/ui/shared'
|
||||
import { usePathname } from 'next/navigation.js'
|
||||
import { formatAdminURL } from 'payload/shared'
|
||||
@@ -20,14 +20,28 @@ export const DefaultNavClient: React.FC<{
|
||||
|
||||
const {
|
||||
config: {
|
||||
admin: {
|
||||
routes: { folders: foldersRoute },
|
||||
},
|
||||
folders: { collections: folderCollections = {}, enabled } = {},
|
||||
routes: { admin: adminRoute },
|
||||
},
|
||||
} = useConfig()
|
||||
|
||||
const { i18n } = useTranslation()
|
||||
|
||||
const folderURL = formatAdminURL({
|
||||
adminRoute,
|
||||
path: foldersRoute,
|
||||
})
|
||||
|
||||
const viewingRootFolderView = pathname.startsWith(folderURL)
|
||||
|
||||
return (
|
||||
<Fragment>
|
||||
{enabled && Object.keys(folderCollections).length > 0 && (
|
||||
<BrowseByFolderButton active={viewingRootFolderView} />
|
||||
)}
|
||||
{groups.map(({ entities, label }, key) => {
|
||||
return (
|
||||
<NavGroup isOpen={navPreferences?.groups?.[label]?.open} key={key} label={label}>
|
||||
|
||||
202
packages/next/src/views/CollectionFolders/buildView.tsx
Normal file
202
packages/next/src/views/CollectionFolders/buildView.tsx
Normal file
@@ -0,0 +1,202 @@
|
||||
import type {
|
||||
AdminViewServerProps,
|
||||
BuildCollectionFolderViewResult,
|
||||
FolderListViewServerPropsOnly,
|
||||
ListQuery,
|
||||
Where,
|
||||
} from 'payload'
|
||||
|
||||
import { DefaultCollectionFolderView, FolderProvider, HydrateAuthProvider } from '@payloadcms/ui'
|
||||
import { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'
|
||||
import { formatAdminURL, mergeListSearchAndWhere } from '@payloadcms/ui/shared'
|
||||
import { redirect } from 'next/navigation.js'
|
||||
import { getFolderData, parseDocumentID } from 'payload'
|
||||
import React from 'react'
|
||||
|
||||
// import { renderFolderViewSlots } from './renderFolderViewSlots.js'
|
||||
|
||||
export type BuildCollectionFolderViewStateArgs = {
|
||||
disableBulkDelete?: boolean
|
||||
disableBulkEdit?: boolean
|
||||
enableRowSelections: boolean
|
||||
folderID?: number | string
|
||||
isInDrawer?: boolean
|
||||
overrideEntityVisibility?: boolean
|
||||
query: ListQuery
|
||||
} & AdminViewServerProps
|
||||
|
||||
/**
|
||||
* Builds the entire view for collection-folder views on the server
|
||||
*/
|
||||
export const buildCollectionFolderView = async (
|
||||
args: BuildCollectionFolderViewStateArgs,
|
||||
): Promise<BuildCollectionFolderViewResult> => {
|
||||
const {
|
||||
disableBulkDelete,
|
||||
disableBulkEdit,
|
||||
enableRowSelections,
|
||||
folderID,
|
||||
initPageResult,
|
||||
isInDrawer,
|
||||
overrideEntityVisibility,
|
||||
params,
|
||||
query: queryFromArgs,
|
||||
searchParams,
|
||||
} = args
|
||||
|
||||
const {
|
||||
collectionConfig,
|
||||
collectionConfig: { slug: collectionSlug },
|
||||
locale: fullLocale,
|
||||
permissions,
|
||||
req: {
|
||||
i18n,
|
||||
payload,
|
||||
payload: { config },
|
||||
query: queryFromReq,
|
||||
user,
|
||||
},
|
||||
visibleEntities,
|
||||
} = initPageResult
|
||||
|
||||
if (!permissions?.collections?.[collectionSlug]?.read) {
|
||||
throw new Error('not-found')
|
||||
}
|
||||
|
||||
if (collectionConfig) {
|
||||
const query = queryFromArgs || queryFromReq
|
||||
|
||||
// const collectionFolderPreferences = await upsertPreferences<ListPreferences>({
|
||||
// key: `${collectionSlug}-collection-folder`,
|
||||
// req,
|
||||
// value: {
|
||||
// },
|
||||
// })
|
||||
|
||||
const {
|
||||
routes: { admin: adminRoute },
|
||||
} = config
|
||||
|
||||
if (
|
||||
(!visibleEntities.collections.includes(collectionSlug) && !overrideEntityVisibility) ||
|
||||
!Object.keys(config.folders.collections).includes(collectionSlug)
|
||||
) {
|
||||
throw new Error('not-found')
|
||||
}
|
||||
|
||||
const whereConstraints = [
|
||||
mergeListSearchAndWhere({
|
||||
collectionConfig,
|
||||
search: typeof query?.search === 'string' ? query.search : undefined,
|
||||
where: (query?.where as Where) || undefined,
|
||||
}),
|
||||
]
|
||||
|
||||
if (folderID) {
|
||||
whereConstraints.push({
|
||||
_folder: {
|
||||
equals: parseDocumentID({ id: folderID, collectionSlug, payload }),
|
||||
},
|
||||
})
|
||||
} else {
|
||||
whereConstraints.push({
|
||||
_folder: {
|
||||
exists: false,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
const { breadcrumbs, documents, subfolders } = await getFolderData({
|
||||
collectionSlug,
|
||||
folderID,
|
||||
payload: initPageResult.req.payload,
|
||||
search: query?.search as string,
|
||||
user: initPageResult.req.user,
|
||||
})
|
||||
|
||||
const resolvedFolderID = breadcrumbs[breadcrumbs.length - 1]?.id
|
||||
|
||||
if (
|
||||
!isInDrawer &&
|
||||
((resolvedFolderID && folderID && folderID !== String(resolvedFolderID)) ||
|
||||
(folderID && !resolvedFolderID))
|
||||
) {
|
||||
return redirect(
|
||||
formatAdminURL({
|
||||
adminRoute,
|
||||
path: `/collections/${collectionSlug}/folders`,
|
||||
serverURL: config.serverURL,
|
||||
}),
|
||||
)
|
||||
}
|
||||
|
||||
const newDocumentURL = formatAdminURL({
|
||||
adminRoute,
|
||||
path: `/collections/${collectionSlug}/create`,
|
||||
})
|
||||
|
||||
const hasCreatePermission = permissions?.collections?.[collectionSlug]?.create
|
||||
|
||||
const serverProps: FolderListViewServerPropsOnly = {
|
||||
collectionConfig,
|
||||
documents,
|
||||
i18n,
|
||||
locale: fullLocale,
|
||||
params,
|
||||
payload,
|
||||
permissions,
|
||||
searchParams,
|
||||
subfolders,
|
||||
user,
|
||||
}
|
||||
|
||||
// We could support slots in the folder view in the future
|
||||
// const folderViewSlots = renderFolderViewSlots({
|
||||
// clientProps: {
|
||||
// collectionSlug,
|
||||
// hasCreatePermission,
|
||||
// newDocumentURL,
|
||||
// },
|
||||
// collectionConfig,
|
||||
// description: typeof collectionConfig.admin.description === 'function'
|
||||
// ? collectionConfig.admin.description({ t: i18n.t })
|
||||
// : collectionConfig.admin.description,
|
||||
// payload,
|
||||
// serverProps,
|
||||
// })
|
||||
|
||||
const search = query?.search as string
|
||||
|
||||
return {
|
||||
View: (
|
||||
<FolderProvider
|
||||
breadcrumbs={breadcrumbs}
|
||||
collectionSlug={collectionSlug}
|
||||
documents={documents}
|
||||
folderID={folderID}
|
||||
search={search}
|
||||
subfolders={subfolders}
|
||||
>
|
||||
<HydrateAuthProvider permissions={permissions} />
|
||||
{RenderServerComponent({
|
||||
clientProps: {
|
||||
// ...folderViewSlots,
|
||||
collectionSlug,
|
||||
disableBulkDelete,
|
||||
disableBulkEdit,
|
||||
enableRowSelections,
|
||||
hasCreatePermission,
|
||||
newDocumentURL,
|
||||
},
|
||||
Component: collectionConfig?.admin?.components?.views?.list?.Component,
|
||||
Fallback: DefaultCollectionFolderView,
|
||||
importMap: payload.importMap,
|
||||
serverProps,
|
||||
})}
|
||||
</FolderProvider>
|
||||
),
|
||||
}
|
||||
}
|
||||
|
||||
throw new Error('not-found')
|
||||
}
|
||||
20
packages/next/src/views/CollectionFolders/index.tsx
Normal file
20
packages/next/src/views/CollectionFolders/index.tsx
Normal file
@@ -0,0 +1,20 @@
|
||||
import type React from 'react'
|
||||
|
||||
import { notFound } from 'next/navigation.js'
|
||||
|
||||
import type { BuildCollectionFolderViewStateArgs } from './buildView.js'
|
||||
|
||||
import { buildCollectionFolderView } from './buildView.js'
|
||||
|
||||
export const CollectionFolderView: React.FC<BuildCollectionFolderViewStateArgs> = async (args) => {
|
||||
try {
|
||||
const { View } = await buildCollectionFolderView(args)
|
||||
return View
|
||||
} catch (error) {
|
||||
if (error.message === 'not-found') {
|
||||
notFound()
|
||||
} else {
|
||||
console.error(error) // eslint-disable-line no-console
|
||||
}
|
||||
}
|
||||
}
|
||||
35
packages/next/src/views/CollectionFolders/metadata.ts
Normal file
35
packages/next/src/views/CollectionFolders/metadata.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
import type { Metadata } from 'next'
|
||||
import type { SanitizedCollectionConfig } from 'payload'
|
||||
|
||||
import { getTranslation } from '@payloadcms/translations'
|
||||
|
||||
import type { GenerateViewMetadata } from '../Root/index.js'
|
||||
|
||||
import { generateMetadata } from '../../utilities/meta.js'
|
||||
|
||||
export const generateCollectionFolderMetadata = async (
|
||||
args: {
|
||||
collectionConfig: SanitizedCollectionConfig
|
||||
} & Parameters<GenerateViewMetadata>[0],
|
||||
): Promise<Metadata> => {
|
||||
const { collectionConfig, config, i18n } = args
|
||||
|
||||
let title: string = ''
|
||||
const description: string = ''
|
||||
const keywords: string = ''
|
||||
|
||||
if (collectionConfig) {
|
||||
title = getTranslation(collectionConfig.labels.singular, i18n)
|
||||
}
|
||||
|
||||
title = `${title ? `${title} ` : title}${i18n.t('folder:folders')}`
|
||||
|
||||
return generateMetadata({
|
||||
...(config.admin.meta || {}),
|
||||
description,
|
||||
keywords,
|
||||
serverURL: config.serverURL,
|
||||
title,
|
||||
...(collectionConfig?.admin?.meta || {}),
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
import type {
|
||||
AfterFolderListClientProps,
|
||||
AfterFolderListTableClientProps,
|
||||
AfterFolderListTableServerPropsOnly,
|
||||
BeforeFolderListClientProps,
|
||||
BeforeFolderListServerPropsOnly,
|
||||
BeforeFolderListTableClientProps,
|
||||
BeforeFolderListTableServerPropsOnly,
|
||||
FolderListViewServerPropsOnly,
|
||||
FolderListViewSlots,
|
||||
ListViewSlotSharedClientProps,
|
||||
Payload,
|
||||
SanitizedCollectionConfig,
|
||||
StaticDescription,
|
||||
ViewDescriptionClientProps,
|
||||
ViewDescriptionServerPropsOnly,
|
||||
} from 'payload'
|
||||
|
||||
import { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'
|
||||
|
||||
type Args = {
|
||||
clientProps: ListViewSlotSharedClientProps
|
||||
collectionConfig: SanitizedCollectionConfig
|
||||
description?: StaticDescription
|
||||
payload: Payload
|
||||
serverProps: FolderListViewServerPropsOnly
|
||||
}
|
||||
|
||||
export const renderFolderViewSlots = ({
|
||||
clientProps,
|
||||
collectionConfig,
|
||||
description,
|
||||
payload,
|
||||
serverProps,
|
||||
}: Args): FolderListViewSlots => {
|
||||
const result: FolderListViewSlots = {} as FolderListViewSlots
|
||||
|
||||
if (collectionConfig.admin.components?.afterList) {
|
||||
result.AfterFolderList = RenderServerComponent({
|
||||
clientProps: clientProps satisfies AfterFolderListClientProps,
|
||||
Component: collectionConfig.admin.components.afterList,
|
||||
importMap: payload.importMap,
|
||||
serverProps: serverProps satisfies AfterFolderListTableServerPropsOnly,
|
||||
})
|
||||
}
|
||||
|
||||
const listMenuItems = collectionConfig.admin.components?.listMenuItems
|
||||
if (Array.isArray(listMenuItems)) {
|
||||
result.listMenuItems = [
|
||||
RenderServerComponent({
|
||||
clientProps,
|
||||
Component: listMenuItems,
|
||||
importMap: payload.importMap,
|
||||
serverProps,
|
||||
}),
|
||||
]
|
||||
}
|
||||
|
||||
if (collectionConfig.admin.components?.afterListTable) {
|
||||
result.AfterFolderListTable = RenderServerComponent({
|
||||
clientProps: clientProps satisfies AfterFolderListTableClientProps,
|
||||
Component: collectionConfig.admin.components.afterListTable,
|
||||
importMap: payload.importMap,
|
||||
serverProps: serverProps satisfies AfterFolderListTableServerPropsOnly,
|
||||
})
|
||||
}
|
||||
|
||||
if (collectionConfig.admin.components?.beforeList) {
|
||||
result.BeforeFolderList = RenderServerComponent({
|
||||
clientProps: clientProps satisfies BeforeFolderListClientProps,
|
||||
Component: collectionConfig.admin.components.beforeList,
|
||||
importMap: payload.importMap,
|
||||
serverProps: serverProps satisfies BeforeFolderListServerPropsOnly,
|
||||
})
|
||||
}
|
||||
|
||||
if (collectionConfig.admin.components?.beforeListTable) {
|
||||
result.BeforeFolderListTable = RenderServerComponent({
|
||||
clientProps: clientProps satisfies BeforeFolderListTableClientProps,
|
||||
Component: collectionConfig.admin.components.beforeListTable,
|
||||
importMap: payload.importMap,
|
||||
serverProps: serverProps satisfies BeforeFolderListTableServerPropsOnly,
|
||||
})
|
||||
}
|
||||
|
||||
if (collectionConfig.admin.components?.Description) {
|
||||
result.Description = RenderServerComponent({
|
||||
clientProps: {
|
||||
collectionSlug: collectionConfig.slug,
|
||||
description,
|
||||
} satisfies ViewDescriptionClientProps,
|
||||
Component: collectionConfig.admin.components.Description,
|
||||
importMap: payload.importMap,
|
||||
serverProps: serverProps satisfies ViewDescriptionServerPropsOnly,
|
||||
})
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
@@ -32,9 +32,12 @@ import { renderDocumentSlots } from './renderDocumentSlots.js'
|
||||
|
||||
export const generateMetadata: GenerateEditViewMetadata = async (args) => getMetaBySegment(args)
|
||||
|
||||
// This function will be responsible for rendering an Edit Document view
|
||||
// it will be called on the server for Edit page views as well as
|
||||
// called on-demand from document drawers
|
||||
/**
|
||||
* This function is responsible for rendering
|
||||
* an Edit Document view on the server for both:
|
||||
* - default document edit views
|
||||
* - on-demand edit views within drawers
|
||||
*/
|
||||
export const renderDocument = async ({
|
||||
disableActions,
|
||||
documentSubViewType,
|
||||
|
||||
152
packages/next/src/views/Folders/buildView.tsx
Normal file
152
packages/next/src/views/Folders/buildView.tsx
Normal file
@@ -0,0 +1,152 @@
|
||||
import type {
|
||||
AdminViewServerProps,
|
||||
BuildCollectionFolderViewResult,
|
||||
FolderListViewServerPropsOnly,
|
||||
ListQuery,
|
||||
} from 'payload'
|
||||
|
||||
import { DefaultFolderView, FolderProvider, HydrateAuthProvider } from '@payloadcms/ui'
|
||||
import { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'
|
||||
import { formatAdminURL } from '@payloadcms/ui/shared'
|
||||
import { redirect } from 'next/navigation.js'
|
||||
import { getFolderData } from 'payload'
|
||||
import React from 'react'
|
||||
|
||||
export type BuildFolderViewArgs = {
|
||||
customCellProps?: Record<string, any>
|
||||
disableBulkDelete?: boolean
|
||||
disableBulkEdit?: boolean
|
||||
enableRowSelections: boolean
|
||||
folderID?: number | string
|
||||
isInDrawer?: boolean
|
||||
overrideEntityVisibility?: boolean
|
||||
query: ListQuery
|
||||
} & AdminViewServerProps
|
||||
|
||||
export const buildFolderView = async (
|
||||
args: BuildFolderViewArgs,
|
||||
): Promise<BuildCollectionFolderViewResult> => {
|
||||
const {
|
||||
disableBulkDelete,
|
||||
disableBulkEdit,
|
||||
enableRowSelections,
|
||||
folderID,
|
||||
initPageResult,
|
||||
isInDrawer,
|
||||
params,
|
||||
query: queryFromArgs,
|
||||
searchParams,
|
||||
} = args
|
||||
|
||||
const {
|
||||
locale: fullLocale,
|
||||
permissions,
|
||||
req: {
|
||||
i18n,
|
||||
payload,
|
||||
payload: { config },
|
||||
query: queryFromReq,
|
||||
user,
|
||||
},
|
||||
visibleEntities,
|
||||
} = initPageResult
|
||||
|
||||
const allFolderCollectionSlugs = Object.keys(config?.folders?.collections || {})
|
||||
|
||||
const collections = allFolderCollectionSlugs.filter(
|
||||
(collectionSlug) =>
|
||||
permissions?.collections?.[collectionSlug]?.read &&
|
||||
visibleEntities.collections.includes(collectionSlug),
|
||||
)
|
||||
|
||||
if (!collections.length) {
|
||||
throw new Error('not-found')
|
||||
}
|
||||
|
||||
const query = queryFromArgs || queryFromReq
|
||||
// get relationTo filter from query params
|
||||
const selectedCollectionSlugs: string[] =
|
||||
Array.isArray(query?.relationTo) && query.relationTo.length
|
||||
? query.relationTo
|
||||
: [...allFolderCollectionSlugs, config.folders.slug]
|
||||
|
||||
const {
|
||||
routes: { admin: adminRoute },
|
||||
} = config
|
||||
|
||||
const { breadcrumbs, documents, subfolders } = await getFolderData({
|
||||
folderID,
|
||||
payload: initPageResult.req.payload,
|
||||
search: query?.search as string,
|
||||
user: initPageResult.req.user,
|
||||
})
|
||||
|
||||
const resolvedFolderID = breadcrumbs[breadcrumbs.length - 1]?.id
|
||||
|
||||
if (
|
||||
!isInDrawer &&
|
||||
((resolvedFolderID && folderID && folderID !== String(resolvedFolderID)) ||
|
||||
(folderID && !resolvedFolderID))
|
||||
) {
|
||||
return redirect(
|
||||
formatAdminURL({
|
||||
adminRoute,
|
||||
path: config.admin.routes.folders,
|
||||
serverURL: config.serverURL,
|
||||
}),
|
||||
)
|
||||
}
|
||||
|
||||
const serverProps: Omit<FolderListViewServerPropsOnly, 'collectionConfig' | 'listPreferences'> = {
|
||||
documents,
|
||||
i18n,
|
||||
locale: fullLocale,
|
||||
params,
|
||||
payload,
|
||||
permissions,
|
||||
searchParams,
|
||||
subfolders,
|
||||
user,
|
||||
}
|
||||
|
||||
// const folderViewSlots = renderFolderViewSlots({
|
||||
// clientProps: {
|
||||
// },
|
||||
// description: staticDescription,
|
||||
// payload,
|
||||
// serverProps,
|
||||
// })
|
||||
|
||||
// documents cannot be created without a parent folder in this view
|
||||
const hasCreatePermissionCollectionSlugs = folderID
|
||||
? [config.folders.slug, ...allFolderCollectionSlugs]
|
||||
: [config.folders.slug]
|
||||
|
||||
return {
|
||||
View: (
|
||||
<FolderProvider
|
||||
breadcrumbs={breadcrumbs}
|
||||
documents={documents}
|
||||
filteredCollectionSlugs={selectedCollectionSlugs}
|
||||
folderID={folderID}
|
||||
subfolders={subfolders}
|
||||
>
|
||||
<HydrateAuthProvider permissions={permissions} />
|
||||
{RenderServerComponent({
|
||||
clientProps: {
|
||||
// ...folderViewSlots,
|
||||
disableBulkDelete,
|
||||
disableBulkEdit,
|
||||
enableRowSelections,
|
||||
hasCreatePermissionCollectionSlugs,
|
||||
selectedCollectionSlugs,
|
||||
},
|
||||
// Component:config.folders?.components?.views?.list?.Component,
|
||||
Fallback: DefaultFolderView,
|
||||
importMap: payload.importMap,
|
||||
serverProps,
|
||||
})}
|
||||
</FolderProvider>
|
||||
),
|
||||
}
|
||||
}
|
||||
20
packages/next/src/views/Folders/index.tsx
Normal file
20
packages/next/src/views/Folders/index.tsx
Normal file
@@ -0,0 +1,20 @@
|
||||
import type React from 'react'
|
||||
|
||||
import { notFound } from 'next/navigation.js'
|
||||
|
||||
import type { BuildFolderViewArgs } from './buildView.js'
|
||||
|
||||
import { buildFolderView } from './buildView.js'
|
||||
|
||||
export const FolderView: React.FC<BuildFolderViewArgs> = async (args) => {
|
||||
try {
|
||||
const { View } = await buildFolderView(args)
|
||||
return View
|
||||
} catch (error) {
|
||||
if (error.message === 'not-found') {
|
||||
notFound()
|
||||
} else {
|
||||
console.error(error) // eslint-disable-line no-console
|
||||
}
|
||||
}
|
||||
}
|
||||
23
packages/next/src/views/Folders/metadata.ts
Normal file
23
packages/next/src/views/Folders/metadata.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import type { Metadata } from 'next'
|
||||
|
||||
import type { GenerateViewMetadata } from '../Root/index.js'
|
||||
|
||||
import { generateMetadata } from '../../utilities/meta.js'
|
||||
|
||||
export const generateBrowseByFolderMetadata = async (
|
||||
args: Parameters<GenerateViewMetadata>[0],
|
||||
): Promise<Metadata> => {
|
||||
const { config, i18n } = args
|
||||
|
||||
const title: string = i18n.t('folder:browseByFolder')
|
||||
const description: string = ''
|
||||
const keywords: string = ''
|
||||
|
||||
return generateMetadata({
|
||||
...(config.admin.meta || {}),
|
||||
description,
|
||||
keywords,
|
||||
serverURL: config.serverURL,
|
||||
title,
|
||||
})
|
||||
}
|
||||
@@ -40,6 +40,12 @@ type RenderListViewArgs = {
|
||||
redirectAfterDuplicate?: boolean
|
||||
} & AdminViewServerProps
|
||||
|
||||
/**
|
||||
* This function is responsible for rendering
|
||||
* the list view on the server for both:
|
||||
* - default list view
|
||||
* - list view within drawers
|
||||
*/
|
||||
export const renderListView = async (
|
||||
args: RenderListViewArgs,
|
||||
): Promise<{
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type { AdminViewConfig, SanitizedConfig } from 'payload'
|
||||
|
||||
import type { ViewFromConfig } from './getViewFromConfig.js'
|
||||
import type { ViewFromConfig } from './getRouteData.js'
|
||||
|
||||
import { isPathMatchingRoute } from './isPathMatchingRoute.js'
|
||||
|
||||
|
||||
@@ -14,9 +14,11 @@ import { formatAdminURL } from 'payload/shared'
|
||||
import type { initPage } from '../../utilities/initPage/index.js'
|
||||
|
||||
import { Account } from '../Account/index.js'
|
||||
import { CollectionFolderView } from '../CollectionFolders/index.js'
|
||||
import { CreateFirstUserView } from '../CreateFirstUser/index.js'
|
||||
import { Dashboard } from '../Dashboard/index.js'
|
||||
import { Document as DocumentView } from '../Document/index.js'
|
||||
import { FolderView } from '../Folders/index.js'
|
||||
import { forgotPasswordBaseClass, ForgotPasswordView } from '../ForgotPassword/index.js'
|
||||
import { ListView } from '../List/index.js'
|
||||
import { loginBaseClass, LoginView } from '../Login/index.js'
|
||||
@@ -31,6 +33,7 @@ import { isPathMatchingRoute } from './isPathMatchingRoute.js'
|
||||
|
||||
const baseClasses = {
|
||||
account: 'account',
|
||||
folders: 'folders',
|
||||
forgot: forgotPasswordBaseClass,
|
||||
login: loginBaseClass,
|
||||
reset: resetPasswordBaseClass,
|
||||
@@ -49,6 +52,7 @@ export type ViewFromConfig = {
|
||||
const oneSegmentViews: OneSegmentViews = {
|
||||
account: Account,
|
||||
createFirstUser: CreateFirstUserView,
|
||||
folders: FolderView,
|
||||
forgot: ForgotPasswordView,
|
||||
inactivity: LogoutInactivity,
|
||||
login: LoginView,
|
||||
@@ -56,7 +60,7 @@ const oneSegmentViews: OneSegmentViews = {
|
||||
unauthorized: UnauthorizedView,
|
||||
}
|
||||
|
||||
type GetViewFromConfigArgs = {
|
||||
type GetRouteDataArgs = {
|
||||
adminRoute: string
|
||||
config: SanitizedConfig
|
||||
currentRoute: string
|
||||
@@ -67,9 +71,10 @@ type GetViewFromConfigArgs = {
|
||||
segments: string[]
|
||||
}
|
||||
|
||||
type GetViewFromConfigResult = {
|
||||
type GetRouteDataResult = {
|
||||
DefaultView: ViewFromConfig
|
||||
documentSubViewType?: DocumentSubViewTypes
|
||||
folderID?: string
|
||||
initPageOptions: Parameters<typeof initPage>[0]
|
||||
serverProps: ServerPropsFromView
|
||||
templateClassName: string
|
||||
@@ -77,19 +82,20 @@ type GetViewFromConfigResult = {
|
||||
viewType?: ViewTypes
|
||||
}
|
||||
|
||||
export const getViewFromConfig = ({
|
||||
export const getRouteData = ({
|
||||
adminRoute,
|
||||
config,
|
||||
currentRoute,
|
||||
importMap,
|
||||
searchParams,
|
||||
segments,
|
||||
}: GetViewFromConfigArgs): GetViewFromConfigResult => {
|
||||
}: GetRouteDataArgs): GetRouteDataResult => {
|
||||
let ViewToRender: ViewFromConfig = null
|
||||
let templateClassName: string
|
||||
let templateType: 'default' | 'minimal' | undefined
|
||||
let documentSubViewType: DocumentSubViewTypes
|
||||
let viewType: ViewTypes
|
||||
let folderID: string
|
||||
|
||||
const initPageOptions: Parameters<typeof initPage>[0] = {
|
||||
config,
|
||||
@@ -104,6 +110,7 @@ export const getViewFromConfig = ({
|
||||
const isCollection = segmentOne === 'collections'
|
||||
let matchedCollection: SanitizedConfig['collections'][number] = undefined
|
||||
let matchedGlobal: SanitizedConfig['globals'][number] = undefined
|
||||
const isFolderViewEnabled = config.folders?.enabled
|
||||
|
||||
const serverProps: ServerPropsFromView = {
|
||||
viewActions: config?.admin?.components?.actions || [],
|
||||
@@ -153,6 +160,7 @@ export const getViewFromConfig = ({
|
||||
if (oneSegmentViews[viewKey]) {
|
||||
// --> /account
|
||||
// --> /create-first-user
|
||||
// --> /folders
|
||||
// --> /forgot
|
||||
// --> /login
|
||||
// --> /logout
|
||||
@@ -166,6 +174,11 @@ export const getViewFromConfig = ({
|
||||
templateClassName = baseClasses[viewKey]
|
||||
templateType = 'minimal'
|
||||
|
||||
if (isFolderViewEnabled && viewKey === 'folders') {
|
||||
templateType = 'default'
|
||||
viewType = 'folders'
|
||||
}
|
||||
|
||||
if (viewKey === 'account') {
|
||||
templateType = 'default'
|
||||
viewType = 'account'
|
||||
@@ -182,9 +195,18 @@ export const getViewFromConfig = ({
|
||||
templateClassName = baseClasses[segmentTwo]
|
||||
templateType = 'minimal'
|
||||
viewType = 'reset'
|
||||
}
|
||||
|
||||
if (isCollection && matchedCollection) {
|
||||
} else if (`/${segmentOne}` === config.admin.routes.folders) {
|
||||
if (isFolderViewEnabled) {
|
||||
// --> /folders/:folderID
|
||||
ViewToRender = {
|
||||
Component: oneSegmentViews.folders,
|
||||
}
|
||||
templateClassName = baseClasses.folders
|
||||
templateType = 'default'
|
||||
viewType = 'folders'
|
||||
folderID = segmentTwo
|
||||
}
|
||||
} else if (isCollection && matchedCollection) {
|
||||
// --> /collections/:collectionSlug
|
||||
|
||||
ViewToRender = {
|
||||
@@ -229,31 +251,49 @@ export const getViewFromConfig = ({
|
||||
templateType = 'minimal'
|
||||
viewType = 'verify'
|
||||
} else if (isCollection && matchedCollection) {
|
||||
// Custom Views
|
||||
// --> /collections/:collectionSlug/:id
|
||||
// --> /collections/:collectionSlug/:id/api
|
||||
// --> /collections/:collectionSlug/:id/preview
|
||||
// --> /collections/:collectionSlug/:id/versions
|
||||
// --> /collections/:collectionSlug/:id/versions/:versionID
|
||||
if (segmentThree === 'folders') {
|
||||
if (
|
||||
isFolderViewEnabled &&
|
||||
Object.keys(config.folders.collections).includes(matchedCollection.slug)
|
||||
) {
|
||||
// Collection Folder Views
|
||||
// --> /collections/:collectionSlug/folders
|
||||
// --> /collections/:collectionSlug/folders/:folderID
|
||||
ViewToRender = {
|
||||
Component: CollectionFolderView,
|
||||
}
|
||||
|
||||
ViewToRender = {
|
||||
Component: DocumentView,
|
||||
templateClassName = `collection-folders`
|
||||
templateType = 'default'
|
||||
viewType = 'collection-folders'
|
||||
folderID = segmentFour
|
||||
}
|
||||
} else {
|
||||
// Collection Edit Views
|
||||
// --> /collections/:collectionSlug/:id
|
||||
// --> /collections/:collectionSlug/:id/api
|
||||
// --> /collections/:collectionSlug/:id/preview
|
||||
// --> /collections/:collectionSlug/:id/versions
|
||||
// --> /collections/:collectionSlug/:id/versions/:versionID
|
||||
ViewToRender = {
|
||||
Component: DocumentView,
|
||||
}
|
||||
|
||||
templateClassName = `collection-default-edit`
|
||||
templateType = 'default'
|
||||
|
||||
const viewInfo = getDocumentViewInfo([segmentFour, segmentFive])
|
||||
viewType = viewInfo.viewType
|
||||
documentSubViewType = viewInfo.documentSubViewType
|
||||
|
||||
attachViewActions({
|
||||
collectionOrGlobal: matchedCollection,
|
||||
serverProps,
|
||||
viewKeyArg: documentSubViewType,
|
||||
})
|
||||
}
|
||||
|
||||
templateClassName = `collection-default-edit`
|
||||
templateType = 'default'
|
||||
|
||||
const viewInfo = getDocumentViewInfo([segmentFour, segmentFive])
|
||||
viewType = viewInfo.viewType
|
||||
documentSubViewType = viewInfo.documentSubViewType
|
||||
|
||||
attachViewActions({
|
||||
collectionOrGlobal: matchedCollection,
|
||||
serverProps,
|
||||
viewKeyArg: documentSubViewType,
|
||||
})
|
||||
} else if (isGlobal && matchedGlobal) {
|
||||
// Custom Views
|
||||
// Global Edit Views
|
||||
// --> /globals/:globalSlug/versions
|
||||
// --> /globals/:globalSlug/preview
|
||||
// --> /globals/:globalSlug/versions/:versionID
|
||||
@@ -288,6 +328,7 @@ export const getViewFromConfig = ({
|
||||
return {
|
||||
DefaultView: ViewToRender,
|
||||
documentSubViewType,
|
||||
folderID,
|
||||
initPageOptions,
|
||||
serverProps,
|
||||
templateClassName,
|
||||
@@ -11,12 +11,12 @@ import { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerCompo
|
||||
import { getClientConfig } from '@payloadcms/ui/utilities/getClientConfig'
|
||||
import { notFound, redirect } from 'next/navigation.js'
|
||||
import { formatAdminURL } from 'payload/shared'
|
||||
import React, { Fragment } from 'react'
|
||||
import React from 'react'
|
||||
|
||||
import { DefaultTemplate } from '../../templates/Default/index.js'
|
||||
import { MinimalTemplate } from '../../templates/Minimal/index.js'
|
||||
import { initPage } from '../../utilities/initPage/index.js'
|
||||
import { getViewFromConfig } from './getViewFromConfig.js'
|
||||
import { getRouteData } from './getRouteData.js'
|
||||
|
||||
export type GenerateViewMetadata = (args: {
|
||||
config: SanitizedConfig
|
||||
@@ -64,12 +64,13 @@ export const RootPage = async ({
|
||||
const {
|
||||
DefaultView,
|
||||
documentSubViewType,
|
||||
folderID,
|
||||
initPageOptions,
|
||||
serverProps,
|
||||
templateClassName,
|
||||
templateType,
|
||||
viewType,
|
||||
} = getViewFromConfig({
|
||||
} = getRouteData({
|
||||
adminRoute,
|
||||
config,
|
||||
currentRoute,
|
||||
@@ -89,6 +90,10 @@ export const RootPage = async ({
|
||||
})
|
||||
?.then((doc) => !!doc))
|
||||
|
||||
/**
|
||||
* This function is responsible for handling the case where the view is not found.
|
||||
* The current route did not match any default views or custom route views.
|
||||
*/
|
||||
if (!DefaultView?.Component && !DefaultView?.payloadComponent) {
|
||||
if (initPageResult?.req?.user) {
|
||||
notFound()
|
||||
@@ -141,6 +146,7 @@ export const RootPage = async ({
|
||||
...serverProps,
|
||||
clientConfig,
|
||||
docID: initPageResult?.docID,
|
||||
folderID,
|
||||
i18n: initPageResult?.req.i18n,
|
||||
importMap,
|
||||
initPageResult,
|
||||
@@ -151,8 +157,8 @@ export const RootPage = async ({
|
||||
})
|
||||
|
||||
return (
|
||||
<Fragment>
|
||||
{!templateType && <Fragment>{RenderedView}</Fragment>}
|
||||
<React.Fragment>
|
||||
{!templateType && <React.Fragment>{RenderedView}</React.Fragment>}
|
||||
{templateType === 'minimal' && (
|
||||
<MinimalTemplate className={templateClassName}>{RenderedView}</MinimalTemplate>
|
||||
)}
|
||||
@@ -182,6 +188,6 @@ export const RootPage = async ({
|
||||
{RenderedView}
|
||||
</DefaultTemplate>
|
||||
)}
|
||||
</Fragment>
|
||||
</React.Fragment>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -3,9 +3,11 @@ import type { SanitizedConfig } from 'payload'
|
||||
|
||||
import { getNextRequestI18n } from '../../utilities/getNextRequestI18n.js'
|
||||
import { generateAccountViewMetadata } from '../Account/metadata.js'
|
||||
import { generateCollectionFolderMetadata } from '../CollectionFolders/metadata.js'
|
||||
import { generateCreateFirstUserViewMetadata } from '../CreateFirstUser/metadata.js'
|
||||
import { generateDashboardViewMetadata } from '../Dashboard/metadata.js'
|
||||
import { generateDocumentViewMetadata } from '../Document/metadata.js'
|
||||
import { generateBrowseByFolderMetadata } from '../Folders/metadata.js'
|
||||
import { generateForgotPasswordViewMetadata } from '../ForgotPassword/metadata.js'
|
||||
import { generateListViewMetadata } from '../List/metadata.js'
|
||||
import { generateLoginViewMetadata } from '../Login/metadata.js'
|
||||
@@ -18,6 +20,7 @@ import { getCustomViewByRoute } from './getCustomViewByRoute.js'
|
||||
|
||||
const oneSegmentMeta = {
|
||||
'create-first-user': generateCreateFirstUserViewMetadata,
|
||||
folders: generateBrowseByFolderMetadata,
|
||||
forgot: generateForgotPasswordViewMetadata,
|
||||
login: generateLoginViewMetadata,
|
||||
logout: generateUnauthorizedViewMetadata,
|
||||
@@ -45,7 +48,7 @@ export const generatePageMetadata = async ({
|
||||
const segments = Array.isArray(params.segments) ? params.segments : []
|
||||
|
||||
const currentRoute = `/${segments.join('/')}`
|
||||
const [segmentOne, segmentTwo] = segments
|
||||
const [segmentOne, segmentTwo, segmentThree] = segments
|
||||
|
||||
const isGlobal = segmentOne === 'globals'
|
||||
const isCollection = segmentOne === 'collections'
|
||||
@@ -75,6 +78,7 @@ export const generatePageMetadata = async ({
|
||||
if (oneSegmentMeta[segmentOne] && segmentOne !== 'account') {
|
||||
// --> /create-first-user
|
||||
// --> /forgot
|
||||
// --> /folders
|
||||
// --> /login
|
||||
// --> /logout
|
||||
// --> /logout-inactivity
|
||||
@@ -92,8 +96,10 @@ export const generatePageMetadata = async ({
|
||||
if (`/${segmentOne}` === config.admin.routes.reset) {
|
||||
// --> /reset/:token
|
||||
meta = await generateResetPasswordViewMetadata({ config, i18n })
|
||||
}
|
||||
if (isCollection) {
|
||||
} else if (`/${segmentOne}` === config.admin.routes.folders) {
|
||||
// --> /folders/:folderID
|
||||
meta = await generateBrowseByFolderMetadata({ config, i18n })
|
||||
} else if (isCollection) {
|
||||
// --> /collections/:collectionSlug
|
||||
meta = await generateListViewMetadata({ collectionConfig, config, i18n })
|
||||
} else if (isGlobal) {
|
||||
@@ -112,15 +118,29 @@ export const generatePageMetadata = async ({
|
||||
// --> /:collectionSlug/verify/:token
|
||||
meta = await generateVerifyViewMetadata({ config, i18n })
|
||||
} else if (isCollection) {
|
||||
// Custom Views
|
||||
// --> /collections/:collectionSlug/:id
|
||||
// --> /collections/:collectionSlug/:id/preview
|
||||
// --> /collections/:collectionSlug/:id/versions
|
||||
// --> /collections/:collectionSlug/:id/versions/:version
|
||||
// --> /collections/:collectionSlug/:id/api
|
||||
meta = await generateDocumentViewMetadata({ collectionConfig, config, i18n, params })
|
||||
if (segmentThree === 'folders') {
|
||||
if (Object.keys(config.folders.collections).includes(collectionConfig.slug)) {
|
||||
// Collection Folder Views
|
||||
// --> /collections/:collectionSlug/folders
|
||||
// --> /collections/:collectionSlug/folders/:id
|
||||
meta = await generateCollectionFolderMetadata({
|
||||
collectionConfig,
|
||||
config,
|
||||
i18n,
|
||||
params,
|
||||
})
|
||||
}
|
||||
} else {
|
||||
// Collection Document Views
|
||||
// --> /collections/:collectionSlug/:id
|
||||
// --> /collections/:collectionSlug/:id/preview
|
||||
// --> /collections/:collectionSlug/:id/versions
|
||||
// --> /collections/:collectionSlug/:id/versions/:version
|
||||
// --> /collections/:collectionSlug/:id/api
|
||||
meta = await generateDocumentViewMetadata({ collectionConfig, config, i18n, params })
|
||||
}
|
||||
} else if (isGlobal) {
|
||||
// Custom Views
|
||||
// Global Document Views
|
||||
// --> /globals/:globalSlug/versions
|
||||
// --> /globals/:globalSlug/versions/:version
|
||||
// --> /globals/:globalSlug/preview
|
||||
|
||||
@@ -18,9 +18,11 @@ export const renderPill = (data, latestVersion, currentLabel, previousLabel, pil
|
||||
return (
|
||||
<React.Fragment>
|
||||
{data?.id === latestVersion ? (
|
||||
<Pill pillStyle={pillStyle}>{currentLabel}</Pill>
|
||||
<Pill pillStyle={pillStyle} size="small">
|
||||
{currentLabel}
|
||||
</Pill>
|
||||
) : (
|
||||
<Pill>{previousLabel}</Pill>
|
||||
<Pill size="small">{previousLabel}</Pill>
|
||||
)}
|
||||
|
||||
</React.Fragment>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* @param {import('next').NextConfig} nextConfig
|
||||
* @param {Object} [options] - Optional configuration options
|
||||
* @param {boolean} [options.devBundleServerPackages] - Whether to bundle server packages in development mode. @default true
|
||||
* @param {Object} [sortOnOptions] - Optional configuration options
|
||||
* @param {boolean} [sortOnOptions.devBundleServerPackages] - Whether to bundle server packages in development mode. @default true
|
||||
*
|
||||
* @returns {import('next').NextConfig}
|
||||
* */
|
||||
|
||||
@@ -53,7 +53,7 @@ export type ListQuery = {
|
||||
search?: string
|
||||
sort?: Sort
|
||||
where?: Where
|
||||
}
|
||||
} & Record<string, unknown>
|
||||
|
||||
export type BuildTableStateArgs = {
|
||||
collectionSlug: string | string[]
|
||||
@@ -71,3 +71,7 @@ export type BuildTableStateArgs = {
|
||||
req: PayloadRequest
|
||||
tableAppearance?: 'condensed' | 'default'
|
||||
}
|
||||
|
||||
export type BuildCollectionFolderViewResult = {
|
||||
View: React.ReactNode
|
||||
}
|
||||
|
||||
@@ -563,6 +563,7 @@ export type DocumentSlots = {
|
||||
}
|
||||
|
||||
export type {
|
||||
BuildCollectionFolderViewResult,
|
||||
BuildTableStateArgs,
|
||||
DefaultServerFunctionArgs,
|
||||
ListQuery,
|
||||
@@ -618,6 +619,26 @@ export type {
|
||||
EditViewProps,
|
||||
} from './views/document.js'
|
||||
|
||||
export type {
|
||||
AfterFolderListClientProps,
|
||||
AfterFolderListServerProps,
|
||||
AfterFolderListServerPropsOnly,
|
||||
AfterFolderListTableClientProps,
|
||||
AfterFolderListTableServerProps,
|
||||
AfterFolderListTableServerPropsOnly,
|
||||
BeforeFolderListClientProps,
|
||||
BeforeFolderListServerProps,
|
||||
BeforeFolderListServerPropsOnly,
|
||||
BeforeFolderListTableClientProps,
|
||||
BeforeFolderListTableServerProps,
|
||||
BeforeFolderListTableServerPropsOnly,
|
||||
FolderListViewClientProps,
|
||||
FolderListViewServerProps,
|
||||
FolderListViewServerPropsOnly,
|
||||
FolderListViewSlots,
|
||||
FolderListViewSlotSharedClientProps,
|
||||
} from './views/folderList.js'
|
||||
|
||||
export type {
|
||||
AdminViewClientProps,
|
||||
/**
|
||||
|
||||
59
packages/payload/src/admin/views/folderList.ts
Normal file
59
packages/payload/src/admin/views/folderList.ts
Normal file
@@ -0,0 +1,59 @@
|
||||
import type { ServerProps } from '../../config/types.js'
|
||||
import type { FolderOrDocument } from '../../folders/types.js'
|
||||
import type { SanitizedCollectionConfig } from '../../index.js'
|
||||
export type FolderListViewSlots = {
|
||||
AfterFolderList?: React.ReactNode
|
||||
AfterFolderListTable?: React.ReactNode
|
||||
BeforeFolderList?: React.ReactNode
|
||||
BeforeFolderListTable?: React.ReactNode
|
||||
Description?: React.ReactNode
|
||||
listMenuItems?: React.ReactNode[]
|
||||
Table: React.ReactNode
|
||||
}
|
||||
|
||||
export type FolderListViewServerPropsOnly = {
|
||||
collectionConfig: SanitizedCollectionConfig
|
||||
documents: FolderOrDocument[]
|
||||
subfolders: FolderOrDocument[]
|
||||
} & ServerProps
|
||||
|
||||
export type FolderListViewServerProps = FolderListViewClientProps & FolderListViewServerPropsOnly
|
||||
|
||||
export type FolderListViewClientProps = {
|
||||
beforeActions?: React.ReactNode[]
|
||||
collectionSlug: SanitizedCollectionConfig['slug']
|
||||
disableBulkDelete?: boolean
|
||||
disableBulkEdit?: boolean
|
||||
enableRowSelections?: boolean
|
||||
hasCreatePermission: boolean
|
||||
newDocumentURL: string
|
||||
} & FolderListViewSlots
|
||||
|
||||
export type FolderListViewSlotSharedClientProps = {
|
||||
collectionSlug: SanitizedCollectionConfig['slug']
|
||||
hasCreatePermission: boolean
|
||||
newDocumentURL: string
|
||||
}
|
||||
|
||||
// BeforeFolderList
|
||||
export type BeforeFolderListClientProps = FolderListViewSlotSharedClientProps
|
||||
export type BeforeFolderListServerPropsOnly = {} & FolderListViewServerPropsOnly
|
||||
export type BeforeFolderListServerProps = BeforeFolderListClientProps &
|
||||
BeforeFolderListServerPropsOnly
|
||||
|
||||
// BeforeFolderListTable
|
||||
export type BeforeFolderListTableClientProps = FolderListViewSlotSharedClientProps
|
||||
export type BeforeFolderListTableServerPropsOnly = {} & FolderListViewServerPropsOnly
|
||||
export type BeforeFolderListTableServerProps = BeforeFolderListTableClientProps &
|
||||
BeforeFolderListTableServerPropsOnly
|
||||
|
||||
// AfterFolderList
|
||||
export type AfterFolderListClientProps = FolderListViewSlotSharedClientProps
|
||||
export type AfterFolderListServerPropsOnly = {} & FolderListViewServerPropsOnly
|
||||
export type AfterFolderListServerProps = AfterFolderListClientProps & AfterFolderListServerPropsOnly
|
||||
|
||||
// AfterFolderListTable
|
||||
export type AfterFolderListTableClientProps = FolderListViewSlotSharedClientProps
|
||||
export type AfterFolderListTableServerPropsOnly = {} & FolderListViewServerPropsOnly
|
||||
export type AfterFolderListTableServerProps = AfterFolderListTableClientProps &
|
||||
AfterFolderListTableServerPropsOnly
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { ClientTranslationsObject, I18n } from '@payloadcms/translations'
|
||||
import type { ClientTranslationsObject } from '@payloadcms/translations'
|
||||
|
||||
import type { SanitizedPermissions } from '../../auth/index.js'
|
||||
import type { ImportMap } from '../../bin/generateImportMap/index.js'
|
||||
@@ -8,13 +8,12 @@ import type {
|
||||
CustomComponent,
|
||||
Locale,
|
||||
MetaConfig,
|
||||
Params,
|
||||
PayloadComponent,
|
||||
SanitizedConfig,
|
||||
ServerProps,
|
||||
} from '../../config/types.js'
|
||||
import type { SanitizedGlobalConfig } from '../../globals/config/types.js'
|
||||
import type { Payload, PayloadRequest } from '../../types/index.js'
|
||||
import type { PayloadRequest } from '../../types/index.js'
|
||||
import type { LanguageOptions } from '../LanguageOptions.js'
|
||||
import type { Data, StaticDescription } from '../types.js'
|
||||
import type { DocumentSubViewTypes } from './document.js'
|
||||
@@ -42,9 +41,14 @@ export type AdminViewServerPropsOnly = {
|
||||
* @todo remove `docID` here as it is already contained in `initPageResult`
|
||||
*/
|
||||
readonly docID?: number | string
|
||||
readonly folderID?: string
|
||||
readonly importMap: ImportMap
|
||||
readonly initialData?: Data
|
||||
readonly initPageResult: InitPageResult
|
||||
readonly params?: { [key: string]: string | string[] | undefined }
|
||||
readonly redirectAfterCreate?: boolean
|
||||
readonly redirectAfterDelete?: boolean
|
||||
readonly redirectAfterDuplicate?: boolean
|
||||
} & ServerProps
|
||||
|
||||
export type AdminViewServerProps = AdminViewClientProps & AdminViewServerPropsOnly
|
||||
@@ -78,8 +82,10 @@ export type InitPageResult = {
|
||||
*/
|
||||
export type ViewTypes =
|
||||
| 'account'
|
||||
| 'collection-folders'
|
||||
| 'dashboard'
|
||||
| 'document'
|
||||
| 'folders'
|
||||
| 'list'
|
||||
| 'reset'
|
||||
| 'verify'
|
||||
|
||||
@@ -38,7 +38,7 @@ export type ImportMap = {
|
||||
[path: UserImportPath]: any
|
||||
}
|
||||
|
||||
export type AddToImportMap = (payloadComponent: PayloadComponent | PayloadComponent[]) => void
|
||||
export type AddToImportMap = (payloadComponent?: PayloadComponent | PayloadComponent[]) => void
|
||||
|
||||
export async function generateImportMap(
|
||||
config: SanitizedConfig,
|
||||
|
||||
@@ -256,6 +256,11 @@ export type AfterForgotPasswordHook = (args: {
|
||||
context: RequestContext
|
||||
}) => any
|
||||
|
||||
export type EnableFoldersOptions = {
|
||||
// Displays the folder collection and parentFolder field in the document view
|
||||
debug?: boolean
|
||||
}
|
||||
|
||||
export type BaseListFilter = (args: {
|
||||
limit: number
|
||||
locale?: TypedLocale
|
||||
@@ -583,8 +588,9 @@ export type SanitizedJoins = {
|
||||
export interface SanitizedCollectionConfig
|
||||
extends Omit<
|
||||
DeepRequired<CollectionConfig>,
|
||||
'auth' | 'endpoints' | 'fields' | 'slug' | 'upload' | 'versions'
|
||||
'admin' | 'auth' | 'endpoints' | 'fields' | 'slug' | 'upload' | 'versions'
|
||||
> {
|
||||
admin: CollectionAdminOptions
|
||||
auth: Auth
|
||||
endpoints: Endpoint[] | false
|
||||
fields: Field[]
|
||||
|
||||
@@ -24,6 +24,7 @@ export const defaults: Omit<Config, 'db' | 'editor' | 'secret'> = {
|
||||
routes: {
|
||||
account: '/account',
|
||||
createFirstUser: '/create-first-user',
|
||||
folders: '/folders',
|
||||
forgot: '/forgot',
|
||||
inactivity: '/logout-inactivity',
|
||||
login: '/login',
|
||||
@@ -99,6 +100,7 @@ export const addDefaultsToConfig = (config: Config): Config => {
|
||||
routes: {
|
||||
account: '/account',
|
||||
createFirstUser: '/create-first-user',
|
||||
folders: '/folders',
|
||||
forgot: '/forgot',
|
||||
inactivity: '/logout-inactivity',
|
||||
login: '/login',
|
||||
@@ -109,6 +111,13 @@ export const addDefaultsToConfig = (config: Config): Config => {
|
||||
},
|
||||
}
|
||||
|
||||
config.folders = {
|
||||
collections: {},
|
||||
debug: false,
|
||||
enabled: false,
|
||||
...(config.folders || {}),
|
||||
}
|
||||
|
||||
config.bin = config.bin ?? []
|
||||
config.collections = config.collections ?? []
|
||||
config.cookiePrefix = config.cookiePrefix ?? 'payload'
|
||||
|
||||
@@ -18,6 +18,7 @@ import { sanitizeCollection } from '../collections/config/sanitize.js'
|
||||
import { migrationsCollection } from '../database/migrations/migrationsCollection.js'
|
||||
import { DuplicateCollection, InvalidConfiguration } from '../errors/index.js'
|
||||
import { defaultTimezones } from '../fields/baseFields/timezone/defaultTimezones.js'
|
||||
import { addFolderCollections } from '../folders/addFolderCollections.js'
|
||||
import { sanitizeGlobal } from '../globals/config/sanitize.js'
|
||||
import {
|
||||
baseBlockFields,
|
||||
@@ -190,6 +191,8 @@ export const sanitizeConfig = async (incomingConfig: Config): Promise<SanitizedC
|
||||
|
||||
const collectionSlugs = new Set<CollectionSlug>()
|
||||
|
||||
await addFolderCollections(config as unknown as Config)
|
||||
|
||||
const validRelationships = [
|
||||
...(config.collections.map((c) => c.slug) ?? []),
|
||||
jobsCollectionSlug,
|
||||
@@ -313,6 +316,7 @@ export const sanitizeConfig = async (incomingConfig: Config): Promise<SanitizedC
|
||||
for (const hook of Object.keys(hooks)) {
|
||||
const defaultAmount = hook === 'afterRead' || hook === 'beforeChange' ? 1 : 0
|
||||
if (hooks[hook]?.length > defaultAmount) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.warn(
|
||||
`The jobsCollectionOverrides function is returning a collection with an additional ${hook} hook defined. These hooks will not run unless the jobs.runHooks option is set to true. Setting this option to true will negatively impact performance.`,
|
||||
)
|
||||
@@ -374,7 +378,15 @@ export const sanitizeConfig = async (incomingConfig: Config): Promise<SanitizedC
|
||||
config.csrf.push(config.serverURL)
|
||||
}
|
||||
|
||||
// Get deduped list of upload adapters
|
||||
const uploadAdapters = new Set<string>()
|
||||
// interact with all collections
|
||||
for (const collection of config.collections) {
|
||||
// deduped upload adapters
|
||||
if (collection.upload?.adapter) {
|
||||
uploadAdapters.add(collection.upload.adapter)
|
||||
}
|
||||
}
|
||||
|
||||
if (!config.upload) {
|
||||
config.upload = { adapters: [] }
|
||||
}
|
||||
|
||||
@@ -43,6 +43,7 @@ import type { ErrorName } from '../errors/types.js'
|
||||
import type { GlobalConfig, Globals, SanitizedGlobalConfig } from '../globals/config/types.js'
|
||||
import type {
|
||||
Block,
|
||||
CollectionSlug,
|
||||
FlattenedBlock,
|
||||
JobsConfig,
|
||||
Payload,
|
||||
@@ -851,6 +852,11 @@ export type Config = {
|
||||
* @default '/create-first-user'
|
||||
*/
|
||||
createFirstUser?: `/${string}`
|
||||
/** The route for folder view.
|
||||
*
|
||||
* @default '/folders'
|
||||
*/
|
||||
folders: `/${string}`
|
||||
/** The route for the forgot password page.
|
||||
*
|
||||
* @default '/forgot'
|
||||
@@ -977,6 +983,44 @@ export type Config = {
|
||||
email?: EmailAdapter | Promise<EmailAdapter>
|
||||
/** Custom REST endpoints */
|
||||
endpoints?: Endpoint[]
|
||||
/**
|
||||
* Options for folder view within the admin panel
|
||||
*/
|
||||
folders?: {
|
||||
/**
|
||||
* An array of functions to be ran when the folder collection is initialized
|
||||
* This allows plugins to modify the collection configuration
|
||||
*/
|
||||
collectionOverrides?: (({
|
||||
collection,
|
||||
}: {
|
||||
collection: CollectionConfig
|
||||
}) => CollectionConfig | Promise<CollectionConfig>)[]
|
||||
/**
|
||||
* Collections that you would like organize within folders
|
||||
*/
|
||||
collections: {
|
||||
[key: CollectionSlug]: any
|
||||
}
|
||||
/**
|
||||
* Ability to view hidden fields and collections related to folders
|
||||
*
|
||||
* @default false
|
||||
*/
|
||||
debug?: boolean
|
||||
/**
|
||||
* Enable folders in the admin panel
|
||||
*
|
||||
* @default false
|
||||
*/
|
||||
enabled?: boolean
|
||||
/**
|
||||
* Slug for the folder collection
|
||||
*
|
||||
* @default "_folders"
|
||||
*/
|
||||
slug?: string
|
||||
}
|
||||
/**
|
||||
* @see https://payloadcms.com/docs/configuration/globals#global-configs
|
||||
*/
|
||||
|
||||
@@ -40,11 +40,24 @@ export { getFieldPaths } from '../fields/getFieldPaths.js'
|
||||
|
||||
export * from '../fields/validations.js'
|
||||
|
||||
export type {
|
||||
FolderBreadcrumb,
|
||||
FolderDocumentItemKey,
|
||||
FolderEnabledColection,
|
||||
FolderInterface,
|
||||
FolderOrDocument,
|
||||
GetFolderDataResult,
|
||||
Subfolder,
|
||||
} from '../folders/types.js'
|
||||
export { formatFolderOrDocumentItem } from '../folders/utils/formatFolderOrDocumentItem.js'
|
||||
|
||||
export { validOperators, validOperatorSet } from '../types/constants.js'
|
||||
|
||||
export { formatFilesize } from '../uploads/formatFilesize.js'
|
||||
|
||||
export { isImage } from '../uploads/isImage.js'
|
||||
export { combineWhereConstraints } from '../utilities/combineWhereConstraints.js'
|
||||
|
||||
export {
|
||||
deepCopyObject,
|
||||
deepCopyObjectComplex,
|
||||
@@ -59,6 +72,7 @@ export {
|
||||
deepMergeWithSourceArrays,
|
||||
} from '../utilities/deepMerge.js'
|
||||
|
||||
export { extractID } from '../utilities/extractID.js'
|
||||
export { fieldSchemaToJSON } from '../utilities/fieldSchemaToJSON.js'
|
||||
export { flattenAllFields } from '../utilities/flattenAllFields.js'
|
||||
|
||||
@@ -111,4 +125,5 @@ export { validateWhereQuery } from '../utilities/validateWhereQuery.js'
|
||||
export { wait } from '../utilities/wait.js'
|
||||
export { default as wordBoundariesRegex } from '../utilities/wordBoundariesRegex.js'
|
||||
export { versionDefaults } from '../versions/defaults.js'
|
||||
|
||||
export { deepMergeSimple } from '@payloadcms/translations/utilities'
|
||||
|
||||
59
packages/payload/src/folders/addFolderCollections.ts
Normal file
59
packages/payload/src/folders/addFolderCollections.ts
Normal file
@@ -0,0 +1,59 @@
|
||||
import type { Config } from '../config/types.js'
|
||||
import type { CollectionSlug } from '../index.js'
|
||||
|
||||
import { foldersSlug, parentFolderFieldName } from './constants.js'
|
||||
import { createFolderCollection } from './createFolderCollection.js'
|
||||
|
||||
export async function addFolderCollections(config: NonNullable<Config>): Promise<void> {
|
||||
if (!config.collections) {
|
||||
return
|
||||
}
|
||||
|
||||
if (config.folders?.enabled) {
|
||||
const enabledCollectionSlugs: CollectionSlug[] = []
|
||||
const debug = Boolean(config.folders?.debug)
|
||||
config.folders.slug = config.folders.slug || foldersSlug
|
||||
|
||||
for (let i = 0; i < config.collections.length; i++) {
|
||||
const collection = config.collections[i]
|
||||
if (config.folders.collections[collection.slug]) {
|
||||
if (collection) {
|
||||
collection.fields.push({
|
||||
name: parentFolderFieldName,
|
||||
type: 'relationship',
|
||||
admin: {
|
||||
allowCreate: false,
|
||||
allowEdit: false,
|
||||
components: {
|
||||
Cell: '@payloadcms/ui/rsc#FolderTableCell',
|
||||
Field: '@payloadcms/ui#FolderEditField',
|
||||
},
|
||||
},
|
||||
index: true,
|
||||
label: 'Folder',
|
||||
relationTo: config.folders.slug,
|
||||
})
|
||||
enabledCollectionSlugs.push(collection.slug)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (enabledCollectionSlugs.length) {
|
||||
let folderCollection = createFolderCollection({
|
||||
slug: config.folders.slug,
|
||||
collectionSlugs: enabledCollectionSlugs,
|
||||
debug,
|
||||
})
|
||||
|
||||
if (
|
||||
Array.isArray(config.folders.collectionOverrides) &&
|
||||
config.folders.collectionOverrides.length
|
||||
) {
|
||||
for (const override of config.folders.collectionOverrides) {
|
||||
folderCollection = await override({ collection: folderCollection })
|
||||
}
|
||||
}
|
||||
config.collections.push(folderCollection)
|
||||
}
|
||||
}
|
||||
}
|
||||
2
packages/payload/src/folders/constants.ts
Normal file
2
packages/payload/src/folders/constants.ts
Normal file
@@ -0,0 +1,2 @@
|
||||
export const foldersSlug = '_folders'
|
||||
export const parentFolderFieldName = '_folder'
|
||||
73
packages/payload/src/folders/createFolderCollection.ts
Normal file
73
packages/payload/src/folders/createFolderCollection.ts
Normal file
@@ -0,0 +1,73 @@
|
||||
import type { CollectionConfig } from '../collections/config/types.js'
|
||||
|
||||
import { parentFolderFieldName } from './constants.js'
|
||||
import { populateFolderDataEndpoint } from './endpoints/populateFolderData.js'
|
||||
import { deleteSubfoldersAfterDelete } from './hooks/deleteSubfoldersAfterDelete.js'
|
||||
import { dissasociateAfterDelete } from './hooks/dissasociateAfterDelete.js'
|
||||
import { reparentChildFolder } from './hooks/reparentChildFolder.js'
|
||||
|
||||
type CreateFolderCollectionArgs = {
|
||||
collectionSlugs: string[]
|
||||
debug?: boolean
|
||||
slug: string
|
||||
}
|
||||
export const createFolderCollection = ({
|
||||
slug,
|
||||
collectionSlugs,
|
||||
debug,
|
||||
}: CreateFolderCollectionArgs): CollectionConfig => ({
|
||||
slug,
|
||||
admin: {
|
||||
hidden: !debug,
|
||||
useAsTitle: 'name',
|
||||
},
|
||||
endpoints: [populateFolderDataEndpoint],
|
||||
fields: [
|
||||
{
|
||||
name: 'name',
|
||||
type: 'text',
|
||||
index: true,
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
name: parentFolderFieldName,
|
||||
type: 'relationship',
|
||||
admin: {
|
||||
hidden: !debug,
|
||||
},
|
||||
index: true,
|
||||
relationTo: slug,
|
||||
},
|
||||
{
|
||||
name: 'documentsAndFolders',
|
||||
type: 'join',
|
||||
admin: {
|
||||
hidden: !debug,
|
||||
},
|
||||
collection: [slug, ...collectionSlugs],
|
||||
hasMany: true,
|
||||
on: parentFolderFieldName,
|
||||
},
|
||||
],
|
||||
hooks: {
|
||||
afterChange: [
|
||||
reparentChildFolder({
|
||||
parentFolderFieldName,
|
||||
}),
|
||||
],
|
||||
afterDelete: [
|
||||
dissasociateAfterDelete({
|
||||
collectionSlugs,
|
||||
parentFolderFieldName,
|
||||
}),
|
||||
deleteSubfoldersAfterDelete({ folderSlug: slug, parentFolderFieldName }),
|
||||
],
|
||||
},
|
||||
labels: {
|
||||
plural: 'Folders',
|
||||
singular: 'Folder',
|
||||
},
|
||||
typescript: {
|
||||
interface: 'FolderInterface',
|
||||
},
|
||||
})
|
||||
45
packages/payload/src/folders/endpoints/populateFolderData.ts
Normal file
45
packages/payload/src/folders/endpoints/populateFolderData.ts
Normal file
@@ -0,0 +1,45 @@
|
||||
import httpStatus from 'http-status'
|
||||
|
||||
import type { Endpoint } from '../../index.js'
|
||||
|
||||
import { getFolderData } from '../utils/getFolderData.js'
|
||||
|
||||
export const populateFolderDataEndpoint: Endpoint = {
|
||||
handler: async (req) => {
|
||||
if (!req?.user) {
|
||||
return Response.json(
|
||||
{
|
||||
message: 'Unauthorized request.',
|
||||
},
|
||||
{
|
||||
status: httpStatus.UNAUTHORIZED,
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
const folderCollection = Boolean(req.payload.collections?.[req.payload.config.folders.slug])
|
||||
|
||||
if (!folderCollection) {
|
||||
return Response.json(
|
||||
{
|
||||
message: 'Folders are not configured',
|
||||
},
|
||||
{
|
||||
status: httpStatus.NOT_FOUND,
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
const data = await getFolderData({
|
||||
collectionSlug: req.searchParams?.get('collectionSlug') || undefined,
|
||||
folderID: req.searchParams?.get('folderID') || undefined,
|
||||
payload: req.payload,
|
||||
search: req.searchParams?.get('search') || undefined,
|
||||
user: req.user,
|
||||
})
|
||||
|
||||
return Response.json(data)
|
||||
},
|
||||
method: 'get',
|
||||
path: '/populate-folder-data',
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
import type { CollectionAfterDeleteHook } from '../../index.js'
|
||||
|
||||
type Args = {
|
||||
folderSlug: string
|
||||
parentFolderFieldName: string
|
||||
}
|
||||
export const deleteSubfoldersAfterDelete = ({
|
||||
folderSlug,
|
||||
parentFolderFieldName,
|
||||
}: Args): CollectionAfterDeleteHook => {
|
||||
return async ({ id, req }) => {
|
||||
await req.payload.delete({
|
||||
collection: folderSlug,
|
||||
depth: 0,
|
||||
overrideAccess: false,
|
||||
req,
|
||||
select: { id: true },
|
||||
where: {
|
||||
[parentFolderFieldName]: {
|
||||
equals: id,
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
import type { CollectionAfterDeleteHook } from '../../index.js'
|
||||
|
||||
type Args = {
|
||||
collectionSlugs: string[]
|
||||
parentFolderFieldName: string
|
||||
}
|
||||
export const dissasociateAfterDelete = ({
|
||||
collectionSlugs,
|
||||
parentFolderFieldName,
|
||||
}: Args): CollectionAfterDeleteHook => {
|
||||
return async ({ id, req }) => {
|
||||
for (const collectionSlug of collectionSlugs) {
|
||||
await req.payload.update({
|
||||
collection: collectionSlug,
|
||||
data: {
|
||||
[parentFolderFieldName]: null,
|
||||
},
|
||||
depth: 0,
|
||||
overrideAccess: false,
|
||||
req,
|
||||
select: {
|
||||
id: true,
|
||||
},
|
||||
where: {
|
||||
[parentFolderFieldName]: {
|
||||
equals: id,
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
110
packages/payload/src/folders/hooks/reparentChildFolder.ts
Normal file
110
packages/payload/src/folders/hooks/reparentChildFolder.ts
Normal file
@@ -0,0 +1,110 @@
|
||||
import type { CollectionAfterChangeHook, JsonObject, Payload, TypeWithID } from '../../index.js'
|
||||
|
||||
import { extractID } from '../../utilities/extractID.js'
|
||||
|
||||
type Args = {
|
||||
folderID: number | string
|
||||
parentFolderFieldName: string
|
||||
parentIDToFind: number | string
|
||||
payload: Payload
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines if a child folder belongs to a parent folder by
|
||||
* recursively checking upwards through the folder hierarchy.
|
||||
*/
|
||||
async function isChildOfFolder({
|
||||
folderID,
|
||||
parentFolderFieldName,
|
||||
parentIDToFind,
|
||||
payload,
|
||||
}: Args): Promise<boolean> {
|
||||
const parentFolder = (await payload.findByID({
|
||||
id: folderID,
|
||||
collection: payload.config.folders.slug,
|
||||
overrideAccess: false,
|
||||
select: {
|
||||
parentFolderFieldName: true,
|
||||
},
|
||||
})) as JsonObject & TypeWithID
|
||||
|
||||
const parentFolderID = parentFolder[parentFolderFieldName]
|
||||
? extractID(parentFolder[parentFolderFieldName])
|
||||
: undefined
|
||||
|
||||
if (!parentFolderID) {
|
||||
// made it to the root
|
||||
return false
|
||||
}
|
||||
|
||||
if (parentFolderID === parentIDToFind) {
|
||||
// found match, would be cyclic
|
||||
return true
|
||||
}
|
||||
|
||||
return isChildOfFolder({
|
||||
folderID: parentFolderID,
|
||||
parentFolderFieldName,
|
||||
parentIDToFind,
|
||||
payload,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* If a parent is moved into a child folder, we need to re-parent the child
|
||||
*
|
||||
* @example
|
||||
*
|
||||
* ```ts
|
||||
→ F1
|
||||
→ F2
|
||||
→ F2A
|
||||
→ F3
|
||||
|
||||
Moving F1 → F2A becomes:
|
||||
|
||||
→ F2A
|
||||
→ F1
|
||||
→ F2
|
||||
→ F3
|
||||
```
|
||||
*/
|
||||
export const reparentChildFolder = ({
|
||||
parentFolderFieldName,
|
||||
}: {
|
||||
parentFolderFieldName: string
|
||||
}): CollectionAfterChangeHook => {
|
||||
return async ({ doc, previousDoc, req }) => {
|
||||
if (
|
||||
previousDoc[parentFolderFieldName] !== doc[parentFolderFieldName] &&
|
||||
doc[parentFolderFieldName]
|
||||
) {
|
||||
const newParentFolderID = extractID(doc[parentFolderFieldName])
|
||||
const isMovingToChild = newParentFolderID
|
||||
? await isChildOfFolder({
|
||||
folderID: newParentFolderID,
|
||||
parentFolderFieldName,
|
||||
parentIDToFind: doc.id,
|
||||
payload: req.payload,
|
||||
})
|
||||
: false
|
||||
|
||||
if (isMovingToChild) {
|
||||
// if the folder was moved into a child folder, the child folder needs
|
||||
// to be re-parented with the parent of the folder that was moved
|
||||
await req.payload.update({
|
||||
id: newParentFolderID,
|
||||
collection: req.payload.config.folders.slug,
|
||||
data: {
|
||||
[parentFolderFieldName]: previousDoc[parentFolderFieldName]
|
||||
? extractID(previousDoc[parentFolderFieldName])
|
||||
: null,
|
||||
},
|
||||
depth: 0,
|
||||
overrideAccess: false,
|
||||
req,
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
70
packages/payload/src/folders/types.ts
Normal file
70
packages/payload/src/folders/types.ts
Normal file
@@ -0,0 +1,70 @@
|
||||
import type { TypeWithID } from '../collections/config/types.js'
|
||||
import type { CollectionSlug, SanitizedCollectionConfig } from '../index.js'
|
||||
import type { Document } from '../types/index.js'
|
||||
|
||||
export type FolderInterface = {
|
||||
_folder?: FolderInterface | (number | string | undefined)
|
||||
documentsAndFolders?: {
|
||||
docs: {
|
||||
relationTo: CollectionSlug
|
||||
value: Document
|
||||
}[]
|
||||
}
|
||||
name: string
|
||||
} & TypeWithID
|
||||
|
||||
export type FolderBreadcrumb = {
|
||||
id: null | number | string
|
||||
name: string
|
||||
}
|
||||
|
||||
export type Subfolder = {
|
||||
fileCount: number
|
||||
hasSubfolders: boolean
|
||||
id: number | string
|
||||
name: string
|
||||
subfolderCount: number
|
||||
}
|
||||
|
||||
export type FolderEnabledColection = {
|
||||
admin: {
|
||||
custom: {
|
||||
folderCollectionSlug: CollectionSlug
|
||||
}
|
||||
}
|
||||
slug: CollectionSlug
|
||||
} & SanitizedCollectionConfig
|
||||
|
||||
/**
|
||||
* `${relationTo}-${id}` is used as a key for the item
|
||||
*/
|
||||
export type FolderDocumentItemKey = `${string}-${number | string}`
|
||||
|
||||
/**
|
||||
* Needed for document card view for upload enabled collections
|
||||
*/
|
||||
type DocumentMediaData = {
|
||||
filename?: string
|
||||
mimeType?: string
|
||||
url?: string
|
||||
}
|
||||
/**
|
||||
* A generic structure for a folder or document item.
|
||||
*/
|
||||
export type FolderOrDocument = {
|
||||
itemKey: FolderDocumentItemKey
|
||||
relationTo: CollectionSlug
|
||||
value: {
|
||||
_folder?: number | string
|
||||
_folderOrDocumentTitle: string
|
||||
createdAt?: string
|
||||
id: number | string
|
||||
updatedAt?: string
|
||||
} & DocumentMediaData
|
||||
}
|
||||
|
||||
export type GetFolderDataResult = {
|
||||
breadcrumbs: FolderBreadcrumb[] | null
|
||||
documents: FolderOrDocument[]
|
||||
subfolders: FolderOrDocument[]
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
import type { CollectionSlug, Document } from '../../index.js'
|
||||
import type { FolderOrDocument } from '../types.js'
|
||||
|
||||
type Args = {
|
||||
isUpload: boolean
|
||||
relationTo: CollectionSlug
|
||||
useAsTitle?: string
|
||||
value: Document
|
||||
}
|
||||
export function formatFolderOrDocumentItem({
|
||||
isUpload,
|
||||
relationTo,
|
||||
useAsTitle,
|
||||
value,
|
||||
}: Args): FolderOrDocument {
|
||||
const itemValue: FolderOrDocument['value'] = {
|
||||
id: value?.id,
|
||||
_folder: value?._folder,
|
||||
_folderOrDocumentTitle: value[useAsTitle || 'id'],
|
||||
createdAt: value?.createdAt,
|
||||
updatedAt: value?.updatedAt,
|
||||
}
|
||||
|
||||
if (isUpload) {
|
||||
itemValue.filename = value.filename
|
||||
itemValue.mimeType = value.mimeType
|
||||
itemValue.url = value.url
|
||||
}
|
||||
|
||||
return {
|
||||
itemKey: `${relationTo}-${value.id}`,
|
||||
relationTo,
|
||||
value: itemValue,
|
||||
}
|
||||
}
|
||||
64
packages/payload/src/folders/utils/getFolderBreadcrumbs.ts
Normal file
64
packages/payload/src/folders/utils/getFolderBreadcrumbs.ts
Normal file
@@ -0,0 +1,64 @@
|
||||
import type { PaginatedDocs } from '../../database/types.js'
|
||||
import type { User } from '../../index.js'
|
||||
import type { Payload } from '../../types/index.js'
|
||||
import type { FolderBreadcrumb, FolderInterface } from '../types.js'
|
||||
|
||||
import { parentFolderFieldName } from '../constants.js'
|
||||
type GetFolderBreadcrumbsArgs = {
|
||||
breadcrumbs?: FolderBreadcrumb[]
|
||||
folderID?: number | string
|
||||
payload: Payload
|
||||
user?: User
|
||||
}
|
||||
/**
|
||||
* Builds breadcrumbs up from child folder
|
||||
* all the way up to root folder
|
||||
*/
|
||||
export const getFolderBreadcrumbs = async ({
|
||||
breadcrumbs = [],
|
||||
folderID,
|
||||
payload,
|
||||
user,
|
||||
}: GetFolderBreadcrumbsArgs): Promise<FolderBreadcrumb[] | null> => {
|
||||
if (folderID) {
|
||||
const folderQuery = (await payload.find({
|
||||
collection: payload.config.folders.slug,
|
||||
depth: 0,
|
||||
limit: 1,
|
||||
overrideAccess: false,
|
||||
select: {
|
||||
name: true,
|
||||
[parentFolderFieldName]: true,
|
||||
},
|
||||
user,
|
||||
where: {
|
||||
id: {
|
||||
equals: folderID,
|
||||
},
|
||||
},
|
||||
})) as PaginatedDocs<FolderInterface>
|
||||
|
||||
const folder = folderQuery.docs[0]
|
||||
|
||||
if (folder) {
|
||||
breadcrumbs.push({
|
||||
id: folder.id,
|
||||
name: folder.name,
|
||||
})
|
||||
if (folder[parentFolderFieldName]) {
|
||||
return getFolderBreadcrumbs({
|
||||
breadcrumbs,
|
||||
folderID:
|
||||
typeof folder[parentFolderFieldName] === 'number' ||
|
||||
typeof folder[parentFolderFieldName] === 'string'
|
||||
? folder[parentFolderFieldName]
|
||||
: folder[parentFolderFieldName].id,
|
||||
payload,
|
||||
user,
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return breadcrumbs.reverse()
|
||||
}
|
||||
104
packages/payload/src/folders/utils/getFolderData.ts
Normal file
104
packages/payload/src/folders/utils/getFolderData.ts
Normal file
@@ -0,0 +1,104 @@
|
||||
import type { CollectionSlug, User } from '../../index.js'
|
||||
import type { Payload } from '../../types/index.js'
|
||||
import type { GetFolderDataResult } from '../types.js'
|
||||
|
||||
import { parseDocumentID } from '../../index.js'
|
||||
import { getFolderBreadcrumbs } from './getFolderBreadcrumbs.js'
|
||||
import { queryDocumentsAndFoldersFromJoin } from './getFoldersAndDocumentsFromJoin.js'
|
||||
import { getOrphanedDocs } from './getOrphanedDocs.js'
|
||||
|
||||
type Args = {
|
||||
/**
|
||||
* Specify to query documents from a specific collection
|
||||
* @default undefined
|
||||
* @example 'posts'
|
||||
*/
|
||||
collectionSlug?: CollectionSlug
|
||||
/**
|
||||
* The ID of the folder to query documents from
|
||||
* @default undefined
|
||||
*/
|
||||
folderID?: number | string
|
||||
/**
|
||||
* The locale to use for the document query
|
||||
* @default undefined
|
||||
*/
|
||||
payload: Payload
|
||||
/**
|
||||
* Search term to filter documents by - only applicable IF `collectionSlug` exists and NO `folderID` is provided
|
||||
*/
|
||||
search?: string
|
||||
/**
|
||||
* The user making the request
|
||||
* @default undefined
|
||||
*/
|
||||
user?: User
|
||||
}
|
||||
/**
|
||||
* Query for documents, subfolders and breadcrumbs for a given folder
|
||||
*/
|
||||
export const getFolderData = async ({
|
||||
collectionSlug,
|
||||
folderID: _folderID,
|
||||
payload,
|
||||
search,
|
||||
user,
|
||||
}: Args): Promise<GetFolderDataResult> => {
|
||||
const parentFolderID = parseDocumentID({
|
||||
id: _folderID,
|
||||
collectionSlug: payload.config.folders.slug,
|
||||
payload,
|
||||
})
|
||||
|
||||
const breadcrumbsPromise = getFolderBreadcrumbs({
|
||||
folderID: parentFolderID,
|
||||
payload,
|
||||
user,
|
||||
})
|
||||
|
||||
if (parentFolderID) {
|
||||
// subfolders and documents are queried together
|
||||
const documentAndSubfolderPromise = queryDocumentsAndFoldersFromJoin({
|
||||
collectionSlug,
|
||||
parentFolderID,
|
||||
payload,
|
||||
user,
|
||||
})
|
||||
const [breadcrumbs, documentsAndSubfolders] = await Promise.all([
|
||||
breadcrumbsPromise,
|
||||
documentAndSubfolderPromise,
|
||||
])
|
||||
|
||||
return {
|
||||
breadcrumbs,
|
||||
documents: documentsAndSubfolders.documents,
|
||||
subfolders: documentsAndSubfolders.subfolders,
|
||||
}
|
||||
} else {
|
||||
// subfolders and documents are queried separately
|
||||
const subfoldersPromise = getOrphanedDocs({
|
||||
collectionSlug: payload.config.folders.slug,
|
||||
payload,
|
||||
search,
|
||||
user,
|
||||
})
|
||||
const documentsPromise = collectionSlug
|
||||
? getOrphanedDocs({
|
||||
collectionSlug,
|
||||
payload,
|
||||
search,
|
||||
user,
|
||||
})
|
||||
: Promise.resolve([])
|
||||
const [breadcrumbs, subfolders, documents] = await Promise.all([
|
||||
breadcrumbsPromise,
|
||||
subfoldersPromise,
|
||||
documentsPromise,
|
||||
])
|
||||
return {
|
||||
breadcrumbs,
|
||||
documents,
|
||||
subfolders,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
import type { User } from '../../auth/types.js'
|
||||
import type { PaginatedDocs } from '../../database/types.js'
|
||||
import type { CollectionSlug } from '../../index.js'
|
||||
import type { Document, Payload } from '../../types/index.js'
|
||||
import type { FolderOrDocument } from '../types.js'
|
||||
|
||||
import { formatFolderOrDocumentItem } from './formatFolderOrDocumentItem.js'
|
||||
|
||||
type QueryDocumentsAndFoldersResults = {
|
||||
documents: FolderOrDocument[]
|
||||
subfolders: FolderOrDocument[]
|
||||
}
|
||||
type QueryDocumentsAndFoldersArgs = {
|
||||
collectionSlug?: CollectionSlug
|
||||
parentFolderID: number | string
|
||||
payload: Payload
|
||||
user?: User
|
||||
}
|
||||
export async function queryDocumentsAndFoldersFromJoin({
|
||||
collectionSlug,
|
||||
parentFolderID,
|
||||
payload,
|
||||
user,
|
||||
}: QueryDocumentsAndFoldersArgs): Promise<QueryDocumentsAndFoldersResults> {
|
||||
const subfolderDoc = (await payload.find({
|
||||
collection: payload.config.folders.slug,
|
||||
joins: {
|
||||
documentsAndFolders: {
|
||||
limit: 100_000,
|
||||
sort: 'name',
|
||||
where: {
|
||||
relationTo: {
|
||||
in: [
|
||||
payload.config.folders.slug,
|
||||
...(collectionSlug
|
||||
? [collectionSlug]
|
||||
: Object.keys(payload.config.folders.collections)),
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
limit: 1,
|
||||
// overrideAccess: false, // @todo: bug in core, throws "QueryError: The following paths cannot be queried: relationTo"
|
||||
user,
|
||||
where: {
|
||||
id: {
|
||||
equals: parentFolderID,
|
||||
},
|
||||
},
|
||||
})) as PaginatedDocs<Document>
|
||||
|
||||
const childrenDocs = subfolderDoc?.docs[0]?.documentsAndFolders?.docs || []
|
||||
|
||||
const results: QueryDocumentsAndFoldersResults = childrenDocs.reduce(
|
||||
(acc: QueryDocumentsAndFoldersResults, doc: Document) => {
|
||||
const { relationTo, value } = doc
|
||||
const item = formatFolderOrDocumentItem({
|
||||
isUpload: Boolean(payload.collections[relationTo].config.upload),
|
||||
relationTo,
|
||||
useAsTitle: payload.collections[relationTo].config.admin?.useAsTitle,
|
||||
value,
|
||||
})
|
||||
|
||||
if (relationTo === payload.config.folders.slug) {
|
||||
acc.subfolders.push(item)
|
||||
} else {
|
||||
acc.documents.push(item)
|
||||
}
|
||||
|
||||
return acc
|
||||
},
|
||||
{
|
||||
documents: [],
|
||||
subfolders: [],
|
||||
},
|
||||
)
|
||||
|
||||
return results
|
||||
}
|
||||
60
packages/payload/src/folders/utils/getOrphanedDocs.ts
Normal file
60
packages/payload/src/folders/utils/getOrphanedDocs.ts
Normal file
@@ -0,0 +1,60 @@
|
||||
import type { CollectionSlug, Payload, User, Where } from '../../index.js'
|
||||
import type { FolderOrDocument } from '../types.js'
|
||||
|
||||
import { formatFolderOrDocumentItem } from './formatFolderOrDocumentItem.js'
|
||||
|
||||
type Args = {
|
||||
collectionSlug: CollectionSlug
|
||||
payload: Payload
|
||||
search?: string
|
||||
user?: User
|
||||
}
|
||||
export async function getOrphanedDocs({
|
||||
collectionSlug,
|
||||
payload,
|
||||
search,
|
||||
user,
|
||||
}: Args): Promise<FolderOrDocument[]> {
|
||||
let whereConstraints: Where = {
|
||||
or: [
|
||||
{
|
||||
_folder: {
|
||||
exists: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
_folder: {
|
||||
equals: null,
|
||||
},
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
if (collectionSlug && search && payload.collections[collectionSlug].config.admin?.useAsTitle) {
|
||||
whereConstraints = {
|
||||
[payload.collections[collectionSlug].config.admin.useAsTitle]: {
|
||||
like: search,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
const orphanedFolders = await payload.find({
|
||||
collection: collectionSlug,
|
||||
limit: 0,
|
||||
// overrideAccess: false, // @todo: bug in core, throws "QueryError: The following paths cannot be queried: _folder"
|
||||
sort: payload.collections[collectionSlug].config.admin.useAsTitle,
|
||||
user,
|
||||
where: whereConstraints,
|
||||
})
|
||||
|
||||
return (
|
||||
orphanedFolders?.docs.map((doc) =>
|
||||
formatFolderOrDocumentItem({
|
||||
isUpload: Boolean(payload.collections[collectionSlug].config.upload),
|
||||
relationTo: collectionSlug,
|
||||
useAsTitle: payload.collections[collectionSlug].config.admin.useAsTitle,
|
||||
value: doc,
|
||||
}),
|
||||
) || []
|
||||
)
|
||||
}
|
||||
@@ -1371,6 +1371,7 @@ export type {
|
||||
UploadFieldValidation,
|
||||
UsernameFieldValidation,
|
||||
} from './fields/validations.js'
|
||||
export { getFolderData } from './folders/utils/getFolderData.js'
|
||||
export {
|
||||
type ClientGlobalConfig,
|
||||
createClientGlobalConfig,
|
||||
@@ -1378,7 +1379,6 @@ export {
|
||||
type ServerOnlyGlobalAdminProperties,
|
||||
type ServerOnlyGlobalProperties,
|
||||
} from './globals/config/client.js'
|
||||
|
||||
export type {
|
||||
AfterChangeHook as GlobalAfterChangeHook,
|
||||
AfterReadHook as GlobalAfterReadHook,
|
||||
@@ -1390,7 +1390,6 @@ export type {
|
||||
GlobalConfig,
|
||||
SanitizedGlobalConfig,
|
||||
} from './globals/config/types.js'
|
||||
|
||||
export { docAccessOperation as docAccessOperationGlobal } from './globals/operations/docAccess.js'
|
||||
|
||||
export { findOneOperation } from './globals/operations/findOne.js'
|
||||
@@ -1437,11 +1436,11 @@ export type {
|
||||
WorkflowTypes,
|
||||
} from './queues/config/types/workflowTypes.js'
|
||||
export { importHandlerPath } from './queues/operations/runJobs/runJob/importHandlerPath.js'
|
||||
|
||||
export { getLocalI18n } from './translations/getLocalI18n.js'
|
||||
export * from './types/index.js'
|
||||
export { getFileByPath } from './uploads/getFileByPath.js'
|
||||
export type * from './uploads/types.js'
|
||||
|
||||
export { addDataAndFileToRequest } from './utilities/addDataAndFileToRequest.js'
|
||||
|
||||
export { addLocalesToRequestFromData, sanitizeLocales } from './utilities/addLocalesToRequest.js'
|
||||
@@ -1499,6 +1498,7 @@ export { logError } from './utilities/logError.js'
|
||||
export { defaultLoggerOptions } from './utilities/logger.js'
|
||||
export { mapAsync } from './utilities/mapAsync.js'
|
||||
export { mergeHeaders } from './utilities/mergeHeaders.js'
|
||||
export { parseDocumentID } from './utilities/parseDocumentID.js'
|
||||
export { sanitizeFallbackLocale } from './utilities/sanitizeFallbackLocale.js'
|
||||
export { sanitizeJoinParams } from './utilities/sanitizeJoinParams.js'
|
||||
export { sanitizePopulateParam } from './utilities/sanitizePopulateParam.js'
|
||||
@@ -1515,6 +1515,7 @@ export { appendVersionToQueryKey } from './versions/drafts/appendVersionToQueryK
|
||||
export { getQueryDraftsSort } from './versions/drafts/getQueryDraftsSort.js'
|
||||
export { enforceMaxVersions } from './versions/enforceMaxVersions.js'
|
||||
export { getLatestCollectionVersion } from './versions/getLatestCollectionVersion.js'
|
||||
|
||||
export { getLatestGlobalVersion } from './versions/getLatestGlobalVersion.js'
|
||||
export { saveVersion } from './versions/saveVersion.js'
|
||||
export type { SchedulePublishTaskInput } from './versions/schedule/types.js'
|
||||
|
||||
19
packages/payload/src/utilities/combineWhereConstraints.ts
Normal file
19
packages/payload/src/utilities/combineWhereConstraints.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import type { Where } from '../types/index.js'
|
||||
|
||||
export function combineWhereConstraints(
|
||||
constraints: Array<undefined | Where>,
|
||||
as: 'and' | 'or' = 'and',
|
||||
): Where {
|
||||
if (constraints.length === 0) {
|
||||
return {}
|
||||
}
|
||||
|
||||
return {
|
||||
[as]: constraints.filter((constraint): constraint is Where => {
|
||||
if (constraint && typeof constraint === 'object' && Object.keys(constraint).length > 0) {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}),
|
||||
}
|
||||
}
|
||||
9
packages/payload/src/utilities/extractID.ts
Normal file
9
packages/payload/src/utilities/extractID.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
export const extractID = <IDType extends number | string>(
|
||||
objectOrID: { id: IDType } | IDType,
|
||||
): IDType => {
|
||||
if (typeof objectOrID === 'string' || typeof objectOrID === 'number') {
|
||||
return objectOrID
|
||||
}
|
||||
|
||||
return objectOrID.id
|
||||
}
|
||||
15
packages/payload/src/utilities/parseDocumentID.ts
Normal file
15
packages/payload/src/utilities/parseDocumentID.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import type { CollectionSlug, Payload } from '../index.js'
|
||||
|
||||
import { isNumber } from './isNumber.js'
|
||||
|
||||
type ParseDocumentIDArgs = {
|
||||
collectionSlug: CollectionSlug
|
||||
id?: number | string
|
||||
payload: Payload
|
||||
}
|
||||
|
||||
export function parseDocumentID({ id, collectionSlug, payload }: ParseDocumentIDArgs) {
|
||||
const idType = payload.collections[collectionSlug]?.customIDType ?? payload.db.defaultIDType
|
||||
|
||||
return id ? (idType === 'number' && isNumber(id) ? parseFloat(String(id)) : id) : undefined
|
||||
}
|
||||
@@ -21,7 +21,7 @@ export const WatchTenantCollection = () => {
|
||||
const [useAsTitleName] = React.useState(
|
||||
() => (getEntityConfig({ collectionSlug }) as ClientCollectionConfig).admin.useAsTitle,
|
||||
)
|
||||
const titleField = useFormFields(([fields]) => fields[useAsTitleName])
|
||||
const titleField = useFormFields(([fields]) => (useAsTitleName ? fields[useAsTitleName] : {}))
|
||||
|
||||
const { updateTenants } = useTenantSelection()
|
||||
|
||||
|
||||
@@ -88,12 +88,12 @@ const nativeMax = Math.max,
|
||||
* @category Function
|
||||
* @param {Function} func The function to debounce.
|
||||
* @param {number} [wait=0] The number of milliseconds to delay.
|
||||
* @param {Object} [options={}] The options object.
|
||||
* @param {boolean} [options.leading=false]
|
||||
* @param {Object} [sortOnOptions={}] The options object.
|
||||
* @param {boolean} [sortOnOptions.leading=false]
|
||||
* Specify invoking on the leading edge of the timeout.
|
||||
* @param {number} [options.maxWait]
|
||||
* @param {number} [sortOnOptions.maxWait]
|
||||
* The maximum time `func` is allowed to be delayed before it's invoked.
|
||||
* @param {boolean} [options.trailing=true]
|
||||
* @param {boolean} [sortOnOptions.trailing=true]
|
||||
* Specify invoking on the trailing edge of the timeout.
|
||||
* @returns {Function} Returns the new debounced function.
|
||||
* @example
|
||||
|
||||
@@ -126,6 +126,27 @@ export const clientTranslationKeys = createClientTranslationKeys([
|
||||
'fields:toggleBlock',
|
||||
'fields:uploadNewLabel',
|
||||
|
||||
'folder:byFolder',
|
||||
'folder:browseByFolder',
|
||||
'folder:deleteFolder',
|
||||
'folder:folders',
|
||||
'folder:folderName',
|
||||
'folder:itemsMovedToFolder',
|
||||
'folder:itemsMovedToRoot',
|
||||
'folder:itemHasBeenMoved',
|
||||
'folder:itemHasBeenMovedToRoot',
|
||||
'folder:moveFolder',
|
||||
'folder:movingFromFolder',
|
||||
'folder:moveItemsToFolderConfirmation',
|
||||
'folder:moveItemsToRootConfirmation',
|
||||
'folder:moveItemToFolderConfirmation',
|
||||
'folder:moveItemToRootConfirmation',
|
||||
'folder:noFolder',
|
||||
'folder:newFolder',
|
||||
'folder:renameFolder',
|
||||
'folder:searchByNameInFolder',
|
||||
'folder:selectFolderForItem',
|
||||
|
||||
'general:all',
|
||||
'general:aboutToDeleteCount',
|
||||
'general:aboutToDelete',
|
||||
@@ -145,6 +166,7 @@ export const clientTranslationKeys = createClientTranslationKeys([
|
||||
'general:close',
|
||||
'general:collapse',
|
||||
'general:collections',
|
||||
'general:confirmMove',
|
||||
'general:columns',
|
||||
'general:columnToSort',
|
||||
'general:confirm',
|
||||
@@ -202,6 +224,8 @@ export const clientTranslationKeys = createClientTranslationKeys([
|
||||
'general:globals',
|
||||
'general:goBack',
|
||||
'general:isEditing',
|
||||
'general:item',
|
||||
'general:items',
|
||||
'general:language',
|
||||
'general:lastModified',
|
||||
'general:leaveAnyway',
|
||||
@@ -212,8 +236,14 @@ export const clientTranslationKeys = createClientTranslationKeys([
|
||||
'general:locale',
|
||||
'general:menu',
|
||||
'general:moreOptions',
|
||||
'general:move',
|
||||
'general:moveConfirm',
|
||||
'general:moveCount',
|
||||
'general:moveDown',
|
||||
'general:moveUp',
|
||||
'general:moving',
|
||||
'general:movingCount',
|
||||
'general:name',
|
||||
'general:next',
|
||||
'general:noDateSelected',
|
||||
'general:noFiltersSet',
|
||||
@@ -239,6 +269,7 @@ export const clientTranslationKeys = createClientTranslationKeys([
|
||||
'general:reindex',
|
||||
'general:reindexingAll',
|
||||
'general:remove',
|
||||
'general:rename',
|
||||
'general:reset',
|
||||
'general:resetPreferences',
|
||||
'general:resetPreferencesDescription',
|
||||
@@ -249,6 +280,7 @@ export const clientTranslationKeys = createClientTranslationKeys([
|
||||
'general:schedulePublishFor',
|
||||
'general:saving',
|
||||
'general:searchBy',
|
||||
'general:select',
|
||||
'general:selectAll',
|
||||
'general:selectAllRows',
|
||||
'general:selectedCount',
|
||||
|
||||
@@ -172,7 +172,33 @@ export const arTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Toggle block',
|
||||
uploadNewLabel: 'رفع {{label}} جديد',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'تصفح حسب المجلد',
|
||||
byFolder: 'حسب المجلد',
|
||||
deleteFolder: 'حذف المجلد',
|
||||
folderName: 'اسم المجلد',
|
||||
folders: 'مجلدات',
|
||||
itemHasBeenMoved: 'تم نقل {{title}} إلى {{folderName}}',
|
||||
itemHasBeenMovedToRoot: 'تم نقل {{title}} إلى المجلد الجذر',
|
||||
itemsMovedToFolder: '{{title}} تم نقله إلى {{folderName}}',
|
||||
itemsMovedToRoot: '{{title}} تم نقله إلى المجلد الجذر',
|
||||
moveFolder: 'نقل المجلد',
|
||||
moveItemsToFolderConfirmation:
|
||||
'أنت على وشك نقل <1>{{count}} {{label}}</1> إلى <2>{{toFolder}}</2>. هل أنت متأكد؟',
|
||||
moveItemsToRootConfirmation:
|
||||
'أنت على وشك نقل <1>{{count}} {{label}}</1> إلى المجلد الجذر. هل أنت متأكد؟',
|
||||
moveItemToFolderConfirmation:
|
||||
'أنت على وشك نقل <1>{{title}}</1> إلى <2>{{toFolder}}</2>. هل أنت متأكد؟',
|
||||
moveItemToRootConfirmation: 'أنت على وشك نقل <1>{{title}}</1> إلى المجلد الجذر. هل أنت متأكد؟',
|
||||
movingFromFolder: 'نقل {{title}} من {{folderName}}',
|
||||
newFolder: 'مجلد جديد',
|
||||
noFolder: 'لا يوجد مجلد',
|
||||
renameFolder: 'إعادة تسمية المجلد',
|
||||
searchByNameInFolder: 'البحث عن طريق الاسم في {{folderName}}',
|
||||
selectFolderForItem: 'اختر المجلد لـ {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'اسم',
|
||||
aboutToDelete: 'أنت على وشك حذف {{label}} <1>{{title}}</1>. هل أنت متأكّد؟',
|
||||
aboutToDeleteCount_many: 'أنت على وشك حذف {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'أنت على وشك حذف {{count}} {{label}}',
|
||||
@@ -201,6 +227,7 @@ export const arTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'تأكيد النسخ',
|
||||
confirmDeletion: 'تأكيد الحذف',
|
||||
confirmDuplication: 'تأكيد التّكرار',
|
||||
confirmMove: 'تأكيد النقل',
|
||||
confirmReindex: 'إعادة فهرسة جميع {{collections}}؟',
|
||||
confirmReindexAll: 'إعادة فهرسة جميع المجموعات؟',
|
||||
confirmReindexDescription:
|
||||
@@ -257,6 +284,8 @@ export const arTranslations: DefaultTranslationsObject = {
|
||||
globals: 'عامة',
|
||||
goBack: 'العودة',
|
||||
isEditing: 'يحرر',
|
||||
item: 'عنصر',
|
||||
items: 'عناصر',
|
||||
language: 'اللغة',
|
||||
lastModified: 'آخر تعديل',
|
||||
leaveAnyway: 'المغادرة على أي حال',
|
||||
@@ -268,8 +297,13 @@ export const arTranslations: DefaultTranslationsObject = {
|
||||
locales: 'اللّغات',
|
||||
menu: 'قائمة',
|
||||
moreOptions: 'خيارات أكثر',
|
||||
move: 'تحرك',
|
||||
moveConfirm: 'أنت على وشك نقل {{count}} {{label}} إلى <1>{{destination}}</1>. هل أنت متأكد؟',
|
||||
moveCount: 'انقل {{count}} {{label}}',
|
||||
moveDown: 'التّحريك إلى الأسفل',
|
||||
moveUp: 'التّحريك إلى الأعلى',
|
||||
moving: 'التحرك',
|
||||
movingCount: 'نقل {{count}} {{label}}',
|
||||
newPassword: 'كلمة مرور جديدة',
|
||||
next: 'التالي',
|
||||
noDateSelected: 'لم يتم اختيار تاريخ',
|
||||
@@ -297,6 +331,7 @@ export const arTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'إعادة الفهرسة',
|
||||
reindexingAll: 'جاري إعادة فهرسة جميع {{collections}}.',
|
||||
remove: 'إزالة',
|
||||
rename: 'إعادة تسمية',
|
||||
reset: 'إعادة تعيين',
|
||||
resetPreferences: 'إعادة تعيين التفضيلات',
|
||||
resetPreferencesDescription:
|
||||
@@ -308,6 +343,7 @@ export const arTranslations: DefaultTranslationsObject = {
|
||||
saving: 'جاري الحفظ...',
|
||||
schedulePublishFor: 'جدولة النشر لـ {{العنوان}}',
|
||||
searchBy: 'البحث عن طريق {{label}}',
|
||||
select: 'اختر',
|
||||
selectAll: 'تحديد كل {{count}} {{label}}',
|
||||
selectAllRows: 'حدد جميع الصفوف',
|
||||
selectedCount: 'تم تحديد {{count}} {{label}}',
|
||||
|
||||
@@ -174,7 +174,34 @@ export const azTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Bloku keç',
|
||||
uploadNewLabel: 'Yeni {{label}} yüklə',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Qovluqlara görə gözdən keçirin',
|
||||
byFolder: 'Qovluğa görə',
|
||||
deleteFolder: 'Qovluğu Sil',
|
||||
folderName: 'Qovluq Adı',
|
||||
folders: 'Qovluqlar',
|
||||
itemHasBeenMoved: '{{title}} {{folderName}} qovluğuna köçürüldü.',
|
||||
itemHasBeenMovedToRoot: '{{title}} kök qovluğa köçürüldü.',
|
||||
itemsMovedToFolder: '{{title}} {{folderName}} qovluğuna köçürüldü',
|
||||
itemsMovedToRoot: '{{title}} kök qovluğa köçürdü',
|
||||
moveFolder: 'Qovluğu Köçür',
|
||||
moveItemsToFolderConfirmation:
|
||||
'Siz <1>{{count}} {{label}}</1> -i <2>{{toFolder}}</2> -ə köçürmək üzərəsiniz. Eminsiniz?',
|
||||
moveItemsToRootConfirmation:
|
||||
'Siz <1>{{count}} {{label}}</1> əsas qovluğa köçürmək üzərəsiniz. Eminsiniz?',
|
||||
moveItemToFolderConfirmation:
|
||||
'Siz <1>{{title}}</1>-i <2>{{toFolder}}</2>ə köçürmək barədəsiniz. Eminsinizmi?',
|
||||
moveItemToRootConfirmation:
|
||||
"Siz <1>{{title}}</1>'i kök qovluğa köçürmək barədəsindəsiniz. Əminsiniz?",
|
||||
movingFromFolder: '{{title}}-i {{folderName}}-dən köçürmək',
|
||||
newFolder: 'Yeni Qovluq',
|
||||
noFolder: 'Qovluq Yoxdur',
|
||||
renameFolder: 'Qovluğun adını dəyişdirin',
|
||||
searchByNameInFolder: '{{folderName}} qovluğunda adla axtarış',
|
||||
selectFolderForItem: '{{title}} üçün qovluğu seçin',
|
||||
},
|
||||
general: {
|
||||
name: 'Ad',
|
||||
aboutToDelete: 'Siz {{label}} <1>{{title}}</1> silməyə hazırsınız. Eminsiniz?',
|
||||
aboutToDeleteCount_many: 'Siz {{count}} {{label}} silməyə hazırsınız.',
|
||||
aboutToDeleteCount_one: 'Siz {{count}} {{label}} silməyə hazırsınız.',
|
||||
@@ -204,6 +231,7 @@ export const azTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Kopyanı təsdiqləyin',
|
||||
confirmDeletion: 'Silməni təsdiqlə',
|
||||
confirmDuplication: 'Dublikasiyanı təsdiqlə',
|
||||
confirmMove: 'Hərəkəti təsdiqləyin',
|
||||
confirmReindex: 'Bütün {{collections}} yenidən indekslənsin?',
|
||||
confirmReindexAll: 'Bütün kolleksiyalar yenidən indekslənsin?',
|
||||
confirmReindexDescription:
|
||||
@@ -261,6 +289,8 @@ export const azTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Qloballar',
|
||||
goBack: 'Geri qayıt',
|
||||
isEditing: 'redaktə edir',
|
||||
item: 'əşya',
|
||||
items: 'maddələr',
|
||||
language: 'Dil',
|
||||
lastModified: 'Son dəyişdirildi',
|
||||
leaveAnyway: 'Heç olmasa çıx',
|
||||
@@ -272,8 +302,14 @@ export const azTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Dillər',
|
||||
menu: 'Menyu',
|
||||
moreOptions: 'Daha çox seçimlər',
|
||||
move: 'Hərəkət et',
|
||||
moveConfirm:
|
||||
'Siz <1>{{destination}}</1> -ə {{count}} {{label}} köçürmək ətrafında. Eminsinizmi?',
|
||||
moveCount: '{{count}} {{label}} hərəkət etdirin',
|
||||
moveDown: 'Aşağı hərəkət et',
|
||||
moveUp: 'Yuxarı hərəkət et',
|
||||
moving: 'Hərəkət edir',
|
||||
movingCount: '{{count}} {{label}} köçürülür',
|
||||
newPassword: 'Yeni şifrə',
|
||||
next: 'Növbəti',
|
||||
noDateSelected: 'Heç bir tarix seçilməyib',
|
||||
@@ -301,6 +337,7 @@ export const azTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Yenidən indekslə',
|
||||
reindexingAll: 'Bütün {{collections}} yenidən indekslənir.',
|
||||
remove: 'Sil',
|
||||
rename: 'Yenidən adlandırın',
|
||||
reset: 'Yenidən başlat',
|
||||
resetPreferences: 'Təhlükəsizlik parametrlərini sıfırlamaq',
|
||||
resetPreferencesDescription: 'Bu, bütün parametrlərinizi standart vəziyyətlərinə sıfırlayacaq.',
|
||||
@@ -311,6 +348,7 @@ export const azTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Saxlanılır...',
|
||||
schedulePublishFor: '{{title}} üçün nəşr cədvəlini təyin edin',
|
||||
searchBy: '{{label}} ilə axtar',
|
||||
select: 'Seçin',
|
||||
selectAll: 'Bütün {{count}} {{label}} seç',
|
||||
selectAllRows: 'Bütün sıraları seçin',
|
||||
selectedCount: '{{count}} {{label}} seçildi',
|
||||
|
||||
@@ -174,7 +174,34 @@ export const bgTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Превключи блок',
|
||||
uploadNewLabel: 'Качи нов {{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Прегледай по папки',
|
||||
byFolder: 'По папка',
|
||||
deleteFolder: 'Изтрий папка',
|
||||
folderName: 'Име на папка',
|
||||
folders: 'Папки',
|
||||
itemHasBeenMoved: '{{title}} е преместен в {{folderName}}',
|
||||
itemHasBeenMovedToRoot: '{{title}} беше преместено в основната папка',
|
||||
itemsMovedToFolder: '{{title}} беше преместен в {{folderName}}',
|
||||
itemsMovedToRoot: '{{title}} е преместен в основната папка.',
|
||||
moveFolder: 'Премести папка',
|
||||
moveItemsToFolderConfirmation:
|
||||
'Предстои да преместите <1>{{count}} {{label}}</1> в <2>{{toFolder}}</2>. Сигурни ли сте?',
|
||||
moveItemsToRootConfirmation:
|
||||
'Предстои да преместите <1>{{count}} {{label}}</1> в основната папка. Сигурни ли сте?',
|
||||
moveItemToFolderConfirmation:
|
||||
'Предстои да преместите <1>{{title}}</1> в <2>{{toFolder}}</2>. Сигурни ли сте?',
|
||||
moveItemToRootConfirmation:
|
||||
'Предстои да преместите <1>{{title}}</1> в основната папка. Сигурни ли сте?',
|
||||
movingFromFolder: 'Преместване на {{title}} от {{folderName}}',
|
||||
newFolder: 'Нова папка',
|
||||
noFolder: 'Няма папка',
|
||||
renameFolder: 'Преименувай папка',
|
||||
searchByNameInFolder: 'Търсене по име в {{folderName}}',
|
||||
selectFolderForItem: 'Изберете папка за {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'Име',
|
||||
aboutToDelete: 'На път си да изтриеш {{label}} <1>{{title}}</1>. Сигурен ли си?',
|
||||
aboutToDeleteCount_many: 'На път си да изтриеш {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'На път си да изтриеш {{count}} {{label}}',
|
||||
@@ -203,6 +230,7 @@ export const bgTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Потвърди копирането',
|
||||
confirmDeletion: 'Потвърди изтриване',
|
||||
confirmDuplication: 'Потвърди дупликация',
|
||||
confirmMove: 'Потвърждаване на преместване',
|
||||
confirmReindex: 'Да се преиндексират всички {{collections}}?',
|
||||
confirmReindexAll: 'Да се преиндексират всички колекции?',
|
||||
confirmReindexDescription:
|
||||
@@ -260,6 +288,8 @@ export const bgTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Глобални',
|
||||
goBack: 'Върни се',
|
||||
isEditing: 'редактира',
|
||||
item: 'артикул',
|
||||
items: 'артикули',
|
||||
language: 'Език',
|
||||
lastModified: 'Последно променено',
|
||||
leaveAnyway: 'Напусни въпреки това',
|
||||
@@ -271,8 +301,14 @@ export const bgTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Локализации',
|
||||
menu: 'Меню',
|
||||
moreOptions: 'Повече опции',
|
||||
move: 'Премести',
|
||||
moveConfirm:
|
||||
'Вие сте на път да преместите {{count}} {{label}} към <1>{{destination}}</1>. Сигурни ли сте?',
|
||||
moveCount: 'Преместете {{count}} {{label}}',
|
||||
moveDown: 'Надолу',
|
||||
moveUp: 'Нагоре',
|
||||
moving: 'Преместване',
|
||||
movingCount: 'Преместване на {{count}} {{label}}',
|
||||
newPassword: 'Нова парола',
|
||||
next: 'Следващ',
|
||||
noDateSelected: 'Не е избрана дата',
|
||||
@@ -300,6 +336,7 @@ export const bgTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Преиндексиране',
|
||||
reindexingAll: 'Преиндексиране на всички {{collections}}.',
|
||||
remove: 'Премахни',
|
||||
rename: 'Преименувайте',
|
||||
reset: 'Нулиране',
|
||||
resetPreferences: 'Нулиране на предпочитанията',
|
||||
resetPreferencesDescription:
|
||||
@@ -311,6 +348,7 @@ export const bgTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Запазване...',
|
||||
schedulePublishFor: 'Планирано публикуване за {{title}}',
|
||||
searchBy: 'Търси по {{label}}',
|
||||
select: 'Изберете',
|
||||
selectAll: 'Избери всички {{count}} {{label}}',
|
||||
selectAllRows: 'Избери всички редове',
|
||||
selectedCount: '{{count}} {{label}} избрани',
|
||||
|
||||
@@ -175,7 +175,34 @@ export const caTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Alterna el bloc',
|
||||
uploadNewLabel: 'Puja un nou {{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Navega per carpeta',
|
||||
byFolder: 'Per Carpeta',
|
||||
deleteFolder: 'Esborra la carpeta',
|
||||
folderName: 'Nom de la Carpeta',
|
||||
folders: 'Carpetes',
|
||||
itemHasBeenMoved: "{{title}} s'ha traslladat a {{folderName}}",
|
||||
itemHasBeenMovedToRoot: "{{title}} s'ha mogut a la carpeta arrel",
|
||||
itemsMovedToFolder: "{{title}} s'ha traslladat a {{folderName}}",
|
||||
itemsMovedToRoot: "{{title}} s'ha traslladat a la carpeta arrel",
|
||||
moveFolder: 'Mou la carpeta',
|
||||
moveItemsToFolderConfirmation:
|
||||
"Estàs a punt de moure <1>{{count}} {{label}}</1> a <2>{{toFolder}}</2>. N'estàs segur?",
|
||||
moveItemsToRootConfirmation:
|
||||
'Estàs a punt de moure <1>{{count}} {{label}}</1> a la carpeta arrel. Estàs segur?',
|
||||
moveItemToFolderConfirmation:
|
||||
"Estàs a punt de moure <1>{{title}}</1> a <2>{{toFolder}}</2>. N'estàs segur?",
|
||||
moveItemToRootConfirmation:
|
||||
"Estàs a punt de moure <1>{{title}}</1> a la carpeta arrel. N'estàs segur?",
|
||||
movingFromFolder: 'Movent {{title}} de {{folderName}}',
|
||||
newFolder: 'Nova carpeta',
|
||||
noFolder: 'No hi ha carpeta',
|
||||
renameFolder: 'Anomena carpeta',
|
||||
searchByNameInFolder: 'Cerca per Nom en {{folderName}}',
|
||||
selectFolderForItem: 'Selecciona la carpeta per a {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'Nom',
|
||||
aboutToDelete: 'Estas apunt de eliminar {{label}} <1>{{title}}</1>. Estas segur?',
|
||||
aboutToDeleteCount_many: 'Estas apunt de eliminar {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'Estas apunt de eliminar {{count}} {{label}}',
|
||||
@@ -204,6 +231,7 @@ export const caTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Confirmar còpia',
|
||||
confirmDeletion: "Confirma l'eliminació",
|
||||
confirmDuplication: 'Confirma duplicacat',
|
||||
confirmMove: 'Confirmar moviment',
|
||||
confirmReindex: 'Reindexa {{collections}}?',
|
||||
confirmReindexAll: 'Reindexa totes les col·leccions?',
|
||||
confirmReindexDescription:
|
||||
@@ -261,6 +289,8 @@ export const caTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Globals',
|
||||
goBack: 'Torna enrere',
|
||||
isEditing: 'esta editant',
|
||||
item: 'element',
|
||||
items: 'articles',
|
||||
language: 'Idioma',
|
||||
lastModified: 'Última modificació',
|
||||
leaveAnyway: 'Deixa-ho de totes maneres',
|
||||
@@ -272,8 +302,14 @@ export const caTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Idiomes',
|
||||
menu: 'Menu',
|
||||
moreOptions: 'Més opcions',
|
||||
move: 'Mou-te',
|
||||
moveConfirm:
|
||||
"Està a punt de moure {{count}} {{label}} a <1>{{destination}}</1>. N'estàs segur?",
|
||||
moveCount: 'Mou {{count}} {{label}}',
|
||||
moveDown: 'Mou avall',
|
||||
moveUp: 'Move amunt',
|
||||
moving: 'En moviment',
|
||||
movingCount: 'Moure {{count}} {{label}}',
|
||||
newPassword: 'Nova contrasenya',
|
||||
next: 'Seguent',
|
||||
noDateSelected: 'Data not seleccionada',
|
||||
@@ -301,6 +337,7 @@ export const caTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Reindexa',
|
||||
reindexingAll: 'Reindexa tots el {{collections}}.',
|
||||
remove: 'Elimina',
|
||||
rename: 'Canvia el nom',
|
||||
reset: 'Restableix',
|
||||
resetPreferences: 'Restablir les preferències',
|
||||
resetPreferencesDescription:
|
||||
@@ -312,6 +349,7 @@ export const caTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Desant...',
|
||||
schedulePublishFor: 'Programa la publicacio {{title}}',
|
||||
searchBy: 'Cerca per {{label}}',
|
||||
select: 'Selecciona',
|
||||
selectAll: 'Selecciona totes les {{count}} {{label}}',
|
||||
selectAllRows: 'Selecciona totes les files',
|
||||
selectedCount: '{{count}} {{label}} seleccionats',
|
||||
|
||||
@@ -174,7 +174,34 @@ export const csTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Přepnout blok',
|
||||
uploadNewLabel: 'Nahrát nový {{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Procházet podle složek',
|
||||
byFolder: 'Podle složky',
|
||||
deleteFolder: 'Smazat složku',
|
||||
folderName: 'Název složky',
|
||||
folders: 'Složky',
|
||||
itemHasBeenMoved: '{{title}} bylo přesunuto do {{folderName}}',
|
||||
itemHasBeenMovedToRoot: '{{title}} byl přesunut do kořenové složky',
|
||||
itemsMovedToFolder: '{{title}} přesunuto do {{folderName}}',
|
||||
itemsMovedToRoot: '{{title}} byl přesunut do kořenové složky',
|
||||
moveFolder: 'Přesunout složku',
|
||||
moveItemsToFolderConfirmation:
|
||||
'Chystáte se přesunout <1>{{count}} {{label}}</1> do <2>{{toFolder}}</2>. Jste si jistý?',
|
||||
moveItemsToRootConfirmation:
|
||||
'Chystáte se přesunout <1>{{count}} {{label}}</1> do kořenové složky. Jste si jisti?',
|
||||
moveItemToFolderConfirmation:
|
||||
'Chystáte se přesunout <1>{{title}}</1> do <2>{{toFolder}}</2>. Jste si jistý?',
|
||||
moveItemToRootConfirmation:
|
||||
'Chystáte se přesunout <1>{{title}}</1> do kořenové složky. Jste si jistý?',
|
||||
movingFromFolder: 'Přesunutí {{title}} z {{folderName}}',
|
||||
newFolder: 'Nová složka',
|
||||
noFolder: 'Žádná složka',
|
||||
renameFolder: 'Přejmenovat složku',
|
||||
searchByNameInFolder: 'Vyhledat podle jména v {{folderName}}',
|
||||
selectFolderForItem: 'Vyberte složku pro {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'Jméno',
|
||||
aboutToDelete: 'Chystáte se odstranit {{label}} <1>{{title}}</1>. Jste si jisti?',
|
||||
aboutToDeleteCount_many: 'Chystáte se smazat {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'Chystáte se smazat {{count}} {{label}}',
|
||||
@@ -203,6 +230,7 @@ export const csTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Potvrzení kopie',
|
||||
confirmDeletion: 'Potvrdit odstranění',
|
||||
confirmDuplication: 'Potvrdit duplikaci',
|
||||
confirmMove: 'Potvrdit přesun',
|
||||
confirmReindex: 'Přeindexovat všechny {{collections}}?',
|
||||
confirmReindexAll: 'Přeindexovat všechny kolekce?',
|
||||
confirmReindexDescription:
|
||||
@@ -259,6 +287,8 @@ export const csTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Globální',
|
||||
goBack: 'Vrátit se',
|
||||
isEditing: 'upravuje',
|
||||
item: 'položka',
|
||||
items: 'položky',
|
||||
language: 'Jazyk',
|
||||
lastModified: 'Naposledy změněno',
|
||||
leaveAnyway: 'Přesto odejít',
|
||||
@@ -270,8 +300,14 @@ export const csTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Lokality',
|
||||
menu: 'Jídelní lístek',
|
||||
moreOptions: 'Více možností',
|
||||
move: 'Pohnout',
|
||||
moveConfirm:
|
||||
'Chystáte se přesunout {{count}} {{label}} do <1>{{destination}}</1>. Jste si jisti?',
|
||||
moveCount: 'Přesuňte {{count}} {{label}}',
|
||||
moveDown: 'Posunout dolů',
|
||||
moveUp: 'Posunout nahoru',
|
||||
moving: 'Přesun',
|
||||
movingCount: 'Přesunout {{count}} {{label}}',
|
||||
newPassword: 'Nové heslo',
|
||||
next: 'Další',
|
||||
noDateSelected: 'Nebylo vybráno žádné datum',
|
||||
@@ -299,6 +335,7 @@ export const csTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Přeindexovat',
|
||||
reindexingAll: 'Přeindexování všech {{collections}}.',
|
||||
remove: 'Odstranit',
|
||||
rename: 'Přejmenovat',
|
||||
reset: 'Resetovat',
|
||||
resetPreferences: 'Obnovit nastavení',
|
||||
resetPreferencesDescription: 'Toto obnoví všechna vaše nastavení na výchozí hodnoty.',
|
||||
@@ -309,6 +346,7 @@ export const csTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Ukládání...',
|
||||
schedulePublishFor: 'Naplánovat publikaci pro {{title}}',
|
||||
searchBy: 'Vyhledat podle {{label}}',
|
||||
select: 'Vyberte',
|
||||
selectAll: 'Vybrat vše {{count}} {{label}}',
|
||||
selectAllRows: 'Vyberte všechny řádky',
|
||||
selectedCount: 'Vybráno {{count}} {{label}}',
|
||||
|
||||
@@ -173,7 +173,33 @@ export const daTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Skift blok',
|
||||
uploadNewLabel: 'Upload ny {{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Gennemse efter Mappe',
|
||||
byFolder: 'Ved Mappe',
|
||||
deleteFolder: 'Slet mappe',
|
||||
folderName: 'Mappenavn',
|
||||
folders: 'Mapper',
|
||||
itemHasBeenMoved: '{{title}} er blevet flyttet til {{folderName}}',
|
||||
itemHasBeenMovedToRoot: '{{title}} er blevet flyttet til rodmappen',
|
||||
itemsMovedToFolder: '{{title}} flyttet til {{folderName}}',
|
||||
itemsMovedToRoot: '{{title}} flyttet til rod-mappen',
|
||||
moveFolder: 'Flyt Mappe',
|
||||
moveItemsToFolderConfirmation:
|
||||
'Du er ved at flytte <1>{{count}} {{label}}</1> til <2>{{toFolder}}</2>. Er du sikker?',
|
||||
moveItemsToRootConfirmation:
|
||||
'Du er ved at flytte <1>{{count}} {{label}}</1> til rodmappen. Er du sikker?',
|
||||
moveItemToFolderConfirmation:
|
||||
'Du er ved at flytte <1>{{title}}</1> til <2>{{toFolder}}</2>. Er du sikker?',
|
||||
moveItemToRootConfirmation: 'Du er ved at flytte <1>{{title}}</1> til rodmappen. Er du sikker?',
|
||||
movingFromFolder: 'Flytter {{title}} fra {{folderName}}',
|
||||
newFolder: 'Ny Mappe',
|
||||
noFolder: 'Ingen Mappe',
|
||||
renameFolder: 'Omdøb mappe',
|
||||
searchByNameInFolder: 'Søg efter Navn i {{folderName}}',
|
||||
selectFolderForItem: 'Vælg mappe til {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'Navn',
|
||||
aboutToDelete: 'Du er ved at slette {{label}} <1>{{title}}</1>. Er du sikker?',
|
||||
aboutToDeleteCount_many: 'Du er ved at slette {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'Du er ved at slette {{count}} {{label}}',
|
||||
@@ -203,6 +229,7 @@ export const daTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Bekræft kopi',
|
||||
confirmDeletion: 'Bekræft sletning',
|
||||
confirmDuplication: 'Bekræft duplikering',
|
||||
confirmMove: 'Bekræft flytning',
|
||||
confirmReindex: 'Genindeksér alle {{collections}}?',
|
||||
confirmReindexAll: 'Genindeksér alle samlinger?',
|
||||
confirmReindexDescription:
|
||||
@@ -259,6 +286,8 @@ export const daTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Globale',
|
||||
goBack: 'Gå tilbage',
|
||||
isEditing: 'redigerer',
|
||||
item: 'vare',
|
||||
items: 'elementer',
|
||||
language: 'Sprog',
|
||||
lastModified: 'Sidst ændret',
|
||||
leaveAnyway: 'Forlad alligevel',
|
||||
@@ -270,8 +299,14 @@ export const daTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Lokaliteter',
|
||||
menu: 'Menu',
|
||||
moreOptions: 'Flere muligheder',
|
||||
move: 'Flyt',
|
||||
moveConfirm:
|
||||
'Du er ved at flytte {{count}} {{label}} til <1>{{destination}}</1>. Er du sikker?',
|
||||
moveCount: 'Flyt {{count}} {{label}}',
|
||||
moveDown: 'Ryk ned',
|
||||
moveUp: 'Ryk op',
|
||||
moving: 'Flytter',
|
||||
movingCount: 'Flytter {{count}} {{label}}',
|
||||
newPassword: 'Ny adgangskode',
|
||||
next: 'Næste',
|
||||
noDateSelected: 'Ingen dato valgt',
|
||||
@@ -299,6 +334,7 @@ export const daTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Genindekser',
|
||||
reindexingAll: 'Genindekserer alle {{collections}}.',
|
||||
remove: 'Fjern',
|
||||
rename: 'Omdøb',
|
||||
reset: 'Nulstil',
|
||||
resetPreferences: 'Nulstil præferencer',
|
||||
resetPreferencesDescription:
|
||||
@@ -310,6 +346,7 @@ export const daTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Gemmer...',
|
||||
schedulePublishFor: 'Planlæg offentliggørelse for {{title}}',
|
||||
searchBy: 'Søg efter {{label}}',
|
||||
select: 'Vælg',
|
||||
selectAll: 'Vælg alle {{count}} {{label}}',
|
||||
selectAllRows: 'Vælg alle rækker',
|
||||
selectedCount: '{{count}} {{label}} valgt',
|
||||
|
||||
@@ -120,7 +120,8 @@ export const deTranslations: DefaultTranslationsObject = {
|
||||
unauthorized: 'Nicht autorisiert - du musst angemeldet sein, um diese Anfrage zu stellen.',
|
||||
unauthorizedAdmin: 'Nicht autorisiert, dieser Benutzer hat keinen Zugriff auf das Admin-Panel.',
|
||||
unknown: 'Ein unbekannter Fehler ist aufgetreten.',
|
||||
unPublishingDocument: 'Bei der Aufhebung der Veröffentlichung dieses Dokuments ist ein Fehler aufgetreten.',
|
||||
unPublishingDocument:
|
||||
'Bei der Aufhebung der Veröffentlichung dieses Dokuments ist ein Fehler aufgetreten.',
|
||||
unspecific: 'Ein Fehler ist aufgetreten.',
|
||||
unverifiedEmail: 'Bitte verifiziere deine E-Mail, bevor du dich anmeldest.',
|
||||
userEmailAlreadyRegistered: 'Ein Benutzer mit der angegebenen E-Mail ist bereits registriert.',
|
||||
@@ -178,7 +179,34 @@ export const deTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Block umschalten',
|
||||
uploadNewLabel: '{{label}} neu hochladen',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Durchsuchen nach Ordner',
|
||||
byFolder: 'Nach Ordner',
|
||||
deleteFolder: 'Ordner löschen',
|
||||
folderName: 'Ordnername',
|
||||
folders: 'Ordner',
|
||||
itemHasBeenMoved: '{{title}} wurde in {{folderName}} verschoben.',
|
||||
itemHasBeenMovedToRoot: '{{title}} wurde in den Hauptordner verschoben',
|
||||
itemsMovedToFolder: '{{title}} wurde in {{folderName}} verschoben.',
|
||||
itemsMovedToRoot: '{{title}} wurde in den Stammordner verschoben',
|
||||
moveFolder: 'Ordner verschieben',
|
||||
moveItemsToFolderConfirmation:
|
||||
'Sie sind dabei, <1>{{count}} {{label}}</1> nach <2>{{toFolder}}</2> zu verschieben. Sind Sie sicher?',
|
||||
moveItemsToRootConfirmation:
|
||||
'Sie sind dabei, <1>{{count}} {{label}}</1> in den Hauptordner zu verschieben. Sind Sie sicher?',
|
||||
moveItemToFolderConfirmation:
|
||||
'Sie sind dabei, <1>{{title}}</1> zu <2>{{toFolder}}</2> zu verschieben. Sind Sie sicher?',
|
||||
moveItemToRootConfirmation:
|
||||
'Sie sind dabei, <1>{{title}}</1> in den Hauptordner zu verschieben. Sind Sie sicher?',
|
||||
movingFromFolder: 'Verschieben von {{title}} aus {{folderName}}',
|
||||
newFolder: 'Neuer Ordner',
|
||||
noFolder: 'Kein Ordner',
|
||||
renameFolder: 'Ordner umbenennen',
|
||||
searchByNameInFolder: 'Suche nach Name in {{folderName}}',
|
||||
selectFolderForItem: 'Wählen Sie den Ordner für {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'Name',
|
||||
aboutToDelete: 'Du bist dabei {{label}} <1>{{title}}</1> zu löschen. Bist du dir sicher?',
|
||||
aboutToDeleteCount_many: 'Du bist dabei, {{count}} {{label}} zu löschen',
|
||||
aboutToDeleteCount_one: 'Du bist dabei, {{count}} {{label}} zu löschen',
|
||||
@@ -208,6 +236,7 @@ export const deTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Kopie bestätigen',
|
||||
confirmDeletion: 'Löschen bestätigen',
|
||||
confirmDuplication: 'Duplizieren bestätigen',
|
||||
confirmMove: 'Bestätigen Sie den Umzug.',
|
||||
confirmReindex: 'Alle {{collections}} neu indizieren?',
|
||||
confirmReindexAll: 'Alle Sammlungen neu indizieren?',
|
||||
confirmReindexDescription:
|
||||
@@ -265,6 +294,8 @@ export const deTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Globale Dokumente',
|
||||
goBack: 'Zurück',
|
||||
isEditing: 'bearbeitet gerade',
|
||||
item: 'Artikel',
|
||||
items: 'Artikel',
|
||||
language: 'Sprache',
|
||||
lastModified: 'Zuletzt geändert',
|
||||
leaveAnyway: 'Trotzdem verlassen',
|
||||
@@ -276,8 +307,14 @@ export const deTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Sprachen',
|
||||
menu: 'Menü',
|
||||
moreOptions: 'Mehr Optionen',
|
||||
move: 'Bewegen',
|
||||
moveConfirm:
|
||||
'Sie sind dabei {{count}} {{label}} nach <1>{{destination}}</1> zu verschieben. Sind Sie sicher?',
|
||||
moveCount: 'Bewegen Sie {{count}} {{label}}',
|
||||
moveDown: 'Nach unten bewegen',
|
||||
moveUp: 'Nach oben bewegen',
|
||||
moving: 'Umziehen',
|
||||
movingCount: 'Verschieben {{count}} {{label}}',
|
||||
newPassword: 'Neues Passwort',
|
||||
next: 'Nächste',
|
||||
noDateSelected: 'Kein Datum ausgewählt',
|
||||
@@ -305,6 +342,7 @@ export const deTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Neuindizieren',
|
||||
reindexingAll: 'Alle {{collections}} werden neu indiziert.',
|
||||
remove: 'Entfernen',
|
||||
rename: 'Umbenennen',
|
||||
reset: 'Zurücksetzen',
|
||||
resetPreferences: 'Präferenzen zurücksetzen',
|
||||
resetPreferencesDescription: 'Alle Präferenzen werden auf die Standardwerte zurückgesetzt.',
|
||||
@@ -315,13 +353,15 @@ export const deTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Speichern...',
|
||||
schedulePublishFor: 'Plane die Veröffentlichung für {{title}}',
|
||||
searchBy: 'Suche nach {{label}}',
|
||||
select: 'Auswählen',
|
||||
selectAll: 'Alle {{count}} {{label}} auswählen',
|
||||
selectAllRows: 'Alle Zeilen auswählen',
|
||||
selectedCount: '{{count}} {{label}} ausgewählt',
|
||||
selectLabel: 'Wähle {{label}}',
|
||||
selectValue: 'Wert auswählen',
|
||||
showAllLabel: 'Zeige alle {{label}}',
|
||||
sorryNotFound: 'Es tut uns leid, aber wir haben nichts gefunden, was deiner Anfrage entspricht.',
|
||||
sorryNotFound:
|
||||
'Es tut uns leid, aber wir haben nichts gefunden, was deiner Anfrage entspricht.',
|
||||
sort: 'Sortieren',
|
||||
sortByLabelDirection: 'Sortieren nach {{label}} {{direction}}',
|
||||
stayOnThisPage: 'Auf dieser Seite bleiben',
|
||||
|
||||
@@ -174,7 +174,34 @@ export const enTranslations = {
|
||||
toggleBlock: 'Toggle block',
|
||||
uploadNewLabel: 'Upload new {{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Browse by Folder',
|
||||
byFolder: 'By Folder',
|
||||
deleteFolder: 'Delete Folder',
|
||||
folderName: 'Folder Name',
|
||||
folders: 'Folders',
|
||||
itemHasBeenMoved: '{{title}} has been moved to {{folderName}}',
|
||||
itemHasBeenMovedToRoot: '{{title}} has been moved to the root folder',
|
||||
itemsMovedToFolder: '{{title}} moved to {{folderName}}',
|
||||
itemsMovedToRoot: '{{title}} moved to the root folder',
|
||||
moveFolder: 'Move Folder',
|
||||
moveItemsToFolderConfirmation:
|
||||
'You are about to move <1>{{count}} {{label}}</1> to <2>{{toFolder}}</2>. Are you sure?',
|
||||
moveItemsToRootConfirmation:
|
||||
'You are about to move <1>{{count}} {{label}}</1> to the root folder. Are you sure?',
|
||||
moveItemToFolderConfirmation:
|
||||
'You are about to move <1>{{title}}</1> to <2>{{toFolder}}</2>. Are you sure?',
|
||||
moveItemToRootConfirmation:
|
||||
'You are about to move <1>{{title}}</1> to the root folder. Are you sure?',
|
||||
movingFromFolder: 'Moving {{title}} from {{fromFolder}}',
|
||||
newFolder: 'New Folder',
|
||||
noFolder: 'No Folder',
|
||||
renameFolder: 'Rename Folder',
|
||||
searchByNameInFolder: 'Search by Name in {{folderName}}',
|
||||
selectFolderForItem: 'Select folder for {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'Name',
|
||||
aboutToDelete: 'You are about to delete the {{label}} <1>{{title}}</1>. Are you sure?',
|
||||
aboutToDeleteCount_many: 'You are about to delete {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'You are about to delete {{count}} {{label}}',
|
||||
@@ -204,6 +231,7 @@ export const enTranslations = {
|
||||
confirmCopy: 'Confirm copy',
|
||||
confirmDeletion: 'Confirm deletion',
|
||||
confirmDuplication: 'Confirm duplication',
|
||||
confirmMove: 'Confirm move',
|
||||
confirmReindex: 'Reindex all {{collections}}?',
|
||||
confirmReindexAll: 'Reindex all collections?',
|
||||
confirmReindexDescription:
|
||||
@@ -261,6 +289,8 @@ export const enTranslations = {
|
||||
globals: 'Globals',
|
||||
goBack: 'Go back',
|
||||
isEditing: 'is editing',
|
||||
item: 'item',
|
||||
items: 'items',
|
||||
language: 'Language',
|
||||
lastModified: 'Last Modified',
|
||||
leaveAnyway: 'Leave anyway',
|
||||
@@ -272,8 +302,14 @@ export const enTranslations = {
|
||||
locales: 'Locales',
|
||||
menu: 'Menu',
|
||||
moreOptions: 'More options',
|
||||
move: 'Move',
|
||||
moveConfirm:
|
||||
'You are about to move {{count}} {{label}} to <1>{{destination}}</1>. Are you sure?',
|
||||
moveCount: 'Move {{count}} {{label}}',
|
||||
moveDown: 'Move Down',
|
||||
moveUp: 'Move Up',
|
||||
moving: 'Moving',
|
||||
movingCount: 'Moving {{count}} {{label}}',
|
||||
newPassword: 'New Password',
|
||||
next: 'Next',
|
||||
noDateSelected: 'No date selected',
|
||||
@@ -301,6 +337,7 @@ export const enTranslations = {
|
||||
reindex: 'Reindex',
|
||||
reindexingAll: 'Reindexing all {{collections}}.',
|
||||
remove: 'Remove',
|
||||
rename: 'Rename',
|
||||
reset: 'Reset',
|
||||
resetPreferences: 'Reset Preferences',
|
||||
resetPreferencesDescription:
|
||||
@@ -312,6 +349,7 @@ export const enTranslations = {
|
||||
saving: 'Saving...',
|
||||
schedulePublishFor: 'Schedule publish for {{title}}',
|
||||
searchBy: 'Search by {{label}}',
|
||||
select: 'Select',
|
||||
selectAll: 'Select all {{count}} {{label}}',
|
||||
selectAllRows: 'Select all rows',
|
||||
selectedCount: '{{count}} {{label}} selected',
|
||||
|
||||
@@ -178,7 +178,34 @@ export const esTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Alternar bloque',
|
||||
uploadNewLabel: 'Subir nuevo {{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Explorar por Carpeta',
|
||||
byFolder: 'Por Carpeta',
|
||||
deleteFolder: 'Eliminar Carpeta',
|
||||
folderName: 'Nombre de la Carpeta',
|
||||
folders: 'Carpetas',
|
||||
itemHasBeenMoved: '{{title}} ha sido trasladado a {{folderName}}',
|
||||
itemHasBeenMovedToRoot: '{{title}} ha sido movido a la carpeta raíz.',
|
||||
itemsMovedToFolder: '{{title}} movido a {{folderName}}',
|
||||
itemsMovedToRoot: '{{title}} se movió a la carpeta raíz',
|
||||
moveFolder: 'Mover Carpeta',
|
||||
moveItemsToFolderConfirmation:
|
||||
'Estás a punto de mover <1>{{count}} {{label}}</1> a <2>{{toFolder}}</2>. ¿Estás seguro?',
|
||||
moveItemsToRootConfirmation:
|
||||
'Está a punto de mover <1>{{count}} {{label}}</1> a la carpeta raíz. ¿Está seguro?',
|
||||
moveItemToFolderConfirmation:
|
||||
'Está a punto de mover <1>{{title}}</1> a <2>{{toFolder}}</2>. ¿Está seguro?',
|
||||
moveItemToRootConfirmation:
|
||||
'Está a punto de mover <1>{{title}}</1> a la carpeta raíz. ¿Está seguro?',
|
||||
movingFromFolder: 'Moviendo {{title}} de {{folderName}}',
|
||||
newFolder: 'Nueva Carpeta',
|
||||
noFolder: 'Sin Carpeta',
|
||||
renameFolder: 'Renombrar carpeta',
|
||||
searchByNameInFolder: 'Buscar por nombre en {{folderName}}',
|
||||
selectFolderForItem: 'Seleccione la carpeta para {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'Nombre',
|
||||
aboutToDelete: 'Estás por eliminar el {{label}} <1>{{title}}</1>. ¿Estás seguro?',
|
||||
aboutToDeleteCount_many: 'Está a punto de eliminar {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'Está a punto de eliminar {{count}} {{label}}',
|
||||
@@ -208,6 +235,7 @@ export const esTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Confirmar copia',
|
||||
confirmDeletion: 'Confirmar eliminación',
|
||||
confirmDuplication: 'Confirmar duplicado',
|
||||
confirmMove: 'Confirmar movimiento',
|
||||
confirmReindex: '¿Reindexar todas las {{collections}}?',
|
||||
confirmReindexAll: '¿Reindexar todas las colecciones?',
|
||||
confirmReindexDescription:
|
||||
@@ -265,6 +293,8 @@ export const esTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Globales',
|
||||
goBack: 'Volver',
|
||||
isEditing: 'está editando',
|
||||
item: 'artículo',
|
||||
items: 'artículos',
|
||||
language: 'Idioma',
|
||||
lastModified: 'Última modificación',
|
||||
leaveAnyway: 'Salir de todos modos',
|
||||
@@ -276,8 +306,14 @@ export const esTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Locales',
|
||||
menu: 'Menú',
|
||||
moreOptions: 'Más opciones',
|
||||
move: 'Mover',
|
||||
moveConfirm:
|
||||
'Estás a punto de mover {{count}} {{label}} a <1>{{destination}}</1>. ¿Estás seguro?',
|
||||
moveCount: 'Mueva {{count}} {{label}}',
|
||||
moveDown: 'Mover abajo',
|
||||
moveUp: 'Mover arriba',
|
||||
moving: 'Mudanza',
|
||||
movingCount: 'Moviendo {{count}} {{label}}',
|
||||
newPassword: 'Nueva contraseña',
|
||||
next: 'Siguiente',
|
||||
noDateSelected: 'No se seleccionó ninguna fecha',
|
||||
@@ -305,6 +341,7 @@ export const esTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Reindexar',
|
||||
reindexingAll: 'Reindexando todas las {{collections}}.',
|
||||
remove: 'Remover',
|
||||
rename: 'Renombrar',
|
||||
reset: 'Reiniciar',
|
||||
resetPreferences: 'Restablecer preferencias',
|
||||
resetPreferencesDescription:
|
||||
@@ -316,6 +353,7 @@ export const esTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Guardando...',
|
||||
schedulePublishFor: 'Programar publicación para {{title}}',
|
||||
searchBy: 'Buscar por {{label}}',
|
||||
select: 'Seleccionar',
|
||||
selectAll: 'Seleccionar todo {{count}} {{label}}',
|
||||
selectAllRows: 'Selecciona todas las filas',
|
||||
selectedCount: '{{count}} {{label}} seleccionado',
|
||||
|
||||
@@ -173,7 +173,34 @@ export const etTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Lülita plokk',
|
||||
uploadNewLabel: 'Lae üles uus {{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Sirvi kausta järgi',
|
||||
byFolder: 'Kausta järgi',
|
||||
deleteFolder: 'Kustuta kaust',
|
||||
folderName: 'Kausta nimi',
|
||||
folders: 'Kaustad',
|
||||
itemHasBeenMoved: '{{title}} on teisaldatud kausta {{folderName}}',
|
||||
itemHasBeenMovedToRoot: '{{title}} on teisaldatud juurkausta',
|
||||
itemsMovedToFolder: '{{title}} viidi üle kausta {{folderName}}',
|
||||
itemsMovedToRoot: '{{title}} on teisaldatud juurkausta.',
|
||||
moveFolder: 'Liiguta kausta',
|
||||
moveItemsToFolderConfirmation:
|
||||
'Te olete umbes kolimas <1>{{count}} {{label}}</1> kausta <2>{{toFolder}}</2>. Kas olete kindel?',
|
||||
moveItemsToRootConfirmation:
|
||||
'Te olete peaaegu teisaldamas <1>{{count}} {{label}}</1> juurkausta. Kas olete kindel?',
|
||||
moveItemToFolderConfirmation:
|
||||
'Te olete umbes liigutamas <1>{{title}}</1> kausta <2>{{toFolder}}</2>. Kas olete kindel?',
|
||||
moveItemToRootConfirmation:
|
||||
'Te olete peaaegu liigutanud <1>{{title}}</1> juurkausta. Kas olete kindel?',
|
||||
movingFromFolder: 'Liigutan {{title}} kaustast {{folderName}}',
|
||||
newFolder: 'Uus kaust',
|
||||
noFolder: 'Pole kausta',
|
||||
renameFolder: 'Nimeta kaust ümber',
|
||||
searchByNameInFolder: 'Otsi nime järgi kaustas {{folderName}}',
|
||||
selectFolderForItem: 'Valige kaust {{title}} jaoks',
|
||||
},
|
||||
general: {
|
||||
name: 'Nimi',
|
||||
aboutToDelete: 'Olete kustutamas {{label}} <1>{{title}}</1>. Olete kindel?',
|
||||
aboutToDeleteCount_many: 'Olete kustutamas {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'Olete kustutamas {{count}} {{label}}',
|
||||
@@ -202,6 +229,7 @@ export const etTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Kinnita kopeerimine',
|
||||
confirmDeletion: 'Kinnita kustutamine',
|
||||
confirmDuplication: 'Kinnita dubleerimine',
|
||||
confirmMove: 'Kinnita liikumine',
|
||||
confirmReindex: 'Indekseeri uuesti kõik {{collections}}?',
|
||||
confirmReindexAll: 'Indekseeri uuesti kõik kollektsioonid?',
|
||||
confirmReindexDescription:
|
||||
@@ -258,6 +286,8 @@ export const etTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Globaalsed',
|
||||
goBack: 'Mine tagasi',
|
||||
isEditing: 'muudab',
|
||||
item: 'üksus',
|
||||
items: 'esemed',
|
||||
language: 'Keel',
|
||||
lastModified: 'Viimati muudetud',
|
||||
leaveAnyway: 'Lahku ikkagi',
|
||||
@@ -269,8 +299,13 @@ export const etTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Keeled',
|
||||
menu: 'Menüü',
|
||||
moreOptions: 'Rohkem valikuid',
|
||||
move: 'Liiguta',
|
||||
moveConfirm: 'Te olete liikumas {{count}} {{label}} <1>{{destination}}</1>. Kas olete kindel?',
|
||||
moveCount: 'Teisalda {{count}} {{label}}',
|
||||
moveDown: 'Liiguta alla',
|
||||
moveUp: 'Liiguta üles',
|
||||
moving: 'Liikumine',
|
||||
movingCount: 'Liigutan {{count}} {{label}}',
|
||||
newPassword: 'Uus parool',
|
||||
next: 'Järgmine',
|
||||
noDateSelected: 'Kuupäeva ei ole valitud',
|
||||
@@ -298,6 +333,7 @@ export const etTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Indekseeri uuesti',
|
||||
reindexingAll: 'Indekseerin uuesti kõik {{collections}}.',
|
||||
remove: 'Eemalda',
|
||||
rename: 'Nimeta ümber',
|
||||
reset: 'Lähtesta',
|
||||
resetPreferences: 'Lähtesta eelistused',
|
||||
resetPreferencesDescription: 'See lähtestab kõik teie eelistused vaikeväärtustele.',
|
||||
@@ -308,6 +344,7 @@ export const etTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Salvestamine...',
|
||||
schedulePublishFor: 'Planeeri avaldamine {{title}} jaoks',
|
||||
searchBy: 'Otsi {{label}} järgi',
|
||||
select: 'Vali',
|
||||
selectAll: 'Vali kõik {{count}} {{label}}',
|
||||
selectAllRows: 'Vali kõik read',
|
||||
selectedCount: '{{count}} {{label}} valitud',
|
||||
|
||||
@@ -172,7 +172,34 @@ export const faTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'کارگذاری بلوک',
|
||||
uploadNewLabel: 'بارگذاری تازه {{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'مرور بر اساس پوشه',
|
||||
byFolder: 'بر اساس پوشه',
|
||||
deleteFolder: 'حذف پوشه',
|
||||
folderName: 'نام پوشه',
|
||||
folders: 'پوشهها',
|
||||
itemHasBeenMoved: '{{title}} به {{folderName}} منتقل شده است.',
|
||||
itemHasBeenMovedToRoot: '{{title}} به پوشه اصلی انتقال یافته است.',
|
||||
itemsMovedToFolder: '{{title}} به {{folderName}} منتقل شد.',
|
||||
itemsMovedToRoot: '{{title}} به پوشهی ریشه انتقال یافت',
|
||||
moveFolder: 'انتقال پوشه',
|
||||
moveItemsToFolderConfirmation:
|
||||
'شما در حال جابجایی <1>{{count}} {{label}}</1> به <2>{{toFolder}}</2> هستید. آیا مطمئن هستید؟',
|
||||
moveItemsToRootConfirmation:
|
||||
'شما در حال حاضر در صدد انتقال <1>{{count}} {{label}}</1> به پوشهی اصلی هستید. آیا مطمئنید؟',
|
||||
moveItemToFolderConfirmation:
|
||||
'شما در حال حاضر در صدد هستید <1>{{title}}</1> را به <2>{{toFolder}}</2> منتقل کنید. آیا مطمئن هستید؟',
|
||||
moveItemToRootConfirmation:
|
||||
'شما در حال حاضر در مورد انتقال <1>{{title}}</1> به پوشه ریشه هستید. آیا مطمئن هستید؟',
|
||||
movingFromFolder: 'انتقال {{title}} از {{folderName}}',
|
||||
newFolder: 'پوشه جدید',
|
||||
noFolder: 'بدون پوشه',
|
||||
renameFolder: 'تغییر نام پوشه',
|
||||
searchByNameInFolder: 'جستجو بر اساس نام در {{folderName}}',
|
||||
selectFolderForItem: 'انتخاب پوشه برای {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'نام',
|
||||
aboutToDelete: 'شما در حال پاک کردن {{label}} <1>{{title}}</1> هستید. اطمینان دارید؟',
|
||||
aboutToDeleteCount_many: 'شما در حال پاک کردن {{count}} تعداد {{label}} هستید',
|
||||
aboutToDeleteCount_one: 'شما در حال پاک کردن {{count}} تعداد {{label}} هستید',
|
||||
@@ -202,6 +229,7 @@ export const faTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'تأیید کپی',
|
||||
confirmDeletion: 'تأئید عملیات حذف',
|
||||
confirmDuplication: 'تأئید رونوشت',
|
||||
confirmMove: 'تأیید حرکت',
|
||||
confirmReindex: 'آیا همه {{collections}} بازایندکس شوند؟',
|
||||
confirmReindexAll: 'آیا همه مجموعهها بازایندکس شوند؟',
|
||||
confirmReindexDescription:
|
||||
@@ -259,6 +287,8 @@ export const faTranslations: DefaultTranslationsObject = {
|
||||
globals: 'سراسری',
|
||||
goBack: 'برگشت',
|
||||
isEditing: 'در حال ویرایش است',
|
||||
item: 'مورد',
|
||||
items: 'موارد',
|
||||
language: 'زبان',
|
||||
lastModified: 'آخرین نگارش',
|
||||
leaveAnyway: 'به هر حال ترک کن',
|
||||
@@ -270,8 +300,14 @@ export const faTranslations: DefaultTranslationsObject = {
|
||||
locales: 'زبانها',
|
||||
menu: 'منو',
|
||||
moreOptions: 'گزینههای بیشتر',
|
||||
move: 'حرکت کنید',
|
||||
moveConfirm:
|
||||
'شما در حال انتقال {{count}} {{label}} به <1>{{destination}}</1> هستید. آیا مطمئن هستید؟',
|
||||
moveCount: 'انتقال {{count}} {{label}}',
|
||||
moveDown: 'حرکت به پایین',
|
||||
moveUp: 'حرکت به بالا',
|
||||
moving: 'در حال حرکت',
|
||||
movingCount: 'انتقال {{count}} {{label}}',
|
||||
newPassword: 'گذرواژه تازه',
|
||||
next: 'بعدی',
|
||||
noDateSelected: 'هیچ تاریخی انتخاب نشده است',
|
||||
@@ -299,6 +335,7 @@ export const faTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'بازنمایهسازی',
|
||||
reindexingAll: 'در حال بازایندکس همه {{collections}}.',
|
||||
remove: 'برداشتن',
|
||||
rename: 'تغییر نام',
|
||||
reset: 'بازنشانی',
|
||||
resetPreferences: 'بازنشانی تنظیمات',
|
||||
resetPreferencesDescription: 'این تمام تنظیمات شما را به تنظیمات پیشفرض بازنشانی خواهد کرد.',
|
||||
@@ -309,6 +346,7 @@ export const faTranslations: DefaultTranslationsObject = {
|
||||
saving: 'در حال ذخیره...',
|
||||
schedulePublishFor: 'برنامهریزی انتشار برای {{عنوان}}',
|
||||
searchBy: 'جستجو بر اساس {{label}}',
|
||||
select: 'انتخاب کنید',
|
||||
selectAll: 'انتخاب همه {{count}} {{label}}',
|
||||
selectAllRows: 'انتخاب تمام سطرها',
|
||||
selectedCount: '{{count}} {{label}} انتخاب شد',
|
||||
|
||||
@@ -180,7 +180,34 @@ export const frTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Bloc bascule',
|
||||
uploadNewLabel: 'Téléverser un(e) nouveau ou nouvelle {{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Parcourir par Dossier',
|
||||
byFolder: 'Par Dossier',
|
||||
deleteFolder: 'Supprimer le dossier',
|
||||
folderName: 'Nom du dossier',
|
||||
folders: 'Dossiers',
|
||||
itemHasBeenMoved: '{{title}} a été déplacé vers {{folderName}}',
|
||||
itemHasBeenMovedToRoot: '{{title}} a été déplacé dans le dossier racine',
|
||||
itemsMovedToFolder: '{{title}} déplacé vers {{folderName}}',
|
||||
itemsMovedToRoot: '{{title}} déplacé vers le dossier racine',
|
||||
moveFolder: 'Déplacer le dossier',
|
||||
moveItemsToFolderConfirmation:
|
||||
'Vous êtes sur le point de déplacer <1>{{count}} {{label}}</1> vers <2>{{toFolder}}</2>. Êtes-vous sûr ?',
|
||||
moveItemsToRootConfirmation:
|
||||
'Vous êtes sur le point de déplacer <1>{{count}} {{label}}</1> vers le dossier racine. Êtes-vous sûr ?',
|
||||
moveItemToFolderConfirmation:
|
||||
'Vous êtes sur le point de déplacer <1>{{title}}</1> dans <2>{{toFolder}}</2>. Êtes-vous sûr ?',
|
||||
moveItemToRootConfirmation:
|
||||
'Vous êtes sur le point de déplacer <1>{{title}}</1> vers le dossier racine. Êtes-vous sûr ?',
|
||||
movingFromFolder: 'Déplacement de {{title}} de {{folderName}}',
|
||||
newFolder: 'Nouveau Dossier',
|
||||
noFolder: 'Pas de dossier',
|
||||
renameFolder: 'Renommer le dossier',
|
||||
searchByNameInFolder: 'Recherche par nom dans {{folderName}}',
|
||||
selectFolderForItem: 'Sélectionnez le dossier pour {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'Nom',
|
||||
aboutToDelete:
|
||||
'Vous êtes sur le point de supprimer ce ou cette {{label}} <1>{{title}}</1>. Êtes-vous sûr ?',
|
||||
aboutToDeleteCount_many: 'Vous êtes sur le point de supprimer {{count}} {{label}}',
|
||||
@@ -211,6 +238,7 @@ export const frTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Confirmer la copie',
|
||||
confirmDeletion: 'Confirmer la suppression',
|
||||
confirmDuplication: 'Confirmer la duplication',
|
||||
confirmMove: 'Confirmez le déplacement',
|
||||
confirmReindex: 'Réindexer toutes les {{collections}} ?',
|
||||
confirmReindexAll: 'Réindexer toutes les collections ?',
|
||||
confirmReindexDescription:
|
||||
@@ -268,6 +296,8 @@ export const frTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Globals(es)',
|
||||
goBack: 'Retourner',
|
||||
isEditing: 'est en train de modifier',
|
||||
item: 'article',
|
||||
items: 'articles',
|
||||
language: 'Langue',
|
||||
lastModified: 'Dernière modification',
|
||||
leaveAnyway: 'Quitter quand même',
|
||||
@@ -279,8 +309,14 @@ export const frTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Paramètres régionaux',
|
||||
menu: 'Menu',
|
||||
moreOptions: "Plus d'options",
|
||||
move: 'Déplacez-vous',
|
||||
moveConfirm:
|
||||
'Vous êtes sur le point de déplacer {{count}} {{label}} vers <1>{{destination}}</1>. Êtes-vous sûr ?',
|
||||
moveCount: 'Déplacez {{count}} {{label}}',
|
||||
moveDown: 'Déplacer vers le bas',
|
||||
moveUp: 'Déplacer vers le haut',
|
||||
moving: 'Déménagement',
|
||||
movingCount: 'Déplacement de {{count}} {{label}}',
|
||||
newPassword: 'Nouveau mot de passe',
|
||||
next: 'Prochain',
|
||||
noDateSelected: 'Aucune date sélectionnée',
|
||||
@@ -308,6 +344,7 @@ export const frTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Réindexer',
|
||||
reindexingAll: 'Réindexation de toutes les {{collections}}.',
|
||||
remove: 'Retirer',
|
||||
rename: 'Renommer',
|
||||
reset: 'Réinitialiser',
|
||||
resetPreferences: 'Réinitialiser les préférences',
|
||||
resetPreferencesDescription:
|
||||
@@ -319,6 +356,7 @@ export const frTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Sauvegarde en cours...',
|
||||
schedulePublishFor: 'Programmer la publication pour {{titre}}',
|
||||
searchBy: 'Rechercher par {{label}}',
|
||||
select: 'Sélectionner',
|
||||
selectAll: 'Tout sélectionner {{count}} {{label}}',
|
||||
selectAllRows: 'Sélectionnez toutes les lignes',
|
||||
selectedCount: '{{count}} {{label}} sélectionné',
|
||||
|
||||
@@ -170,7 +170,33 @@ export const heTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'החלף בלוק',
|
||||
uploadNewLabel: 'העלאת {{label}} חדשה',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'עיין לפי תיקייה',
|
||||
byFolder: 'לפי תיקייה',
|
||||
deleteFolder: 'מחק תיקייה',
|
||||
folderName: 'שם תיקייה',
|
||||
folders: 'תיקיות',
|
||||
itemHasBeenMoved: '"{{title}}" הועבר ל- "{{folderName}}"',
|
||||
itemHasBeenMovedToRoot: '"{{title}}" הועבר לתיקיית השורש',
|
||||
itemsMovedToFolder: '{{title}} הועבר אל {{folderName}}',
|
||||
itemsMovedToRoot: '"{{title}}" הועבר לתיקייה הראשית',
|
||||
moveFolder: 'העבר תיקייה',
|
||||
moveItemsToFolderConfirmation:
|
||||
'אתה עומד להעביר <1>{{count}} {{label}}</1> אל <2>{{toFolder}}</2>. האם אתה בטוח?',
|
||||
moveItemsToRootConfirmation:
|
||||
'אתה עומד להעביר <1>{{count}} {{label}}</1> לתיקייה הראשית. האם אתה בטוח?',
|
||||
moveItemToFolderConfirmation:
|
||||
'אתה עומד להעביר <1>{{title}}</1> ל-<2>{{toFolder}}</2>. האם אתה בטוח?',
|
||||
moveItemToRootConfirmation: 'אתה עומד להעביר <1>{{title}}</1> לתיקייה הראשית. האם אתה בטוח?',
|
||||
movingFromFolder: 'מזיז {{title}} מ-{{folderName}}',
|
||||
newFolder: 'תיקייה חדשה',
|
||||
noFolder: 'אין תיקייה',
|
||||
renameFolder: 'שנה שם לתיקיה',
|
||||
searchByNameInFolder: 'חיפוש לפי שם ב{{folderName}}',
|
||||
selectFolderForItem: 'בחר תיקייה עבור {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'שם',
|
||||
aboutToDelete: 'אתה עומד למחוק את {{label}} <1>{{title}}</1>. האם אתה בטוח?',
|
||||
aboutToDeleteCount_many: 'אתה עומד למחוק {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'אתה עומד למחוק {{label}} אחד',
|
||||
@@ -199,6 +225,7 @@ export const heTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'אשר עותק',
|
||||
confirmDeletion: 'אישור מחיקה',
|
||||
confirmDuplication: 'אישור שכפול',
|
||||
confirmMove: 'אשר העברה',
|
||||
confirmReindex: 'האם להחזיר אינדקס לכל {{collections}}?',
|
||||
confirmReindexAll: 'האם להחזיר אינדקס לכל האוספים?',
|
||||
confirmReindexDescription:
|
||||
@@ -255,6 +282,8 @@ export const heTranslations: DefaultTranslationsObject = {
|
||||
globals: 'גלובלים',
|
||||
goBack: 'חזור',
|
||||
isEditing: 'עורך',
|
||||
item: 'פריט',
|
||||
items: 'פריטים',
|
||||
language: 'שפה',
|
||||
lastModified: 'נערך לאחרונה',
|
||||
leaveAnyway: 'צא בכל זאת',
|
||||
@@ -266,8 +295,13 @@ export const heTranslations: DefaultTranslationsObject = {
|
||||
locales: 'שפות',
|
||||
menu: 'תפריט',
|
||||
moreOptions: 'אפשרויות נוספות',
|
||||
move: 'הזוז',
|
||||
moveConfirm: 'אתה עומד להעביר {{count}} {{label}} ל-<1>{{destination}}</1>. האם אתה בטוח?',
|
||||
moveCount: 'הזז {{count}} {{label}}',
|
||||
moveDown: 'הזז למטה',
|
||||
moveUp: 'הזז למעלה',
|
||||
moving: 'מזיז',
|
||||
movingCount: 'מזיז {{count}} {{label}}',
|
||||
newPassword: 'סיסמה חדשה',
|
||||
next: 'הבא',
|
||||
noDateSelected: 'לא נבחר תאריך',
|
||||
@@ -294,6 +328,7 @@ export const heTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'החזרת אינדקס',
|
||||
reindexingAll: 'החזרת אינדקס לכל {{collections}}.',
|
||||
remove: 'הסר',
|
||||
rename: 'שנה שם',
|
||||
reset: 'איפוס',
|
||||
resetPreferences: 'איפוס העדפות',
|
||||
resetPreferencesDescription: 'זאת תאפס את כל ההעדפות שלך להגדרות ברירת המחדל.',
|
||||
@@ -304,6 +339,7 @@ export const heTranslations: DefaultTranslationsObject = {
|
||||
saving: 'שומר...',
|
||||
schedulePublishFor: 'לתזמן פרסום עבור {{כותרת}}',
|
||||
searchBy: 'חיפוש לפי {{label}}',
|
||||
select: 'בחר',
|
||||
selectAll: 'בחר את כל {{count}} ה{{label}}',
|
||||
selectAllRows: 'בחר את כל השורות',
|
||||
selectedCount: '{{count}} {{label}} נבחרו',
|
||||
|
||||
@@ -175,7 +175,34 @@ export const hrTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Prebaci blok',
|
||||
uploadNewLabel: 'Učitaj novi {{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Pregledajte po mapi',
|
||||
byFolder: 'Po mapi',
|
||||
deleteFolder: 'Izbriši mapu',
|
||||
folderName: 'Naziv mape',
|
||||
folders: 'Mape',
|
||||
itemHasBeenMoved: '{{title}} je premješten u {{folderName}}',
|
||||
itemHasBeenMovedToRoot: '{{title}} je premješten u korijensku mapu.',
|
||||
itemsMovedToFolder: '{{title}} premješteno u {{folderName}}',
|
||||
itemsMovedToRoot: '{{title}} premješten u korijensku mapu',
|
||||
moveFolder: 'Premjesti mapu',
|
||||
moveItemsToFolderConfirmation:
|
||||
'Upravo se spremate premjestiti <1>{{count}} {{label}}</1> u <2>{{toFolder}}</2>. Jeste li sigurni?',
|
||||
moveItemsToRootConfirmation:
|
||||
'Na korak ste da premjestite <1>{{count}} {{label}}</1> u korijensku mapu. Jeste li sigurni?',
|
||||
moveItemToFolderConfirmation:
|
||||
'Upravo ćete premjestiti <1>{{title}}</1> u <2>{{toFolder}}</2>. Jeste li sigurni?',
|
||||
moveItemToRootConfirmation:
|
||||
'Upravo ćete premjestiti <1>{{title}}</1> u osnovnu mapu. Jeste li sigurni?',
|
||||
movingFromFolder: 'Premještanje {{title}} iz {{folderName}}',
|
||||
newFolder: 'Nova mapa',
|
||||
noFolder: 'Nema mape',
|
||||
renameFolder: 'Preimenuj mapu',
|
||||
searchByNameInFolder: 'Pretraživanje po imenu u {{folderName}}',
|
||||
selectFolderForItem: 'Odaberite mapu za {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'Ime',
|
||||
aboutToDelete: 'Izbrisat ćete {{label}} <1>{{title}}</1>. Jeste li sigurni?',
|
||||
aboutToDeleteCount_many: 'Upravo ćete izbrisati {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'Upravo ćete izbrisati {{count}} {{label}}',
|
||||
@@ -204,6 +231,7 @@ export const hrTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Potvrdi kopiju',
|
||||
confirmDeletion: 'Potvrdi brisanje',
|
||||
confirmDuplication: 'Potvrdi duplikaciju',
|
||||
confirmMove: 'Potvrdi premještanje',
|
||||
confirmReindex: 'Ponovno indeksirati sve {{collections}}?',
|
||||
confirmReindexAll: 'Ponovno indeksirati sve kolekcije?',
|
||||
confirmReindexDescription:
|
||||
@@ -261,6 +289,8 @@ export const hrTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Globali',
|
||||
goBack: 'Vrati se',
|
||||
isEditing: 'uređuje',
|
||||
item: 'stavka',
|
||||
items: 'stavke',
|
||||
language: 'Jezik',
|
||||
lastModified: 'Zadnja promjena',
|
||||
leaveAnyway: 'Svejedno napusti',
|
||||
@@ -272,8 +302,14 @@ export const hrTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Prijevodi',
|
||||
menu: 'Izbornik',
|
||||
moreOptions: 'Više opcija',
|
||||
move: 'Pomakni',
|
||||
moveConfirm:
|
||||
'Upravo ćete premjestiti {{count}} {{label}} u <1>{{destination}}</1>. Jeste li sigurni?',
|
||||
moveCount: 'Pomakni {{count}} {{label}}',
|
||||
moveDown: 'Pomakni dolje',
|
||||
moveUp: 'Pomakni gore',
|
||||
moving: 'Pomicanje',
|
||||
movingCount: 'Pomicanje {{count}} {{label}}',
|
||||
newPassword: 'Nova lozinka',
|
||||
next: 'Sljedeće',
|
||||
noDateSelected: 'Nije odabran datum',
|
||||
@@ -301,6 +337,7 @@ export const hrTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Ponovno indeksiraj',
|
||||
reindexingAll: 'Ponovno indeksiranje svih {{collections}}.',
|
||||
remove: 'Ukloni',
|
||||
rename: 'Preimenuj',
|
||||
reset: 'Ponovno postavi',
|
||||
resetPreferences: 'Ponovno postavljanje postavki',
|
||||
resetPreferencesDescription: 'Ovo će vratiti sve vaše postavke na zadane vrijednosti.',
|
||||
@@ -311,6 +348,7 @@ export const hrTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Spremanje...',
|
||||
schedulePublishFor: 'Zakazano objavljivanje za {{title}}',
|
||||
searchBy: 'Traži po {{label}}',
|
||||
select: 'Odaberite',
|
||||
selectAll: 'Odaberite sve {{count}} {{label}}',
|
||||
selectAllRows: 'Odaberite sve redove',
|
||||
selectedCount: '{{count}} {{label}} odabrano',
|
||||
|
||||
@@ -176,7 +176,34 @@ export const huTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Blokk kinyitása',
|
||||
uploadNewLabel: 'Új {{label}} feltöltése',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Mappa szerint böngészés',
|
||||
byFolder: 'Mappánként',
|
||||
deleteFolder: 'Mappa törlése',
|
||||
folderName: 'Mappa neve',
|
||||
folders: 'Mappák',
|
||||
itemHasBeenMoved: '{{title}} át lett helyezve a {{folderName}} nevű mappába.',
|
||||
itemHasBeenMovedToRoot: 'A(z) {{title}} át lett helyezve a gyökérmappába.',
|
||||
itemsMovedToFolder: '{{title}} áthelyezve a(z) {{folderName}} mappába',
|
||||
itemsMovedToRoot: 'A {{title}} átkerült a gyökérmappába',
|
||||
moveFolder: 'Mappa áthelyezése',
|
||||
moveItemsToFolderConfirmation:
|
||||
'Ön <1>{{count}} {{label}}</1>-t készül áthelyezni a <2>{{toFolder}}</2> mappába. Biztos benne?',
|
||||
moveItemsToRootConfirmation:
|
||||
'Ön éppen azért készül, hogy <1>{{count}} {{label}}</1>-t a gyökérmappába helyezzen át. Biztos benne?',
|
||||
moveItemToFolderConfirmation:
|
||||
'Ön készül áthelyezni <1>{{title}}</1>-t <2>{{toFolder}}</2>-be. Biztos benne?',
|
||||
moveItemToRootConfirmation:
|
||||
'Arra készül, hogy a <1>{{title}}</1> elemet a gyökérmappába helyezi. Biztos benne?',
|
||||
movingFromFolder: '{{title}} áthelyezése a(z) {{folderName}} mappából',
|
||||
newFolder: 'Új Mappa',
|
||||
noFolder: 'Nincs mappa',
|
||||
renameFolder: 'Mappa átnevezése',
|
||||
searchByNameInFolder: 'Keresés név alapján a(z) {{folderName}} mappában',
|
||||
selectFolderForItem: 'Válassz mappát a {{title}} számára',
|
||||
},
|
||||
general: {
|
||||
name: 'Név',
|
||||
aboutToDelete: 'A {{label}} <1>{{title}}</1> törlésére készül. Biztos benne?',
|
||||
aboutToDeleteCount_many: 'Törölni készül {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'Törölni készül {{count}} {{label}}',
|
||||
@@ -206,6 +233,7 @@ export const huTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Jóváhagyott másolat',
|
||||
confirmDeletion: 'Törlés megerősítése',
|
||||
confirmDuplication: 'Duplikáció megerősítése',
|
||||
confirmMove: 'Megerősíti a költözést',
|
||||
confirmReindex: 'Újraindexálja az összes {{collections}}-t?',
|
||||
confirmReindexAll: 'Újraindexálja az összes gyűjteményt?',
|
||||
confirmReindexDescription:
|
||||
@@ -263,6 +291,8 @@ export const huTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Globálisok',
|
||||
goBack: 'Vissza',
|
||||
isEditing: 'szerkeszt',
|
||||
item: 'tétel',
|
||||
items: 'tételek',
|
||||
language: 'Nyelv',
|
||||
lastModified: 'Utoljára módosítva',
|
||||
leaveAnyway: 'Távozás mindenképp',
|
||||
@@ -274,8 +304,13 @@ export const huTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Nyelvek',
|
||||
menu: 'Menü',
|
||||
moreOptions: 'Több opció',
|
||||
move: 'Mozdulj',
|
||||
moveConfirm: 'Ön <1>{{destination}}</1>-re fogja {{count}} {{label}}-t mozgatni. Biztos benne?',
|
||||
moveCount: 'Mozduljon {{count}} {{label}}',
|
||||
moveDown: 'Mozgatás lefelé',
|
||||
moveUp: 'Mozgatás felfelé',
|
||||
moving: 'Költözés',
|
||||
movingCount: '{{Count}} {{label}} mozgatása',
|
||||
newPassword: 'Új jelszó',
|
||||
next: 'Következő',
|
||||
noDateSelected: 'Nincs kiválasztott dátum',
|
||||
@@ -303,6 +338,7 @@ export const huTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Újraindexelés',
|
||||
reindexingAll: 'Az összes {{collections}} újraindexálása folyamatban.',
|
||||
remove: 'Törlés',
|
||||
rename: 'Átnevez',
|
||||
reset: 'Visszaállítás',
|
||||
resetPreferences: 'Beállítások visszaállítása',
|
||||
resetPreferencesDescription:
|
||||
@@ -314,6 +350,7 @@ export const huTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Mentés...',
|
||||
schedulePublishFor: 'Tervezett közzététel a(z) {{title}} című számára',
|
||||
searchBy: 'Keresés a következő szerint: {{label}}',
|
||||
select: 'Válasszon',
|
||||
selectAll: 'Az összes kijelölése: {{count}} {{label}}',
|
||||
selectAllRows: 'Válassza ki az összes sort',
|
||||
selectedCount: '{{count}} {{label}} kiválasztva',
|
||||
|
||||
@@ -27,11 +27,9 @@ export const hyTranslations: DefaultTranslationsObject = {
|
||||
forgotPassword: 'Մոռացե՞լ եք գաղտնաբառը',
|
||||
forgotPasswordEmailInstructions:
|
||||
'Խնդրում ենք մուտքագրել Ձեր էլ. փոստը։ Դուք կստանաք էլ. նամակ՝ գաղտնաբառը վերականգնելու հրահանգներով։',
|
||||
forgotPasswordQuestion: 'Մոռացե՞լ եք գաղտնաբառը։',
|
||||
forgotPasswordUsernameInstructions:
|
||||
'Խնդրում ենք ներքևում մուտքագրել Ձեր օգտանունը։ Գաղտնաբառը վերականգնելու հրահանգները կուղարկվեն Ձեր օգտանվան հետ կապված էլ. փոստի հասցեին։',
|
||||
usernameNotValid: 'Տրամադրված օգտանունը վավեր չէ',
|
||||
|
||||
forgotPasswordQuestion: 'Մոռացե՞լ եք գաղտնաբառը։',
|
||||
generate: 'Ստեղծել',
|
||||
generateNewAPIKey: 'Ստեղծել նոր API բանալի',
|
||||
generatingNewAPIKeyWillInvalidate:
|
||||
@@ -68,6 +66,7 @@ export const hyTranslations: DefaultTranslationsObject = {
|
||||
tokenRefreshSuccessful: 'Թոքենի թարմացումը հաջողվել է։',
|
||||
unableToVerify: 'Հնարավոր չէ հաստատել',
|
||||
username: 'Օգտանուն',
|
||||
usernameNotValid: 'Տրամադրված օգտանունը վավեր չէ',
|
||||
verified: 'Ստուգված',
|
||||
verifiedSuccessfully: 'Հաջողությամբ ստուգված',
|
||||
verify: 'Ստուգել',
|
||||
@@ -175,7 +174,34 @@ export const hyTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Միացնել/անջատել բլոկը',
|
||||
uploadNewLabel: 'Վերբեռնել նոր {{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Թվարկել թղթապանակներով',
|
||||
byFolder: 'ըստ թղթապանակի',
|
||||
deleteFolder: 'Ջնջել թղթապանակը',
|
||||
folderName: 'Տեսակավորման անվանում',
|
||||
folders: 'Պատուհաններ',
|
||||
itemHasBeenMoved: '{{title}}-ը տեղափոխվել է {{folderName}}-ում',
|
||||
itemHasBeenMovedToRoot: '«{{title}}» տեղափոխվել է արմատային պանակ։',
|
||||
itemsMovedToFolder: '{{title}} տեղափոխվեց {{folderName}}',
|
||||
itemsMovedToRoot: '{{title}} տեղափոխվել է արմատ թղթապանակին',
|
||||
moveFolder: 'Տեղափոխել թղթապանակը',
|
||||
moveItemsToFolderConfirmation:
|
||||
'Դուք պատրաստ եք <1>{{count}} {{label}}</1> տեղափոխել <2>{{toFolder}}</2>։ Ամբողջականում համոզված եք:',
|
||||
moveItemsToRootConfirmation:
|
||||
'Դուք պատրաստված եք տեղափոխել <1>{{count}} {{label}}</1> արմատ թղթապանակի. Համոզվա՞ծ եք:',
|
||||
moveItemToFolderConfirmation:
|
||||
'Դուք պատրաստ եք տեղափոխել <1>{{title}}</1> <2>{{toFolder}}</2>։ Վստահ եք:',
|
||||
moveItemToRootConfirmation:
|
||||
'Դուք պատրաստ եք <1>{{title}}</1> տեղափոխել արմատային պանակի մեջ։ Վստահ եք։',
|
||||
movingFromFolder: '{{title}}-ի տեղափոխում {{folderName}}-ից',
|
||||
newFolder: 'Նոր թղթապանակ',
|
||||
noFolder: 'Ոչ մի թղթապանակ',
|
||||
renameFolder: 'Վերանվանել թղթապանակը',
|
||||
searchByNameInFolder: 'Փնտրել ըստ անվանումի {{folderName}} թղթապանակում',
|
||||
selectFolderForItem: 'Ընտրեք թղթապանակ {{title}}-ի համար',
|
||||
},
|
||||
general: {
|
||||
name: 'Անուն',
|
||||
aboutToDelete: 'Դուք պատրաստվում եք ջնջել {{label}} <1>{{title}}</1>-ը։ Համոզվա՞ծ եք։',
|
||||
aboutToDeleteCount_many: 'Դուք պատրաստվում եք ջնջել {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'Դուք պատրաստվում եք ջնջել {{count}} {{label}}',
|
||||
@@ -205,6 +231,7 @@ export const hyTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Հաստատել պատճենումը',
|
||||
confirmDeletion: 'Հաստատել ջնջելը',
|
||||
confirmDuplication: 'Հաստատել կրկնօրինակումը',
|
||||
confirmMove: 'Հաստատեք տեղափոխումը',
|
||||
confirmReindex: 'Վերաինդեքսավորե՞լ բոլոր {{collections}}-ը։',
|
||||
confirmReindexAll: 'Վերաինդեքսավորե՞լ բոլոր հավաքածուները։',
|
||||
confirmReindexDescription:
|
||||
@@ -262,6 +289,8 @@ export const hyTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Համընդհանուրներ',
|
||||
goBack: 'Հետ գնալ',
|
||||
isEditing: 'խմբագրում է',
|
||||
item: 'տարր',
|
||||
items: 'տեսականի',
|
||||
language: 'Լեզու',
|
||||
lastModified: 'Վերջին փոփոխություն',
|
||||
leaveAnyway: 'Այնուամենայնիվ հեռանալ',
|
||||
@@ -273,8 +302,14 @@ export const hyTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Լոկալներ',
|
||||
menu: 'Մենյու',
|
||||
moreOptions: 'Լրացուցիչ ընտրանքներ',
|
||||
move: 'Տեղափոխվել',
|
||||
moveConfirm:
|
||||
'Դուք պատրաստ եք տեղափոխել {{count}} {{label}} -ը <1>{{destination}}</1> -ից։ Արդյո՞ք վստահ եք։',
|
||||
moveCount: 'Տեղափոխել {{count}} {{label}}',
|
||||
moveDown: 'Տեղափոխել ներքև',
|
||||
moveUp: 'Տեղափոխել վերև',
|
||||
moving: 'Տեղափոխվում',
|
||||
movingCount: 'Տեղափոխվում է {{count}} {{label}}',
|
||||
newPassword: 'Նոր գաղտնաբառ',
|
||||
next: 'Հաջորդ',
|
||||
noDateSelected: 'Չկա ընտրված ամսաթիվ',
|
||||
@@ -302,6 +337,7 @@ export const hyTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Վերաինդեքսավորել',
|
||||
reindexingAll: 'Վերաինդեքսավորվում են բոլոր {{collections}}-ները։',
|
||||
remove: 'Հեռացնել',
|
||||
rename: 'Վերանվանել',
|
||||
reset: 'Վերակայել',
|
||||
resetPreferences: 'Վերակայել նախընտրությունները',
|
||||
resetPreferencesDescription:
|
||||
@@ -313,6 +349,7 @@ export const hyTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Պահպանվում է...',
|
||||
schedulePublishFor: 'Հրապարակման ժամանակ նշանակել {{title}}-ի համար',
|
||||
searchBy: 'Որոնել ըստ {{label}}-ի',
|
||||
select: 'Ընտրել',
|
||||
selectAll: 'Ընտրել բոլոր {{count}} {{label}}',
|
||||
selectAllRows: 'Ընտրել բոլոր տողերը',
|
||||
selectedCount: '{{count}} {{label}} ընտրված է',
|
||||
|
||||
@@ -178,7 +178,34 @@ export const itTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Apri/chiudi blocco',
|
||||
uploadNewLabel: 'Carica nuovo {{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Sfoglia per Cartella',
|
||||
byFolder: 'Per Cartella',
|
||||
deleteFolder: 'Elimina cartella',
|
||||
folderName: 'Nome Cartella',
|
||||
folders: 'Cartelle',
|
||||
itemHasBeenMoved: '{{title}} è stato spostato in {{folderName}}',
|
||||
itemHasBeenMovedToRoot: '{{title}} è stato spostato nella cartella principale',
|
||||
itemsMovedToFolder: '{{title}} spostato in {{folderName}}',
|
||||
itemsMovedToRoot: '{{title}} è stato spostato nella cartella principale',
|
||||
moveFolder: 'Sposta Cartella',
|
||||
moveItemsToFolderConfirmation:
|
||||
'Stai per spostare <1>{{count}} {{label}}</1> in <2>{{toFolder}}</2>. Sei sicuro?',
|
||||
moveItemsToRootConfirmation:
|
||||
'Stai per spostare <1>{{count}} {{label}}</1> nella cartella principale. Sei sicuro?',
|
||||
moveItemToFolderConfirmation:
|
||||
'Stai per spostare <1>{{title}}</1> in <2>{{toFolder}}</2>. Sei sicuro?',
|
||||
moveItemToRootConfirmation:
|
||||
'Stai per spostare <1>{{title}}</1> nella cartella principale. Sei sicuro?',
|
||||
movingFromFolder: 'Spostando {{title}} da {{folderName}}',
|
||||
newFolder: 'Nuova Cartella',
|
||||
noFolder: 'Nessuna cartella',
|
||||
renameFolder: 'Rinomina Cartella',
|
||||
searchByNameInFolder: 'Cerca per Nome in {{folderName}}',
|
||||
selectFolderForItem: 'Seleziona la cartella per {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'Nome',
|
||||
aboutToDelete: 'Stai per eliminare {{label}} <1>{{title}}</1>. Sei sicuro?',
|
||||
aboutToDeleteCount_many: 'Stai per eliminare {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'Stai per eliminare {{count}} {{label}}',
|
||||
@@ -208,6 +235,7 @@ export const itTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Conferma copia',
|
||||
confirmDeletion: "Conferma l'eliminazione",
|
||||
confirmDuplication: 'Conferma la duplicazione',
|
||||
confirmMove: 'Conferma spostamento',
|
||||
confirmReindex: "Rifare l'indice di tutte le {{collections}}?",
|
||||
confirmReindexAll: "Rifare l'indice di tutte le collezioni?",
|
||||
confirmReindexDescription:
|
||||
@@ -264,6 +292,8 @@ export const itTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Globali',
|
||||
goBack: 'Torna indietro',
|
||||
isEditing: 'sta modificando',
|
||||
item: 'articolo',
|
||||
items: 'articoli',
|
||||
language: 'Lingua',
|
||||
lastModified: 'Ultima modifica',
|
||||
leaveAnyway: 'Esci comunque',
|
||||
@@ -275,8 +305,13 @@ export const itTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Localizzazioni',
|
||||
menu: 'Menù',
|
||||
moreOptions: 'Più opzioni',
|
||||
move: 'Muoviti',
|
||||
moveConfirm: 'Stai per spostare {{count}} {{label}} in <1>{{destination}}</1>. Sei sicuro?',
|
||||
moveCount: 'Sposta {{count}} {{label}}',
|
||||
moveDown: 'Sposta sotto',
|
||||
moveUp: 'Sposta sopra',
|
||||
moving: 'In movimento',
|
||||
movingCount: 'Spostando {{count}} {{label}}',
|
||||
newPassword: 'Nuova Password',
|
||||
next: 'Successivo',
|
||||
noDateSelected: 'Nessuna data selezionata',
|
||||
@@ -304,6 +339,7 @@ export const itTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Reindicizza',
|
||||
reindexingAll: "Rifacendo l'indice di tutte le {{collections}}.",
|
||||
remove: 'Rimuovi',
|
||||
rename: 'Rinomina',
|
||||
reset: 'Ripristina',
|
||||
resetPreferences: 'Ripristina le preferenze',
|
||||
resetPreferencesDescription:
|
||||
@@ -315,6 +351,7 @@ export const itTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Salvo...',
|
||||
schedulePublishFor: 'Pianifica la pubblicazione per {{title}}',
|
||||
searchBy: 'Cerca per {{label}}',
|
||||
select: 'Seleziona',
|
||||
selectAll: 'Seleziona tutto {{count}} {{label}}',
|
||||
selectAllRows: 'Seleziona tutte le righe',
|
||||
selectedCount: '{{count}} {{label}} selezionato',
|
||||
|
||||
@@ -175,7 +175,34 @@ export const jaTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'ブロックを切り替え',
|
||||
uploadNewLabel: '新規 {{label}} アップロード',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'フォルダーで閲覧する',
|
||||
byFolder: 'フォルダー別に',
|
||||
deleteFolder: 'フォルダを削除する',
|
||||
folderName: 'フォルダ名',
|
||||
folders: 'フォルダー',
|
||||
itemHasBeenMoved: '{{title}}は{{folderName}}に移動されました',
|
||||
itemHasBeenMovedToRoot: '{{title}}はルートフォルダに移動されました',
|
||||
itemsMovedToFolder: '{{title}}は{{folderName}}に移動されました',
|
||||
itemsMovedToRoot: '{{title}}はルートフォルダに移動しました。',
|
||||
moveFolder: 'フォルダを移動する',
|
||||
moveItemsToFolderConfirmation:
|
||||
'あなたは<1>{{count}} {{label}}</1>を<2>{{toFolder}}</2>に移動しようとしています。よろしいですか?',
|
||||
moveItemsToRootConfirmation:
|
||||
'あなたはまもなく<1>{{count}} {{label}}</1>をルートフォルダーに移動しようとしています。よろしいですか?',
|
||||
moveItemToFolderConfirmation:
|
||||
'<1>{{title}}</1>を<2>{{toFolder}}</2>に移動しようとしています。よろしいですか?',
|
||||
moveItemToRootConfirmation:
|
||||
'あなたは<1>{{title}}</1>をルートフォルダに移動しようとしています。よろしいですか?',
|
||||
movingFromFolder: '{{title}}を{{folderName}}から移動します',
|
||||
newFolder: '新しいフォルダ',
|
||||
noFolder: 'フォルダーなし',
|
||||
renameFolder: 'フォルダの名前を変更する',
|
||||
searchByNameInFolder: '{{folderName}}で名前を検索する',
|
||||
selectFolderForItem: '{{title}}のためのフォルダを選択してください。',
|
||||
},
|
||||
general: {
|
||||
name: '名前',
|
||||
aboutToDelete: '{{label}} <1>{{title}}</1> を削除します。よろしいですか?',
|
||||
aboutToDeleteCount_many: '{{label}}を{{count}}つ削除しようとしています',
|
||||
aboutToDeleteCount_one: '{{label}}を{{count}}つ削除しようとしています',
|
||||
@@ -204,6 +231,7 @@ export const jaTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'コピーを確認します',
|
||||
confirmDeletion: '削除の確認',
|
||||
confirmDuplication: '複製の確認',
|
||||
confirmMove: '移動を確認してください',
|
||||
confirmReindex: 'すべての{{collections}}を再インデックスしますか?',
|
||||
confirmReindexAll: 'すべてのコレクションを再インデックスしますか?',
|
||||
confirmReindexDescription:
|
||||
@@ -261,6 +289,8 @@ export const jaTranslations: DefaultTranslationsObject = {
|
||||
globals: 'グローバル',
|
||||
goBack: '戻る',
|
||||
isEditing: '編集中',
|
||||
item: 'アイテム',
|
||||
items: 'アイテム',
|
||||
language: '言語',
|
||||
lastModified: '最終更新',
|
||||
leaveAnyway: 'すぐに画面を離れる',
|
||||
@@ -272,8 +302,14 @@ export const jaTranslations: DefaultTranslationsObject = {
|
||||
locales: 'ロケール',
|
||||
menu: 'メニュー',
|
||||
moreOptions: 'より多くのオプション',
|
||||
move: '移動します',
|
||||
moveConfirm:
|
||||
'あなたは{{count}} {{label}}を<1>{{destination}}</1>に移動しようとしています。よろしいですか?',
|
||||
moveCount: '{{count}} {{label}}を移動してください',
|
||||
moveDown: '下へ移動',
|
||||
moveUp: '上へ移動',
|
||||
moving: '移動中',
|
||||
movingCount: '{{count}} {{label}}を移動します',
|
||||
newPassword: '新しいパスワード',
|
||||
next: '次',
|
||||
noDateSelected: '日付が選択されていません',
|
||||
@@ -301,6 +337,7 @@ export const jaTranslations: DefaultTranslationsObject = {
|
||||
reindex: '再インデックス',
|
||||
reindexingAll: 'すべての{{collections}}を再インデックスしています。',
|
||||
remove: '削除',
|
||||
rename: '名前を変更する',
|
||||
reset: 'リセット',
|
||||
resetPreferences: '設定をリセット',
|
||||
resetPreferencesDescription: 'これにより、すべての設定がデフォルト設定にリセットされます。',
|
||||
@@ -311,6 +348,7 @@ export const jaTranslations: DefaultTranslationsObject = {
|
||||
saving: '保存しています...',
|
||||
schedulePublishFor: '{{title}}の公開を予定する',
|
||||
searchBy: '{{label}} で検索',
|
||||
select: '選択してください。',
|
||||
selectAll: 'すべての{{count}}つの{{label}}を選択',
|
||||
selectAllRows: 'すべての行を選択します',
|
||||
selectedCount: '{{count}}つの{{label}}を選択中',
|
||||
|
||||
@@ -174,7 +174,33 @@ export const koTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: '블록 토글',
|
||||
uploadNewLabel: '새로운 {{label}} 업로드',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: '폴더별 브라우징',
|
||||
byFolder: '폴더별로',
|
||||
deleteFolder: '폴더 삭제',
|
||||
folderName: '폴더 이름',
|
||||
folders: '폴더들',
|
||||
itemHasBeenMoved: '{{title}}는 {{folderName}}로 이동되었습니다.',
|
||||
itemHasBeenMovedToRoot: '{{title}}이(가) 루트 폴더로 이동되었습니다.',
|
||||
itemsMovedToFolder: '{{title}}이(가) {{folderName}}로 이동되었습니다.',
|
||||
itemsMovedToRoot: '{{title}}이(가) 루트 폴더로 이동되었습니다.',
|
||||
moveFolder: '폴더 이동',
|
||||
moveItemsToFolderConfirmation:
|
||||
'<1>{{count}} {{label}}</1>을(를) <2>{{toFolder}}</2>(으)로 이동하려 합니다. 확실합니까?',
|
||||
moveItemsToRootConfirmation:
|
||||
'당신은 <1>{{count}} {{label}}</1>을 최상위 폴더로 이동하려고 합니다. 확실합니까?',
|
||||
moveItemToFolderConfirmation:
|
||||
'<1>{{title}}</1>을(를) <2>{{toFolder}}</2>(으)로 이동하려고 합니다. 확실하신가요?',
|
||||
moveItemToRootConfirmation: '<1>{{title}}</1>을 루트 폴더로 이동하려고 합니다. 확실합니까?',
|
||||
movingFromFolder: '{{title}}를 {{folderName}}에서 이동합니다',
|
||||
newFolder: '새 폴더',
|
||||
noFolder: '폴더 없음',
|
||||
renameFolder: '폴더 이름 변경',
|
||||
searchByNameInFolder: '{{folderName}}에서 이름으로 검색하세요.',
|
||||
selectFolderForItem: '{{title}}에 대한 폴더 선택',
|
||||
},
|
||||
general: {
|
||||
name: '이름',
|
||||
aboutToDelete: '{{label}} <1>{{title}}</1>를 삭제하려고 합니다. 계속하시겠습니까?',
|
||||
aboutToDeleteCount_many: '{{label}}를 {{count}}개 삭제하려고 합니다.',
|
||||
aboutToDeleteCount_one: '{{label}}를 {{count}}개 삭제하려고 합니다.',
|
||||
@@ -203,6 +229,7 @@ export const koTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: '복사 확인',
|
||||
confirmDeletion: '삭제하시겠습니까?',
|
||||
confirmDuplication: '복제하시겠습니까?',
|
||||
confirmMove: '이동 확인',
|
||||
confirmReindex: '모든 {{collections}}를 다시 인덱싱하시겠습니까?',
|
||||
confirmReindexAll: '모든 컬렉션을 다시 인덱싱하시겠습니까?',
|
||||
confirmReindexDescription:
|
||||
@@ -259,6 +286,8 @@ export const koTranslations: DefaultTranslationsObject = {
|
||||
globals: '글로벌',
|
||||
goBack: '돌아가기',
|
||||
isEditing: '편집 중',
|
||||
item: '항목',
|
||||
items: '항목들',
|
||||
language: '언어',
|
||||
lastModified: '마지막 수정 일시',
|
||||
leaveAnyway: '그래도 나가시겠습니까?',
|
||||
@@ -270,8 +299,14 @@ export const koTranslations: DefaultTranslationsObject = {
|
||||
locales: 'locale',
|
||||
menu: '메뉴',
|
||||
moreOptions: '더 많은 옵션',
|
||||
move: '움직이세요',
|
||||
moveConfirm:
|
||||
'당신은 <1>{{destination}}</1>로 {{count}}개의 {{label}}을(를) 이동하려고 합니다. 확실합니까?',
|
||||
moveCount: '{{count}} {{label}} 이동',
|
||||
moveDown: '아래로 이동',
|
||||
moveUp: '위로 이동',
|
||||
moving: '이동하는',
|
||||
movingCount: '{{count}} {{label}}을(를) 이동시킵니다.',
|
||||
newPassword: '새 비밀번호',
|
||||
next: '다음',
|
||||
noDateSelected: '선택된 날짜가 없습니다.',
|
||||
@@ -299,6 +334,7 @@ export const koTranslations: DefaultTranslationsObject = {
|
||||
reindex: '재인덱싱',
|
||||
reindexingAll: '모든 {{collections}}를 다시 인덱싱하는 중입니다.',
|
||||
remove: '제거',
|
||||
rename: '이름 변경',
|
||||
reset: '초기화',
|
||||
resetPreferences: '기본 설정으로 재설정',
|
||||
resetPreferencesDescription: '이렇게 하면 모든 기본 설정이 기본값으로 재설정됩니다.',
|
||||
@@ -309,6 +345,7 @@ export const koTranslations: DefaultTranslationsObject = {
|
||||
saving: '저장 중...',
|
||||
schedulePublishFor: '{{title}}에 대한 게시 일정 설정',
|
||||
searchBy: '{{label}}로 검색',
|
||||
select: '선택하십시오',
|
||||
selectAll: '{{count}}개 {{label}} 모두 선택',
|
||||
selectAllRows: '모든 행 선택',
|
||||
selectedCount: '{{count}}개의 {{label}} 선택됨',
|
||||
|
||||
@@ -176,7 +176,34 @@ export const ltTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Perjungti bloką',
|
||||
uploadNewLabel: 'Įkelti naują {{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Naršyti pagal aplanką',
|
||||
byFolder: 'Pagal aplanką',
|
||||
deleteFolder: 'Ištrinti aplanką',
|
||||
folderName: 'Aplanko pavadinimas',
|
||||
folders: 'Aplankai',
|
||||
itemHasBeenMoved: '{{title}} buvo perkeltas į {{folderName}}',
|
||||
itemHasBeenMovedToRoot: '{{title}} buvo perkeltas į pagrindinį katalogą',
|
||||
itemsMovedToFolder: '{{title}} perkeltas į {{folderName}}',
|
||||
itemsMovedToRoot: '{{title}} perkeltas į šakninį aplanką',
|
||||
moveFolder: 'Perkelti aplanką',
|
||||
moveItemsToFolderConfirmation:
|
||||
'Jūs ketinate perkelti <1>{{count}} {{label}}</1> į <2>{{toFolder}}</2>. Ar esate tikri?',
|
||||
moveItemsToRootConfirmation:
|
||||
'Jūs ketinate perkelti <1>{{count}} {{label}}</1> į šakninį aplanką. Ar esate tikri?',
|
||||
moveItemToFolderConfirmation:
|
||||
'Jūs ketinate perkelti <1>{{title}}</1> į <2>{{toFolder}}</2>. Ar esate įsitikinęs?',
|
||||
moveItemToRootConfirmation:
|
||||
'Jūs ketinate perkelti <1>{{title}}</1> į pagrindinį aplanką. Ar esate tikras?',
|
||||
movingFromFolder: 'Perkeliamas {{title}} iš {{folderName}}',
|
||||
newFolder: 'Naujas aplankas',
|
||||
noFolder: 'Nėra aplanko',
|
||||
renameFolder: 'Pervadinti aplanką',
|
||||
searchByNameInFolder: 'Ieškoti pagal vardą {{folderName}}',
|
||||
selectFolderForItem: 'Pasirinkite aplanką skirtą {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'Vardas',
|
||||
aboutToDelete: 'Jūs ketinate ištrinti {{label}} <1>{{title}}</1>. Ar esate tikri?',
|
||||
aboutToDeleteCount_many: 'Jūs ketinate ištrinti {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'Jūs ketinate ištrinti {{count}} {{label}}',
|
||||
@@ -206,6 +233,7 @@ export const ltTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Patvirtinkite kopiją',
|
||||
confirmDeletion: 'Patvirtinkite šalinimą',
|
||||
confirmDuplication: 'Patvirtinkite dubliavimą',
|
||||
confirmMove: 'Patvirtinkite perkėlimą',
|
||||
confirmReindex: 'Perindeksuoti visas {{collections}}?',
|
||||
confirmReindexAll: 'Perindeksuoti visas kolekcijas?',
|
||||
confirmReindexDescription:
|
||||
@@ -263,6 +291,8 @@ export const ltTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Globalai',
|
||||
goBack: 'Grįžkite',
|
||||
isEditing: 'redaguoja',
|
||||
item: 'daiktas',
|
||||
items: 'elementai',
|
||||
language: 'Kalba',
|
||||
lastModified: 'Paskutinį kartą modifikuota',
|
||||
leaveAnyway: 'Vis tiek išeikite',
|
||||
@@ -274,8 +304,14 @@ export const ltTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Lokalės',
|
||||
menu: 'Meniu',
|
||||
moreOptions: 'Daugiau parinkčių',
|
||||
move: 'Judėti',
|
||||
moveConfirm:
|
||||
'Jūs ketinate perkelti {{count}} {{label}} į <1>{{destination}}</1>. Ar esate tikri?',
|
||||
moveCount: 'Perkelti {{count}} {{label}}',
|
||||
moveDown: 'Perkelti žemyn',
|
||||
moveUp: 'Pakilti',
|
||||
moving: 'Keliauja',
|
||||
movingCount: 'Perkeliama {{count}} {{label}}',
|
||||
newPassword: 'Naujas slaptažodis',
|
||||
next: 'Toliau',
|
||||
noDateSelected: 'Pasirinktos datos nėra',
|
||||
@@ -303,6 +339,7 @@ export const ltTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Perindeksuoti',
|
||||
reindexingAll: 'Perindeksuojamos visos {{collections}}.',
|
||||
remove: 'Pašalinti',
|
||||
rename: 'Pervadinti',
|
||||
reset: 'Atstatyti',
|
||||
resetPreferences: 'Atstatyti nuostatas',
|
||||
resetPreferencesDescription: 'Tai atstatys visas jūsų nuostatas į numatytąsias reikšmes.',
|
||||
@@ -313,6 +350,7 @@ export const ltTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Išsaugoti...',
|
||||
schedulePublishFor: 'Suplanuokite publikaciją „{{title}}“',
|
||||
searchBy: 'Ieškokite pagal {{label}}',
|
||||
select: 'Pasirinkite',
|
||||
selectAll: 'Pasirinkite visus {{count}} {{label}}',
|
||||
selectAllRows: 'Pasirinkite visas eilutes',
|
||||
selectedCount: '{{count}} {{label}} pasirinkta',
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type { Language } from '../types.js'
|
||||
import type { DefaultTranslationsObject, Language } from '../types.js'
|
||||
|
||||
export const lvTranslations = {
|
||||
export const lvTranslations: DefaultTranslationsObject = {
|
||||
authentication: {
|
||||
account: 'Konts',
|
||||
accountOfCurrentUser: 'Pašreizējā lietotāja konts',
|
||||
@@ -27,11 +27,9 @@ export const lvTranslations = {
|
||||
forgotPassword: 'Aizmirsi paroli?',
|
||||
forgotPasswordEmailInstructions:
|
||||
'Lūdzu, ievadiet savu e-pastu zemāk. Saņemsiet ziņojumu ar norādījumiem paroles atiestatīšanai.',
|
||||
forgotPasswordQuestion: 'Aizmirsi paroli?',
|
||||
forgotPasswordUsernameInstructions:
|
||||
'Lūdzu, ievadiet savu lietotājvārdu zemāk. Norādījumi paroles atiestatīšanai tiks nosūtīti uz e-pastu, kas saistīts ar jūsu lietotājvārdu.',
|
||||
usernameNotValid: 'Norādītais lietotājvārds nav derīgs',
|
||||
|
||||
forgotPasswordQuestion: 'Aizmirsi paroli?',
|
||||
generate: 'Ģenerēt',
|
||||
generateNewAPIKey: 'Ģenerēt jaunu API atslēgu',
|
||||
generatingNewAPIKeyWillInvalidate:
|
||||
@@ -68,6 +66,7 @@ export const lvTranslations = {
|
||||
tokenRefreshSuccessful: 'Tokens veiksmīgi atjaunots.',
|
||||
unableToVerify: 'Neizdevās verificēt',
|
||||
username: 'Lietotājvārds',
|
||||
usernameNotValid: 'Norādītais lietotājvārds nav derīgs',
|
||||
verified: 'Verificēts',
|
||||
verifiedSuccessfully: 'Veiksmīgi verificēts',
|
||||
verify: 'Verificēt',
|
||||
@@ -175,7 +174,34 @@ export const lvTranslations = {
|
||||
toggleBlock: 'Pārslēgt bloku',
|
||||
uploadNewLabel: 'Augšupielādēt jaunu {{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Pārlūkot pēc mapes',
|
||||
byFolder: 'Pēc mapi',
|
||||
deleteFolder: 'Dzēst mapi',
|
||||
folderName: 'Mapes nosaukums',
|
||||
folders: 'Mapes',
|
||||
itemHasBeenMoved: '{{title}} ir pārvietots uz {{folderName}}',
|
||||
itemHasBeenMovedToRoot: '{{title}} ir pārvietots uz saknes mapi',
|
||||
itemsMovedToFolder: '{{title}} pārvietots uz {{folderName}}',
|
||||
itemsMovedToRoot: '{{title}} pārvietots uz saknes mapi',
|
||||
moveFolder: 'Pārvietot mapi',
|
||||
moveItemsToFolderConfirmation:
|
||||
'Jūs esat gatavs pārvietot <1>{{count}} {{label}}</1> uz <2>{{toFolder}}</2>. Vai esat pārliecināts?',
|
||||
moveItemsToRootConfirmation:
|
||||
'Jūs gatavojaties pārvietot <1>{{count}} {{label}}</1> uz saknes mapi. Vai esat pārliecināts?',
|
||||
moveItemToFolderConfirmation:
|
||||
'Jūs gatavojaties pārvietot <1>{{title}}</1> uz <2>{{toFolder}}</2>. Vai esat pārliecināts?',
|
||||
moveItemToRootConfirmation:
|
||||
'Jūs gatavojaties pārvietot <1>{{title}}</1> uz saknes mapi. Vai esat pārliecināts?',
|
||||
movingFromFolder: 'Pārvietojot {{title}} no {{fromFolder}}',
|
||||
newFolder: 'Jauna Mape',
|
||||
noFolder: 'Nav mapes',
|
||||
renameFolder: 'Pārdēvēt mapi',
|
||||
searchByNameInFolder: 'Meklēšana pēc vārda mapē {{folderName}}',
|
||||
selectFolderForItem: 'Izvēlieties mapi priekš {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'Vārds',
|
||||
aboutToDelete: 'Jūs grasāties dzēst {{label}} <1>{{title}}</1>. Vai esat pārliecināts?',
|
||||
aboutToDeleteCount_many: 'Jūs grasāties dzēst {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'Jūs grasāties dzēst {{count}} {{label}}',
|
||||
@@ -204,6 +230,7 @@ export const lvTranslations = {
|
||||
confirmCopy: 'Apstiprināt kopēšanu',
|
||||
confirmDeletion: 'Apstiprināt dzēšanu',
|
||||
confirmDuplication: 'Apstiprināt dublēšanu',
|
||||
confirmMove: 'Apstiprināt pārvietošanu',
|
||||
confirmReindex: 'Pārindeksēt visus {{collections}}?',
|
||||
confirmReindexAll: 'Pārindeksēt visas kolekcijas?',
|
||||
confirmReindexDescription:
|
||||
@@ -261,6 +288,8 @@ export const lvTranslations = {
|
||||
globals: 'Globālie',
|
||||
goBack: 'Doties atpakaļ',
|
||||
isEditing: 'redzē',
|
||||
item: 'vienība',
|
||||
items: 'vienības',
|
||||
language: 'Valoda',
|
||||
lastModified: 'Pēdējoreiz mainīts',
|
||||
leaveAnyway: 'Pamest tāpat',
|
||||
@@ -272,8 +301,14 @@ export const lvTranslations = {
|
||||
locales: 'Lokalizācijas',
|
||||
menu: 'Izvēlne',
|
||||
moreOptions: 'Vairāk opciju',
|
||||
move: 'Pārvietoties',
|
||||
moveConfirm:
|
||||
'Jūs gatavojaties pārvietot {{count}} {{label}} uz <1>{{destination}}</1>. Vai esat pārliecināts?',
|
||||
moveCount: 'Pārvietot {{count}} {{label}}',
|
||||
moveDown: 'Pārvietot uz leju',
|
||||
moveUp: 'Pārvietot uz augšu',
|
||||
moving: 'Pārvietojas',
|
||||
movingCount: 'Pārvietojot {{count}} {{label}}',
|
||||
newPassword: 'Jauna parole',
|
||||
next: 'Nākamais',
|
||||
noDateSelected: 'Datums nav izvēlēts',
|
||||
@@ -301,6 +336,7 @@ export const lvTranslations = {
|
||||
reindex: 'Pārindeksēt',
|
||||
reindexingAll: 'Pārindeksē visus {{collections}}.',
|
||||
remove: 'Noņemt',
|
||||
rename: 'Pārdēvēt',
|
||||
reset: 'Atiestatīt',
|
||||
resetPreferences: 'Atiestatīt iestatījumus',
|
||||
resetPreferencesDescription: 'Tas atjaunos visus jūsu iestatījumus uz noklusētajiem.',
|
||||
@@ -311,6 +347,7 @@ export const lvTranslations = {
|
||||
saving: 'Saglabā...',
|
||||
schedulePublishFor: 'Ieplānot publicēšanu priekš {{title}}',
|
||||
searchBy: 'Meklēt pēc {{label}}',
|
||||
select: 'Izvēlieties',
|
||||
selectAll: 'Atlasīt visus {{count}} {{label}}',
|
||||
selectAllRows: 'Atlasīt visas rindas',
|
||||
selectedCount: 'Atlasīti {{count}} {{label}}',
|
||||
|
||||
@@ -175,7 +175,34 @@ export const myTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'ဘလောက်ကို ပြောင်းပါ။',
|
||||
uploadNewLabel: '{{label}} အသစ်တင်မည်။',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Layari mengikut Folder',
|
||||
byFolder: 'Dengan Folder',
|
||||
deleteFolder: 'Padam Folder',
|
||||
folderName: 'ဖိုင်နာမည်',
|
||||
folders: 'Fail',
|
||||
itemHasBeenMoved: '{{title}} telah dipindahkan ke {{folderName}}',
|
||||
itemHasBeenMovedToRoot: '"{{title}}" က ဗဟိုဖိုလ်ဒါသို့ရွှေ့ပြီးပါပြီ။',
|
||||
itemsMovedToFolder: '{{title}} သို့ {{folderName}} သို့ ရွှေ့လိုက်သွားပါပယ်',
|
||||
itemsMovedToRoot: '{{title}} telah dipindahkan ke folder akar',
|
||||
moveFolder: 'Pindah Folder',
|
||||
moveItemsToFolderConfirmation:
|
||||
'သင့်တွင် <1>{{count}} {{label}}</1> <2>{{toFolder}}</2>သို့ ရွှေ့နေသည့်အခါဖြစ်ပါသည်။ သေချာပါသလား?',
|
||||
moveItemsToRootConfirmation:
|
||||
'Anda akan memindahkan <1>{{count}} {{label}}</1> ke folder akar. Adakah anda pasti?',
|
||||
moveItemToFolderConfirmation:
|
||||
'Anda akan memindahkan <1>{{title}}</1> ke <2>{{toFolder}}</2>. Adakah anda pasti?',
|
||||
moveItemToRootConfirmation:
|
||||
'Anda akan memindahkan <1>{{title}}</1> ke folder root. Adakah anda pasti?',
|
||||
movingFromFolder: 'Memindahkan {{title}} dari {{folderName}}',
|
||||
newFolder: 'Folder Baru',
|
||||
noFolder: 'ဖိုလ်ဒါမရှိပါ',
|
||||
renameFolder: 'ဖိုလ်ဒါအမည်ပြောင်းရန်',
|
||||
searchByNameInFolder: 'နာမည်ဖြင့် {{folderName}} တွင် ရှာဖွေပါ',
|
||||
selectFolderForItem: 'Pilih folder untuk {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'နာမည်',
|
||||
aboutToDelete:
|
||||
'{{label}} <1>{{title}}</1> ကို ဖျက်ပါတော့မည်။ သေချာပြီလား။ ဖျက်ပြီးရင် ပြန်မရဘူးနော်။',
|
||||
aboutToDeleteCount_many: 'သင်သည် {{count}} {{label}} ကို ဖျက်ပါတော့မည်။',
|
||||
@@ -206,6 +233,7 @@ export const myTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'အောင်မြင်စေသည့်ကူးထားပြီးအတည်ပြုပါ',
|
||||
confirmDeletion: 'ဖျက်တော့မယ်နော်။',
|
||||
confirmDuplication: 'ပုံတူပွားခြင်းကို အတည်ပြုပါ။',
|
||||
confirmMove: 'Sahkan pergerakan',
|
||||
confirmReindex: 'အပေါ် {{collections}} အားလုံးကို ထပ်လိပ်ပါသလား?',
|
||||
confirmReindexAll: 'အပေါ် ကော်လက်ရှင်းများအားလုံးကို ထပ်လိပ်ပါသလား?',
|
||||
confirmReindexDescription:
|
||||
@@ -263,6 +291,8 @@ export const myTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Globals',
|
||||
goBack: 'နောက်သို့',
|
||||
isEditing: 'ပြင်ဆင်နေသည်',
|
||||
item: 'barang',
|
||||
items: 'barang-barang',
|
||||
language: 'ဘာသာစကား',
|
||||
lastModified: 'နောက်ဆုံးပြင်ဆင်ထားသည်။',
|
||||
leaveAnyway: 'ဘာဖြစ်ဖြစ် ထွက်မည်။',
|
||||
@@ -274,8 +304,14 @@ export const myTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Locales',
|
||||
menu: 'မီနူး',
|
||||
moreOptions: 'ပိုမိုများစွာရွေးချယ်ခွင့်',
|
||||
move: 'ရွှေ့ပြောင်းပါ',
|
||||
moveConfirm:
|
||||
'သင် <1>{{destination}}</1> သို့ {{count}} {{label}} ကို ရွှေ့မည်ဖြစ်သည်။ သင့်တောင်းဆိုမှုကို သေချာပါသလား?',
|
||||
moveCount: 'Pindah {{count}} {{label}}',
|
||||
moveDown: 'Move Down',
|
||||
moveUp: 'Move Up',
|
||||
moving: 'ရွှေ့ပြောင်းခြင်း',
|
||||
movingCount: 'Memindahkan {{count}} {{label}}',
|
||||
newPassword: 'စကားဝှက် အသစ်',
|
||||
next: 'Seterusnya',
|
||||
noDateSelected: 'ရက်စွဲမရွေးချယ်ထားပါ',
|
||||
@@ -303,6 +339,7 @@ export const myTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'ပြန်လည်အညွှန်းပြုလုပ်ပါ',
|
||||
reindexingAll: 'အပေါ် {{collections}} အားလုံးကို ထပ်လိပ်နေပါသည်။',
|
||||
remove: 'ဖယ်ရှားမည်။',
|
||||
rename: 'အမည်ပြောင်း',
|
||||
reset: 'Tetapkan semula',
|
||||
resetPreferences: 'ကြိုတင်သတ်မှတ်ချက်များ ပြန်လည်တပ်ဆင်မည်',
|
||||
resetPreferencesDescription:
|
||||
@@ -314,6 +351,7 @@ export const myTranslations: DefaultTranslationsObject = {
|
||||
saving: 'သိမ်းနေဆဲ ...',
|
||||
schedulePublishFor: 'Jadualkan penerbitan untuk {{title}}',
|
||||
searchBy: 'ရှာဖွေပါ။',
|
||||
select: 'Pilih',
|
||||
selectAll: '{{count}} {{label}} အားလုံးကို ရွေးပါ',
|
||||
selectAllRows: 'အားလုံးကိုရွေးချယ်ပါ',
|
||||
selectedCount: '{{count}} {{label}} ကို ရွေးထားသည်။',
|
||||
|
||||
@@ -174,7 +174,34 @@ export const nbTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Veksle blokk',
|
||||
uploadNewLabel: 'Last opp ny {{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Bla gjennom etter mappe',
|
||||
byFolder: 'Etter mappe',
|
||||
deleteFolder: 'Slett mappe',
|
||||
folderName: 'Mappenavn',
|
||||
folders: 'Mapper',
|
||||
itemHasBeenMoved: '{{title}} er flyttet til {{folderName}}',
|
||||
itemHasBeenMovedToRoot: '{{title}} er flyttet til rotmappen',
|
||||
itemsMovedToFolder: '{{title}} flyttet til {{folderName}}',
|
||||
itemsMovedToRoot: '{{title}} flyttet til rodmappen',
|
||||
moveFolder: 'Flytt mappe',
|
||||
moveItemsToFolderConfirmation:
|
||||
'Du er i ferd med å flytte <1>{{count}} {{label}}</1> til <2>{{toFolder}}</2>. Er du sikker?',
|
||||
moveItemsToRootConfirmation:
|
||||
'Du er i ferd med å flytte <1>{{count}} {{label}}</1> til rotmappen. Er du sikker?',
|
||||
moveItemToFolderConfirmation:
|
||||
'Du er i ferd med å flytte <1>{{title}}</1> til <2>{{toFolder}}</2>. Er du sikker?',
|
||||
moveItemToRootConfirmation:
|
||||
'Du er i ferd med å flytte <1>{{title}}</1> til rodmappen. Er du sikker?',
|
||||
movingFromFolder: 'Flytte {{title}} fra {{folderName}}',
|
||||
newFolder: 'Ny mappe',
|
||||
noFolder: 'Ingen mappe',
|
||||
renameFolder: 'Endre mappenavn',
|
||||
searchByNameInFolder: 'Søk etter navn i {{folderName}}',
|
||||
selectFolderForItem: 'Velg mappe for {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'Navn',
|
||||
aboutToDelete: 'Du er i ferd med å slette {{label}} <1>{{title}}</1>. Er du sikker?',
|
||||
aboutToDeleteCount_many: 'Du er i ferd med å slette {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'Du er i ferd med å slette {{count}} {{label}}',
|
||||
@@ -204,6 +231,7 @@ export const nbTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Bekreft kopi',
|
||||
confirmDeletion: 'Bekreft sletting',
|
||||
confirmDuplication: 'Bekreft duplisering',
|
||||
confirmMove: 'Bekreft flytting',
|
||||
confirmReindex: 'Reindekser alle {{collections}}?',
|
||||
confirmReindexAll: 'Reindekser alle samlinger?',
|
||||
confirmReindexDescription:
|
||||
@@ -261,6 +289,8 @@ export const nbTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Globale variabler',
|
||||
goBack: 'Gå tilbake',
|
||||
isEditing: 'redigerer',
|
||||
item: 'vare',
|
||||
items: 'elementer',
|
||||
language: 'Språk',
|
||||
lastModified: 'Sist endret',
|
||||
leaveAnyway: 'Forlat likevel',
|
||||
@@ -272,8 +302,14 @@ export const nbTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Språk',
|
||||
menu: 'Meny',
|
||||
moreOptions: 'Flere alternativer',
|
||||
move: 'Flytt',
|
||||
moveConfirm:
|
||||
'Du er i ferd med å flytte {{count}} {{label}} til <1>{{destination}}</1>. Er du sikker?',
|
||||
moveCount: 'Flytt {{count}} {{label}}',
|
||||
moveDown: 'Flytt ned',
|
||||
moveUp: 'Flytt opp',
|
||||
moving: 'Flytting',
|
||||
movingCount: 'Flytter {{count}} {{label}}',
|
||||
newPassword: 'Nytt passord',
|
||||
next: 'Neste',
|
||||
noDateSelected: 'Ingen dato valgt',
|
||||
@@ -301,6 +337,7 @@ export const nbTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Reindekser',
|
||||
reindexingAll: 'Reindekserer alle {{collections}}.',
|
||||
remove: 'Fjern',
|
||||
rename: 'Endre navn',
|
||||
reset: 'Tilbakestill',
|
||||
resetPreferences: 'Tilbakestill preferanser',
|
||||
resetPreferencesDescription:
|
||||
@@ -312,6 +349,7 @@ export const nbTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Lagrer...',
|
||||
schedulePublishFor: 'Planlegg publisering for {{title}}',
|
||||
searchBy: 'Søk etter {{label}}',
|
||||
select: 'Velg',
|
||||
selectAll: 'Velg alle {{count}} {{label}}',
|
||||
selectAllRows: 'Velg alle rader',
|
||||
selectedCount: '{{count}} {{label}} valgt',
|
||||
|
||||
@@ -176,7 +176,34 @@ export const nlTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Blok togglen',
|
||||
uploadNewLabel: 'Upload nieuw(e) {{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Bladeren op Map',
|
||||
byFolder: 'Op Map',
|
||||
deleteFolder: 'Verwijder map',
|
||||
folderName: 'Mapnaam',
|
||||
folders: 'Mappen',
|
||||
itemHasBeenMoved: '{{title}} is verplaatst naar {{folderName}}',
|
||||
itemHasBeenMovedToRoot: '{{title}} is verplaatst naar de hoofdmap',
|
||||
itemsMovedToFolder: '{{title}} verplaatst naar {{folderName}}',
|
||||
itemsMovedToRoot: '{{title}} verplaatst naar de hoofdmap',
|
||||
moveFolder: 'Verplaats Map',
|
||||
moveItemsToFolderConfirmation:
|
||||
'U staat op het punt om <1>{{count}} {{label}}</1> te verplaatsen naar <2>{{toFolder}}</2>. Weet u het zeker?',
|
||||
moveItemsToRootConfirmation:
|
||||
'U staat op het punt om <1>{{count}} {{label}}</1> naar de hoofdmap te verplaatsen. Weet u het zeker?',
|
||||
moveItemToFolderConfirmation:
|
||||
'U staat op het punt om <1>{{title}}</1> te verplaatsen naar <2>{{toFolder}}</2>. Weet u het zeker?',
|
||||
moveItemToRootConfirmation:
|
||||
'U staat op het punt om <1>{{title}}</1> naar de hoofdmap te verplaatsen. Weet u het zeker?',
|
||||
movingFromFolder: 'Verplaatsen van {{title}} uit {{folderName}}',
|
||||
newFolder: 'Nieuwe Map',
|
||||
noFolder: 'Geen Map',
|
||||
renameFolder: 'Hernoem Map',
|
||||
searchByNameInFolder: 'Zoeken op naam in {{folderName}}',
|
||||
selectFolderForItem: 'Selecteer map voor {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'Naam',
|
||||
aboutToDelete:
|
||||
'U staat op het punt om {{label}} <1>{{title}}</1> te verwijderen. Weet u het zeker?',
|
||||
aboutToDeleteCount_many: 'Je staat op het punt {{count}} {{label}} te verwijderen',
|
||||
@@ -207,6 +234,7 @@ export const nlTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Bevestig kopie',
|
||||
confirmDeletion: 'Bevestig verwijdering',
|
||||
confirmDuplication: 'Bevestig duplicatie',
|
||||
confirmMove: 'Bevestig verplaatsing',
|
||||
confirmReindex: 'Alle {{collections}} opnieuw indexeren?',
|
||||
confirmReindexAll: 'Alle collecties opnieuw indexeren?',
|
||||
confirmReindexDescription:
|
||||
@@ -264,6 +292,8 @@ export const nlTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Globalen',
|
||||
goBack: 'Ga terug',
|
||||
isEditing: 'is aan het bewerken',
|
||||
item: 'artikel',
|
||||
items: 'artikelen',
|
||||
language: 'Taal',
|
||||
lastModified: 'Laatst gewijzigd',
|
||||
leaveAnyway: 'Toch weggaan',
|
||||
@@ -275,8 +305,14 @@ export const nlTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Landinstellingen',
|
||||
menu: 'Menu',
|
||||
moreOptions: 'Meer opties',
|
||||
move: 'Verplaatsen',
|
||||
moveConfirm:
|
||||
'U staat op het punt om {{count}} {{label}} te verplaatsen naar <1>{{destination}}</1>. Weet u het zeker?',
|
||||
moveCount: 'Verplaats {{count}} {{label}}',
|
||||
moveDown: 'Verplaats naar beneden',
|
||||
moveUp: 'Verplaats naar boven',
|
||||
moving: 'Verhuizen',
|
||||
movingCount: 'Verplaatsen {{count}} {{label}}',
|
||||
newPassword: 'Nieuw wachtwoord',
|
||||
next: 'Volgende',
|
||||
noDateSelected: 'Geen datum geselecteerd',
|
||||
@@ -304,6 +340,7 @@ export const nlTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Herindexeren',
|
||||
reindexingAll: 'Bezig met het opnieuw indexeren van alle {{collections}}.',
|
||||
remove: 'Verwijderen',
|
||||
rename: 'Hernoemen',
|
||||
reset: 'Resetten',
|
||||
resetPreferences: 'Voorkeuren resetten',
|
||||
resetPreferencesDescription:
|
||||
@@ -315,6 +352,7 @@ export const nlTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Bewaren...',
|
||||
schedulePublishFor: 'Plan publicatie voor {{title}}',
|
||||
searchBy: 'Zoeken op {{label}}',
|
||||
select: 'Selecteer',
|
||||
selectAll: 'Alles selecteren {{count}} {{label}}',
|
||||
selectAllRows: 'Selecteer alle rijen',
|
||||
selectedCount: '{{count}} {{label}} geselecteerd',
|
||||
|
||||
@@ -174,7 +174,34 @@ export const plTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Przełącz blok',
|
||||
uploadNewLabel: 'Wrzuć nowy {{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Przeglądaj według folderu',
|
||||
byFolder: 'Według Folderu',
|
||||
deleteFolder: 'Usuń folder',
|
||||
folderName: 'Nazwa folderu',
|
||||
folders: 'Foldery',
|
||||
itemHasBeenMoved: '{{title}} został przeniesiony do {{folderName}}',
|
||||
itemHasBeenMovedToRoot: '{{title}} został przeniesiony do folderu głównego',
|
||||
itemsMovedToFolder: '{{title}} przeniesiono do {{folderName}}',
|
||||
itemsMovedToRoot: '{{title}} został przeniesiony do folderu głównego',
|
||||
moveFolder: 'Przenieś folder',
|
||||
moveItemsToFolderConfirmation:
|
||||
'Zamierzasz przenieść <1>{{count}} {{label}}</1> do <2>{{toFolder}}</2>. Czy jesteś pewien?',
|
||||
moveItemsToRootConfirmation:
|
||||
'Zamierzasz przenieść <1>{{count}} {{label}}</1> do folderu głównego. Czy jesteś pewien?',
|
||||
moveItemToFolderConfirmation:
|
||||
'Zamierzasz przenieść <1>{{title}}</1> do <2>{{toFolder}}</2>. Czy jesteś pewien?',
|
||||
moveItemToRootConfirmation:
|
||||
'Zamierzasz przenieść <1>{{title}}</1> do folderu głównego. Jesteś pewien?',
|
||||
movingFromFolder: 'Przenoszenie {{title}} z {{folderName}}',
|
||||
newFolder: 'Nowy folder',
|
||||
noFolder: 'Brak folderu',
|
||||
renameFolder: 'Zmień nazwę folderu',
|
||||
searchByNameInFolder: 'Szukaj według nazwy w {{folderName}}',
|
||||
selectFolderForItem: 'Wybierz folder dla {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'Nazwa',
|
||||
aboutToDelete: 'Zamierzasz usunąć {{label}} <1>{{title}}</1>. Jesteś pewien?',
|
||||
aboutToDeleteCount_many: 'Zamierzasz usunąć {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'Zamierzasz usunąć {{count}} {{label}}',
|
||||
@@ -204,6 +231,7 @@ export const plTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Potwierdź kopię',
|
||||
confirmDeletion: 'Potwierdź usunięcie',
|
||||
confirmDuplication: 'Potwierdź duplikację',
|
||||
confirmMove: 'Potwierdź przeniesienie',
|
||||
confirmReindex: 'Ponownie zaindeksować wszystkie {{collections}}?',
|
||||
confirmReindexAll: 'Ponownie zaindeksować wszystkie kolekcje?',
|
||||
confirmReindexDescription:
|
||||
@@ -261,6 +289,8 @@ export const plTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Globalne',
|
||||
goBack: 'Wróć',
|
||||
isEditing: 'edytuje',
|
||||
item: 'przedmiot',
|
||||
items: 'przedmioty',
|
||||
language: 'Język',
|
||||
lastModified: 'Ostatnio zmodyfikowany',
|
||||
leaveAnyway: 'Wyjdź mimo to',
|
||||
@@ -272,8 +302,14 @@ export const plTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Ustawienia regionalne',
|
||||
menu: 'Menu',
|
||||
moreOptions: 'Więcej opcji',
|
||||
move: 'Przesuń',
|
||||
moveConfirm:
|
||||
'Zamierzasz przenieść {{count}} {{label}} do <1>{{destination}}</1>. Czy na pewno?',
|
||||
moveCount: 'Przenieś {{count}} {{label}}',
|
||||
moveDown: 'Przesuń niżej',
|
||||
moveUp: 'Przesuń wyżej',
|
||||
moving: 'Przeprowadzka',
|
||||
movingCount: 'Przenoszenie {{count}} {{label}}',
|
||||
newPassword: 'Nowe hasło',
|
||||
next: 'Następny',
|
||||
noDateSelected: 'Nie wybrano daty',
|
||||
@@ -301,6 +337,7 @@ export const plTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Ponowne indeksowanie',
|
||||
reindexingAll: 'Ponowne indeksowanie wszystkich {{collections}}.',
|
||||
remove: 'Usuń',
|
||||
rename: 'Zmień nazwę',
|
||||
reset: 'Zresetuj',
|
||||
resetPreferences: 'Zresetuj preferencje',
|
||||
resetPreferencesDescription: 'To zresetuje wszystkie Twoje preferencje do ustawień domyślnych.',
|
||||
@@ -311,6 +348,7 @@ export const plTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Zapisywanie...',
|
||||
schedulePublishFor: 'Zaplanuj publikację dla {{title}}',
|
||||
searchBy: 'Szukaj według',
|
||||
select: 'Wybierz',
|
||||
selectAll: 'Wybierz wszystkie {{count}} {{label}}',
|
||||
selectAllRows: 'Wybierz wszystkie wiersze',
|
||||
selectedCount: 'Wybrano {{count}} {{label}}',
|
||||
|
||||
@@ -174,7 +174,34 @@ export const ptTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Alternar bloco',
|
||||
uploadNewLabel: 'Carregar novo(a) {{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Navegar por Pasta',
|
||||
byFolder: 'Por Pasta',
|
||||
deleteFolder: 'Apagar Pasta',
|
||||
folderName: 'Nome da Pasta',
|
||||
folders: 'Pastas',
|
||||
itemHasBeenMoved: '{{title}} foi movido para {{folderName}}',
|
||||
itemHasBeenMovedToRoot: '{{title}} foi movido para a pasta raiz',
|
||||
itemsMovedToFolder: '{{title}} movido para {{folderName}}',
|
||||
itemsMovedToRoot: '{{title}} foi movido para a pasta raiz',
|
||||
moveFolder: 'Mover Pasta',
|
||||
moveItemsToFolderConfirmation:
|
||||
'Você está prestes a mover <1>{{count}} {{label}}</1> para <2>{{toFolder}}</2>. Tem certeza?',
|
||||
moveItemsToRootConfirmation:
|
||||
'Você está prestes a mover <1>{{count}} {{label}}</1> para a pasta raiz. Tem certeza?',
|
||||
moveItemToFolderConfirmation:
|
||||
'Você está prestes a mover <1>{{title}}</1> para <2>{{toFolder}}</2>. Tem certeza?',
|
||||
moveItemToRootConfirmation:
|
||||
'Você está prestes a mover <1>{{title}}</1> para a pasta raiz. Tem certeza disso?',
|
||||
movingFromFolder: 'Movendo {{title}} de {{folderName}}',
|
||||
newFolder: 'Nova Pasta',
|
||||
noFolder: 'Sem Pasta',
|
||||
renameFolder: 'Renomear Pasta',
|
||||
searchByNameInFolder: 'Pesquisar por Nome em {{folderName}}',
|
||||
selectFolderForItem: 'Selecione a pasta para {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'Nome',
|
||||
aboutToDelete: 'Você está prestes a excluir o/a {{label}} <1>{{title}}</1>. Tem certeza?',
|
||||
aboutToDeleteCount_many: 'Você está prestes a deletar {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'Você está prestes a deletar {{count}} {{label}}',
|
||||
@@ -204,6 +231,7 @@ export const ptTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Confirme cópia',
|
||||
confirmDeletion: 'Confirmar exclusão',
|
||||
confirmDuplication: 'Confirmar duplicação',
|
||||
confirmMove: 'Confirme a movimentação',
|
||||
confirmReindex: 'Reindexar todas as {{collections}}?',
|
||||
confirmReindexAll: 'Reindexar todas as coleções?',
|
||||
confirmReindexDescription:
|
||||
@@ -261,6 +289,8 @@ export const ptTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Globais',
|
||||
goBack: 'Voltar',
|
||||
isEditing: 'está editando',
|
||||
item: 'item',
|
||||
items: 'itens',
|
||||
language: 'Idioma',
|
||||
lastModified: 'Última modificação',
|
||||
leaveAnyway: 'Sair mesmo assim',
|
||||
@@ -272,8 +302,14 @@ export const ptTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Localizações',
|
||||
menu: 'Cardápio',
|
||||
moreOptions: 'Mais opções',
|
||||
move: 'Mova',
|
||||
moveConfirm:
|
||||
'Você está prestes a mover {{count}} {{label}} para <1>{{destination}}</1>. Tem certeza?',
|
||||
moveCount: 'Mova {{count}} {{label}}',
|
||||
moveDown: 'Mover para Baixo',
|
||||
moveUp: 'Mover para Cima',
|
||||
moving: 'Mudando',
|
||||
movingCount: 'Movendo {{count}} {{label}}',
|
||||
newPassword: 'Nova Senha',
|
||||
next: 'Próximo',
|
||||
noDateSelected: 'Nenhuma data selecionada',
|
||||
@@ -301,6 +337,7 @@ export const ptTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Reindexar',
|
||||
reindexingAll: 'Reindexando todas as {{collections}}.',
|
||||
remove: 'Remover',
|
||||
rename: 'Renomear',
|
||||
reset: 'Redefinir',
|
||||
resetPreferences: 'Redefinir preferências',
|
||||
resetPreferencesDescription:
|
||||
@@ -312,6 +349,7 @@ export const ptTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Salvando...',
|
||||
schedulePublishFor: 'Agendar publicação para {{title}}',
|
||||
searchBy: 'Buscar por {{label}}',
|
||||
select: 'Selecionar',
|
||||
selectAll: 'Selecione tudo {{count}} {{label}}',
|
||||
selectAllRows: 'Selecione todas as linhas',
|
||||
selectedCount: '{{count}} {{label}} selecionado',
|
||||
|
||||
@@ -178,7 +178,34 @@ export const roTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Toggle bloc',
|
||||
uploadNewLabel: 'Încărcați un nou {{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Răsfoiește după Folder',
|
||||
byFolder: 'După dosar',
|
||||
deleteFolder: 'Ștergeți dosarul',
|
||||
folderName: 'Nume dosar',
|
||||
folders: 'Dosare',
|
||||
itemHasBeenMoved: '{{title}} a fost mutat în {{folderName}}',
|
||||
itemHasBeenMovedToRoot: '{{title}} a fost mutat în dosarul rădăcină',
|
||||
itemsMovedToFolder: '{{title}} a fost mutat în {{folderName}}',
|
||||
itemsMovedToRoot: '{{title}} a fost mutat în dosarul rădăcină',
|
||||
moveFolder: 'Mutare Dosar',
|
||||
moveItemsToFolderConfirmation:
|
||||
'Sunteți pe cale să mutați <1>{{count}} {{label}}</1> în <2>{{toFolder}}</2>. Sunteți sigur?',
|
||||
moveItemsToRootConfirmation:
|
||||
'Sunteți pe cale să mutați <1>{{count}} {{label}}</1> în dosarul principal. Sunteți sigur?',
|
||||
moveItemToFolderConfirmation:
|
||||
'Sunteți pe cale să mutați <1>{{title}}</1> în <2>{{toFolder}}</2>. Sunteți sigur?',
|
||||
moveItemToRootConfirmation:
|
||||
'Sunteți pe cale să mutați <1>{{title}}</1> în dosarul rădăcină. Sigur?',
|
||||
movingFromFolder: 'Mutarea {{title}} din {{folderName}}',
|
||||
newFolder: 'Dosar nou',
|
||||
noFolder: 'Niciun dosar',
|
||||
renameFolder: 'Redenumiți dosarul',
|
||||
searchByNameInFolder: 'Căutați după nume în {{folderName}}',
|
||||
selectFolderForItem: 'Selectați dosarul pentru {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'Nume',
|
||||
aboutToDelete: 'Sunteți pe cale să ștergeți {{label}} <1>{{title}}</1>. Sunteți sigur?',
|
||||
aboutToDeleteCount_many: 'Sunteți pe cale să ștergeți {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'Sunteți pe cale să ștergeți {{count}} {{label}}',
|
||||
@@ -208,6 +235,7 @@ export const roTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Confirmă copierea',
|
||||
confirmDeletion: 'Confirmați ștergerea',
|
||||
confirmDuplication: 'Confirmați duplicarea',
|
||||
confirmMove: 'Confirmați mutarea',
|
||||
confirmReindex: 'Reindexați toate {{collections}}?',
|
||||
confirmReindexAll: 'Reindexați toate colecțiile?',
|
||||
confirmReindexDescription:
|
||||
@@ -265,6 +293,8 @@ export const roTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Globale',
|
||||
goBack: 'Înapoi',
|
||||
isEditing: 'editează',
|
||||
item: 'articol',
|
||||
items: 'articole',
|
||||
language: 'Limba',
|
||||
lastModified: 'Ultima modificare',
|
||||
leaveAnyway: 'Pleacă oricum',
|
||||
@@ -276,8 +306,14 @@ export const roTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Localuri',
|
||||
menu: 'Meniu',
|
||||
moreOptions: 'Mai multe opțiuni',
|
||||
move: 'Mutați',
|
||||
moveConfirm:
|
||||
'Sunteți pe cale să mutați {{count}} {{label}} la <1>{{destination}}</1>. Sunteți sigur?',
|
||||
moveCount: 'Mutați {{count}} {{label}}',
|
||||
moveDown: 'Mutați în jos',
|
||||
moveUp: 'Mutați în sus',
|
||||
moving: 'În mișcare',
|
||||
movingCount: 'Mutarea {{count}} {{eticheta}}',
|
||||
newPassword: 'Parolă nouă',
|
||||
next: 'Următorul',
|
||||
noDateSelected: 'Nu a fost selectată nicio dată',
|
||||
@@ -305,6 +341,7 @@ export const roTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Reindexare',
|
||||
reindexingAll: 'Reindexarea tuturor {{collections}}.',
|
||||
remove: 'Eliminați',
|
||||
rename: 'Redenumire',
|
||||
reset: 'Resetare',
|
||||
resetPreferences: 'Resetare preferințe',
|
||||
resetPreferencesDescription: 'Aceasta va reseta toate preferințele tale la setările implicite.',
|
||||
@@ -315,6 +352,7 @@ export const roTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Salvare...',
|
||||
schedulePublishFor: 'Planificați publicarea pentru {{title}}',
|
||||
searchBy: 'Căutați după {{label}}',
|
||||
select: 'Selectați',
|
||||
selectAll: 'Selectați toate {{count}} {{label}}',
|
||||
selectAllRows: 'Selectează toate rândurile',
|
||||
selectedCount: '{{count}} {{label}} selectate',
|
||||
|
||||
@@ -175,7 +175,34 @@ export const rsTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Пребаци блок',
|
||||
uploadNewLabel: 'Учитај нови {{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Pregledajte po folderu',
|
||||
byFolder: 'Po folderu',
|
||||
deleteFolder: 'Obriši fasciklu',
|
||||
folderName: 'Ime fascikle',
|
||||
folders: 'Fascikle',
|
||||
itemHasBeenMoved: '{{title}} je premješten u {{folderName}}',
|
||||
itemHasBeenMovedToRoot: '{{title}} je premešten u osnovni direktorijum.',
|
||||
itemsMovedToFolder: '{{title}} premešten u {{folderName}}',
|
||||
itemsMovedToRoot: '{{title}} pomeren u koreni direktorijum',
|
||||
moveFolder: 'Premesti fasciklu',
|
||||
moveItemsToFolderConfirmation:
|
||||
'Upravo ste na korak da premestite <1>{{count}} {{label}}</1> u <2>{{toFolder}}</2>. Da li ste sigurni?',
|
||||
moveItemsToRootConfirmation:
|
||||
'Управо ћете преместити <1>{{count}} {{label}}</1> у основну фасциклу. Да ли сте сигурни?',
|
||||
moveItemToFolderConfirmation:
|
||||
'Uskoro ćete premestiti <1>{{title}}</1> u <2>{{toFolder}}</2>. Da li ste sigurni?',
|
||||
moveItemToRootConfirmation:
|
||||
'Upravo ćete premestiti <1>{{title}}</1> u osnovnu fasciklu. Da li ste sigurni?',
|
||||
movingFromFolder: 'Premeštanje {{title}} iz {{folderName}}',
|
||||
newFolder: 'Novi folder',
|
||||
noFolder: 'Nema foldera',
|
||||
renameFolder: 'Preimenuj folder',
|
||||
searchByNameInFolder: 'Pretraži po imenu u {{folderName}}',
|
||||
selectFolderForItem: 'Izaberite fasciklu za {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'Ime',
|
||||
aboutToDelete: 'Избрисаћете {{label}} <1>{{title}}</1>. Да ли сте сигурни?',
|
||||
aboutToDeleteCount_many: 'Избрисаћете {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'Избрисаћете {{count}} {{label}}',
|
||||
@@ -204,6 +231,7 @@ export const rsTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Potvrda kopiranja',
|
||||
confirmDeletion: 'Потврди брисање',
|
||||
confirmDuplication: 'Потврди дупликацију',
|
||||
confirmMove: 'Potvrdite pomeranje',
|
||||
confirmReindex: 'Ponovo indeksirati sve {{collections}}?',
|
||||
confirmReindexAll: 'Ponovo indeksirati sve kolekcije?',
|
||||
confirmReindexDescription:
|
||||
@@ -261,6 +289,8 @@ export const rsTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Глобали',
|
||||
goBack: 'Врати се',
|
||||
isEditing: 'уређује',
|
||||
item: 'artikal',
|
||||
items: 'artikli',
|
||||
language: 'Језик',
|
||||
lastModified: 'Задња промена',
|
||||
leaveAnyway: 'Свеједно напусти',
|
||||
@@ -272,8 +302,14 @@ export const rsTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Преводи',
|
||||
menu: 'Мени',
|
||||
moreOptions: 'Više opcija',
|
||||
move: 'Pomeri',
|
||||
moveConfirm:
|
||||
'Upravo ćete premestiti {{count}} {{label}} u <1>{{destination}}</1>. Da li ste sigurni?',
|
||||
moveCount: 'Pomeri {{count}} {{label}}',
|
||||
moveDown: 'Помери доле',
|
||||
moveUp: 'Помери горе',
|
||||
moving: 'Pomeranje',
|
||||
movingCount: 'Pomeranje {{count}} {{label}}',
|
||||
newPassword: 'Нова лозинка',
|
||||
next: 'Следећи',
|
||||
noDateSelected: 'Nije odabran datum',
|
||||
@@ -301,6 +337,7 @@ export const rsTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Реиндексирај',
|
||||
reindexingAll: 'Ponovno indeksiranje svih {{collections}}.',
|
||||
remove: 'Уклони',
|
||||
rename: 'Preimenujte',
|
||||
reset: 'Поново постави',
|
||||
resetPreferences: 'Поништи подешавања',
|
||||
resetPreferencesDescription: 'Ово ће поништити сва ваша подешавања на подразумеване вредности.',
|
||||
@@ -311,6 +348,7 @@ export const rsTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Чување у току...',
|
||||
schedulePublishFor: 'Zakažite objavljivanje za {{title}}',
|
||||
searchBy: 'Тражи по {{label}}',
|
||||
select: 'Izaberite',
|
||||
selectAll: 'Одаберите све {{count}} {{label}}',
|
||||
selectAllRows: 'Одаберите све редове',
|
||||
selectedCount: '{{count}} {{label}} одабрано',
|
||||
|
||||
@@ -175,7 +175,34 @@ export const rsLatinTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Prebaci blok',
|
||||
uploadNewLabel: 'Učitaj novi {{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Pregledaj po Folderu',
|
||||
byFolder: 'Po fascikli',
|
||||
deleteFolder: 'Obriši mapu',
|
||||
folderName: 'Naziv fascikle',
|
||||
folders: 'Fascikle',
|
||||
itemHasBeenMoved: '{{title}} je premesten u {{folderName}}',
|
||||
itemHasBeenMovedToRoot: '{{title}} je premešten u osnovnu fasciklu',
|
||||
itemsMovedToFolder: '{{title}} premešteno u {{folderName}}',
|
||||
itemsMovedToRoot: '{{title}} je premješten u glavnu fasciklu',
|
||||
moveFolder: 'Premesti folder',
|
||||
moveItemsToFolderConfirmation:
|
||||
'Na korak ste da premestite <1>{{count}} {{label}}</1> u <2>{{toFolder}}</2>. Da li ste sigurni?',
|
||||
moveItemsToRootConfirmation:
|
||||
'Uskoro ćete premestiti <1>{{count}} {{label}}</1> u koreni direktorijum. Da li ste sigurni?',
|
||||
moveItemToFolderConfirmation:
|
||||
'Upravo ćete premestiti <1>{{title}}</1> u <2>{{toFolder}}</2>. Da li ste sigurni?',
|
||||
moveItemToRootConfirmation:
|
||||
'Upravo ćete premestiti <1>{{title}}</1> u glavnu fasciklu. Da li ste sigurni?',
|
||||
movingFromFolder: 'Premestanje {{title}} iz {{folderName}}',
|
||||
newFolder: 'Novi Folder',
|
||||
noFolder: 'Nema foldera',
|
||||
renameFolder: 'Preimenuj folder',
|
||||
searchByNameInFolder: 'Pretraga po imenu u {{folderName}}',
|
||||
selectFolderForItem: 'Izaberite fasciklu za {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'Ime',
|
||||
aboutToDelete: 'Izbrisaćete {{label}} <1>{{title}}</1>. Da li ste sigurni?',
|
||||
aboutToDeleteCount_many: 'Izbrisaćete {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'Izbrisaćete {{count}} {{label}}',
|
||||
@@ -204,6 +231,7 @@ export const rsLatinTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Potvrdi kopiju',
|
||||
confirmDeletion: 'Potvrdi brisanje',
|
||||
confirmDuplication: 'Potvrdi duplikaciju',
|
||||
confirmMove: 'Potvrdi pomeranje',
|
||||
confirmReindex: 'Ponovo indeksirati sve {{collections}}?',
|
||||
confirmReindexAll: 'Ponovo indeksirati sve kolekcije?',
|
||||
confirmReindexDescription:
|
||||
@@ -261,6 +289,8 @@ export const rsLatinTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Globali',
|
||||
goBack: 'Vrati se',
|
||||
isEditing: 'uređuje',
|
||||
item: 'stavka',
|
||||
items: 'stavke',
|
||||
language: 'Jezik',
|
||||
lastModified: 'Zadnja promena',
|
||||
leaveAnyway: 'Svejedno napusti',
|
||||
@@ -272,8 +302,14 @@ export const rsLatinTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Prevodi',
|
||||
menu: 'Meni',
|
||||
moreOptions: 'Više opcija',
|
||||
move: 'Pomeri',
|
||||
moveConfirm:
|
||||
'Uskoro ćete premestiti {{count}} {{label}} u <1>{{destination}}</1>. Da li ste sigurni?',
|
||||
moveCount: 'Pomeri {{count}} {{label}}',
|
||||
moveDown: 'Pomeri dole',
|
||||
moveUp: 'Pomeri gore',
|
||||
moving: 'Pomeranje',
|
||||
movingCount: 'Pomeranje {{count}} {{label}}',
|
||||
newPassword: 'Nova lozinka',
|
||||
next: 'Sledeći',
|
||||
noDateSelected: 'Nijedan datum nije odabran',
|
||||
@@ -301,6 +337,7 @@ export const rsLatinTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Reindeksiraj',
|
||||
reindexingAll: 'Ponovno indeksiranje svih {{collections}}.',
|
||||
remove: 'Ukloni',
|
||||
rename: 'Preimenuj',
|
||||
reset: 'Ponovo postavi',
|
||||
resetPreferences: 'Poništi podešavanja',
|
||||
resetPreferencesDescription:
|
||||
@@ -312,6 +349,7 @@ export const rsLatinTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Čuvanje u toku...',
|
||||
schedulePublishFor: 'Zakaži objavljivanje za {{title}}',
|
||||
searchBy: 'Traži po {{label}}',
|
||||
select: 'Izaberite',
|
||||
selectAll: 'Odaberite sve {{count}} {{label}}',
|
||||
selectAllRows: 'Odaberite sve redove',
|
||||
selectedCount: '{{count}} {{label}} odabrano',
|
||||
|
||||
@@ -176,7 +176,34 @@ export const ruTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Переключить Блок',
|
||||
uploadNewLabel: 'Загрузить новый {{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Просмотр по папкам',
|
||||
byFolder: 'По папке',
|
||||
deleteFolder: 'Удалить папку',
|
||||
folderName: 'Название папки',
|
||||
folders: 'Папки',
|
||||
itemHasBeenMoved: '{{title}} был перемещен в {{folderName}}',
|
||||
itemHasBeenMovedToRoot: '{{title}} был перемещен в корневую папку',
|
||||
itemsMovedToFolder: '{{title}} перемещен в {{folderName}}',
|
||||
itemsMovedToRoot: '{{title}} перемещен в корневую папку',
|
||||
moveFolder: 'Переместить папку',
|
||||
moveItemsToFolderConfirmation:
|
||||
'Вы собираетесь переместить <1>{{count}} {{label}}</1> в <2>{{toFolder}}</2>. Вы уверены?',
|
||||
moveItemsToRootConfirmation:
|
||||
'Вы собираетесь перенести <1>{{count}} {{label}}</1> в корневую папку. Вы уверены?',
|
||||
moveItemToFolderConfirmation:
|
||||
'Вы собираетесь переместить <1>{{title}}</1> в <2>{{toFolder}}</2>. Вы уверены?',
|
||||
moveItemToRootConfirmation:
|
||||
'Вы собираетесь переместить <1>{{title}}</1> в корневую папку. Вы уверены?',
|
||||
movingFromFolder: 'Перемещение {{title}} из {{folderName}}',
|
||||
newFolder: 'Новая папка',
|
||||
noFolder: 'Нет папки',
|
||||
renameFolder: 'Переименовать папку',
|
||||
searchByNameInFolder: 'Поиск по имени в {{folderName}}',
|
||||
selectFolderForItem: 'Выберите папку для {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'Имя',
|
||||
aboutToDelete: 'Вы собираетесь удалить {{label}} <1>{{title}}</1>. Вы уверены?',
|
||||
aboutToDeleteCount_many: 'Вы собираетесь удалить {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'Вы собираетесь удалить {{count}} {{label}}',
|
||||
@@ -206,6 +233,7 @@ export const ruTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Подтвердить копирование',
|
||||
confirmDeletion: 'Подтвердить удаление',
|
||||
confirmDuplication: 'Подтвердить копирование',
|
||||
confirmMove: 'Подтвердите перемещение',
|
||||
confirmReindex: 'Переиндексировать все {{collections}}?',
|
||||
confirmReindexAll: 'Переиндексировать все коллекции?',
|
||||
confirmReindexDescription:
|
||||
@@ -263,6 +291,8 @@ export const ruTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Глобальные',
|
||||
goBack: 'Назад',
|
||||
isEditing: 'редактирует',
|
||||
item: 'предмет',
|
||||
items: 'предметы',
|
||||
language: 'Язык',
|
||||
lastModified: 'Последнее изменение',
|
||||
leaveAnyway: 'Все равно уйти',
|
||||
@@ -274,8 +304,14 @@ export const ruTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Локали',
|
||||
menu: 'Меню',
|
||||
moreOptions: 'Больше вариантов',
|
||||
move: 'Переместить',
|
||||
moveConfirm:
|
||||
'Вы собираетесь переместить {{count}} {{label}} в <1>{{destination}}</1>. Вы уверены?',
|
||||
moveCount: 'Переместить {{count}} {{label}}',
|
||||
moveDown: 'Сдвинуть вниз',
|
||||
moveUp: 'Сдвинуть вверх',
|
||||
moving: 'Переезд',
|
||||
movingCount: 'Перемещение {{count}} {{label}}',
|
||||
newPassword: 'Новый пароль',
|
||||
next: 'Следующий',
|
||||
noDateSelected: 'Дата не выбрана',
|
||||
@@ -303,6 +339,7 @@ export const ruTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Переиндексировать',
|
||||
reindexingAll: 'Переиндексирование всех {{collections}}.',
|
||||
remove: 'Удалить',
|
||||
rename: 'Переименовать',
|
||||
reset: 'Сброс',
|
||||
resetPreferences: 'Сбросить настройки',
|
||||
resetPreferencesDescription: 'Это сбросит все ваши настройки до значений по умолчанию.',
|
||||
@@ -313,6 +350,7 @@ export const ruTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Сохранение...',
|
||||
schedulePublishFor: 'Запланировать публикацию для {{title}}',
|
||||
searchBy: 'Искать по',
|
||||
select: 'Выбрать',
|
||||
selectAll: 'Выбрать все {{count}} {{label}}',
|
||||
selectAllRows: 'Выбрать все строки',
|
||||
selectedCount: '{{count}} {{label}} выбрано',
|
||||
|
||||
@@ -177,7 +177,34 @@ export const skTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Prepnúť blok',
|
||||
uploadNewLabel: 'Nahrať nový {{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Prehliadať podľa priečinka',
|
||||
byFolder: 'Podľa priečinka',
|
||||
deleteFolder: 'Odstrániť priečinok',
|
||||
folderName: 'Názov priečinka',
|
||||
folders: 'Priečinky',
|
||||
itemHasBeenMoved: '{{title}} bol presunutý do {{folderName}}',
|
||||
itemHasBeenMovedToRoot: '{{title}} bol presunutý do koreňového priečinka',
|
||||
itemsMovedToFolder: '{{title}} presunuté do {{folderName}}',
|
||||
itemsMovedToRoot: '{{title}} bol presunutý do koreňového priečinka',
|
||||
moveFolder: 'Presunúť priečinok',
|
||||
moveItemsToFolderConfirmation:
|
||||
'Chystáte sa presunúť <1>{{count}} {{label}}</1> do <2>{{toFolder}}</2>. Ste si istý?',
|
||||
moveItemsToRootConfirmation:
|
||||
'Chystáte sa presunúť <1>{{count}} {{label}}</1> do koreňového priečinka. Ste si istý?',
|
||||
moveItemToFolderConfirmation:
|
||||
'Chystáte sa presunúť <1>{{title}}</1> do <2>{{toFolder}}</2>. Ste si istý?',
|
||||
moveItemToRootConfirmation:
|
||||
'Chystáte sa presunúť <1>{{title}}</1> do koreňového priečinka. Ste si istý?',
|
||||
movingFromFolder: 'Presun {{title}} z {{folderName}}',
|
||||
newFolder: 'Nový priečinok',
|
||||
noFolder: 'Žiadna zložka',
|
||||
renameFolder: 'Premenovať priečinok',
|
||||
searchByNameInFolder: 'Hľadaj podľa mena v {{folderName}}',
|
||||
selectFolderForItem: 'Vyberte priečinok pre {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'Meno',
|
||||
aboutToDelete: 'Chystáte sa odstrániť {{label}} <1>{{title}}</1>. Ste si istí?',
|
||||
aboutToDeleteCount_many: 'Chystáte sa zmazať {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'Chystáte sa zmazať {{count}} {{label}}',
|
||||
@@ -206,6 +233,7 @@ export const skTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Potvrdiť kópiu',
|
||||
confirmDeletion: 'Potvrdiť odstránenie',
|
||||
confirmDuplication: 'Potvrdiť duplikáciu',
|
||||
confirmMove: 'Potvrdiť presun',
|
||||
confirmReindex: 'Znova zaindexovať všetky {{collections}}?',
|
||||
confirmReindexAll: 'Znova zaindexovať všetky kolekcie?',
|
||||
confirmReindexDescription:
|
||||
@@ -262,6 +290,8 @@ export const skTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Globalné',
|
||||
goBack: 'Vrátiť sa',
|
||||
isEditing: 'upravuje',
|
||||
item: 'položka',
|
||||
items: 'položky',
|
||||
language: 'Jazyk',
|
||||
lastModified: 'Naposledy zmenené',
|
||||
leaveAnyway: 'Presto odísť',
|
||||
@@ -273,8 +303,13 @@ export const skTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Jazyky',
|
||||
menu: 'Menu',
|
||||
moreOptions: 'Viac možností',
|
||||
move: 'Presuňte sa',
|
||||
moveConfirm: 'Chystáte sa presunúť {{count}} {{label}} do <1>{{destination}}</1>. Ste si istý?',
|
||||
moveCount: 'Presuňte {{count}} {{label}}',
|
||||
moveDown: 'Presunúť dolu',
|
||||
moveUp: 'Presunúť hore',
|
||||
moving: 'Pohybujúci sa',
|
||||
movingCount: 'Presunutie {{count}} {{label}}',
|
||||
newPassword: 'Nové heslo',
|
||||
next: 'Ďalej',
|
||||
noDateSelected: 'Nie je vybraný dátum',
|
||||
@@ -302,6 +337,7 @@ export const skTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Reindexovať',
|
||||
reindexingAll: 'Znova sa indexujú všetky {{collections}}.',
|
||||
remove: 'Odstrániť',
|
||||
rename: 'Premenovať',
|
||||
reset: 'Resetovať',
|
||||
resetPreferences: 'Obnoviť nastavenia',
|
||||
resetPreferencesDescription: 'Týmto sa všetky vaše nastavenia vrátia na predvolené hodnoty.',
|
||||
@@ -312,6 +348,7 @@ export const skTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Ukladanie...',
|
||||
schedulePublishFor: 'Naplánovať publikovanie pre {{title}}',
|
||||
searchBy: 'Vyhľadať podľa {{label}}',
|
||||
select: 'Vyberte',
|
||||
selectAll: 'Vybrať všetko {{count}} {{label}}',
|
||||
selectAllRows: 'Vybrať všetky riadky',
|
||||
selectedCount: 'Vybrané {{count}} {{label}}',
|
||||
|
||||
@@ -174,7 +174,34 @@ export const slTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Preklopi blok',
|
||||
uploadNewLabel: 'Naloži nov {{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Brskaj po mapi',
|
||||
byFolder: 'Po mapi',
|
||||
deleteFolder: 'Izbriši mapo',
|
||||
folderName: 'Ime mape',
|
||||
folders: 'Mape',
|
||||
itemHasBeenMoved: '{{title}} je bil premaknjen v {{folderName}}',
|
||||
itemHasBeenMovedToRoot: '{{title}} je bil premaknjen v korensko mapo.',
|
||||
itemsMovedToFolder: '{{title}} premaknjeno v {{folderName}}',
|
||||
itemsMovedToRoot: '{{title}} premaknjeno v korensko mapo',
|
||||
moveFolder: 'Premakni mapo',
|
||||
moveItemsToFolderConfirmation:
|
||||
'Ravno se pripravljate na premik <1>{{count}} {{label}}</1> v mapo <2>{{toFolder}}</2>. Ste prepričani?',
|
||||
moveItemsToRootConfirmation:
|
||||
'Ravno boste premaknili <1>{{count}} {{label}}</1> v korensko mapo. Ste prepričani?',
|
||||
moveItemToFolderConfirmation:
|
||||
'Pravkar boste premaknili <1>{{title}}</1> v <2>{{toFolder}}</2>. Ste prepričani?',
|
||||
moveItemToRootConfirmation:
|
||||
'Pravkar boste premaknili <1>{{title}}</1> v korensko mapo. Ali ste prepričani?',
|
||||
movingFromFolder: 'Premik {{title}} iz {{folderName}}',
|
||||
newFolder: 'Nova mapa',
|
||||
noFolder: 'Brez mape',
|
||||
renameFolder: 'Preimenuj Mapo',
|
||||
searchByNameInFolder: 'Iskanje po imenu v {{folderName}}',
|
||||
selectFolderForItem: 'Izberite mapo za {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'Ime',
|
||||
aboutToDelete: 'Izbrisali boste {{label}} <1>{{title}}</1>. Ste prepričani?',
|
||||
aboutToDeleteCount_many: 'Izbrisali boste {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'Izbrisali boste {{count}} {{label}}',
|
||||
@@ -204,6 +231,7 @@ export const slTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Potrdi kopiranje',
|
||||
confirmDeletion: 'Potrdi brisanje',
|
||||
confirmDuplication: 'Potrdi podvajanje',
|
||||
confirmMove: 'Potrdi premik',
|
||||
confirmReindex: 'Ponovno indeksirati vse {{collections}}?',
|
||||
confirmReindexAll: 'Ponovno indeksirati vse zbirke?',
|
||||
confirmReindexDescription:
|
||||
@@ -260,6 +288,8 @@ export const slTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Globalne nastavitve',
|
||||
goBack: 'Nazaj',
|
||||
isEditing: 'ureja',
|
||||
item: 'predmet',
|
||||
items: 'predmeti',
|
||||
language: 'Jezik',
|
||||
lastModified: 'Zadnja sprememba',
|
||||
leaveAnyway: 'Vseeno zapusti',
|
||||
@@ -271,8 +301,14 @@ export const slTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Jeziki',
|
||||
menu: 'Meni',
|
||||
moreOptions: 'Več možnosti',
|
||||
move: 'Premakni',
|
||||
moveConfirm:
|
||||
'Pravkar boste premaknili {{count}} {{label}} na <1>{{destination}}</1>. Ste prepričani?',
|
||||
moveCount: 'Premakni {{count}} {{label}}',
|
||||
moveDown: 'Premakni dol',
|
||||
moveUp: 'Premakni gor',
|
||||
moving: 'Premikanje',
|
||||
movingCount: 'Premikanje {{count}} {{label}}',
|
||||
newPassword: 'Novo geslo',
|
||||
next: 'Naprej',
|
||||
noDateSelected: 'Izbran ni noben datum',
|
||||
@@ -300,6 +336,7 @@ export const slTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Reindeksiraj',
|
||||
reindexingAll: 'Ponovno indeksiranje vseh {{collections}}.',
|
||||
remove: 'Odstrani',
|
||||
rename: 'Preimenuj',
|
||||
reset: 'Ponastavi',
|
||||
resetPreferences: 'Ponastavi nastavitve',
|
||||
resetPreferencesDescription: 'To bo ponastavilo vse vaše nastavitve na privzete vrednosti.',
|
||||
@@ -310,6 +347,7 @@ export const slTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Shranjevanje...',
|
||||
schedulePublishFor: 'Načrtujte objavo za {{naslov}}',
|
||||
searchBy: 'Išči po {{label}}',
|
||||
select: 'Izberi',
|
||||
selectAll: 'Izberi vse {{count}} {{label}}',
|
||||
selectAllRows: 'Izberi vse vrstice',
|
||||
selectedCount: '{{count}} {{label}} izbranih',
|
||||
|
||||
@@ -174,7 +174,34 @@ export const svTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Växla block',
|
||||
uploadNewLabel: 'Ladda upp ny {{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Bläddra efter mapp',
|
||||
byFolder: 'Efter mapp',
|
||||
deleteFolder: 'Ta bort mapp',
|
||||
folderName: 'Mappnamn',
|
||||
folders: 'Mappar',
|
||||
itemHasBeenMoved: '{{title}} har flyttats till {{folderName}}',
|
||||
itemHasBeenMovedToRoot: '{{title}} har flyttats till rotmappen',
|
||||
itemsMovedToFolder: '{{title}} flyttad till {{folderName}}',
|
||||
itemsMovedToRoot: '{{titel}} flyttades till rotmappen',
|
||||
moveFolder: 'Flytta mapp',
|
||||
moveItemsToFolderConfirmation:
|
||||
'Du är på väg att flytta <1>{{count}} {{label}}</1> till <2>{{toFolder}}</2>. Är du säker?',
|
||||
moveItemsToRootConfirmation:
|
||||
'Du är på väg att flytta <1>{{count}} {{label}}</1> till root-mappen. Är du säker?',
|
||||
moveItemToFolderConfirmation:
|
||||
'Du håller på att flytta <1>{{title}}</1> till <2>{{toFolder}}</2>. Är du säker?',
|
||||
moveItemToRootConfirmation:
|
||||
'Du är på väg att flytta <1>{{title}}</1> till rotmappen. Är du säker?',
|
||||
movingFromFolder: 'Flyttar {{title}} från {{folderName}}',
|
||||
newFolder: 'Ny mapp',
|
||||
noFolder: 'Ingen mapp',
|
||||
renameFolder: 'Byt namn på mapp',
|
||||
searchByNameInFolder: 'Sök efter namn i {{folderName}}',
|
||||
selectFolderForItem: 'Välj mapp för {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'Namn',
|
||||
aboutToDelete: 'Du är på väg att ta bort {{label}} <1>{{title}}</1>. Är du säker?',
|
||||
aboutToDeleteCount_many: 'Du är på väg att ta bort {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'Du är på väg att ta bort {{count}} {{label}}',
|
||||
@@ -204,6 +231,7 @@ export const svTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Bekräfta kopia',
|
||||
confirmDeletion: 'Bekräfta radering',
|
||||
confirmDuplication: 'Bekräfta dubblering',
|
||||
confirmMove: 'Bekräfta flytt',
|
||||
confirmReindex: 'Omindexera alla {{collections}}?',
|
||||
confirmReindexAll: 'Omindexera alla samlingar?',
|
||||
confirmReindexDescription:
|
||||
@@ -261,6 +289,8 @@ export const svTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Globala',
|
||||
goBack: 'Gå tillbaka',
|
||||
isEditing: 'redigerar',
|
||||
item: 'artikel',
|
||||
items: 'artiklar',
|
||||
language: 'Språk',
|
||||
lastModified: 'Senast ändrad',
|
||||
leaveAnyway: 'Lämna ändå',
|
||||
@@ -272,8 +302,14 @@ export const svTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Språk',
|
||||
menu: 'Meny',
|
||||
moreOptions: 'Fler alternativ',
|
||||
move: 'Flytta',
|
||||
moveConfirm:
|
||||
'Du håller på att flytta {{count}} {{label}} till <1>{{destination}}</1>. Är du säker?',
|
||||
moveCount: 'Flytta {{count}} {{label}}',
|
||||
moveDown: 'Flytta ner',
|
||||
moveUp: 'Flytta upp',
|
||||
moving: 'Flyttar',
|
||||
movingCount: 'Flyttar {{count}} {{label}}',
|
||||
newPassword: 'Nytt lösenord',
|
||||
next: 'Nästa',
|
||||
noDateSelected: 'Inget datum valt',
|
||||
@@ -301,6 +337,7 @@ export const svTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Omindexera',
|
||||
reindexingAll: 'Omindexerar alla {{collections}}...',
|
||||
remove: 'Ta bort',
|
||||
rename: 'Byt namn',
|
||||
reset: 'Återställ',
|
||||
resetPreferences: 'Återställ preferenser',
|
||||
resetPreferencesDescription:
|
||||
@@ -312,6 +349,7 @@ export const svTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Sparar...',
|
||||
schedulePublishFor: 'Schemalägg publicering för {{title}}',
|
||||
searchBy: 'Sök efter {{label}}',
|
||||
select: 'Välj',
|
||||
selectAll: 'Välj alla {{count}} {{label}}',
|
||||
selectAllRows: 'Välj alla rader',
|
||||
selectedCount: '{{count}} {{label}} har valts',
|
||||
|
||||
@@ -171,7 +171,33 @@ export const thTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'เปิด/ปิด Block',
|
||||
uploadNewLabel: 'อัปโหลด {{label}} ใหม่',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'เรียกดูตามโฟลเดอร์',
|
||||
byFolder: 'ตามโฟลเดอร์',
|
||||
deleteFolder: 'ลบโฟลเดอร์',
|
||||
folderName: 'ชื่อโฟลเดอร์',
|
||||
folders: 'โฟลเดอร์',
|
||||
itemHasBeenMoved: '{{title}} ได้ถูกย้ายไปที่ {{folderName}}',
|
||||
itemHasBeenMovedToRoot: '"{{title}}" ได้ถูกย้ายไปยังโฟลเดอร์ราก',
|
||||
itemsMovedToFolder: '{{title}} ถูกย้ายไปยัง {{folderName}}',
|
||||
itemsMovedToRoot: '{{title}} ถูกย้ายไปยังโฟลเดอร์ราก',
|
||||
moveFolder: 'ย้ายโฟลเดอร์',
|
||||
moveItemsToFolderConfirmation:
|
||||
'คุณกำลังจะย้าย <1>{{count}} {{label}}</1> ไปยัง <2>{{toFolder}}</2> แน่ใจไหม?',
|
||||
moveItemsToRootConfirmation:
|
||||
'คุณกำลังจะย้าย <1>{{count}} {{label}}</1> ไปยังโฟลเดอร์ราก คุณแน่ใจหรือไม่?',
|
||||
moveItemToFolderConfirmation:
|
||||
'คุณกำลังจะย้าย <1>{{title}}</1> ไปยัง <2>{{toFolder}}</2> คุณแน่ใจหรือไม่?',
|
||||
moveItemToRootConfirmation: 'คุณกำลังจะย้าย <1>{{title}}</1> ไปยังโฟลเดอร์ราก คุณแน่ใจหรือไม่?',
|
||||
movingFromFolder: 'ย้าย {{title}} จาก {{folderName}}',
|
||||
newFolder: 'โฟลเดอร์ใหม่',
|
||||
noFolder: 'ไม่มีโฟลเดอร์',
|
||||
renameFolder: 'เปลี่ยนชื่อโฟลเดอร์',
|
||||
searchByNameInFolder: 'ค้นหาด้วยชื่อใน {{folderName}}',
|
||||
selectFolderForItem: 'เลือกโฟลเดอร์สำหรับ {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'ชื่อ',
|
||||
aboutToDelete: 'คุณกำลังจะลบ {{label}} <1>{{title}}</1> ต้องการดำเนินการต่อหรือไม่?',
|
||||
aboutToDeleteCount_many: 'คุณกำลังจะลบ {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'คุณกำลังจะลบ {{count}} {{label}}',
|
||||
@@ -200,6 +226,7 @@ export const thTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'ยืนยันสำเนา',
|
||||
confirmDeletion: 'ยืนยันการลบ',
|
||||
confirmDuplication: 'ยืนยันการสำเนา',
|
||||
confirmMove: 'ยืนยันการย้าย',
|
||||
confirmReindex: 'ทำการจัดทำดัชนีใหม่ทั้งหมดใน {{collections}}?',
|
||||
confirmReindexAll: 'ทำการจัดทำดัชนีใหม่ทั้งหมดในทุกคอลเลกชัน?',
|
||||
confirmReindexDescription:
|
||||
@@ -257,6 +284,8 @@ export const thTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Globals',
|
||||
goBack: 'กลับไป',
|
||||
isEditing: 'กำลังแก้ไข',
|
||||
item: 'รายการ',
|
||||
items: 'รายการ',
|
||||
language: 'ภาษา',
|
||||
lastModified: 'แก้ไขล่าสุดเมื่อ',
|
||||
leaveAnyway: 'ออกจากหน้านี้',
|
||||
@@ -268,8 +297,13 @@ export const thTranslations: DefaultTranslationsObject = {
|
||||
locales: 'ภาษา',
|
||||
menu: 'เมนู',
|
||||
moreOptions: 'ตัวเลือกเพิ่มเติม',
|
||||
move: 'ย้าย',
|
||||
moveConfirm: 'คุณกำลังจะย้าย {{count}} {{label}} ไปที่ <1>{{destination}}</1> แน่ใจไหม?',
|
||||
moveCount: 'ย้าย {{count}} {{label}}',
|
||||
moveDown: 'ขยับขึ้น',
|
||||
moveUp: 'ขยับลง',
|
||||
moving: 'การย้ายที่อยู่',
|
||||
movingCount: 'ย้าย {{count}} {{label}}',
|
||||
newPassword: 'รหัสผ่านใหม่',
|
||||
next: 'ถัดไป',
|
||||
noDateSelected: 'ไม่ได้เลือกวันที่',
|
||||
@@ -297,6 +331,7 @@ export const thTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'จัดทำดัชนีใหม่',
|
||||
reindexingAll: 'กำลังทำการจัดทำดัชนีใหม่ทั้งหมดใน {{collections}}.',
|
||||
remove: 'ลบ',
|
||||
rename: 'เปลี่ยนชื่อ',
|
||||
reset: 'รีเซ็ต',
|
||||
resetPreferences: 'รีเซ็ตการตั้งค่า',
|
||||
resetPreferencesDescription: 'การกระทำนี้จะรีเซ็ตการตั้งค่าทั้งหมดของคุณเป็นค่าเริ่มต้น',
|
||||
@@ -307,6 +342,7 @@ export const thTranslations: DefaultTranslationsObject = {
|
||||
saving: 'กำลังบันทึก...',
|
||||
schedulePublishFor: 'ตั้งเวลาเผยแพร่สำหรับ {{title}}',
|
||||
searchBy: 'ค้นหาด้วย {{label}}',
|
||||
select: 'เลือก',
|
||||
selectAll: 'เลือกทั้งหมด {{count}} {{label}}',
|
||||
selectAllRows: 'เลือกทุกแถว',
|
||||
selectedCount: 'เลือก {{count}} {{label}} แล้ว',
|
||||
|
||||
@@ -176,7 +176,34 @@ export const trTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Bloğu aç/kapat',
|
||||
uploadNewLabel: 'Karşıya {{label}} yükle',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Klasöre Göre Gözat',
|
||||
byFolder: 'Klasör Bazında',
|
||||
deleteFolder: 'Klasörü Sil',
|
||||
folderName: 'Klasör Adı',
|
||||
folders: 'Klasörler',
|
||||
itemHasBeenMoved: '{{title}} {{folderName}} klasörüne taşındı.',
|
||||
itemHasBeenMovedToRoot: '{{title}} kök klasöre taşındı.',
|
||||
itemsMovedToFolder: "{{title}} {{folderName}}'ye taşındı.",
|
||||
itemsMovedToRoot: '{{title}} kök klasörüne taşındı',
|
||||
moveFolder: 'Klasörü Taşı',
|
||||
moveItemsToFolderConfirmation:
|
||||
"<1>{{count}} {{label}}</1>'yi <2>{{toFolder}}</2>'ye taşımayı planlıyorsunuz. Emin misiniz?",
|
||||
moveItemsToRootConfirmation:
|
||||
'<1>{{count}} {{label}}</1> kök klasöre taşımayı planlıyorsunuz. Emin misiniz?',
|
||||
moveItemToFolderConfirmation:
|
||||
'<1>{{title}}</1> ögesini <2>{{toFolder}}</2> konumuna taşımak üzeresiniz. Emin misiniz?',
|
||||
moveItemToRootConfirmation:
|
||||
'<1>{{title}}</1> öğesini ana klasöre taşımak üzeresiniz. Emin misiniz?',
|
||||
movingFromFolder: '{{title}} öğesinin {{folderName}} klasöründen taşınması',
|
||||
newFolder: 'Yeni Klasör',
|
||||
noFolder: 'Klasör Yok',
|
||||
renameFolder: 'Klasörü Yeniden Adlandır',
|
||||
searchByNameInFolder: "{{folderName}}'da İsme Göre Ara",
|
||||
selectFolderForItem: '{{title}} için klasör seçin',
|
||||
},
|
||||
general: {
|
||||
name: 'İsim',
|
||||
aboutToDelete:
|
||||
'<1>{{title}}</1> {{label}} silinmek üzere. Silme işlemine devam etmek istiyor musunuz?',
|
||||
aboutToDeleteCount_many: '{{count}} {{label}} silmek üzeresiniz',
|
||||
@@ -207,6 +234,7 @@ export const trTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Kopyayı onayla',
|
||||
confirmDeletion: 'Silmeyi onayla',
|
||||
confirmDuplication: 'Çoğaltmayı onayla',
|
||||
confirmMove: 'Hareketi onayla',
|
||||
confirmReindex: 'Tüm {{collections}} yeniden dizine alınsın mı?',
|
||||
confirmReindexAll: 'Tüm koleksiyonlar yeniden dizine alinsın mı?',
|
||||
confirmReindexDescription:
|
||||
@@ -264,6 +292,8 @@ export const trTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Globaller',
|
||||
goBack: 'Geri dön',
|
||||
isEditing: 'düzenliyor',
|
||||
item: 'öğe',
|
||||
items: 'öğeler',
|
||||
language: 'Dil',
|
||||
lastModified: 'Son değiştirme',
|
||||
leaveAnyway: 'Yine de ayrıl',
|
||||
@@ -275,8 +305,14 @@ export const trTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Diller',
|
||||
menu: 'Menü',
|
||||
moreOptions: 'Daha fazla seçenek',
|
||||
move: 'Hareket et',
|
||||
moveConfirm:
|
||||
'<1>{{destination}}</1> konumuna {{count}} {{label}} taşımayı planlıyorsunuz. Emin misiniz?',
|
||||
moveCount: '{{count}} {{label}} taşı',
|
||||
moveDown: 'Aşağı taşı',
|
||||
moveUp: 'Yukarı taşı',
|
||||
moving: 'Taşınma',
|
||||
movingCount: '{{count}} {{label}} taşıma',
|
||||
newPassword: 'Yeni parola',
|
||||
next: 'Sonraki',
|
||||
noDateSelected: 'Tarih seçilmedi',
|
||||
@@ -304,6 +340,7 @@ export const trTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Yeniden İndeksle',
|
||||
reindexingAll: 'Tüm {{collections}} yeniden dizine alınıyor.',
|
||||
remove: 'Kaldır',
|
||||
rename: 'Yeniden adlandır',
|
||||
reset: 'Sıfırla',
|
||||
resetPreferences: 'Tercihleri sıfırla',
|
||||
resetPreferencesDescription:
|
||||
@@ -315,6 +352,7 @@ export const trTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Kaydediliyor...',
|
||||
schedulePublishFor: '{{title}} için yayınlama programı ayarlayın.',
|
||||
searchBy: 'Şuna göre sırala: {{label}}',
|
||||
select: 'Seçiniz',
|
||||
selectAll: "Tüm {{count}} {{label}}'ı seçin",
|
||||
selectAllRows: 'Tüm satırları seçin',
|
||||
selectedCount: '{{count}} {{label}} seçildi',
|
||||
|
||||
@@ -175,7 +175,34 @@ export const ukTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Перемкнути блок',
|
||||
uploadNewLabel: 'Завантажити новий {{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Переглянути за папкою',
|
||||
byFolder: 'За папкою',
|
||||
deleteFolder: 'Видалити папку',
|
||||
folderName: 'Назва папки',
|
||||
folders: 'Папки',
|
||||
itemHasBeenMoved: '{{title}} було переміщено до {{folderName}}',
|
||||
itemHasBeenMovedToRoot: '{{title}} був переміщений до кореневої папки',
|
||||
itemsMovedToFolder: '{{title}} перенесено до {{folderName}}',
|
||||
itemsMovedToRoot: '{{title}} переміщено до кореневої папки',
|
||||
moveFolder: 'Перемістити папку',
|
||||
moveItemsToFolderConfirmation:
|
||||
'Ви збираєтесь перемістити <1>{{count}} {{label}}</1> до <2>{{toFolder}}</2>. Ви впевнені?',
|
||||
moveItemsToRootConfirmation:
|
||||
'Ви збираєтеся перемістити <1>{{count}} {{label}}</1> до кореневої папки. Ви впевнені?',
|
||||
moveItemToFolderConfirmation:
|
||||
'Ви збираєтеся перемістити <1>{{title}}</1> до <2>{{toFolder}}</2>. Ви впевнені?',
|
||||
moveItemToRootConfirmation:
|
||||
'Ви збираєтеся перемістити <1>{{title}}</1> до кореневої папки. Ви впевнені?',
|
||||
movingFromFolder: 'Переміщення {{title}} з {{folderName}}',
|
||||
newFolder: 'Нова папка',
|
||||
noFolder: 'Немає папки',
|
||||
renameFolder: 'Перейменувати папку',
|
||||
searchByNameInFolder: 'Пошук за назвою у {{folderName}}',
|
||||
selectFolderForItem: 'Виберіть папку для {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: "Ім'я",
|
||||
aboutToDelete: 'Ви бажаєте видалити {{label}} <1>{{title}}</1>. Ви впевнені?',
|
||||
aboutToDeleteCount_many: 'Ви бажаєте видалити {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'Ви бажаєте видалити {{count}} {{label}}',
|
||||
@@ -204,6 +231,7 @@ export const ukTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Підтвердіть копію',
|
||||
confirmDeletion: 'Підтвердити видалення',
|
||||
confirmDuplication: 'Підтвердити копіювання',
|
||||
confirmMove: 'Підтвердити переїзд',
|
||||
confirmReindex: 'Перебудувати індекс для всіх {{collections}}?',
|
||||
confirmReindexAll: 'Перебудувати індекс для всіх колекцій?',
|
||||
confirmReindexDescription:
|
||||
@@ -260,6 +288,8 @@ export const ukTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Глобальні',
|
||||
goBack: 'Повернутися',
|
||||
isEditing: 'редагує',
|
||||
item: 'предмет',
|
||||
items: 'предмети',
|
||||
language: 'Мова',
|
||||
lastModified: 'Останні зміни',
|
||||
leaveAnyway: 'Все одно вийти',
|
||||
@@ -271,8 +301,14 @@ export const ukTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Локалі',
|
||||
menu: 'Меню',
|
||||
moreOptions: 'Більше варіантів',
|
||||
move: 'Рухайтесь',
|
||||
moveConfirm:
|
||||
'Ви збираєтесь перемістити {{count}} {{label}} до <1>{{destination}}</1>. Ви впевнені?',
|
||||
moveCount: 'Перемістити {{count}} {{label}}',
|
||||
moveDown: 'Перемістити нижче',
|
||||
moveUp: 'Перемістити вище',
|
||||
moving: 'Переїзд',
|
||||
movingCount: 'Переміщення {{count}} {{label}}',
|
||||
newPassword: 'Новий пароль',
|
||||
next: 'Наступний',
|
||||
noDateSelected: 'Не вибрано жодної дати',
|
||||
@@ -300,6 +336,7 @@ export const ukTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Повторне індексування',
|
||||
reindexingAll: 'Перебудова індексів для всіх {{collections}}.',
|
||||
remove: 'Видалити',
|
||||
rename: 'Перейменувати',
|
||||
reset: 'Скидання',
|
||||
resetPreferences: 'Скинути налаштування',
|
||||
resetPreferencesDescription: 'Це скине всі ваші налаштування до значень за замовчуванням.',
|
||||
@@ -310,6 +347,7 @@ export const ukTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Збереження...',
|
||||
schedulePublishFor: 'Запланувати публікацію для {{title}}',
|
||||
searchBy: 'Шукати по {{label}}',
|
||||
select: 'Вибрати',
|
||||
selectAll: 'Вибрати всі {{count}} {{label}}',
|
||||
selectAllRows: 'Обрати всі рядки',
|
||||
selectedCount: 'Обрано {{count}} {{label}}',
|
||||
|
||||
@@ -174,7 +174,34 @@ export const viTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: 'Bật/tắt block',
|
||||
uploadNewLabel: 'Tải lên bản mới: {{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: 'Duyệt theo Thư mục',
|
||||
byFolder: 'Theo Thư mục',
|
||||
deleteFolder: 'Xóa Thư mục',
|
||||
folderName: 'Tên thư mục',
|
||||
folders: 'Thư mục',
|
||||
itemHasBeenMoved: '{{title}} đã được chuyển đến {{folderName}}',
|
||||
itemHasBeenMovedToRoot: '{{title}} đã được chuyển đến thư mục gốc',
|
||||
itemsMovedToFolder: '{{title}} đã được di chuyển vào {{folderName}}',
|
||||
itemsMovedToRoot: '{{title}} đã được di chuyển vào thư mục gốc',
|
||||
moveFolder: 'Di chuyển thư mục',
|
||||
moveItemsToFolderConfirmation:
|
||||
'Bạn sắp chuyển <1>{{count}} {{label}}</1> tới <2>{{toFolder}}</2>. Bạn có chắc chắn không?',
|
||||
moveItemsToRootConfirmation:
|
||||
'Bạn đang chuẩn bị di chuyển <1>{{count}} {{label}}</1> đến thư mục gốc. Bạn có chắc không?',
|
||||
moveItemToFolderConfirmation:
|
||||
'Bạn sắp chuyển <1>{{title}}</1> đến <2>{{toFolder}}</2>. Bạn có chắc không?',
|
||||
moveItemToRootConfirmation:
|
||||
'Bạn đang chuẩn bị di chuyển <1>{{title}}</1> đến thư mục gốc. Bạn có chắc chắn không?',
|
||||
movingFromFolder: 'Di chuyển {{title}} từ {{folderName}}',
|
||||
newFolder: 'Thư mục mới',
|
||||
noFolder: 'Không có Thư mục',
|
||||
renameFolder: 'Đổi tên thư mục',
|
||||
searchByNameInFolder: 'Tìm kiếm theo Tên trong {{folderName}}',
|
||||
selectFolderForItem: 'Chọn thư mục cho {{title}}',
|
||||
},
|
||||
general: {
|
||||
name: 'Tên',
|
||||
aboutToDelete: 'Chuẩn bị xóa {{label}} <1>{{title}}</1>. Bạn có muốn tiếp tục không?',
|
||||
aboutToDeleteCount_many: 'Bạn sắp xóa {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: 'Bạn sắp xóa {{count}} {{label}}',
|
||||
@@ -203,6 +230,7 @@ export const viTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Xác nhận bản sao',
|
||||
confirmDeletion: 'Xác nhận xóa',
|
||||
confirmDuplication: 'Xác nhận tạo bản sao',
|
||||
confirmMove: 'Xác nhận di chuyển',
|
||||
confirmReindex: 'Tái lập chỉ mục tất cả {{collections}}?',
|
||||
confirmReindexAll: 'Tái lập chỉ mục tất cả các bộ sưu tập?',
|
||||
confirmReindexDescription:
|
||||
@@ -260,6 +288,8 @@ export const viTranslations: DefaultTranslationsObject = {
|
||||
globals: 'Toàn thể (globals)',
|
||||
goBack: 'Quay lại',
|
||||
isEditing: 'đang chỉnh sửa',
|
||||
item: 'mặt hàng',
|
||||
items: 'mặt hàng',
|
||||
language: 'Ngôn ngữ',
|
||||
lastModified: 'Chỉnh sửa lần cuối vào lúc',
|
||||
leaveAnyway: 'Tiếp tục thoát',
|
||||
@@ -271,8 +301,14 @@ export const viTranslations: DefaultTranslationsObject = {
|
||||
locales: 'Khu vực',
|
||||
menu: 'Thực đơn',
|
||||
moreOptions: 'Nhiều lựa chọn hơn',
|
||||
move: 'Di chuyển',
|
||||
moveConfirm:
|
||||
'Bạn sắp chuyển {{count}} {{label}} đến <1>{{destination}}</1>. Bạn có chắc chắn không?',
|
||||
moveCount: 'Di chuyển {{count}} {{label}}',
|
||||
moveDown: 'Di chuyển xuống',
|
||||
moveUp: 'Di chuyển lên',
|
||||
moving: 'Di chuyển',
|
||||
movingCount: 'Di chuyển {{count}} {{label}}',
|
||||
newPassword: 'Mật khảu mới',
|
||||
next: 'Tiếp theo',
|
||||
noDateSelected: 'Không có ngày nào được chọn',
|
||||
@@ -300,6 +336,7 @@ export const viTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Tái lập chỉ mục',
|
||||
reindexingAll: 'Đang tái lập chỉ mục tất cả {{collections}}.',
|
||||
remove: 'Loại bỏ',
|
||||
rename: 'Đổi tên',
|
||||
reset: 'Đặt lại',
|
||||
resetPreferences: 'Đặt lại sở thích',
|
||||
resetPreferencesDescription: 'Điều này sẽ đặt lại tất cả sở thích của bạn về cài đặt mặc định.',
|
||||
@@ -310,6 +347,7 @@ export const viTranslations: DefaultTranslationsObject = {
|
||||
saving: 'Đang lưu...',
|
||||
schedulePublishFor: 'Lên lịch xuất bản cho {{title}}',
|
||||
searchBy: 'Tìm với {{label}}',
|
||||
select: 'Chọn',
|
||||
selectAll: 'Chọn tất cả {{count}} {{label}}',
|
||||
selectAllRows: 'Chọn tất cả các hàng',
|
||||
selectedCount: 'Đã chọn {{count}} {{label}}',
|
||||
|
||||
@@ -168,7 +168,31 @@ export const zhTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: '切换块',
|
||||
uploadNewLabel: '上传新的{{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: '按文件夹浏览',
|
||||
byFolder: '按文件夹',
|
||||
deleteFolder: '删除文件夹',
|
||||
folderName: '文件夹名称',
|
||||
folders: '文件夹',
|
||||
itemHasBeenMoved: '{{title}}已被移至{{folderName}}',
|
||||
itemHasBeenMovedToRoot: '{{title}}已被移至根文件夹',
|
||||
itemsMovedToFolder: '{{title}}已移至{{folderName}}',
|
||||
itemsMovedToRoot: '{{title}}已移至根文件夹',
|
||||
moveFolder: '移动文件夹',
|
||||
moveItemsToFolderConfirmation:
|
||||
'您即将将<1>{{count}} {{label}}</1>移动到<2>{{toFolder}}</2>.您确定吗?',
|
||||
moveItemsToRootConfirmation: '您即将将<1>{{count}} {{label}}</1>移动到根文件夹。您确定吗?',
|
||||
moveItemToFolderConfirmation: '您即将把<1>{{title}}</1>移动至<2>{{toFolder}}</2>。您确定吗?',
|
||||
moveItemToRootConfirmation: '您即将把<1>{{title}}</1>移动到根文件夹。你确定吗?',
|
||||
movingFromFolder: '将{{title}}从{{folderName}}移动',
|
||||
newFolder: '新文件夹',
|
||||
noFolder: '没有文件夹',
|
||||
renameFolder: '重命名文件夹',
|
||||
searchByNameInFolder: '在{{folderName}}中按名称搜索',
|
||||
selectFolderForItem: '选择文件夹用于{{title}}',
|
||||
},
|
||||
general: {
|
||||
name: '名称',
|
||||
aboutToDelete: '您即将删除{{label}} <1>{{title}}</1>。您确定要继续吗?',
|
||||
aboutToDeleteCount_many: '您即将删除 {{count}} {{label}}',
|
||||
aboutToDeleteCount_one: '您即将删除 {{count}} {{label}}',
|
||||
@@ -197,6 +221,7 @@ export const zhTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: '确认复制',
|
||||
confirmDeletion: '确认删除',
|
||||
confirmDuplication: '确认重复',
|
||||
confirmMove: '确认移动',
|
||||
confirmReindex: '重新索引所有{{collections}}?',
|
||||
confirmReindexAll: '重新索引所有集合?',
|
||||
confirmReindexDescription: '此操作将删除现有索引,并重新索引{{collections}}集合中的文档。',
|
||||
@@ -251,6 +276,8 @@ export const zhTranslations: DefaultTranslationsObject = {
|
||||
globals: '全局',
|
||||
goBack: '返回',
|
||||
isEditing: '正在编辑',
|
||||
item: '项目',
|
||||
items: '项目',
|
||||
language: '语言',
|
||||
lastModified: '最后修改',
|
||||
leaveAnyway: '无论如何都要离开',
|
||||
@@ -262,8 +289,13 @@ export const zhTranslations: DefaultTranslationsObject = {
|
||||
locales: '语言环境',
|
||||
menu: '菜单',
|
||||
moreOptions: '更多选项',
|
||||
move: '移动',
|
||||
moveConfirm: '您即将把{{count}}个{{label}}移动到<1>{{destination}}</1>。您确定吗?',
|
||||
moveCount: '移动 {{count}} {{label}}',
|
||||
moveDown: '向下移动',
|
||||
moveUp: '向上移动',
|
||||
moving: '移动',
|
||||
movingCount: '移动 {{count}} {{label}}',
|
||||
newPassword: '新密码',
|
||||
next: '下一个',
|
||||
noDateSelected: '未选择日期',
|
||||
@@ -290,6 +322,7 @@ export const zhTranslations: DefaultTranslationsObject = {
|
||||
reindex: '重新索引',
|
||||
reindexingAll: '正在重新索引所有{{collections}}。',
|
||||
remove: '移除',
|
||||
rename: '重命名',
|
||||
reset: '重置',
|
||||
resetPreferences: '重置偏好设置',
|
||||
resetPreferencesDescription: '这将把您的所有偏好设置恢复为默认值。',
|
||||
@@ -300,6 +333,7 @@ export const zhTranslations: DefaultTranslationsObject = {
|
||||
saving: '保存中...',
|
||||
schedulePublishFor: '为{{title}}安排发布时间',
|
||||
searchBy: '搜索{{label}}',
|
||||
select: '选择',
|
||||
selectAll: '选择所有 {{count}} {{label}}',
|
||||
selectAllRows: '选择所有行',
|
||||
selectedCount: '已选择 {{count}} {{label}}',
|
||||
|
||||
@@ -168,7 +168,31 @@ export const zhTwTranslations: DefaultTranslationsObject = {
|
||||
toggleBlock: '切換區塊',
|
||||
uploadNewLabel: '上傳新的{{label}}',
|
||||
},
|
||||
folder: {
|
||||
browseByFolder: '按資料夾瀏覽',
|
||||
byFolder: '按資料夾',
|
||||
deleteFolder: '刪除資料夾',
|
||||
folderName: '資料夾名稱',
|
||||
folders: '資料夾',
|
||||
itemHasBeenMoved: '{{title}}已被移至{{folderName}}',
|
||||
itemHasBeenMovedToRoot: '{{title}}已被移至根文件夾',
|
||||
itemsMovedToFolder: '{{title}} 已移至 {{folderName}}',
|
||||
itemsMovedToRoot: '{{title}}已經移至根資料夾',
|
||||
moveFolder: '移動資料夾',
|
||||
moveItemsToFolderConfirmation:
|
||||
'您即將將 <1>{{count}} {{label}}</1> 移至 <2>{{toFolder}}</2>。您確定嗎?',
|
||||
moveItemsToRootConfirmation: '您即將移動<1>{{count}} {{label}}</1>至根文件夾。您確定嗎?',
|
||||
moveItemToFolderConfirmation: '您即將將<1>{{title}}</1>移至<2>{{toFolder}}</2>。您確定嗎?',
|
||||
moveItemToRootConfirmation: '您即將把<1>{{title}}</1>移至根目錄。您確定嗎?',
|
||||
movingFromFolder: '將 {{title}} 從 {{folderName}} 移出',
|
||||
newFolder: '新資料夾',
|
||||
noFolder: '沒有資料夾',
|
||||
renameFolder: '重命名資料夾',
|
||||
searchByNameInFolder: '在{{folderName}}中按名稱搜尋',
|
||||
selectFolderForItem: '選擇{{title}}的資料夾',
|
||||
},
|
||||
general: {
|
||||
name: '名稱',
|
||||
aboutToDelete: '您即將刪除{{label}} <1>{{title}}</1>。您確定要繼續嗎?',
|
||||
aboutToDeleteCount_many: '您即將刪除 {{count}} 個 {{label}}',
|
||||
aboutToDeleteCount_one: '您即將刪除 {{count}} 個 {{label}}',
|
||||
@@ -197,6 +221,7 @@ export const zhTwTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: '確認副本',
|
||||
confirmDeletion: '確認刪除',
|
||||
confirmDuplication: '確認複製',
|
||||
confirmMove: '確認移動',
|
||||
confirmReindex: '重新索引所有{{collections}}?',
|
||||
confirmReindexAll: '重新索引所有集合?',
|
||||
confirmReindexDescription: '此操作將刪除現有索引並重新索引{{collections}}集合中的文件。',
|
||||
@@ -251,6 +276,8 @@ export const zhTwTranslations: DefaultTranslationsObject = {
|
||||
globals: '全域',
|
||||
goBack: '返回',
|
||||
isEditing: '正在編輯',
|
||||
item: '物品',
|
||||
items: '項目',
|
||||
language: '語言',
|
||||
lastModified: '最後修改',
|
||||
leaveAnyway: '無論如何都要離開',
|
||||
@@ -262,8 +289,13 @@ export const zhTwTranslations: DefaultTranslationsObject = {
|
||||
locales: '語言環境',
|
||||
menu: '菜單',
|
||||
moreOptions: '更多選項',
|
||||
move: '移動',
|
||||
moveConfirm: '您即將移動 {{count}} {{label}} 到 <1>{{destination}}</1>。您確定嗎?',
|
||||
moveCount: '移動 {{count}} {{label}}',
|
||||
moveDown: '向下移動',
|
||||
moveUp: '向上移動',
|
||||
moving: '移動',
|
||||
movingCount: '移動 {{count}} {{label}}',
|
||||
newPassword: '新密碼',
|
||||
next: '下一個',
|
||||
noDateSelected: '未選擇日期',
|
||||
@@ -290,6 +322,7 @@ export const zhTwTranslations: DefaultTranslationsObject = {
|
||||
reindex: '重新索引',
|
||||
reindexingAll: '正在重新索引所有{{collections}}。',
|
||||
remove: '移除',
|
||||
rename: '重新命名',
|
||||
reset: '重設',
|
||||
resetPreferences: '重設偏好設定',
|
||||
resetPreferencesDescription: '這將把您的所有偏好設定恢復為預設值。',
|
||||
@@ -300,6 +333,7 @@ export const zhTwTranslations: DefaultTranslationsObject = {
|
||||
saving: '儲存中...',
|
||||
schedulePublishFor: '為{{title}}設定發佈時間',
|
||||
searchBy: '搜尋{{label}}',
|
||||
select: '選擇',
|
||||
selectAll: '選擇所有 {{count}} 個 {{label}}',
|
||||
selectAllRows: '選擇所有行',
|
||||
selectedCount: '已選擇 {{count}} 個 {{label}}',
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
{
|
||||
"extends": "../../tsconfig.base.json",
|
||||
"include": [
|
||||
"./src/**/*.ts",
|
||||
],
|
||||
}
|
||||
|
||||
@@ -119,6 +119,7 @@
|
||||
"@date-fns/tz": "1.2.0",
|
||||
"@dnd-kit/core": "6.0.8",
|
||||
"@dnd-kit/sortable": "7.0.2",
|
||||
"@dnd-kit/utilities": "3.2.2",
|
||||
"@faceless-ui/modal": "3.0.0-beta.2",
|
||||
"@faceless-ui/scroll-info": "2.0.0",
|
||||
"@faceless-ui/window-info": "3.0.1",
|
||||
|
||||
@@ -27,7 +27,7 @@ export function ActionsBar({ collectionConfig }: Props) {
|
||||
<div className={`${baseClass}__navigation`}>
|
||||
<p className={`${baseClass}__locationText`}>
|
||||
<strong>{activeIndex + 1}</strong>
|
||||
{' of '}
|
||||
{` ${t('general:of')} `}
|
||||
<strong>{forms.length}</strong>
|
||||
</p>
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ export function AddFilesView({ acceptMimeTypes, onCancel, onDrop }: Props) {
|
||||
<div className={`${baseClass}__dropArea`}>
|
||||
<Dropzone multipleFiles onChange={onDrop}>
|
||||
<Button
|
||||
buttonStyle="pill"
|
||||
buttonStyle="subtle"
|
||||
iconPosition="left"
|
||||
onClick={() => {
|
||||
if (inputRef.current) {
|
||||
|
||||
@@ -19,6 +19,7 @@ import { useServerFunctions } from '../../../providers/ServerFunctions/index.js'
|
||||
import { abortAndIgnore, handleAbortRef } from '../../../utilities/abortAndIgnore.js'
|
||||
import { useDocumentDrawerContext } from '../../DocumentDrawer/Provider.js'
|
||||
import { DocumentFields } from '../../DocumentFields/index.js'
|
||||
import { MoveDocToFolder } from '../../FolderView/MoveDocToFolder/index.js'
|
||||
import { Upload_v4 } from '../../Upload/index.js'
|
||||
import { useFormsManager } from '../FormsManager/index.js'
|
||||
import { BulkUploadProvider } from '../index.js'
|
||||
@@ -54,6 +55,7 @@ export function EditForm({
|
||||
|
||||
const {
|
||||
config: {
|
||||
folders,
|
||||
routes: { admin: adminRoute },
|
||||
},
|
||||
getEntityConfig,
|
||||
@@ -166,6 +168,18 @@ export function EditForm({
|
||||
{CustomUpload || (
|
||||
<Upload_v4
|
||||
collectionSlug={collectionConfig.slug}
|
||||
customActions={[
|
||||
folders.enabled &&
|
||||
Object.keys(folders.collections).includes(collectionSlug) && (
|
||||
<MoveDocToFolder
|
||||
buttonProps={{
|
||||
buttonStyle: 'pill',
|
||||
size: 'small',
|
||||
}}
|
||||
key="move-doc-to-folder"
|
||||
/>
|
||||
),
|
||||
].filter(Boolean)}
|
||||
initialState={initialState}
|
||||
resetUploadEdits={resetUploadEdits}
|
||||
updateUploadEdits={updateUploadEdits}
|
||||
|
||||
@@ -13,11 +13,12 @@
|
||||
}
|
||||
|
||||
.btn {
|
||||
--btn-font-weight: normal;
|
||||
* {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
// colors
|
||||
// button aesthetic styles
|
||||
&--style-primary {
|
||||
--color: var(--theme-elevation-0);
|
||||
--bg-color: var(--theme-elevation-800);
|
||||
@@ -51,7 +52,7 @@
|
||||
&--style-pill {
|
||||
--bg-color: var(--theme-elevation-150);
|
||||
--color: var(--theme-elevation-800);
|
||||
--hover-color: var(--color);
|
||||
--hover-color: var(--theme-elevation-800);
|
||||
--hover-bg: var(--theme-elevation-100);
|
||||
|
||||
&.btn--disabled {
|
||||
@@ -60,6 +61,60 @@
|
||||
--hover-color: var(--color);
|
||||
}
|
||||
}
|
||||
|
||||
// colors and padding are mixed on this class
|
||||
&--style-icon-label,
|
||||
&--style-icon-label.btn--icon-position-left,
|
||||
&--style-icon-label.btn--icon-position-right {
|
||||
padding: 0;
|
||||
font-weight: 600;
|
||||
--color: var(--theme-text);
|
||||
--bg-color: transparent;
|
||||
--hover-color: var(--theme-elevation-600);
|
||||
|
||||
&.btn--disabled {
|
||||
--color: var(--theme-elevation-200);
|
||||
--hover-color: var(--color);
|
||||
}
|
||||
|
||||
.btn__content {
|
||||
--btn-icon-content-gap: calc(var(--base) * 0.4);
|
||||
}
|
||||
}
|
||||
|
||||
&--style-subtle {
|
||||
--color: var(--theme-text);
|
||||
--bg-color: var(--theme-elevation-100);
|
||||
--hover-bg: var(--theme-elevation-150);
|
||||
--box-shadow: inset 0 0 0 1px var(--theme-elevation-200);
|
||||
--hover-box-shadow: inset 0 0 0 1px var(--theme-elevation-250);
|
||||
|
||||
&.btn--disabled {
|
||||
--color: var(--theme-elevation-450);
|
||||
--hover-box-shadow: var(--box-shadow);
|
||||
--hover-bg: var(--bg-color);
|
||||
--hover-color: var(--color);
|
||||
}
|
||||
}
|
||||
|
||||
&--style-tab {
|
||||
--bg-color: transparent;
|
||||
--hover-bg: var(--theme-elevation-50);
|
||||
--color: var(--theme-text);
|
||||
--btn-font-weight: 500;
|
||||
|
||||
&.btn--disabled {
|
||||
--btn-font-weight: 600;
|
||||
--hover-box-shadow: var(--box-shadow);
|
||||
--bg-color: var(--theme-elevation-100);
|
||||
--hover-bg: var(--bg-color);
|
||||
--hover-color: var(--color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.popup--active .btn {
|
||||
background-color: var(--hover-bg);
|
||||
}
|
||||
|
||||
.btn--withPopup {
|
||||
@@ -111,26 +166,48 @@
|
||||
}
|
||||
|
||||
.btn {
|
||||
border-radius: $style-radius-s;
|
||||
--btn-padding-block-start: 0;
|
||||
--btn-padding-inline-end: 0;
|
||||
--btn-padding-block-end: 0;
|
||||
--btn-padding-inline-start: 0;
|
||||
|
||||
--btn-icon-size: calc(var(--base) * 1.2);
|
||||
--btn-icon-border-color: currentColor;
|
||||
--btn-icon-padding: 0px; // This will be needed when we make icons go edge to edge instead of having built in padding in the svg code
|
||||
--btn-icon-content-gap: calc(var(--base) * 0.4);
|
||||
--margin-block: base(1.2);
|
||||
--btn-line-height: calc(var(--base) * 1.2);
|
||||
|
||||
border-radius: var(--style-radius-s);
|
||||
font-size: var(--base-body-size);
|
||||
margin-block: base(1.2);
|
||||
line-height: base(1.2);
|
||||
font-family: var(--font-body);
|
||||
font-weight: var(--btn-font-weight, normal);
|
||||
margin-block: var(--margin-block);
|
||||
line-height: var(--btn-line-height);
|
||||
border: 0;
|
||||
cursor: pointer;
|
||||
font-weight: normal;
|
||||
text-decoration: none;
|
||||
transition-property: border, color, box-shadow, background;
|
||||
transition-duration: 100ms;
|
||||
transition-timing-function: cubic-bezier(0, 0.2, 0.2, 1);
|
||||
|
||||
padding: var(--btn-padding-block-start) var(--btn-padding-inline-end)
|
||||
var(--btn-padding-block-end) var(--btn-padding-inline-start);
|
||||
color: var(--color, inherit);
|
||||
background-color: var(--bg-color, transparent);
|
||||
box-shadow: var(--box-shadow, none);
|
||||
|
||||
.icon {
|
||||
@include color-svg(var(--color, currentColor));
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
.stroke {
|
||||
stroke: var(--color, currentColor);
|
||||
fill: none;
|
||||
}
|
||||
|
||||
.fill {
|
||||
fill: var(--color, currentColor);
|
||||
}
|
||||
}
|
||||
|
||||
&__content {
|
||||
@@ -140,14 +217,14 @@
|
||||
}
|
||||
|
||||
&__icon {
|
||||
width: base(1.2);
|
||||
height: base(1.2);
|
||||
width: var(--btn-icon-size);
|
||||
height: var(--btn-icon-size);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border: 1px solid;
|
||||
border: 1px solid var(--btn-icon-border-color);
|
||||
border-radius: 100%;
|
||||
padding: base(0.1);
|
||||
padding: var(--btn-icon-padding);
|
||||
color: inherit;
|
||||
|
||||
.icon {
|
||||
@@ -168,79 +245,86 @@
|
||||
position: relative;
|
||||
}
|
||||
|
||||
&--icon-style-without-border {
|
||||
.btn__icon {
|
||||
border: none;
|
||||
&--icon {
|
||||
.btn__content {
|
||||
gap: var(--btn-icon-content-gap);
|
||||
}
|
||||
}
|
||||
|
||||
&--icon-style-without-border,
|
||||
&--icon-style-none {
|
||||
.btn__icon {
|
||||
border: none;
|
||||
--btn-icon-border-color: transparent;
|
||||
}
|
||||
|
||||
&--icon-position-left {
|
||||
.btn__content {
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
}
|
||||
|
||||
&--size-small {
|
||||
padding: 0 base(0.4);
|
||||
--btn-icon-size: calc(var(--base) * 0.9);
|
||||
// --btn-icon-padding: 0px; // This will be needed when we make icons go edge to edge instead of having built in padding in the svg code
|
||||
--btn-icon-content-gap: calc(var(--base) * 0.2);
|
||||
--btn-padding-block-start: 0;
|
||||
--btn-padding-inline-end: calc(var(--base) * 0.4);
|
||||
--btn-padding-inline-start: calc(var(--base) * 0.4);
|
||||
--btn-padding-block-end: 0;
|
||||
|
||||
&.btn--icon-position-left {
|
||||
padding-inline-start: base(0.1);
|
||||
padding-inline-end: base(0.4);
|
||||
|
||||
.btn__content {
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
--btn-padding-inline-start: calc(var(--base) * 0.3);
|
||||
}
|
||||
|
||||
&.btn--icon-position-right {
|
||||
padding-inline-start: base(0.4);
|
||||
padding-inline-end: base(0.1);
|
||||
--btn-padding-inline-end: calc(var(--base) * 0.3);
|
||||
}
|
||||
|
||||
&.btn--icon-style-with-border {
|
||||
// --btn-icon-padding: 0px; // This will be needed when we make icons go edge to edge instead of having built in padding in the svg code
|
||||
}
|
||||
}
|
||||
|
||||
&--size-medium {
|
||||
padding: base(0.2) base(0.6);
|
||||
// --btn-icon-padding: 0px;
|
||||
--btn-icon-size: calc(var(--base) * 1.2);
|
||||
--btn-icon-content-gap: calc(var(--base) * 0.2);
|
||||
--btn-padding-block-start: calc(var(--base) * 0.2);
|
||||
--btn-padding-inline-end: calc(var(--base) * 0.6);
|
||||
--btn-padding-block-end: calc(var(--base) * 0.2);
|
||||
--btn-padding-inline-start: calc(var(--base) * 0.6);
|
||||
|
||||
&.btn--icon-position-left {
|
||||
padding-inline-start: base(0.4);
|
||||
padding-inline-end: base(0.6);
|
||||
|
||||
.btn__content {
|
||||
gap: base(0.2);
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
--btn-padding-inline-start: calc(var(--base) * 0.4);
|
||||
}
|
||||
|
||||
&.btn--icon-position-right {
|
||||
padding-inline-start: base(0.6);
|
||||
padding-inline-end: base(0.4);
|
||||
--btn-padding-inline-end: calc(var(--base) * 0.4);
|
||||
}
|
||||
|
||||
.btn__content {
|
||||
gap: base(0.2);
|
||||
}
|
||||
&.btn--icon-style-with-border {
|
||||
// --btn-icon-padding: 0px; // This will be needed when we make icons go edge to edge instead of having built in padding in the svg code
|
||||
}
|
||||
}
|
||||
|
||||
&--size-large {
|
||||
padding: base(0.4) base(0.8);
|
||||
// --btn-icon-padding: 0px;
|
||||
--btn-icon-size: calc(var(--base) * 1.2);
|
||||
--btn-icon-content-gap: calc(var(--base) * 0.4);
|
||||
--btn-padding-block-start: calc(var(--base) * 0.4);
|
||||
--btn-padding-inline-end: calc(var(--base) * 0.8);
|
||||
--btn-padding-inline-start: calc(var(--base) * 0.8);
|
||||
--btn-padding-block-end: calc(var(--base) * 0.4);
|
||||
|
||||
&.btn--icon-position-left {
|
||||
padding-inline-start: base(0.6);
|
||||
padding-inline-end: base(0.8);
|
||||
|
||||
.btn__content {
|
||||
gap: base(0.4);
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
--btn-padding-inline-start: calc(var(--base) * 0.6);
|
||||
}
|
||||
|
||||
&.btn--icon-position-right {
|
||||
padding-inline-start: base(0.8);
|
||||
padding-inline-end: base(0.6);
|
||||
--btn-padding-inline-end: calc(var(--base) * 0.6);
|
||||
}
|
||||
|
||||
.btn__content {
|
||||
gap: base(0.4);
|
||||
}
|
||||
&.btn--icon-style-with-border {
|
||||
// --btn-icon-padding: 0px; // This will be needed when we make icons go edge to edge instead of having built in padding in the svg code
|
||||
}
|
||||
}
|
||||
|
||||
@@ -256,37 +340,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
&--style-icon-label,
|
||||
&--style-icon-label.btn--icon-position-left,
|
||||
&--style-icon-label.btn--icon-position-right {
|
||||
padding: 0;
|
||||
font-weight: 600;
|
||||
|
||||
.btn__content {
|
||||
gap: base(0.4);
|
||||
}
|
||||
}
|
||||
|
||||
&--style-none {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
&:focus:not(:focus-visible) {
|
||||
.btn__icon {
|
||||
@include color-svg(var(--theme-elevation-800));
|
||||
background: var(--theme-elevation-150);
|
||||
}
|
||||
|
||||
outline: none;
|
||||
}
|
||||
|
||||
&:active {
|
||||
.btn__icon {
|
||||
@include color-svg(var(--theme-elevation-0));
|
||||
background: var(--theme-elevation-700);
|
||||
}
|
||||
}
|
||||
|
||||
&:focus-visible {
|
||||
outline: var(--accessibility-outline);
|
||||
outline-offset: var(--accessibility-outline-offset);
|
||||
@@ -295,5 +348,13 @@
|
||||
&.btn--disabled {
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
&--style-none {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
&--no-margin {
|
||||
--margin-block: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,8 +11,8 @@ import { SwapIcon } from '../../icons/Swap/index.js'
|
||||
import { XIcon } from '../../icons/X/index.js'
|
||||
import { Link } from '../Link/index.js'
|
||||
import { Popup } from '../Popup/index.js'
|
||||
import { Tooltip } from '../Tooltip/index.js'
|
||||
import './index.scss'
|
||||
import { Tooltip } from '../Tooltip/index.js'
|
||||
|
||||
const icons = {
|
||||
chevron: ChevronIcon,
|
||||
@@ -62,6 +62,7 @@ export const Button: React.FC<Props> = (props) => {
|
||||
icon,
|
||||
iconPosition = 'right',
|
||||
iconStyle = 'without-border',
|
||||
margin = true,
|
||||
newTab,
|
||||
onClick,
|
||||
onMouseDown,
|
||||
@@ -86,6 +87,7 @@ export const Button: React.FC<Props> = (props) => {
|
||||
icon && iconPosition && `${baseClass}--icon-position-${iconPosition}`,
|
||||
tooltip && `${baseClass}--has-tooltip`,
|
||||
!SubMenuPopupContent && `${baseClass}--withoutPopup`,
|
||||
!margin && `${baseClass}--no-margin`,
|
||||
]
|
||||
.filter(Boolean)
|
||||
.join(' ')
|
||||
@@ -167,7 +169,7 @@ export const Button: React.FC<Props> = (props) => {
|
||||
const Tag = el // eslint-disable-line no-case-declarations
|
||||
|
||||
buttonElement = (
|
||||
<Tag ref={ref} type="submit" {...buttonProps}>
|
||||
<Tag ref={ref} {...buttonProps}>
|
||||
<ButtonContents icon={icon} showTooltip={showTooltip} tooltip={tooltip}>
|
||||
{children}
|
||||
</ButtonContents>
|
||||
|
||||
@@ -9,7 +9,16 @@ type secondaryAction = {
|
||||
export type Props = {
|
||||
'aria-label'?: string
|
||||
buttonId?: string
|
||||
buttonStyle?: 'error' | 'icon-label' | 'none' | 'pill' | 'primary' | 'secondary' | 'transparent'
|
||||
buttonStyle?:
|
||||
| 'error'
|
||||
| 'icon-label'
|
||||
| 'none'
|
||||
| 'pill'
|
||||
| 'primary'
|
||||
| 'secondary'
|
||||
| 'subtle'
|
||||
| 'tab'
|
||||
| 'transparent'
|
||||
children?: React.ReactNode
|
||||
className?: string
|
||||
disabled?: boolean
|
||||
@@ -28,6 +37,7 @@ export type Props = {
|
||||
* Components now import their own `Link` directly from `next/link`.
|
||||
*/
|
||||
Link?: React.ElementType
|
||||
margin?: boolean
|
||||
newTab?: boolean
|
||||
onClick?: (event: MouseEvent) => void
|
||||
onMouseDown?: (event: MouseEvent) => void
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user