Introduce Plugins (#13836)

Signed-off-by: yihong0618 <zouzou0208@gmail.com>
Signed-off-by: -LAN- <laipz8200@outlook.com>
Signed-off-by: xhe <xw897002528@gmail.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: takatost <takatost@gmail.com>
Co-authored-by: kurokobo <kuro664@gmail.com>
Co-authored-by: Novice Lee <novicelee@NoviPro.local>
Co-authored-by: zxhlyh <jasonapring2015@outlook.com>
Co-authored-by: AkaraChen <akarachen@outlook.com>
Co-authored-by: Yi <yxiaoisme@gmail.com>
Co-authored-by: Joel <iamjoel007@gmail.com>
Co-authored-by: JzoNg <jzongcode@gmail.com>
Co-authored-by: twwu <twwu@dify.ai>
Co-authored-by: Hiroshi Fujita <fujita-h@users.noreply.github.com>
Co-authored-by: AkaraChen <85140972+AkaraChen@users.noreply.github.com>
Co-authored-by: NFish <douxc512@gmail.com>
Co-authored-by: Wu Tianwei <30284043+WTW0313@users.noreply.github.com>
Co-authored-by: 非法操作 <hjlarry@163.com>
Co-authored-by: Novice <857526207@qq.com>
Co-authored-by: Hiroki Nagai <82458324+nagaihiroki-git@users.noreply.github.com>
Co-authored-by: Gen Sato <52241300+halogen22@users.noreply.github.com>
Co-authored-by: eux <euxuuu@gmail.com>
Co-authored-by: huangzhuo1949 <167434202+huangzhuo1949@users.noreply.github.com>
Co-authored-by: huangzhuo <huangzhuo1@xiaomi.com>
Co-authored-by: lotsik <lotsik@mail.ru>
Co-authored-by: crazywoola <100913391+crazywoola@users.noreply.github.com>
Co-authored-by: nite-knite <nkCoding@gmail.com>
Co-authored-by: Jyong <76649700+JohnJyong@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: gakkiyomi <gakkiyomi@aliyun.com>
Co-authored-by: CN-P5 <heibai2006@gmail.com>
Co-authored-by: CN-P5 <heibai2006@qq.com>
Co-authored-by: Chuehnone <1897025+chuehnone@users.noreply.github.com>
Co-authored-by: yihong <zouzou0208@gmail.com>
Co-authored-by: Kevin9703 <51311316+Kevin9703@users.noreply.github.com>
Co-authored-by: -LAN- <laipz8200@outlook.com>
Co-authored-by: Boris Feld <lothiraldan@gmail.com>
Co-authored-by: mbo <himabo@gmail.com>
Co-authored-by: mabo <mabo@aeyes.ai>
Co-authored-by: Warren Chen <warren.chen830@gmail.com>
Co-authored-by: JzoNgKVO <27049666+JzoNgKVO@users.noreply.github.com>
Co-authored-by: jiandanfeng <chenjh3@wangsu.com>
Co-authored-by: zhu-an <70234959+xhdd123321@users.noreply.github.com>
Co-authored-by: zhaoqingyu.1075 <zhaoqingyu.1075@bytedance.com>
Co-authored-by: 海狸大師 <86974027+yenslife@users.noreply.github.com>
Co-authored-by: Xu Song <xusong.vip@gmail.com>
Co-authored-by: rayshaw001 <396301947@163.com>
Co-authored-by: Ding Jiatong <dingjiatong@gmail.com>
Co-authored-by: Bowen Liang <liangbowen@gf.com.cn>
Co-authored-by: JasonVV <jasonwangiii@outlook.com>
Co-authored-by: le0zh <newlight@qq.com>
Co-authored-by: zhuxinliang <zhuxinliang@didiglobal.com>
Co-authored-by: k-zaku <zaku99@outlook.jp>
Co-authored-by: luckylhb90 <luckylhb90@gmail.com>
Co-authored-by: hobo.l <hobo.l@binance.com>
Co-authored-by: jiangbo721 <365065261@qq.com>
Co-authored-by: 刘江波 <jiangbo721@163.com>
Co-authored-by: Shun Miyazawa <34241526+miya@users.noreply.github.com>
Co-authored-by: EricPan <30651140+Egfly@users.noreply.github.com>
Co-authored-by: crazywoola <427733928@qq.com>
Co-authored-by: sino <sino2322@gmail.com>
Co-authored-by: Jhvcc <37662342+Jhvcc@users.noreply.github.com>
Co-authored-by: lowell <lowell.hu@zkteco.in>
Co-authored-by: Boris Polonsky <BorisPolonsky@users.noreply.github.com>
Co-authored-by: Ademílson Tonato <ademilsonft@outlook.com>
Co-authored-by: Ademílson Tonato <ademilson.tonato@refurbed.com>
Co-authored-by: IWAI, Masaharu <iwaim.sub@gmail.com>
Co-authored-by: Yueh-Po Peng (Yabi) <94939112+y10ab1@users.noreply.github.com>
Co-authored-by: Jason <ggbbddjm@gmail.com>
Co-authored-by: Xin Zhang <sjhpzx@gmail.com>
Co-authored-by: yjc980121 <3898524+yjc980121@users.noreply.github.com>
Co-authored-by: heyszt <36215648+hieheihei@users.noreply.github.com>
Co-authored-by: Abdullah AlOsaimi <osaimiacc@gmail.com>
Co-authored-by: Abdullah AlOsaimi <189027247+osaimi@users.noreply.github.com>
Co-authored-by: Yingchun Lai <laiyingchun@apache.org>
Co-authored-by: Hash Brown <hi@xzd.me>
Co-authored-by: zuodongxu <192560071+zuodongxu@users.noreply.github.com>
Co-authored-by: Masashi Tomooka <tmokmss@users.noreply.github.com>
Co-authored-by: aplio <ryo.091219@gmail.com>
Co-authored-by: Obada Khalili <54270856+obadakhalili@users.noreply.github.com>
Co-authored-by: Nam Vu <zuzoovn@gmail.com>
Co-authored-by: Kei YAMAZAKI <1715090+kei-yamazaki@users.noreply.github.com>
Co-authored-by: TechnoHouse <13776377+deephbz@users.noreply.github.com>
Co-authored-by: Riddhimaan-Senapati <114703025+Riddhimaan-Senapati@users.noreply.github.com>
Co-authored-by: MaFee921 <31881301+2284730142@users.noreply.github.com>
Co-authored-by: te-chan <t-nakanome@sakura-is.co.jp>
Co-authored-by: HQidea <HQidea@users.noreply.github.com>
Co-authored-by: Joshbly <36315710+Joshbly@users.noreply.github.com>
Co-authored-by: xhe <xw897002528@gmail.com>
Co-authored-by: weiwenyan-dev <154779315+weiwenyan-dev@users.noreply.github.com>
Co-authored-by: ex_wenyan.wei <ex_wenyan.wei@tcl.com>
Co-authored-by: engchina <12236799+engchina@users.noreply.github.com>
Co-authored-by: engchina <atjapan2015@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: 呆萌闷油瓶 <253605712@qq.com>
Co-authored-by: Kemal <kemalmeler@outlook.com>
Co-authored-by: Lazy_Frog <4590648+lazyFrogLOL@users.noreply.github.com>
Co-authored-by: Yi Xiao <54782454+YIXIAO0@users.noreply.github.com>
Co-authored-by: Steven sun <98230804+Tuyohai@users.noreply.github.com>
Co-authored-by: steven <sunzwj@digitalchina.com>
Co-authored-by: Kalo Chin <91766386+fdb02983rhy@users.noreply.github.com>
Co-authored-by: Katy Tao <34019945+KatyTao@users.noreply.github.com>
Co-authored-by: depy <42985524+h4ckdepy@users.noreply.github.com>
Co-authored-by: 胡春东 <gycm520@gmail.com>
Co-authored-by: Junjie.M <118170653@qq.com>
Co-authored-by: MuYu <mr.muzea@gmail.com>
Co-authored-by: Naoki Takashima <39912547+takatea@users.noreply.github.com>
Co-authored-by: Summer-Gu <37869445+gubinjie@users.noreply.github.com>
Co-authored-by: Fei He <droxer.he@gmail.com>
Co-authored-by: ybalbert001 <120714773+ybalbert001@users.noreply.github.com>
Co-authored-by: Yuanbo Li <ybalbert@amazon.com>
Co-authored-by: douxc <7553076+douxc@users.noreply.github.com>
Co-authored-by: liuzhenghua <1090179900@qq.com>
Co-authored-by: Wu Jiayang <62842862+Wu-Jiayang@users.noreply.github.com>
Co-authored-by: Your Name <you@example.com>
Co-authored-by: kimjion <45935338+kimjion@users.noreply.github.com>
Co-authored-by: AugNSo <song.tiankai@icloud.com>
Co-authored-by: llinvokerl <38915183+llinvokerl@users.noreply.github.com>
Co-authored-by: liusurong.lsr <liusurong.lsr@alibaba-inc.com>
Co-authored-by: Vasu Negi <vasu-negi@users.noreply.github.com>
Co-authored-by: Hundredwz <1808096180@qq.com>
Co-authored-by: Xiyuan Chen <52963600+GareArc@users.noreply.github.com>
This commit is contained in:
Yeuoly 2025-02-17 17:05:13 +08:00 • committed by GitHub
commit 403e2d58b9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3272 changed files with 66339 additions and 281594 deletions

View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

4
web/i18n/de-DE/plugin.ts Normal file
View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

View file

@ -103,7 +103,7 @@ const translation = {
edit: 'Edit annotation',
},
dataSet: {
title: 'Context',
title: 'Knowledge',
noData: 'You can import Knowledge as context',
words: 'Words',
textBlocks: 'Text Blocks',

View file

@ -173,6 +173,12 @@ const translation = {
removeConfirmContent: 'The current configuration is in use, removing it will turn off the Tracing feature.',
},
},
appSelector: {
label: 'APP',
placeholder: 'Select an app...',
params: 'APP PARAMETERS',
noParams: 'No parameters needed',
},
showMyCreatedAppsOnly: 'Created by me',
}

