feat: agent checklist i18n
This commit is contained in:
parent
d3d606799d
commit
c6c388fbda
@ -13,9 +13,10 @@ import ToolSelector from '@/app/components/plugins/plugin-detail-panel/tool-sele
|
|||||||
import MultipleToolSelector from '@/app/components/plugins/plugin-detail-panel/multiple-tool-selector'
|
import MultipleToolSelector from '@/app/components/plugins/plugin-detail-panel/multiple-tool-selector'
|
||||||
import Field from './field'
|
import Field from './field'
|
||||||
import { type ComponentProps, memo } from 'react'
|
import { type ComponentProps, memo } from 'react'
|
||||||
import { useDefaultModel, useLanguage } from '@/app/components/header/account-setting/model-provider-page/hooks'
|
import { useDefaultModel } from '@/app/components/header/account-setting/model-provider-page/hooks'
|
||||||
import Editor from './prompt/editor'
|
import Editor from './prompt/editor'
|
||||||
import { useWorkflowStore } from '../../../store'
|
import { useWorkflowStore } from '../../../store'
|
||||||
|
import { useRenderI18nObject } from '@/hooks/use-i18n'
|
||||||
|
|
||||||
export type Strategy = {
|
export type Strategy = {
|
||||||
agent_strategy_provider_name: string
|
agent_strategy_provider_name: string
|
||||||
@ -51,8 +52,8 @@ type CustomField = ToolSelectorSchema | MultipleToolSelectorSchema | StringSchem
|
|||||||
export const AgentStrategy = memo((props: AgentStrategyProps) => {
|
export const AgentStrategy = memo((props: AgentStrategyProps) => {
|
||||||
const { strategy, onStrategyChange, formSchema, formValue, onFormValueChange } = props
|
const { strategy, onStrategyChange, formSchema, formValue, onFormValueChange } = props
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
const language = useLanguage()
|
|
||||||
const defaultModel = useDefaultModel(ModelTypeEnum.textGeneration)
|
const defaultModel = useDefaultModel(ModelTypeEnum.textGeneration)
|
||||||
|
const renderI18nObject = useRenderI18nObject()
|
||||||
const workflowStore = useWorkflowStore()
|
const workflowStore = useWorkflowStore()
|
||||||
const {
|
const {
|
||||||
setControlPromptEditorRerenderKey,
|
setControlPromptEditorRerenderKey,
|
||||||
@ -71,7 +72,7 @@ export const AgentStrategy = memo((props: AgentStrategyProps) => {
|
|||||||
const onChange = (value: number) => {
|
const onChange = (value: number) => {
|
||||||
props.onChange({ ...props.value, [schema.variable]: value })
|
props.onChange({ ...props.value, [schema.variable]: value })
|
||||||
}
|
}
|
||||||
return <Field title={def.label[language]} tooltip={def.tooltip?.[language]} inline>
|
return <Field title={renderI18nObject(def.label)} tooltip={def.tooltip && renderI18nObject(def.tooltip)} inline>
|
||||||
<div className='flex w-[200px] items-center gap-3'>
|
<div className='flex w-[200px] items-center gap-3'>
|
||||||
<Slider
|
<Slider
|
||||||
value={value}
|
value={value}
|
||||||
@ -104,7 +105,7 @@ export const AgentStrategy = memo((props: AgentStrategyProps) => {
|
|||||||
props.onChange({ ...props.value, [schema.variable]: value })
|
props.onChange({ ...props.value, [schema.variable]: value })
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
<Field title={schema.label[language]} tooltip={schema.tooltip?.[language]}>
|
<Field title={renderI18nObject(schema.label)} tooltip={schema.tooltip && renderI18nObject(schema.tooltip)}>
|
||||||
<ToolSelector
|
<ToolSelector
|
||||||
scope={schema.scope}
|
scope={schema.scope}
|
||||||
value={value}
|
value={value}
|
||||||
@ -123,8 +124,8 @@ export const AgentStrategy = memo((props: AgentStrategyProps) => {
|
|||||||
<MultipleToolSelector
|
<MultipleToolSelector
|
||||||
scope={schema.scope}
|
scope={schema.scope}
|
||||||
value={value || []}
|
value={value || []}
|
||||||
label={schema.label[language]}
|
label={renderI18nObject(schema.label)}
|
||||||
tooltip={schema.tooltip?.[language]}
|
tooltip={schema.tooltip && renderI18nObject(schema.tooltip)}
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
supportCollapse
|
supportCollapse
|
||||||
/>
|
/>
|
||||||
@ -143,12 +144,12 @@ export const AgentStrategy = memo((props: AgentStrategyProps) => {
|
|||||||
value={value}
|
value={value}
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
onGenerated={handleGenerated}
|
onGenerated={handleGenerated}
|
||||||
title={schema.label[language]}
|
title={renderI18nObject(schema.label)}
|
||||||
headerClassName='bg-transparent px-0 text-text-secondary system-sm-semibold-uppercase'
|
headerClassName='bg-transparent px-0 text-text-secondary system-sm-semibold-uppercase'
|
||||||
containerClassName='bg-transparent'
|
containerClassName='bg-transparent'
|
||||||
gradientBorder={false}
|
gradientBorder={false}
|
||||||
isSupportPromptGenerator={!!schema.auto_generate?.type}
|
isSupportPromptGenerator={!!schema.auto_generate?.type}
|
||||||
titleTooltip={schema.tooltip?.[language]}
|
titleTooltip={schema.tooltip && renderI18nObject(schema.tooltip)}
|
||||||
editorContainerClassName='px-0'
|
editorContainerClassName='px-0'
|
||||||
isSupportJinja={schema.template?.enabled}
|
isSupportJinja={schema.template?.enabled}
|
||||||
varList={[]}
|
varList={[]}
|
||||||
|
@ -2,6 +2,7 @@ import type { StrategyDetail, StrategyPluginDetail } from '@/app/components/plug
|
|||||||
import { ALL_CHAT_AVAILABLE_BLOCKS, ALL_COMPLETION_AVAILABLE_BLOCKS } from '../../constants'
|
import { ALL_CHAT_AVAILABLE_BLOCKS, ALL_COMPLETION_AVAILABLE_BLOCKS } from '../../constants'
|
||||||
import type { NodeDefault } from '../../types'
|
import type { NodeDefault } from '../../types'
|
||||||
import type { AgentNodeType } from './types'
|
import type { AgentNodeType } from './types'
|
||||||
|
import { renderI18nObject } from '@/hooks/use-i18n'
|
||||||
|
|
||||||
const nodeDefault: NodeDefault<AgentNodeType> = {
|
const nodeDefault: NodeDefault<AgentNodeType> = {
|
||||||
defaultValue: {
|
defaultValue: {
|
||||||
@ -32,11 +33,10 @@ const nodeDefault: NodeDefault<AgentNodeType> = {
|
|||||||
if (param.required && !payload.agent_parameters?.[param.name]?.value) {
|
if (param.required && !payload.agent_parameters?.[param.name]?.value) {
|
||||||
return {
|
return {
|
||||||
isValid: false,
|
isValid: false,
|
||||||
errorMessage: t('workflow.errorMsg.fieldRequired', { field: param.label[language] }),
|
errorMessage: t('workflow.errorMsg.fieldRequired', { field: renderI18nObject(param.label, language) }),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// TODO: tool selector valid?
|
|
||||||
return {
|
return {
|
||||||
isValid: true,
|
isValid: true,
|
||||||
errorMessage: '',
|
errorMessage: '',
|
||||||
|
14
web/hooks/use-i18n.ts
Normal file
14
web/hooks/use-i18n.ts
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import { useLanguage } from '@/app/components/header/account-setting/model-provider-page/hooks'
|
||||||
|
|
||||||
|
export const renderI18nObject = (obj: Record<string, string>, language: string) => {
|
||||||
|
if (obj?.[language]) return obj[language]
|
||||||
|
if (obj?.en_US) return obj.en_US
|
||||||
|
return Object.values(obj)[0]
|
||||||
|
}
|
||||||
|
|
||||||
|
export const useRenderI18nObject = () => {
|
||||||
|
const language = useLanguage()
|
||||||
|
return (obj: Record<string, string>) => {
|
||||||
|
return renderI18nObject(obj, language)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user