Compare commits

...

150 Commits

Author SHA1 Message Date
Patrik Kozak
25fa48cd0f fix: resolve conflicts from PR 7355 2025-05-21 18:02:28 -04:00
Patrik Kozak
e8401d51a2 Merge branch 'main' of github.com:payloadcms/payload into fix/resolve-conflicts-from-7355 2025-05-21 17:12:16 -04:00
Jarrod Flesch
07e9444c09 fix build 2025-05-21 14:45:29 -04:00
Jarrod Flesch
5dd13f2873 Merge branch 'feat/folders' into test/folders/e2e 2025-05-21 13:44:25 -04:00
Jarrod Flesch
878be913fd adjust test selectors 2025-05-21 13:43:28 -04:00
Jarrod Flesch
0524f198a6 require onCreateSuccess fn in ListCreateNewDocInFolderButton 2025-05-21 12:47:53 -04:00
Jarrod Flesch
5f2e846350 fixes cell not updating fromFolderID and missing onCreateSuccess fn 2025-05-21 12:47:00 -04:00
Jarrod Flesch
d3265b9931 add docs 2025-05-21 12:35:52 -04:00
Jessica Chowdhury
33261b36bf test: add e2e tests folder folder view - WIP 2025-05-21 17:28:01 +01:00
Jessica Chowdhury
73d4201df8 fix(ui): add prefix to folder drawer ids 2025-05-21 17:23:55 +01:00
Jarrod Flesch
50d3da5824 remove enabled property from folders root config 2025-05-21 11:23:51 -04:00
Jarrod Flesch
41aac41df4 refactor how to enable a folder collection 2025-05-21 10:55:26 -04:00
Jarrod Flesch
6a5b95af7c fixes folderID with postgres 2025-05-21 09:12:49 -04:00
Jarrod Flesch
2e7bfcbd63 card grid sizing pt 3 2025-05-20 15:23:56 -04:00
Jarrod Flesch
3ee9a32a38 adjust card grid sizes 2025-05-20 15:22:48 -04:00
Jarrod Flesch
c2d38b4109 adjusts card width at larger screens 2025-05-20 15:20:52 -04:00
Jarrod Flesch
5d9c537145 update int tests 2025-05-20 15:08:53 -04:00
Jarrod Flesch
904b6a6dbe fix build 2025-05-20 14:14:52 -04:00
Jarrod Flesch
cc6de7ef42 rm console log 2025-05-20 14:10:40 -04:00
Jarrod Flesch
a3ef4fbfac fix filter bug 2025-05-20 14:10:08 -04:00
Jarrod Flesch
e9ff611879 more folder file name alignment 2025-05-20 14:09:43 -04:00
Jarrod Flesch
5825d0cfc7 align folder names with feature 2025-05-20 13:38:33 -04:00
Jarrod Flesch
103b476c82 Merge branch 'main' into feat/folders 2025-05-20 13:35:23 -04:00
Jarrod Flesch
a3279b319e update route structures to respect config routes 2025-05-20 13:29:58 -04:00
Jarrod Flesch
bbb0ab784c fix auotsave enabled collections 2025-05-20 13:04:17 -04:00
Jarrod Flesch
32eac5b0c2 rename test folder folder-view to folders 2025-05-20 12:28:14 -04:00
Jarrod Flesch
86098c9140 bug fixes 2025-05-20 10:55:45 -04:00
Jarrod Flesch
7fd2cdf04c allow for folders name to be configurable 2025-05-19 21:00:44 -04:00
Jarrod Flesch
8d507996c8 Merge branch 'main' into feat/folders 2025-05-19 13:24:19 -04:00
Jarrod Flesch
aa82763cb8 fix list menu items test 2025-05-19 13:20:17 -04:00
Jarrod Flesch
e7e6a7dd97 remove multiple listItem toggle clicks in preset query tests 2025-05-19 12:16:21 -04:00
Jarrod Flesch
e14c670a51 query preset passing tests 2025-05-19 11:01:09 -04:00
Jarrod Flesch
21f5d3473c fixes versions count test selectors 2025-05-19 09:14:32 -04:00
Jarrod Flesch
36597110e9 fix missing styles in admin-root 2025-05-16 15:59:25 -04:00
Jarrod Flesch
4f2b237858 fix: column selector bug 2025-05-16 14:26:04 -04:00
Jarrod Flesch
d90afba70d fixes more tests 2025-05-16 13:37:25 -04:00
Jarrod Flesch
decd512daa fix versions test selectors 2025-05-16 13:19:04 -04:00
Jarrod Flesch
b2bf95b17b allow using wait for ssr test 2025-05-16 11:46:40 -04:00
Jarrod Flesch
10e29dd5e2 fix outdated selectors in failing tests 2025-05-16 11:30:05 -04:00
Jarrod Flesch
4c4ae1295e fix css drawer header title selector in test 2025-05-16 10:27:31 -04:00
Jarrod Flesch
adb805dadb revert renderList type change 2025-05-15 17:00:19 -04:00
Jarrod Flesch
e5f0ca3d45 revert unused generics on ServerFunctionClient 2025-05-15 16:58:02 -04:00
Jarrod Flesch
fe2b7693cc successful build 2025-05-15 16:37:05 -04:00
Jarrod Flesch
30d4a098b1 adds missing translations 2025-05-15 16:34:39 -04:00
Jarrod Flesch
aa7918fe6e chore: extract tab style into button element 2025-05-15 16:30:13 -04:00
Jarrod Flesch
f23f87243c fixes issue with add folders in drawers 2025-05-15 16:29:51 -04:00
Jarrod Flesch
41b75882a1 Merge branch 'main' into HEAD 2025-05-15 16:28:06 -04:00
Jarrod Flesch
cfd3c34aba fix lint issues 2025-05-08 09:50:07 -07:00
Jarrod Flesch
270137e92e chore: add better preferences generic default 2025-05-07 15:07:49 -07:00
Jarrod Flesch
cab817d2aa build 2025-05-05 17:03:27 -04:00
Jarrod Flesch
db622e2b79 remove old folder int tests 2025-05-05 16:50:46 -04:00
Jarrod Flesch
c52204317a lint fixes 2025-05-05 16:35:08 -04:00
Jarrod Flesch
a85af1a6d3 import fix 2025-05-05 16:02:22 -04:00
Jarrod Flesch
bccadd5101 fix bad imports 2025-05-05 15:49:26 -04:00
Jarrod Flesch
2fa723743e chore: more test fixes 2025-05-05 14:53:25 -04:00
Jarrod Flesch
2904de778d fix unpublish and locked-docs suite 2025-05-05 12:53:48 -04:00
Jarrod Flesch
d37dfb1376 fix form-state tests 2025-05-05 12:02:42 -04:00
Jarrod Flesch
b203f617af fixes some failing test suites 2025-05-05 11:12:42 -04:00
Jarrod Flesch
ee46f27881 Merge branch 'main' into feat/folders 2025-05-05 09:01:32 -04:00
Jarrod Flesch
2426784726 passing versions suite 2025-05-05 08:31:48 -04:00
Jarrod Flesch
95b78a5951 fix admin locale picker test 2025-05-02 16:55:59 -04:00
Jarrod Flesch
d1c1ad2a1d fix build 2025-05-02 15:26:34 -04:00
Jarrod Flesch
2980bdb799 Merge branch 'main' into feat/folders 2025-05-02 14:37:46 -04:00
Jarrod Flesch
fe6923d0a7 bulk edit folder selection 2025-05-02 12:33:40 -04:00
Jarrod Flesch
7eec63ae69 fix toast missing title for media docs 2025-05-02 10:00:58 -04:00
Jarrod Flesch
77a7bc5e9c fix move to drawers layering and usage 2025-05-02 09:21:44 -04:00
Jarrod Flesch
780becc88a fix global views throwing errors on render 2025-05-02 08:23:37 -04:00
Jarrod Flesch
a2d394ec82 fix breadcrumb click issue 2025-05-02 08:20:49 -04:00
Jarrod Flesch
b1c8c96e97 chore: move doc to folder not updating label 2025-05-02 08:16:52 -04:00
Jarrod Flesch
6b6b596489 feat: allow searching all docs at root on collection-folder views 2025-05-01 16:52:36 -04:00
Jarrod Flesch
a89bc1479f better list selection organization 2025-05-01 14:13:48 -04:00
Jarrod Flesch
bd9f3b5bd2 chore: adds custom cell component for managing doc folder placement in default list view 2025-05-01 14:03:44 -04:00
Jarrod Flesch
2584ff42eb unifies move-to-drawer rather than needing many drawers 2025-05-01 00:34:37 -04:00
Jarrod Flesch
cc1f5fb70c add relationTo cell on browse-by-folder table 2025-04-30 16:46:33 -04:00
Jarrod Flesch
4f7f378b84 rename _parentFolder to _folder 2025-04-30 16:20:13 -04:00
Jarrod Flesch
b279fa7bde language edits for moving folders and documents 2025-04-30 16:13:10 -04:00
Jarrod Flesch
93230a5915 Merge branch 'main' into feat/folders 2025-04-23 06:46:18 -07:00
Jarrod Flesch
9f31daf8e7 prevent views from loading if folders are not enabled 2025-04-23 06:45:12 -07:00
Jarrod Flesch
ded7164dca pill sizing, fix e2e rendering issue 2025-04-21 16:24:09 -04:00
Jarrod Flesch
cc4526844a feat: allow add to folder from move drawer 2025-04-21 15:02:35 -04:00
Jarrod Flesch
362f25f593 commit updated types 2025-04-21 14:53:14 -04:00
Jarrod Flesch
7567d2358a fix: mismatch icon and overall size from small button and small pill 2025-04-21 14:52:44 -04:00
Jarrod Flesch
b418c3cade fix: folder not opening to current selection in doc view 2025-04-21 14:52:15 -04:00
Jarrod Flesch
db0d07d9a7 fix build 2025-04-21 12:41:02 -04:00
Jarrod Flesch
b56e2faad2 fixes folder specific build errors 2025-04-21 12:02:58 -04:00
Jarrod Flesch
56982f9811 Merge branch 'main' into feat/folders 2025-04-21 11:41:43 -04:00
Jarrod Flesch
9e1258811a finishes translations, adjusts create perms 2025-04-21 11:39:09 -04:00
Jarrod Flesch
1d2accfcbb chore: client side functional sorting 2025-04-18 15:50:56 -04:00
Jarrod Flesch
4a8bea2dde chore: adjust search placeholder and table column label 2025-04-18 11:22:36 -04:00
Jarrod Flesch
0149e42276 revert button styles with new chevron icon 2025-04-18 11:05:54 -04:00
Jarrod Flesch
36d9900774 Merge branch 'main' into feat/folders 2025-04-18 10:56:46 -04:00
Jarrod Flesch
f4d624a0c5 rm stale file 2025-04-18 09:46:51 -04:00
Jarrod Flesch
57bcfcc8be cleanup 2025-04-18 09:45:43 -04:00
Jarrod Flesch
d73ddbde0c browse by folder translation 2025-04-18 08:16:00 -04:00
Jarrod Flesch
189dd64799 debug false in test config 2025-04-17 15:21:01 -04:00
Jarrod Flesch
572ce2955a about done 2025-04-17 15:20:18 -04:00
Jarrod Flesch
87ca312a54 Merge branch 'main' into feat/folders 2025-04-14 14:24:12 -04:00
Jarrod Flesch
2b2fa67031 Merge remote-tracking branch 'origin/main' into feat/folders 2025-04-14 14:16:52 -04:00
Jarrod Flesch
2f45749634 rendering of root folder view 2025-04-14 14:16:01 -04:00
Jarrod Flesch
0534dd9506 add folder route to config 2025-04-14 08:05:25 -04:00
Jarrod Flesch
aee1ea1346 rename functions/files 2025-04-11 12:57:32 -04:00
Jarrod Flesch
82ba8cf8f4 feat: completes move-to folder drawer 2025-04-11 12:42:35 -04:00
Jarrod Flesch
1dfff2b0b0 adds no results and adjusts data functions 2025-04-08 10:43:20 -04:00
Jarrod Flesch
6b695355c3 wires up create new polymorphic list view button 2025-04-07 14:14:51 -04:00
Jarrod Flesch
29c32d3141 fix bad imports 2025-04-07 09:05:50 -04:00
Jarrod Flesch
f6afbed5d2 buildable 2025-04-07 08:56:56 -04:00
Jarrod Flesch
5dcf96ca10 chore: adjust translations function 2025-04-07 08:56:21 -04:00
Jarrod Flesch
91c22bd88c Merge branch 'main' into feat/folders 2025-04-04 16:22:57 -04:00
Jarrod Flesch
0d8b5677d9 feat: working collection-folder list view 2025-04-04 15:43:12 -04:00
Jarrod Flesch
e55c89c4b7 refactor: consolidates buildTableColumnState 2025-03-25 14:25:10 -04:00
Jarrod Flesch
f762d683c6 chore: refactoring, routing structure 2025-03-25 14:09:32 -04:00
Jarrod Flesch
953c538af0 Merge branch 'main' into feat/folders 2025-03-24 10:05:53 -04:00
Jarrod Flesch
65d0272950 refactor(folders): folder configuration 2025-03-13 10:05:30 -04:00
Jarrod Flesch
c570d6178c Merge branch 'main' into feat/folders 2025-02-27 15:30:14 -05:00
Jarrod Flesch
c935420937 lockfile 2025-02-26 16:00:10 -05:00
Jarrod Flesch
72dd527a15 Merge branch 'main' into feat/folders 2025-02-26 15:58:03 -05:00
Jarrod Flesch
1d6e0941e7 feat: search 2025-02-26 15:26:55 -05:00
Jarrod Flesch
91f7deb278 try/catch moveTo, fix button hover colors 2025-02-21 16:23:37 -05:00
Jarrod Flesch
d3986cfaf0 folder popup fix 2025-02-21 15:25:51 -05:00
Jarrod Flesch
4a9de40098 feat: wire up delete interations with confirm modal 2025-02-21 14:00:35 -05:00
Jarrod Flesch
f4679a4088 chore: adds folder delete confirmation translation 2025-02-21 13:59:55 -05:00
Jarrod Flesch
cb8ee7d2b0 fixes for moveTo drawer doc handling 2025-02-21 12:33:25 -05:00
Jarrod Flesch
06ef8da836 adds confirm translation for move drawer 2025-02-21 12:31:19 -05:00
Jarrod Flesch
91dc98978d chore: disabled instead of hide folders inside move drawer 2025-02-20 17:15:04 -05:00
Jarrod Flesch
07ff1ee7be misc fixes 2025-02-20 16:34:41 -05:00
Jarrod Flesch
72d393d24c more translations 2025-02-20 16:32:26 -05:00
Jarrod Flesch
95d4324af3 remove old files 2025-02-20 16:08:00 -05:00
Jarrod Flesch
a617d3166c use translations 2025-02-20 16:07:41 -05:00
Jarrod Flesch
6770e7a1b3 adds translation strings 2025-02-20 16:03:11 -05:00
Jarrod Flesch
f5e535dacf confirm modal for move 2025-02-20 15:21:43 -05:00
Jarrod Flesch
3d9c25e278 Merge branch 'main' into feat/folders 2025-02-20 13:37:13 -05:00
Jarrod Flesch
3bdb127ad4 start of modal tidy up 2025-02-20 13:31:46 -05:00
Jarrod Flesch
de4be1eb78 ui/ux fixes 2025-02-20 12:49:30 -05:00
Jarrod Flesch
d26529282f feat: move docs to folders within edit view 2025-02-19 16:52:33 -05:00
Jarrod Flesch
2694603353 feat: wire in pref for view type 2025-02-19 14:50:35 -05:00
Jarrod Flesch
9630de1bac feat: droppable crumbs, image cards, reusable item grid/table display 2025-02-19 13:59:38 -05:00
Jarrod Flesch
91e867ecb1 chore: regenerates lockfile 2025-02-14 14:54:54 -05:00
Jarrod Flesch
25e196bdd7 chore: successful build 2025-02-14 14:05:35 -05:00
Jarrod Flesch
b631eebdb5 Merge branch 'main' into feat/folders 2025-02-14 12:48:21 -05:00
Jarrod Flesch
a66f134cf6 feat: adds base folder functionality, list and grid views 2025-02-14 12:22:52 -05:00
Jarrod Flesch
b3aec9a23f chore: updates css imports 2025-01-16 15:10:49 -05:00
Jarrod Flesch
31911d87c1 chore: more merge resolutions 2025-01-14 16:05:19 -05:00
Jarrod Flesch
2d37ac41a2 merges main 2025-01-14 15:57:23 -05:00
Jarrod Flesch
b68af8ba31 Merge branch 'main' into feat/folders 2025-01-14 15:48:39 -05:00
Jarrod Flesch
4c775d1ced Merge branch 'main' into feat/folders 2025-01-02 12:25:43 -05:00
Jarrod Flesch
4706019a22 feat: brings back subfolder viewing, folder assigning etc 2024-12-18 14:40:26 -05:00
Jarrod Flesch
9c33a48192 Merge branch 'main' into feat/folders 2024-12-17 14:17:40 -05:00
Jarrod Flesch
8ec6784645 Merge branch 'main' into feat/beta/folders 2024-12-13 12:58:07 -05:00
Jarrod Flesch
8d9bf835a0 Merge branch 'main' into feat/beta/folders 2024-11-19 13:54:57 -05:00
Jarrod Flesch
2eef7ee388 moves base folder work into beta 2024-10-01 09:50:50 -04:00
298 changed files with 13527 additions and 2089 deletions