View file

@ -23,9 +23,11 @@ const translation = {
remove: 'Remove',
send: 'Send',
copy: 'Copy',
copied: 'Copied',
lineBreak: 'Line break',
sure: 'I\'m sure',
download: 'Download',
viewDetails: 'View Details',
delete: 'Delete',
deleteApp: 'Delete App',
settings: 'Settings',
@ -39,13 +41,14 @@ const translation = {
duplicate: 'Duplicate',
rename: 'Rename',
audioSourceUnavailable: 'AudioSource is unavailable',
close: 'Close',
copyImage: 'Copy Image',
imageCopied: 'Image copied',
zoomOut: 'Zoom Out',
zoomIn: 'Zoom In',
openInNewTab: 'Open in new tab',
in: 'in',
saveAndRegenerate: 'Save & Regenerate Child Chunks',
close: 'Close',
view: 'View',
viewMore: 'VIEW MORE',
regenerate: 'Regenerate',
@ -127,12 +130,15 @@ const translation = {
Custom: 'Custom',
},
addMoreModel: 'Go to settings to add more models',
settingsLink: 'Model Provider Settings',
capabilities: 'MultiModal Capabilities',
},
menus: {
status: 'beta',
explore: 'Explore',
apps: 'Studio',
plugins: 'Plugins',
exploreMarketplace: 'Explore Marketplace',
pluginsTips: 'Integrate third-party plugins or create ChatGPT-compatible AI-Plugins.',
datasets: 'Knowledge',
datasetsTips: 'COMING SOON: Import your own text data or write data in real-time via Webhook for LLM context enhancement.',
@ -155,6 +161,7 @@ const translation = {
settings: {
accountGroup: 'GENERAL',
workplaceGroup: 'WORKSPACE',
generalGroup: 'GENERAL',
account: 'My account',
members: 'Members',
billing: 'Billing',
@ -304,7 +311,7 @@ const translation = {
},
},
modelProvider: {
notConfigured: 'The system model has not yet been fully configured, and some functions may be unavailable.',
notConfigured: 'The system model has not yet been fully configured',
systemModelSettings: 'System Model Settings',
systemModelSettingsLink: 'Why is it necessary to set up a system model?',
selectModel: 'Select your model',
@ -402,6 +409,12 @@ const translation = {
loadBalancingLeastKeyWarning: 'To enable load balancing at least 2 keys must be enabled.',
loadBalancingInfo: 'By default, load balancing uses the Round-robin strategy. If rate limiting is triggered, a 1-minute cooldown period will be applied.',
upgradeForLoadBalancing: 'Upgrade your plan to enable Load Balancing.',
toBeConfigured: 'To be configured',
configureTip: 'Set up api-key or add model to use',
installProvider: 'Install model providers',
discoverMore: 'Discover more in ',
emptyProviderTitle: 'Model provider not set up',
emptyProviderTip: 'Please install a model provider first.',
},
dataSource: {
add: 'Add a data source',

View file

@ -1,8 +1,7 @@
const translation = {
steps: {
header: {
creation: 'Create Knowledge',
update: 'Add data',
fallbackRoute: 'Knowledge',
},
one: 'Data Source',
two: 'Document Processing',

View file

@ -0,0 +1,25 @@
const translation = {
allTags: 'All Tags',
searchTags: 'Search Tags',
tags: {
agent: 'Agent',
search: 'Search',
image: 'Image',
videos: 'Videos',
weather: 'Weather',
finance: 'Finance',
design: 'Design',
travel: 'Travel',
social: 'Social',
news: 'News',
medical: 'Medical',
productivity: 'Productivity',
education: 'Education',
business: 'Business',
entertainment: 'Entertainment',
utilities: 'Utilities',
other: 'Other',
},
}
export default translation

209
web/i18n/en-US/plugin.ts Normal file
View file

@ -0,0 +1,209 @@
const translation = {
category: {
all: 'All',
models: 'Models',
tools: 'Tools',
agents: 'Agent Strategies',
extensions: 'Extensions',
bundles: 'Bundles',
},
categorySingle: {
model: 'Model',
tool: 'Tool',
agent: 'Agent Strategy',
extension: 'Extension',
bundle: 'Bundle',
},
search: 'Search',
allCategories: 'All Categories',
searchCategories: 'Search Categories',
searchPlugins: 'Search plugins',
from: 'From',
findMoreInMarketplace: 'Find more in Marketplace',
searchInMarketplace: 'Search in Marketplace',
fromMarketplace: 'From Marketplace',
endpointsEnabled: '{{num}} sets of endpoints enabled',
searchTools: 'Search tools...',
installPlugin: 'Install plugin',
installFrom: 'INSTALL FROM',
list: {
noInstalled: 'No plugins installed',
notFound: 'No plugins found',
source: {
marketplace: 'Install from Marketplace',
github: 'Install from GitHub',
local: 'Install from Local Package File',
},
},
source: {
marketplace: 'Marketplace',
github: 'GitHub',
local: 'Local Package File',
},
detailPanel: {
switchVersion: 'Switch Version',
categoryTip: {
marketplace: 'Installed from Marketplace',
github: 'Installed from Github',
local: 'Local Plugin',
debugging: 'Debugging Plugin',
},
operation: {
install: 'Install',
detail: 'Details',
update: 'Update',
info: 'Plugin Info',
checkUpdate: 'Check Update',
viewDetail: 'View Detail',
remove: 'Remove',
},
actionNum: '{{num}} {{action}} INCLUDED',
strategyNum: '{{num}} {{strategy}} INCLUDED',
endpoints: 'Endpoints',
endpointsTip: 'This plugin provides specific functionalities via endpoints, and you can configure multiple endpoint sets for current workspace.',
endpointsDocLink: 'View the document',
endpointsEmpty: 'Click the \'+\' button to add an endpoint',
endpointDisableTip: 'Disable Endpoint',
endpointDisableContent: 'Would you like to disable {{name}}? ',
endpointDeleteTip: 'Remove Endpoint',
endpointDeleteContent: 'Would you like to remove {{name}}? ',
endpointModalTitle: 'Setup endpoint',
endpointModalDesc: 'Once configured, the features provided by the plugin via API endpoints can be used.',
serviceOk: 'Service OK',
disabled: 'Disabled',
modelNum: '{{num}} MODELS INCLUDED',
toolSelector: {
title: 'Add tool',
toolLabel: 'Tool',
descriptionLabel: 'Tool description',
descriptionPlaceholder: 'Brief description of the tool\'s purpose, e.g., get the temperature for a specific location.',
placeholder: 'Select a tool...',
settings: 'USER SETTINGS',
params: 'REASONING CONFIG',
paramsTip1: 'Controls LLM inference parameters.',
paramsTip2: 'When \'Automatic\' is off, the default value is used.',
auto: 'Automatic',
empty: 'Click the \'+\' button to add tools. You can add multiple tools.',
uninstalledTitle: 'Tool not installed',
uninstalledContent: 'This plugin is installed from the local/GitHub repository. Please use after installation.',
uninstalledLink: 'Manage in Plugins',
unsupportedTitle: 'Unsupported Action',
unsupportedContent: 'The installed plugin version does not provide this action.',
unsupportedContent2: 'Click to switch version.',
},
configureApp: 'Configure App',
configureModel: 'Configure model',
configureTool: 'Configure tool',
},
install: '{{num}} installs',
installAction: 'Install',
debugInfo: {
title: 'Debugging',
viewDocs: 'View Docs',
},
privilege: {
title: 'Plugin Preferences',
whoCanInstall: 'Who can install and manage plugins?',
whoCanDebug: 'Who can debug plugins?',
everyone: 'Everyone',
admins: 'Admins',
noone: 'No one',
},
pluginInfoModal: {
title: 'Plugin info',
repository: 'Repository',
release: 'Release',
packageName: 'Package',
},
action: {
checkForUpdates: 'Check for updates',
pluginInfo: 'Plugin info',
delete: 'Remove plugin',
deleteContentLeft: 'Would you like to remove ',
deleteContentRight: ' plugin?',
usedInApps: 'This plugin is being used in {{num}} apps.',
},
installModal: {
installPlugin: 'Install Plugin',
installComplete: 'Installation complete',
installedSuccessfully: 'Installation successful',
installedSuccessfullyDesc: 'The plugin has been installed successfully.',
uploadFailed: 'Upload failed',
installFailed: 'Installation failed',
installFailedDesc: 'The plugin has been installed failed.',
install: 'Install',
installing: 'Installing...',
uploadingPackage: 'Uploading {{packageName}}...',
readyToInstall: 'About to install the following plugin',
readyToInstallPackage: 'About to install the following plugin',
readyToInstallPackages: 'About to install the following {{num}} plugins',
fromTrustSource: 'Please make sure that you only install plugins from a <trustSource>trusted source</trustSource>.',
dropPluginToInstall: 'Drop plugin package here to install',
labels: {
repository: 'Repository',
version: 'Version',
package: 'Package',
},
close: 'Close',
cancel: 'Cancel',
back: 'Back',
next: 'Next',
pluginLoadError: 'Plugin load error',
pluginLoadErrorDesc: 'This plugin will not be installed',
},
installFromGitHub: {
installPlugin: 'Install plugin from GitHub',
updatePlugin: 'Update plugin from GitHub',
installedSuccessfully: 'Installation successful',
installFailed: 'Installation failed',
uploadFailed: 'Upload failed',
gitHubRepo: 'GitHub repository',
selectVersion: 'Select version',
selectVersionPlaceholder: 'Please select a version',
installNote: 'Please make sure that you only install plugins from a trusted source.',
selectPackage: 'Select package',
selectPackagePlaceholder: 'Please select a package',
},
upgrade: {
title: 'Install Plugin',
successfulTitle: 'Install successful',
description: 'About to install the following plugin',
usedInApps: 'Used in {{num}} apps',
upgrade: 'Install',
upgrading: 'Installing...',
close: 'Close',
},
error: {
inValidGitHubUrl: 'Invalid GitHub URL. Please enter a valid URL in the format: https://github.com/owner/repo',
fetchReleasesError: 'Unable to retrieve releases. Please try again later.',
noReleasesFound: 'No releases found. Please check the GitHub repository or the input URL.',
},
marketplace: {
empower: 'Empower your AI development',
discover: 'Discover',
and: 'and',
difyMarketplace: 'Dify Marketplace',
moreFrom: 'More from Marketplace',
noPluginFound: 'No plugin found',
pluginsResult: '{{num}} results',
sortBy: 'Sort by',
sortOption: {
mostPopular: 'Most Popular',
recentlyUpdated: 'Recently Updated',
newlyReleased: 'Newly Released',
firstReleased: 'First Released',
},
viewMore: 'View more',
},
task: {
installing: 'Installing {{installingLength}} plugins, 0 done.',
installingWithSuccess: 'Installing {{installingLength}} plugins, {{successLength}} success.',
installingWithError: 'Installing {{installingLength}} plugins, {{successLength}} success, {{errorLength}} failed',
installError: '{{errorLength}} plugins failed to install, click to view',
installedError: '{{errorLength}} plugins failed to install',
clearAll: 'Clear all',
},
submitPlugin: 'Submit plugin',
}
export default translation

View file

@ -24,6 +24,8 @@ const translation = {
link: 'detail panel',
tipRight: ' view it.',
},
actionLogs: 'Action Logs',
circularInvocationTip: 'There is circular invocation of tools/nodes in the current workflow.',
}
export default translation

View file

@ -4,7 +4,7 @@ const translation = {
customToolTip: 'Learn more about Dify custom tools',
type: {
all: 'All',
builtIn: 'Built-in',
builtIn: 'Tools',
custom: 'Custom',
workflow: 'Workflow',
},
@ -21,7 +21,7 @@ const translation = {
setupModalTitle: 'Set Up Authorization',
setupModalTitleDescription: 'After configuring credentials, all members within the workspace can use this tool when orchestrating applications.',
},
includeToolNum: '{{num}} tools included',
includeToolNum: '{{num}} {{action}} included',
addTool: 'Add Tool',
addToolModal: {
type: 'type',
@ -131,6 +131,7 @@ const translation = {
parameters: 'parameters',
string: 'string',
number: 'number',
file: 'file',
required: 'Required',
infoAndSetting: 'Info & Settings',
},
@ -146,10 +147,12 @@ const translation = {
},
builtInPromptTitle: 'Prompt',
toolRemoved: 'Tool removed',
notAuthorized: 'Tool not authorized',
notAuthorized: 'Not authorized',
howToGet: 'How to get',
openInStudio: 'Open in Studio',
toolNameUsageTip: 'Tool call name for agent reasoning and prompting',
copyToolName: 'Copy Name',
noTools: 'No tools found',
}
export default translation

View file

@ -195,6 +195,8 @@ const translation = {
visionVariable: 'Vision Variable',
},
invalidVariable: 'Invalid variable',
noValidTool: '{{field}} no valid tool selected',
toolParameterRequired: '{{field}}: parameter [{{param}}] is required',
},
singleRun: {
testRun: 'Test Run ',
@ -210,7 +212,7 @@ const translation = {
'searchTool': 'Search tool',
'tools': 'Tools',
'allTool': 'All',
'builtInTool': 'Built-in',
'plugin': 'Plugin',
'customTool': 'Custom',
'workflowTool': 'Workflow',
'question-understand': 'Question Understand',
@ -218,6 +220,7 @@ const translation = {
'transform': 'Transform',
'utilities': 'Utilities',
'noResult': 'No match found',
'agent': 'Agent Strategy',
},
blocks: {
'start': 'Start',
@ -238,6 +241,7 @@ const translation = {
'parameter-extractor': 'Parameter Extractor',
'document-extractor': 'Doc Extractor',
'list-operator': 'List Operator',
'agent': 'Agent',
},
blocksAbout: {
'start': 'Define the initial parameters for launching a workflow',
@ -257,6 +261,7 @@ const translation = {
'parameter-extractor': 'Use LLM to extract structured parameters from natural language for tool invocations or HTTP requests.',
'document-extractor': 'Used to parse uploaded documents into text content that is easily understandable by LLM.',
'list-operator': 'Used to filter or sort array content.',
'agent': 'Invoking large language models to answer questions or process natural language',
},
operator: {
zoomIn: 'Zoom In',
@ -697,6 +702,75 @@ const translation = {
last_record: 'Last record',
},
},
agent: {
strategy: {
label: 'Agentic Strategy',
tooltip: 'Different Agentic strategies determine how the system plans and executes multi-step tool calls',
shortLabel: 'Strategy',
configureTip: 'Please configure agentic strategy.',
configureTipDesc: 'After configuring the agentic strategy, this node will automatically load the remaining configurations. The strategy will affect the mechanism of multi-step tool reasoning. ',
selectTip: 'Select agentic strategy',
searchPlaceholder: 'Search agentic strategy',
},
learnMore: 'Learn more',
pluginNotInstalled: 'This plugin is not installed',
pluginNotInstalledDesc: 'This plugin is installed from GitHub. Please go to Plugins to reinstall',
linkToPlugin: 'Link to Plugins',
pluginInstaller: {
install: 'Install',
installing: 'Installing',
},
modelNotInMarketplace: {
title: 'Model not installed',
desc: 'This model is installed from Local or GitHub repository. Please use after installation.',
manageInPlugins: 'Manage in Plugins',
},
modelNotSupport: {
title: 'Unsupported Model',
desc: 'The installed plugin version does not provide this model.',
descForVersionSwitch: 'The installed plugin version does not provide this model. Click to switch version.',
},
configureModel: 'Configure Model',
notAuthorized: 'Not Authorized',
model: 'model',
toolbox: 'toolbox',
strategyNotSet: 'Agentic strategy Not Set',
tools: 'Tools',
maxIterations: 'Max Iterations',
modelNotSelected: 'Model not selected',
modelNotInstallTooltip: 'This model is not installed',
toolNotInstallTooltip: '{{tool}} is not installed',
toolNotAuthorizedTooltip: '{{tool}} Not Authorized',
strategyNotInstallTooltip: '{{strategy}} is not installed',
unsupportedStrategy: 'Unsupported strategy',
pluginNotFoundDesc: 'This plugin is installed from GitHub. Please go to Plugins to reinstall',
strategyNotFoundDesc: 'The installed plugin version does not provide this strategy.',
strategyNotFoundDescAndSwitchVersion: 'The installed plugin version does not provide this strategy. Click to switch version.',
modelSelectorTooltips: {
deprecated: 'This model is deprecated',
},
outputVars: {
text: 'agent generated content',
files: {
title: 'agent generated files',
type: 'Support type. Now only support image',
transfer_method: 'Transfer method.Value is remote_url or local_file',
url: 'Image url',
upload_file_id: 'Upload file id',
},
json: 'agent generated json',
},
checkList: {
strategyNotSelected: 'Strategy not selected',
},
installPlugin: {
title: 'Install Plugin',
desc: 'About to install the following plugin',
changelog: 'Change log',
install: 'Install',
cancel: 'Cancel',
},
},
},
tracing: {
stopBy: 'Stop by {{user}}',

View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

4
web/i18n/es-ES/plugin.ts Normal file
View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

4
web/i18n/fa-IR/plugin.ts Normal file
View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

4
web/i18n/fr-FR/plugin.ts Normal file
View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

4
web/i18n/hi-IN/plugin.ts Normal file
View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

View file

@ -3,6 +3,8 @@ const translation = {
welcome: 'आपका स्वागत है',
appUnavailable: 'ऐप उपलब्ध नहीं है',
appUnknownError: 'अज्ञात त्रुटि, कृपया पुनः प्रयास करें',
// @ts-expect-error TODO: fix this
// eslint-disable-next-line no-dupe-keys
appUnknownError: 'ऐप अनुपलब्ध है',
},
chat: {

View file

@ -28,6 +28,8 @@ const loadLangResources = (lang: string) => ({
tools: require(`./${lang}/tools`).default,
workflow: require(`./${lang}/workflow`).default,
runLog: require(`./${lang}/run-log`).default,
plugin: require(`./${lang}/plugin`).default,
pluginTags: require(`./${lang}/plugin-tags`).default,
},
})

View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

4
web/i18n/it-IT/plugin.ts Normal file
View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

4
web/i18n/ja-JP/plugin.ts Normal file
View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

4
web/i18n/ko-KR/plugin.ts Normal file
View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

4
web/i18n/pl-PL/plugin.ts Normal file
View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

4
web/i18n/pt-BR/plugin.ts Normal file
View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

4
web/i18n/ro-RO/plugin.ts Normal file
View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

4
web/i18n/ru-RU/plugin.ts Normal file
View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

View file

0
web/i18n/sl-SI/plugin.ts Normal file
View file

View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

4
web/i18n/th-TH/plugin.ts Normal file
View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

4
web/i18n/tr-TR/plugin.ts Normal file
View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

View file

@ -97,19 +97,19 @@ const translation = {
params: {
temperature: 'Температура',
temperatureTip:
'Контролює випадковість: зменшення призводить до менш випадкових завершень. Коли температура наближається до нуля, модель стане детермінованою та повторюваною.',
'Контролює випадковість: зменшення призводить до менш випадкових завершень. Коли температура наближається до нуля, модель стане детермінованою та повторюваною.',
top_p: 'Топ P',
top_pTip:
'Контролює різноманітність за допомогою вибірки ядра: 0,5 означає, що розглядається половина всіх зважених за ймовірністю варіантів.',
'Контролює різноманітність за допомогою вибірки ядра: 0,5 означає, що розглядається половина всіх зважених за ймовірністю варіантів.',
presence_penalty: 'Штраф за присутність',
presence_penaltyTip:
'Наскільки штрафувати нові токени залежно від того, чи з\'являються вони в тексті поки що.\nЗбільшує ймовірність того, що модель говоритиме про нові теми.',
'Наскільки штрафувати нові токени залежно від того, чи з\'являються вони в тексті поки що.\nЗбільшує ймовірність того, що модель говоритиме про нові теми.',
frequency_penalty: 'Штраф за частоту',
frequency_penaltyTip:
'Наскільки штрафувати нові токени на основі їхньої існуючої частоти в тексті.\nЗменшує ймовірність того, що модель повторюватиме той самий рядок дослівно.',
'Наскільки штрафувати нові токени на основі їхньої існуючої частоти в тексті.\nЗменшує ймовірність того, що модель повторюватиме той самий рядок дослівно.',
max_tokens: 'Макс. токенів',
max_tokensTip:
'Використовується для обмеження максимальної довжини відповіді в токенах.\nБільші значення можуть обмежити простір, залишений для підказок, журналів чатів і знань.\nРекомендується встановити значення нижче двох третин\ngpt-4-1106-preview, gpt-4-vision-preview max token (вхід 128k, вихід 4k)',
'Використовується для обмеження максимальної довжини відповіді в токенах.\nБільші значення можуть обмежити простір, залишений для підказок, журналів чатів і знань.\nРекомендується встановити значення нижче двох третин\ngpt-4-1106-preview, gpt-4-vision-preview max token (вхід 128k, вихід 4k)',
maxTokenSettingTip: 'Ваше максимальне значення токена велике, що може обмежувати простір для запитів, даних тощо. Краще налаштувати його менш як 2/3.',
setToCurrentModelMaxTokenTip: 'Максимальний токен оновлено до максимуму токена поточної моделі {{maxToken}}.',
stop_sequences: 'Зупинити послідовності',

View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

4
web/i18n/uk-UA/plugin.ts Normal file
View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

4
web/i18n/vi-VN/plugin.ts Normal file
View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

View file

@ -103,7 +103,7 @@ const translation = {
edit: '编辑标注',
},
dataSet: {
title: '上下文',
title: '知识库',
noData: '您可以导入知识库作为上下文',
words: '词',
textBlocks: '文本块',

View file

@ -173,6 +173,12 @@ const translation = {
removeConfirmContent: '当前配置正在使用中,删除它将关闭追踪功能。',
},
},
appSelector: {
label: '应用',
placeholder: '选择一个应用',
params: '应用参数',
noParams: '无需参数',
},
openInExplore: '在“探索”中打开',
showMyCreatedAppsOnly: '我创建的',
}

View file

@ -23,9 +23,11 @@ const translation = {
remove: '移除',
send: '发送',
copy: '复制',
copied: ' 已复制',
lineBreak: '换行',
sure: '我确定',
download: '下载',
viewDetails: '查看详情',
delete: '删除',
deleteApp: '删除应用',
settings: '设置',
@ -44,6 +46,7 @@ const translation = {
zoomOut: '缩小',
zoomIn: '放大',
openInNewTab: '在新标签页打开',
in: '在',
saveAndRegenerate: '保存并重新生成子分段',
close: '关闭',
view: '查看',
@ -127,12 +130,15 @@ const translation = {
Custom: '自定义',
},
addMoreModel: '添加更多模型',
settingsLink: '模型设置',
capabilities: '多模态能力',
},
menus: {
status: 'beta',
explore: '探索',
apps: '工作室',
plugins: '插件',
exploreMarketplace: '探索 Marketplace',
pluginsTips: '集成第三方插件或创建与 ChatGPT 兼容的 AI 插件。',
datasets: '知识库',
datasetsTips: '即将到来: 上传自己的长文本数据,或通过 Webhook 集成自己的数据源',
@ -155,6 +161,7 @@ const translation = {
settings: {
accountGroup: '通用',
workplaceGroup: '工作空间',
generalGroup: '通用',
account: '我的账户',
members: '成员',
billing: '账单',
@ -304,7 +311,7 @@ const translation = {
},
},
modelProvider: {
notConfigured: '系统模型尚未完全配置,部分功能可能无法使用。',
notConfigured: '系统模型尚未完全配置',
systemModelSettings: '系统模型设置',
systemModelSettingsLink: '为什么需要设置系统模型?',
selectModel: '选择您的模型',
@ -402,6 +409,12 @@ const translation = {
loadBalancingInfo: '默认情况下,负载均衡使用 Round-robin 策略。如果触发速率限制,将应用 1 分钟的冷却时间',
upgradeForLoadBalancing: '升级以解锁负载均衡功能',
apiKey: 'API 密钥',
toBeConfigured: '待配置',
configureTip: '请配置 API 密钥,添加模型。',
installProvider: '安装模型供应商',
discoverMore: '发现更多就在',
emptyProviderTitle: '尚未安装模型供应商',
emptyProviderTip: '请安装模型供应商。',
},
dataSource: {
add: '添加数据源',

View file

@ -1,8 +1,7 @@
const translation = {
steps: {
header: {
creation: '创建知识库',
update: '上传文件',
fallbackRoute: '知识库',
},
one: '选择数据源',
two: '文本分段与清洗',

View file

@ -0,0 +1,25 @@
const translation = {
allTags: '所有标签',
searchTags: '搜索标签',
tags: {
agent: 'Agent',
search: '搜索',
image: '图片',
videos: '视频',
weather: '天气',
finance: '金融',
design: '设计',
travel: '旅行',
social: '社交',
news: '新闻',
medical: '医疗',
productivity: '生产力',
education: '教育',
business: '商业',
entertainment: '娱乐',
utilities: '工具',
other: '其他',
},
}
export default translation

209
web/i18n/zh-Hans/plugin.ts Normal file
View file

@ -0,0 +1,209 @@
const translation = {
category: {
all: '全部',
models: '模型',
tools: '工具',
agents: 'Agent 策略',
extensions: '扩展',
bundles: '插件集',
},
categorySingle: {
model: '模型',
tool: '工具',
agent: 'Agent 策略',
extension: '扩展',
bundle: '插件集',
},
search: '搜索',
allCategories: '所有类别',
searchCategories: '搜索类别',
searchPlugins: '搜索插件',
from: '来自',
findMoreInMarketplace: '在 Marketplace 中查找更多',
searchInMarketplace: '在 Marketplace 中搜索',
fromMarketplace: '来自市场',
endpointsEnabled: '{{num}} 组端点已启用',
searchTools: '搜索工具...',
installPlugin: '安装插件',
installFrom: '安装源',
list: {
noInstalled: '无已安装的插件',
notFound: '未找到插件',
source: {
marketplace: '从 Marketplace 安装',
github: '从 GitHub 安装',
local: '本地插件',
},
},
source: {
marketplace: 'Marketplace',
github: 'GitHub',
local: '本地插件',
},
detailPanel: {
switchVersion: '切换版本',
categoryTip: {
marketplace: '从 Marketplace 安装',
github: '从 Github 安装',
local: '本地插件',
debugging: '调试插件',
},
operation: {
install: '安装',
detail: '详情',
update: '更新',
info: '插件信息',
checkUpdate: '检查更新',
viewDetail: '查看详情',
remove: '移除',
},
actionNum: '包含 {{num}} 个 {{action}}',
strategyNum: '包含 {{num}} 个 {{strategy}}',
endpoints: 'API 端点',
endpointsTip: '此插件通过 API 端点提供特定功能,您可以为当前工作区配置多个 API 端点集。',
endpointsDocLink: '查看文档',
endpointsEmpty: '点击 \'+\' 按钮添加 API 端点',
endpointDisableTip: '停用 API 端点',
endpointDisableContent: '是否要停用 {{name}} 的 API 端点 ?',
endpointDeleteTip: '移除 API 端点',
endpointDeleteContent: '是否要移除 {{name}} ?',
endpointModalTitle: '设置 API 端点',
endpointModalDesc: '完成配置后可使用插件 API 端点提供的功能',
serviceOk: '服务正常',
disabled: '停用',
modelNum: '{{num}} 模型已包含',
toolSelector: {
title: '添加工具',
toolLabel: '工具',
descriptionLabel: '工具描述',
descriptionPlaceholder: '简要描述工具目的,例如,获取特定位置的温度。',
placeholder: '选择工具',
settings: '用户设置',
params: '推理配置',
paramsTip1: '控制 LLM 推理参数。',
paramsTip2: '当“自动”关闭时,使用默认值。',
auto: '自动',
empty: '点击 "+" 按钮添加工具。您可以添加多个工具。',
uninstalledTitle: '工具未安装',
uninstalledContent: '此插件安装自 本地 / GitHub 仓库,请安装后使用。',
uninstalledLink: '在插件中管理',
unsupportedTitle: '不支持的 Action',
unsupportedContent: '已安装的插件版本不提供这个 action。',
unsupportedContent2: '点击切换版本',
},
configureApp: '应用设置',
configureModel: '模型设置',
configureTool: '工具设置',
},
install: '{{num}} 次安装',
installAction: '安装',
debugInfo: {
title: '调试',
viewDocs: '查看文档',
},
privilege: {
title: '插件偏好',
whoCanInstall: '谁可以安装和管理插件?',
whoCanDebug: '谁可以调试插件?',
everyone: '所有人',
admins: '管理员',
noone: '无人',
},
pluginInfoModal: {
title: '插件信息',
repository: '仓库',
release: '发布版本',
packageName: '包',
},
action: {
checkForUpdates: '检查更新',
pluginInfo: '插件信息',
delete: '移除插件',
deleteContentLeft: '是否要移除 ',
deleteContentRight: ' 插件?',
usedInApps: '此插件正在 {{num}} 个应用中使用。',
},
installModal: {
installPlugin: '安装插件',
installComplete: '安装完成',
installedSuccessfully: '安装成功',
installedSuccessfullyDesc: '插件已成功安装。',
uploadFailed: '上传失败',
installFailed: '安装失败',
installFailedDesc: '插件安装失败。',
install: '安装',
installing: '安装中...',
uploadingPackage: '上传 {{packageName}} 中...',
readyToInstall: '即将安装以下插件',
readyToInstallPackage: '即将安装以下插件',
readyToInstallPackages: '即将安装以下 {{num}} 个插件',
fromTrustSource: '请保证仅从<trustSource>可信源</trustSource>安装插件。',
dropPluginToInstall: '拖放插件包到此处安装',
labels: {
repository: '仓库',
version: '版本',
package: '包',
},
close: '关闭',
cancel: '取消',
back: '返回',
next: '下一步',
pluginLoadError: '插件加载错误',
pluginLoadErrorDesc: '此插件将不会被安装',
},
installFromGitHub: {
installPlugin: '从 GitHub 安装插件',
updatePlugin: '更新来自 GitHub 的插件',
installedSuccessfully: '安装成功',
installFailed: '安装失败',
uploadFailed: '上传失败',
gitHubRepo: 'GitHub 仓库',
selectVersion: '选择版本',
selectVersionPlaceholder: '请选择一个版本',
installNote: '请确保只从可信源安装插件。',
selectPackage: '选择包',
selectPackagePlaceholder: '请选择一个包',
},
upgrade: {
title: '安装插件',
successfulTitle: '安装成功',
description: '即将安装以下插件',
usedInApps: '在 {{num}} 个应用中使用',
upgrade: '安装',
upgrading: '安装中...',
close: '关闭',
},
error: {
inValidGitHubUrl: '无效的 GitHub URL。请输入格式为 https://github.com/owner/repo 的有效 URL',
fetchReleasesError: '无法获取发布版本。请稍后再试。',
noReleasesFound: '未找到发布版本。请检查 GitHub 仓库或输入的 URL。',
},
marketplace: {
empower: '助力您的 AI 开发',
discover: '探索',
and: '和',
difyMarketplace: 'Dify 市场',
moreFrom: '更多来自市场',
noPluginFound: '未找到插件',
pluginsResult: '{{num}} 个插件结果',
sortBy: '排序方式',
sortOption: {
mostPopular: '最受欢迎',
recentlyUpdated: '最近更新',
newlyReleased: '最新发布',
firstReleased: '首次发布',
},
viewMore: '查看更多',
},
task: {
installing: '{{installingLength}} 个插件安装中,0 已完成',
installingWithSuccess: '{{installingLength}} 个插件安装中,{{successLength}} 安装成功',
installingWithError: '{{installingLength}} 个插件安装中,{{successLength}} 安装成功,{{errorLength}} 安装失败',
installError: '{{errorLength}} 个插件安装失败,点击查看',
installedError: '{{errorLength}} 个插件安装失败',
clearAll: '清除所有',
},
submitPlugin: '上传插件',
}
export default translation

View file

@ -24,6 +24,8 @@ const translation = {
link: '详细信息面板',
tipRight: '查看它。',
},
actionLogs: 'Action 日志',
circularInvocationTip: '当前工作流中存在工具/节点的循环调用。',
}
export default translation

View file

@ -4,7 +4,7 @@ const translation = {
customToolTip: '了解更多关于 Dify 自定义工具的信息',
type: {
all: '全部',
builtIn: '内置',
builtIn: '工具',
custom: '自定义',
workflow: '工作流',
},
@ -21,7 +21,7 @@ const translation = {
setupModalTitle: '设置授权',
setupModalTitleDescription: '配置凭据后,工作区中的所有成员都可以在编排应用程序时使用此工具。',
},
includeToolNum: '包含 {{num}} 个工具',
includeToolNum: '包含 {{num}} 个 {{action}}',
addTool: '添加工具',
addToolModal: {
type: '类型',
@ -131,6 +131,7 @@ const translation = {
parameters: '参数',
string: '字符串',
number: '数字',
file: '文件',
required: '必填',
infoAndSetting: '信息和设置',
},
@ -150,6 +151,8 @@ const translation = {
howToGet: '如何获取',
openInStudio: '在工作室中打开',
toolNameUsageTip: '工具调用名称,用于 Agent 推理和提示词',
copyToolName: '复制名称',
noTools: '没有工具',
}
export default translation

View file

@ -195,6 +195,9 @@ const translation = {
visionVariable: '视觉变量',
},
invalidVariable: '无效的变量',
noValidTool: '{{field}} 无可用工具',
toolParameterRequired: '{{field}}: 参数 [{{param}}] 不能为空',
},
singleRun: {
testRun: '测试运行 ',
@ -210,7 +213,7 @@ const translation = {
'searchTool': '搜索工具',
'tools': '工具',
'allTool': '全部',
'builtInTool': '内置',
'plugin': '插件',
'customTool': '自定义',
'workflowTool': '工作流',
'question-understand': '问题理解',
@ -218,6 +221,7 @@ const translation = {
'transform': '转换',
'utilities': '工具',
'noResult': '未找到匹配项',
'agent': 'Agent 策略',
},
blocks: {
'start': '开始',
@ -238,6 +242,7 @@ const translation = {
'parameter-extractor': '参数提取器',
'document-extractor': '文档提取器',
'list-operator': '列表操作',
'agent': 'Agent',
},
blocksAbout: {
'start': '定义一个 workflow 流程启动的初始参数',
@ -257,6 +262,7 @@ const translation = {
'parameter-extractor': '利用 LLM 从自然语言内推理提取出结构化参数,用于后置的工具调用或 HTTP 请求。',
'document-extractor': '用于将用户上传的文档解析为 LLM 便于理解的文本内容。',
'list-operator': '用于过滤或排序数组内容。',
'agent': '调用大型语言模型回答问题或处理自然语言',
},
operator: {
zoomIn: '放大',
@ -697,6 +703,75 @@ const translation = {
last_record: '最后一条记录',
},
},
agent: {
strategy: {
label: 'Agent 策略',
tooltip: '不同的 Agent 策略决定了系统如何规划和执行多步工具调用',
shortLabel: '策略',
configureTip: '请配置 Agent 策略。',
configureTipDesc: '配置完成后,此节点将自动加载剩余配置。策略将影响多步工具推理的机制。',
selectTip: '选择 Agent 策略',
searchPlaceholder: '搜索 Agent 策略',
},
learnMore: '了解更多',
pluginNotInstalled: '插件未安装',
pluginNotInstalledDesc: '此插件是从 GitHub 安装的。请转到插件重新安装',
linkToPlugin: '转到插件',
pluginInstaller: {
install: '安装',
installing: '安装中',
},
modelNotInMarketplace: {
title: '模型未安装',
desc: '此模型安装自本地或 GitHub 仓库。请安装后使用。',
manageInPlugins: '在插件中管理',
},
modelNotSupport: {
title: '不支持的模型',
desc: '已安装的插件版本不提供此模型。',
descForVersionSwitch: '已安装的插件版本不提供此模型。点击切换版本。',
},
model: '模型',
toolbox: '工具箱',
strategyNotSet: '代理策略未设置',
configureModel: '配置模型',
notAuthorized: '未授权',
tools: '工具',
maxIterations: '最大迭代次数',
modelNotInstallTooltip: '此模型未安装',
modelNotSelected: '未选择模型',
toolNotInstallTooltip: '{{tool}} 未安装',
toolNotAuthorizedTooltip: '{{tool}} 未授权',
strategyNotInstallTooltip: '{{strategy}} 未安装',
unsupportedStrategy: '不支持的策略',
strategyNotFoundDesc: '安装的插件版本不提供此策略。',
pluginNotFoundDesc: '此插件安装自 GitHub。请转到插件重新安装。',
strategyNotFoundDescAndSwitchVersion: '安装的插件版本不提供此策略。点击切换版本。',
modelSelectorTooltips: {
deprecated: '此模型已弃用',
},
outputVars: {
text: 'agent 生成的内容',
files: {
title: 'agent 生成的文件',
type: '支持类型。现在只支持图片',
transfer_method: '传输方式。值为 remote_url 或 local_file',
url: '图片链接',
upload_file_id: '上传文件ID',
},
json: 'agent 生成的json',
},
checkList: {
strategyNotSelected: '未选择策略',
},
installPlugin: {
title: '安装插件',
desc: '即将安装以下插件',
changelog: '更新日志',
install: '安装',
cancel: '取消',
},
},
},
tracing: {
stopBy: '由{{user}}终止',

View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation

View file

@ -0,0 +1,4 @@
const translation = {
}
export default translation