mirror of
https://github.com/langgenius/dify.git
synced 2026-05-05 09:58:04 +08:00
Merge branch 'main' into feat/rag-2
This commit is contained in:
@ -1,41 +0,0 @@
|
||||
'use client'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import {
|
||||
RiAddLine,
|
||||
RiArrowRightLine,
|
||||
} from '@remixicon/react'
|
||||
import Link from 'next/link'
|
||||
|
||||
type CreateAppCardProps = {
|
||||
ref?: React.Ref<HTMLAnchorElement>
|
||||
}
|
||||
|
||||
const CreateAppCard = ({ ref }: CreateAppCardProps) => {
|
||||
const { t } = useTranslation()
|
||||
|
||||
return (
|
||||
<div className='bg-background-default-dimm flex min-h-[160px] flex-col rounded-xl border-[0.5px]
|
||||
border-components-panel-border transition-all duration-200 ease-in-out'
|
||||
>
|
||||
<Link ref={ref} className='group flex grow cursor-pointer items-start p-4' href='/datasets/create'>
|
||||
<div className='flex items-center gap-3'>
|
||||
<div className='flex h-10 w-10 items-center justify-center rounded-lg border border-dashed border-divider-regular bg-background-default-lighter
|
||||
p-2 group-hover:border-solid group-hover:border-effects-highlight group-hover:bg-background-default-dodge'
|
||||
>
|
||||
<RiAddLine className='h-4 w-4 text-text-tertiary group-hover:text-text-accent' />
|
||||
</div>
|
||||
<div className='system-md-semibold text-text-secondary group-hover:text-text-accent'>{t('dataset.createDataset')}</div>
|
||||
</div>
|
||||
</Link>
|
||||
<div className='system-xs-regular p-4 pt-0 text-text-tertiary'>{t('dataset.createDatasetIntro')}</div>
|
||||
<Link className='group flex cursor-pointer items-center gap-1 rounded-b-xl border-t-[0.5px] border-divider-subtle p-4' href='/datasets/connect'>
|
||||
<div className='system-xs-medium text-text-tertiary group-hover:text-text-accent'>{t('dataset.connectDataset')}</div>
|
||||
<RiArrowRightLine className='h-3.5 w-3.5 text-text-tertiary group-hover:text-text-accent' />
|
||||
</Link>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
CreateAppCard.displayName = 'CreateAppCard'
|
||||
|
||||
export default CreateAppCard
|
||||
@ -106,8 +106,8 @@ const Uploader: FC<Props> = ({
|
||||
<div className='flex w-full items-center justify-center space-x-2'>
|
||||
<RiUploadCloud2Line className='h-6 w-6 text-text-tertiary' />
|
||||
<div className='text-text-tertiary'>
|
||||
{t('datasetCreation.stepOne.uploader.button')}
|
||||
<span className='cursor-pointer pl-1 text-text-accent' onClick={selectHandle}>{t('datasetDocuments.list.batchModal.browse')}</span>
|
||||
{t('app.dslUploader.button')}
|
||||
<span className='cursor-pointer pl-1 text-text-accent' onClick={selectHandle}>{t('app.dslUploader.browse')}</span>
|
||||
</div>
|
||||
</div>
|
||||
{dragging && <div ref={dragRef} className='absolute left-0 top-0 h-full w-full' />}
|
||||
|
||||
@ -370,20 +370,14 @@ const AppCard = ({ app, onRefresh }: AppCardProps) => {
|
||||
{app.description}
|
||||
</div>
|
||||
</div>
|
||||
<div className={cn(
|
||||
'absolute bottom-1 left-0 right-0 h-[42px] shrink-0 items-center pb-[6px] pl-[14px] pr-[6px] pt-1',
|
||||
tags.length ? 'flex' : '!hidden group-hover:!flex',
|
||||
)}>
|
||||
<div className='absolute bottom-1 left-0 right-0 flex h-[42px] shrink-0 items-center pb-[6px] pl-[14px] pr-[6px] pt-1'>
|
||||
{isCurrentWorkspaceEditor && (
|
||||
<>
|
||||
<div className={cn('flex w-0 grow items-center gap-1')} onClick={(e) => {
|
||||
e.stopPropagation()
|
||||
e.preventDefault()
|
||||
}}>
|
||||
<div className={cn(
|
||||
'mr-[41px] w-full grow group-hover:!mr-0 group-hover:!block',
|
||||
tags.length ? '!block' : '!hidden',
|
||||
)}>
|
||||
<div className='mr-[41px] w-full grow group-hover:!mr-0'>
|
||||
<TagSelector
|
||||
position='bl'
|
||||
type='app'
|
||||
@ -395,7 +389,7 @@ const AppCard = ({ app, onRefresh }: AppCardProps) => {
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className='mx-1 !hidden h-[14px] w-[1px] shrink-0 group-hover:!flex' />
|
||||
<div className='mx-1 !hidden h-[14px] w-[1px] shrink-0 bg-divider-regular group-hover:!flex' />
|
||||
<div className='!hidden shrink-0 group-hover:!flex'>
|
||||
<CustomPopover
|
||||
htmlContent={<Operations />}
|
||||
|
||||
@ -284,9 +284,9 @@ const Chat: FC<ChatProps> = ({
|
||||
{
|
||||
!noStopResponding && isResponding && (
|
||||
<div className='mb-2 flex justify-center'>
|
||||
<Button onClick={onStopResponding}>
|
||||
<StopCircle className='mr-[5px] h-3.5 w-3.5 text-gray-500' />
|
||||
<span className='text-xs font-normal text-gray-500'>{t('appDebug.operation.stopResponding')}</span>
|
||||
<Button className='border-components-panel-border bg-components-panel-bg text-components-button-secondary-text' onClick={onStopResponding}>
|
||||
<StopCircle className='mr-[5px] h-3.5 w-3.5' />
|
||||
<span className='text-xs font-normal'>{t('appDebug.operation.stopResponding')}</span>
|
||||
</Button>
|
||||
</div>
|
||||
)
|
||||
|
||||
@ -313,7 +313,7 @@ const FileUploader = ({
|
||||
<RiUploadCloud2Line className='mr-2 size-5' />
|
||||
|
||||
<span>
|
||||
{t('datasetCreation.stepOne.uploader.button')}
|
||||
{notSupportBatchUpload ? t('datasetCreation.stepOne.uploader.buttonSingleFile') : t('datasetCreation.stepOne.uploader.button')}
|
||||
{supportTypes.length > 0 && (
|
||||
<label className="ml-1 cursor-pointer text-text-accent" onClick={selectHandle}>{t('datasetCreation.stepOne.uploader.browse')}</label>
|
||||
)}
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
'use client'
|
||||
import { useEffect, useState } from 'react'
|
||||
import { useEffect, useMemo, useState } from 'react'
|
||||
import { useContext } from 'use-context-selector'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import { RiListUnordered } from '@remixicon/react'
|
||||
import { RiCloseLine, RiListUnordered } from '@remixicon/react'
|
||||
import TemplateEn from './template/template.en.mdx'
|
||||
import TemplateZh from './template/template.zh.mdx'
|
||||
import TemplateJa from './template/template.ja.mdx'
|
||||
@ -30,6 +30,7 @@ const Doc = ({ appDetail }: IDocProps) => {
|
||||
const { t } = useTranslation()
|
||||
const [toc, setToc] = useState<Array<{ href: string; text: string }>>([])
|
||||
const [isTocExpanded, setIsTocExpanded] = useState(false)
|
||||
const [activeSection, setActiveSection] = useState<string>('')
|
||||
const { theme } = useTheme()
|
||||
|
||||
const variables = appDetail?.model_config?.configs?.prompt_variables || []
|
||||
@ -59,13 +60,43 @@ const Doc = ({ appDetail }: IDocProps) => {
|
||||
return null
|
||||
}).filter((item): item is { href: string; text: string } => item !== null)
|
||||
setToc(tocItems)
|
||||
if (tocItems.length > 0)
|
||||
setActiveSection(tocItems[0].href.replace('#', ''))
|
||||
}
|
||||
}
|
||||
|
||||
// Run after component has rendered
|
||||
setTimeout(extractTOC, 0)
|
||||
}, [appDetail, locale])
|
||||
|
||||
useEffect(() => {
|
||||
const handleScroll = () => {
|
||||
const scrollContainer = document.querySelector('.overflow-auto')
|
||||
if (!scrollContainer || toc.length === 0)
|
||||
return
|
||||
|
||||
let currentSection = ''
|
||||
toc.forEach((item) => {
|
||||
const targetId = item.href.replace('#', '')
|
||||
const element = document.getElementById(targetId)
|
||||
if (element) {
|
||||
const rect = element.getBoundingClientRect()
|
||||
if (rect.top <= window.innerHeight / 2)
|
||||
currentSection = targetId
|
||||
}
|
||||
})
|
||||
|
||||
if (currentSection && currentSection !== activeSection)
|
||||
setActiveSection(currentSection)
|
||||
}
|
||||
|
||||
const scrollContainer = document.querySelector('.overflow-auto')
|
||||
if (scrollContainer) {
|
||||
scrollContainer.addEventListener('scroll', handleScroll)
|
||||
handleScroll()
|
||||
return () => scrollContainer.removeEventListener('scroll', handleScroll)
|
||||
}
|
||||
}, [toc, activeSection])
|
||||
|
||||
const handleTocClick = (e: React.MouseEvent<HTMLAnchorElement>, item: { href: string; text: string }) => {
|
||||
e.preventDefault()
|
||||
const targetId = item.href.replace('#', '')
|
||||
@ -82,94 +113,128 @@ const Doc = ({ appDetail }: IDocProps) => {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const Template = useMemo(() => {
|
||||
if (appDetail?.mode === 'chat' || appDetail?.mode === 'agent-chat') {
|
||||
switch (locale) {
|
||||
case LanguagesSupported[1]:
|
||||
return <TemplateChatZh appDetail={appDetail} variables={variables} inputs={inputs} />
|
||||
case LanguagesSupported[7]:
|
||||
return <TemplateChatJa appDetail={appDetail} variables={variables} inputs={inputs} />
|
||||
default:
|
||||
return <TemplateChatEn appDetail={appDetail} variables={variables} inputs={inputs} />
|
||||
}
|
||||
}
|
||||
if (appDetail?.mode === 'advanced-chat') {
|
||||
switch (locale) {
|
||||
case LanguagesSupported[1]:
|
||||
return <TemplateAdvancedChatZh appDetail={appDetail} variables={variables} inputs={inputs} />
|
||||
case LanguagesSupported[7]:
|
||||
return <TemplateAdvancedChatJa appDetail={appDetail} variables={variables} inputs={inputs} />
|
||||
default:
|
||||
return <TemplateAdvancedChatEn appDetail={appDetail} variables={variables} inputs={inputs} />
|
||||
}
|
||||
}
|
||||
if (appDetail?.mode === 'workflow') {
|
||||
switch (locale) {
|
||||
case LanguagesSupported[1]:
|
||||
return <TemplateWorkflowZh appDetail={appDetail} variables={variables} inputs={inputs} />
|
||||
case LanguagesSupported[7]:
|
||||
return <TemplateWorkflowJa appDetail={appDetail} variables={variables} inputs={inputs} />
|
||||
default:
|
||||
return <TemplateWorkflowEn appDetail={appDetail} variables={variables} inputs={inputs} />
|
||||
}
|
||||
}
|
||||
if (appDetail?.mode === 'completion') {
|
||||
switch (locale) {
|
||||
case LanguagesSupported[1]:
|
||||
return <TemplateZh appDetail={appDetail} variables={variables} inputs={inputs} />
|
||||
case LanguagesSupported[7]:
|
||||
return <TemplateJa appDetail={appDetail} variables={variables} inputs={inputs} />
|
||||
default:
|
||||
return <TemplateEn appDetail={appDetail} variables={variables} inputs={inputs} />
|
||||
}
|
||||
}
|
||||
return null
|
||||
}, [appDetail, locale, variables, inputs])
|
||||
|
||||
return (
|
||||
<div className="flex">
|
||||
<div className={`fixed right-8 top-32 z-10 transition-all ${isTocExpanded ? 'w-64' : 'w-10'}`}>
|
||||
<div className={`fixed right-20 top-32 z-10 transition-all duration-150 ease-out ${isTocExpanded ? 'w-[280px]' : 'w-11'}`}>
|
||||
{isTocExpanded
|
||||
? (
|
||||
<nav className="toc max-h-[calc(100vh-150px)] w-full overflow-y-auto rounded-lg border border-components-panel-border bg-components-panel-bg p-4 shadow-md">
|
||||
<div className="mb-4 flex items-center justify-between">
|
||||
<h3 className="text-lg font-semibold text-text-primary">{t('appApi.develop.toc')}</h3>
|
||||
<nav className="toc flex max-h-[calc(100vh-150px)] w-full flex-col overflow-hidden rounded-xl border-[0.5px] border-components-panel-border bg-background-default-hover shadow-xl">
|
||||
<div className="relative z-10 flex items-center justify-between border-b border-components-panel-border-subtle bg-background-default-hover px-4 py-2.5">
|
||||
<span className="text-xs font-medium uppercase tracking-wide text-text-tertiary">
|
||||
{t('appApi.develop.toc')}
|
||||
</span>
|
||||
<button
|
||||
onClick={() => setIsTocExpanded(false)}
|
||||
className="text-text-tertiary hover:text-text-secondary"
|
||||
className="group flex h-6 w-6 items-center justify-center rounded-md transition-colors hover:bg-state-base-hover"
|
||||
aria-label="Close"
|
||||
>
|
||||
✕
|
||||
<RiCloseLine className="h-3 w-3 text-text-quaternary transition-colors group-hover:text-text-secondary" />
|
||||
</button>
|
||||
</div>
|
||||
<ul className="space-y-2">
|
||||
{toc.map((item, index) => (
|
||||
<li key={index}>
|
||||
<a
|
||||
href={item.href}
|
||||
className="text-text-secondary transition-colors duration-200 hover:text-text-primary hover:underline"
|
||||
onClick={e => handleTocClick(e, item)}
|
||||
>
|
||||
{item.text}
|
||||
</a>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
|
||||
<div className="from-components-panel-border-subtle/20 pointer-events-none absolute left-0 right-0 top-[41px] z-10 h-2 bg-gradient-to-b to-transparent"></div>
|
||||
<div className="pointer-events-none absolute left-0 right-0 top-[43px] z-10 h-3 bg-gradient-to-b from-background-default-hover to-transparent"></div>
|
||||
|
||||
<div className="relative flex-1 overflow-y-auto px-3 py-3 pt-1">
|
||||
{toc.length === 0 ? (
|
||||
<div className="px-2 py-8 text-center text-xs text-text-quaternary">
|
||||
{t('appApi.develop.noContent')}
|
||||
</div>
|
||||
) : (
|
||||
<ul className="space-y-0.5">
|
||||
{toc.map((item, index) => {
|
||||
const isActive = activeSection === item.href.replace('#', '')
|
||||
return (
|
||||
<li key={index}>
|
||||
<a
|
||||
href={item.href}
|
||||
onClick={e => handleTocClick(e, item)}
|
||||
className={cn(
|
||||
'group relative flex items-center rounded-md px-3 py-2 text-[13px] transition-all duration-200',
|
||||
isActive
|
||||
? 'bg-state-base-hover font-medium text-text-primary'
|
||||
: 'text-text-tertiary hover:bg-state-base-hover hover:text-text-secondary',
|
||||
)}
|
||||
>
|
||||
<span
|
||||
className={cn(
|
||||
'mr-2 h-1.5 w-1.5 rounded-full transition-all duration-200',
|
||||
isActive
|
||||
? 'scale-100 bg-text-accent'
|
||||
: 'scale-75 bg-components-panel-border',
|
||||
)}
|
||||
/>
|
||||
<span className="flex-1 truncate">
|
||||
{item.text}
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
)
|
||||
})}
|
||||
</ul>
|
||||
)}
|
||||
</div>
|
||||
|
||||
<div className="pointer-events-none absolute bottom-0 left-0 right-0 z-10 h-4 rounded-b-xl bg-gradient-to-t from-background-default-hover to-transparent"></div>
|
||||
</nav>
|
||||
)
|
||||
: (
|
||||
<button
|
||||
onClick={() => setIsTocExpanded(true)}
|
||||
className="flex h-10 w-10 items-center justify-center rounded-full border border-components-panel-border bg-components-button-secondary-bg shadow-md transition-colors duration-200 hover:bg-components-button-secondary-bg-hover"
|
||||
className="group flex h-11 w-11 items-center justify-center rounded-full border-[0.5px] border-components-panel-border bg-components-panel-bg shadow-lg transition-all duration-150 hover:bg-background-default-hover hover:shadow-xl"
|
||||
aria-label="Open table of contents"
|
||||
>
|
||||
<RiListUnordered className="h-6 w-6 text-components-button-secondary-text" />
|
||||
<RiListUnordered className="h-5 w-5 text-text-tertiary transition-colors group-hover:text-text-secondary" />
|
||||
</button>
|
||||
)}
|
||||
</div>
|
||||
<article className={cn('prose-xl prose', theme === Theme.dark && 'prose-invert')} >
|
||||
{(appDetail?.mode === 'chat' || appDetail?.mode === 'agent-chat') && (
|
||||
(() => {
|
||||
switch (locale) {
|
||||
case LanguagesSupported[1]:
|
||||
return <TemplateChatZh appDetail={appDetail} variables={variables} inputs={inputs} />
|
||||
case LanguagesSupported[7]:
|
||||
return <TemplateChatJa appDetail={appDetail} variables={variables} inputs={inputs} />
|
||||
default:
|
||||
return <TemplateChatEn appDetail={appDetail} variables={variables} inputs={inputs} />
|
||||
}
|
||||
})()
|
||||
)}
|
||||
{appDetail?.mode === 'advanced-chat' && (
|
||||
(() => {
|
||||
switch (locale) {
|
||||
case LanguagesSupported[1]:
|
||||
return <TemplateAdvancedChatZh appDetail={appDetail} variables={variables} inputs={inputs} />
|
||||
case LanguagesSupported[7]:
|
||||
return <TemplateAdvancedChatJa appDetail={appDetail} variables={variables} inputs={inputs} />
|
||||
default:
|
||||
return <TemplateAdvancedChatEn appDetail={appDetail} variables={variables} inputs={inputs} />
|
||||
}
|
||||
})()
|
||||
)}
|
||||
{appDetail?.mode === 'workflow' && (
|
||||
(() => {
|
||||
switch (locale) {
|
||||
case LanguagesSupported[1]:
|
||||
return <TemplateWorkflowZh appDetail={appDetail} variables={variables} inputs={inputs} />
|
||||
case LanguagesSupported[7]:
|
||||
return <TemplateWorkflowJa appDetail={appDetail} variables={variables} inputs={inputs} />
|
||||
default:
|
||||
return <TemplateWorkflowEn appDetail={appDetail} variables={variables} inputs={inputs} />
|
||||
}
|
||||
})()
|
||||
)}
|
||||
{appDetail?.mode === 'completion' && (
|
||||
(() => {
|
||||
switch (locale) {
|
||||
case LanguagesSupported[1]:
|
||||
return <TemplateZh appDetail={appDetail} variables={variables} inputs={inputs} />
|
||||
case LanguagesSupported[7]:
|
||||
return <TemplateJa appDetail={appDetail} variables={variables} inputs={inputs} />
|
||||
default:
|
||||
return <TemplateEn appDetail={appDetail} variables={variables} inputs={inputs} />
|
||||
}
|
||||
})()
|
||||
)}
|
||||
<article className={cn('prose-xl prose', theme === Theme.dark && 'prose-invert')}>
|
||||
{Template}
|
||||
</article>
|
||||
</div>
|
||||
)
|
||||
|
||||
@ -448,7 +448,7 @@ import { Row, Col, Properties, Property, Heading, SubProperty, Paragraph } from
|
||||
url='/text-to-audio'
|
||||
method='POST'
|
||||
title='テキストから音声'
|
||||
name='#audio'
|
||||
name='#text-to-audio'
|
||||
/>
|
||||
<Row>
|
||||
<Col>
|
||||
|
||||
@ -423,7 +423,7 @@ import { Row, Col, Properties, Property, Heading, SubProperty } from '../md.tsx'
|
||||
url='/text-to-audio'
|
||||
method='POST'
|
||||
title='文字转语音'
|
||||
name='#audio'
|
||||
name='#text-to-audio'
|
||||
/>
|
||||
<Row>
|
||||
<Col>
|
||||
|
||||
@ -1136,7 +1136,7 @@ Chat applications support session persistence, allowing previous chat history to
|
||||
url='/audio-to-text'
|
||||
method='POST'
|
||||
title='Speech to Text'
|
||||
name='#audio'
|
||||
name='#audio-to-text'
|
||||
/>
|
||||
<Row>
|
||||
<Col>
|
||||
@ -1187,7 +1187,7 @@ Chat applications support session persistence, allowing previous chat history to
|
||||
url='/text-to-audio'
|
||||
method='POST'
|
||||
title='Text to Audio'
|
||||
name='#audio'
|
||||
name='#text-to-audio'
|
||||
/>
|
||||
<Row>
|
||||
<Col>
|
||||
|
||||
@ -1136,7 +1136,7 @@ import { Row, Col, Properties, Property, Heading, SubProperty, Paragraph } from
|
||||
url='/audio-to-text'
|
||||
method='POST'
|
||||
title='音声からテキストへ'
|
||||
name='#audio'
|
||||
name='#audio-to-text'
|
||||
/>
|
||||
<Row>
|
||||
<Col>
|
||||
@ -1187,7 +1187,7 @@ import { Row, Col, Properties, Property, Heading, SubProperty, Paragraph } from
|
||||
url='/text-to-audio'
|
||||
method='POST'
|
||||
title='テキストから音声へ'
|
||||
name='#audio'
|
||||
name='#text-to-audio'
|
||||
/>
|
||||
<Row>
|
||||
<Col>
|
||||
|
||||
@ -1174,7 +1174,7 @@ import { Row, Col, Properties, Property, Heading, SubProperty } from '../md.tsx'
|
||||
url='/audio-to-text'
|
||||
method='POST'
|
||||
title='语音转文字'
|
||||
name='#audio'
|
||||
name='#audio-to-text'
|
||||
/>
|
||||
<Row>
|
||||
<Col>
|
||||
@ -1222,7 +1222,7 @@ import { Row, Col, Properties, Property, Heading, SubProperty } from '../md.tsx'
|
||||
url='/text-to-audio'
|
||||
method='POST'
|
||||
title='文字转语音'
|
||||
name='#audio'
|
||||
name='#text-to-audio'
|
||||
/>
|
||||
<Row>
|
||||
<Col>
|
||||
|
||||
@ -1170,7 +1170,7 @@ Chat applications support session persistence, allowing previous chat history to
|
||||
url='/audio-to-text'
|
||||
method='POST'
|
||||
title='Speech to Text'
|
||||
name='#audio'
|
||||
name='#audio-to-text'
|
||||
/>
|
||||
<Row>
|
||||
<Col>
|
||||
@ -1221,7 +1221,7 @@ Chat applications support session persistence, allowing previous chat history to
|
||||
url='/text-to-audio'
|
||||
method='POST'
|
||||
title='Text to Audio'
|
||||
name='#audio'
|
||||
name='#text-to-audio'
|
||||
/>
|
||||
<Row>
|
||||
<Col>
|
||||
|
||||
@ -1169,7 +1169,7 @@ import { Row, Col, Properties, Property, Heading, SubProperty, Paragraph } from
|
||||
url='/audio-to-text'
|
||||
method='POST'
|
||||
title='音声からテキストへ'
|
||||
name='#audio'
|
||||
name='#audio-to-text'
|
||||
/>
|
||||
<Row>
|
||||
<Col>
|
||||
@ -1220,7 +1220,7 @@ import { Row, Col, Properties, Property, Heading, SubProperty, Paragraph } from
|
||||
url='/text-to-audio'
|
||||
method='POST'
|
||||
title='テキストから音声へ'
|
||||
name='#audio'
|
||||
name='#text-to-audio'
|
||||
/>
|
||||
<Row>
|
||||
<Col>
|
||||
|
||||
@ -1185,7 +1185,7 @@ import { Row, Col, Properties, Property, Heading, SubProperty } from '../md.tsx'
|
||||
url='/audio-to-text'
|
||||
method='POST'
|
||||
title='语音转文字'
|
||||
name='#audio'
|
||||
name='#audio-to-text'
|
||||
/>
|
||||
<Row>
|
||||
<Col>
|
||||
@ -1233,7 +1233,7 @@ import { Row, Col, Properties, Property, Heading, SubProperty } from '../md.tsx'
|
||||
url='/text-to-audio'
|
||||
method='POST'
|
||||
title='文字转语音'
|
||||
name='#audio'
|
||||
name='#text-to-audio'
|
||||
/>
|
||||
<Row>
|
||||
<Col>
|
||||
|
||||
@ -90,7 +90,7 @@ const DebugAndPreview = () => {
|
||||
<div
|
||||
ref={containerRef}
|
||||
className={cn(
|
||||
'relative flex h-full flex-col rounded-l-2xl border border-r-0 border-components-panel-border bg-chatbot-bg shadow-xl',
|
||||
'relative flex h-full flex-col rounded-l-2xl border border-r-0 border-components-panel-border bg-components-panel-bg shadow-xl',
|
||||
)}
|
||||
style={{ width: `${panelWidth}px` }}
|
||||
>
|
||||
|
||||
@ -19,7 +19,7 @@ const ShortcutsName = ({
|
||||
keys.map(key => (
|
||||
<div
|
||||
key={key}
|
||||
className='system-kbd flex h-4 w-4 items-center justify-center rounded-[4px] bg-components-kbd-bg-gray capitalize'
|
||||
className='system-kbd flex h-4 min-w-4 items-center justify-center rounded-[4px] bg-components-kbd-bg-gray capitalize'
|
||||
>
|
||||
{getKeyboardKeyNameBySystem(key)}
|
||||
</div>
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
@use '../../themes/light';
|
||||
@use '../../themes/dark';
|
||||
@use '../../themes/markdown-light';
|
||||
@use '../../themes/markdown-dark';
|
||||
|
||||
|
||||
@ -197,7 +197,7 @@ const translation = {
|
||||
after: '',
|
||||
},
|
||||
},
|
||||
contentEnableLabel: 'Moderater Inhalt aktiviert',
|
||||
contentEnableLabel: 'Inhaltsmoderation aktiviert',
|
||||
},
|
||||
fileUpload: {
|
||||
title: 'Datei-Upload',
|
||||
|
||||
@ -166,6 +166,10 @@ const translation = {
|
||||
description: 'Gibt an, ob das web app Symbol zum Ersetzen 🤖 in der freigegebenen Anwendung verwendet werden soll',
|
||||
},
|
||||
importFromDSLUrlPlaceholder: 'DSL-Link hier einfügen',
|
||||
dslUploader: {
|
||||
button: 'Datei per Drag & Drop ablegen oder',
|
||||
browse: 'Durchsuchen',
|
||||
},
|
||||
duplicate: 'Duplikat',
|
||||
importFromDSL: 'Import von DSL',
|
||||
importDSL: 'DSL-Datei importieren',
|
||||
|
||||
@ -21,6 +21,7 @@ const translation = {
|
||||
uploader: {
|
||||
title: 'Textdatei hochladen',
|
||||
button: 'Dateien und Ordner hierher ziehen oder klicken',
|
||||
buttonSingleFile: 'Datei hierher ziehen oder klicken',
|
||||
browse: 'Durchsuchen',
|
||||
tip: 'Unterstützt {{supportTypes}}. Maximal {{size}}MB pro Datei.',
|
||||
validation: {
|
||||
|
||||
@ -287,6 +287,18 @@ const translation = {
|
||||
zoomTo50: 'Auf 50% vergrößern',
|
||||
zoomTo100: 'Auf 100% vergrößern',
|
||||
zoomToFit: 'An Bildschirm anpassen',
|
||||
selectionAlignment: 'Ausrichtung der Auswahl',
|
||||
alignLeft: 'Links',
|
||||
alignTop: 'Nach oben',
|
||||
distributeVertical: 'Vertikaler Raum',
|
||||
alignBottom: 'Unteres',
|
||||
distributeHorizontal: 'Horizontaler Raum',
|
||||
vertical: 'Senkrecht',
|
||||
alignMiddle: 'Mitte',
|
||||
alignCenter: 'Mitte',
|
||||
alignRight: 'Rechts',
|
||||
alignNodes: 'Knoten ausrichten',
|
||||
horizontal: 'Horizontal',
|
||||
},
|
||||
panel: {
|
||||
userInputField: 'Benutzereingabefeld',
|
||||
|
||||
@ -163,7 +163,7 @@ const translation = {
|
||||
moderation: {
|
||||
title: 'Content moderation',
|
||||
description: 'Secure model output by using moderation API or maintaining a sensitive word list.',
|
||||
contentEnableLabel: 'Enabled moderate content',
|
||||
contentEnableLabel: 'Content moderation enabled',
|
||||
allEnabled: 'INPUT & OUTPUT',
|
||||
inputEnabled: 'INPUT',
|
||||
outputEnabled: 'OUTPUT',
|
||||
|
||||
@ -23,6 +23,10 @@ const translation = {
|
||||
importFromDSLFile: 'From DSL file',
|
||||
importFromDSLUrl: 'From URL',
|
||||
importFromDSLUrlPlaceholder: 'Paste DSL link here',
|
||||
dslUploader: {
|
||||
button: 'Drag and drop file, or',
|
||||
browse: 'Browse',
|
||||
},
|
||||
deleteAppConfirmTitle: 'Delete this app?',
|
||||
deleteAppConfirmContent:
|
||||
'Deleting the app is irreversible. Users will no longer be able to access your app, and all prompt configurations and logs will be permanently deleted.',
|
||||
|
||||
@ -36,6 +36,7 @@ const translation = {
|
||||
uploader: {
|
||||
title: 'Upload file',
|
||||
button: 'Drag and drop file or folder, or',
|
||||
buttonSingleFile: 'Drag and drop file, or',
|
||||
browse: 'Browse',
|
||||
tip: 'Supports {{supportTypes}}. Max {{batchCount}} in a batch and {{size}} MB each.',
|
||||
validation: {
|
||||
|
||||
@ -197,7 +197,7 @@ const translation = {
|
||||
after: '',
|
||||
},
|
||||
},
|
||||
contentEnableLabel: 'Contenido moderado habilitado',
|
||||
contentEnableLabel: 'Moderación de contenido habilitada',
|
||||
},
|
||||
fileUpload: {
|
||||
title: 'Subida de archivos',
|
||||
|
||||
@ -170,6 +170,10 @@ const translation = {
|
||||
},
|
||||
importFromDSLUrl: 'URL de origen',
|
||||
importFromDSLUrlPlaceholder: 'Pegar enlace DSL aquí',
|
||||
dslUploader: {
|
||||
button: 'Arrastrar y soltar archivo, o',
|
||||
browse: 'Examinar',
|
||||
},
|
||||
importFromDSL: 'Importar desde DSL',
|
||||
importFromDSLFile: 'Desde el archivo DSL',
|
||||
mermaid: {
|
||||
|
||||
@ -26,6 +26,7 @@ const translation = {
|
||||
uploader: {
|
||||
title: 'Cargar archivo',
|
||||
button: 'Arrastre y suelte archivos o carpetas, o',
|
||||
buttonSingleFile: 'Arrastre y suelte archivo, o',
|
||||
browse: 'Buscar',
|
||||
tip: 'Soporta {{supportTypes}}. Máximo {{size}}MB cada uno.',
|
||||
validation: {
|
||||
|
||||
@ -287,6 +287,18 @@ const translation = {
|
||||
zoomTo50: 'Zoom al 50%',
|
||||
zoomTo100: 'Zoom al 100%',
|
||||
zoomToFit: 'Ajustar al tamaño',
|
||||
alignTop: 'Arriba',
|
||||
alignBottom: 'Fondo',
|
||||
alignNodes: 'Alinear nodos',
|
||||
alignCenter: 'Centro',
|
||||
selectionAlignment: 'Alineación de selección',
|
||||
horizontal: 'Horizontal',
|
||||
distributeHorizontal: 'Espaciar horizontalmente',
|
||||
vertical: 'Vertical',
|
||||
distributeVertical: 'Espaciar verticalmente',
|
||||
alignMiddle: 'medio',
|
||||
alignLeft: 'izquierdo',
|
||||
alignRight: 'derecho',
|
||||
},
|
||||
panel: {
|
||||
userInputField: 'Campo de entrada del usuario',
|
||||
|
||||
@ -197,7 +197,7 @@ const translation = {
|
||||
after: '',
|
||||
},
|
||||
},
|
||||
contentEnableLabel: 'محتوای متوسط فعال شده است',
|
||||
contentEnableLabel: 'مدیریت محتوا فعال شده است',
|
||||
},
|
||||
generate: {
|
||||
title: 'تولید کننده دستورالعمل',
|
||||
|
||||
@ -19,6 +19,10 @@ const translation = {
|
||||
importFromDSLFile: 'از فایل DSL',
|
||||
importFromDSLUrl: 'از URL',
|
||||
importFromDSLUrlPlaceholder: 'لینک DSL را اینجا بچسبانید',
|
||||
dslUploader: {
|
||||
button: 'فایل را بکشید و رها کنید، یا',
|
||||
browse: 'مرور',
|
||||
},
|
||||
deleteAppConfirmTitle: 'آیا این برنامه حذف شود؟',
|
||||
deleteAppConfirmContent:
|
||||
'حذف برنامه غیرقابل برگشت است. کاربران دیگر قادر به دسترسی به برنامه شما نخواهند بود و تمام تنظیمات و گزارشات درخواستها به صورت دائم حذف خواهند شد.',
|
||||
|
||||
@ -28,6 +28,7 @@ const translation = {
|
||||
uploader: {
|
||||
title: 'بارگذاری فایل',
|
||||
button: 'فایل ها یا پوشه ها را بکشید و رها کنید یا',
|
||||
buttonSingleFile: 'فایل را بکشید و رها کنید یا',
|
||||
browse: 'مرور',
|
||||
tip: 'پشتیبانی از {{supportTypes}}. حداکثر {{size}}MB هر کدام.',
|
||||
validation: {
|
||||
|
||||
@ -287,6 +287,18 @@ const translation = {
|
||||
zoomTo50: 'بزرگنمایی به 50%',
|
||||
zoomTo100: 'بزرگنمایی به 100%',
|
||||
zoomToFit: 'تناسب با اندازه',
|
||||
horizontal: 'افقی',
|
||||
alignBottom: 'پایین',
|
||||
alignRight: 'راست',
|
||||
vertical: 'عمودی',
|
||||
alignCenter: 'مرکز',
|
||||
alignLeft: 'چپ',
|
||||
distributeVertical: 'فضا عمودی',
|
||||
distributeHorizontal: 'فضا به صورت افقی',
|
||||
alignTop: 'بالا',
|
||||
alignNodes: 'تراز کردن گره ها',
|
||||
selectionAlignment: 'تراز انتخاب',
|
||||
alignMiddle: 'میانه',
|
||||
},
|
||||
panel: {
|
||||
userInputField: 'فیلد ورودی کاربر',
|
||||
|
||||
@ -197,7 +197,7 @@ const translation = {
|
||||
after: 'Sorry, but you didn\'t provide a text to translate. Could you please provide the text?',
|
||||
},
|
||||
},
|
||||
contentEnableLabel: 'Activation du contenu modéré',
|
||||
contentEnableLabel: 'Modération de contenu activée',
|
||||
},
|
||||
fileUpload: {
|
||||
title: 'Téléchargement de fichier',
|
||||
@ -242,7 +242,7 @@ const translation = {
|
||||
'Veuillez attendre que la réponse à la tâche en lot soit terminée.',
|
||||
notSelectModel: 'Veuillez choisir un modèle',
|
||||
waitForImgUpload: 'Veuillez attendre que l\'image soit téléchargée',
|
||||
waitForFileUpload: 'Veuillez patienter jusqu’à ce que le(s) fichier(s) soit/les fichiers à télécharger',
|
||||
waitForFileUpload: 'Veuillez patienter pendant le téléchargement du/des fichier(s)',
|
||||
},
|
||||
chatSubTitle: 'Instructions',
|
||||
completionSubTitle: 'Indicatif de Prompt',
|
||||
|
||||
@ -169,7 +169,11 @@ const translation = {
|
||||
descriptionInExplore: 'Utilisation de l’icône web app pour remplacer 🤖 dans Explore',
|
||||
},
|
||||
importFromDSLUrlPlaceholder: 'Collez le lien DSL ici',
|
||||
importFromDSL: 'Importation à partir d’une DSL',
|
||||
dslUploader: {
|
||||
button: 'Glisser-déposer un fichier, ou',
|
||||
browse: 'Parcourir',
|
||||
},
|
||||
importFromDSL: 'Importation à partir d\'une DSL',
|
||||
importFromDSLUrl: 'À partir de l’URL',
|
||||
importFromDSLFile: 'À partir d’un fichier DSL',
|
||||
mermaid: {
|
||||
|
||||
@ -23,6 +23,7 @@ const translation = {
|
||||
uploader: {
|
||||
title: 'Télécharger le fichier texte',
|
||||
button: 'Faites glisser et déposez des fichiers ou des dossiers, ou',
|
||||
buttonSingleFile: 'Faites glisser et déposez un fichier, ou',
|
||||
browse: 'Parcourir',
|
||||
tip: 'Prend en charge {{supportTypes}}. Max {{size}}MB chacun.',
|
||||
validation: {
|
||||
|
||||
@ -287,6 +287,18 @@ const translation = {
|
||||
zoomTo50: 'Zoomer à 50%',
|
||||
zoomTo100: 'Zoomer à 100%',
|
||||
zoomToFit: 'Zoomer pour ajuster',
|
||||
alignBottom: 'Fond',
|
||||
alignLeft: 'Gauche',
|
||||
alignCenter: 'Centre',
|
||||
alignTop: 'Retour au début',
|
||||
alignNodes: 'Aligner les nœuds',
|
||||
distributeHorizontal: 'Espace horizontal',
|
||||
alignMiddle: 'Milieu',
|
||||
horizontal: 'Horizontal',
|
||||
selectionAlignment: 'Alignement de la sélection',
|
||||
alignRight: 'Droite',
|
||||
vertical: 'Vertical',
|
||||
distributeVertical: 'Espace vertical',
|
||||
},
|
||||
panel: {
|
||||
userInputField: 'Champ de saisie de l\'utilisateur',
|
||||
|
||||
@ -213,7 +213,7 @@ const translation = {
|
||||
after: 'में कॉन्फ़िगर किए गए ओपनएआई एपीआई कुंजी की आवश्यकता होती है।',
|
||||
},
|
||||
},
|
||||
contentEnableLabel: 'मध्य स्तर की सामग्री सक्षम की गई',
|
||||
contentEnableLabel: 'सामग्री मॉडरेशन सक्षम है',
|
||||
},
|
||||
fileUpload: {
|
||||
numberLimit: 'मैक्स अपलोड करता है',
|
||||
|
||||
@ -172,6 +172,10 @@ const translation = {
|
||||
importFromDSLUrl: 'यूआरएल से',
|
||||
importFromDSL: 'DSL से आयात करें',
|
||||
importFromDSLUrlPlaceholder: 'डीएसएल लिंक यहां पेस्ट करें',
|
||||
dslUploader: {
|
||||
button: 'फ़ाइल खींचकर छोड़ें, या',
|
||||
browse: 'ब्राउज़ करें',
|
||||
},
|
||||
mermaid: {
|
||||
handDrawn: 'हाथ खींचा',
|
||||
classic: 'क्लासिक',
|
||||
|
||||
@ -28,6 +28,7 @@ const translation = {
|
||||
uploader: {
|
||||
title: 'फ़ाइल अपलोड करें',
|
||||
button: 'फ़ाइलों या फ़ोल्डरों को खींचें और छोड़ें, या',
|
||||
buttonSingleFile: 'फ़ाइल को खींचें और छोड़ें, या',
|
||||
browse: 'ब्राउज़ करें',
|
||||
tip: 'समर्थित {{supportTypes}}। प्रत्येक अधिकतम {{size}}MB।',
|
||||
validation: {
|
||||
|
||||
@ -298,6 +298,18 @@ const translation = {
|
||||
zoomTo50: '50% पर ज़ूम करें',
|
||||
zoomTo100: '100% पर ज़ूम करें',
|
||||
zoomToFit: 'फिट करने के लिए ज़ूम करें',
|
||||
alignRight: 'सही',
|
||||
alignLeft: 'बाईं ओर',
|
||||
alignTop: 'शीर्ष',
|
||||
horizontal: 'क्षैतिज',
|
||||
alignNodes: 'नोड्स को संरेखित करें',
|
||||
selectionAlignment: 'चयन संरेखण',
|
||||
alignCenter: 'केंद्र',
|
||||
vertical: 'ऊर्ध्वाधर',
|
||||
distributeHorizontal: 'क्षैतिज स्पेस',
|
||||
alignBottom: 'तल',
|
||||
distributeVertical: 'अंतरिक्ष को वर्टिकल रूप से',
|
||||
alignMiddle: 'मध्य',
|
||||
},
|
||||
panel: {
|
||||
userInputField: 'उपयोगकर्ता इनपुट फ़ील्ड',
|
||||
|
||||
@ -215,7 +215,7 @@ const translation = {
|
||||
after: '',
|
||||
},
|
||||
},
|
||||
contentEnableLabel: 'Abilitato il contenuto moderato',
|
||||
contentEnableLabel: 'Moderazione dei contenuti abilitata',
|
||||
},
|
||||
fileUpload: {
|
||||
title: 'Caricamento File',
|
||||
|
||||
@ -178,6 +178,10 @@ const translation = {
|
||||
importFromDSLFile: 'Da file DSL',
|
||||
importFromDSL: 'Importazione da DSL',
|
||||
importFromDSLUrlPlaceholder: 'Incolla qui il link DSL',
|
||||
dslUploader: {
|
||||
button: 'Trascina e rilascia il file, o',
|
||||
browse: 'Sfoglia',
|
||||
},
|
||||
mermaid: {
|
||||
handDrawn: 'Disegnato a mano',
|
||||
classic: 'Classico',
|
||||
|
||||
@ -28,6 +28,7 @@ const translation = {
|
||||
uploader: {
|
||||
title: 'Carica file',
|
||||
button: 'Trascina e rilascia file o cartelle, oppure',
|
||||
buttonSingleFile: 'Trascina e rilascia un file, oppure',
|
||||
browse: 'Sfoglia',
|
||||
tip: 'Supporta {{supportTypes}}. Max {{size}}MB ciascuno.',
|
||||
validation: {
|
||||
|
||||
@ -301,6 +301,18 @@ const translation = {
|
||||
zoomTo50: 'Zoom al 50%',
|
||||
zoomTo100: 'Zoom al 100%',
|
||||
zoomToFit: 'Zoom per Adattare',
|
||||
alignRight: 'A destra',
|
||||
selectionAlignment: 'Allineamento della selezione',
|
||||
alignBottom: 'Fondoschiena',
|
||||
alignTop: 'In alto',
|
||||
vertical: 'Verticale',
|
||||
alignCenter: 'Centro',
|
||||
alignLeft: 'A sinistra',
|
||||
alignMiddle: 'Mezzo',
|
||||
horizontal: 'Orizzontale',
|
||||
alignNodes: 'Allinea nodi',
|
||||
distributeHorizontal: 'Spazia orizzontalmente',
|
||||
distributeVertical: 'Spazia verticalmente',
|
||||
},
|
||||
panel: {
|
||||
userInputField: 'Campo di Input Utente',
|
||||
|
||||
@ -163,7 +163,7 @@ const translation = {
|
||||
moderation: {
|
||||
title: 'コンテンツのモデレーション',
|
||||
description: 'モデレーション API を使用するか、機密語リストを維持することで、モデルの出力を安全にします。',
|
||||
contentEnableLabel: 'モデレート・コンテンツを有効にする',
|
||||
contentEnableLabel: 'コンテンツモデレーションが有効',
|
||||
allEnabled: '入力/出力コンテンツが有効になっています',
|
||||
inputEnabled: '入力コンテンツが有効になっています',
|
||||
outputEnabled: '出力コンテンツが有効になっています',
|
||||
|
||||
@ -23,6 +23,10 @@ const translation = {
|
||||
importFromDSLFile: 'DSL ファイルから',
|
||||
importFromDSLUrl: 'URL から',
|
||||
importFromDSLUrlPlaceholder: 'DSL リンクをここに貼り付けます',
|
||||
dslUploader: {
|
||||
button: 'ファイルをドラッグ&ドロップするか、',
|
||||
browse: '参照',
|
||||
},
|
||||
deleteAppConfirmTitle: 'このアプリを削除しますか?',
|
||||
deleteAppConfirmContent:
|
||||
'アプリを削除すると、元に戻すことはできません。他のユーザーはもはやこのアプリにアクセスできず、すべてのプロンプトの設定とログが永久に削除されます。',
|
||||
|
||||
@ -31,6 +31,7 @@ const translation = {
|
||||
uploader: {
|
||||
title: 'テキストファイルをアップロード',
|
||||
button: 'ファイルまたはフォルダをドラッグアンドドロップする',
|
||||
buttonSingleFile: 'ファイルをドラッグアンドドロップする',
|
||||
browse: '参照',
|
||||
tip: '{{supportTypes}}をサポートしています。1 つあたりの最大サイズは{{size}}MB です。',
|
||||
validation: {
|
||||
|
||||
@ -287,6 +287,18 @@ const translation = {
|
||||
zoomTo50: '50% サイズ',
|
||||
zoomTo100: '等倍表示',
|
||||
zoomToFit: '画面に合わせる',
|
||||
horizontal: '横',
|
||||
alignBottom: '底',
|
||||
alignNodes: 'ノードを整列させる',
|
||||
vertical: '垂直',
|
||||
alignLeft: '左',
|
||||
alignTop: 'トップ',
|
||||
alignRight: '右',
|
||||
alignMiddle: '中間',
|
||||
distributeVertical: '垂直にスペースを',
|
||||
alignCenter: 'センター',
|
||||
selectionAlignment: '選択の整列',
|
||||
distributeHorizontal: '空間を水平方向に',
|
||||
},
|
||||
variableReference: {
|
||||
noAvailableVars: '利用可能な変数がありません',
|
||||
|
||||
@ -197,7 +197,7 @@ const translation = {
|
||||
after: '에 OpenAI API 키가 설정되어 있어야 합니다.',
|
||||
},
|
||||
},
|
||||
contentEnableLabel: '중간 콘텐츠 사용',
|
||||
contentEnableLabel: '콘텐츠 모더레이션이 활성화됨',
|
||||
},
|
||||
fileUpload: {
|
||||
title: '파일 업로드',
|
||||
|
||||
@ -189,6 +189,10 @@ const translation = {
|
||||
importFromDSLFile: 'DSL 파일에서',
|
||||
importFromDSLUrl: 'URL 에서',
|
||||
importFromDSLUrlPlaceholder: '여기에 DSL 링크 붙여 넣기',
|
||||
dslUploader: {
|
||||
button: '파일을 드래그 앤 드롭하거나',
|
||||
browse: '찾아보기',
|
||||
},
|
||||
mermaid: {
|
||||
handDrawn: '손으로 그린',
|
||||
classic: '고전',
|
||||
|
||||
@ -21,6 +21,7 @@ const translation = {
|
||||
uploader: {
|
||||
title: '텍스트 파일 업로드',
|
||||
button: '파일이나 폴더를 끌어서 놓기',
|
||||
buttonSingleFile: '파일을 끌어서 놓기',
|
||||
browse: '찾아보기',
|
||||
tip: '{{supportTypes}}을 (를) 지원합니다. 파일당 최대 크기는 {{size}}MB 입니다.',
|
||||
validation: {
|
||||
|
||||
@ -308,6 +308,18 @@ const translation = {
|
||||
zoomTo50: '50% 로 확대',
|
||||
zoomTo100: '100% 로 확대',
|
||||
zoomToFit: '화면에 맞게 확대',
|
||||
alignCenter: '중',
|
||||
alignRight: '오른쪽',
|
||||
alignLeft: '왼쪽',
|
||||
vertical: '세로',
|
||||
alignTop: '맨 위로',
|
||||
alignMiddle: '중간',
|
||||
alignNodes: '노드 정렬',
|
||||
distributeVertical: '수직 공간',
|
||||
horizontal: '가로',
|
||||
selectionAlignment: '선택 정렬',
|
||||
alignBottom: '밑바닥',
|
||||
distributeHorizontal: '수평 공간',
|
||||
},
|
||||
panel: {
|
||||
userInputField: '사용자 입력 필드',
|
||||
|
||||
@ -173,6 +173,10 @@ const translation = {
|
||||
importFromDSLUrl: 'Z adresu URL',
|
||||
importFromDSLFile: 'Z pliku DSL',
|
||||
importFromDSLUrlPlaceholder: 'Wklej tutaj link DSL',
|
||||
dslUploader: {
|
||||
button: 'Przeciągnij i upuść plik, lub',
|
||||
browse: 'Przeglądaj',
|
||||
},
|
||||
mermaid: {
|
||||
handDrawn: 'Ręcznie rysowane',
|
||||
classic: 'Klasyczny',
|
||||
|
||||
@ -23,6 +23,7 @@ const translation = {
|
||||
uploader: {
|
||||
title: 'Prześlij plik tekstowy',
|
||||
button: 'Przeciągnij i upuść pliki lub foldery lub',
|
||||
buttonSingleFile: 'Przeciągnij i upuść plik lub',
|
||||
browse: 'Przeglądaj',
|
||||
tip: 'Obsługuje {{supportTypes}}. Maksymalnie {{size}}MB każdy.',
|
||||
validation: {
|
||||
|
||||
@ -287,6 +287,18 @@ const translation = {
|
||||
zoomTo50: 'Powiększ do 50%',
|
||||
zoomTo100: 'Powiększ do 100%',
|
||||
zoomToFit: 'Dopasuj do ekranu',
|
||||
alignMiddle: 'Środek',
|
||||
alignTop: 'Do góry',
|
||||
distributeHorizontal: 'Odstęp w poziomie',
|
||||
alignCenter: 'Centrum',
|
||||
alignRight: 'Prawy',
|
||||
alignNodes: 'Wyrównywanie węzłów',
|
||||
selectionAlignment: 'Wyrównanie zaznaczenia',
|
||||
horizontal: 'Poziomy',
|
||||
distributeVertical: 'Przestrzeń w pionie',
|
||||
alignBottom: 'Dno',
|
||||
alignLeft: 'Lewy',
|
||||
vertical: 'Pionowy',
|
||||
},
|
||||
panel: {
|
||||
userInputField: 'Pole wprowadzania użytkownika',
|
||||
|
||||
@ -197,7 +197,7 @@ const translation = {
|
||||
after: '',
|
||||
},
|
||||
},
|
||||
contentEnableLabel: 'Conteúdo moderado habilitado',
|
||||
contentEnableLabel: 'Moderação de conteúdo habilitada',
|
||||
},
|
||||
fileUpload: {
|
||||
title: 'Upload de Arquivo',
|
||||
|
||||
@ -169,6 +169,10 @@ const translation = {
|
||||
title: 'Use o ícone do web app para substituir 🤖',
|
||||
},
|
||||
importFromDSLUrlPlaceholder: 'Cole o link DSL aqui',
|
||||
dslUploader: {
|
||||
button: 'Arraste e solte o arquivo, ou',
|
||||
browse: 'Navegar',
|
||||
},
|
||||
importFromDSLUrl: 'Do URL',
|
||||
importFromDSLFile: 'Do arquivo DSL',
|
||||
importFromDSL: 'Importar de DSL',
|
||||
|
||||
@ -23,6 +23,7 @@ const translation = {
|
||||
uploader: {
|
||||
title: 'Enviar arquivo de texto',
|
||||
button: 'Arraste e solte arquivos ou pastas, ou',
|
||||
buttonSingleFile: 'Arraste e solte um arquivo, ou',
|
||||
browse: 'Navegar',
|
||||
tip: 'Suporta {{supportTypes}}. Máximo de {{size}}MB cada.',
|
||||
validation: {
|
||||
|
||||
@ -287,6 +287,18 @@ const translation = {
|
||||
zoomTo50: 'Aproximar para 50%',
|
||||
zoomTo100: 'Aproximar para 100%',
|
||||
zoomToFit: 'Aproximar para ajustar',
|
||||
vertical: 'Vertical',
|
||||
alignNodes: 'Alinhar nós',
|
||||
selectionAlignment: 'Alinhamento de seleção',
|
||||
alignLeft: 'Esquerda',
|
||||
alignBottom: 'Fundo',
|
||||
distributeHorizontal: 'Espaço horizontalmente',
|
||||
alignMiddle: 'Meio',
|
||||
alignRight: 'Certo',
|
||||
horizontal: 'Horizontal',
|
||||
distributeVertical: 'Espaço Verticalmente',
|
||||
alignCenter: 'Centro',
|
||||
alignTop: 'Início',
|
||||
},
|
||||
panel: {
|
||||
userInputField: 'Campo de entrada do usuário',
|
||||
|
||||
@ -197,7 +197,7 @@ const translation = {
|
||||
after: '',
|
||||
},
|
||||
},
|
||||
contentEnableLabel: 'Conținut moderat activat',
|
||||
contentEnableLabel: 'Moderarea conținutului activată',
|
||||
},
|
||||
fileUpload: {
|
||||
title: 'Încărcare fișier',
|
||||
|
||||
@ -171,6 +171,10 @@ const translation = {
|
||||
importFromDSL: 'Import din DSL',
|
||||
importFromDSLUrl: 'De la URL',
|
||||
importFromDSLUrlPlaceholder: 'Lipiți linkul DSL aici',
|
||||
dslUploader: {
|
||||
button: 'Trageți și plasați fișierul, sau',
|
||||
browse: 'Răsfoiți',
|
||||
},
|
||||
importFromDSLFile: 'Din fișierul DSL',
|
||||
mermaid: {
|
||||
handDrawn: 'Desenat de mână',
|
||||
|
||||
@ -23,6 +23,7 @@ const translation = {
|
||||
uploader: {
|
||||
title: 'Încărcați fișier text',
|
||||
button: 'Trageți și plasați fișiere sau foldere sau',
|
||||
buttonSingleFile: 'Trageți și plasați un fișier sau',
|
||||
browse: 'Răsfoire',
|
||||
tip: 'Acceptă {{supportTypes}}. Maxim {{size}}MB fiecare.',
|
||||
validation: {
|
||||
|
||||
@ -287,6 +287,18 @@ const translation = {
|
||||
zoomTo50: 'Mărește la 50%',
|
||||
zoomTo100: 'Mărește la 100%',
|
||||
zoomToFit: 'Mărește pentru a se potrivi',
|
||||
horizontal: 'Orizontal',
|
||||
selectionAlignment: 'Alinierea selecției',
|
||||
vertical: 'Vertical',
|
||||
alignRight: 'Dreapta',
|
||||
alignLeft: 'Stânga',
|
||||
alignMiddle: 'Mijloc',
|
||||
distributeVertical: 'Spațiu vertical',
|
||||
alignCenter: 'Centru',
|
||||
distributeHorizontal: 'Spațiu orizontal',
|
||||
alignBottom: 'Fund',
|
||||
alignTop: 'Culme',
|
||||
alignNodes: 'Alinierea nodurilor',
|
||||
},
|
||||
panel: {
|
||||
userInputField: 'Câmp de introducere utilizator',
|
||||
|
||||
@ -197,7 +197,7 @@ const translation = {
|
||||
after: '',
|
||||
},
|
||||
},
|
||||
contentEnableLabel: 'Включен модерируемый контент',
|
||||
contentEnableLabel: 'Модерация контента включена',
|
||||
},
|
||||
fileUpload: {
|
||||
title: 'Загрузка файлов',
|
||||
|
||||
@ -19,6 +19,10 @@ const translation = {
|
||||
importFromDSLFile: 'Из файла DSL',
|
||||
importFromDSLUrl: 'Из URL',
|
||||
importFromDSLUrlPlaceholder: 'Вставьте ссылку DSL сюда',
|
||||
dslUploader: {
|
||||
button: 'Перетащите файл, или',
|
||||
browse: 'Обзор',
|
||||
},
|
||||
deleteAppConfirmTitle: 'Удалить это приложение?',
|
||||
deleteAppConfirmContent:
|
||||
'Удаление приложения необратимо. Пользователи больше не смогут получить доступ к вашему приложению, и все настройки подсказок и журналы будут безвозвратно удалены.',
|
||||
|
||||
@ -28,6 +28,7 @@ const translation = {
|
||||
uploader: {
|
||||
title: 'Загрузить файл',
|
||||
button: 'Перетащите файлы или папки или',
|
||||
buttonSingleFile: 'Перетащите файл или',
|
||||
browse: 'Обзор',
|
||||
tip: 'Поддерживаются {{supportTypes}}. Максимум {{size}} МБ каждый.',
|
||||
validation: {
|
||||
|
||||
@ -287,6 +287,18 @@ const translation = {
|
||||
zoomTo50: 'Масштаб 50%',
|
||||
zoomTo100: 'Масштаб 100%',
|
||||
zoomToFit: 'По размеру',
|
||||
alignTop: 'Вверх',
|
||||
alignBottom: 'Дно',
|
||||
alignRight: 'Правильно',
|
||||
distributeHorizontal: 'Пространство по горизонтали',
|
||||
alignMiddle: 'Середина',
|
||||
vertical: 'Вертикальный',
|
||||
alignCenter: 'Центр',
|
||||
alignLeft: 'Налево',
|
||||
selectionAlignment: 'Выравнивание выделения',
|
||||
horizontal: 'Горизонтальный',
|
||||
alignNodes: 'Выравнивание узлов',
|
||||
distributeVertical: 'Пространство по вертикали',
|
||||
},
|
||||
panel: {
|
||||
userInputField: 'Поле ввода пользователя',
|
||||
|
||||
@ -197,7 +197,7 @@ const translation = {
|
||||
before: 'Za moderiranje OpenAI potrebujete ključ OpenAI API, konfiguriran v',
|
||||
},
|
||||
},
|
||||
contentEnableLabel: 'Omogočena zmerna vsebina',
|
||||
contentEnableLabel: 'Moderiranje vsebine omogočeno',
|
||||
},
|
||||
debug: {
|
||||
title: 'Odpravljanje napak',
|
||||
|
||||
@ -19,6 +19,10 @@ const translation = {
|
||||
importFromDSLFile: 'Iz datoteke DSL',
|
||||
importFromDSLUrl: 'Iz URL-ja',
|
||||
importFromDSLUrlPlaceholder: 'Tukaj prilepi povezavo DSL',
|
||||
dslUploader: {
|
||||
button: 'Povlecite in spustite datoteko, ali',
|
||||
browse: 'Prebrskaj',
|
||||
},
|
||||
deleteAppConfirmTitle: 'Izbrišem to aplikacijo?',
|
||||
deleteAppConfirmContent:
|
||||
'Brisanje aplikacije je nepopravljivo. Uporabniki ne bodo več imeli dostopa do vaše aplikacije, vse konfiguracije in dnevniki pa bodo trajno izbrisani.',
|
||||
|
||||
@ -33,6 +33,7 @@ const translation = {
|
||||
uploader: {
|
||||
title: 'Naloži datoteko',
|
||||
button: 'Povleci in spusti datoteke ali mape oz',
|
||||
buttonSingleFile: 'Povleci in spusti datoteko oz',
|
||||
browse: 'Prebrskaj',
|
||||
tip: 'Podprti tipi datotek: {{supportTypes}}. Največ {{size}}MB na datoteko.',
|
||||
validation: {
|
||||
|
||||
@ -287,6 +287,18 @@ const translation = {
|
||||
zoomIn: 'Zoom in',
|
||||
zoomTo50: 'Povečaj na 50%',
|
||||
zoomTo100: 'Povečaj na 100%',
|
||||
alignMiddle: 'Srednji',
|
||||
alignBottom: 'Dno',
|
||||
alignCenter: 'Center',
|
||||
distributeVertical: 'Razmik navpično',
|
||||
alignRight: 'Desno',
|
||||
alignTop: 'Vrh',
|
||||
vertical: 'Navpičen',
|
||||
distributeHorizontal: 'Razmik vodoravno',
|
||||
selectionAlignment: 'Poravnava izbora',
|
||||
alignNodes: 'Poravnava vozlišč',
|
||||
horizontal: 'Vodoraven',
|
||||
alignLeft: 'Levo',
|
||||
},
|
||||
variableReference: {
|
||||
conversationVars: 'pogovorne spremenljivke',
|
||||
|
||||
@ -173,7 +173,7 @@ const translation = {
|
||||
},
|
||||
title: 'การตั้งค่าการกลั่นกรองเนื้อหา',
|
||||
},
|
||||
contentEnableLabel: 'เปิดใช้งานเนื้อหากลั่นกรอง',
|
||||
contentEnableLabel: 'การกลั่นกรองเนื้อหาเปิดใช้งานแล้ว',
|
||||
outputEnabled: 'ผลิตภัณฑ์',
|
||||
title: 'การกลั่นกรองเนื้อหา',
|
||||
allEnabled: 'อินพุต & เอาต์พุต',
|
||||
|
||||
@ -19,6 +19,10 @@ const translation = {
|
||||
importFromDSLFile: 'จากไฟล์ DSL',
|
||||
importFromDSLUrl: 'จาก URL',
|
||||
importFromDSLUrlPlaceholder: 'วางลิงค์ DSL ที่นี่',
|
||||
dslUploader: {
|
||||
button: 'ลากและวางไฟล์ หรือ',
|
||||
browse: 'เรียกดู',
|
||||
},
|
||||
deleteAppConfirmTitle: 'ลบโปรเจกต์นี้?',
|
||||
deleteAppConfirmContent: 'การลบโปรเจกนั้นไม่สามารถย้อนกลับได้ ผู้ใช้จะไม่สามารถเข้าถึงโปรเจกต์ของคุณอีกต่อไป และการกําหนดค่าต่างๆและบันทึกทั้งหมดจะถูกลบอย่างถาวร',
|
||||
appDeleted: 'โปรเจกต์ถูกลบ',
|
||||
|
||||
@ -33,6 +33,7 @@ const translation = {
|
||||
uploader: {
|
||||
title: 'อัปโหลดไฟล์',
|
||||
button: 'ลากและวางไฟล์หรือโฟลเดอร์หรือ',
|
||||
buttonSingleFile: 'ลากและวางไฟล์หรือ',
|
||||
browse: 'เล็ม',
|
||||
tip: 'รองรับ {{supportTypes}} สูงสุด {{size}}MB แต่ละตัว',
|
||||
validation: {
|
||||
|
||||
@ -287,6 +287,18 @@ const translation = {
|
||||
zoomTo50: 'ซูมไปที่ 50%',
|
||||
zoomTo100: 'ซูมไปที่ 100%',
|
||||
zoomToFit: 'ซูมให้พอดี',
|
||||
alignBottom: 'ก้น',
|
||||
alignCenter: 'ศูนย์กลาง',
|
||||
alignMiddle: 'กลาง',
|
||||
horizontal: 'แนวราบ',
|
||||
vertical: 'ซึ่งตั้งตรง',
|
||||
alignTop: 'ด้านบน',
|
||||
distributeVertical: 'พื้นที่ในแนวตั้ง',
|
||||
alignLeft: 'ซ้าย',
|
||||
selectionAlignment: 'การจัดตําแหน่งการเลือก',
|
||||
distributeHorizontal: 'ช่องว่างในแนวนอน',
|
||||
alignRight: 'ขวา',
|
||||
alignNodes: 'จัดตําแหน่งโหนด',
|
||||
},
|
||||
panel: {
|
||||
userInputField: 'ฟิลด์ป้อนข้อมูลของผู้ใช้',
|
||||
|
||||
@ -197,7 +197,7 @@ const translation = {
|
||||
after: '',
|
||||
},
|
||||
},
|
||||
contentEnableLabel: 'Etkin modere içerik',
|
||||
contentEnableLabel: 'İçerik denetimi etkin',
|
||||
},
|
||||
fileUpload: {
|
||||
title: 'Dosya Yükleme',
|
||||
|
||||
@ -19,6 +19,10 @@ const translation = {
|
||||
importFromDSLFile: 'DSL dosyasından',
|
||||
importFromDSLUrl: 'URL\'den',
|
||||
importFromDSLUrlPlaceholder: 'DSL bağlantısını buraya yapıştır',
|
||||
dslUploader: {
|
||||
button: 'Dosyayı sürükleyip bırakın veya',
|
||||
browse: 'Gözat',
|
||||
},
|
||||
deleteAppConfirmTitle: 'Bu uygulamayı silmek istiyor musunuz?',
|
||||
deleteAppConfirmContent: 'Uygulamanın silinmesi geri alınamaz. Kullanıcılar artık uygulamanıza erişemeyecek ve tüm prompt yapılandırmaları ile loglar kalıcı olarak silinecektir.',
|
||||
appDeleted: 'Uygulama silindi',
|
||||
|
||||
@ -28,6 +28,7 @@ const translation = {
|
||||
uploader: {
|
||||
title: 'Dosya yükle',
|
||||
button: 'Dosyaları veya klasörleri sürükleyip bırakın veya',
|
||||
buttonSingleFile: 'Dosyayı sürükleyip bırakın veya',
|
||||
browse: 'Göz atın',
|
||||
tip: 'Destekler {{supportTypes}}. Her biri en fazla {{size}}MB.',
|
||||
validation: {
|
||||
|
||||
@ -287,6 +287,18 @@ const translation = {
|
||||
zoomTo50: '%50 Yakınlaştır',
|
||||
zoomTo100: '%100 Yakınlaştır',
|
||||
zoomToFit: 'Sığdıracak Şekilde Yakınlaştır',
|
||||
alignCenter: 'Orta',
|
||||
alignMiddle: 'Orta',
|
||||
alignLeft: 'Sol',
|
||||
alignNodes: 'Düğümleri Hizala',
|
||||
vertical: 'Dikey',
|
||||
alignRight: 'Sağ',
|
||||
alignTop: 'Sayfanın Üstü',
|
||||
alignBottom: 'Dip',
|
||||
selectionAlignment: 'Seçim Hizalama',
|
||||
distributeHorizontal: 'Yatay Boşluk',
|
||||
horizontal: 'Yatay',
|
||||
distributeVertical: 'Dikey Boşluk',
|
||||
},
|
||||
panel: {
|
||||
userInputField: 'Kullanıcı Giriş Alanı',
|
||||
|
||||
@ -202,7 +202,7 @@ const translation = {
|
||||
after: '',
|
||||
},
|
||||
},
|
||||
contentEnableLabel: 'Увімкнено помірний контент',
|
||||
contentEnableLabel: 'Модерація контенту увімкнена',
|
||||
},
|
||||
fileUpload: {
|
||||
title: 'Завантаження файлу',
|
||||
|
||||
@ -171,6 +171,10 @@ const translation = {
|
||||
importFromDSLUrl: 'З URL',
|
||||
importFromDSL: 'Імпорт з DSL',
|
||||
importFromDSLUrlPlaceholder: 'Вставте посилання на DSL тут',
|
||||
dslUploader: {
|
||||
button: 'Перетягніть файл, або',
|
||||
browse: 'Огляд',
|
||||
},
|
||||
importFromDSLFile: 'З DSL-файлу',
|
||||
mermaid: {
|
||||
handDrawn: 'Намальовані від руки',
|
||||
|
||||
@ -23,6 +23,7 @@ const translation = {
|
||||
uploader: {
|
||||
title: 'Завантажити текстовий файл',
|
||||
button: 'Перетягніть файли або папки або',
|
||||
buttonSingleFile: 'Перетягніть файл або',
|
||||
browse: 'Оберіть',
|
||||
tip: 'Підтримуються {{supportTypes}}. Максимум {{size}} МБ кожен.',
|
||||
validation: {
|
||||
|
||||
@ -287,6 +287,18 @@ const translation = {
|
||||
zoomTo50: 'Збільшити до 50%',
|
||||
zoomTo100: 'Збільшити до 100%',
|
||||
zoomToFit: 'Збільшити для підгонки',
|
||||
alignCenter: 'Центр',
|
||||
alignRight: 'Праворуч',
|
||||
vertical: 'Вертикальні',
|
||||
alignBottom: 'Низ',
|
||||
alignLeft: 'Ліворуч',
|
||||
alignTop: 'Верх',
|
||||
horizontal: 'Горизонтальні',
|
||||
alignMiddle: 'Середній',
|
||||
distributeVertical: 'Простір по вертикалі',
|
||||
distributeHorizontal: 'Простір по горизонталі',
|
||||
selectionAlignment: 'Вирівнювання вибору',
|
||||
alignNodes: 'Вирівнювання вузлів',
|
||||
},
|
||||
panel: {
|
||||
userInputField: 'Поле введення користувача',
|
||||
|
||||
@ -171,6 +171,10 @@ const translation = {
|
||||
importFromDSLFile: 'Từ tệp DSL',
|
||||
importFromDSL: 'Nhập từ DSL',
|
||||
importFromDSLUrlPlaceholder: 'Dán liên kết DSL vào đây',
|
||||
dslUploader: {
|
||||
button: 'Kéo và thả tệp, hoặc',
|
||||
browse: 'Duyệt',
|
||||
},
|
||||
importFromDSLUrl: 'Từ URL',
|
||||
mermaid: {
|
||||
handDrawn: 'Vẽ tay',
|
||||
|
||||
@ -23,6 +23,7 @@ const translation = {
|
||||
uploader: {
|
||||
title: 'Tải lên tệp văn bản',
|
||||
button: 'Kéo và thả các tập tin hoặc thư mục, hoặc',
|
||||
buttonSingleFile: 'Kéo và thả tệp hoặc',
|
||||
browse: 'Chọn tệp',
|
||||
tip: 'Hỗ trợ {{supportTypes}}. Tối đa {{size}}MB mỗi tệp.',
|
||||
validation: {
|
||||
|
||||
@ -287,6 +287,18 @@ const translation = {
|
||||
zoomTo50: 'Phóng to 50%',
|
||||
zoomTo100: 'Phóng to 100%',
|
||||
zoomToFit: 'Phóng to vừa màn hình',
|
||||
alignBottom: 'Đáy',
|
||||
alignMiddle: 'Trung',
|
||||
alignRight: 'Bên phải',
|
||||
alignNodes: 'Căn chỉnh các nút',
|
||||
alignLeft: 'Bên trái',
|
||||
horizontal: 'Ngang',
|
||||
alignCenter: 'Trung tâm',
|
||||
alignTop: 'Đỉnh',
|
||||
distributeVertical: 'Không gian theo chiều dọc',
|
||||
selectionAlignment: 'Căn chỉnh lựa chọn',
|
||||
distributeHorizontal: 'Không gian theo chiều ngang',
|
||||
vertical: 'Thẳng đứng',
|
||||
},
|
||||
panel: {
|
||||
userInputField: 'Trường đầu vào của người dùng',
|
||||
|
||||
@ -163,7 +163,7 @@ const translation = {
|
||||
moderation: {
|
||||
title: '内容审查',
|
||||
description: '您可以调用审查 API 或者维护敏感词库来使模型更安全地输出。',
|
||||
contentEnableLabel: '启用审查内容',
|
||||
contentEnableLabel: '内容审查已启用',
|
||||
allEnabled: '输入内容和输出内容',
|
||||
inputEnabled: '输入内容',
|
||||
outputEnabled: '输出内容',
|
||||
|
||||
@ -23,6 +23,10 @@ const translation = {
|
||||
importFromDSLFile: '文件',
|
||||
importFromDSLUrl: 'URL',
|
||||
importFromDSLUrlPlaceholder: '输入 DSL 文件的 URL',
|
||||
dslUploader: {
|
||||
button: '拖拽文件至此,或者',
|
||||
browse: '选择文件',
|
||||
},
|
||||
deleteAppConfirmTitle: '确认删除应用?',
|
||||
deleteAppConfirmContent:
|
||||
'删除应用将无法撤销。用户将不能访问你的应用,所有 Prompt 编排配置和日志均将一并被删除。',
|
||||
|
||||
@ -36,6 +36,7 @@ const translation = {
|
||||
uploader: {
|
||||
title: '上传文本文件',
|
||||
button: '拖拽文件或文件夹至此,或者',
|
||||
buttonSingleFile: '拖拽文件至此,或者',
|
||||
browse: '选择文件',
|
||||
tip: '已支持 {{supportTypes}},每批最多 {{batchCount}} 个文件,每个文件不超过 {{size}} MB。',
|
||||
validation: {
|
||||
|
||||
@ -197,7 +197,7 @@ const translation = {
|
||||
after: '中配置 OpenAI API 金鑰。',
|
||||
},
|
||||
},
|
||||
contentEnableLabel: '啟用了中等內容',
|
||||
contentEnableLabel: '內容審查已啟用',
|
||||
},
|
||||
fileUpload: {
|
||||
title: '檔案上傳',
|
||||
@ -239,7 +239,7 @@ const translation = {
|
||||
waitForBatchResponse: '請等待批次任務完成',
|
||||
notSelectModel: '請選擇模型',
|
||||
waitForImgUpload: '請等待圖片上傳完成',
|
||||
waitForFileUpload: '請等待檔上傳',
|
||||
waitForFileUpload: '請等待檔案上傳完成',
|
||||
},
|
||||
chatSubTitle: '提示詞',
|
||||
completionSubTitle: '字首提示詞',
|
||||
|
||||
@ -171,6 +171,10 @@ const translation = {
|
||||
importFromDSL: '從 DSL 導入',
|
||||
importFromDSLFile: '從 DSL 檔',
|
||||
importFromDSLUrlPlaceholder: '在此處貼上 DSL 連結',
|
||||
dslUploader: {
|
||||
button: '拖拽檔案至此,或者',
|
||||
browse: '選擇檔案',
|
||||
},
|
||||
mermaid: {
|
||||
handDrawn: '手繪',
|
||||
classic: '經典',
|
||||
|
||||
@ -21,6 +21,7 @@ const translation = {
|
||||
uploader: {
|
||||
title: '上傳文字檔案',
|
||||
button: '拖拽檔案或檔案夾至此,或者',
|
||||
buttonSingleFile: '拖拽檔案至此,或者',
|
||||
browse: '選擇檔案',
|
||||
tip: '已支援 {{supportTypes}},每個檔案不超過 {{size}}MB。',
|
||||
validation: {
|
||||
|
||||
@ -287,6 +287,18 @@ const translation = {
|
||||
zoomTo50: '縮放到 50%',
|
||||
zoomTo100: '放大到 100%',
|
||||
zoomToFit: '自適應視圖',
|
||||
alignNodes: '對齊節點(Align Nodes)',
|
||||
distributeVertical: '垂直空間',
|
||||
alignLeft: '左',
|
||||
distributeHorizontal: '水平空間',
|
||||
vertical: '垂直',
|
||||
alignTop: '返回頁首',
|
||||
alignCenter: '中心',
|
||||
horizontal: '水準',
|
||||
selectionAlignment: '選擇對齊',
|
||||
alignRight: '右',
|
||||
alignBottom: '底',
|
||||
alignMiddle: '中間',
|
||||
},
|
||||
panel: {
|
||||
userInputField: '用戶輸入字段',
|
||||
|
||||
@ -70,7 +70,7 @@ export const useUpdateAccessMode = () => {
|
||||
})
|
||||
}
|
||||
|
||||
export const useGetUserCanAccessApp = ({ appId, isInstalledApp = true }: { appId?: string; isInstalledApp?: boolean; }) => {
|
||||
export const useGetUserCanAccessApp = ({ appId, isInstalledApp = true, enabled }: { appId?: string; isInstalledApp?: boolean; enabled?: boolean }) => {
|
||||
const systemFeatures = useGlobalPublicStore(s => s.systemFeatures)
|
||||
return useQuery({
|
||||
queryKey: [NAME_SPACE, 'user-can-access-app', appId],
|
||||
@ -80,7 +80,7 @@ export const useGetUserCanAccessApp = ({ appId, isInstalledApp = true }: { appId
|
||||
else
|
||||
return { result: true }
|
||||
},
|
||||
enabled: !!appId,
|
||||
enabled: enabled !== undefined ? enabled : !!appId,
|
||||
staleTime: 0,
|
||||
gcTime: 0,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user