fix: i18n typo (#8077)
Some checks are pending
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/amd64, build-api-amd64) (push) Waiting to run
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/arm64, build-api-arm64) (push) Waiting to run
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/amd64, build-web-amd64) (push) Waiting to run
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/arm64, build-web-arm64) (push) Waiting to run
Build and Push API & Web / create-manifest (api, DIFY_API_IMAGE_NAME, merge-api-images) (push) Blocked by required conditions
Build and Push API & Web / create-manifest (web, DIFY_WEB_IMAGE_NAME, merge-web-images) (push) Blocked by required conditions

This commit is contained in:
Nam Vu 2024-09-07 15:59:38 +07:00 committed by GitHub
parent 0cef25ef8c
commit 031a0b576d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
145 changed files with 268 additions and 268 deletions

View File

@ -47,7 +47,7 @@ const ConfigModal: FC<IConfigModalProps> = ({
if (!isValid) {
Toast.notify({
type: 'error',
message: t(`appDebug.varKeyError.${errorMessageKey}`, { key: t('appDebug.variableConig.varName') }),
message: t(`appDebug.varKeyError.${errorMessageKey}`, { key: t('appDebug.variableConfig.varName') }),
})
return false
}
@ -101,7 +101,7 @@ const ConfigModal: FC<IConfigModalProps> = ({
// }
if (!tempPayload.label) {
Toast.notify({ type: 'error', message: t('appDebug.variableConig.errorMsg.labelNameRequired') })
Toast.notify({ type: 'error', message: t('appDebug.variableConfig.errorMsg.labelNameRequired') })
return
}
if (isStringInput || type === InputVarType.number) {
@ -109,7 +109,7 @@ const ConfigModal: FC<IConfigModalProps> = ({
}
else {
if (options?.length === 0) {
Toast.notify({ type: 'error', message: t('appDebug.variableConig.errorMsg.atLeastOneOption') })
Toast.notify({ type: 'error', message: t('appDebug.variableConfig.errorMsg.atLeastOneOption') })
return
}
const obj: Record<string, boolean> = {}
@ -122,7 +122,7 @@ const ConfigModal: FC<IConfigModalProps> = ({
obj[o] = true
})
if (hasRepeatedItem) {
Toast.notify({ type: 'error', message: t('appDebug.variableConig.errorMsg.optionRepeat') })
Toast.notify({ type: 'error', message: t('appDebug.variableConfig.errorMsg.optionRepeat') })
return
}
onConfirm(tempPayload, moreInfo)
@ -131,14 +131,14 @@ const ConfigModal: FC<IConfigModalProps> = ({
return (
<Modal
title={t(`appDebug.variableConig.${isCreate ? 'addModalTitle' : 'editModalTitle'}`)}
title={t(`appDebug.variableConfig.${isCreate ? 'addModalTitle' : 'editModalTitle'}`)}
isShow={isShow}
onClose={onClose}
>
<div className='mb-8'>
<div className='space-y-2'>
<Field title={t('appDebug.variableConig.fieldType')}>
<Field title={t('appDebug.variableConfig.fieldType')}>
<div className='flex space-x-2'>
<SelectTypeItem type={InputVarType.textInput} selected={type === InputVarType.textInput} onClick={() => handlePayloadChange('type')(InputVarType.textInput)} />
<SelectTypeItem type={InputVarType.paragraph} selected={type === InputVarType.paragraph} onClick={() => handlePayloadChange('type')(InputVarType.paragraph)} />
@ -147,39 +147,39 @@ const ConfigModal: FC<IConfigModalProps> = ({
</div>
</Field>
<Field title={t('appDebug.variableConig.varName')}>
<Field title={t('appDebug.variableConfig.varName')}>
<input
type='text'
className={inputClassName}
value={variable}
onChange={e => handlePayloadChange('variable')(e.target.value)}
onBlur={handleVarKeyBlur}
placeholder={t('appDebug.variableConig.inputPlaceholder')!}
placeholder={t('appDebug.variableConfig.inputPlaceholder')!}
/>
</Field>
<Field title={t('appDebug.variableConig.labelName')}>
<Field title={t('appDebug.variableConfig.labelName')}>
<input
type='text'
className={inputClassName}
value={label as string}
onChange={e => handlePayloadChange('label')(e.target.value)}
placeholder={t('appDebug.variableConig.inputPlaceholder')!}
placeholder={t('appDebug.variableConfig.inputPlaceholder')!}
/>
</Field>
{isStringInput && (
<Field title={t('appDebug.variableConig.maxLength')}>
<Field title={t('appDebug.variableConfig.maxLength')}>
<ConfigString maxLength={type === InputVarType.textInput ? TEXT_MAX_LENGTH : Infinity} modelId={modelConfig.model_id} value={max_length} onChange={handlePayloadChange('max_length')} />
</Field>
)}
{type === InputVarType.select && (
<Field title={t('appDebug.variableConig.options')}>
<Field title={t('appDebug.variableConfig.options')}>
<ConfigSelect options={options || []} onChange={handlePayloadChange('options')} />
</Field>
)}
<Field title={t('appDebug.variableConig.required')}>
<Field title={t('appDebug.variableConfig.required')}>
<Switch defaultValue={tempPayload.required} onChange={handlePayloadChange('required')} />
</Field>
</div>

View File

@ -77,7 +77,7 @@ const ConfigSelect: FC<IConfigSelectProps> = ({
onClick={() => { onChange([...options, '']) }}
className='flex items-center h-9 px-3 gap-2 rounded-lg cursor-pointer text-gray-400 bg-gray-100'>
<PlusIcon width={16} height={16}></PlusIcon>
<div className='text-gray-500 text-[13px]'>{t('appDebug.variableConig.addOption')}</div>
<div className='text-gray-500 text-[13px]'>{t('appDebug.variableConfig.addOption')}</div>
</div>
</div>
)

View File

@ -18,7 +18,7 @@ const SelectTypeItem: FC<ISelectTypeItemProps> = ({
onClick,
}) => {
const { t } = useTranslation()
const typeName = t(`appDebug.variableConig.${type}`)
const typeName = t(`appDebug.variableConfig.${type}`)
return (
<div

View File

@ -62,14 +62,14 @@ const SelectVarType: FC<Props> = ({
<PortalToFollowElemContent style={{ zIndex: 1000 }}>
<div className='bg-white border border-gray-200 shadow-lg rounded-lg min-w-[192px]'>
<div className='p-1'>
<SelectItem type={InputVarType.textInput} value='string' text={t('appDebug.variableConig.string')} onClick={handleChange}></SelectItem>
<SelectItem type={InputVarType.paragraph} value='paragraph' text={t('appDebug.variableConig.paragraph')} onClick={handleChange}></SelectItem>
<SelectItem type={InputVarType.select} value='select' text={t('appDebug.variableConig.select')} onClick={handleChange}></SelectItem>
<SelectItem type={InputVarType.number} value='number' text={t('appDebug.variableConig.number')} onClick={handleChange}></SelectItem>
<SelectItem type={InputVarType.textInput} value='string' text={t('appDebug.variableConfig.string')} onClick={handleChange}></SelectItem>
<SelectItem type={InputVarType.paragraph} value='paragraph' text={t('appDebug.variableConfig.paragraph')} onClick={handleChange}></SelectItem>
<SelectItem type={InputVarType.select} value='select' text={t('appDebug.variableConfig.select')} onClick={handleChange}></SelectItem>
<SelectItem type={InputVarType.number} value='number' text={t('appDebug.variableConfig.number')} onClick={handleChange}></SelectItem>
</div>
<div className='h-[1px] bg-gray-100'></div>
<div className='p-1'>
<SelectItem Icon={ApiConnection} value='api' text={t('appDebug.variableConig.apiBasedVar')} onClick={handleChange}></SelectItem>
<SelectItem Icon={ApiConnection} value='api' text={t('appDebug.variableConfig.apiBasedVar')} onClick={handleChange}></SelectItem>
</div>
</div>
</PortalToFollowElemContent>

View File

@ -227,7 +227,7 @@ const OpeningStatement: FC<IOpeningStatementProps> = ({
onClick={() => { setTempSuggestedQuestions([...tempSuggestedQuestions, '']) }}
className='mt-1 flex items-center h-9 px-3 gap-2 rounded-lg cursor-pointer text-gray-400 bg-gray-100 hover:bg-gray-200'>
<RiAddLine className='w-4 h-4' />
<div className='text-gray-500 text-[13px]'>{t('appDebug.variableConig.addOption')}</div>
<div className='text-gray-500 text-[13px]'>{t('appDebug.variableConfig.addOption')}</div>
</div>
)}
</div>

View File

@ -189,7 +189,7 @@ const ExternalDataToolModal: FC<ExternalDataToolModalProps> = ({
className='!p-8 !pb-6 !max-w-none !w-[640px]'
>
<div className='mb-2 text-xl font-semibold text-gray-900'>
{`${action} ${t('appDebug.variableConig.apiBasedVar')}`}
{`${action} ${t('appDebug.variableConfig.apiBasedVar')}`}
</div>
<div className='py-2'>
<div className='leading-9 text-sm font-medium text-gray-900'>

View File

@ -22,7 +22,7 @@ const AppUnavailable: FC<IAppUnavailableProps> = ({
style={{
borderRight: '1px solid rgba(0,0,0,.3)',
}}>{code}</h1>
<div className='text-sm'>{unknownReason || (isUnknownReason ? t('share.common.appUnkonwError') : t('share.common.appUnavailable'))}</div>
<div className='text-sm'>{unknownReason || (isUnknownReason ? t('share.common.appUnknownError') : t('share.common.appUnavailable'))}</div>
</div>
)
}

View File

@ -152,7 +152,7 @@ const ConfigPanel = () => {
: (
<div className={`flex items-center justify-end ${isMobile && 'w-full'}`}>
<div className='flex items-center pr-3 space-x-3'>
<span className='uppercase'>{t('share.chat.powerBy')}</span>
<span className='uppercase'>{t('share.chat.poweredBy')}</span>
{
customConfig?.replace_webapp_logo
? <img src={customConfig?.replace_webapp_logo} alt='logo' className='block w-auto h-5' />

View File

@ -160,7 +160,7 @@ const ConfigPanel = () => {
: (
<div className={cn('flex items-center justify-end', isMobile && 'w-full')}>
<div className='flex items-center pr-3 space-x-3'>
<span className='uppercase'>{t('share.chat.powerBy')}</span>
<span className='uppercase'>{t('share.chat.poweredBy')}</span>
{
customConfig?.replace_webapp_logo
? <img src={customConfig?.replace_webapp_logo} alt='logo' className='block w-auto h-5' />

View File

@ -248,7 +248,7 @@ const OpeningStatement: FC<OpeningStatementProps> = ({
onClick={() => { setTempSuggestedQuestions([...tempSuggestedQuestions, '']) }}
className='mt-1 flex items-center h-9 px-3 gap-2 rounded-lg cursor-pointer text-gray-400 bg-gray-100 hover:bg-gray-200'>
<RiAddLine className='w-4 h-4' />
<div className='text-gray-500 text-[13px]'>{t('appDebug.variableConig.addOption')}</div>
<div className='text-gray-500 text-[13px]'>{t('appDebug.variableConfig.addOption')}</div>
</div>
)}
</div>

View File

@ -743,7 +743,7 @@ const StepTwo = ({
</div>
{hasSetIndexType && indexType === IndexingType.ECONOMICAL && (
<div className='mt-2 text-xs text-gray-500 font-medium'>
{t('datasetCreation.stepTwo.indexSettedTip')}
{t('datasetCreation.stepTwo.indexSettingTip')}
<Link className='text-[#155EEF]' href={`/datasets/${datasetId}/settings`}>{t('datasetCreation.stepTwo.datasetSettingLink')}</Link>
</div>
)}
@ -790,7 +790,7 @@ const StepTwo = ({
/>
{!!datasetId && (
<div className='mt-2 text-xs text-gray-500 font-medium'>
{t('datasetCreation.stepTwo.indexSettedTip')}
{t('datasetCreation.stepTwo.indexSettingTip')}
<Link className='text-[#155EEF]' href={`/datasets/${datasetId}/settings`}>{t('datasetCreation.stepTwo.datasetSettingLink')}</Link>
</div>
)}
@ -890,7 +890,7 @@ const StepTwo = ({
</div>
<div className={s.divider} />
<div className={s.segmentCount}>
<div className='mb-2 text-xs font-medium text-gray-500'>{t('datasetCreation.stepTwo.emstimateSegment')}</div>
<div className='mb-2 text-xs font-medium text-gray-500'>{t('datasetCreation.stepTwo.estimateSegment')}</div>
<div className='flex items-center text-sm leading-6 font-medium text-gray-800'>
{
fileIndexingEstimate

View File

@ -11,8 +11,8 @@ import { IS_CE_EDITION } from '@/config'
import type { InvitationResult } from '@/models/common'
import Tooltip from '@/app/components/base/tooltip'
export type SuccessInvationResult = Extract<InvitationResult, { status: 'success' }>
export type FailedInvationResult = Extract<InvitationResult, { status: 'failed' }>
export type SuccessInvitationResult = Extract<InvitationResult, { status: 'success' }>
export type FailedInvitationResult = Extract<InvitationResult, { status: 'failed' }>
type IInvitedModalProps = {
invitationResults: InvitationResult[]
@ -24,8 +24,8 @@ const InvitedModal = ({
}: IInvitedModalProps) => {
const { t } = useTranslation()
const successInvationResults = useMemo<SuccessInvationResult[]>(() => invitationResults?.filter(item => item.status === 'success') as SuccessInvationResult[], [invitationResults])
const failedInvationResults = useMemo<FailedInvationResult[]>(() => invitationResults?.filter(item => item.status !== 'success') as FailedInvationResult[], [invitationResults])
const successInvitationResults = useMemo<SuccessInvitationResult[]>(() => invitationResults?.filter(item => item.status === 'success') as SuccessInvitationResult[], [invitationResults])
const failedInvitationResults = useMemo<FailedInvitationResult[]>(() => invitationResults?.filter(item => item.status !== 'success') as FailedInvitationResult[], [invitationResults])
return (
<div className={s.wrap}>
@ -49,20 +49,20 @@ const InvitedModal = ({
<div className='mb-5 text-sm text-gray-500'>{t('common.members.invitationSentTip')}</div>
<div className='flex flex-col gap-2 mb-9'>
{
!!successInvationResults.length
!!successInvitationResults.length
&& <>
<div className='py-2 text-sm font-Medium text-gray-900'>{t('common.members.invitationLink')}</div>
{successInvationResults.map(item =>
{successInvitationResults.map(item =>
<InvitationLink key={item.email} value={item} />)}
</>
}
{
!!failedInvationResults.length
!!failedInvitationResults.length
&& <>
<div className='py-2 text-sm font-Medium text-gray-900'>{t('common.members.failedinvitationEmails')}</div>
<div className='py-2 text-sm font-Medium text-gray-900'>{t('common.members.failedInvitationEmails')}</div>
<div className='flex flex-wrap justify-between gap-y-1'>
{
failedInvationResults.map(item =>
failedInvitationResults.map(item =>
<div key={item.email} className='flex justify-center border border-red-300 rounded-md px-1 bg-orange-50'>
<Tooltip
popupContent={item.message}

View File

@ -3,12 +3,12 @@ import React, { useCallback, useEffect, useRef, useState } from 'react'
import { t } from 'i18next'
import copy from 'copy-to-clipboard'
import s from './index.module.css'
import type { SuccessInvationResult } from '.'
import type { SuccessInvitationResult } from '.'
import Tooltip from '@/app/components/base/tooltip'
import { randomString } from '@/utils'
type IInvitationLinkProps = {
value: SuccessInvationResult
value: SuccessInvitationResult
}
const InvitationLink = ({

View File

@ -125,7 +125,7 @@ const WorkflowChecklist = ({
<div className='px-3 py-2 bg-gray-25 rounded-b-lg'>
<div className='flex text-xs leading-[18px] text-gray-500'>
<AlertTriangle className='mt-[3px] mr-2 w-3 h-3 text-[#F79009]' />
{t('workflow.common.needConnecttip')}
{t('workflow.common.needConnectTip')}
</div>
</div>
)

View File

@ -138,7 +138,7 @@ export const useChecklistBeforePublish = () => {
}
if (!validNodes.find(n => n.id === node.id)) {
notify({ type: 'error', message: `[${node.data.title}] ${t('workflow.common.needConnecttip')}` })
notify({ type: 'error', message: `[${node.data.title}] ${t('workflow.common.needConnectTip')}` })
return false
}
}

View File

@ -104,7 +104,7 @@ const FormItem: FC<Props> = ({
type="text"
value={value || ''}
onChange={e => onChange(e.target.value)}
placeholder={t('appDebug.variableConig.inputPlaceholder')!}
placeholder={t('appDebug.variableConfig.inputPlaceholder')!}
autoFocus={autoFocus}
/>
)
@ -117,7 +117,7 @@ const FormItem: FC<Props> = ({
type="number"
value={value || ''}
onChange={e => onChange(e.target.value)}
placeholder={t('appDebug.variableConig.inputPlaceholder')!}
placeholder={t('appDebug.variableConfig.inputPlaceholder')!}
autoFocus={autoFocus}
/>
)
@ -129,7 +129,7 @@ const FormItem: FC<Props> = ({
className="w-full px-3 py-1 text-sm leading-[18px] text-gray-900 border-0 rounded-lg grow h-[120px] bg-gray-50 focus:outline-none focus:ring-1 focus:ring-inset focus:ring-gray-200"
value={value || ''}
onChange={e => onChange(e.target.value)}
placeholder={t('appDebug.variableConig.inputPlaceholder')!}
placeholder={t('appDebug.variableConfig.inputPlaceholder')!}
autoFocus={autoFocus}
/>
)
@ -207,7 +207,7 @@ const FormItem: FC<Props> = ({
key={index}
isInNode
value={item}
title={<span>{t('appDebug.variableConig.content')} {index + 1} </span>}
title={<span>{t('appDebug.variableConfig.content')} {index + 1} </span>}
onChange={handleArrayItemChange(index)}
headerRight={
(value as any).length > 1

View File

@ -99,7 +99,7 @@ const AddExtractParameter: FC<Props> = ({
if (!param.name)
errMessage = t(`${errorI18nPrefix}.fieldRequired`, { field: t(`${i18nPrefix}.addExtractParameterContent.name`) })
if (!errMessage && param.type === ParamType.select && (!param.options || param.options.length === 0))
errMessage = t(`${errorI18nPrefix}.fieldRequired`, { field: t('appDebug.variableConig.options') })
errMessage = t(`${errorI18nPrefix}.fieldRequired`, { field: t('appDebug.variableConfig.options') })
if (!errMessage && !param.description)
errMessage = t(`${errorI18nPrefix}.fieldRequired`, { field: t(`${i18nPrefix}.addExtractParameterContent.description`) })
@ -160,7 +160,7 @@ const AddExtractParameter: FC<Props> = ({
/>
</Field>
{param.type === ParamType.select && (
<Field title={t('appDebug.variableConig.options')}>
<Field title={t('appDebug.variableConfig.options')}>
<ConfigSelect options={param.options || []} onChange={handleParamChange('options')} />
</Field>
)}

View File

@ -97,7 +97,7 @@ const OneMoreStep = () => {
}
needsDelay
>
<span className='cursor-pointer text-primary-600'>{t('login.donthave')}</span>
<span className='cursor-pointer text-primary-600'>{t('login.dontHave')}</span>
</Tooltip>
</label>
<div className="mt-1">

View File

@ -9,7 +9,7 @@ const translation = {
play: 'Abspielen',
pause: 'Pause',
playing: 'Wiedergabe',
merMaind: {
merMaid: {
rerender: 'Neu rendern',
},
never: 'Nie',

View File

@ -248,7 +248,7 @@ const translation = {
historyNoBeEmpty: 'Konversationsverlauf muss im Prompt gesetzt sein',
queryNoBeEmpty: 'Anfrage muss im Prompt gesetzt sein',
},
variableConig: {
variableConfig: {
modalTitle: 'Feldeinstellungen',
description: 'Einstellung für Variable {{varName}}',
fieldType: 'Feldtyp',

View File

@ -191,14 +191,14 @@ const translation = {
invitationSent: 'Einladung gesendet',
invitationSentTip: 'Einladung gesendet, und sie können sich bei Dify anmelden, um auf Ihre Teamdaten zuzugreifen.',
invitationLink: 'Einladungslink',
failedinvitationEmails: 'Die folgenden Benutzer wurden nicht erfolgreich eingeladen',
failedInvitationEmails: 'Die folgenden Benutzer wurden nicht erfolgreich eingeladen',
ok: 'OK',
removeFromTeam: 'Vom Team entfernen',
removeFromTeamTip: 'Wird den Teamzugang entfernen',
setAdmin: 'Als Administrator einstellen',
setMember: 'Als normales Mitglied einstellen',
setEditor: 'Als Editor einstellen',
disinvite: 'Einladung widerrufen',
disInvite: 'Einladung widerrufen',
deleteMember: 'Mitglied löschen',
you: '(Du)',
setBuilder: 'Als Builder festlegen',

View File

@ -104,8 +104,8 @@ const translation = {
QATitle: 'Segmentierung im Frage-und-Antwort-Format',
QATip: 'Diese Option zu aktivieren, wird mehr Tokens verbrauchen',
QALanguage: 'Segmentierung verwenden',
emstimateCost: 'Schätzung',
emstimateSegment: 'Geschätzte Chunks',
estimateCost: 'Schätzung',
estimateSegment: 'Geschätzte Chunks',
segmentCount: 'Chunks',
calculating: 'Berechnung...',
fileSource: 'Dokumente vorverarbeiten',
@ -128,8 +128,8 @@ const translation = {
previewSwitchTipStart: 'Die aktuelle Chunk-Vorschau ist im Textformat, ein Wechsel zur Vorschau im Frage-und-Antwort-Format wird',
previewSwitchTipEnd: ' zusätzliche Tokens verbrauchen',
characters: 'Zeichen',
indexSettedTip: 'Um die Indexmethode zu ändern, bitte gehen Sie zu den ',
retrivalSettedTip: 'Um die Indexmethode zu ändern, bitte gehen Sie zu den ',
indexSettingTip: 'Um die Indexmethode zu ändern, bitte gehen Sie zu den ',
retrievalSettingTip: 'Um die Indexmethode zu ändern, bitte gehen Sie zu den ',
datasetSettingLink: 'Wissenseinstellungen.',
websiteSource: 'Preprocess-Website',
webpageUnit: 'Seiten',

View File

@ -31,7 +31,7 @@ const translation = {
pp: 'Datenschutzbestimmungen',
tosDesc: 'Mit der Anmeldung stimmst du unseren',
goToInit: 'Wenn du das Konto noch nicht initialisiert hast, gehe bitte zur Initialisierungsseite',
donthave: 'Hast du nicht?',
dontHave: 'Hast du nicht?',
invalidInvitationCode: 'Ungültiger Einladungscode',
accountAlreadyInited: 'Konto bereits initialisiert',
forgotPassword: 'Passwort vergessen?',

View File

@ -2,7 +2,7 @@ const translation = {
common: {
welcome: '',
appUnavailable: 'App ist nicht verfügbar',
appUnkonwError: 'App ist nicht verfügbar',
appUnknownError: 'App ist nicht verfügbar',
},
chat: {
newChat: 'Neuer Chat',
@ -10,7 +10,7 @@ const translation = {
unpinnedTitle: 'Chats',
newChatDefaultName: 'Neues Gespräch',
resetChat: 'Gespräch zurücksetzen',
powerBy: 'Bereitgestellt von',
poweredBy: 'Bereitgestellt von',
prompt: 'Aufforderung',
privatePromptConfigTitle: 'Konversationseinstellungen',
publicPromptConfigTitle: 'Anfängliche Aufforderung',

View File

@ -36,7 +36,7 @@ const translation = {
searchVar: 'Variable suchen',
variableNamePlaceholder: 'Variablenname',
setVarValuePlaceholder: 'Variable setzen',
needConnecttip: 'Dieser Schritt ist mit nichts verbunden',
needConnectTip: 'Dieser Schritt ist mit nichts verbunden',
maxTreeDepth: 'Maximales Limit von {{depth}} Knoten pro Ast',
needEndNode: 'Der Endblock muss hinzugefügt werden',
needAnswerNode: 'Der Antwortblock muss hinzugefügt werden',

View File

@ -10,7 +10,7 @@ const translation = {
pause: 'Pause',
playing: 'Playing',
loading: 'Loading',
merMaind: {
merMaid: {
rerender: 'Redo Rerender',
},
never: 'Never',

View File

@ -301,7 +301,7 @@ const translation = {
historyNoBeEmpty: 'Conversation history must be set in the prompt',
queryNoBeEmpty: 'Query must be set in the prompt',
},
variableConig: {
variableConfig: {
'addModalTitle': 'Add Input Field',
'editModalTitle': 'Edit Input Field',
'description': 'Setting for variable {{varName}}',

View File

@ -88,7 +88,7 @@ const translation = {
switchTipEnd: ' switching back to Basic Orchestrate.',
switchLabel: 'The app copy to be created',
removeOriginal: 'Delete the original app',
switchStart: 'Start swtich',
switchStart: 'Start switch',
typeSelector: {
all: 'ALL Types',
chatbot: 'Chatbot',

View File

@ -200,7 +200,7 @@ const translation = {
invitationSent: 'Invitation sent',
invitationSentTip: 'Invitation sent, and they can sign in to Dify to access your team data.',
invitationLink: 'Invitation Link',
failedinvitationEmails: 'Below users were not invited successfully',
failedInvitationEmails: 'Below users were not invited successfully',
ok: 'OK',
removeFromTeam: 'Remove from team',
removeFromTeamTip: 'Will remove team access',
@ -208,7 +208,7 @@ const translation = {
setMember: 'Set to ordinary member',
setBuilder: 'Set as builder',
setEditor: 'Set as editor',
disinvite: 'Cancel the invitation',
disInvite: 'Cancel the invitation',
deleteMember: 'Delete Member',
you: '(You)',
},
@ -392,7 +392,7 @@ const translation = {
selector: {
pageSelected: 'Pages Selected',
searchPages: 'Search pages...',
noSearchResult: 'No search resluts',
noSearchResult: 'No search results',
addPages: 'Add pages',
preview: 'PREVIEW',
},

View File

@ -91,7 +91,7 @@ const translation = {
maxLength: 'Maximum chunk length',
overlap: 'Chunk overlap',
overlapTip: 'Setting the chunk overlap can maintain the semantic relevance between them, enhancing the retrieve effect. It is recommended to set 10%-25% of the maximum chunk size.',
overlapCheck: 'chunk overlap should not bigger than maximun chunk length',
overlapCheck: 'chunk overlap should not bigger than maximum chunk length',
rules: 'Text preprocessing rules',
removeExtraSpaces: 'Replace consecutive spaces, newlines and tabs',
removeUrlEmails: 'Delete all URLs and email addresses',
@ -109,8 +109,8 @@ const translation = {
QATitle: 'Segmenting in Question & Answer format',
QATip: 'Enable this option will consume more tokens',
QALanguage: 'Segment using',
emstimateCost: 'Estimation',
emstimateSegment: 'Estimated chunks',
estimateCost: 'Estimation',
estimateSegment: 'Estimated chunks',
segmentCount: 'chunks',
calculating: 'Calculating...',
fileSource: 'Preprocess documents',
@ -135,8 +135,8 @@ const translation = {
previewSwitchTipStart: 'The current chunk preview is in text format, switching to a question-and-answer format preview will',
previewSwitchTipEnd: ' consume additional tokens',
characters: 'characters',
indexSettedTip: 'To change the index method & embedding model, please go to the ',
retrivalSettedTip: 'To change the retrieval setting, please go to the ',
indexSettingTip: 'To change the index method & embedding model, please go to the ',
retrievalSettingTip: 'To change the retrieval setting, please go to the ',
datasetSettingLink: 'Knowledge settings.',
},
stepThree: {

View File

@ -32,7 +32,7 @@ const translation = {
pp: 'Privacy Policy',
tosDesc: 'By signing up, you agree to our',
goToInit: 'If you have not initialized the account, please go to the initialization page',
donthave: 'Don\'t have?',
dontHave: 'Don\'t have?',
invalidInvitationCode: 'Invalid invitation code',
accountAlreadyInited: 'Account already initialized',
forgotPassword: 'Forgot your password?',

View File

@ -2,7 +2,7 @@ const translation = {
common: {
welcome: '',
appUnavailable: 'App is unavailable',
appUnkonwError: 'App is unavailable',
appUnknownError: 'App is unavailable',
},
chat: {
newChat: 'New chat',
@ -10,7 +10,7 @@ const translation = {
unpinnedTitle: 'Chats',
newChatDefaultName: 'New conversation',
resetChat: 'Reset conversation',
powerBy: 'Powered by',
poweredBy: 'Powered by',
prompt: 'Prompt',
privatePromptConfigTitle: 'Conversation settings',
publicPromptConfigTitle: 'Initial Prompt',

View File

@ -36,7 +36,7 @@ const translation = {
searchVar: 'Search variable',
variableNamePlaceholder: 'Variable name',
setVarValuePlaceholder: 'Set variable',
needConnecttip: 'This step is not connected to anything',
needConnectTip: 'This step is not connected to anything',
maxTreeDepth: 'Maximum limit of {{depth}} nodes per branch',
needEndNode: 'The End block must be added',
needAnswerNode: 'The Answer block must be added',

View File

@ -10,7 +10,7 @@ const translation = {
pause: 'Pausa',
playing: 'Reproduciendo',
loading: 'Cargando',
merMaind: {
merMaid: {
rerender: 'Rehacer Rerender',
},
never: 'Nunca',

View File

@ -259,7 +259,7 @@ const translation = {
historyNoBeEmpty: 'El historial de conversaciones debe establecerse en la indicación',
queryNoBeEmpty: 'La consulta debe establecerse en la indicación',
},
variableConig: {
variableConfig: {
'addModalTitle': 'Agregar Campo de Entrada',
'editModalTitle': 'Editar Campo de Entrada',
'description': 'Configuración para la variable {{varName}}',

View File

@ -199,7 +199,7 @@ const translation = {
invitationSent: 'Invitación enviada',
invitationSentTip: 'Invitación enviada, y pueden iniciar sesión en Dify para acceder a tus datos del equipo.',
invitationLink: 'Enlace de invitación',
failedinvitationEmails: 'Los siguientes usuarios no fueron invitados exitosamente',
failedInvitationEmails: 'Los siguientes usuarios no fueron invitados exitosamente',
ok: 'OK',
removeFromTeam: 'Eliminar del equipo',
removeFromTeamTip: 'Se eliminará el acceso al equipo',
@ -207,7 +207,7 @@ const translation = {
setMember: 'Establecer como miembro ordinario',
setBuilder: 'Establecer como constructor',
setEditor: 'Establecer como editor',
disinvite: 'Cancelar la invitación',
disInvite: 'Cancelar la invitación',
deleteMember: 'Eliminar miembro',
you: '(Tú)',
},

View File

@ -109,8 +109,8 @@ const translation = {
QATitle: 'Segmentación en formato de pregunta y respuesta',
QATip: 'Habilitar esta opción consumirá más tokens',
QALanguage: 'Segmentar usando',
emstimateCost: 'Estimación',
emstimateSegment: 'Fragmentos estimados',
estimateCost: 'Estimación',
estimateSegment: 'Fragmentos estimados',
segmentCount: 'fragmentos',
calculating: 'Calculando...',
fileSource: 'Preprocesar documentos',
@ -135,8 +135,8 @@ const translation = {
previewSwitchTipStart: 'La vista previa actual del fragmento está en formato de texto, cambiar a una vista previa en formato de pregunta y respuesta',
previewSwitchTipEnd: ' consumirá tokens adicionales',
characters: 'caracteres',
indexSettedTip: 'Para cambiar el método de índice, por favor ve a la ',
retrivalSettedTip: 'Para cambiar el método de índice, por favor ve a la ',
indexSettingTip: 'Para cambiar el método de índice, por favor ve a la ',
retrievalSettingTip: 'Para cambiar el método de índice, por favor ve a la ',
datasetSettingLink: 'configuración del conocimiento.',
},
stepThree: {

View File

@ -32,7 +32,7 @@ const translation = {
pp: 'Política de privacidad',
tosDesc: 'Al registrarte, aceptas nuestros',
goToInit: 'Si no has inicializado la cuenta, por favor ve a la página de inicialización',
donthave: '¿No tienes?',
dontHave: '¿No tienes?',
invalidInvitationCode: 'Código de invitación inválido',
accountAlreadyInited: 'La cuenta ya está inicializada',
forgotPassword: '¿Olvidaste tu contraseña?',

View File

@ -2,7 +2,7 @@ const translation = {
common: {
welcome: '',
appUnavailable: 'La aplicación no está disponible',
appUnkonwError: 'La aplicación no está disponible',
appUnknownError: 'La aplicación no está disponible',
},
chat: {
newChat: 'Nuevo chat',
@ -10,7 +10,7 @@ const translation = {
unpinnedTitle: 'Chats',
newChatDefaultName: 'Nueva conversación',
resetChat: 'Reiniciar conversación',
powerBy: 'Desarrollado por',
poweredBy: 'Desarrollado por',
prompt: 'Indicación',
privatePromptConfigTitle: 'Configuración de la conversación',
publicPromptConfigTitle: 'Indicación inicial',

View File

@ -36,7 +36,7 @@ const translation = {
searchVar: 'Buscar variable',
variableNamePlaceholder: 'Nombre de la variable',
setVarValuePlaceholder: 'Establecer variable',
needConnecttip: 'Este paso no está conectado a nada',
needConnectTip: 'Este paso no está conectado a nada',
maxTreeDepth: 'Límite máximo de {{depth}} nodos por rama',
needEndNode: 'Debe agregarse el bloque de Fin',
needAnswerNode: 'Debe agregarse el bloque de Respuesta',

View File

@ -10,7 +10,7 @@ const translation = {
pause: 'مکث',
playing: 'در حال پخش',
loading: 'در حال بارگذاری',
merMaind: {
merMaid: {
rerender: 'بازسازی مجدد',
},
never: 'هرگز',

View File

@ -294,7 +294,7 @@ const translation = {
historyNoBeEmpty: 'تاریخچه مکالمه باید در پرس و جو تنظیم شود',
queryNoBeEmpty: 'پرس و جو باید در پرس و جو تنظیم شود',
},
variableConig: {
variableConfig: {
'addModalTitle': 'افزودن فیلد ورودی',
'editModalTitle': 'ویرایش فیلد ورودی',
'description': 'تنظیم برای متغیر {{varName}}',

View File

@ -199,7 +199,7 @@ const translation = {
invitationSent: 'دعوت‌نامه ارسال شد',
invitationSentTip: 'دعوت‌نامه ارسال شد و آنها می‌توانند وارد Dify شوند تا به داده‌های تیم شما دسترسی پیدا کنند.',
invitationLink: 'لینک دعوت',
failedinvitationEmails: 'کاربران زیر با موفقیت دعوت نشدند',
failedInvitationEmails: 'کاربران زیر با موفقیت دعوت نشدند',
ok: 'تایید',
removeFromTeam: 'حذف از تیم',
removeFromTeamTip: 'دسترسی تیم را حذف می‌کند',
@ -207,7 +207,7 @@ const translation = {
setMember: 'تنظیم به عنوان عضو عادی',
setBuilder: 'تنظیم به عنوان سازنده',
setEditor: 'تنظیم به عنوان ویرایشگر',
disinvite: 'لغو دعوت',
disInvite: 'لغو دعوت',
deleteMember: 'حذف عضو',
you: '(شما)',
},

View File

@ -109,8 +109,8 @@ const translation = {
QATitle: 'بخشبندی در قالب پرسش و پاسخ',
QATip: 'فعال کردن این گزینه توکنهای بیشتری مصرف خواهد کرد',
QALanguage: 'بخشبندی با استفاده از',
emstimateCost: 'برآورد',
emstimateSegment: 'بخشهای برآورد شده',
estimateCost: 'برآورد',
estimateSegment: 'بخشهای برآورد شده',
segmentCount: 'بخشها',
calculating: 'در حال محاسبه...',
fileSource: 'پیشپردازش اسناد',
@ -135,8 +135,8 @@ const translation = {
previewSwitchTipStart: 'پیشنمایش بخش فعلی در قالب متن است، تغییر به پیشنمایش قالب پرسش و پاسخ',
previewSwitchTipEnd: ' توکنهای اضافی مصرف خواهد کرد',
characters: 'کاراکترها',
indexSettedTip: 'برای تغییر روش شاخص، لطفاً به',
retrivalSettedTip: 'برای تغییر روش شاخص، لطفاً به',
indexSettingTip: 'برای تغییر روش شاخص، لطفاً به',
retrievalSettingTip: 'برای تغییر روش شاخص، لطفاً به',
datasetSettingLink: 'تنظیمات دانش بروید.',
},
stepThree: {

View File

@ -32,7 +32,7 @@ const translation = {
pp: 'سیاست حفظ حریم خصوصی',
tosDesc: 'با ثبت نام، شما با شرایط ما موافقت می‌کنید',
goToInit: 'اگر حساب را اولیه نکرده‌اید، لطفاً به صفحه اولیه‌سازی بروید',
donthave: 'ندارید؟',
dontHave: 'ندارید؟',
invalidInvitationCode: 'کد دعوت نامعتبر است',
accountAlreadyInited: 'حساب قبلاً اولیه شده است',
forgotPassword: 'رمز عبور خود را فراموش کرده‌اید؟',

View File

@ -2,7 +2,7 @@ const translation = {
common: {
welcome: '',
appUnavailable: 'اپ در دسترس نیست',
appUnkonwError: 'اپ در دسترس نیست',
appUnknownError: 'اپ در دسترس نیست',
},
chat: {
newChat: 'چت جدید',
@ -10,7 +10,7 @@ const translation = {
unpinnedTitle: 'چت‌ها',
newChatDefaultName: 'مکالمه جدید',
resetChat: 'بازنشانی مکالمه',
powerBy: 'قدرت‌گرفته از',
poweredBy: 'قدرت‌گرفته از',
prompt: 'پیشنهاد',
privatePromptConfigTitle: 'تنظیمات مکالمه',
publicPromptConfigTitle: 'پیشنهاد اولیه',

View File

@ -36,7 +36,7 @@ const translation = {
searchVar: 'جستجوی متغیر',
variableNamePlaceholder: 'نام متغیر',
setVarValuePlaceholder: 'تنظیم متغیر',
needConnecttip: 'این مرحله به هیچ چیزی متصل نیست',
needConnectTip: 'این مرحله به هیچ چیزی متصل نیست',
maxTreeDepth: 'حداکثر عمق {{depth}} نود در هر شاخه',
needEndNode: 'بلوک پایان باید اضافه شود',
needAnswerNode: 'بلوک پاسخ باید اضافه شود',

View File

@ -9,7 +9,7 @@ const translation = {
play: 'Jouer',
pause: 'Pause',
playing: 'Jouant',
merMaind: {
merMaid: {
rerender: 'Refaire Rerendu',
},
never: 'Jamais',

View File

@ -248,7 +248,7 @@ const translation = {
historyNoBeEmpty: 'L\'historique de la conversation doit être défini dans le prompt',
queryNoBeEmpty: 'La requête doit être définie dans le prompt',
},
variableConig: {
variableConfig: {
'addModalTitle': 'Add Input Field',
'editModalTitle': 'Edit Input Field',
'description': 'Setting for variable {{varName}}',

View File

@ -191,14 +191,14 @@ const translation = {
invitationSent: 'Invitation envoyée',
invitationSentTip: 'Invitation envoyée, et ils peuvent se connecter à Dify pour accéder aux données de votre équipe.',
invitationLink: 'Lien d\'invitation',
failedinvitationEmails: 'Les utilisateurs ci-dessous n\'ont pas été invités avec succès',
failedInvitationEmails: 'Les utilisateurs ci-dessous n\'ont pas été invités avec succès',
ok: 'D\'accord',
removeFromTeam: 'Retirer de l\'équipe',
removeFromTeamTip: 'Supprimera l\'accès de l\'équipe',
setAdmin: 'Définir comme administrateur',
setMember: 'Définir en tant que membre ordinaire',
setEditor: 'Définir en tant qu\'éditeur',
disinvite: 'Annuler l\'invitation',
disInvite: 'Annuler l\'invitation',
deleteMember: 'Supprimer Membre',
you: '(Vous)',
builder: 'Constructeur',

View File

@ -104,8 +104,8 @@ const translation = {
QATitle: 'Segmentation en format Question & Réponse',
QATip: 'Activer cette option consommera plus de jetons',
QALanguage: 'Segmenter en utilisant',
emstimateCost: 'Estimation',
emstimateSegment: 'Morceaux estimés',
estimateCost: 'Estimation',
estimateSegment: 'Morceaux estimés',
segmentCount: 'morceaux',
calculating: 'En calcul...',
fileSource: 'Prétraiter les documents',
@ -128,8 +128,8 @@ const translation = {
previewSwitchTipStart: 'L\'aperçu actuel du morceau est en format texte, passer à un aperçu en format de questions-réponses va',
previewSwitchTipEnd: 'consommer des tokens supplémentaires',
characters: 'personnages',
indexSettedTip: 'Pour changer la méthode d\'index, veuillez aller à la',
retrivalSettedTip: 'Pour changer la méthode d\'index, veuillez aller à la',
indexSettingTip: 'Pour changer la méthode d\'index, veuillez aller à la',
retrievalSettingTip: 'Pour changer la méthode d\'index, veuillez aller à la',
datasetSettingLink: 'Paramètres de connaissance.',
webpageUnit: 'Pages',
websiteSource: 'Site web de prétraitement',

View File

@ -31,7 +31,7 @@ const translation = {
pp: 'Politique de Confidentialité',
tosDesc: 'En vous inscrivant, vous acceptez nos',
goToInit: 'Si vous n\'avez pas initialisé le compte, veuillez vous rendre sur la page d\'initialisation',
donthave: 'Vous n\'avez pas ?',
dontHave: 'Vous n\'avez pas ?',
invalidInvitationCode: 'Code d\'invitation invalide',
accountAlreadyInited: 'Compte déjà initialisé',
forgotPassword: 'Mot de passe oublié?',

View File

@ -2,7 +2,7 @@ const translation = {
common: {
welcome: '',
appUnavailable: 'L\'application n\'est pas disponible',
appUnkonwError: 'L\'application n\'est pas disponible',
appUnknownError: 'L\'application n\'est pas disponible',
},
chat: {
newChat: 'Nouveau chat',
@ -10,7 +10,7 @@ const translation = {
unpinnedTitle: 'Discussions',
newChatDefaultName: 'Nouvelle conversation',
resetChat: 'Réinitialiser la conversation',
powerBy: 'Propulsé par',
poweredBy: 'Propulsé par',
prompt: 'Prompt',
privatePromptConfigTitle: 'Paramètres de conversation',
publicPromptConfigTitle: 'Prompt Initial',

View File

@ -36,7 +36,7 @@ const translation = {
searchVar: 'Rechercher une variable',
variableNamePlaceholder: 'Nom de la variable',
setVarValuePlaceholder: 'Définir la valeur de la variable',
needConnecttip: 'Cette étape n\'est connectée à rien',
needConnectTip: 'Cette étape n\'est connectée à rien',
maxTreeDepth: 'Limite maximale de {{depth}} nœuds par branche',
needEndNode: 'Le bloc de fin doit être ajouté',
needAnswerNode: 'Le bloc de réponse doit être ajouté',

View File

@ -10,7 +10,7 @@ const translation = {
pause: 'विराम',
playing: 'चल रहा है',
loading: 'लोड हो रहा है',
merMaind: {
merMaid: {
rerender: 'पुनः रीरेंडर करें',
},
never: 'कभी नहीं',

View File

@ -290,7 +290,7 @@ const translation = {
historyNoBeEmpty: 'संवाद इतिहास प्रॉम्प्ट में सेट होना चाहिए',
queryNoBeEmpty: 'प्रश्न प्रॉम्प्ट में सेट होना चाहिए',
},
variableConig: {
variableConfig: {
'addModalTitle': 'इनपुट फ़ील्ड जोड़ें',
'editModalTitle': 'इनपुट फ़ील्ड संपादित करें',
'description': 'वेरिएबल {{varName}} के लिए सेटिंग',

View File

@ -205,7 +205,7 @@ const translation = {
invitationSentTip:
'आमंत्रण भेजा गया, और वे साइन इन करके आपकी टीम डेटा तक पहुंच सकते हैं।',
invitationLink: 'आमंत्रण लिंक',
failedinvitationEmails:
failedInvitationEmails:
'नीचे दिए गए उपयोगकर्ताओं को सफलतापूर्वक आमंत्रित नहीं किया गया',
ok: 'ठीक है',
removeFromTeam: 'टीम से हटाएं',
@ -214,7 +214,7 @@ const translation = {
setMember: 'सामान्य सदस्य के रूप में सेट करें',
setBuilder: 'निर्माता के रूप में सेट करें',
setEditor: 'संपादक के रूप में सेट करें',
disinvite: 'आमंत्रण रद्द करें',
disInvite: 'आमंत्रण रद्द करें',
deleteMember: 'सदस्य को हटाएं',
you: '(आप)',
datasetOperator: 'ज्ञान व्यवस्थापक',

View File

@ -121,8 +121,8 @@ const translation = {
QATitle: 'प्रश्न और उत्तर प्रारूप में खंड करना',
QATip: 'इस विकल्प को सक्षम करने से अधिक टोकन खर्च होंगे',
QALanguage: 'का उपयोग करके खंड करना',
emstimateCost: 'अनुमानित लागत',
emstimateSegment: 'अनुमानित खंड',
estimateCost: 'अनुमानित लागत',
estimateSegment: 'अनुमानित खंड',
segmentCount: 'खंड',
calculating: 'गणना कर रहा है...',
fileSource: 'दस्तावेज़ों को पूर्व-प्रसंस्करण करें',
@ -152,8 +152,8 @@ const translation = {
'वर्तमान खंड पूर्वावलोकन पाठ प्रारूप में है, प्रश्न-उत्तर प्रारूप में स्विच करने से',
previewSwitchTipEnd: ' अतिरिक्त टोकन खर्च होंगे',
characters: 'वर्ण',
indexSettedTip: 'इंडेक्स विधि बदलने के लिए, कृपया जाएं ',
retrivalSettedTip: 'इंडेक्स विधि बदलने के लिए, कृपया जाएं ',
indexSettingTip: 'इंडेक्स विधि बदलने के लिए, कृपया जाएं ',
retrievalSettingTip: 'इंडेक्स विधि बदलने के लिए, कृपया जाएं ',
datasetSettingLink: 'ज्ञान सेटिंग्स।',
},
stepThree: {

View File

@ -36,7 +36,7 @@ const translation = {
tosDesc: 'साइन अप करके, आप हमारी सहमति देते हैं',
goToInit:
'यदि आपने खाता प्रारंभ नहीं किया है, तो कृपया प्रारंभिक पृष्ठ पर जाएं',
donthave: 'नहीं है?',
dontHave: 'नहीं है?',
invalidInvitationCode: 'अवैध निमंत्रण कोड',
accountAlreadyInited: 'खाता पहले से प्रारंभ किया गया है',
forgotPassword: 'क्या आपने अपना पासवर्ड भूल गए हैं?',

View File

@ -3,7 +3,7 @@ const translation = {
welcome: 'आपका स्वागत है',
appUnavailable: 'ऐप उपलब्ध नहीं है',
appUnknownError: 'अज्ञात त्रुटि, कृपया पुनः प्रयास करें',
appUnkonwError: 'ऐप अनुपलब्ध है',
appUnknownError: 'ऐप अनुपलब्ध है',
},
chat: {
newChat: 'नया चैट',
@ -11,7 +11,7 @@ const translation = {
unpinnedTitle: 'चैट',
newChatDefaultName: 'नया संवाद',
resetChat: 'संवाद रीसेट करें',
powerBy: 'संचालित है',
poweredBy: 'संचालित है',
prompt: 'प्रॉम्प्ट',
privatePromptConfigTitle: 'संवाद सेटिंग्स',
publicPromptConfigTitle: 'प्रारंभिक प्रॉम्प्ट',

View File

@ -36,7 +36,7 @@ const translation = {
searchVar: 'वेरिएबल खोजें',
variableNamePlaceholder: 'वेरिएबल नाम',
setVarValuePlaceholder: 'वेरिएबल सेट करें',
needConnecttip: 'यह चरण किसी से जुड़ा नहीं है',
needConnectTip: 'यह चरण किसी से जुड़ा नहीं है',
maxTreeDepth: 'प्रति शाखा अधिकतम {{depth}} नोड्स की सीमा',
needEndNode: 'अंत ब्लॉक जोड़ा जाना चाहिए',
needAnswerNode: 'उत्तर ब्लॉक जोड़ा जाना चाहिए',

View File

@ -10,7 +10,7 @@ const translation = {
pause: 'Pausa',
playing: 'In Riproduzione',
loading: 'Caricamento',
merMaind: {
merMaid: {
rerender: 'Rifare il rendering',
},
never: 'Mai',

View File

@ -293,7 +293,7 @@ const translation = {
'La cronologia delle conversazioni deve essere impostata nel prompt',
queryNoBeEmpty: 'La query deve essere impostata nel prompt',
},
variableConig: {
variableConfig: {
'addModalTitle': 'Aggiungi Campo Input',
'editModalTitle': 'Modifica Campo Input',
'description': 'Impostazione per la variabile {{varName}}',

View File

@ -209,7 +209,7 @@ const translation = {
invitationSentTip:
'Invito inviato, e possono accedere a Dify per accedere ai dati del tuo team.',
invitationLink: 'Link di Invito',
failedinvitationEmails:
failedInvitationEmails:
'Gli utenti seguenti non sono stati invitati con successo',
ok: 'OK',
removeFromTeam: 'Rimuovi dal team',
@ -218,7 +218,7 @@ const translation = {
setMember: 'Imposta come membro ordinario',
setBuilder: 'Imposta come builder',
setEditor: 'Imposta come editor',
disinvite: 'Annulla l\'invito',
disInvite: 'Annulla l\'invito',
deleteMember: 'Elimina Membro',
you: '(Tu)',
},

View File

@ -124,8 +124,8 @@ const translation = {
QATitle: 'Segmentazione in formato Domanda & Risposta',
QATip: 'Abilitare questa opzione consumerà più token',
QALanguage: 'Segmenta usando',
emstimateCost: 'Stima',
emstimateSegment: 'Blocchi stimati',
estimateCost: 'Stima',
estimateSegment: 'Blocchi stimati',
segmentCount: 'blocchi',
calculating: 'Calcolo in corso...',
fileSource: 'Preprocessa documenti',
@ -155,8 +155,8 @@ const translation = {
'L\'anteprima del blocco corrente è in formato testo, il passaggio a un\'anteprima in formato domanda e risposta',
previewSwitchTipEnd: ' consumerà token aggiuntivi',
characters: 'caratteri',
indexSettedTip: 'Per cambiare il metodo di indicizzazione, vai alle ',
retrivalSettedTip: 'Per cambiare il metodo di indicizzazione, vai alle ',
indexSettingTip: 'Per cambiare il metodo di indicizzazione, vai alle ',
retrievalSettingTip: 'Per cambiare il metodo di indicizzazione, vai alle ',
datasetSettingLink: 'impostazioni della Conoscenza.',
},
stepThree: {

View File

@ -38,7 +38,7 @@ const translation = {
tosDesc: 'Iscrivendoti, accetti i nostri',
goToInit:
'Se non hai inizializzato l\'account, vai alla pagina di inizializzazione',
donthave: 'Non hai?',
dontHave: 'Non hai?',
invalidInvitationCode: 'Codice di invito non valido',
accountAlreadyInited: 'Account già inizializzato',
forgotPassword: 'Hai dimenticato la password?',

View File

@ -2,7 +2,7 @@ const translation = {
common: {
welcome: '',
appUnavailable: 'L\'app non è disponibile',
appUnkonwError: 'L\'app non è disponibile',
appUnknownError: 'L\'app non è disponibile',
},
chat: {
newChat: 'Nuova chat',
@ -10,7 +10,7 @@ const translation = {
unpinnedTitle: 'Chat',
newChatDefaultName: 'Nuova conversazione',
resetChat: 'Reimposta conversazione',
powerBy: 'Powered by',
poweredBy: 'Powered by',
prompt: 'Prompt',
privatePromptConfigTitle: 'Impostazioni conversazione',
publicPromptConfigTitle: 'Prompt iniziale',

View File

@ -36,7 +36,7 @@ const translation = {
searchVar: 'Cerca variabile',
variableNamePlaceholder: 'Nome variabile',
setVarValuePlaceholder: 'Imposta variabile',
needConnecttip: 'Questo passaggio non è collegato a nulla',
needConnectTip: 'Questo passaggio non è collegato a nulla',
maxTreeDepth: 'Limite massimo di {{depth}} nodi per ramo',
needEndNode: 'Deve essere aggiunto il blocco di Fine',
needAnswerNode: 'Deve essere aggiunto il blocco di Risposta',

View File

@ -10,7 +10,7 @@ const translation = {
pause: '一時停止',
playing: '再生中',
loading: '読み込み中',
merMaind: {
merMaid: {
rerender: '再レンダリング',
},
never: 'なし',

View File

@ -295,7 +295,7 @@ const translation = {
historyNoBeEmpty: 'プロンプトには会話履歴を設定する必要があります',
queryNoBeEmpty: 'プロンプトにクエリを設定する必要があります',
},
variableConig: {
variableConfig: {
'addModalTitle': '入力フィールドを追加',
'editModalTitle': '入力フィールドを編集',
'description': '{{varName}} の変数設定',

View File

@ -199,7 +199,7 @@ const translation = {
invitationSent: '招待が送信されました',
invitationSentTip: '招待が送信され、彼らはDifyにサインインしてあなた様のチームデータにアクセスできます。',
invitationLink: '招待リンク',
failedinvitationEmails: '以下のユーザーは正常に招待されませんでした',
failedInvitationEmails: '以下のユーザーは正常に招待されませんでした',
ok: 'OK',
removeFromTeam: 'チームから削除',
removeFromTeamTip: 'チームへのアクセスが削除されます',
@ -207,7 +207,7 @@ const translation = {
setMember: '通常のメンバーに設定',
setBuilder: 'ビルダーに設定',
setEditor: 'エディターに設定',
disinvite: '招待をキャンセル',
disInvite: '招待をキャンセル',
deleteMember: 'メンバーを削除',
you: '(あなた様)',
},

View File

@ -109,8 +109,8 @@ const translation = {
QATitle: '質問と回答形式でセグメント化',
QATip: 'このオプションを有効にすると、追加のトークンが消費されます',
QALanguage: '使用言語',
emstimateCost: '見積もり',
emstimateSegment: '推定チャンク数',
estimateCost: '見積もり',
estimateSegment: '推定チャンク数',
segmentCount: 'チャンク',
calculating: '計算中...',
fileSource: 'ドキュメントの前処理',
@ -135,8 +135,8 @@ const translation = {
previewSwitchTipStart: '現在のチャンクプレビューはテキスト形式です。質問と回答形式のプレビューに切り替えると、',
previewSwitchTipEnd: ' 追加のトークンが消費されます',
characters: '文字',
indexSettedTip: 'インデックス方法を変更するには、',
retrivalSettedTip: '検索方法を変更するには、',
indexSettingTip: 'インデックス方法を変更するには、',
retrievalSettingTip: '検索方法を変更するには、',
datasetSettingLink: 'ナレッジ設定',
},
stepThree: {

View File

@ -32,7 +32,7 @@ const translation = {
pp: 'プライバシーポリシー',
tosDesc: 'サインアップすることで、以下に同意するものとします',
goToInit: 'アカウントを初期化していない場合は、初期化ページに移動してください',
donthave: 'お持ちでない場合',
dontHave: 'お持ちでない場合',
invalidInvitationCode: '無効な招待コード',
accountAlreadyInited: 'アカウントは既に初期化されています',
forgotPassword: 'パスワードを忘れましたか?',

View File

@ -2,7 +2,7 @@ const translation = {
common: {
welcome: '',
appUnavailable: 'アプリが利用できません',
appUnkonwError: 'アプリが利用できません',
appUnknownError: 'アプリが利用できません',
},
chat: {
newChat: '新しいチャット',
@ -10,7 +10,7 @@ const translation = {
unpinnedTitle: 'チャット',
newChatDefaultName: '新しい会話',
resetChat: '会話をリセット',
powerBy: 'Powered by',
poweredBy: 'Powered by',
prompt: 'プロンプト',
privatePromptConfigTitle: '会話の設定',
publicPromptConfigTitle: '初期プロンプト',

View File

@ -36,7 +36,7 @@ const translation = {
searchVar: '変数を検索',
variableNamePlaceholder: '変数名',
setVarValuePlaceholder: '変数を設定',
needConnecttip: 'このステップは何にも接続されていません',
needConnectTip: 'このステップは何にも接続されていません',
maxTreeDepth: 'ブランチごとの最大制限は{{depth}}ノードです',
needEndNode: '終了ブロックを追加する必要があります',
needAnswerNode: '回答ブロックを追加する必要があります',

View File

@ -10,7 +10,7 @@ const translation = {
pause: '일시 정지',
playing: '실행 중',
loading: '로드 중',
merMaind: {
merMaid: {
rerender: '다시 렌더링',
},
never: '없음',

View File

@ -259,7 +259,7 @@ const translation = {
historyNoBeEmpty: '프롬프트에 대화 기록을 설정해야 합니다',
queryNoBeEmpty: '프롬프트에 쿼리를 설정해야 합니다',
},
variableConig: {
variableConfig: {
'addModalTitle': '입력 필드 추가',
'editModalTitle': '입력 필드 편집',
'description': '{{varName}} 변수 설정',

View File

@ -187,14 +187,14 @@ const translation = {
invitationSent: '초대가 전송되었습니다',
invitationSentTip: '초대가 전송되었으며, 그들은 Dify에 로그인하여 당신의 팀 데이터에 액세스할 수 있습니다.',
invitationLink: '초대 링크',
failedinvitationEmails: '다음 사용자들은 성공적으로 초대되지 않았습니다',
failedInvitationEmails: '다음 사용자들은 성공적으로 초대되지 않았습니다',
ok: '확인',
removeFromTeam: '팀에서 제거',
removeFromTeamTip: '팀 액세스가 제거됩니다',
setAdmin: '관리자 설정',
setMember: '일반 멤버 설정',
setEditor: '편집자 설정',
disinvite: '초대 취소',
disInvite: '초대 취소',
deleteMember: '멤버 삭제',
you: '(나)',
datasetOperator: '지식 관리자',

View File

@ -104,8 +104,8 @@ const translation = {
QATitle: '질문과 답변 형식으로 세그먼트화',
QATip: '이 옵션을 활성화하면 추가 토큰이 소비됩니다',
QALanguage: '사용 언어',
emstimateCost: '예상 비용',
emstimateSegment: '예상 청크 수',
estimateCost: '예상 비용',
estimateSegment: '예상 청크 수',
segmentCount: '청크',
calculating: '계산 중...',
fileSource: '문서 전처리',
@ -128,8 +128,8 @@ const translation = {
previewSwitchTipStart: '현재 청크 미리보기는 텍스트 형식입니다. 질문과 답변 형식 미리보기로 전환하면',
previewSwitchTipEnd: ' 추가 토큰이 소비됩니다',
characters: '문자',
indexSettedTip: '인덱스 방식을 변경하려면,',
retrivalSettedTip: '인덱스 방식을 변경하려면,',
indexSettingTip: '인덱스 방식을 변경하려면,',
retrievalSettingTip: '인덱스 방식을 변경하려면,',
datasetSettingLink: '지식 설정',
webpageUnit: '페이지',
websiteSource: '웹 사이트 전처리',

View File

@ -31,7 +31,7 @@ const translation = {
pp: '개인정보 처리 방침',
tosDesc: '가입함으로써 다음 내용에 동의하게 됩니다.',
goToInit: '계정이 초기화되지 않았다면 초기화 페이지로 이동하세요.',
donthave: '계정이 없으신가요?',
dontHave: '계정이 없으신가요?',
invalidInvitationCode: '유효하지 않은 초대 코드입니다.',
accountAlreadyInited: '계정은 이미 초기화되었습니다.',
forgotPassword: '비밀번호를 잊으셨나요?',

View File

@ -2,7 +2,7 @@ const translation = {
common: {
welcome: '',
appUnavailable: '앱을 사용할 수 없습니다',
appUnkonwError: '앱을 사용할 수 없습니다',
appUnknownError: '앱을 사용할 수 없습니다',
},
chat: {
newChat: '새 채팅',
@ -10,7 +10,7 @@ const translation = {
unpinnedTitle: '채팅',
newChatDefaultName: '새 대화',
resetChat: '대화 재설정',
powerBy: 'Powered by',
poweredBy: 'Powered by',
prompt: '프롬프트',
privatePromptConfigTitle: '채팅 설정',
publicPromptConfigTitle: '초기 프롬프트',

View File

@ -36,7 +36,7 @@ const translation = {
searchVar: '변수 검색',
variableNamePlaceholder: '변수 이름',
setVarValuePlaceholder: '변수 값 설정',
needConnecttip: '이 단계는 아무것도 연결되어 있지 않습니다',
needConnectTip: '이 단계는 아무것도 연결되어 있지 않습니다',
maxTreeDepth: '분기당 최대 {{depth}} 노드 제한',
needEndNode: '종료 블록을 추가해야 합니다',
needAnswerNode: '답변 블록을 추가해야 합니다',

View File

@ -10,7 +10,7 @@ const translation = {
pause: 'Pauza',
playing: 'Gra',
loading: 'Ładowanie',
merMaind: {
merMaid: {
rerender: 'Przerób Renderowanie',
},
never: 'Nigdy',

View File

@ -289,7 +289,7 @@ const translation = {
historyNoBeEmpty: 'Historia konwersacji musi być ustawiona w monicie',
queryNoBeEmpty: 'Zapytanie musi być ustawione w monicie',
},
variableConig: {
variableConfig: {
'addModalTitle': 'Dodaj Pole Wejściowe',
'editModalTitle': 'Edytuj Pole Wejściowe',
'description': 'Ustawienia dla zmiennej {{varName}}',

View File

@ -199,14 +199,14 @@ const translation = {
invitationSentTip:
'Zaproszenie zostało wysłane, a oni mogą zalogować się do Dify, aby uzyskać dostęp do danych Twojego zespołu.',
invitationLink: 'Link zaproszenia',
failedinvitationEmails: 'Poniższe osoby nie zostały pomyślnie zaproszone',
failedInvitationEmails: 'Poniższe osoby nie zostały pomyślnie zaproszone',
ok: 'OK',
removeFromTeam: 'Usuń z zespołu',
removeFromTeamTip: 'Usunie dostęp do zespołu',
setAdmin: 'Ustaw jako administratora',
setMember: 'Ustaw jako zwykłego członka',
setEditor: 'Ustaw jako edytora',
disinvite: 'Anuluj zaproszenie',
disInvite: 'Anuluj zaproszenie',
deleteMember: 'Usuń członka',
you: '(Ty)',
datasetOperatorTip: 'Może zarządzać tylko bazą wiedzy',

View File

@ -112,8 +112,8 @@ const translation = {
QATitle: 'Segmentacja w formacie pytania i odpowiedzi',
QATip: 'Włączenie tej opcji spowoduje zużycie większej liczby tokenów',
QALanguage: 'Segmentacja przy użyciu',
emstimateCost: 'Oszacowanie',
emstimateSegment: 'Oszacowane bloki',
estimateCost: 'Oszacowanie',
estimateSegment: 'Oszacowane bloki',
segmentCount: 'bloki',
calculating: 'Obliczanie...',
fileSource: 'Przetwarzaj dokumenty',
@ -141,8 +141,8 @@ const translation = {
'Aktulany podgląd bloku jest w formacie tekstu, przełączenie na podgląd w formacie pytania i odpowiedzi spowoduje',
previewSwitchTipEnd: ' dodatkowe zużycie tokenów',
characters: 'znaki',
indexSettedTip: 'Aby zmienić metodę indeksowania, przejdź do ',
retrivalSettedTip: 'Aby zmienić metodę indeksowania, przejdź do ',
indexSettingTip: 'Aby zmienić metodę indeksowania, przejdź do ',
retrievalSettingTip: 'Aby zmienić metodę indeksowania, przejdź do ',
datasetSettingLink: 'ustawień Wiedzy.',
webpageUnit: 'Stron',
websiteSource: 'Witryna internetowa przetwarzania wstępnego',

View File

@ -36,7 +36,7 @@ const translation = {
pp: 'Polityka prywatności',
tosDesc: 'Założeniem konta zgadzasz się z naszymi',
goToInit: 'Jeśli nie zainicjowałeś konta, przejdź do strony inicjalizacji',
donthave: 'Nie masz?',
dontHave: 'Nie masz?',
invalidInvitationCode: 'Niewłaściwy kod zaproszenia',
accountAlreadyInited: 'Konto już zainicjowane',
forgotPassword: 'Zapomniałeś hasła?',

View File

@ -2,7 +2,7 @@ const translation = {
common: {
welcome: '',
appUnavailable: 'Aplikacja jest niedostępna',
appUnkonwError: 'Aplikacja jest niedostępna',
appUnknownError: 'Aplikacja jest niedostępna',
},
chat: {
newChat: 'Nowy czat',
@ -10,7 +10,7 @@ const translation = {
unpinnedTitle: 'Czaty',
newChatDefaultName: 'Nowa rozmowa',
resetChat: 'Resetuj rozmowę',
powerBy: 'Działany przez',
poweredBy: 'Działany przez',
prompt: 'Podpowiedź',
privatePromptConfigTitle: 'Ustawienia rozmowy',
publicPromptConfigTitle: 'Początkowa podpowiedź',

View File

@ -36,7 +36,7 @@ const translation = {
searchVar: 'Szukaj zmiennej',
variableNamePlaceholder: 'Nazwa zmiennej',
setVarValuePlaceholder: 'Ustaw zmienną',
needConnecttip: 'Ten krok nie jest połączony z niczym',
needConnectTip: 'Ten krok nie jest połączony z niczym',
maxTreeDepth: 'Maksymalny limit {{depth}} węzłów na gałąź',
needEndNode: 'Należy dodać blok końcowy',
needAnswerNode: 'Należy dodać blok odpowiedzi',

View File

@ -6,7 +6,7 @@ const translation = {
ok: 'Em Serviço',
copy: 'Copiar',
copied: 'Copiado',
merMaind: {
merMaid: {
rerender: 'Refazer Rerender',
},
never: 'Nunca',

View File

@ -265,7 +265,7 @@ const translation = {
historyNoBeEmpty: 'O histórico da conversa deve ser definido na solicitação',
queryNoBeEmpty: 'A consulta deve ser definida na solicitação',
},
variableConig: {
variableConfig: {
'addModalTitle': 'Adicionar Campo de Entrada',
'editModalTitle': 'Editar Campo de Entrada',
'description': 'Configuração para a variável {{varName}}',

View File

@ -191,14 +191,14 @@ const translation = {
invitationSent: 'Convite enviado',
invitationSentTip: 'Convite enviado e eles podem fazer login no Dify para acessar os dados da sua equipe.',
invitationLink: 'Link do Convite',
failedinvitationEmails: 'Os seguintes usuários não foram convidados com sucesso',
failedInvitationEmails: 'Os seguintes usuários não foram convidados com sucesso',
ok: 'OK',
removeFromTeam: 'Remover da equipe',
removeFromTeamTip: 'Removerá o acesso da equipe',
setAdmin: 'Definir como administrador',
setMember: 'Definir como membro comum',
setEditor: 'Definir como editor',
disinvite: 'Cancelar o convite',
disInvite: 'Cancelar o convite',
deleteMember: 'Excluir Membro',
you: '(Você)',
datasetOperatorTip: 'Só pode gerenciar a base de dados de conhecimento',

View File

@ -104,8 +104,8 @@ const translation = {
QATitle: 'Fragmentação no formato de Perguntas e Respostas',
QATip: 'Habilitar esta opção consumirá mais tokens',
QALanguage: 'Fragmentar usando',
emstimateCost: 'Estimativa',
emstimateSegment: 'Fragmentos estimados',
estimateCost: 'Estimativa',
estimateSegment: 'Fragmentos estimados',
segmentCount: 'fragmentos',
calculating: 'Calculando...',
fileSource: 'Pré-processar documentos',
@ -128,8 +128,8 @@ const translation = {
previewSwitchTipStart: 'A visualização atual do fragmento está no formato de texto, alternar para uma visualização no formato de Perguntas e Respostas irá',
previewSwitchTipEnd: ' consumir tokens adicionais',
characters: 'caracteres',
indexSettedTip: 'Para alterar o método de índice, por favor vá para as ',
retrivalSettedTip: 'Para alterar o método de índice, por favor vá para as ',
indexSettingTip: 'Para alterar o método de índice, por favor vá para as ',
retrievalSettingTip: 'Para alterar o método de índice, por favor vá para as ',
datasetSettingLink: 'configurações do Conhecimento.',
websiteSource: 'Site de pré-processamento',
webpageUnit: 'Páginas',

View File

@ -31,7 +31,7 @@ const translation = {
pp: 'Política de Privacidade',
tosDesc: 'Ao se inscrever, você concorda com nossos',
goToInit: 'Se você não inicializou a conta, vá para a página de inicialização',
donthave: 'Não tem?',
dontHave: 'Não tem?',
invalidInvitationCode: 'Código de convite inválido',
accountAlreadyInited: 'Conta já iniciada',
forgotPassword: 'Esqueceu sua senha?',

View File

@ -2,7 +2,7 @@ const translation = {
common: {
welcome: '',
appUnavailable: 'O aplicativo não está disponível',
appUnkonwError: 'O aplicativo encontrou um erro desconhecido',
appUnknownError: 'O aplicativo encontrou um erro desconhecido',
},
chat: {
newChat: 'Nova conversa',
@ -10,7 +10,7 @@ const translation = {
unpinnedTitle: 'Conversas',
newChatDefaultName: 'Nova conversa',
resetChat: 'Redefinir conversa',
powerBy: 'Desenvolvido por',
poweredBy: 'Desenvolvido por',
prompt: 'Prompt',
privatePromptConfigTitle: 'Configurações da conversa',
publicPromptConfigTitle: 'Prompt inicial',

View File

@ -36,7 +36,7 @@ const translation = {
searchVar: 'Buscar variável',
variableNamePlaceholder: 'Nome da variável',
setVarValuePlaceholder: 'Definir valor da variável',
needConnecttip: 'Este passo não está conectado a nada',
needConnectTip: 'Este passo não está conectado a nada',
maxTreeDepth: 'Limite máximo de {{depth}} nós por ramo',
needEndNode: 'O bloco de fim deve ser adicionado',
needAnswerNode: 'O bloco de resposta deve ser adicionado',

View File

@ -10,7 +10,7 @@ const translation = {
pause: 'Pauză',
playing: 'În redare',
loading: 'Se încarcă',
merMaind: {
merMaid: {
rerender: 'Reprocesare',
},
never: 'Niciodată',

View File

@ -265,7 +265,7 @@ const translation = {
historyNoBeEmpty: 'Istoricul conversației trebuie setat în prompt',
queryNoBeEmpty: 'Interogația trebuie setată în prompt',
},
variableConig: {
variableConfig: {
'addModalTitle': 'Adăugați câmp de intrare',
'editModalTitle': 'Editați câmpul de intrare',
'description': 'Setare pentru variabila {{varName}}',

View File

@ -191,14 +191,14 @@ const translation = {
invitationSent: 'Invitație trimisă',
invitationSentTip: 'Invitația a fost trimisă și pot să se autentifice în Dify pentru a accesa datele echipei dvs.',
invitationLink: 'Link de invitație',
failedinvitationEmails: 'Următorii utilizatori nu au fost invitați cu succes',
failedInvitationEmails: 'Următorii utilizatori nu au fost invitați cu succes',
ok: 'OK',
removeFromTeam: 'Elimină din echipă',
removeFromTeamTip: 'Va elimina accesul la echipă',
setAdmin: 'Setează ca administrator',
setMember: 'Setează ca membru obișnuit',
setEditor: 'Setează ca editor',
disinvite: 'Anulează invitația',
disInvite: 'Anulează invitația',
deleteMember: 'Șterge membru',
you: '(Dvs.)',
datasetOperatorTip: 'Numai poate gestiona baza de cunoștințe',

View File

@ -104,8 +104,8 @@ const translation = {
QATitle: 'Segmentarea în format Întrebare și Răspuns',
QATip: 'Activarea acestei opțiuni va consuma mai multe jetoane',
QALanguage: 'Segmentează folosind',
emstimateCost: 'Estimare',
emstimateSegment: 'Segmente estimate',
estimateCost: 'Estimare',
estimateSegment: 'Segmente estimate',
segmentCount: 'segmente',
calculating: 'Se calculează...',
fileSource: 'Prelucrează documente',
@ -128,8 +128,8 @@ const translation = {
previewSwitchTipStart: 'Previzualizarea curentă a segmentului este în format text, comutarea la o previzualizare în format întrebare și răspuns va',
previewSwitchTipEnd: ' consuma jetoane suplimentare',
characters: 'caractere',
indexSettedTip: 'Pentru a modifica metoda de indexare, vă rugăm să mergeți la ',
retrivalSettedTip: 'Pentru a modifica metoda de indexare, vă rugăm să mergeți la ',
indexSettingTip: 'Pentru a modifica metoda de indexare, vă rugăm să mergeți la ',
retrievalSettingTip: 'Pentru a modifica metoda de indexare, vă rugăm să mergeți la ',
datasetSettingLink: 'setările Cunoștinței.',
webpageUnit: 'Pagini',
websiteSource: 'Site-ul web de preprocesare',

Some files were not shown because too many files have changed in this diff Show More