7
.vscode/launch.json vendored
View File

@@ -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}",

View File

@@ -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). |

View File

@@ -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
View 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
},
],
})
```

View File

@@ -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/

View File

@@ -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>
)
}

View File

@@ -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);
}
}
}

View File

@@ -68,7 +68,6 @@ export const DocumentTab: React.FC<
baseClass={baseClass}
href={href}
isActive={isActive}
isCollection={!!collectionConfig && !globalConfig}
newTab={newTab}
>
<span className={`${baseClass}__label`}>

View File

@@ -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);
}
}

View File

@@ -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>
}

View File

@@ -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}>

View 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>
),
}
}

View 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
}
}
}

View 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,
})
}

View 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')
}

View 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
}
}
}

View 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 || {}),
})
}

View File

@@ -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
}

View File

@@ -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,

View File

@@ -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<{

View File

@@ -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'

View File

@@ -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,

View File

@@ -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>
)
}

View File

@@ -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

View File

@@ -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>
)}
&nbsp;&nbsp;
</React.Fragment>

View File

@@ -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}
* */

View File

@@ -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
}

View File

@@ -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,
/**

View 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

View File

@@ -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'

View File

@@ -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,

View File

@@ -69,6 +69,7 @@ export const addDefaultsToCollectionConfig = (collection: CollectionConfig): Col
custom: {},
enableRichTextLink: true,
enableRichTextRelationship: true,
folders: false,
useAsTitle: 'id',
...(collection.admin || {}),
pagination: {

View File

@@ -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[]

View File

@@ -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'

View File

@@ -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: [] }
}

View File

@@ -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
*/

View File

@@ -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'

View 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)
}
}

View File

@@ -0,0 +1,2 @@
export const foldersSlug = 'payload-folders'
export const parentFolderFieldName = 'folder'

View 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',
},
})

View 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',
}

View File

@@ -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,
},
},
})
}
}

View File

@@ -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,
},
},
})
}
}
}

View 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,
})
}
}
}
}

View 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

View File

@@ -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,
}
}

View 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()
}

View 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,
}
}
}

View File

@@ -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
}

View 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,
}),
) || []
)
}

View File

@@ -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'

View 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
}),
}
}

View 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
}

View 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
}

View File

@@ -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()

View File

@@ -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

View File

@@ -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',

View File

@@ -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}}',

View File

@@ -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',

View File

@@ -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}} избрани',

View File

@@ -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',

View File

@@ -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}}',

View File

@@ -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',

View File

@@ -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',

View File

@@ -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',

View File

@@ -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',

View File

@@ -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',

View File

@@ -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}} انتخاب شد',

View File

@@ -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é',

View File

@@ -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}} נבחרו',

View File

@@ -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',

View File

@@ -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',

View File

@@ -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}} ընտրված է',

View File

@@ -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',

View File

@@ -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}}を選択中',

View File

@@ -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}} 선택됨',

View File

@@ -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',

View File

@@ -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}}',

View File

@@ -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}} ကို ရွေးထားသည်။',

View File

@@ -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',

View File

@@ -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',

View File

@@ -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}}',

View File

@@ -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',

View File

@@ -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',

View File

@@ -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}} одабрано',

View File

@@ -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',

View File

@@ -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}} выбрано',

View File

@@ -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}}',

View File

@@ -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',

View File

@@ -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',

View File

@@ -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}} แล้ว',

View File

@@ -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',

View File

@@ -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}}',

View File

@@ -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}}',

View File

@@ -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}}',

View File

@@ -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}}',

View File

@@ -1,3 +1,6 @@
{
"extends": "../../tsconfig.base.json",
"include": [
"./src/**/*.ts",
],
}

View File

@@ -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",

View File

@@ -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>

View File

@@ -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