Compare commits
150 Commits
test/s3-st
...
fix/resolv
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
25fa48cd0f | ||
|
|
e8401d51a2 | ||
|
|
07e9444c09 | ||
|
|
5dd13f2873 | ||
|
|
878be913fd | ||
|
|
0524f198a6 | ||
|
|
5f2e846350 | ||
|
|
d3265b9931 | ||
|
|
33261b36bf | ||
|
|
73d4201df8 | ||
|
|
50d3da5824 | ||
|
|
41aac41df4 | ||
|
|
6a5b95af7c | ||
|
|
2e7bfcbd63 | ||
|
|
3ee9a32a38 | ||
|
|
c2d38b4109 | ||
|
|
5d9c537145 | ||
|
|
904b6a6dbe | ||
|
|
cc6de7ef42 | ||
|
|
a3ef4fbfac | ||
|
|
e9ff611879 | ||
|
|
5825d0cfc7 | ||
|
|
103b476c82 | ||
|
|
a3279b319e | ||
|
|
bbb0ab784c | ||
|
|
32eac5b0c2 | ||
|
|
86098c9140 | ||
|
|
7fd2cdf04c | ||
|
|
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}",
|
||||
|
||||
@@ -132,6 +132,7 @@ The following options are available:
|
||||
| `hideAPIURL` | Hides the "API URL" meta field while editing documents within this Collection. |
|
||||
| `enableRichTextLink` | The [Rich Text](../fields/rich-text) field features a `Link` element which allows for users to automatically reference related documents within their rich text. Set to `true` by default. |
|
||||
| `enableRichTextRelationship` | The [Rich Text](../fields/rich-text) field features a `Relationship` element which allows for users to automatically reference related documents within their rich text. Set to `true` by default. |
|
||||
| `folders` | A boolean to enable folders for a given collection. Defaults to `false`. [More details](../folders/overview). |
|
||||
| `meta` | Page metadata overrides to apply to this Collection within the Admin Panel. [More details](../admin/metadata). |
|
||||
| `preview` | Function to generate preview URLs within the Admin Panel that can point to your app. [More details](../admin/preview). |
|
||||
| `livePreview` | Enable real-time editing for instant visual feedback of your front-end application. [More details](../live-preview/overview). |
|
||||
|
||||
@@ -84,6 +84,7 @@ The following options are available:
|
||||
| **`csrf`** | A whitelist array of URLs to allow Payload to accept cookies from. [More details](../authentication/cookies#csrf-attacks). |
|
||||
| **`defaultDepth`** | If a user does not specify `depth` while requesting a resource, this depth will be used. [More details](../queries/depth). |
|
||||
| **`defaultMaxTextLength`** | The maximum allowed string length to be permitted application-wide. Helps to prevent malicious public document creation. |
|
||||
| `folders` | An optional object to configure global folder settings. [More details](../folders/overview). |
|
||||
| `queryPresets` | An object that to configure Collection Query Presets. [More details](../query-presets/overview). |
|
||||
| **`maxDepth`** | The maximum allowed depth to be permitted application-wide. This setting helps prevent against malicious queries. Defaults to `10`. [More details](../queries/depth). |
|
||||
| **`indexSortableFields`** | Automatically index all sortable top-level fields in the database to improve sort performance and add database compatibility for Azure Cosmos and similar. |
|
||||
|
||||
100
docs/folders/overview.mdx
Normal file
100
docs/folders/overview.mdx
Normal file
@@ -0,0 +1,100 @@
|
||||
---
|
||||
title: Folders
|
||||
label: Folders
|
||||
order: 10
|
||||
desc: Folders allow you to group documents across collections, and are a great way to organize your content.
|
||||
keywords: folders, folder, content organization
|
||||
---
|
||||
|
||||
Folders allow you to group documents across collections, and are a great way to organize your content. Folders are built on top of relationship fields, when you enable folders on a collection, Payload adds a hidden relationship field `folders`, that relates to a folder — or no folder. Folders also have the `folder` field, allowing folders to be nested within other folders.
|
||||
|
||||
The configuration for folders is done in two places, the collection config and the Payload config. The collection config is where you enable folders, and the Payload config is where you configure the global folder settings.
|
||||
|
||||
## Folder Configuration
|
||||
|
||||
On the payload config, you can configure the following settings under the `folders` property:
|
||||
|
||||
```ts
|
||||
// Type definition
|
||||
|
||||
type RootFoldersConfiguration = {
|
||||
/**
|
||||
* 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>)[]
|
||||
/**
|
||||
* Ability to view hidden fields and collections related to folders
|
||||
*
|
||||
* @default false
|
||||
*/
|
||||
debug?: boolean
|
||||
/**
|
||||
* The Folder field name
|
||||
*
|
||||
* @default "folder"
|
||||
*/
|
||||
fieldName?: string
|
||||
/**
|
||||
* Slug for the folder collection
|
||||
*
|
||||
* @default "payload-folders"
|
||||
*/
|
||||
slug?: string
|
||||
}
|
||||
```
|
||||
|
||||
```ts
|
||||
// Example usage
|
||||
|
||||
import { buildConfig } from 'payload'
|
||||
|
||||
const config = buildConfig({
|
||||
// ...
|
||||
folders: {
|
||||
// highlight-start
|
||||
debug: true, // optional
|
||||
collectionOverrides: [
|
||||
async ({ collection }) => {
|
||||
return collection
|
||||
},
|
||||
], // optional
|
||||
fieldName: 'folder', // optional
|
||||
slug: 'payload-folders', // optional
|
||||
// highlight-end
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
## Collection Configuration
|
||||
|
||||
To enable folders on a collection, you need to set the `admin.folders` property to `true` on the collection config. This will add a hidden relationship field to the collection that relates to a folder — or no folder.
|
||||
|
||||
```ts
|
||||
// Type definition
|
||||
|
||||
type CollectionFoldersConfiguration = boolean
|
||||
```
|
||||
|
||||
```ts
|
||||
// Example usage
|
||||
|
||||
import { buildConfig } from 'payload'
|
||||
|
||||
const config = buildConfig({
|
||||
collections: [
|
||||
{
|
||||
slug: 'pages',
|
||||
// highlight-start
|
||||
admin: {
|
||||
folders: true, // defaults to false
|
||||
},
|
||||
// highlight-end
|
||||
},
|
||||
],
|
||||
})
|
||||
```
|
||||
@@ -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,35 @@ export const DefaultNavClient: React.FC<{
|
||||
|
||||
const {
|
||||
config: {
|
||||
admin: {
|
||||
routes: { browseByFolder: foldersRoute },
|
||||
},
|
||||
collections,
|
||||
routes: { admin: adminRoute },
|
||||
},
|
||||
} = useConfig()
|
||||
|
||||
const [folderCollectionSlugs] = React.useState<string[]>(() => {
|
||||
return collections.reduce<string[]>((acc, collection) => {
|
||||
if (collection.admin.folders) {
|
||||
acc.push(collection.slug)
|
||||
}
|
||||
return acc
|
||||
}, [])
|
||||
})
|
||||
|
||||
const { i18n } = useTranslation()
|
||||
|
||||
const folderURL = formatAdminURL({
|
||||
adminRoute,
|
||||
path: foldersRoute,
|
||||
})
|
||||
|
||||
const viewingRootFolderView = pathname.startsWith(folderURL)
|
||||
|
||||
return (
|
||||
<Fragment>
|
||||
{folderCollectionSlugs.length > 0 && <BrowseByFolderButton active={viewingRootFolderView} />}
|
||||
{groups.map(({ entities, label }, key) => {
|
||||
return (
|
||||
<NavGroup isOpen={navPreferences?.groups?.[label]?.open} key={key} label={label}>
|
||||
|
||||
161
packages/next/src/views/BrowseByFolder/buildView.tsx
Normal file
161
packages/next/src/views/BrowseByFolder/buildView.tsx
Normal file
@@ -0,0 +1,161 @@
|
||||
import type {
|
||||
AdminViewServerProps,
|
||||
BuildCollectionFolderViewResult,
|
||||
FolderListViewServerPropsOnly,
|
||||
ListQuery,
|
||||
} from 'payload'
|
||||
|
||||
import { DefaultBrowseByFolderView, 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'
|
||||
|
||||
import { getPreferences } from '../../utilities/getPreferences.js'
|
||||
|
||||
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 buildBrowseByFolderView = async (
|
||||
args: BuildFolderViewArgs,
|
||||
): Promise<BuildCollectionFolderViewResult> => {
|
||||
const {
|
||||
disableBulkDelete,
|
||||
disableBulkEdit,
|
||||
enableRowSelections,
|
||||
folderCollectionSlugs,
|
||||
folderID,
|
||||
initPageResult,
|
||||
isInDrawer,
|
||||
params,
|
||||
query: queryFromArgs,
|
||||
searchParams,
|
||||
} = args
|
||||
|
||||
const {
|
||||
locale: fullLocale,
|
||||
permissions,
|
||||
req: {
|
||||
i18n,
|
||||
payload,
|
||||
payload: { config },
|
||||
query: queryFromReq,
|
||||
user,
|
||||
},
|
||||
visibleEntities,
|
||||
} = initPageResult
|
||||
|
||||
const collections = folderCollectionSlugs.filter(
|
||||
(collectionSlug) =>
|
||||
permissions?.collections?.[collectionSlug]?.read &&
|
||||
visibleEntities.collections.includes(collectionSlug),
|
||||
)
|
||||
|
||||
if (!collections.length) {
|
||||
throw new Error('not-found')
|
||||
}
|
||||
|
||||
const query = queryFromArgs || queryFromReq
|
||||
const selectedCollectionSlugs: string[] =
|
||||
Array.isArray(query?.relationTo) && query.relationTo.length
|
||||
? query.relationTo
|
||||
: [...folderCollectionSlugs, 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 !== resolvedFolderID) ||
|
||||
(folderID && !resolvedFolderID))
|
||||
) {
|
||||
return redirect(
|
||||
formatAdminURL({
|
||||
adminRoute,
|
||||
path: config.admin.routes.browseByFolder,
|
||||
serverURL: config.serverURL,
|
||||
}),
|
||||
)
|
||||
}
|
||||
|
||||
const browseByFolderPreferences = await getPreferences<{ viewPreference: string }>(
|
||||
'browse-by-folder',
|
||||
payload,
|
||||
user.id,
|
||||
user.collection,
|
||||
)
|
||||
|
||||
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, ...folderCollectionSlugs]
|
||||
: [config.folders.slug]
|
||||
|
||||
return {
|
||||
View: (
|
||||
<FolderProvider
|
||||
breadcrumbs={breadcrumbs}
|
||||
documents={documents}
|
||||
filteredCollectionSlugs={selectedCollectionSlugs}
|
||||
folderCollectionSlugs={folderCollectionSlugs}
|
||||
folderID={folderID}
|
||||
subfolders={subfolders}
|
||||
>
|
||||
<HydrateAuthProvider permissions={permissions} />
|
||||
{RenderServerComponent({
|
||||
clientProps: {
|
||||
// ...folderViewSlots,
|
||||
disableBulkDelete,
|
||||
disableBulkEdit,
|
||||
enableRowSelections,
|
||||
hasCreatePermissionCollectionSlugs,
|
||||
selectedCollectionSlugs,
|
||||
viewPreference: browseByFolderPreferences?.value?.viewPreference,
|
||||
},
|
||||
// Component:config.folders?.components?.views?.list?.Component,
|
||||
Fallback: DefaultBrowseByFolderView,
|
||||
importMap: payload.importMap,
|
||||
serverProps,
|
||||
})}
|
||||
</FolderProvider>
|
||||
),
|
||||
}
|
||||
}
|
||||
20
packages/next/src/views/BrowseByFolder/index.tsx
Normal file
20
packages/next/src/views/BrowseByFolder/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 { buildBrowseByFolderView } from './buildView.js'
|
||||
|
||||
export const BrowseByFolder: React.FC<BuildFolderViewArgs> = async (args) => {
|
||||
try {
|
||||
const { View } = await buildBrowseByFolderView(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/BrowseByFolder/metadata.ts
Normal file
23
packages/next/src/views/BrowseByFolder/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,
|
||||
})
|
||||
}
|
||||
207
packages/next/src/views/CollectionFolders/buildView.tsx
Normal file
207
packages/next/src/views/CollectionFolders/buildView.tsx
Normal file
@@ -0,0 +1,207 @@
|
||||
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 { getPreferences } from '../../utilities/getPreferences.js'
|
||||
|
||||
// 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,
|
||||
folderCollectionSlugs,
|
||||
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 getPreferences<{ viewPreference: string }>(
|
||||
`${collectionSlug}-collection-folder`,
|
||||
payload,
|
||||
user.id,
|
||||
user.collection,
|
||||
)
|
||||
|
||||
const {
|
||||
routes: { admin: adminRoute },
|
||||
} = config
|
||||
|
||||
if (
|
||||
(!visibleEntities.collections.includes(collectionSlug) && !overrideEntityVisibility) ||
|
||||
!folderCollectionSlugs.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({
|
||||
[config.folders.fieldName]: {
|
||||
equals: parseDocumentID({ id: folderID, collectionSlug, payload }),
|
||||
},
|
||||
})
|
||||
} else {
|
||||
whereConstraints.push({
|
||||
[config.folders.fieldName]: {
|
||||
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 !== resolvedFolderID) ||
|
||||
(folderID && !resolvedFolderID))
|
||||
) {
|
||||
return redirect(
|
||||
formatAdminURL({
|
||||
adminRoute,
|
||||
path: `/collections/${collectionSlug}/${config.folders.slug}`,
|
||||
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}
|
||||
folderCollectionSlugs={folderCollectionSlugs}
|
||||
folderID={folderID}
|
||||
search={search}
|
||||
subfolders={subfolders}
|
||||
>
|
||||
<HydrateAuthProvider permissions={permissions} />
|
||||
{RenderServerComponent({
|
||||
clientProps: {
|
||||
// ...folderViewSlots,
|
||||
collectionSlug,
|
||||
disableBulkDelete,
|
||||
disableBulkEdit,
|
||||
enableRowSelections,
|
||||
hasCreatePermission,
|
||||
newDocumentURL,
|
||||
viewPreference: collectionFolderPreferences?.value?.viewPreference,
|
||||
},
|
||||
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,
|
||||
|
||||
@@ -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'
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import type {
|
||||
AdminViewServerProps,
|
||||
CollectionSlug,
|
||||
DocumentSubViewTypes,
|
||||
ImportMap,
|
||||
PayloadComponent,
|
||||
@@ -14,6 +15,8 @@ import { formatAdminURL } from 'payload/shared'
|
||||
import type { initPage } from '../../utilities/initPage/index.js'
|
||||
|
||||
import { Account } from '../Account/index.js'
|
||||
import { BrowseByFolder } from '../BrowseByFolder/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'
|
||||
@@ -31,6 +34,7 @@ import { isPathMatchingRoute } from './isPathMatchingRoute.js'
|
||||
|
||||
const baseClasses = {
|
||||
account: 'account',
|
||||
folders: 'folders',
|
||||
forgot: forgotPasswordBaseClass,
|
||||
login: loginBaseClass,
|
||||
reset: resetPasswordBaseClass,
|
||||
@@ -48,6 +52,7 @@ export type ViewFromConfig = {
|
||||
|
||||
const oneSegmentViews: OneSegmentViews = {
|
||||
account: Account,
|
||||
browseByFolder: BrowseByFolder,
|
||||
createFirstUser: CreateFirstUserView,
|
||||
forgot: ForgotPasswordView,
|
||||
inactivity: LogoutInactivity,
|
||||
@@ -56,7 +61,7 @@ const oneSegmentViews: OneSegmentViews = {
|
||||
unauthorized: UnauthorizedView,
|
||||
}
|
||||
|
||||
type GetViewFromConfigArgs = {
|
||||
type GetRouteDataArgs = {
|
||||
adminRoute: string
|
||||
config: SanitizedConfig
|
||||
currentRoute: string
|
||||
@@ -67,9 +72,11 @@ type GetViewFromConfigArgs = {
|
||||
segments: string[]
|
||||
}
|
||||
|
||||
type GetViewFromConfigResult = {
|
||||
type GetRouteDataResult = {
|
||||
DefaultView: ViewFromConfig
|
||||
documentSubViewType?: DocumentSubViewTypes
|
||||
folderCollectionSlugs: CollectionSlug[]
|
||||
folderID?: string
|
||||
initPageOptions: Parameters<typeof initPage>[0]
|
||||
serverProps: ServerPropsFromView
|
||||
templateClassName: string
|
||||
@@ -77,19 +84,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,
|
||||
@@ -105,6 +113,13 @@ export const getViewFromConfig = ({
|
||||
let matchedCollection: SanitizedConfig['collections'][number] = undefined
|
||||
let matchedGlobal: SanitizedConfig['globals'][number] = undefined
|
||||
|
||||
const folderCollectionSlugs = config.collections.reduce((acc, { slug, admin }) => {
|
||||
if (admin?.folders) {
|
||||
return [...acc, slug]
|
||||
}
|
||||
return acc
|
||||
}, [])
|
||||
|
||||
const serverProps: ServerPropsFromView = {
|
||||
viewActions: config?.admin?.components?.actions || [],
|
||||
}
|
||||
@@ -153,6 +168,7 @@ export const getViewFromConfig = ({
|
||||
if (oneSegmentViews[viewKey]) {
|
||||
// --> /account
|
||||
// --> /create-first-user
|
||||
// --> /browse-by-folder
|
||||
// --> /forgot
|
||||
// --> /login
|
||||
// --> /logout
|
||||
@@ -170,6 +186,11 @@ export const getViewFromConfig = ({
|
||||
templateType = 'default'
|
||||
viewType = 'account'
|
||||
}
|
||||
|
||||
if (folderCollectionSlugs.length && viewKey === 'browseByFolder') {
|
||||
templateType = 'default'
|
||||
viewType = 'folders'
|
||||
}
|
||||
}
|
||||
break
|
||||
}
|
||||
@@ -182,9 +203,19 @@ export const getViewFromConfig = ({
|
||||
templateClassName = baseClasses[segmentTwo]
|
||||
templateType = 'minimal'
|
||||
viewType = 'reset'
|
||||
}
|
||||
|
||||
if (isCollection && matchedCollection) {
|
||||
} else if (
|
||||
folderCollectionSlugs.length &&
|
||||
`/${segmentOne}` === config.admin.routes.browseByFolder
|
||||
) {
|
||||
// --> /browse-by-folder/:folderID
|
||||
ViewToRender = {
|
||||
Component: oneSegmentViews.browseByFolder,
|
||||
}
|
||||
templateClassName = baseClasses.folders
|
||||
templateType = 'default'
|
||||
viewType = 'folders'
|
||||
folderID = segmentTwo
|
||||
} else if (isCollection && matchedCollection) {
|
||||
// --> /collections/:collectionSlug
|
||||
|
||||
ViewToRender = {
|
||||
@@ -229,31 +260,47 @@ 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 === config.folders.slug &&
|
||||
folderCollectionSlugs.includes(matchedCollection.slug)
|
||||
) {
|
||||
// Collection Folder Views
|
||||
// --> /collections/:collectionSlug/:folderCollectionSlug
|
||||
// --> /collections/:collectionSlug/:folderCollectionSlug/: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 +335,8 @@ export const getViewFromConfig = ({
|
||||
return {
|
||||
DefaultView: ViewToRender,
|
||||
documentSubViewType,
|
||||
folderCollectionSlugs,
|
||||
folderID,
|
||||
initPageOptions,
|
||||
serverProps,
|
||||
templateClassName,
|
||||
@@ -1,22 +1,23 @@
|
||||
import type { I18nClient } from '@payloadcms/translations'
|
||||
import type { Metadata } from 'next'
|
||||
import type {
|
||||
AdminViewClientProps,
|
||||
AdminViewServerPropsOnly,
|
||||
ImportMap,
|
||||
SanitizedConfig,
|
||||
} from 'payload'
|
||||
|
||||
import { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'
|
||||
import { getClientConfig } from '@payloadcms/ui/utilities/getClientConfig'
|
||||
import { notFound, redirect } from 'next/navigation.js'
|
||||
import {
|
||||
type AdminViewClientProps,
|
||||
type AdminViewServerPropsOnly,
|
||||
type ImportMap,
|
||||
parseDocumentID,
|
||||
type SanitizedConfig,
|
||||
} from 'payload'
|
||||
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 +65,14 @@ export const RootPage = async ({
|
||||
const {
|
||||
DefaultView,
|
||||
documentSubViewType,
|
||||
folderCollectionSlugs,
|
||||
folderID: folderIDParam,
|
||||
initPageOptions,
|
||||
serverProps,
|
||||
templateClassName,
|
||||
templateType,
|
||||
viewType,
|
||||
} = getViewFromConfig({
|
||||
} = getRouteData({
|
||||
adminRoute,
|
||||
config,
|
||||
currentRoute,
|
||||
@@ -89,6 +92,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()
|
||||
@@ -132,8 +139,20 @@ export const RootPage = async ({
|
||||
importMap,
|
||||
})
|
||||
|
||||
const payload = initPageResult?.req.payload
|
||||
const folderID = parseDocumentID({
|
||||
id: folderIDParam,
|
||||
collectionSlug: payload.config.folders.slug,
|
||||
payload,
|
||||
})
|
||||
|
||||
const RenderedView = RenderServerComponent({
|
||||
clientProps: { clientConfig, documentSubViewType, viewType } satisfies AdminViewClientProps,
|
||||
clientProps: {
|
||||
clientConfig,
|
||||
documentSubViewType,
|
||||
folderCollectionSlugs,
|
||||
viewType,
|
||||
} satisfies AdminViewClientProps,
|
||||
Component: DefaultView.payloadComponent,
|
||||
Fallback: DefaultView.Component,
|
||||
importMap,
|
||||
@@ -141,6 +160,7 @@ export const RootPage = async ({
|
||||
...serverProps,
|
||||
clientConfig,
|
||||
docID: initPageResult?.docID,
|
||||
folderID,
|
||||
i18n: initPageResult?.req.i18n,
|
||||
importMap,
|
||||
initPageResult,
|
||||
@@ -151,8 +171,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 +202,6 @@ export const RootPage = async ({
|
||||
{RenderedView}
|
||||
</DefaultTemplate>
|
||||
)}
|
||||
</Fragment>
|
||||
</React.Fragment>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@ import type { SanitizedConfig } from 'payload'
|
||||
|
||||
import { getNextRequestI18n } from '../../utilities/getNextRequestI18n.js'
|
||||
import { generateAccountViewMetadata } from '../Account/metadata.js'
|
||||
import { generateBrowseByFolderMetadata } from '../BrowseByFolder/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'
|
||||
@@ -18,6 +20,7 @@ import { getCustomViewByRoute } from './getCustomViewByRoute.js'
|
||||
|
||||
const oneSegmentMeta = {
|
||||
'create-first-user': generateCreateFirstUserViewMetadata,
|
||||
folders: generateBrowseByFolderMetadata,
|
||||
forgot: generateForgotPasswordViewMetadata,
|
||||
login: generateLoginViewMetadata,
|
||||
logout: generateUnauthorizedViewMetadata,
|
||||
@@ -40,12 +43,18 @@ export const generatePageMetadata = async ({
|
||||
params: paramsPromise,
|
||||
}: Args) => {
|
||||
const config = await configPromise
|
||||
|
||||
const params = await paramsPromise
|
||||
|
||||
const folderCollectionSlugs = config.collections.reduce((acc, { slug, admin }) => {
|
||||
if (admin?.folders) {
|
||||
return [...acc, slug]
|
||||
}
|
||||
return acc
|
||||
}, [])
|
||||
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'
|
||||
@@ -72,7 +81,14 @@ export const generatePageMetadata = async ({
|
||||
break
|
||||
}
|
||||
case 1: {
|
||||
if (oneSegmentMeta[segmentOne] && segmentOne !== 'account') {
|
||||
if (folderCollectionSlugs.length && `/${segmentOne}` === config.admin.routes.browseByFolder) {
|
||||
// --> /:folderCollectionSlug
|
||||
meta = await oneSegmentMeta.folders({ config, i18n })
|
||||
} else if (segmentOne === 'account') {
|
||||
// --> /account
|
||||
meta = await generateAccountViewMetadata({ config, i18n })
|
||||
break
|
||||
} else if (oneSegmentMeta[segmentOne]) {
|
||||
// --> /create-first-user
|
||||
// --> /forgot
|
||||
// --> /login
|
||||
@@ -81,10 +97,6 @@ export const generatePageMetadata = async ({
|
||||
// --> /unauthorized
|
||||
meta = await oneSegmentMeta[segmentOne]({ config, i18n })
|
||||
break
|
||||
} else if (segmentOne === 'account') {
|
||||
// --> /account
|
||||
meta = await generateAccountViewMetadata({ config, i18n })
|
||||
break
|
||||
}
|
||||
break
|
||||
}
|
||||
@@ -92,8 +104,13 @@ export const generatePageMetadata = async ({
|
||||
if (`/${segmentOne}` === config.admin.routes.reset) {
|
||||
// --> /reset/:token
|
||||
meta = await generateResetPasswordViewMetadata({ config, i18n })
|
||||
}
|
||||
if (isCollection) {
|
||||
} else if (
|
||||
folderCollectionSlugs.length &&
|
||||
`/${segmentOne}` === config.admin.routes.browseByFolder
|
||||
) {
|
||||
// --> /browse-by-folder/:folderID
|
||||
meta = await generateBrowseByFolderMetadata({ config, i18n })
|
||||
} else if (isCollection) {
|
||||
// --> /collections/:collectionSlug
|
||||
meta = await generateListViewMetadata({ collectionConfig, config, i18n })
|
||||
} else if (isGlobal) {
|
||||
@@ -112,15 +129,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 === config.folders.slug) {
|
||||
if (folderCollectionSlugs.includes(collectionConfig.slug)) {
|
||||
// Collection Folder Views
|
||||
// --> /collections/:collectionSlug/:folderCollectionSlug
|
||||
// --> /collections/:collectionSlug/:folderCollectionSlug/: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,
|
||||
/**
|
||||
|
||||
60
packages/payload/src/admin/views/folderList.ts
Normal file
60
packages/payload/src/admin/views/folderList.ts
Normal file
@@ -0,0 +1,60 @@
|
||||
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
|
||||
viewPreference: 'grid' | 'list'
|
||||
} & 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'
|
||||
@@ -32,6 +31,7 @@ export type AdminViewConfig = {
|
||||
export type AdminViewClientProps = {
|
||||
clientConfig: ClientConfig
|
||||
documentSubViewType?: DocumentSubViewTypes
|
||||
folderCollectionSlugs?: SanitizedCollectionConfig['slug'][]
|
||||
viewType: ViewTypes
|
||||
}
|
||||
|
||||
@@ -42,9 +42,14 @@ export type AdminViewServerPropsOnly = {
|
||||
* @todo remove `docID` here as it is already contained in `initPageResult`
|
||||
*/
|
||||
readonly docID?: number | string
|
||||
readonly folderID?: number | 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 +83,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,
|
||||
|
||||
@@ -69,6 +69,7 @@ export const addDefaultsToCollectionConfig = (collection: CollectionConfig): Col
|
||||
custom: {},
|
||||
enableRichTextLink: true,
|
||||
enableRichTextRelationship: true,
|
||||
folders: false,
|
||||
useAsTitle: 'id',
|
||||
...(collection.admin || {}),
|
||||
pagination: {
|
||||
|
||||
@@ -32,6 +32,7 @@ import type {
|
||||
RelationshipField,
|
||||
UploadField,
|
||||
} from '../../fields/config/types.js'
|
||||
import type { CollectionFoldersConfiguration } from '../../folders/types.js'
|
||||
import type {
|
||||
CollectionSlug,
|
||||
JsonObject,
|
||||
@@ -256,6 +257,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
|
||||
@@ -339,6 +345,10 @@ export type CollectionAdminOptions = {
|
||||
disableCopyToLocale?: boolean
|
||||
enableRichTextLink?: boolean
|
||||
enableRichTextRelationship?: boolean
|
||||
/**
|
||||
* Enables folders for this collection
|
||||
*/
|
||||
folders?: CollectionFoldersConfiguration
|
||||
/**
|
||||
* Specify a navigational group for collections in the admin sidebar.
|
||||
* - Provide a string to place the entity in a custom group.
|
||||
@@ -583,8 +593,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[]
|
||||
|
||||
@@ -2,6 +2,7 @@ import type { JobsConfig } from '../queues/config/types/index.js'
|
||||
import type { Config } from './types.js'
|
||||
|
||||
import defaultAccess from '../auth/defaultAccess.js'
|
||||
import { foldersSlug, parentFolderFieldName } from '../folders/constants.js'
|
||||
|
||||
/**
|
||||
* @deprecated - remove in 4.0. This is error-prone, as mutating this object will affect any objects that use the defaults as a base.
|
||||
@@ -23,6 +24,7 @@ export const defaults: Omit<Config, 'db' | 'editor' | 'secret'> = {
|
||||
},
|
||||
routes: {
|
||||
account: '/account',
|
||||
browseByFolder: '/browse-by-folder',
|
||||
createFirstUser: '/create-first-user',
|
||||
forgot: '/forgot',
|
||||
inactivity: '/logout-inactivity',
|
||||
@@ -98,6 +100,7 @@ export const addDefaultsToConfig = (config: Config): Config => {
|
||||
},
|
||||
routes: {
|
||||
account: '/account',
|
||||
browseByFolder: '/browse-by-folder',
|
||||
createFirstUser: '/create-first-user',
|
||||
forgot: '/forgot',
|
||||
inactivity: '/logout-inactivity',
|
||||
@@ -109,6 +112,13 @@ export const addDefaultsToConfig = (config: Config): Config => {
|
||||
},
|
||||
}
|
||||
|
||||
config.folders = {
|
||||
slug: foldersSlug,
|
||||
debug: false,
|
||||
fieldName: parentFolderFieldName,
|
||||
...(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: [] }
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@ import type {
|
||||
import type { DatabaseAdapterResult } from '../database/types.js'
|
||||
import type { EmailAdapter, SendEmailOptions } from '../email/types.js'
|
||||
import type { ErrorName } from '../errors/types.js'
|
||||
import type { RootFoldersConfiguration } from '../folders/types.js'
|
||||
import type { GlobalConfig, Globals, SanitizedGlobalConfig } from '../globals/config/types.js'
|
||||
import type {
|
||||
Block,
|
||||
@@ -846,6 +847,11 @@ export type Config = {
|
||||
* @default '/account'
|
||||
*/
|
||||
account?: `/${string}`
|
||||
/** The route for the browse by folder view.
|
||||
*
|
||||
* @default '/browse-by-folder'
|
||||
*/
|
||||
browseByFolder: `/${string}`
|
||||
/** The route for the create first user page.
|
||||
*
|
||||
* @default '/create-first-user'
|
||||
@@ -977,6 +983,10 @@ export type Config = {
|
||||
email?: EmailAdapter | Promise<EmailAdapter>
|
||||
/** Custom REST endpoints */
|
||||
endpoints?: Endpoint[]
|
||||
/**
|
||||
* Options for folder view within the admin panel
|
||||
*/
|
||||
folders?: RootFoldersConfiguration
|
||||
/**
|
||||
* @see https://payloadcms.com/docs/configuration/globals#global-configs
|
||||
*/
|
||||
|
||||
@@ -41,11 +41,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,
|
||||
@@ -60,6 +73,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'
|
||||
|
||||
@@ -112,4 +126,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'
|
||||
|
||||
58
packages/payload/src/folders/addFolderCollections.ts
Normal file
58
packages/payload/src/folders/addFolderCollections.ts
Normal file
@@ -0,0 +1,58 @@
|
||||
import type { Config } from '../config/types.js'
|
||||
import type { CollectionSlug } from '../index.js'
|
||||
|
||||
import { createFolderCollection } from './createFolderCollection.js'
|
||||
|
||||
export async function addFolderCollections(config: NonNullable<Config>): Promise<void> {
|
||||
if (!config.collections) {
|
||||
return
|
||||
}
|
||||
|
||||
const enabledCollectionSlugs: CollectionSlug[] = []
|
||||
const debug = Boolean(config?.folders?.debug)
|
||||
const folderFieldName = config?.folders?.fieldName as unknown as string
|
||||
const folderSlug = config?.folders?.slug as unknown as CollectionSlug
|
||||
|
||||
for (let i = 0; i < config.collections.length; i++) {
|
||||
const collection = config.collections[i]
|
||||
if (collection?.admin?.folders) {
|
||||
if (collection) {
|
||||
collection.fields.push({
|
||||
name: folderFieldName,
|
||||
type: 'relationship',
|
||||
admin: {
|
||||
allowCreate: false,
|
||||
allowEdit: false,
|
||||
components: {
|
||||
Cell: '@payloadcms/ui/rsc#FolderTableCell',
|
||||
Field: '@payloadcms/ui/rsc#FolderEditField',
|
||||
},
|
||||
},
|
||||
index: true,
|
||||
label: 'Folder',
|
||||
relationTo: folderSlug,
|
||||
})
|
||||
enabledCollectionSlugs.push(collection.slug)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (enabledCollectionSlugs.length) {
|
||||
let folderCollection = createFolderCollection({
|
||||
slug: folderSlug,
|
||||
collectionSlugs: enabledCollectionSlugs,
|
||||
debug,
|
||||
folderFieldName,
|
||||
})
|
||||
|
||||
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 = 'payload-folders'
|
||||
export const parentFolderFieldName = 'folder'
|
||||
74
packages/payload/src/folders/createFolderCollection.ts
Normal file
74
packages/payload/src/folders/createFolderCollection.ts
Normal file
@@ -0,0 +1,74 @@
|
||||
import type { CollectionConfig } from '../collections/config/types.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
|
||||
folderFieldName: string
|
||||
slug: string
|
||||
}
|
||||
export const createFolderCollection = ({
|
||||
slug,
|
||||
collectionSlugs,
|
||||
debug,
|
||||
folderFieldName,
|
||||
}: CreateFolderCollectionArgs): CollectionConfig => ({
|
||||
slug,
|
||||
admin: {
|
||||
hidden: !debug,
|
||||
useAsTitle: 'name',
|
||||
},
|
||||
endpoints: [populateFolderDataEndpoint],
|
||||
fields: [
|
||||
{
|
||||
name: 'name',
|
||||
type: 'text',
|
||||
index: true,
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
name: folderFieldName,
|
||||
type: 'relationship',
|
||||
admin: {
|
||||
hidden: !debug,
|
||||
},
|
||||
index: true,
|
||||
relationTo: slug,
|
||||
},
|
||||
{
|
||||
name: 'documentsAndFolders',
|
||||
type: 'join',
|
||||
admin: {
|
||||
hidden: !debug,
|
||||
},
|
||||
collection: [slug, ...collectionSlugs],
|
||||
hasMany: true,
|
||||
on: folderFieldName,
|
||||
},
|
||||
],
|
||||
hooks: {
|
||||
afterChange: [
|
||||
reparentChildFolder({
|
||||
folderFieldName,
|
||||
}),
|
||||
],
|
||||
afterDelete: [
|
||||
dissasociateAfterDelete({
|
||||
collectionSlugs,
|
||||
folderFieldName,
|
||||
}),
|
||||
deleteSubfoldersAfterDelete({ folderFieldName, folderSlug: slug }),
|
||||
],
|
||||
},
|
||||
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,22 @@
|
||||
import type { CollectionAfterDeleteHook } from '../../index.js'
|
||||
|
||||
type Args = {
|
||||
folderFieldName: string
|
||||
folderSlug: string
|
||||
}
|
||||
export const deleteSubfoldersAfterDelete = ({
|
||||
folderFieldName,
|
||||
folderSlug,
|
||||
}: Args): CollectionAfterDeleteHook => {
|
||||
return async ({ id, req }) => {
|
||||
await req.payload.delete({
|
||||
collection: folderSlug,
|
||||
req,
|
||||
where: {
|
||||
[folderFieldName]: {
|
||||
equals: id,
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
import type { CollectionAfterDeleteHook } from '../../index.js'
|
||||
|
||||
type Args = {
|
||||
collectionSlugs: string[]
|
||||
folderFieldName: string
|
||||
}
|
||||
export const dissasociateAfterDelete = ({
|
||||
collectionSlugs,
|
||||
folderFieldName,
|
||||
}: Args): CollectionAfterDeleteHook => {
|
||||
return async ({ id, req }) => {
|
||||
for (const collectionSlug of collectionSlugs) {
|
||||
await req.payload.update({
|
||||
collection: collectionSlug,
|
||||
data: {
|
||||
[folderFieldName]: null,
|
||||
},
|
||||
req,
|
||||
where: {
|
||||
[folderFieldName]: {
|
||||
equals: id,
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
101
packages/payload/src/folders/hooks/reparentChildFolder.ts
Normal file
101
packages/payload/src/folders/hooks/reparentChildFolder.ts
Normal file
@@ -0,0 +1,101 @@
|
||||
import type { CollectionAfterChangeHook, Payload } from '../../index.js'
|
||||
|
||||
import { extractID } from '../../utilities/extractID.js'
|
||||
|
||||
type Args = {
|
||||
folderFieldName: string
|
||||
folderID: number | 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({
|
||||
folderFieldName,
|
||||
folderID,
|
||||
parentIDToFind,
|
||||
payload,
|
||||
}: Args): Promise<boolean> {
|
||||
const parentFolder = await payload.findByID({
|
||||
id: folderID,
|
||||
collection: payload.config.folders.slug,
|
||||
})
|
||||
|
||||
const parentFolderID = parentFolder[folderFieldName]
|
||||
? extractID(parentFolder[folderFieldName])
|
||||
: undefined
|
||||
|
||||
if (!parentFolderID) {
|
||||
// made it to the root
|
||||
return false
|
||||
}
|
||||
|
||||
if (parentFolderID === parentIDToFind) {
|
||||
// found match, would be cyclic
|
||||
return true
|
||||
}
|
||||
|
||||
return isChildOfFolder({
|
||||
folderFieldName,
|
||||
folderID: parentFolderID,
|
||||
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 = ({
|
||||
folderFieldName,
|
||||
}: {
|
||||
folderFieldName: string
|
||||
}): CollectionAfterChangeHook => {
|
||||
return async ({ doc, previousDoc, req }) => {
|
||||
if (previousDoc[folderFieldName] !== doc[folderFieldName] && doc[folderFieldName]) {
|
||||
const newParentFolderID = extractID(doc[folderFieldName])
|
||||
const isMovingToChild = newParentFolderID
|
||||
? await isChildOfFolder({
|
||||
folderFieldName,
|
||||
folderID: newParentFolderID,
|
||||
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: {
|
||||
[folderFieldName]: previousDoc[folderFieldName]
|
||||
? extractID(previousDoc[folderFieldName])
|
||||
: null,
|
||||
},
|
||||
req,
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
102
packages/payload/src/folders/types.ts
Normal file
102
packages/payload/src/folders/types.ts
Normal file
@@ -0,0 +1,102 @@
|
||||
import type { CollectionConfig, TypeWithID } from '../collections/config/types.js'
|
||||
import type { CollectionSlug, SanitizedCollectionConfig } from '../index.js'
|
||||
import type { Document } from '../types/index.js'
|
||||
|
||||
export type FolderInterface = {
|
||||
documentsAndFolders?: {
|
||||
docs: {
|
||||
relationTo: CollectionSlug
|
||||
value: Document
|
||||
}[]
|
||||
}
|
||||
folder?: FolderInterface | (number | string | undefined)
|
||||
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: {
|
||||
_folderOrDocumentTitle: string
|
||||
createdAt?: string
|
||||
folderID?: number | string
|
||||
id: number | string
|
||||
updatedAt?: string
|
||||
} & DocumentMediaData
|
||||
}
|
||||
|
||||
export type GetFolderDataResult = {
|
||||
breadcrumbs: FolderBreadcrumb[] | null
|
||||
documents: FolderOrDocument[]
|
||||
subfolders: FolderOrDocument[]
|
||||
}
|
||||
|
||||
export type RootFoldersConfiguration = {
|
||||
/**
|
||||
* 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>)[]
|
||||
/**
|
||||
* Ability to view hidden fields and collections related to folders
|
||||
*
|
||||
* @default false
|
||||
*/
|
||||
debug?: boolean
|
||||
/**
|
||||
* The Folder field name
|
||||
*
|
||||
* @default "folder"
|
||||
*/
|
||||
fieldName?: string
|
||||
/**
|
||||
* Slug for the folder collection
|
||||
*
|
||||
* @default "payload-folders"
|
||||
*/
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export type CollectionFoldersConfiguration = boolean
|
||||
@@ -0,0 +1,37 @@
|
||||
import type { CollectionSlug, Document } from '../../index.js'
|
||||
import type { FolderOrDocument } from '../types.js'
|
||||
|
||||
type Args = {
|
||||
folderFieldName: string
|
||||
isUpload: boolean
|
||||
relationTo: CollectionSlug
|
||||
useAsTitle?: string
|
||||
value: Document
|
||||
}
|
||||
export function formatFolderOrDocumentItem({
|
||||
folderFieldName,
|
||||
isUpload,
|
||||
relationTo,
|
||||
useAsTitle,
|
||||
value,
|
||||
}: Args): FolderOrDocument {
|
||||
const itemValue: FolderOrDocument['value'] = {
|
||||
id: value?.id,
|
||||
_folderOrDocumentTitle: (useAsTitle && value?.[useAsTitle]) || value['id'],
|
||||
createdAt: value?.createdAt,
|
||||
folderID: value?.[folderFieldName],
|
||||
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,
|
||||
}
|
||||
}
|
||||
63
packages/payload/src/folders/utils/getFolderBreadcrumbs.ts
Normal file
63
packages/payload/src/folders/utils/getFolderBreadcrumbs.ts
Normal file
@@ -0,0 +1,63 @@
|
||||
import type { User } from '../../index.js'
|
||||
import type { Document, Payload } from '../../types/index.js'
|
||||
import type { FolderBreadcrumb } from '../types.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> => {
|
||||
const folderFieldName: string = payload.config.folders.fieldName
|
||||
if (folderID) {
|
||||
const folderQuery = await payload.find({
|
||||
collection: payload.config.folders.slug,
|
||||
depth: 0,
|
||||
limit: 1,
|
||||
overrideAccess: false,
|
||||
select: {
|
||||
name: true,
|
||||
[folderFieldName]: true,
|
||||
},
|
||||
user,
|
||||
where: {
|
||||
id: {
|
||||
equals: folderID,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
const folder = folderQuery.docs[0] as Document
|
||||
|
||||
if (folder) {
|
||||
breadcrumbs.push({
|
||||
id: folder.id,
|
||||
name: folder.name,
|
||||
})
|
||||
if (folder[folderFieldName]) {
|
||||
return getFolderBreadcrumbs({
|
||||
breadcrumbs,
|
||||
folderID:
|
||||
typeof folder[folderFieldName] === 'number' ||
|
||||
typeof folder[folderFieldName] === 'string'
|
||||
? folder[folderFieldName]
|
||||
: folder[folderFieldName].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,89 @@
|
||||
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 folderCollectionSlugs: string[] = payload.config.collections.reduce<string[]>(
|
||||
(acc, collection) => {
|
||||
if (collection?.admin?.folders) {
|
||||
acc.push(collection.slug)
|
||||
}
|
||||
return acc
|
||||
},
|
||||
[],
|
||||
)
|
||||
|
||||
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] : folderCollectionSlugs),
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
limit: 1,
|
||||
overrideAccess: false,
|
||||
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({
|
||||
folderFieldName: payload.config.folders.fieldName,
|
||||
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
|
||||
}
|
||||
61
packages/payload/src/folders/utils/getOrphanedDocs.ts
Normal file
61
packages/payload/src/folders/utils/getOrphanedDocs.ts
Normal file
@@ -0,0 +1,61 @@
|
||||
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: [
|
||||
{
|
||||
[payload.config.folders.fieldName]: {
|
||||
exists: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
[payload.config.folders.fieldName]: {
|
||||
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,
|
||||
sort: payload.collections[collectionSlug].config.admin.useAsTitle,
|
||||
user,
|
||||
where: whereConstraints,
|
||||
})
|
||||
|
||||
return (
|
||||
orphanedFolders?.docs.map((doc) =>
|
||||
formatFolderOrDocumentItem({
|
||||
folderFieldName: payload.config.folders.fieldName,
|
||||
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:yes',
|
||||
'general:no',
|
||||
'general:columns',
|
||||
@@ -204,6 +226,8 @@ export const clientTranslationKeys = createClientTranslationKeys([
|
||||
'general:globals',
|
||||
'general:goBack',
|
||||
'general:isEditing',
|
||||
'general:item',
|
||||
'general:items',
|
||||
'general:language',
|
||||
'general:lastModified',
|
||||
'general:leaveAnyway',
|
||||
@@ -214,8 +238,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',
|
||||
@@ -241,6 +271,7 @@ export const clientTranslationKeys = createClientTranslationKeys([
|
||||
'general:reindex',
|
||||
'general:reindexingAll',
|
||||
'general:remove',
|
||||
'general:rename',
|
||||
'general:reset',
|
||||
'general:resetPreferences',
|
||||
'general:resetPreferencesDescription',
|
||||
@@ -251,6 +282,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}}',
|
||||
@@ -202,6 +228,7 @@ export const arTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'تأكيد النسخ',
|
||||
confirmDeletion: 'تأكيد الحذف',
|
||||
confirmDuplication: 'تأكيد التّكرار',
|
||||
confirmMove: 'تأكيد النقل',
|
||||
confirmReindex: 'إعادة فهرسة جميع {{collections}}؟',
|
||||
confirmReindexAll: 'إعادة فهرسة جميع المجموعات؟',
|
||||
confirmReindexDescription:
|
||||
@@ -260,6 +287,8 @@ export const arTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'العودة',
|
||||
import: 'استيراد',
|
||||
isEditing: 'يحرر',
|
||||
item: 'عنصر',
|
||||
items: 'عناصر',
|
||||
language: 'اللغة',
|
||||
lastModified: 'آخر تعديل',
|
||||
leaveAnyway: 'المغادرة على أي حال',
|
||||
@@ -271,8 +300,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: 'التالي',
|
||||
no: 'لا',
|
||||
@@ -301,6 +335,7 @@ export const arTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'إعادة الفهرسة',
|
||||
reindexingAll: 'جاري إعادة فهرسة جميع {{collections}}.',
|
||||
remove: 'إزالة',
|
||||
rename: 'إعادة تسمية',
|
||||
reset: 'إعادة تعيين',
|
||||
resetPreferences: 'إعادة تعيين التفضيلات',
|
||||
resetPreferencesDescription:
|
||||
@@ -312,6 +347,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.',
|
||||
@@ -205,6 +232,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:
|
||||
@@ -264,6 +292,8 @@ export const azTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Geri qayıt',
|
||||
import: 'İdxal',
|
||||
isEditing: 'redaktə edir',
|
||||
item: 'əşya',
|
||||
items: 'maddələr',
|
||||
language: 'Dil',
|
||||
lastModified: 'Son dəyişdirildi',
|
||||
leaveAnyway: 'Heç olmasa çıx',
|
||||
@@ -275,8 +305,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',
|
||||
no: 'Xeyr',
|
||||
@@ -305,6 +341,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.',
|
||||
@@ -315,6 +352,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}}',
|
||||
@@ -204,6 +231,7 @@ export const bgTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Потвърди копирането',
|
||||
confirmDeletion: 'Потвърди изтриване',
|
||||
confirmDuplication: 'Потвърди дупликация',
|
||||
confirmMove: 'Потвърждаване на преместване',
|
||||
confirmReindex: 'Да се преиндексират всички {{collections}}?',
|
||||
confirmReindexAll: 'Да се преиндексират всички колекции?',
|
||||
confirmReindexDescription:
|
||||
@@ -263,6 +291,8 @@ export const bgTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Върни се',
|
||||
import: 'Внос',
|
||||
isEditing: 'редактира',
|
||||
item: 'артикул',
|
||||
items: 'артикули',
|
||||
language: 'Език',
|
||||
lastModified: 'Последно променено',
|
||||
leaveAnyway: 'Напусни въпреки това',
|
||||
@@ -274,8 +304,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: 'Следващ',
|
||||
no: 'Не',
|
||||
@@ -304,6 +340,7 @@ export const bgTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Преиндексиране',
|
||||
reindexingAll: 'Преиндексиране на всички {{collections}}.',
|
||||
remove: 'Премахни',
|
||||
rename: 'Преименувайте',
|
||||
reset: 'Нулиране',
|
||||
resetPreferences: 'Нулиране на предпочитанията',
|
||||
resetPreferencesDescription:
|
||||
@@ -315,6 +352,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}}',
|
||||
@@ -205,6 +232,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:
|
||||
@@ -264,6 +292,8 @@ export const caTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Torna enrere',
|
||||
import: 'Importar',
|
||||
isEditing: 'esta editant',
|
||||
item: 'element',
|
||||
items: 'articles',
|
||||
language: 'Idioma',
|
||||
lastModified: 'Última modificació',
|
||||
leaveAnyway: 'Deixa-ho de totes maneres',
|
||||
@@ -275,8 +305,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',
|
||||
no: 'No',
|
||||
@@ -305,6 +341,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:
|
||||
@@ -316,6 +353,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}}',
|
||||
@@ -204,6 +231,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:
|
||||
@@ -262,6 +290,8 @@ export const csTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Vrátit se',
|
||||
import: 'Import',
|
||||
isEditing: 'upravuje',
|
||||
item: 'položka',
|
||||
items: 'položky',
|
||||
language: 'Jazyk',
|
||||
lastModified: 'Naposledy změněno',
|
||||
leaveAnyway: 'Přesto odejít',
|
||||
@@ -273,8 +303,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ší',
|
||||
no: 'Ne',
|
||||
@@ -303,6 +339,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.',
|
||||
@@ -313,6 +350,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}}',
|
||||
@@ -204,6 +230,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:
|
||||
@@ -262,6 +289,8 @@ export const daTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Gå tilbage',
|
||||
import: 'Import',
|
||||
isEditing: 'redigerer',
|
||||
item: 'vare',
|
||||
items: 'elementer',
|
||||
language: 'Sprog',
|
||||
lastModified: 'Sidst ændret',
|
||||
leaveAnyway: 'Forlad alligevel',
|
||||
@@ -273,8 +302,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',
|
||||
no: 'Nej',
|
||||
@@ -303,6 +338,7 @@ export const daTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Genindekser',
|
||||
reindexingAll: 'Genindekserer alle {{collections}}.',
|
||||
remove: 'Fjern',
|
||||
rename: 'Omdøb',
|
||||
reset: 'Nulstil',
|
||||
resetPreferences: 'Nulstil præferencer',
|
||||
resetPreferencesDescription:
|
||||
@@ -314,6 +350,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',
|
||||
|
||||
@@ -179,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',
|
||||
@@ -210,6 +237,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:
|
||||
@@ -269,6 +297,8 @@ export const deTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Zurück',
|
||||
import: 'Importieren',
|
||||
isEditing: 'bearbeitet gerade',
|
||||
item: 'Artikel',
|
||||
items: 'Artikel',
|
||||
language: 'Sprache',
|
||||
lastModified: 'Zuletzt geändert',
|
||||
leaveAnyway: 'Trotzdem verlassen',
|
||||
@@ -280,8 +310,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',
|
||||
no: 'Nein',
|
||||
@@ -310,6 +346,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.',
|
||||
@@ -320,6 +357,7 @@ 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',
|
||||
|
||||
@@ -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}}',
|
||||
@@ -205,6 +232,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:
|
||||
@@ -264,6 +292,8 @@ export const enTranslations = {
|
||||
goBack: 'Go back',
|
||||
import: 'Import',
|
||||
isEditing: 'is editing',
|
||||
item: 'item',
|
||||
items: 'items',
|
||||
language: 'Language',
|
||||
lastModified: 'Last Modified',
|
||||
leaveAnyway: 'Leave anyway',
|
||||
@@ -275,8 +305,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',
|
||||
no: 'No',
|
||||
@@ -305,6 +341,7 @@ export const enTranslations = {
|
||||
reindex: 'Reindex',
|
||||
reindexingAll: 'Reindexing all {{collections}}.',
|
||||
remove: 'Remove',
|
||||
rename: 'Rename',
|
||||
reset: 'Reset',
|
||||
resetPreferences: 'Reset Preferences',
|
||||
resetPreferencesDescription:
|
||||
@@ -316,6 +353,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}}',
|
||||
@@ -209,6 +236,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:
|
||||
@@ -268,6 +296,8 @@ export const esTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Volver',
|
||||
import: 'Importar',
|
||||
isEditing: 'está editando',
|
||||
item: 'artículo',
|
||||
items: 'artículos',
|
||||
language: 'Idioma',
|
||||
lastModified: 'Última modificación',
|
||||
leaveAnyway: 'Salir de todos modos',
|
||||
@@ -279,8 +309,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',
|
||||
no: 'No',
|
||||
@@ -309,6 +345,7 @@ export const esTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Reindexar',
|
||||
reindexingAll: 'Reindexando todas las {{collections}}.',
|
||||
remove: 'Remover',
|
||||
rename: 'Renombrar',
|
||||
reset: 'Reiniciar',
|
||||
resetPreferences: 'Restablecer preferencias',
|
||||
resetPreferencesDescription:
|
||||
@@ -320,6 +357,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}}',
|
||||
@@ -203,6 +230,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:
|
||||
@@ -261,6 +289,8 @@ export const etTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Mine tagasi',
|
||||
import: 'Importimine',
|
||||
isEditing: 'muudab',
|
||||
item: 'üksus',
|
||||
items: 'esemed',
|
||||
language: 'Keel',
|
||||
lastModified: 'Viimati muudetud',
|
||||
leaveAnyway: 'Lahku ikkagi',
|
||||
@@ -272,8 +302,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',
|
||||
no: 'Ei',
|
||||
@@ -302,6 +337,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.',
|
||||
@@ -312,6 +348,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}} هستید',
|
||||
@@ -203,6 +230,7 @@ export const faTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'تأیید کپی',
|
||||
confirmDeletion: 'تأئید عملیات حذف',
|
||||
confirmDuplication: 'تأئید رونوشت',
|
||||
confirmMove: 'تأیید حرکت',
|
||||
confirmReindex: 'آیا همه {{collections}} بازایندکس شوند؟',
|
||||
confirmReindexAll: 'آیا همه مجموعهها بازایندکس شوند؟',
|
||||
confirmReindexDescription:
|
||||
@@ -262,6 +290,8 @@ export const faTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'برگشت',
|
||||
import: 'واردات',
|
||||
isEditing: 'در حال ویرایش است',
|
||||
item: 'مورد',
|
||||
items: 'موارد',
|
||||
language: 'زبان',
|
||||
lastModified: 'آخرین نگارش',
|
||||
leaveAnyway: 'به هر حال ترک کن',
|
||||
@@ -273,8 +303,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: 'بعدی',
|
||||
no: 'نه',
|
||||
@@ -303,6 +339,7 @@ export const faTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'بازنمایهسازی',
|
||||
reindexingAll: 'در حال بازایندکس همه {{collections}}.',
|
||||
remove: 'برداشتن',
|
||||
rename: 'تغییر نام',
|
||||
reset: 'بازنشانی',
|
||||
resetPreferences: 'بازنشانی تنظیمات',
|
||||
resetPreferencesDescription: 'این تمام تنظیمات شما را به تنظیمات پیشفرض بازنشانی خواهد کرد.',
|
||||
@@ -313,6 +350,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}}',
|
||||
@@ -212,6 +239,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:
|
||||
@@ -271,6 +299,8 @@ export const frTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Retourner',
|
||||
import: 'Importation',
|
||||
isEditing: 'est en train de modifier',
|
||||
item: 'article',
|
||||
items: 'articles',
|
||||
language: 'Langue',
|
||||
lastModified: 'Dernière modification',
|
||||
leaveAnyway: 'Quitter quand même',
|
||||
@@ -282,8 +312,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',
|
||||
no: 'Non',
|
||||
@@ -312,6 +348,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:
|
||||
@@ -323,6 +360,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}} אחד',
|
||||
@@ -200,6 +226,7 @@ export const heTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'אשר עותק',
|
||||
confirmDeletion: 'אישור מחיקה',
|
||||
confirmDuplication: 'אישור שכפול',
|
||||
confirmMove: 'אשר העברה',
|
||||
confirmReindex: 'האם להחזיר אינדקס לכל {{collections}}?',
|
||||
confirmReindexAll: 'האם להחזיר אינדקס לכל האוספים?',
|
||||
confirmReindexDescription:
|
||||
@@ -258,6 +285,8 @@ export const heTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'חזור',
|
||||
import: 'יבוא',
|
||||
isEditing: 'עורך',
|
||||
item: 'פריט',
|
||||
items: 'פריטים',
|
||||
language: 'שפה',
|
||||
lastModified: 'נערך לאחרונה',
|
||||
leaveAnyway: 'צא בכל זאת',
|
||||
@@ -269,8 +298,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: 'הבא',
|
||||
no: 'לא',
|
||||
@@ -298,6 +332,7 @@ export const heTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'החזרת אינדקס',
|
||||
reindexingAll: 'החזרת אינדקס לכל {{collections}}.',
|
||||
remove: 'הסר',
|
||||
rename: 'שנה שם',
|
||||
reset: 'איפוס',
|
||||
resetPreferences: 'איפוס העדפות',
|
||||
resetPreferencesDescription: 'זאת תאפס את כל ההעדפות שלך להגדרות ברירת המחדל.',
|
||||
@@ -308,6 +343,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}}',
|
||||
@@ -205,6 +232,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:
|
||||
@@ -264,6 +292,8 @@ export const hrTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Vrati se',
|
||||
import: 'Uvoz',
|
||||
isEditing: 'uređuje',
|
||||
item: 'stavka',
|
||||
items: 'stavke',
|
||||
language: 'Jezik',
|
||||
lastModified: 'Zadnja promjena',
|
||||
leaveAnyway: 'Svejedno napusti',
|
||||
@@ -275,8 +305,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',
|
||||
no: 'Ne',
|
||||
@@ -305,6 +341,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.',
|
||||
@@ -315,6 +352,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}}',
|
||||
@@ -207,6 +234,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:
|
||||
@@ -266,6 +294,8 @@ export const huTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Vissza',
|
||||
import: 'Behozatal',
|
||||
isEditing: 'szerkeszt',
|
||||
item: 'tétel',
|
||||
items: 'tételek',
|
||||
language: 'Nyelv',
|
||||
lastModified: 'Utoljára módosítva',
|
||||
leaveAnyway: 'Távozás mindenképp',
|
||||
@@ -277,8 +307,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ő',
|
||||
no: 'Nem',
|
||||
@@ -307,6 +342,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:
|
||||
@@ -318,6 +354,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',
|
||||
|
||||
@@ -174,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 +232,7 @@ export const hyTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Հաստատել պատճենումը',
|
||||
confirmDeletion: 'Հաստատել ջնջելը',
|
||||
confirmDuplication: 'Հաստատել կրկնօրինակումը',
|
||||
confirmMove: 'Հաստատեք տեղափոխումը',
|
||||
confirmReindex: 'Վերաինդեքսավորե՞լ բոլոր {{collections}}-ը։',
|
||||
confirmReindexAll: 'Վերաինդեքսավորե՞լ բոլոր հավաքածուները։',
|
||||
confirmReindexDescription:
|
||||
@@ -264,6 +292,8 @@ export const hyTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Հետ գնալ',
|
||||
import: 'Ներմուծում',
|
||||
isEditing: 'խմբագրում է',
|
||||
item: 'տարր',
|
||||
items: 'տեսականի',
|
||||
language: 'Լեզու',
|
||||
lastModified: 'Վերջին փոփոխություն',
|
||||
leaveAnyway: 'Այնուամենայնիվ հեռանալ',
|
||||
@@ -275,8 +305,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: 'Հաջորդ',
|
||||
no: 'Ոչ',
|
||||
@@ -305,6 +341,7 @@ export const hyTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Վերաինդեքսավորել',
|
||||
reindexingAll: 'Վերաինդեքսավորվում են բոլոր {{collections}}-ները։',
|
||||
remove: 'Հեռացնել',
|
||||
rename: 'Վերանվանել',
|
||||
reset: 'Վերակայել',
|
||||
resetPreferences: 'Վերակայել նախընտրությունները',
|
||||
resetPreferencesDescription:
|
||||
@@ -316,6 +353,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}}',
|
||||
@@ -209,6 +236,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:
|
||||
@@ -267,6 +295,8 @@ export const itTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Torna indietro',
|
||||
import: 'Importare',
|
||||
isEditing: 'sta modificando',
|
||||
item: 'articolo',
|
||||
items: 'articoli',
|
||||
language: 'Lingua',
|
||||
lastModified: 'Ultima modifica',
|
||||
leaveAnyway: 'Esci comunque',
|
||||
@@ -278,8 +308,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',
|
||||
no: 'No',
|
||||
@@ -308,6 +343,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:
|
||||
@@ -319,6 +355,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}}つ削除しようとしています',
|
||||
@@ -205,6 +232,7 @@ export const jaTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'コピーを確認します',
|
||||
confirmDeletion: '削除の確認',
|
||||
confirmDuplication: '複製の確認',
|
||||
confirmMove: '移動を確認してください',
|
||||
confirmReindex: 'すべての{{collections}}を再インデックスしますか?',
|
||||
confirmReindexAll: 'すべてのコレクションを再インデックスしますか?',
|
||||
confirmReindexDescription:
|
||||
@@ -264,6 +292,8 @@ export const jaTranslations: DefaultTranslationsObject = {
|
||||
goBack: '戻る',
|
||||
import: '輸入',
|
||||
isEditing: '編集中',
|
||||
item: 'アイテム',
|
||||
items: 'アイテム',
|
||||
language: '言語',
|
||||
lastModified: '最終更新',
|
||||
leaveAnyway: 'すぐに画面を離れる',
|
||||
@@ -275,8 +305,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: '次',
|
||||
no: 'いいえ',
|
||||
@@ -305,6 +341,7 @@ export const jaTranslations: DefaultTranslationsObject = {
|
||||
reindex: '再インデックス',
|
||||
reindexingAll: 'すべての{{collections}}を再インデックスしています。',
|
||||
remove: '削除',
|
||||
rename: '名前を変更する',
|
||||
reset: 'リセット',
|
||||
resetPreferences: '設定をリセット',
|
||||
resetPreferencesDescription: 'これにより、すべての設定がデフォルト設定にリセットされます。',
|
||||
@@ -315,6 +352,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}}개 삭제하려고 합니다.',
|
||||
@@ -204,6 +230,7 @@ export const koTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: '복사 확인',
|
||||
confirmDeletion: '삭제하시겠습니까?',
|
||||
confirmDuplication: '복제하시겠습니까?',
|
||||
confirmMove: '이동 확인',
|
||||
confirmReindex: '모든 {{collections}}를 다시 인덱싱하시겠습니까?',
|
||||
confirmReindexAll: '모든 컬렉션을 다시 인덱싱하시겠습니까?',
|
||||
confirmReindexDescription:
|
||||
@@ -262,6 +289,8 @@ export const koTranslations: DefaultTranslationsObject = {
|
||||
goBack: '돌아가기',
|
||||
import: '수입',
|
||||
isEditing: '편집 중',
|
||||
item: '항목',
|
||||
items: '항목들',
|
||||
language: '언어',
|
||||
lastModified: '마지막 수정 일시',
|
||||
leaveAnyway: '그래도 나가시겠습니까?',
|
||||
@@ -273,8 +302,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: '다음',
|
||||
no: '아니요',
|
||||
@@ -303,6 +338,7 @@ export const koTranslations: DefaultTranslationsObject = {
|
||||
reindex: '재인덱싱',
|
||||
reindexingAll: '모든 {{collections}}를 다시 인덱싱하는 중입니다.',
|
||||
remove: '제거',
|
||||
rename: '이름 변경',
|
||||
reset: '초기화',
|
||||
resetPreferences: '기본 설정으로 재설정',
|
||||
resetPreferencesDescription: '이렇게 하면 모든 기본 설정이 기본값으로 재설정됩니다.',
|
||||
@@ -313,6 +349,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}}',
|
||||
@@ -207,6 +234,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:
|
||||
@@ -266,6 +294,8 @@ export const ltTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Grįžkite',
|
||||
import: 'Importas',
|
||||
isEditing: 'redaguoja',
|
||||
item: 'daiktas',
|
||||
items: 'elementai',
|
||||
language: 'Kalba',
|
||||
lastModified: 'Paskutinį kartą modifikuota',
|
||||
leaveAnyway: 'Vis tiek išeikite',
|
||||
@@ -277,8 +307,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',
|
||||
no: 'Ne',
|
||||
@@ -307,6 +343,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.',
|
||||
@@ -317,6 +354,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',
|
||||
|
||||
@@ -174,7 +174,34 @@ export const lvTranslations: DefaultTranslationsObject = {
|
||||
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 +231,7 @@ export const lvTranslations: DefaultTranslationsObject = {
|
||||
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:
|
||||
@@ -263,6 +291,8 @@ export const lvTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Doties atpakaļ',
|
||||
import: 'Imports',
|
||||
isEditing: 'redzē',
|
||||
item: 'vienība',
|
||||
items: 'vienības',
|
||||
language: 'Valoda',
|
||||
lastModified: 'Pēdējoreiz mainīts',
|
||||
leaveAnyway: 'Pamest tāpat',
|
||||
@@ -274,8 +304,14 @@ export const lvTranslations: DefaultTranslationsObject = {
|
||||
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',
|
||||
no: 'Nē',
|
||||
@@ -304,6 +340,7 @@ export const lvTranslations: DefaultTranslationsObject = {
|
||||
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.',
|
||||
@@ -314,6 +351,7 @@ export const lvTranslations: DefaultTranslationsObject = {
|
||||
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}} ကို ဖျက်ပါတော့မည်။',
|
||||
@@ -207,6 +234,7 @@ export const myTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'အောင်မြင်စေသည့်ကူးထားပြီးအတည်ပြုပါ',
|
||||
confirmDeletion: 'ဖျက်တော့မယ်နော်။',
|
||||
confirmDuplication: 'ပုံတူပွားခြင်းကို အတည်ပြုပါ။',
|
||||
confirmMove: 'Sahkan pergerakan',
|
||||
confirmReindex: 'အပေါ် {{collections}} အားလုံးကို ထပ်လိပ်ပါသလား?',
|
||||
confirmReindexAll: 'အပေါ် ကော်လက်ရှင်းများအားလုံးကို ထပ်လိပ်ပါသလား?',
|
||||
confirmReindexDescription:
|
||||
@@ -266,6 +294,8 @@ export const myTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'နောက်သို့',
|
||||
import: 'သွင်းကုန်',
|
||||
isEditing: 'ပြင်ဆင်နေသည်',
|
||||
item: 'barang',
|
||||
items: 'barang-barang',
|
||||
language: 'ဘာသာစကား',
|
||||
lastModified: 'နောက်ဆုံးပြင်ဆင်ထားသည်။',
|
||||
leaveAnyway: 'ဘာဖြစ်ဖြစ် ထွက်မည်။',
|
||||
@@ -277,8 +307,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',
|
||||
no: 'Tidak',
|
||||
@@ -307,6 +343,7 @@ export const myTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'ပြန်လည်အညွှန်းပြုလုပ်ပါ',
|
||||
reindexingAll: 'အပေါ် {{collections}} အားလုံးကို ထပ်လိပ်နေပါသည်။',
|
||||
remove: 'ဖယ်ရှားမည်။',
|
||||
rename: 'အမည်ပြောင်း',
|
||||
reset: 'Tetapkan semula',
|
||||
resetPreferences: 'ကြိုတင်သတ်မှတ်ချက်များ ပြန်လည်တပ်ဆင်မည်',
|
||||
resetPreferencesDescription:
|
||||
@@ -318,6 +355,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}}',
|
||||
@@ -205,6 +232,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:
|
||||
@@ -264,6 +292,8 @@ export const nbTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Gå tilbake',
|
||||
import: 'Import',
|
||||
isEditing: 'redigerer',
|
||||
item: 'vare',
|
||||
items: 'elementer',
|
||||
language: 'Språk',
|
||||
lastModified: 'Sist endret',
|
||||
leaveAnyway: 'Forlat likevel',
|
||||
@@ -275,8 +305,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',
|
||||
no: 'Nei',
|
||||
@@ -305,6 +341,7 @@ export const nbTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Reindekser',
|
||||
reindexingAll: 'Reindekserer alle {{collections}}.',
|
||||
remove: 'Fjern',
|
||||
rename: 'Endre navn',
|
||||
reset: 'Tilbakestill',
|
||||
resetPreferences: 'Tilbakestill preferanser',
|
||||
resetPreferencesDescription:
|
||||
@@ -316,6 +353,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',
|
||||
@@ -208,6 +235,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:
|
||||
@@ -267,6 +295,8 @@ export const nlTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Ga terug',
|
||||
import: 'Importeren',
|
||||
isEditing: 'is aan het bewerken',
|
||||
item: 'artikel',
|
||||
items: 'artikelen',
|
||||
language: 'Taal',
|
||||
lastModified: 'Laatst gewijzigd',
|
||||
leaveAnyway: 'Toch weggaan',
|
||||
@@ -278,8 +308,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',
|
||||
no: 'Nee',
|
||||
@@ -308,6 +344,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:
|
||||
@@ -319,6 +356,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}}',
|
||||
@@ -205,6 +232,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:
|
||||
@@ -264,6 +292,8 @@ export const plTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Wróć',
|
||||
import: 'Import',
|
||||
isEditing: 'edytuje',
|
||||
item: 'przedmiot',
|
||||
items: 'przedmioty',
|
||||
language: 'Język',
|
||||
lastModified: 'Ostatnio zmodyfikowany',
|
||||
leaveAnyway: 'Wyjdź mimo to',
|
||||
@@ -275,8 +305,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',
|
||||
no: 'Nie',
|
||||
@@ -305,6 +341,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.',
|
||||
@@ -315,6 +352,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}}',
|
||||
@@ -205,6 +232,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:
|
||||
@@ -264,6 +292,8 @@ export const ptTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Voltar',
|
||||
import: 'Importar',
|
||||
isEditing: 'está editando',
|
||||
item: 'item',
|
||||
items: 'itens',
|
||||
language: 'Idioma',
|
||||
lastModified: 'Última modificação',
|
||||
leaveAnyway: 'Sair mesmo assim',
|
||||
@@ -275,8 +305,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',
|
||||
no: 'Não',
|
||||
@@ -305,6 +341,7 @@ export const ptTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Reindexar',
|
||||
reindexingAll: 'Reindexando todas as {{collections}}.',
|
||||
remove: 'Remover',
|
||||
rename: 'Renomear',
|
||||
reset: 'Redefinir',
|
||||
resetPreferences: 'Redefinir preferências',
|
||||
resetPreferencesDescription:
|
||||
@@ -316,6 +353,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}}',
|
||||
@@ -209,6 +236,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:
|
||||
@@ -268,6 +296,8 @@ export const roTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Înapoi',
|
||||
import: 'Import',
|
||||
isEditing: 'editează',
|
||||
item: 'articol',
|
||||
items: 'articole',
|
||||
language: 'Limba',
|
||||
lastModified: 'Ultima modificare',
|
||||
leaveAnyway: 'Pleacă oricum',
|
||||
@@ -279,8 +309,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',
|
||||
no: 'Nu',
|
||||
@@ -309,6 +345,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.',
|
||||
@@ -319,6 +356,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}}',
|
||||
@@ -205,6 +232,7 @@ export const rsTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Potvrda kopiranja',
|
||||
confirmDeletion: 'Потврди брисање',
|
||||
confirmDuplication: 'Потврди дупликацију',
|
||||
confirmMove: 'Potvrdite pomeranje',
|
||||
confirmReindex: 'Ponovo indeksirati sve {{collections}}?',
|
||||
confirmReindexAll: 'Ponovo indeksirati sve kolekcije?',
|
||||
confirmReindexDescription:
|
||||
@@ -264,6 +292,8 @@ export const rsTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Врати се',
|
||||
import: 'Uvoz',
|
||||
isEditing: 'уређује',
|
||||
item: 'artikal',
|
||||
items: 'artikli',
|
||||
language: 'Језик',
|
||||
lastModified: 'Задња промена',
|
||||
leaveAnyway: 'Свеједно напусти',
|
||||
@@ -275,8 +305,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: 'Следећи',
|
||||
no: 'Не',
|
||||
@@ -305,6 +341,7 @@ export const rsTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Реиндексирај',
|
||||
reindexingAll: 'Ponovno indeksiranje svih {{collections}}.',
|
||||
remove: 'Уклони',
|
||||
rename: 'Preimenujte',
|
||||
reset: 'Поново постави',
|
||||
resetPreferences: 'Поништи подешавања',
|
||||
resetPreferencesDescription: 'Ово ће поништити сва ваша подешавања на подразумеване вредности.',
|
||||
@@ -315,6 +352,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}}',
|
||||
@@ -205,6 +232,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:
|
||||
@@ -264,6 +292,8 @@ export const rsLatinTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Vrati se',
|
||||
import: 'Uvoz',
|
||||
isEditing: 'uređuje',
|
||||
item: 'stavka',
|
||||
items: 'stavke',
|
||||
language: 'Jezik',
|
||||
lastModified: 'Zadnja promena',
|
||||
leaveAnyway: 'Svejedno napusti',
|
||||
@@ -275,8 +305,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',
|
||||
no: 'Ne',
|
||||
@@ -305,6 +341,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:
|
||||
@@ -316,6 +353,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}}',
|
||||
@@ -207,6 +234,7 @@ export const ruTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Подтвердить копирование',
|
||||
confirmDeletion: 'Подтвердить удаление',
|
||||
confirmDuplication: 'Подтвердить копирование',
|
||||
confirmMove: 'Подтвердите перемещение',
|
||||
confirmReindex: 'Переиндексировать все {{collections}}?',
|
||||
confirmReindexAll: 'Переиндексировать все коллекции?',
|
||||
confirmReindexDescription:
|
||||
@@ -266,6 +294,8 @@ export const ruTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Назад',
|
||||
import: 'Импорт',
|
||||
isEditing: 'редактирует',
|
||||
item: 'предмет',
|
||||
items: 'предметы',
|
||||
language: 'Язык',
|
||||
lastModified: 'Последнее изменение',
|
||||
leaveAnyway: 'Все равно уйти',
|
||||
@@ -277,8 +307,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: 'Следующий',
|
||||
no: 'Нет',
|
||||
@@ -307,6 +343,7 @@ export const ruTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Переиндексировать',
|
||||
reindexingAll: 'Переиндексирование всех {{collections}}.',
|
||||
remove: 'Удалить',
|
||||
rename: 'Переименовать',
|
||||
reset: 'Сброс',
|
||||
resetPreferences: 'Сбросить настройки',
|
||||
resetPreferencesDescription: 'Это сбросит все ваши настройки до значений по умолчанию.',
|
||||
@@ -317,6 +354,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}}',
|
||||
@@ -207,6 +234,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:
|
||||
@@ -265,6 +293,8 @@ export const skTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Vrátiť sa',
|
||||
import: 'Dovoz',
|
||||
isEditing: 'upravuje',
|
||||
item: 'položka',
|
||||
items: 'položky',
|
||||
language: 'Jazyk',
|
||||
lastModified: 'Naposledy zmenené',
|
||||
leaveAnyway: 'Presto odísť',
|
||||
@@ -276,8 +306,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',
|
||||
no: 'Nie',
|
||||
@@ -306,6 +341,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.',
|
||||
@@ -316,6 +352,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}}',
|
||||
@@ -205,6 +232,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:
|
||||
@@ -263,6 +291,8 @@ export const slTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Nazaj',
|
||||
import: 'Uvoz',
|
||||
isEditing: 'ureja',
|
||||
item: 'predmet',
|
||||
items: 'predmeti',
|
||||
language: 'Jezik',
|
||||
lastModified: 'Zadnja sprememba',
|
||||
leaveAnyway: 'Vseeno zapusti',
|
||||
@@ -274,8 +304,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',
|
||||
no: 'Ne',
|
||||
@@ -304,6 +340,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.',
|
||||
@@ -314,6 +351,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}}',
|
||||
@@ -205,6 +232,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:
|
||||
@@ -264,6 +292,8 @@ export const svTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Gå tillbaka',
|
||||
import: 'Importera',
|
||||
isEditing: 'redigerar',
|
||||
item: 'artikel',
|
||||
items: 'artiklar',
|
||||
language: 'Språk',
|
||||
lastModified: 'Senast ändrad',
|
||||
leaveAnyway: 'Lämna ändå',
|
||||
@@ -275,8 +305,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',
|
||||
no: 'Nej',
|
||||
@@ -305,6 +341,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:
|
||||
@@ -316,6 +353,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}}',
|
||||
@@ -201,6 +227,7 @@ export const thTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'ยืนยันสำเนา',
|
||||
confirmDeletion: 'ยืนยันการลบ',
|
||||
confirmDuplication: 'ยืนยันการสำเนา',
|
||||
confirmMove: 'ยืนยันการย้าย',
|
||||
confirmReindex: 'ทำการจัดทำดัชนีใหม่ทั้งหมดใน {{collections}}?',
|
||||
confirmReindexAll: 'ทำการจัดทำดัชนีใหม่ทั้งหมดในทุกคอลเลกชัน?',
|
||||
confirmReindexDescription:
|
||||
@@ -260,6 +287,8 @@ export const thTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'กลับไป',
|
||||
import: 'นำเข้า',
|
||||
isEditing: 'กำลังแก้ไข',
|
||||
item: 'รายการ',
|
||||
items: 'รายการ',
|
||||
language: 'ภาษา',
|
||||
lastModified: 'แก้ไขล่าสุดเมื่อ',
|
||||
leaveAnyway: 'ออกจากหน้านี้',
|
||||
@@ -271,8 +300,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: 'ถัดไป',
|
||||
no: 'ไม่',
|
||||
@@ -301,6 +335,7 @@ export const thTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'จัดทำดัชนีใหม่',
|
||||
reindexingAll: 'กำลังทำการจัดทำดัชนีใหม่ทั้งหมดใน {{collections}}.',
|
||||
remove: 'ลบ',
|
||||
rename: 'เปลี่ยนชื่อ',
|
||||
reset: 'รีเซ็ต',
|
||||
resetPreferences: 'รีเซ็ตการตั้งค่า',
|
||||
resetPreferencesDescription: 'การกระทำนี้จะรีเซ็ตการตั้งค่าทั้งหมดของคุณเป็นค่าเริ่มต้น',
|
||||
@@ -311,6 +346,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',
|
||||
@@ -208,6 +235,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:
|
||||
@@ -267,6 +295,8 @@ export const trTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Geri dön',
|
||||
import: 'İthalat',
|
||||
isEditing: 'düzenliyor',
|
||||
item: 'öğe',
|
||||
items: 'öğeler',
|
||||
language: 'Dil',
|
||||
lastModified: 'Son değiştirme',
|
||||
leaveAnyway: 'Yine de ayrıl',
|
||||
@@ -278,8 +308,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',
|
||||
no: 'Hayır',
|
||||
@@ -308,6 +344,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:
|
||||
@@ -319,6 +356,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}}',
|
||||
@@ -205,6 +232,7 @@ export const ukTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: 'Підтвердіть копію',
|
||||
confirmDeletion: 'Підтвердити видалення',
|
||||
confirmDuplication: 'Підтвердити копіювання',
|
||||
confirmMove: 'Підтвердити переїзд',
|
||||
confirmReindex: 'Перебудувати індекс для всіх {{collections}}?',
|
||||
confirmReindexAll: 'Перебудувати індекс для всіх колекцій?',
|
||||
confirmReindexDescription:
|
||||
@@ -263,6 +291,8 @@ export const ukTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Повернутися',
|
||||
import: 'Імпорт',
|
||||
isEditing: 'редагує',
|
||||
item: 'предмет',
|
||||
items: 'предмети',
|
||||
language: 'Мова',
|
||||
lastModified: 'Останні зміни',
|
||||
leaveAnyway: 'Все одно вийти',
|
||||
@@ -274,8 +304,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: 'Наступний',
|
||||
no: 'Ні',
|
||||
@@ -304,6 +340,7 @@ export const ukTranslations: DefaultTranslationsObject = {
|
||||
reindex: 'Повторне індексування',
|
||||
reindexingAll: 'Перебудова індексів для всіх {{collections}}.',
|
||||
remove: 'Видалити',
|
||||
rename: 'Перейменувати',
|
||||
reset: 'Скидання',
|
||||
resetPreferences: 'Скинути налаштування',
|
||||
resetPreferencesDescription: 'Це скине всі ваші налаштування до значень за замовчуванням.',
|
||||
@@ -314,6 +351,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}}',
|
||||
@@ -204,6 +231,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:
|
||||
@@ -263,6 +291,8 @@ export const viTranslations: DefaultTranslationsObject = {
|
||||
goBack: 'Quay lại',
|
||||
import: 'Nhập khẩu',
|
||||
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',
|
||||
@@ -274,8 +304,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',
|
||||
no: 'Không',
|
||||
@@ -304,6 +340,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.',
|
||||
@@ -314,6 +351,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}}',
|
||||
@@ -198,6 +222,7 @@ export const zhTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: '确认复制',
|
||||
confirmDeletion: '确认删除',
|
||||
confirmDuplication: '确认重复',
|
||||
confirmMove: '确认移动',
|
||||
confirmReindex: '重新索引所有{{collections}}?',
|
||||
confirmReindexAll: '重新索引所有集合?',
|
||||
confirmReindexDescription: '此操作将删除现有索引,并重新索引{{collections}}集合中的文档。',
|
||||
@@ -254,6 +279,8 @@ export const zhTranslations: DefaultTranslationsObject = {
|
||||
goBack: '返回',
|
||||
import: '进口',
|
||||
isEditing: '正在编辑',
|
||||
item: '项目',
|
||||
items: '项目',
|
||||
language: '语言',
|
||||
lastModified: '最后修改',
|
||||
leaveAnyway: '无论如何都要离开',
|
||||
@@ -265,8 +292,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: '下一个',
|
||||
no: '否',
|
||||
@@ -294,6 +326,7 @@ export const zhTranslations: DefaultTranslationsObject = {
|
||||
reindex: '重新索引',
|
||||
reindexingAll: '正在重新索引所有{{collections}}。',
|
||||
remove: '移除',
|
||||
rename: '重命名',
|
||||
reset: '重置',
|
||||
resetPreferences: '重置偏好设置',
|
||||
resetPreferencesDescription: '这将把您的所有偏好设置恢复为默认值。',
|
||||
@@ -304,6 +337,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}}',
|
||||
@@ -198,6 +222,7 @@ export const zhTwTranslations: DefaultTranslationsObject = {
|
||||
confirmCopy: '確認副本',
|
||||
confirmDeletion: '確認刪除',
|
||||
confirmDuplication: '確認複製',
|
||||
confirmMove: '確認移動',
|
||||
confirmReindex: '重新索引所有{{collections}}?',
|
||||
confirmReindexAll: '重新索引所有集合?',
|
||||
confirmReindexDescription: '此操作將刪除現有索引並重新索引{{collections}}集合中的文件。',
|
||||
@@ -254,6 +279,8 @@ export const zhTwTranslations: DefaultTranslationsObject = {
|
||||
goBack: '返回',
|
||||
import: '進口',
|
||||
isEditing: '正在編輯',
|
||||
item: '物品',
|
||||
items: '項目',
|
||||
language: '語言',
|
||||
lastModified: '最後修改',
|
||||
leaveAnyway: '無論如何都要離開',
|
||||
@@ -265,8 +292,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: '下一個',
|
||||
no: '否',
|
||||
@@ -294,6 +326,7 @@ export const zhTwTranslations: DefaultTranslationsObject = {
|
||||
reindex: '重新索引',
|
||||
reindexingAll: '正在重新索引所有{{collections}}。',
|
||||
remove: '移除',
|
||||
rename: '重新命名',
|
||||
reset: '重設',
|
||||
resetPreferences: '重設偏好設定',
|
||||
resetPreferencesDescription: '這將把您的所有偏好設定恢復為預設值。',
|
||||
@@ -304,6 +337,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) {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user