chore: slate upload ssr

This commit is contained in:
James
2024-02-22 14:20:13 -05:00
parent 732402159c
commit 56c325b526
58 changed files with 410 additions and 97 deletions

BIN
media/image-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
media/image-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
media/image-3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
media/image-4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
media/image-5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
media/image-6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
media/image-7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
media/image-8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
media/image.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

View File

@@ -58,6 +58,8 @@ const sanitizeCollections = (
delete sanitized.access delete sanitized.access
delete sanitized.endpoints delete sanitized.endpoints
if ('editor' in sanitized) delete sanitized.editor
if ('admin' in sanitized) { if ('admin' in sanitized) {
sanitized.admin = { ...sanitized.admin } sanitized.admin = { ...sanitized.admin }

View File

@@ -14,7 +14,7 @@ import ol from './ol'
// import relationship from './relationship' // import relationship from './relationship'
// import textAlign from './textAlign' // import textAlign from './textAlign'
import ul from './ul' import ul from './ul'
// import upload from './upload' import upload from './upload'
const elements: Record<string, RichTextCustomElement> = { const elements: Record<string, RichTextCustomElement> = {
blockquote, blockquote,
@@ -31,7 +31,7 @@ const elements: Record<string, RichTextCustomElement> = {
// relationship, // relationship,
// textAlign, // textAlign,
ul, ul,
// upload, upload,
} }
export default elements export default elements

View File

@@ -1,10 +1,11 @@
'use client' 'use client'
import type { FormState } from '@payloadcms/ui'
import { useModal } from '@faceless-ui/modal' import { useModal } from '@faceless-ui/modal'
import { getTranslation } from '@payloadcms/translations' import { getTranslation } from '@payloadcms/translations'
import { import {
Button, Button,
FormState,
Popup, Popup,
Translation, Translation,
getFormState, getFormState,
@@ -21,11 +22,13 @@ import React, { useCallback, useEffect, useState } from 'react'
import { Editor, Node, Transforms } from 'slate' import { Editor, Node, Transforms } from 'slate'
import { ReactEditor, useSlate } from 'slate-react' import { ReactEditor, useSlate } from 'slate-react'
import type { LinkElementType } from '../types'
import { useElement } from '../../../providers/ElementProvider' import { useElement } from '../../../providers/ElementProvider'
import { LinkDrawer } from '../LinkDrawer' import { LinkDrawer } from '../LinkDrawer'
import { linkFieldsSchemaPath } from '../shared'
import { unwrapLink } from '../utilities' import { unwrapLink } from '../utilities'
import './index.scss' import './index.scss'
import { LinkElementType } from '../types'
const baseClass = 'rich-text-link' const baseClass = 'rich-text-link'
@@ -58,10 +61,10 @@ export const LinkElement = () => {
const { attributes, children, editorRef, element, fieldProps, schemaPath } = const { attributes, children, editorRef, element, fieldProps, schemaPath } =
useElement<LinkElementType>() useElement<LinkElementType>()
const linkFieldsSchemaPath = `${schemaPath}.link.fields` const fieldMapPath = `${schemaPath}.${linkFieldsSchemaPath}`
const { richTextComponentMap } = fieldProps const { richTextComponentMap } = fieldProps
const fieldMap = richTextComponentMap.get(linkFieldsSchemaPath) const fieldMap = richTextComponentMap.get(fieldMapPath)
const editor = useSlate() const editor = useSlate()
const config = useConfig() const config = useConfig()
@@ -102,7 +105,7 @@ export const LinkElement = () => {
data, data,
docPreferences, docPreferences,
operation: 'update', operation: 'update',
schemaPath: linkFieldsSchemaPath, schemaPath: fieldMapPath,
}, },
serverURL: config.serverURL, serverURL: config.serverURL,
}) })
@@ -111,7 +114,7 @@ export const LinkElement = () => {
} }
awaitInitialState() awaitInitialState()
}, [renderModal, element, user, locale, t, getDocPreferences, config]) }, [renderModal, element, user, locale, t, getDocPreferences, config, id, fieldMapPath])
return ( return (
<span className={baseClass} {...attributes}> <span className={baseClass} {...attributes}>

View File

@@ -42,9 +42,9 @@ const UploadButton: React.FC<ButtonProps> = ({ enabledCollectionSlugs }) => {
}) })
const onSelect = useCallback( const onSelect = useCallback(
({ collectionConfig, docID }) => { ({ collectionSlug, docID }) => {
insertUpload(editor, { insertUpload(editor, {
relationTo: collectionConfig.slug, relationTo: collectionSlug,
value: { value: {
id: docID, id: docID,
}, },

View File

@@ -9,49 +9,50 @@ import {
Form, Form,
FormSubmit, FormSubmit,
RenderFields, RenderFields,
buildStateFromSchema, getFormState,
fieldTypes,
useAuth, useAuth,
useConfig, useConfig,
useDocumentInfo, useDocumentInfo,
useLocale, useLocale,
useTranslation, useTranslation,
} from '@payloadcms/ui' } from '@payloadcms/ui'
import { sanitizeFields } from 'payload/config'
import { deepCopyObject } from 'payload/utilities' import { deepCopyObject } from 'payload/utilities'
import React, { useCallback, useEffect, useState } from 'react' import React, { useCallback, useEffect, useState } from 'react'
import { Transforms } from 'slate' import { Transforms } from 'slate'
import { ReactEditor, useSlateStatic } from 'slate-react' import { ReactEditor, useSlateStatic } from 'slate-react'
import type { ElementProps } from '..' import type { FormFieldBase } from '../../../../../../../ui/src/forms/fields/shared'
import type { UploadElementType } from '../../types'
export const UploadDrawer: React.FC< import { FieldPathProvider } from '../../../../../../../ui/src/forms/FieldPathProvider'
ElementProps & { import { uploadFieldsSchemaPath } from '../../shared'
drawerSlug: string
relatedCollection: SanitizedCollectionConfig export const UploadDrawer: React.FC<{
drawerSlug: string
element: UploadElementType
fieldProps: FormFieldBase & {
name: string
richTextComponentMap: Map<string, React.ReactNode>
} }
> = (props) => { relatedCollection: SanitizedCollectionConfig
schemaPath: string
}> = (props) => {
const editor = useSlateStatic() const editor = useSlateStatic()
const { drawerSlug, element, fieldProps, relatedCollection } = props const { drawerSlug, element, fieldProps, relatedCollection, schemaPath } = props
const { i18n, t } = useTranslation() const { i18n, t } = useTranslation()
const { code: locale } = useLocale() const { code: locale } = useLocale()
const { user } = useAuth() const { user } = useAuth()
const { closeModal } = useModal() const { closeModal } = useModal()
const { getDocPreferences } = useDocumentInfo() const { id, getDocPreferences } = useDocumentInfo()
const [initialState, setInitialState] = useState({}) const [initialState, setInitialState] = useState({})
const fieldSchemaUnsanitized = const { richTextComponentMap } = fieldProps
fieldProps?.admin?.upload?.collections?.[relatedCollection.slug]?.fields
const config = useConfig()
// Sanitize custom fields here const relatedFieldSchemaPath = `${uploadFieldsSchemaPath}.${relatedCollection.slug}`
const validRelationships = config.collections.map((c) => c.slug) || [] const fieldMap = richTextComponentMap.get(relatedFieldSchemaPath)
const fieldSchema = sanitizeFields({
config: config, const config = useConfig()
fields: fieldSchemaUnsanitized,
validRelationships,
})
const handleUpdateEditData = useCallback( const handleUpdateEditData = useCallback(
(_, data) => { (_, data) => {
@@ -68,31 +69,38 @@ export const UploadDrawer: React.FC<
) )
useEffect(() => { useEffect(() => {
// Sanitize custom fields here const data = deepCopyObject(element?.fields || {})
const validRelationships = config.collections.map((c) => c.slug) || []
const fieldSchema = sanitizeFields({
config: config,
fields: fieldSchemaUnsanitized,
validRelationships,
})
const awaitInitialState = async () => { const awaitInitialState = async () => {
const preferences = await getDocPreferences() const docPreferences = await getDocPreferences()
const state = await buildStateFromSchema({
config, const state = await getFormState({
data: deepCopyObject(element?.fields || {}), apiRoute: config.routes.api,
fieldSchema, body: {
locale, id,
operation: 'update', data,
preferences, docPreferences,
t, operation: 'update',
user, schemaPath: `${schemaPath}.${uploadFieldsSchemaPath}.${relatedCollection.slug}`,
},
serverURL: config.serverURL,
}) })
setInitialState(state) setInitialState(state)
} }
awaitInitialState() awaitInitialState()
}, [fieldSchemaUnsanitized, config, element.fields, user, locale, t, getDocPreferences]) }, [
config,
element?.fields,
user,
locale,
t,
getDocPreferences,
id,
schemaPath,
relatedCollection.slug,
])
return ( return (
<Drawer <Drawer
@@ -101,10 +109,12 @@ export const UploadDrawer: React.FC<
label: getTranslation(relatedCollection.labels.singular, i18n), label: getTranslation(relatedCollection.labels.singular, i18n),
})} })}
> >
<Form initialState={initialState} onSubmit={handleUpdateEditData}> <FieldPathProvider path="" schemaPath="">
<RenderFields fieldSchema={fieldSchema} fieldTypes={fieldTypes} readOnly={false} /> <Form initialState={initialState} onSubmit={handleUpdateEditData}>
<FormSubmit>{t('fields:saveChanges')}</FormSubmit> <RenderFields fieldMap={Array.isArray(fieldMap) ? fieldMap : []} />
</Form> <FormSubmit>{t('fields:saveChanges')}</FormSubmit>
</Form>
</FieldPathProvider>
</Drawer> </Drawer>
) )
} }

View File

@@ -1,7 +1,6 @@
'use client' 'use client'
import type { SanitizedCollectionConfig } from 'payload/types' import type { SanitizedCollectionConfig } from 'payload/types'
import type { HTMLAttributes } from 'react'
import { getTranslation } from '@payloadcms/translations' import { getTranslation } from '@payloadcms/translations'
import { import {
@@ -20,9 +19,12 @@ import React, { useCallback, useReducer, useState } from 'react'
import { Transforms } from 'slate' import { Transforms } from 'slate'
import { ReactEditor, useFocused, useSelected, useSlateStatic } from 'slate-react' import { ReactEditor, useFocused, useSelected, useSlateStatic } from 'slate-react'
import type { FieldProps } from '../../../../types' import type { FormFieldBase } from '../../../../../../ui/src/forms/fields/shared'
import type { UploadElementType } from '../types'
import { useElement } from '../../../providers/ElementProvider'
import { EnabledRelationshipsCondition } from '../../EnabledRelationshipsCondition' import { EnabledRelationshipsCondition } from '../../EnabledRelationshipsCondition'
import { uploadFieldsSchemaPath, uploadName } from '../shared'
import { UploadDrawer } from './UploadDrawer' import { UploadDrawer } from './UploadDrawer'
import './index.scss' import './index.scss'
@@ -32,23 +34,22 @@ const initialParams = {
depth: 0, depth: 0,
} }
export type ElementProps = { type Props = FormFieldBase & {
attributes: HTMLAttributes<HTMLDivElement> name: string
children: React.ReactNode richTextComponentMap: Map<string, React.ReactNode>
element: any
enabledCollectionSlugs: string[]
fieldProps: FieldProps
} }
const Element: React.FC<ElementProps> = (props) => { const Element: React.FC<Props & { enabledCollectionSlugs?: string[] }> = ({
enabledCollectionSlugs,
}) => {
const { const {
attributes, attributes,
children, children,
element: { relationTo, value }, element: { relationTo, value },
element, element,
enabledCollectionSlugs,
fieldProps, fieldProps,
} = props schemaPath,
} = useElement<UploadElementType>()
const { const {
collections, collections,
@@ -83,7 +84,7 @@ const Element: React.FC<ElementProps> = (props) => {
{ initialParams }, { initialParams },
) )
const thumbnailSRC = useThumbnail(relatedCollection, data) const thumbnailSRC = useThumbnail(relatedCollection.upload, data)
const removeUpload = useCallback(() => { const removeUpload = useCallback(() => {
const elementPath = ReactEditor.findPath(editor, element) const elementPath = ReactEditor.findPath(editor, element)
@@ -103,8 +104,6 @@ const Element: React.FC<ElementProps> = (props) => {
Transforms.setNodes(editor, newNode, { at: elementPath }) Transforms.setNodes(editor, newNode, { at: elementPath })
// setRelatedCollection(collections.find((coll) => coll.slug === collectionConfig.slug));
setParams({ setParams({
...initialParams, ...initialParams,
cacheBust, // do this to get the usePayloadAPI to re-fetch the data even though the URL string hasn't changed cacheBust, // do this to get the usePayloadAPI to re-fetch the data even though the URL string hasn't changed
@@ -117,17 +116,17 @@ const Element: React.FC<ElementProps> = (props) => {
) )
const swapUpload = React.useCallback( const swapUpload = React.useCallback(
({ collectionConfig, docID }) => { ({ collectionSlug, docID }) => {
const newNode = { const newNode = {
children: [{ text: ' ' }], children: [{ text: ' ' }],
relationTo: collectionConfig.slug, relationTo: collectionSlug,
type: 'upload', type: uploadName,
value: { id: docID }, value: { id: docID },
} }
const elementPath = ReactEditor.findPath(editor, element) const elementPath = ReactEditor.findPath(editor, element)
setRelatedCollection(collections.find((coll) => coll.slug === collectionConfig.slug)) setRelatedCollection(collections.find((coll) => coll.slug === collectionSlug))
Transforms.setNodes(editor, newNode, { at: elementPath }) Transforms.setNodes(editor, newNode, { at: elementPath })
@@ -137,7 +136,8 @@ const Element: React.FC<ElementProps> = (props) => {
[closeListDrawer, editor, element, collections], [closeListDrawer, editor, element, collections],
) )
const customFields = fieldProps?.admin?.upload?.collections?.[relatedCollection.slug]?.fields const relatedFieldSchemaPath = `${uploadFieldsSchemaPath}.${relatedCollection.slug}`
const customFieldsMap = fieldProps.richTextComponentMap.get(relatedFieldSchemaPath)
return ( return (
<div <div
@@ -157,10 +157,10 @@ const Element: React.FC<ElementProps> = (props) => {
{getTranslation(relatedCollection.labels.singular, i18n)} {getTranslation(relatedCollection.labels.singular, i18n)}
</div> </div>
<div className={`${baseClass}__actions`}> <div className={`${baseClass}__actions`}>
{customFields?.length > 0 && ( {Boolean(customFieldsMap) && (
<DrawerToggler <DrawerToggler
className={`${baseClass}__upload-drawer-toggler`} className={`${baseClass}__upload-drawer-toggler`}
disabled={fieldProps?.admin?.readOnly} disabled={fieldProps?.readOnly}
slug={drawerSlug} slug={drawerSlug}
> >
<Button <Button
@@ -177,11 +177,11 @@ const Element: React.FC<ElementProps> = (props) => {
)} )}
<ListDrawerToggler <ListDrawerToggler
className={`${baseClass}__list-drawer-toggler`} className={`${baseClass}__list-drawer-toggler`}
disabled={fieldProps?.admin?.readOnly} disabled={fieldProps?.readOnly}
> >
<Button <Button
buttonStyle="icon-label" buttonStyle="icon-label"
disabled={fieldProps?.admin?.readOnly} disabled={fieldProps?.readOnly}
el="div" el="div"
icon="swap" icon="swap"
onClick={() => { onClick={() => {
@@ -194,7 +194,7 @@ const Element: React.FC<ElementProps> = (props) => {
<Button <Button
buttonStyle="icon-label" buttonStyle="icon-label"
className={`${baseClass}__removeButton`} className={`${baseClass}__removeButton`}
disabled={fieldProps?.admin?.readOnly} disabled={fieldProps?.readOnly}
icon="x" icon="x"
onClick={(e) => { onClick={(e) => {
e.preventDefault() e.preventDefault()
@@ -215,12 +215,12 @@ const Element: React.FC<ElementProps> = (props) => {
{children} {children}
{value?.id && <DocumentDrawer onSave={updateUpload} />} {value?.id && <DocumentDrawer onSave={updateUpload} />}
<ListDrawer onSelect={swapUpload} /> <ListDrawer onSelect={swapUpload} />
<UploadDrawer drawerSlug={drawerSlug} relatedCollection={relatedCollection} {...props} /> <UploadDrawer {...{ drawerSlug, element, fieldProps, relatedCollection, schemaPath }} />
</div> </div>
) )
} }
export default (props: ElementProps): React.ReactNode => { export default (props: Props): React.ReactNode => {
return ( return (
<EnabledRelationshipsCondition {...props} uploads> <EnabledRelationshipsCondition {...props} uploads>
<Element {...props} /> <Element {...props} />

View File

@@ -1,9 +1,15 @@
import type { RichTextCustomElement } from '../../..'
import Button from './Button' import Button from './Button'
import Element from './Element' import Element from './Element'
import plugin from './plugin' import { WithUpload } from './plugin'
import { uploadName } from './shared'
export default { const upload: RichTextCustomElement = {
name: uploadName,
Button, Button,
Element, Element,
plugins: [plugin], plugins: [WithUpload],
} }
export default upload

View File

@@ -1,10 +1,18 @@
const withRelationship = (incomingEditor) => { 'use client'
const editor = incomingEditor
const { isVoid } = editor
editor.isVoid = (element) => (element.type === 'upload' ? true : isVoid(element)) import type React from 'react'
return editor import { useSlatePlugin } from '../../../utilities/useSlatePlugin'
import { uploadName } from './shared'
export const WithUpload: React.FC = () => {
useSlatePlugin('withUpload', (incomingEditor) => {
const editor = incomingEditor
const { isVoid } = editor
editor.isVoid = (element) => (element.type === uploadName ? true : isVoid(element))
return editor
})
return null
} }
export default withRelationship

View File

@@ -0,0 +1,2 @@
export const uploadName = 'upload'
export const uploadFieldsSchemaPath = 'upload.fields'

View File

@@ -0,0 +1,9 @@
import type { Element } from 'slate'
export type UploadElementType = Element & {
fields: Record<string, unknown>
relationTo: string
value: {
id: number | string
} | null
}

View File

@@ -9,7 +9,9 @@ import React from 'react'
import type { AdapterArguments, RichTextCustomElement, RichTextCustomLeaf } from '.' import type { AdapterArguments, RichTextCustomElement, RichTextCustomLeaf } from '.'
import elementTypes from './field/elements' import elementTypes from './field/elements'
import { linkFieldsSchemaPath } from './field/elements/link/shared'
import { transformExtraFields } from './field/elements/link/utilities' import { transformExtraFields } from './field/elements/link/utilities'
import { uploadFieldsSchemaPath } from './field/elements/upload/shared'
import leafTypes from './field/leaves' import leafTypes from './field/leaves'
export const getGenerateComponentMap = export const getGenerateComponentMap =
@@ -81,13 +83,44 @@ export const getGenerateComponentMap =
readOnly: false, readOnly: false,
}) })
componentMap.set('link.fields', mappedFields) componentMap.set(linkFieldsSchemaPath, mappedFields)
break break
} }
case 'upload': case 'upload': {
const uploadEnabledCollections = config.collections.filter(
({ admin: { enableRichTextRelationship, hidden }, upload }) => {
if (hidden === true) {
return false
}
return enableRichTextRelationship && Boolean(upload) === true
},
)
uploadEnabledCollections.forEach((collection) => {
if (args?.admin?.upload?.collections[collection.slug]?.fields) {
const uploadFields = sanitizeFields({
config,
fields: args?.admin?.upload?.collections[collection.slug]?.fields,
validRelationships,
})
const mappedFields = mapFields({
config,
fieldSchema: uploadFields,
operation: 'update',
permissions: {},
readOnly: false,
})
componentMap.set(`${uploadFieldsSchemaPath}.${collection.slug}`, mappedFields)
}
})
break break
}
case 'relationship': case 'relationship':
break break

View File

@@ -9,6 +9,7 @@ import type { AdapterArguments, RichTextCustomElement } from '.'
import elementTypes from './field/elements' import elementTypes from './field/elements'
import { linkFieldsSchemaPath } from './field/elements/link/shared' import { linkFieldsSchemaPath } from './field/elements/link/shared'
import { transformExtraFields } from './field/elements/link/utilities' import { transformExtraFields } from './field/elements/link/utilities'
import { uploadFieldsSchemaPath } from './field/elements/upload/shared'
export const getGenerateSchemaMap = export const getGenerateSchemaMap =
(args: AdapterArguments): RichTextAdapter['generateSchemaMap'] => (args: AdapterArguments): RichTextAdapter['generateSchemaMap'] =>
@@ -29,18 +30,44 @@ export const getGenerateSchemaMap =
switch (element.name) { switch (element.name) {
case 'link': { case 'link': {
const linkFields = sanitizeFields({ const linkFields = sanitizeFields({
config: config, config,
fields: transformExtraFields(args.admin?.link?.fields, config, i18n), fields: transformExtraFields(args.admin?.link?.fields, config, i18n),
validRelationships, validRelationships,
}) })
schemaMap.set(`${schemaPath}.${linkFieldsSchemaPath}`, linkFields) schemaMap.set(`${schemaPath}.${linkFieldsSchemaPath}`, linkFields)
return break
} }
case 'upload': case 'upload': {
const uploadEnabledCollections = config.collections.filter(
({ admin: { enableRichTextRelationship, hidden }, upload }) => {
if (hidden === true) {
return false
}
return enableRichTextRelationship && Boolean(upload) === true
},
)
uploadEnabledCollections.forEach((collection) => {
if (args?.admin?.upload?.collections[collection.slug]?.fields) {
const uploadFields = sanitizeFields({
config,
fields: args?.admin?.upload?.collections[collection.slug]?.fields,
validRelationships,
})
schemaMap.set(
`${schemaPath}.${uploadFieldsSchemaPath}.${collection.slug}`,
uploadFields,
)
}
})
break break
}
case 'relationship': case 'relationship':
break break

View File

@@ -166,6 +166,11 @@ const clientTranslationKeys = [
'fields:showAll', 'fields:showAll',
'fields:swapRelationship', 'fields:swapRelationship',
'fields:uploadNewLabel', 'fields:uploadNewLabel',
'fields:swapUpload',
'fields:addUpload',
'fields:editRelationship',
'fields:removeUpload',
'fields:saveChanges',
'general:aboutToDeleteCount', 'general:aboutToDeleteCount',
'general:aboutToDelete', 'general:aboutToDelete',
'general:addBelow', 'general:addBelow',

View File

@@ -57,20 +57,25 @@
"addLink": "أضف رابط", "addLink": "أضف رابط",
"addNew": "أضف جديد", "addNew": "أضف جديد",
"addNewLabel": "أضف {{label}} جديد", "addNewLabel": "أضف {{label}} جديد",
"addUpload": "أضف تحميل",
"block": "وحدة محتوى", "block": "وحدة محتوى",
"blockType": "نوع وحدة المحتوى", "blockType": "نوع وحدة المحتوى",
"blocks": "وحدات المحتوى", "blocks": "وحدات المحتوى",
"chooseFromExisting": "اختر من القائمة", "chooseFromExisting": "اختر من القائمة",
"collapseAll": "طيّ الكلّ", "collapseAll": "طيّ الكلّ",
"editLink": "عدّل الرّابط", "editLink": "عدّل الرّابط",
"editRelationship": "عدّل العلاقة",
"itemsAndMore": "{{items}} و {{count}} أخرى", "itemsAndMore": "{{items}} و {{count}} أخرى",
"latitude": "خطّ العرض", "latitude": "خطّ العرض",
"longitude": "خطّ الطّول", "longitude": "خطّ الطّول",
"passwordsDoNotMatch": "كلمة المرور غير مطابقة.", "passwordsDoNotMatch": "كلمة المرور غير مطابقة.",
"removeUpload": "حذف المحتوى المرفوع",
"saveChanges": "حفظ التّغييرات",
"searchForBlock": "ابحث عن وحدة محتوى", "searchForBlock": "ابحث عن وحدة محتوى",
"selectFieldsToEdit": "حدّد الحقول اللتي تريد تعديلها", "selectFieldsToEdit": "حدّد الحقول اللتي تريد تعديلها",
"showAll": "إظهار الكلّ", "showAll": "إظهار الكلّ",
"swapRelationship": "تبديل العلاقة", "swapRelationship": "تبديل العلاقة",
"swapUpload": "تبديل المحتوى المرفوع",
"uploadNewLabel": "رفع {{label}} جديد" "uploadNewLabel": "رفع {{label}} جديد"
}, },
"general": { "general": {

View File

@@ -57,20 +57,25 @@
"addLink": "Keçid əlavə et", "addLink": "Keçid əlavə et",
"addNew": "Yenisini əlavə et", "addNew": "Yenisini əlavə et",
"addNewLabel": "Yeni {{label}} əlavə et", "addNewLabel": "Yeni {{label}} əlavə et",
"addUpload": "Yükləmə əlavə et",
"block": "blok", "block": "blok",
"blockType": "Blok Növü", "blockType": "Blok Növü",
"blocks": "bloklar", "blocks": "bloklar",
"chooseFromExisting": "Mövcuddan seçin", "chooseFromExisting": "Mövcuddan seçin",
"collapseAll": "Hamısını Bağla", "collapseAll": "Hamısını Bağla",
"editLink": "Keçidi redaktə et", "editLink": "Keçidi redaktə et",
"editRelationship": "Relationship redaktə et",
"itemsAndMore": "{{items}} və daha {{count}} nəfər", "itemsAndMore": "{{items}} və daha {{count}} nəfər",
"latitude": "Enlik", "latitude": "Enlik",
"longitude": "Uzunluq", "longitude": "Uzunluq",
"passwordsDoNotMatch": "Şifrələr uyğun gəlmir.", "passwordsDoNotMatch": "Şifrələr uyğun gəlmir.",
"removeUpload": "Yükləməni sil",
"saveChanges": "Dəyişiklikləri saxla",
"searchForBlock": "Blok üçün axtarış", "searchForBlock": "Blok üçün axtarış",
"selectFieldsToEdit": "Redaktə ediləcək sahələri seçin", "selectFieldsToEdit": "Redaktə ediləcək sahələri seçin",
"showAll": "Hamısını Göstər", "showAll": "Hamısını Göstər",
"swapRelationship": "Relationship dəyiş", "swapRelationship": "Relationship dəyiş",
"swapUpload": "Yükləməni dəyiş",
"uploadNewLabel": "Yeni {{label}} yüklə" "uploadNewLabel": "Yeni {{label}} yüklə"
}, },
"general": { "general": {

View File

@@ -57,20 +57,25 @@
"addLink": "Добави нова връзка", "addLink": "Добави нова връзка",
"addNew": "Добави нов", "addNew": "Добави нов",
"addNewLabel": "Добави нов {{label}}", "addNewLabel": "Добави нов {{label}}",
"addUpload": "Качи",
"block": "блок", "block": "блок",
"blockType": "Тип блок", "blockType": "Тип блок",
"blocks": "блокове", "blocks": "блокове",
"chooseFromExisting": "Избери от съществуващите", "chooseFromExisting": "Избери от съществуващите",
"collapseAll": "Свий всички", "collapseAll": "Свий всички",
"editLink": "Редактирай връзка", "editLink": "Редактирай връзка",
"editRelationship": "Редактирай отношение",
"itemsAndMore": "{{items}} и {{count}} повече", "itemsAndMore": "{{items}} и {{count}} повече",
"latitude": "Географска ширина", "latitude": "Географска ширина",
"longitude": "Географска дължина", "longitude": "Географска дължина",
"passwordsDoNotMatch": "Паролите не са еднакви.", "passwordsDoNotMatch": "Паролите не са еднакви.",
"removeUpload": "Премахни качване",
"saveChanges": "Запази промените",
"searchForBlock": "Търси блок", "searchForBlock": "Търси блок",
"selectFieldsToEdit": "Избери полета за редактиране", "selectFieldsToEdit": "Избери полета за редактиране",
"showAll": "Покажи всички", "showAll": "Покажи всички",
"swapRelationship": "Смени отношение", "swapRelationship": "Смени отношение",
"swapUpload": "Смени качване",
"uploadNewLabel": "Качи нов {{label}}" "uploadNewLabel": "Качи нов {{label}}"
}, },
"general": { "general": {

View File

@@ -57,20 +57,25 @@
"addLink": "Přidat Odkaz", "addLink": "Přidat Odkaz",
"addNew": "Přidat nový", "addNew": "Přidat nový",
"addNewLabel": "Přidat nový {{label}}", "addNewLabel": "Přidat nový {{label}}",
"addUpload": "Přidat nahrávání",
"block": "blok", "block": "blok",
"blockType": "Typ bloku", "blockType": "Typ bloku",
"blocks": "bloky", "blocks": "bloky",
"chooseFromExisting": "Vybrat z existujících", "chooseFromExisting": "Vybrat z existujících",
"collapseAll": "Sbalit vše", "collapseAll": "Sbalit vše",
"editLink": "Upravit odkaz", "editLink": "Upravit odkaz",
"editRelationship": "Upravit vztah",
"itemsAndMore": "{{items}} a {{count}} dalších", "itemsAndMore": "{{items}} a {{count}} dalších",
"latitude": "Zeměpisná šířka", "latitude": "Zeměpisná šířka",
"longitude": "Zeměpisná délka", "longitude": "Zeměpisná délka",
"passwordsDoNotMatch": "Hesla se neshodují.", "passwordsDoNotMatch": "Hesla se neshodují.",
"removeUpload": "Odstranit nahrání",
"saveChanges": "Uložit změny",
"searchForBlock": "Hledat blok", "searchForBlock": "Hledat blok",
"selectFieldsToEdit": "Vyberte pole, která chcete upravit", "selectFieldsToEdit": "Vyberte pole, která chcete upravit",
"showAll": "Zobrazit vše", "showAll": "Zobrazit vše",
"swapRelationship": "Zaměnit vztah", "swapRelationship": "Zaměnit vztah",
"swapUpload": "Vyměnit nahrání",
"uploadNewLabel": "Nahrát nový {{label}}" "uploadNewLabel": "Nahrát nový {{label}}"
}, },
"general": { "general": {

View File

@@ -57,20 +57,25 @@
"addLink": "Link Hinzufügen", "addLink": "Link Hinzufügen",
"addNew": "Neu erstellen", "addNew": "Neu erstellen",
"addNewLabel": "{{label}} erstellen", "addNewLabel": "{{label}} erstellen",
"addUpload": "Hochladen Hinzufügen",
"block": "Block", "block": "Block",
"blockType": "Block-Typ", "blockType": "Block-Typ",
"blocks": "Blöcke", "blocks": "Blöcke",
"chooseFromExisting": "Aus vorhandenen auswählen", "chooseFromExisting": "Aus vorhandenen auswählen",
"collapseAll": "Alle einklappen", "collapseAll": "Alle einklappen",
"editLink": "Bearbeite Link", "editLink": "Bearbeite Link",
"editRelationship": "Beziehung Hinzufügen",
"itemsAndMore": "{{items}} und {{count}} mehr", "itemsAndMore": "{{items}} und {{count}} mehr",
"latitude": "Breitengrad", "latitude": "Breitengrad",
"longitude": "Längengrad", "longitude": "Längengrad",
"passwordsDoNotMatch": "Passwörter stimmen nicht überein.", "passwordsDoNotMatch": "Passwörter stimmen nicht überein.",
"removeUpload": "Hochgeladene Datei Löschen",
"saveChanges": "Änderungen speichern",
"searchForBlock": "Nach Block suchen", "searchForBlock": "Nach Block suchen",
"selectFieldsToEdit": "Wählen Sie die zu bearbeitenden Felder aus", "selectFieldsToEdit": "Wählen Sie die zu bearbeitenden Felder aus",
"showAll": "Alle anzeigen", "showAll": "Alle anzeigen",
"swapRelationship": "Beziehung Tauschen", "swapRelationship": "Beziehung Tauschen",
"swapUpload": "Datei Austauschen",
"uploadNewLabel": "{{label}} neu hochladen" "uploadNewLabel": "{{label}} neu hochladen"
}, },
"general": { "general": {

View File

@@ -59,20 +59,25 @@
"addLink": "Add Link", "addLink": "Add Link",
"addNew": "Add new", "addNew": "Add new",
"addNewLabel": "Add new {{label}}", "addNewLabel": "Add new {{label}}",
"addUpload": "Add Upload",
"block": "block", "block": "block",
"blockType": "Block Type", "blockType": "Block Type",
"blocks": "blocks", "blocks": "blocks",
"chooseFromExisting": "Choose from existing", "chooseFromExisting": "Choose from existing",
"collapseAll": "Collapse All", "collapseAll": "Collapse All",
"editLink": "Edit Link", "editLink": "Edit Link",
"editRelationship": "Edit Relationship",
"itemsAndMore": "{{items}} and {{count}} more", "itemsAndMore": "{{items}} and {{count}} more",
"latitude": "Latitude", "latitude": "Latitude",
"longitude": "Longitude", "longitude": "Longitude",
"passwordsDoNotMatch": "Passwords do not match.", "passwordsDoNotMatch": "Passwords do not match.",
"removeUpload": "Remove Upload",
"saveChanges": "Save changes",
"searchForBlock": "Search for a block", "searchForBlock": "Search for a block",
"selectFieldsToEdit": "Select fields to edit", "selectFieldsToEdit": "Select fields to edit",
"showAll": "Show All", "showAll": "Show All",
"swapRelationship": "Swap Relationship", "swapRelationship": "Swap Relationship",
"swapUpload": "Swap Upload",
"uploadNewLabel": "Upload new {{label}}" "uploadNewLabel": "Upload new {{label}}"
}, },
"general": { "general": {

View File

@@ -57,20 +57,25 @@
"addLink": "Añadir Enlace", "addLink": "Añadir Enlace",
"addNew": "Añadir nuevo", "addNew": "Añadir nuevo",
"addNewLabel": "Añadir {{label}}", "addNewLabel": "Añadir {{label}}",
"addUpload": "Añadir Carga",
"block": "bloque", "block": "bloque",
"blockType": "Tipo de bloque", "blockType": "Tipo de bloque",
"blocks": "bloques", "blocks": "bloques",
"chooseFromExisting": "Elegir existente", "chooseFromExisting": "Elegir existente",
"collapseAll": "Colapsar todo", "collapseAll": "Colapsar todo",
"editLink": "Editar Enlace", "editLink": "Editar Enlace",
"editRelationship": "Editar Relación",
"itemsAndMore": "{{items}} y {{count}} más", "itemsAndMore": "{{items}} y {{count}} más",
"latitude": "Latitud", "latitude": "Latitud",
"longitude": "Longitud", "longitude": "Longitud",
"passwordsDoNotMatch": "Las contraseñas no coinciden.", "passwordsDoNotMatch": "Las contraseñas no coinciden.",
"removeUpload": "Quitar Carga",
"saveChanges": "Guardar cambios",
"searchForBlock": "Buscar bloque", "searchForBlock": "Buscar bloque",
"selectFieldsToEdit": "Seleccionar campos para editar", "selectFieldsToEdit": "Seleccionar campos para editar",
"showAll": "Mostrar Todo", "showAll": "Mostrar Todo",
"swapRelationship": "Cambiar Relación", "swapRelationship": "Cambiar Relación",
"swapUpload": "Cambiar carga",
"uploadNewLabel": "Subir nuevo {{label}}" "uploadNewLabel": "Subir nuevo {{label}}"
}, },
"general": { "general": {

View File

@@ -57,20 +57,25 @@
"addLink": "افزودن پیوند", "addLink": "افزودن پیوند",
"addNew": "افزودن", "addNew": "افزودن",
"addNewLabel": "افزودن {{label}} تازه", "addNewLabel": "افزودن {{label}} تازه",
"addUpload": "افزودن بارگذار",
"block": "بلوک", "block": "بلوک",
"blockType": "نوع بلوک", "blockType": "نوع بلوک",
"blocks": "بلوک‌ها", "blocks": "بلوک‌ها",
"chooseFromExisting": "برگزیدن از بین ورودی‌ها", "chooseFromExisting": "برگزیدن از بین ورودی‌ها",
"collapseAll": "بستن همه", "collapseAll": "بستن همه",
"editLink": "نگارش پیوند", "editLink": "نگارش پیوند",
"editRelationship": "نگارش پیوستگی",
"itemsAndMore": "{{items}} و {{count}} بیش‌تر", "itemsAndMore": "{{items}} و {{count}} بیش‌تر",
"latitude": "عرض جغرافیایی", "latitude": "عرض جغرافیایی",
"longitude": "طول جغرافیایی", "longitude": "طول جغرافیایی",
"passwordsDoNotMatch": "گذرواژه‌های وارد شده مطابقت ندارند.", "passwordsDoNotMatch": "گذرواژه‌های وارد شده مطابقت ندارند.",
"removeUpload": "حذف بارگذار",
"saveChanges": "ذخیره تغییرات",
"searchForBlock": "جست‌وجو برای بلوک", "searchForBlock": "جست‌وجو برای بلوک",
"selectFieldsToEdit": "انتخاب کادرها برای نگارش", "selectFieldsToEdit": "انتخاب کادرها برای نگارش",
"showAll": "نمایش کل", "showAll": "نمایش کل",
"swapRelationship": "تبادل پیوستگی", "swapRelationship": "تبادل پیوستگی",
"swapUpload": "تبادل بارگذار",
"uploadNewLabel": "بارگذاری تازه {{label}}" "uploadNewLabel": "بارگذاری تازه {{label}}"
}, },
"general": { "general": {

View File

@@ -57,20 +57,25 @@
"addLink": "Ajouter un Lien", "addLink": "Ajouter un Lien",
"addNew": "Ajouter nouveau ou nouvelle", "addNew": "Ajouter nouveau ou nouvelle",
"addNewLabel": "Ajouter nouveau ou nouvelle {{label}}", "addNewLabel": "Ajouter nouveau ou nouvelle {{label}}",
"addUpload": "Ajouter le téléchargement",
"block": "bloc", "block": "bloc",
"blockType": "Type de bloc", "blockType": "Type de bloc",
"blocks": "blocs", "blocks": "blocs",
"chooseFromExisting": "Choisir parmi les existant(e)s", "chooseFromExisting": "Choisir parmi les existant(e)s",
"collapseAll": "Tout réduire", "collapseAll": "Tout réduire",
"editLink": "Modifier le lien", "editLink": "Modifier le lien",
"editRelationship": "Modifier la relation",
"itemsAndMore": "{{items}} et {{count}} de plus", "itemsAndMore": "{{items}} et {{count}} de plus",
"latitude": "Latitude", "latitude": "Latitude",
"longitude": "Longitude", "longitude": "Longitude",
"passwordsDoNotMatch": "Les mots de passe ne correspondent pas.", "passwordsDoNotMatch": "Les mots de passe ne correspondent pas.",
"removeUpload": "Supprimer le Téléversement",
"saveChanges": "Sauvegarder les modifications",
"searchForBlock": "Rechercher un bloc", "searchForBlock": "Rechercher un bloc",
"selectFieldsToEdit": "Sélectionnez les champs à modifier", "selectFieldsToEdit": "Sélectionnez les champs à modifier",
"showAll": "Afficher tout", "showAll": "Afficher tout",
"swapRelationship": "Changer de relation", "swapRelationship": "Changer de relation",
"swapUpload": "Changer de Fichier",
"uploadNewLabel": "Téléverser un(e) nouveau ou nouvelle {{label}}" "uploadNewLabel": "Téléverser un(e) nouveau ou nouvelle {{label}}"
}, },
"general": { "general": {

View File

@@ -57,20 +57,25 @@
"addLink": "Dodaj poveznicu", "addLink": "Dodaj poveznicu",
"addNew": "Dodaj novi", "addNew": "Dodaj novi",
"addNewLabel": "Dodaj novi {{label}}", "addNewLabel": "Dodaj novi {{label}}",
"addUpload": "Dodaj učitavanje",
"block": "blokiranje", "block": "blokiranje",
"blockType": "Vrsta blokiranja", "blockType": "Vrsta blokiranja",
"blocks": "blokiranja", "blocks": "blokiranja",
"chooseFromExisting": "Odaberite iz postojećih.", "chooseFromExisting": "Odaberite iz postojećih.",
"collapseAll": "Sažmi sve", "collapseAll": "Sažmi sve",
"editLink": "Uredi poveznicu", "editLink": "Uredi poveznicu",
"editRelationship": "Uredi odnos",
"itemsAndMore": "{{items}} i {{count}} više", "itemsAndMore": "{{items}} i {{count}} više",
"latitude": "Zemljopisna širina", "latitude": "Zemljopisna širina",
"longitude": "Zemljopisna dužina", "longitude": "Zemljopisna dužina",
"passwordsDoNotMatch": "Lozinke nisu iste.", "passwordsDoNotMatch": "Lozinke nisu iste.",
"removeUpload": "Ukloni prijenos",
"saveChanges": "Spremi promjene",
"searchForBlock": "Potraži blok", "searchForBlock": "Potraži blok",
"selectFieldsToEdit": "Odaberite polja za uređivanje", "selectFieldsToEdit": "Odaberite polja za uređivanje",
"showAll": "Pokaži sve", "showAll": "Pokaži sve",
"swapRelationship": "Zamijeni vezu", "swapRelationship": "Zamijeni vezu",
"swapUpload": "Zamijeni prijenos",
"uploadNewLabel": "Učitaj novi {{label}}" "uploadNewLabel": "Učitaj novi {{label}}"
}, },
"general": { "general": {

View File

@@ -57,20 +57,25 @@
"addLink": "Link hozzáadása", "addLink": "Link hozzáadása",
"addNew": "Új hozzáadása", "addNew": "Új hozzáadása",
"addNewLabel": "Új {{label}} hozzáadása", "addNewLabel": "Új {{label}} hozzáadása",
"addUpload": "Feltöltés hozzáadása",
"block": "blokk", "block": "blokk",
"blockType": "Blokk típusa", "blockType": "Blokk típusa",
"blocks": "blokkok", "blocks": "blokkok",
"chooseFromExisting": "Válasszon a meglévők közül", "chooseFromExisting": "Válasszon a meglévők közül",
"collapseAll": "Mindet összecsuk", "collapseAll": "Mindet összecsuk",
"editLink": "Link szerkesztése", "editLink": "Link szerkesztése",
"editRelationship": "Kapcsolat hozzáadása",
"itemsAndMore": "{{items}} és további {{count}}", "itemsAndMore": "{{items}} és további {{count}}",
"latitude": "Szélesség", "latitude": "Szélesség",
"longitude": "Hosszúság", "longitude": "Hosszúság",
"passwordsDoNotMatch": "A jelszavak nem egyeznek.", "passwordsDoNotMatch": "A jelszavak nem egyeznek.",
"removeUpload": "Feltöltés eltávolítása",
"saveChanges": "Módosítások mentése",
"searchForBlock": "Blokk keresése", "searchForBlock": "Blokk keresése",
"selectFieldsToEdit": "Válassza ki a szerkeszteni kívánt mezőket", "selectFieldsToEdit": "Válassza ki a szerkeszteni kívánt mezőket",
"showAll": "Az összes megjelenítése", "showAll": "Az összes megjelenítése",
"swapRelationship": "Kapcsolat csere", "swapRelationship": "Kapcsolat csere",
"swapUpload": "Feltöltés csere",
"uploadNewLabel": "Új {{label}} feltöltése" "uploadNewLabel": "Új {{label}} feltöltése"
}, },
"general": { "general": {

View File

@@ -57,20 +57,25 @@
"addLink": "Aggiungi Collegamento", "addLink": "Aggiungi Collegamento",
"addNew": "Aggiungi nuovo", "addNew": "Aggiungi nuovo",
"addNewLabel": "Aggiungi nuovo {{label}}", "addNewLabel": "Aggiungi nuovo {{label}}",
"addUpload": "aggiungi Carica",
"block": "blocco", "block": "blocco",
"blockType": "Tipo di Blocco", "blockType": "Tipo di Blocco",
"blocks": "blocchi", "blocks": "blocchi",
"chooseFromExisting": "Scegli tra esistente", "chooseFromExisting": "Scegli tra esistente",
"collapseAll": "Comprimi tutto", "collapseAll": "Comprimi tutto",
"editLink": "Modifica Collegamento", "editLink": "Modifica Collegamento",
"editRelationship": "Modifica Relazione",
"itemsAndMore": "{{items}} e altri {{count}}", "itemsAndMore": "{{items}} e altri {{count}}",
"latitude": "Latitudine", "latitude": "Latitudine",
"longitude": "Longitudine", "longitude": "Longitudine",
"passwordsDoNotMatch": "Le password non corrispondono.", "passwordsDoNotMatch": "Le password non corrispondono.",
"removeUpload": "Rimuovi Upload",
"saveChanges": "Salva modifiche",
"searchForBlock": "Cerca un blocco", "searchForBlock": "Cerca un blocco",
"selectFieldsToEdit": "Seleziona i campi da modificare", "selectFieldsToEdit": "Seleziona i campi da modificare",
"showAll": "Mostra tutto", "showAll": "Mostra tutto",
"swapRelationship": "Cambia Relationship", "swapRelationship": "Cambia Relationship",
"swapUpload": "Cambia Upload",
"uploadNewLabel": "Carica nuovo {{label}}" "uploadNewLabel": "Carica nuovo {{label}}"
}, },
"general": { "general": {

View File

@@ -59,20 +59,25 @@
"addLink": "リンクを追加", "addLink": "リンクを追加",
"addNew": "新規追加", "addNew": "新規追加",
"addNewLabel": "{{label}} を新規追加", "addNewLabel": "{{label}} を新規追加",
"addUpload": "アップロードを追加",
"block": "ブロック", "block": "ブロック",
"blockType": "ブロックタイプ", "blockType": "ブロックタイプ",
"blocks": "ブロック", "blocks": "ブロック",
"chooseFromExisting": "既存から選択", "chooseFromExisting": "既存から選択",
"collapseAll": "すべて閉じる", "collapseAll": "すべて閉じる",
"editLink": "リンクを編集", "editLink": "リンクを編集",
"editRelationship": "リレーションシップを編集",
"itemsAndMore": "{{items}} 他{{count}}件", "itemsAndMore": "{{items}} 他{{count}}件",
"latitude": "緯度", "latitude": "緯度",
"longitude": "経度", "longitude": "経度",
"passwordsDoNotMatch": "パスワードが一致しません", "passwordsDoNotMatch": "パスワードが一致しません",
"removeUpload": "削除",
"saveChanges": "変更を保存",
"searchForBlock": "ブロックを検索", "searchForBlock": "ブロックを検索",
"selectFieldsToEdit": "編集するフィールドを選択", "selectFieldsToEdit": "編集するフィールドを選択",
"showAll": "すべて開く", "showAll": "すべて開く",
"swapRelationship": "スワップ関係", "swapRelationship": "スワップ関係",
"swapUpload": "差し替え",
"uploadNewLabel": "新規 {{label}} アップロード" "uploadNewLabel": "新規 {{label}} アップロード"
}, },
"general": { "general": {

View File

@@ -56,20 +56,25 @@
"addLink": "링크 추가", "addLink": "링크 추가",
"addNew": "새로 추가", "addNew": "새로 추가",
"addNewLabel": "새로운 {{label}} 추가", "addNewLabel": "새로운 {{label}} 추가",
"addUpload": "업로드 추가",
"block": "블록", "block": "블록",
"blockType": "블록 유형", "blockType": "블록 유형",
"blocks": "블록", "blocks": "블록",
"chooseFromExisting": "기존 항목 중 선택", "chooseFromExisting": "기존 항목 중 선택",
"collapseAll": "모두 접기", "collapseAll": "모두 접기",
"editLink": "링크 수정", "editLink": "링크 수정",
"editRelationship": "관계 수정",
"itemsAndMore": "{{items}} 및 {{count}}개 더", "itemsAndMore": "{{items}} 및 {{count}}개 더",
"latitude": "위도", "latitude": "위도",
"longitude": "경도", "longitude": "경도",
"passwordsDoNotMatch": "비밀번호가 일치하지 않습니다.", "passwordsDoNotMatch": "비밀번호가 일치하지 않습니다.",
"removeUpload": "제거",
"saveChanges": "변경 사항 저장",
"searchForBlock": "블록 검색", "searchForBlock": "블록 검색",
"selectFieldsToEdit": "수정할 입력란 선택", "selectFieldsToEdit": "수정할 입력란 선택",
"showAll": "모두 표시", "showAll": "모두 표시",
"swapRelationship": "관계 교체", "swapRelationship": "관계 교체",
"swapUpload": "업로드 교체",
"uploadNewLabel": "새로운 {{label}} 업로드" "uploadNewLabel": "새로운 {{label}} 업로드"
}, },
"general": { "general": {

View File

@@ -57,20 +57,25 @@
"addLink": "လင့်ခ်ထည့်ပါ။", "addLink": "လင့်ခ်ထည့်ပါ။",
"addNew": "အသစ် ထည့်သွင်းမည်။", "addNew": "အသစ် ထည့်သွင်းမည်။",
"addNewLabel": "{{label}} အားအသစ် ထည့်သွင်းမည်။", "addNewLabel": "{{label}} အားအသစ် ထည့်သွင်းမည်။",
"addUpload": "Upload ထည့်ပါ။",
"block": "ဘလောက်", "block": "ဘလောက်",
"blockType": "ဘလောက် အမျိုးအစား", "blockType": "ဘလောက် အမျိုးအစား",
"blocks": "ဘလောက်များ", "blocks": "ဘလောက်များ",
"chooseFromExisting": "ရှိပြီးသားထဲကပဲ ရွေးချယ်ပါ။", "chooseFromExisting": "ရှိပြီးသားထဲကပဲ ရွေးချယ်ပါ။",
"collapseAll": "အားလုံးကို ခေါက်သိမ်းပါ။", "collapseAll": "အားလုံးကို ခေါက်သိမ်းပါ။",
"editLink": "လင့်ခ်ကို တည်းဖြတ်ပါ။", "editLink": "လင့်ခ်ကို တည်းဖြတ်ပါ။",
"editRelationship": "ဆက်ဆံရေးကို တည်းဖြတ်ပါ။",
"itemsAndMore": "{{items}} နှင့် နောက်ထပ် {{count}} ခု", "itemsAndMore": "{{items}} နှင့် နောက်ထပ် {{count}} ခု",
"latitude": "vĩ độ", "latitude": "vĩ độ",
"longitude": "လောင်ဂျီကျု", "longitude": "လောင်ဂျီကျု",
"passwordsDoNotMatch": "စကားဝှက်များနှင့် မကိုက်ညီပါ။", "passwordsDoNotMatch": "စကားဝှက်များနှင့် မကိုက်ညီပါ။",
"removeUpload": "အပ်လုဒ်ကို ဖယ်ရှားပါ။",
"saveChanges": "သိမ်းဆည်းမည်။",
"searchForBlock": "ဘလောက်တစ်ခုရှာမည်။", "searchForBlock": "ဘလောက်တစ်ခုရှာမည်။",
"selectFieldsToEdit": "တည်းဖြတ်ရန် အကွက်များကို ရွေးပါ။", "selectFieldsToEdit": "တည်းဖြတ်ရန် အကွက်များကို ရွေးပါ။",
"showAll": "အကုန် ကြည့်မည်။", "showAll": "အကုန် ကြည့်မည်။",
"swapRelationship": "လဲလှယ်ဆက်ဆံရေး", "swapRelationship": "လဲလှယ်ဆက်ဆံရေး",
"swapUpload": "အပ်လုဒ်ဖလှယ်ပါ။",
"uploadNewLabel": "{{label}} အသစ်တင်မည်။" "uploadNewLabel": "{{label}} အသစ်တင်မည်။"
}, },
"general": { "general": {

View File

@@ -57,20 +57,25 @@
"addLink": "Legg til Lenke", "addLink": "Legg til Lenke",
"addNew": "Legg til ny", "addNew": "Legg til ny",
"addNewLabel": "Legg til ny {{label}}", "addNewLabel": "Legg til ny {{label}}",
"addUpload": "Legg til Opplasting",
"block": "blokk", "block": "blokk",
"blockType": "Blokktype", "blockType": "Blokktype",
"blocks": "blokker", "blocks": "blokker",
"chooseFromExisting": "Velg fra eksisterende", "chooseFromExisting": "Velg fra eksisterende",
"collapseAll": "Skjul alle", "collapseAll": "Skjul alle",
"editLink": "Rediger lenke", "editLink": "Rediger lenke",
"editRelationship": "Rediger relasjon",
"itemsAndMore": "{{items}} og {{count}} flere", "itemsAndMore": "{{items}} og {{count}} flere",
"latitude": "Breddegrad", "latitude": "Breddegrad",
"longitude": "Lengdegrad", "longitude": "Lengdegrad",
"passwordsDoNotMatch": "Passordene er ikke like.", "passwordsDoNotMatch": "Passordene er ikke like.",
"removeUpload": "Fjern Opplasting",
"saveChanges": "Lagre endringer",
"searchForBlock": "Søk etter en blokk", "searchForBlock": "Søk etter en blokk",
"selectFieldsToEdit": "Velg felt som skal redigeres", "selectFieldsToEdit": "Velg felt som skal redigeres",
"showAll": "Vis alle", "showAll": "Vis alle",
"swapRelationship": "Bytte Forhold", "swapRelationship": "Bytte Forhold",
"swapUpload": "Bytt Opplasting",
"uploadNewLabel": "Last opp ny {{label}}" "uploadNewLabel": "Last opp ny {{label}}"
}, },
"general": { "general": {

View File

@@ -57,20 +57,25 @@
"addLink": "Voeg een link toe", "addLink": "Voeg een link toe",
"addNew": "Nieuw(e)", "addNew": "Nieuw(e)",
"addNewLabel": "Nieuw(e) {{label}} toevoegen", "addNewLabel": "Nieuw(e) {{label}} toevoegen",
"addUpload": "Upload Toevoegen",
"block": "blok", "block": "blok",
"blockType": "Bloktype", "blockType": "Bloktype",
"blocks": "blokken", "blocks": "blokken",
"chooseFromExisting": "Kies uit bestaande", "chooseFromExisting": "Kies uit bestaande",
"collapseAll": "Alles samenvouwen", "collapseAll": "Alles samenvouwen",
"editLink": "Link bewerken", "editLink": "Link bewerken",
"editRelationship": "Relatie Relatie",
"itemsAndMore": "{{items}} en {{count}} meer", "itemsAndMore": "{{items}} en {{count}} meer",
"latitude": "Breedtegraad", "latitude": "Breedtegraad",
"longitude": "Lengtegraad", "longitude": "Lengtegraad",
"passwordsDoNotMatch": "Wachtwoorden komen niet overeen.", "passwordsDoNotMatch": "Wachtwoorden komen niet overeen.",
"removeUpload": "Verwijder Upload",
"saveChanges": "Bewaar aanpassingen",
"searchForBlock": "Zoeken naar een blok", "searchForBlock": "Zoeken naar een blok",
"selectFieldsToEdit": "Selecteer velden om te bewerken", "selectFieldsToEdit": "Selecteer velden om te bewerken",
"showAll": "Alles tonen", "showAll": "Alles tonen",
"swapRelationship": "Relatie Wisselen", "swapRelationship": "Relatie Wisselen",
"swapUpload": "Upload Verwisselen",
"uploadNewLabel": "Upload nieuw(e) {{label}}" "uploadNewLabel": "Upload nieuw(e) {{label}}"
}, },
"general": { "general": {

View File

@@ -57,20 +57,25 @@
"addLink": "Dodaj Link", "addLink": "Dodaj Link",
"addNew": "Dodaj nowy", "addNew": "Dodaj nowy",
"addNewLabel": "Dodaj nowy {{label}}", "addNewLabel": "Dodaj nowy {{label}}",
"addUpload": "Dodaj ładowanie",
"block": "Blok", "block": "Blok",
"blockType": "Typ Bloku", "blockType": "Typ Bloku",
"blocks": "Bloki", "blocks": "Bloki",
"chooseFromExisting": "Wybierz z istniejących", "chooseFromExisting": "Wybierz z istniejących",
"collapseAll": "Zwiń wszystko", "collapseAll": "Zwiń wszystko",
"editLink": "Edytuj Link", "editLink": "Edytuj Link",
"editRelationship": "Edytuj Relację",
"itemsAndMore": "{{items}} i {{count}} więcej", "itemsAndMore": "{{items}} i {{count}} więcej",
"latitude": "Szerokość", "latitude": "Szerokość",
"longitude": "Długość geograficzna", "longitude": "Długość geograficzna",
"passwordsDoNotMatch": "Hasła nie pasują", "passwordsDoNotMatch": "Hasła nie pasują",
"removeUpload": "Usuń Wrzucone",
"saveChanges": "Zapisz zmiany",
"searchForBlock": "Szukaj bloku", "searchForBlock": "Szukaj bloku",
"selectFieldsToEdit": "Wybierz pola do edycji", "selectFieldsToEdit": "Wybierz pola do edycji",
"showAll": "Pokaż wszystkie", "showAll": "Pokaż wszystkie",
"swapRelationship": "Zamiana Relacji", "swapRelationship": "Zamiana Relacji",
"swapUpload": "Zamień Wrzucone",
"uploadNewLabel": "Wrzuć nowy {{label}}" "uploadNewLabel": "Wrzuć nowy {{label}}"
}, },
"general": { "general": {

View File

@@ -57,20 +57,25 @@
"addLink": "Adicionar Link", "addLink": "Adicionar Link",
"addNew": "Adicionar novo", "addNew": "Adicionar novo",
"addNewLabel": "Adicionar novo {{label}}", "addNewLabel": "Adicionar novo {{label}}",
"addUpload": "Adicionar Upload",
"block": "bloco", "block": "bloco",
"blockType": "Tipo de bloco", "blockType": "Tipo de bloco",
"blocks": "blocos", "blocks": "blocos",
"chooseFromExisting": "Escolher entre os existentes", "chooseFromExisting": "Escolher entre os existentes",
"collapseAll": "Recolher todos", "collapseAll": "Recolher todos",
"editLink": "Editar Link", "editLink": "Editar Link",
"editRelationship": "Editar Relacionamento",
"itemsAndMore": "{{items}} e mais {{count}}", "itemsAndMore": "{{items}} e mais {{count}}",
"latitude": "Latitude", "latitude": "Latitude",
"longitude": "Longitude", "longitude": "Longitude",
"passwordsDoNotMatch": "Senhas não coincidem.", "passwordsDoNotMatch": "Senhas não coincidem.",
"removeUpload": "Remover Upload",
"saveChanges": "Salvar alterações",
"searchForBlock": "Procurar bloco", "searchForBlock": "Procurar bloco",
"selectFieldsToEdit": "Selecione os campos para editar", "selectFieldsToEdit": "Selecione os campos para editar",
"showAll": "Mostrar Tudo", "showAll": "Mostrar Tudo",
"swapRelationship": "Relação de Troca", "swapRelationship": "Relação de Troca",
"swapUpload": "Substituir Upload",
"uploadNewLabel": "Carregar novo(a) {{label}}" "uploadNewLabel": "Carregar novo(a) {{label}}"
}, },
"general": { "general": {

View File

@@ -57,20 +57,25 @@
"addLink": "Adăugați un link", "addLink": "Adăugați un link",
"addNew": "Adăugați un nou", "addNew": "Adăugați un nou",
"addNewLabel": "Adăugați un nou {{label}}", "addNewLabel": "Adăugați un nou {{label}}",
"addUpload": "Adăugați un fișier",
"block": "bloc", "block": "bloc",
"blockType": "Tip de bloc", "blockType": "Tip de bloc",
"blocks": "Blocuri", "blocks": "Blocuri",
"chooseFromExisting": "Alegeți dintre cele existente", "chooseFromExisting": "Alegeți dintre cele existente",
"collapseAll": "Colapsează toate", "collapseAll": "Colapsează toate",
"editLink": "Editați Link-ul", "editLink": "Editați Link-ul",
"editRelationship": "Editați relația",
"itemsAndMore": "{{items}} şi {{count}} mai multe", "itemsAndMore": "{{items}} şi {{count}} mai multe",
"latitude": "Latitudine", "latitude": "Latitudine",
"longitude": "Longitudine", "longitude": "Longitudine",
"passwordsDoNotMatch": "Parolele nu corespund.", "passwordsDoNotMatch": "Parolele nu corespund.",
"removeUpload": "Eliminați încărcarea",
"saveChanges": "Salvați modificările",
"searchForBlock": "Căutați un bloc", "searchForBlock": "Căutați un bloc",
"selectFieldsToEdit": "Selectați câmpurile de editat", "selectFieldsToEdit": "Selectați câmpurile de editat",
"showAll": "Afișați toate", "showAll": "Afișați toate",
"swapRelationship": "Schimbați relația", "swapRelationship": "Schimbați relația",
"swapUpload": "Schimbați Încărcarea",
"uploadNewLabel": "Încărcați un nou {{label}}" "uploadNewLabel": "Încărcați un nou {{label}}"
}, },
"general": { "general": {

View File

@@ -57,20 +57,25 @@
"addLink": "Dodaj link", "addLink": "Dodaj link",
"addNew": "Dodaj novi", "addNew": "Dodaj novi",
"addNewLabel": "Dodaj novi {{label}}", "addNewLabel": "Dodaj novi {{label}}",
"addUpload": "Dodaj učitavanje",
"block": "blokiranje", "block": "blokiranje",
"blockType": "Vrsta blokiranja", "blockType": "Vrsta blokiranja",
"blocks": "blokiranja", "blocks": "blokiranja",
"chooseFromExisting": "Odaberite iz postojećih.", "chooseFromExisting": "Odaberite iz postojećih.",
"collapseAll": "Skupi sve", "collapseAll": "Skupi sve",
"editLink": "Izmeni link", "editLink": "Izmeni link",
"editRelationship": "Izmeni odnos",
"itemsAndMore": "{{items}} i {{count}} više", "itemsAndMore": "{{items}} i {{count}} više",
"latitude": "Geografska širina", "latitude": "Geografska širina",
"longitude": "Geografska dužina", "longitude": "Geografska dužina",
"passwordsDoNotMatch": "Lozinke nisu iste.", "passwordsDoNotMatch": "Lozinke nisu iste.",
"removeUpload": "Ukloni prenos",
"saveChanges": "Sačuvaj promene",
"searchForBlock": "Pretraži blok", "searchForBlock": "Pretraži blok",
"selectFieldsToEdit": "Odaberite polja za promenu", "selectFieldsToEdit": "Odaberite polja za promenu",
"showAll": "Pokaži sve", "showAll": "Pokaži sve",
"swapRelationship": "Zameni vezu", "swapRelationship": "Zameni vezu",
"swapUpload": "Zameni prenos",
"uploadNewLabel": "Učitaj novi {{label}}" "uploadNewLabel": "Učitaj novi {{label}}"
}, },
"general": { "general": {

View File

@@ -57,20 +57,25 @@
"addLink": "Додај линк", "addLink": "Додај линк",
"addNew": "Додај нови", "addNew": "Додај нови",
"addNewLabel": "Додај нови {{label}}", "addNewLabel": "Додај нови {{label}}",
"addUpload": "Додај учитавање",
"block": "блокирање", "block": "блокирање",
"blockType": "Врста блокирања", "blockType": "Врста блокирања",
"blocks": "блокирања", "blocks": "блокирања",
"chooseFromExisting": "Одаберите из постојећих.", "chooseFromExisting": "Одаберите из постојећих.",
"collapseAll": "Скупи све", "collapseAll": "Скупи све",
"editLink": "Измени линк", "editLink": "Измени линк",
"editRelationship": "Измени однос",
"itemsAndMore": "{{items}} и {{count}} више", "itemsAndMore": "{{items}} и {{count}} више",
"latitude": "Географска ширина", "latitude": "Географска ширина",
"longitude": "Географска дужина", "longitude": "Географска дужина",
"passwordsDoNotMatch": "Лозинке нису исте.", "passwordsDoNotMatch": "Лозинке нису исте.",
"removeUpload": "Уклони пренос",
"saveChanges": "Сачувај промене",
"searchForBlock": "Претражи блок", "searchForBlock": "Претражи блок",
"selectFieldsToEdit": "Одаберите поља за промену", "selectFieldsToEdit": "Одаберите поља за промену",
"showAll": "Покажи све", "showAll": "Покажи све",
"swapRelationship": "Замени везу", "swapRelationship": "Замени везу",
"swapUpload": "Замени пренос",
"uploadNewLabel": "Учитај нови {{label}}" "uploadNewLabel": "Учитај нови {{label}}"
}, },
"general": { "general": {

View File

@@ -57,20 +57,25 @@
"addLink": "Добавить ссылку", "addLink": "Добавить ссылку",
"addNew": "Добавить новый", "addNew": "Добавить новый",
"addNewLabel": "Добавить {{label}}", "addNewLabel": "Добавить {{label}}",
"addUpload": "Добавить загрузку",
"block": "Блок", "block": "Блок",
"blockType": "Тип Блока", "blockType": "Тип Блока",
"blocks": "Блоки", "blocks": "Блоки",
"chooseFromExisting": "Выбрать из существующих", "chooseFromExisting": "Выбрать из существующих",
"collapseAll": "Свернуть все", "collapseAll": "Свернуть все",
"editLink": "Редактировать ссылку", "editLink": "Редактировать ссылку",
"editRelationship": "Редактировать Отношения",
"itemsAndMore": "{{items}} и ещё {{count}}", "itemsAndMore": "{{items}} и ещё {{count}}",
"latitude": "Широта", "latitude": "Широта",
"longitude": "Долгота", "longitude": "Долгота",
"passwordsDoNotMatch": "Пароли не совпадают.", "passwordsDoNotMatch": "Пароли не совпадают.",
"removeUpload": "Удалить загруженное",
"saveChanges": "Сохранить изменения",
"searchForBlock": "Найти Блок", "searchForBlock": "Найти Блок",
"selectFieldsToEdit": "Выберите поля для редактирования", "selectFieldsToEdit": "Выберите поля для редактирования",
"showAll": "Показать все", "showAll": "Показать все",
"swapRelationship": "Поменять отношения", "swapRelationship": "Поменять отношения",
"swapUpload": "Заменить загруженное",
"uploadNewLabel": "Загрузить новый {{label}}" "uploadNewLabel": "Загрузить новый {{label}}"
}, },
"general": { "general": {

View File

@@ -57,20 +57,25 @@
"addLink": "Lägg till Länk", "addLink": "Lägg till Länk",
"addNew": "Lägg till ny", "addNew": "Lägg till ny",
"addNewLabel": "Lägg till ny {{label}}", "addNewLabel": "Lägg till ny {{label}}",
"addUpload": "Lägg till Uppladdning",
"block": "block", "block": "block",
"blockType": "Block Typ", "blockType": "Block Typ",
"blocks": "block", "blocks": "block",
"chooseFromExisting": "Välj bland befintliga", "chooseFromExisting": "Välj bland befintliga",
"collapseAll": "kollapsa Alla", "collapseAll": "kollapsa Alla",
"editLink": "Redigera Länk", "editLink": "Redigera Länk",
"editRelationship": "Redigera Relation",
"itemsAndMore": "{{items}} och {{count}} mer", "itemsAndMore": "{{items}} och {{count}} mer",
"latitude": "Latitud", "latitude": "Latitud",
"longitude": "Longitud", "longitude": "Longitud",
"passwordsDoNotMatch": "Lösenorden matchar inte.", "passwordsDoNotMatch": "Lösenorden matchar inte.",
"removeUpload": "Ta Bort Uppladdning",
"saveChanges": "Spara ändringar",
"searchForBlock": "Sök efter ett block", "searchForBlock": "Sök efter ett block",
"selectFieldsToEdit": "Välj fält att redigera", "selectFieldsToEdit": "Välj fält att redigera",
"showAll": "Visa Alla", "showAll": "Visa Alla",
"swapRelationship": "Byt Förhållande", "swapRelationship": "Byt Förhållande",
"swapUpload": "Byt Uppladdning",
"uploadNewLabel": "Ladda upp ny {{label}}" "uploadNewLabel": "Ladda upp ny {{label}}"
}, },
"general": { "general": {

View File

@@ -57,20 +57,25 @@
"addLink": "เพิ่มลิงค์", "addLink": "เพิ่มลิงค์",
"addNew": "เพิ่ม", "addNew": "เพิ่ม",
"addNewLabel": "เพิ่ม {{label}} ใหม่", "addNewLabel": "เพิ่ม {{label}} ใหม่",
"addUpload": "เพิ่มการอัปโหลด",
"block": "Block", "block": "Block",
"blockType": "ประเภท Block", "blockType": "ประเภท Block",
"blocks": "Blocks", "blocks": "Blocks",
"chooseFromExisting": "เลือกจากที่มีอยู่", "chooseFromExisting": "เลือกจากที่มีอยู่",
"collapseAll": "ยุบทั้งหมด", "collapseAll": "ยุบทั้งหมด",
"editLink": "แก้ไขลิงก์", "editLink": "แก้ไขลิงก์",
"editRelationship": "แก้ไขความสัมพันธ์",
"itemsAndMore": "{{items}} และเพิ่มเติมอีก {{count}}", "itemsAndMore": "{{items}} และเพิ่มเติมอีก {{count}}",
"latitude": "ละติจูด", "latitude": "ละติจูด",
"longitude": "ลองติจูด", "longitude": "ลองติจูด",
"passwordsDoNotMatch": "รหัสผ่านไม่ตรงกัน", "passwordsDoNotMatch": "รหัสผ่านไม่ตรงกัน",
"removeUpload": "ลบอัปโหลด",
"saveChanges": "บันทึก",
"searchForBlock": "ค้นหา Block", "searchForBlock": "ค้นหา Block",
"selectFieldsToEdit": "เลือกช่องที่จะแก้ไข", "selectFieldsToEdit": "เลือกช่องที่จะแก้ไข",
"showAll": "แสดงทั้งหมด", "showAll": "แสดงทั้งหมด",
"swapRelationship": "สลับความสัมพันธ์", "swapRelationship": "สลับความสัมพันธ์",
"swapUpload": "สลับอัปโหลด",
"uploadNewLabel": "อัปโหลด {{label}} ใหม่" "uploadNewLabel": "อัปโหลด {{label}} ใหม่"
}, },
"general": { "general": {

View File

@@ -57,20 +57,25 @@
"addLink": "Link Ekle", "addLink": "Link Ekle",
"addNew": "Yeni", "addNew": "Yeni",
"addNewLabel": "Yeni {{label}}", "addNewLabel": "Yeni {{label}}",
"addUpload": "Yükleme Ekle",
"block": "blok", "block": "blok",
"blockType": "Blok tipi", "blockType": "Blok tipi",
"blocks": "blok", "blocks": "blok",
"chooseFromExisting": "Varolanlardan seç", "chooseFromExisting": "Varolanlardan seç",
"collapseAll": "Tümünü daralt", "collapseAll": "Tümünü daralt",
"editLink": "Bağlantıyı Düzenle", "editLink": "Bağlantıyı Düzenle",
"editRelationship": "İlişkiyi Ekle",
"itemsAndMore": "{{items}} and {{count}} more", "itemsAndMore": "{{items}} and {{count}} more",
"latitude": "Enlem", "latitude": "Enlem",
"longitude": "Boylam", "longitude": "Boylam",
"passwordsDoNotMatch": "Parolalar eşleşmiyor.", "passwordsDoNotMatch": "Parolalar eşleşmiyor.",
"removeUpload": "Dosyayı Sil",
"saveChanges": "Değişiklikleri kaydet",
"searchForBlock": "Blok ara", "searchForBlock": "Blok ara",
"selectFieldsToEdit": "Düzenlenecek alanları seçin", "selectFieldsToEdit": "Düzenlenecek alanları seçin",
"showAll": "Tümünü göster", "showAll": "Tümünü göster",
"swapRelationship": "Takas Ilişkisi", "swapRelationship": "Takas Ilişkisi",
"swapUpload": "Karşıya Yüklemeyi Değiştir",
"uploadNewLabel": "Karşıya {{label}} yükle" "uploadNewLabel": "Karşıya {{label}} yükle"
}, },
"general": { "general": {

View File

@@ -280,6 +280,21 @@
}, },
"uploadNewLabel": { "uploadNewLabel": {
"type": "string" "type": "string"
},
"swapUpload": {
"type": "string"
},
"addUpload": {
"type": "string"
},
"editRelationship": {
"type": "string"
},
"removeUpload": {
"type": "string"
},
"saveChanges": {
"type": "string"
} }
}, },
"required": [ "required": [
@@ -301,7 +316,12 @@
"selectFieldsToEdit", "selectFieldsToEdit",
"showAll", "showAll",
"swapRelationship", "swapRelationship",
"uploadNewLabel" "uploadNewLabel",
"swapUpload",
"addUpload",
"editRelationship",
"removeUpload",
"saveChanges"
], ],
"type": "object" "type": "object"
}, },

View File

@@ -57,20 +57,25 @@
"addLink": "Додати посилання", "addLink": "Додати посилання",
"addNew": "Додати новий", "addNew": "Додати новий",
"addNewLabel": "Створити {{label}}", "addNewLabel": "Створити {{label}}",
"addUpload": "Додати завантаження",
"block": "блок", "block": "блок",
"blockType": "Тип блока", "blockType": "Тип блока",
"blocks": "блоки", "blocks": "блоки",
"chooseFromExisting": "Вибрати з існуючих", "chooseFromExisting": "Вибрати з існуючих",
"collapseAll": "Згорнути все", "collapseAll": "Згорнути все",
"editLink": "Редагувати посилання", "editLink": "Редагувати посилання",
"editRelationship": "Редагувати взаємозв'язок",
"itemsAndMore": "{{items}} і ще {{count}}", "itemsAndMore": "{{items}} і ще {{count}}",
"latitude": "Широта", "latitude": "Широта",
"longitude": "Довгота", "longitude": "Довгота",
"passwordsDoNotMatch": "Паролі не співпадають.", "passwordsDoNotMatch": "Паролі не співпадають.",
"removeUpload": "Видалити завантаження",
"saveChanges": "Зберегти зміни",
"searchForBlock": "Знайти блок", "searchForBlock": "Знайти блок",
"selectFieldsToEdit": "Виберіть поля для редагування", "selectFieldsToEdit": "Виберіть поля для редагування",
"showAll": "Показати все", "showAll": "Показати все",
"swapRelationship": "Замінити зв'язок", "swapRelationship": "Замінити зв'язок",
"swapUpload": "Замінити завантаження",
"uploadNewLabel": "Завантажити новий {{label}}" "uploadNewLabel": "Завантажити новий {{label}}"
}, },
"general": { "general": {

View File

@@ -57,20 +57,25 @@
"addLink": "Thêm liên kết", "addLink": "Thêm liên kết",
"addNew": "Thêm mới", "addNew": "Thêm mới",
"addNewLabel": "Thêm mới: {{label}}", "addNewLabel": "Thêm mới: {{label}}",
"addUpload": "Thêm tải lên (upload)",
"block": "block", "block": "block",
"blockType": "Block Type", "blockType": "Block Type",
"blocks": "blocks", "blocks": "blocks",
"chooseFromExisting": "Chọn từ thư viện", "chooseFromExisting": "Chọn từ thư viện",
"collapseAll": "Ẩn toàn bộ", "collapseAll": "Ẩn toàn bộ",
"editLink": "Chỉnh sửa liên kết", "editLink": "Chỉnh sửa liên kết",
"editRelationship": "Chỉnh sửa mối quan hệ",
"itemsAndMore": "{{items}} và {{count}} món nữa", "itemsAndMore": "{{items}} và {{count}} món nữa",
"latitude": "Vĩ độ", "latitude": "Vĩ độ",
"longitude": "Kinh độ", "longitude": "Kinh độ",
"passwordsDoNotMatch": "Mật khẩu không trùng.", "passwordsDoNotMatch": "Mật khẩu không trùng.",
"removeUpload": "Xóa bản tải lên",
"saveChanges": "Luu thay đổi",
"searchForBlock": "Tìm block", "searchForBlock": "Tìm block",
"selectFieldsToEdit": "Chọn các trường để chỉnh sửa", "selectFieldsToEdit": "Chọn các trường để chỉnh sửa",
"showAll": "Hiển thị toàn bộ", "showAll": "Hiển thị toàn bộ",
"swapRelationship": "Đổi quan hệ", "swapRelationship": "Đổi quan hệ",
"swapUpload": "Đổi bản tải lên",
"uploadNewLabel": "Tải lên bản mới: {{label}}" "uploadNewLabel": "Tải lên bản mới: {{label}}"
}, },
"general": { "general": {

View File

@@ -59,20 +59,25 @@
"addLink": "新增連結", "addLink": "新增連結",
"addNew": "新增", "addNew": "新增",
"addNewLabel": "新增{{label}}", "addNewLabel": "新增{{label}}",
"addUpload": "上傳",
"block": "區塊", "block": "區塊",
"blockType": "區塊類型", "blockType": "區塊類型",
"blocks": "區塊", "blocks": "區塊",
"chooseFromExisting": "從現有的選擇", "chooseFromExisting": "從現有的選擇",
"collapseAll": "全部折疊", "collapseAll": "全部折疊",
"editLink": "編輯連結", "editLink": "編輯連結",
"editRelationship": "編輯關聯",
"itemsAndMore": "{{items}} 個,還有 {{count}} 個", "itemsAndMore": "{{items}} 個,還有 {{count}} 個",
"latitude": "緯度", "latitude": "緯度",
"longitude": "經度", "longitude": "經度",
"passwordsDoNotMatch": "密碼不匹配。", "passwordsDoNotMatch": "密碼不匹配。",
"removeUpload": "移除上傳",
"saveChanges": "儲存變更",
"searchForBlock": "搜尋一個區塊", "searchForBlock": "搜尋一個區塊",
"selectFieldsToEdit": "選擇要編輯的字串", "selectFieldsToEdit": "選擇要編輯的字串",
"showAll": "顯示全部", "showAll": "顯示全部",
"swapRelationship": "替換關聯", "swapRelationship": "替換關聯",
"swapUpload": "替換上傳",
"uploadNewLabel": "上傳新的{{label}}" "uploadNewLabel": "上傳新的{{label}}"
}, },
"general": { "general": {

View File

@@ -57,20 +57,25 @@
"addLink": "添加链接", "addLink": "添加链接",
"addNew": "添加新的", "addNew": "添加新的",
"addNewLabel": "添加新的{{label}}", "addNewLabel": "添加新的{{label}}",
"addUpload": "添加上传",
"block": "区块", "block": "区块",
"blockType": "区块类型", "blockType": "区块类型",
"blocks": "区块", "blocks": "区块",
"chooseFromExisting": "从现有中选择", "chooseFromExisting": "从现有中选择",
"collapseAll": "全部折叠", "collapseAll": "全部折叠",
"editLink": "编辑链接", "editLink": "编辑链接",
"editRelationship": "编辑关系",
"itemsAndMore": "{{items}}和{{count}}更多", "itemsAndMore": "{{items}}和{{count}}更多",
"latitude": "纬度", "latitude": "纬度",
"longitude": "经度", "longitude": "经度",
"passwordsDoNotMatch": "密码不匹配。", "passwordsDoNotMatch": "密码不匹配。",
"removeUpload": "移除上传",
"saveChanges": "保存更改",
"searchForBlock": "搜索一个区块", "searchForBlock": "搜索一个区块",
"selectFieldsToEdit": "选择要编辑的字段", "selectFieldsToEdit": "选择要编辑的字段",
"showAll": "显示全部", "showAll": "显示全部",
"swapRelationship": "交换关系", "swapRelationship": "交换关系",
"swapUpload": "交换上传",
"uploadNewLabel": "上传新的{{label}}" "uploadNewLabel": "上传新的{{label}}"
}, },
"general": { "general": {

View File

@@ -151,6 +151,11 @@ const clientTranslationKeys = [
'fields:showAll', 'fields:showAll',
'fields:swapRelationship', 'fields:swapRelationship',
'fields:uploadNewLabel', 'fields:uploadNewLabel',
'fields:swapUpload',
'fields:addUpload',
'fields:editRelationship',
'fields:removeUpload',
'fields:saveChanges',
'general:aboutToDeleteCount', 'general:aboutToDeleteCount',
'general:aboutToDelete', 'general:aboutToDelete',

View File

@@ -20,7 +20,7 @@ export type DocumentTogglerProps = HTMLAttributes<HTMLButtonElement> & {
id?: string id?: string
} }
export type UseDocumentDrawer = (args: { collectionSlug: string; id?: string }) => [ export type UseDocumentDrawer = (args: { collectionSlug: string; id?: string | number }) => [
React.FC<Omit<DocumentDrawerProps, 'collectionSlug' | 'id'>>, // drawer React.FC<Omit<DocumentDrawerProps, 'collectionSlug' | 'id'>>, // drawer
React.FC<Omit<DocumentTogglerProps, 'collectionSlug' | 'id'>>, // toggler React.FC<Omit<DocumentTogglerProps, 'collectionSlug' | 'id'>>, // toggler
{ {

View File

@@ -1,9 +1,14 @@
import path from 'path'
import type { CollectionConfig } from '../../../../packages/payload/src/collections/config/types' import type { CollectionConfig } from '../../../../packages/payload/src/collections/config/types'
export const mediaSlug = 'media' export const mediaSlug = 'media'
export const MediaCollection: CollectionConfig = { export const MediaCollection: CollectionConfig = {
slug: mediaSlug, slug: mediaSlug,
// upload: {
// staticDir: path.resolve(__dirname, './media'),
// },
upload: true, upload: true,
access: { access: {
read: () => true, read: () => true,

View File

@@ -1,3 +1,6 @@
import path from 'path'
import getFileByPath from '../../packages/payload/src/uploads/getFileByPath'
import { buildConfigWithDefaults } from '../buildConfigWithDefaults' import { buildConfigWithDefaults } from '../buildConfigWithDefaults'
import { devUser } from '../credentials' import { devUser } from '../credentials'
import { MediaCollection } from './collections/Media' import { MediaCollection } from './collections/Media'
@@ -34,5 +37,15 @@ export default buildConfigWithDefaults({
text: 'example post', text: 'example post',
}, },
}) })
// Create image
const imageFilePath = path.resolve(process.cwd(), './test/uploads/image.png')
const imageFile = await getFileByPath(imageFilePath)
const { id: uploadedImage } = await payload.create({
collection: 'media',
data: {},
file: imageFile,
})
}, },
}) })

View File

@@ -25,7 +25,22 @@ const databaseAdapters = {
export function buildConfigWithDefaults(testConfig?: Partial<Config>): Promise<SanitizedConfig> { export function buildConfigWithDefaults(testConfig?: Partial<Config>): Promise<SanitizedConfig> {
const config: Config = { const config: Config = {
secret: 'TEST_SECRET', secret: 'TEST_SECRET',
editor: slateEditor({}), editor: slateEditor({
admin: {
upload: {
collections: {
media: {
fields: [
{
name: 'alt',
type: 'text',
},
],
},
},
},
},
}),
rateLimit: { rateLimit: {
max: 9999999999, max: 9999999999,
window: 15 * 60 * 1000, // 15min default, window: 15 * 60 * 1000, // 15min default,