I18n: Completed i18n&&proofread some translations (#2619)

* i18n-1

* i18n: Completed the remaining parts of i18n and proofread some translations

* i18n: add default lang&&add app template i18n
This commit is contained in:
papapatrick
2024-09-05 17:29:36 +08:00
committed by GitHub
parent b4238257b6
commit dfcffc7fc1
30 changed files with 1590 additions and 1546 deletions

View File

@@ -1,19 +1,19 @@
import { NullPermission, PermissionKeyEnum, PermissionList } from '../constant';
import { PermissionListType } from '../type';
import { i18nT } from '../../../../web/i18n/utils';
export enum AppPermissionKeyEnum {}
export const AppPermissionList: PermissionListType = {
[PermissionKeyEnum.read]: {
...PermissionList[PermissionKeyEnum.read],
description: '可使用该应用进行对话'
description: i18nT('app:permission.des.read')
},
[PermissionKeyEnum.write]: {
...PermissionList[PermissionKeyEnum.write],
description: '可查看和编辑应用'
description: i18nT('app:permission.des.write')
},
[PermissionKeyEnum.manage]: {
...PermissionList[PermissionKeyEnum.manage],
description: '写权限基础上,可配置发布渠道、查看对话日志、分配该应用权限'
description: i18nT('app:permission.des.manage')
}
};

View File

@@ -1,6 +1,6 @@
import { Permission } from './controller';
import { PermissionListType } from './type';
import { i18nT } from '../../../web/i18n/utils';
export enum AuthUserTypeEnum {
token = 'token',
root = 'root',
@@ -27,15 +27,15 @@ export const PermissionTypeMap = {
},
[PermissionTypeEnum.publicRead]: {
iconLight: 'support/permission/publicLight',
label: '团队可访问'
label: i18nT('user:permission.team_read')
},
[PermissionTypeEnum.publicWrite]: {
iconLight: 'support/permission/publicLight',
label: '团队可编辑'
label: i18nT('user:permission.team_write')
},
[PermissionTypeEnum.clbPrivate]: {
iconLight: 'support/permission/privateLight',
label: '仅协作者'
label: i18nT('user:permission.only_collaborators')
}
};
@@ -53,19 +53,19 @@ export enum PermissionKeyEnum {
}
export const PermissionList: PermissionListType = {
[PermissionKeyEnum.read]: {
name: '读权限',
name: i18nT('common:permission.read'),
description: '',
value: 0b100,
checkBoxType: 'single'
},
[PermissionKeyEnum.write]: {
name: '写权限',
name: i18nT('common:permission.write'),
description: '',
value: 0b110, // 如果某个资源有特殊要求,再重写这个值
checkBoxType: 'single'
},
[PermissionKeyEnum.manage]: {
name: '管理员',
name: i18nT('common:permission.manager'),
description: '',
value: 0b111,
checkBoxType: 'single'

View File

@@ -1,3 +1,4 @@
import { i18nT } from '../../../../web/i18n/utils';
import { NullPermission, PermissionKeyEnum, PermissionList } from '../constant';
export enum DatasetPermissionKeyEnum {}
@@ -5,15 +6,15 @@ export enum DatasetPermissionKeyEnum {}
export const DatasetPermissionList = {
[PermissionKeyEnum.read]: {
...PermissionList[PermissionKeyEnum.read],
description: '可查看知识库内容'
description: i18nT('dataset:permission.des.read')
},
[PermissionKeyEnum.write]: {
...PermissionList[PermissionKeyEnum.write],
description: '可增加和变更知识库内容'
description: i18nT('dataset:permission.des.write')
},
[PermissionKeyEnum.manage]: {
...PermissionList[PermissionKeyEnum.manage],
description: '可管理整个知识库数据和信息'
description: i18nT('dataset:permission.des.manage')
}
};

View File

@@ -1,18 +1,18 @@
import { PermissionKeyEnum, PermissionList, ReadPermissionVal } from '../constant';
import { PermissionListType } from '../type';
import { i18nT } from '../../../../web/i18n/utils';
export const TeamPermissionList: PermissionListType = {
[PermissionKeyEnum.read]: {
...PermissionList[PermissionKeyEnum.read],
description: '成员仅可阅读相关资源,无法新建资源'
description: i18nT('user:permission_des.read')
},
[PermissionKeyEnum.write]: {
...PermissionList[PermissionKeyEnum.write],
description: '除了可读资源外,还可以新建新的资源'
description: i18nT('user:permission_des.write')
},
[PermissionKeyEnum.manage]: {
...PermissionList[PermissionKeyEnum.manage],
description: '可创建资源、邀请、删除成员'
description: i18nT('user:permission_des.manage')
}
};

View File

@@ -14,13 +14,13 @@ export enum UsageSourceEnum {
export const UsageSourceMap = {
[UsageSourceEnum.fastgpt]: {
label: '在线使用'
label: i18nT('common:core.chat.logs.online')
},
[UsageSourceEnum.api]: {
label: 'Api'
},
[UsageSourceEnum.shareLink]: {
label: '免登录链接'
label: i18nT('common:core.chat.logs.free_login')
},
[UsageSourceEnum.training]: {
label: 'dataset.Training Name'

View File

@@ -1,177 +1,162 @@
{
"Run": "Run",
"ai_settings": "AI Settings",
"all_apps": "All Apps",
"Run": "Execute",
"ai_settings": "AI Configuration",
"all_apps": "All Applications",
"app": {
"Version name": "Version name",
"Version name": "Version Name",
"modules": {
"click to update": "click to update",
"has new version": "has new version"
"click to update": "Click to Refresh",
"has new version": "New Version Available"
},
"version_back": "Back to initial",
"version_copy": "Copy",
"version_current": "current version",
"version_initial": "Initial version",
"version_initial_copy": "Copy-Initial state",
"version_name_tips": "Version name can't be empty.",
"version_past": "published",
"version_publish_tips": "This version will be saved to the team's cloud, synchronized with the entire team, and update the application versions across all publishing channels.",
"version_save_tips": "This version will be saved to the team's cloud and synchronized with the entire team."
"version_back": "Revert to Original State",
"version_copy": "Duplicate",
"version_current": "Current Version",
"version_initial": "Initial Version",
"version_initial_copy": "Duplicate - Original State",
"version_name_tips": "Version name cannot be empty",
"version_past": "Previously Published",
"version_publish_tips": "This version will be saved to the team cloud, synchronized with the entire team, and update the app version on all release channels.",
"version_save_tips": "This version will be saved to the team cloud, synchronized with the entire team."
},
"app_detail": "App Details",
"chat_debug": "Chat Debug",
"chat_logs": "Chat Logs",
"chat_logs_tips": "Logs will record online, shared and API (chatId required) conversation records for this app",
"config_file_upload": "Click to configure file upload rules",
"confirm_copy_app_tip": "The system will create an application with the same configuration for you, but the permission will not be copied, please confirm!",
"confirm_del_app_tip": "Confirm to delete this app and all its chat records?",
"confirm_delete_folder_tip": "Are you sure to delete this folder? All the following applications and corresponding chat records will be deleted, please confirm!",
"copy_one_app": "Copy",
"create_copy_success": "Create copy success",
"create_empty_app": "Create default app",
"create_empty_plugin": "Create default plugin",
"create_empty_workflow": "Create default workflow",
"app_detail": "Application Details",
"chat_debug": "Chat Preview",
"chat_logs": "Conversation Logs",
"chat_logs_tips": "Logs will record the online, shared, and API (requires chatId) conversation records of this app.",
"config_file_upload": "Click to Configure File Upload Rules",
"confirm_copy_app_tip": "The system will create an app with the same configuration for you, but permissions will not be copied. Please confirm!",
"confirm_del_app_tip": "Confirm to delete this app and all its conversation records?",
"confirm_delete_folder_tip": "Confirm to delete this folder? All apps and corresponding conversation records under it will be deleted. Please confirm!",
"copy_one_app": "Create Duplicate",
"create_copy_success": "Duplicate Created Successfully",
"create_empty_app": "Create Blank App",
"create_empty_plugin": "Create Blank Plugin",
"create_empty_workflow": "Create Blank Workflow",
"cron": {
"every_day": "Executed every day",
"every_month": "Executed monthly",
"every_week": "Executed every week",
"interval": "interval execution"
"every_day": "Run Daily",
"every_month": "Run Monthly",
"every_week": "Run Weekly",
"interval": "Run at Intervals"
},
"current_settings": "Current settings",
"day": "day",
"document_quote": "Document quote",
"document_quote_tip": "It is usually used to accept document content uploaded by users (which requires document parsing), and can also be used to reference other string data.",
"document_upload": "Document upload",
"edit_app": "Edit app",
"edit_info": "Edit info",
"execute_time": "execution time",
"export_config_successful": "Config copied, please check for important data",
"export_configs": "Export Configs",
"current_settings": "Current Configuration",
"day": "Day",
"document_quote": "Document Reference",
"document_quote_tip": "Usually used to accept user-uploaded document content (requires document parsing), and can also be used to reference other string data.",
"document_upload": "Document Upload",
"edit_app": "Edit Application",
"edit_info": "Edit Information",
"execute_time": "Execution Time",
"export_config_successful": "Configuration copied, some sensitive information automatically filtered. Please check for any remaining sensitive data.",
"export_configs": "Export Configurations",
"feedback_count": "User Feedback",
"file_recover": "The file will overwrite the current content",
"file_upload": "file_upload",
"file_upload_tip": "After it is enabled, you can upload documents/pictures. Documents are kept for 7 days and pictures for 15 days. Use of this feature may incur additional charges. To ensure the user experience, select an AI model with a large context length when using this function.",
"go_to_chat": "To chat",
"go_to_run": "Run",
"image_upload": "Image upload",
"image_upload_tip": "Be sure to select a visual model that can handle the picture",
"import_configs": "Import Configs",
"import_configs_failed": "Failed to import configs, please ensure configs are valid!",
"import_configs_success": "Import successful",
"file_recover": "File will overwrite current content",
"file_upload": "File Upload",
"file_upload_tip": "Once enabled, documents/images can be uploaded. Documents are retained for 7 days, images for 15 days. Using this feature may incur additional costs. To ensure a good experience, please choose an AI model with a larger context length when using this feature.",
"go_to_chat": "Go to Conversation",
"go_to_run": "Go to Execution",
"image_upload": "Image Upload",
"image_upload_tip": "Please ensure to select a vision model that can process images.",
"import_configs": "Import Configurations",
"import_configs_failed": "Import configuration failed, please ensure the configuration is correct!",
"import_configs_success": "Import Successful",
"interval": {
"12_hours": "every 12 hours",
"2_hours": "every 2 hours",
"3_hours": "every 3 hours",
"4_hours": "every 4 hours",
"6_hours": "every 6 hours",
"per_hour": "per hour"
"12_hours": "Every 12 Hours",
"2_hours": "Every 2 Hours",
"3_hours": "Every 3 Hours",
"4_hours": "Every 4 Hours",
"6_hours": "Every 6 Hours",
"per_hour": "Every Hour"
},
"intro": "It is a large model application orchestration system that provides out-of-the-box data processing, model calling and other capabilities. It can quickly build a knowledge base and perform workflow orchestration through Flow visualization to realize complex knowledge base scenarios!",
"intro": "A comprehensive model application orchestration system that offers out-of-the-box data processing and model invocation capabilities. It allows for rapid Dataset construction and workflow orchestration through Flow visualization, enabling complex Dataset scenarios!",
"llm_not_support_vision": "This model does not support image recognition",
"llm_use_vision": "Enable vision",
"llm_use_vision_tip": "When image recognition is enabled, the model automatically receives images from Dialog Uploads, as well as image links from User Questions.",
"llm_use_vision": "Enable Image Recognition",
"llm_use_vision_tip": "Once image recognition is enabled, this model will automatically receive images uploaded from the 'dialog box' and image links in 'user questions'.",
"logs_empty": "No logs yet~",
"logs_message_total": "Total Messages",
"logs_title": "Title",
"mark_count": "Marked Answer Count",
"mark_count": "Number of Marked Answers",
"module": {
"Confirm Sync": "The template will be updated to the latest template configuration. Fields that do not exist in the template will be deleted (including all custom fields). You are advised to make a copy of the node and then update the original node version.",
"Custom Title Tip": "This title will be displayed during the conversation",
"No Modules": "No plugins yet~",
"Confirm Sync": "Will update to the latest template configuration. Fields not in the template will be deleted (including all custom fields). It is recommended to copy a node first, then update the original node version.",
"Custom Title Tip": "This title will be displayed during the conversation.",
"No Modules": "No Plugins Found",
"type": "\"{{type}}\" type\n{{description}}"
},
"modules": {
"Title is required": "Module name cannot be empty"
},
"month": {
"unit": "Number"
"unit": "Day"
},
"move_app": "Move app",
"no": "no",
"move_app": "Move Application",
"not_json_file": "Please select a JSON file",
"or_drag_JSON": "Or drag in a JSON file",
"paste_config": "Paste Config",
"plugin_cost_per_times": "{{cost}}/per time",
"plugin_dispatch": "Plugins",
"plugin_dispatch_tip": "It is up to the model to decide which plug-ins to add additional capabilities to. If the plug-in is selected, the knowledge base call is also treated as a special plug-in.",
"publish_channel": "Publish channel",
"publish_success": "Publish success",
"saved_success": "Saved success",
"search_app": "Search app",
"setting_app": "Settings",
"setting_plugin": "Setting plugin",
"support": {
"wallet": {
"bill_tag": {
"bill": "billing records",
"default_header": "Default header",
"invoice": "Invoicing records"
},
"invoice_data": {
"bank": "Bank of deposit",
"bank_account": "Account opening account",
"company_address": "company address",
"company_phone": "company phone",
"email": "email address",
"in_valid": "There are empty fields or incorrect email formats",
"need_special_invoice": "Do you need a special ticket?",
"organization_name": "name of association",
"unit_code": "same credit code"
},
"invoicing": "Invoicing"
"or_drag_JSON": "or drag in JSON file",
"paste_config": "Paste Configuration",
"permission": {
"des": {
"manage": "Based on write permissions, you can configure publishing channels, view conversation logs, and assign permissions to the application.",
"read": "Use the app to have conversations",
"write": "Can view and edit apps"
}
},
"plugin_cost_per_times": "{{cost}}/time",
"plugin_dispatch": "Plugin Invocation",
"plugin_dispatch_tip": "Adds extra capabilities to the model. The specific plugins to be invoked will be autonomously decided by the model.\nIf a plugin is selected, the Dataset invocation will automatically be treated as a special plugin.",
"publish_channel": "Publish Channel",
"publish_success": "Publish Successful",
"saved_success": "Save Successful",
"search_app": "Search Application",
"setting_app": "Application Settings",
"setting_plugin": "Plugin Settings",
"template": {
"simple_robot": "Simple Robot"
},
"templateMarket": {
"Search_template": "Search template",
"Template_market": "Template market",
"Search_template": "Search Template",
"Template_market": "Template Market",
"Use": "Use",
"no_intro": "No intro~",
"no_intro": "No introduction yet~",
"templateTags": {
"Image_generation": "Image generation",
"Office_services": "Office searvices",
"Recommendation": "recommend",
"Image_generation": "Image Generation",
"Office_services": "Office Services",
"Recommendation": "Recommendation",
"Roleplay": "Roleplay",
"Web_search": "Web search",
"Web_search": "Web Search",
"Writing": "Writing"
}
},
"template_market": "Templates",
"template_market_description": "Explore more ways to play in the template market, configuration tutorials and usage guides will help you understand and get started with various applications.",
"template_market_empty_data": "No suitable template found",
"time_zone": "Time zone",
"tool_input_param_tip": "Configure related information before the plugin runs properly",
"transition_to_workflow": "Transition to workflow",
"transition_to_workflow_create_new_placeholder": "Create a new application instead of modifying the current one",
"transition_to_workflow_create_new_tip": "After converting to workflow, it will not be able to convert back to simple mode, please confirm!",
"template_market": "Template Market",
"template_market_description": "Explore more features in the template market, with configuration tutorials and usage guides to help you understand and get started with various applications.",
"template_market_empty_data": "No suitable templates found",
"time_zone": "Time Zone",
"tool_input_param_tip": "This plugin requires configuration of related information to run properly.",
"transition_to_workflow": "Convert to Workflow",
"transition_to_workflow_create_new_placeholder": "Create a new app instead of modifying the current app",
"transition_to_workflow_create_new_tip": "Once converted to a workflow, it cannot be reverted to simple mode. Please confirm!",
"type": {
"All": "All",
"Create http plugin tip": "Create plug-ins in batches using OpenAPI schema, compatible with GPTs format",
"Create one plugin tip": "The input and output workflows can be customized",
"Create plugin bot": "Create plugin bot",
"Create simple bot": "Create simple bot",
"Create simple bot tip": "Create simple AI applications in form form",
"Create template tip": "Explore more ways to play in the template market to help you understand and use various applications",
"Create workflow bot": "Create workflow bot",
"Create workflow tip": "Through the way of low code, build a logically complex multi-round dialogue AI application, recommended for advanced players",
"Http plugin": "Http plugin",
"Create http plugin tip": "Batch create plugins through OpenAPI Schema, compatible with GPTs format.",
"Create one plugin tip": "Customizable input and output workflows, usually used to encapsulate reusable workflows.",
"Create plugin bot": "Create Plugin",
"Create simple bot": "Create Simple App",
"Create simple bot tip": "Create a simple AI app by filling out a form, suitable for beginners.",
"Create template tip": "Explore more features in the template market to help you understand and get started with various applications.",
"Create workflow bot": "Create Workflow",
"Create workflow tip": "Build complex multi-turn dialogue AI applications through low-code methods, recommended for advanced users.",
"Http plugin": "HTTP Plugin",
"Plugin": "Plugin",
"Simple bot": "Simple bot",
"Template": "Create by template",
"Simple bot": "Simple App",
"Template": "Create via Template",
"Workflow bot": "Workflow"
},
"upload_file_max_amount": "Max files",
"upload_file_max_amount_tip": "1. The maximum number of files to be uploaded at a time.\n2. The maximum number of files that can be remembered in the dialog window: Files in the history are automatically retrieved for each round of conversation, and files that are out of range are forgotten.",
"upload_file_max_amount": "Maximum File Quantity",
"upload_file_max_amount_tip": "1. The maximum number of files that can be uploaded at one time.\n2. The maximum number of files remembered by the chat window: each round of dialogue will automatically retrieve files from history, files beyond the range will be forgotten.",
"variable": {
"select type_desc": "You can define a global variable that does not need to be filled in by the user.\n\nThe value of this variable can come from the API interface, the Query of the shared link, or be assigned through the [Variable Update] module.",
"textarea_type_desc": "A dialog box that allows the user to enter up to 4000 words."
"select type_desc": "A global variable that does not require user input can be defined.\nThe value of this variable can come from an API interface, a query in a shared link, or be assigned through the [Variable Update] module.",
"textarea_type_desc": "Allows users to input up to 4000 characters in the dialogue box."
},
"version": {
"Revert success": "Revert success"
"Revert success": "Revert Successful"
},
"vision_model_title": "Enable image recognition",
"vision_model_title": "Enable Image Recognition",
"week": {
"Friday": "Friday",
"Monday": "Monday",
@@ -182,25 +167,24 @@
"Wednesday": "Wednesday"
},
"workflow": {
"Input guide": "Input guide",
"file_url": "Url",
"Input guide": "Input Guide",
"file_url": "Document Link",
"option1": "Option 1",
"option2": "Option 2",
"read_files": "Documents parse",
"read_files_result": "Document parsing results",
"read_files_result_desc": "The original text of the document consists of the file name and the document content. Multiple files are separated by horizontal lines.",
"read_files_tip": "Parse all uploaded documents in the conversation and return the corresponding document content",
"select_description": "Select description",
"select_description_placeholder": "For example: \n\nAre there any tomatoes in the refrigerator?",
"select_description_tip": "You can add a descriptive text to explain to users what each option represents.",
"select_result": "Select result",
"read_files": "Document Parsing",
"read_files_result": "Document Parsing Result",
"read_files_result_desc": "Original document text, consisting of file names and document content, separated by hyphens between multiple files.",
"read_files_tip": "Parse all uploaded documents in the dialogue and return the corresponding document content.",
"select_description": "Description Text",
"select_description_placeholder": "For example: \nAre there tomatoes in the fridge?",
"select_description_tip": "You can add a description text to explain the meaning of each option to the user.",
"select_result": "Selected Result",
"template": {
"communication": "Communication"
},
"user_file_input": "Files url",
"user_file_input_desc": "Links to documents and images uploaded by users",
"user_select": "User select",
"user_select_tip": "The module can have multiple options that lead to different workflow branches"
},
"yes": "yes"
"user_file_input": "File Link",
"user_file_input_desc": "Links to documents and images uploaded by users.",
"user_select": "User Selection",
"user_select_tip": "This module can configure multiple options for selection during the dialogue. Different options can lead to different workflow branches."
}
}

View File

@@ -1,41 +1,41 @@
{
"Delete_all": "Delete all",
"chat_history": "chat record",
"chat_input_guide_lexicon_is_empty": "No vocabulary has been configured yet",
"citations": "{{num}} citations",
"Delete_all": "Clear All Lexicon",
"chat_history": "Conversation History",
"chat_input_guide_lexicon_is_empty": "Lexicon not configured yet",
"citations": "{{num}} References",
"click_contextual_preview": "Click to see contextual preview",
"config_input_guide": "Configure input boot",
"config_input_guide_lexicon": "Configure thesaurus",
"config_input_guide_lexicon_title": "Configure thesaurus",
"content_empty": "Content is empty",
"contextual": "context",
"contextual_preview": "Contextual preview",
"csv_input_lexicon_tip": "Only supports CSV batch import, click to download the template",
"custom_input_guide_url": "Custom thesaurus address",
"delete_all_input_guide_confirm": "Confirm to delete all input guide lexicons",
"empty_directory": "There is nothing left to choose from in this directory~",
"file_amount_over": "Exceed maximum number of files {{max}}",
"in_progress": "in progress",
"input_guide": "Input guide",
"config_input_guide": "Set Up Input Guide",
"config_input_guide_lexicon": "Set Up Lexicon",
"config_input_guide_lexicon_title": "Set Up Lexicon",
"content_empty": "No Content",
"contextual": "{{num}} Contexts",
"contextual_preview": "Contextual Preview {{num}} Items",
"csv_input_lexicon_tip": "Only CSV batch import is supported, click to download the template",
"custom_input_guide_url": "Custom Lexicon URL",
"delete_all_input_guide_confirm": "Are you sure you want to clear the input guide lexicon?",
"empty_directory": "This directory is empty~",
"file_amount_over": "Exceeded maximum file quantity {{max}}",
"in_progress": "In Progress",
"input_guide": "Input Guide",
"input_guide_lexicon": "Lexicon",
"input_guide_tip": "You can configure some preset questions. When the user enters a question, the relevant question is retrieved from these preset questions for prompt.",
"insert_input_guide,_some_data_already_exists": "Duplicate data, automatically filtered, insert: {{len}} data",
"is_chatting": "Chatting...please wait for the end",
"items": "strip",
"module_runtime_and": "module run time and",
"multiple_AI_conversations": "Multiple AI conversations",
"new_chat": "new conversation",
"new_input_guide_lexicon": "New lexicon",
"no_workflow_response": "No running data",
"plugins_output": "Plugin output",
"question_tip": "From left to right, the response order of each module",
"rearrangement": "Search results rearranged",
"input_guide_tip": "You can set up some preset questions. When the user inputs a question, related questions from these presets will be suggested.",
"insert_input_guide,_some_data_already_exists": "Duplicate data detected, automatically filtered, {{len}} items inserted",
"is_chatting": "Chatting in progress... please wait until it finishes",
"items": "Items",
"module_runtime_and": "Total Module Runtime",
"multiple_AI_conversations": "Multiple AI Conversations",
"new_chat": "New Conversation",
"new_input_guide_lexicon": "New Lexicon",
"no_workflow_response": "No workflow data",
"plugins_output": "Plugin Output",
"question_tip": "From top to bottom, the response order of each module",
"rearrangement": "Rearrangement of Retrieval Results",
"response": {
"node_inputs": "Node input"
"node_inputs": "Node Inputs"
},
"select_file": "Select file",
"select_img": "Select images",
"stream_output": "stream output",
"view_citations": "View citations",
"web_site_sync": "Web site synchronization"
"select_file": "Select File",
"select_img": "Select Image",
"stream_output": "Stream Output",
"view_citations": "View References",
"web_site_sync": "Web Site Sync"
}

File diff suppressed because it is too large Load Diff

View File

@@ -3,40 +3,48 @@
"Enable": "Enable",
"Enabled": "Enabled",
"collection": {
"Create update time": "Create/Update time",
"Training type": "Training type"
"Create update time": "Creation/Update Time",
"Training type": "Training Mode"
},
"collection_tags": "Tags",
"common_dataset": "Common dataset",
"common_dataset_desc": "Can be built by importing files, web links, or manual entry",
"confirm_to_rebuild_embedding_tip": "Are you sure to switch the knowledge base index?\nSwitching index is a very heavy operation that requires re-indexing all the data in your knowledge base, which may take a long time. Please ensure that the remaining points in your account are sufficient.\n\nIn addition, you need to be careful to modify the applications that select this knowledge base to avoid mixing them with other index model knowledge bases.",
"collection_tags": "Collection Tags",
"common_dataset": "General Dataset",
"common_dataset_desc": "Build a Dataset by importing files, web links, or manual input.",
"confirm_to_rebuild_embedding_tip": "Are you sure you want to switch the index for the Dataset?\nSwitching the index is a significant operation that requires re-indexing all data in your Dataset, which may take a long time. Please ensure your account has sufficient remaining points.\n\nAdditionally, you need to update the applications that use this Dataset to avoid conflicts with other indexed model Datasets.",
"dataset": {
"no_collections": "no collections",
"no_tags": "no tags"
"no_collections": "No datasets available",
"no_tags": "No tags available"
},
"external_file": "External file",
"external_file_dataset_desc": "You can import files from an external file library to build a knowledge base. Files are not stored twice",
"external_id": "File id",
"external_read_url": "External read url",
"external_read_url_tip": "You can configure the reading address of your file library. This allows users to read and authenticate. You can currently use the {{fileId}} variable to refer to the external file ID.",
"external_url": "File read url",
"file_model_function_tip": "For enhanced indexing and QA generation",
"filename": "filename",
"external_file": "External File Library",
"external_file_dataset_desc": "Import files from an external file library to build a Dataset. The files will not be stored again.",
"external_id": "File Reading ID",
"external_read_url": "External Preview URL",
"external_read_url_tip": "Configure the reading URL of your file library for user authentication. Use the {{fileId}} variable to refer to the external file ID.",
"external_url": "File Access URL",
"file_model_function_tip": "Enhances indexing and QA generation",
"filename": "Filename",
"folder_dataset": "Folder",
"rebuild_embedding_start_tip": "The task of switching index models has begun",
"rebuilding_index_count": "Rebuilding count: {{count}}",
"tag": {
"Add New": "Add new",
"Add_new_tag": "Add new tag",
"Edit_tag": "Edit tag",
"add": "Add",
"cancel": "Cancel",
"delete_tag_confirm": "Confirm to delete tag",
"manage": "Manage",
"searchOrAddTag": "Search or add tags",
"tags": "Tags"
"permission": {
"des": {
"manage": "Can manage the entire knowledge base data and information",
"read": "View knowledge base content",
"write": "Ability to add and change knowledge base content"
}
},
"the_knowledge_base_has_indexes_that_are_being_trained_or_being_rebuilt": "The knowledge base has indexes that are being trained or being rebuilt",
"website_dataset": "Web site",
"website_dataset_desc": "Web site synchronization allows you to use a web page link to build a dataset"
"rebuild_embedding_start_tip": "Index model switching task has started",
"rebuilding_index_count": "Number of indexes being rebuilt: {{count}}",
"tag": {
"Add New": "Add New",
"Add_new_tag": "Add New Tag",
"Edit_tag": "Edit Tag",
"add": "Create",
"cancel": "Cancel",
"delete_tag_confirm": "Confirm to delete the tag?",
"manage": "Tagging",
"searchOrAddTag": "Search or Add Tag",
"tags": "Tags",
"total_tags": "Total {{total}} tags"
},
"the_knowledge_base_has_indexes_that_are_being_trained_or_being_rebuilt": "The Dataset has indexes that are being trained or rebuilt",
"website_dataset": "Website Sync",
"website_dataset_desc": "Website sync allows you to build a Dataset directly using a web link."
}

View File

@@ -1,18 +1,18 @@
{
"bucket_chat": "Chat file",
"bucket_file": "Dataset file",
"click_to_view_raw_source": "View source",
"file_name": "File Name",
"file_size": "File Size",
"reached_max_file_count": "Maximum number of files reached",
"release_the_mouse_to_upload_the_file": "Release the mouse to upload the file",
"select_and_drag_file_tip": "Click or drag files here to upload",
"bucket_chat": "Conversation Files",
"bucket_file": "Dataset Documents",
"click_to_view_raw_source": "Click to View Original Source",
"file_name": "Filename",
"file_size": "Filesize",
"release_the_mouse_to_upload_the_file": "Release Mouse to Upload File",
"select_and_drag_file_tip": "Click or Drag Files Here to Upload",
"select_file_amount_limit": "You can select up to {{max}} files",
"some_file_count_exceeds_limit": "Exceeds {{maxCount}} files, automatically truncated",
"some_file_size_exceeds_limit": "Some files exceed: {{maxSize}}, have been filtered",
"support_file_type": "Supports {{fileType}} type files",
"support_max_count": "Supports up to {{maxCount}} files.",
"support_max_size": "Maximum size per file: {{maxSize}}.",
"upload_error_description": "Only supports uploading multiple files or one folder at a time",
"upload_failed": "Upload failed"
"some_file_count_exceeds_limit": "Exceeded {{maxCount}} files, automatically truncated",
"some_file_size_exceeds_limit": "Some files exceed {{maxSize}}, filtered out",
"support_file_type": "Supports {{fileType}} file types",
"support_max_count": "Supports up to {{maxCount}} files",
"support_max_size": "Maximum file size is {{maxSize}}",
"upload_failed": "Upload Failed",
"reached_max_file_count": "Maximum file count reached",
"upload_error_description": "Only multiple files or a single folder can be uploaded at a time"
}

View File

@@ -1,43 +1,43 @@
{
"app_key_tips": "These keys have the current application identification, refer to the document for specific use ",
"basic_info": "Basic information",
"app_key_tips": "These keys are already linked to the current application. Check the documentation for detailed usage.",
"basic_info": "Basic Info",
"copy_link_hint": "Copy the link below to the specified location",
"create_api_key": "Create new Key",
"create_link": "Create link",
"create_api_key": "Create New Key",
"create_link": "Create Link",
"default_response": "Default Response",
"edit_api_key": "Edit Key information",
"edit_feishu_bot": "Edit Feishu Robot",
"edit_api_key": "Edit Key Details",
"edit_feishu_bot": "Edit Feishu Bot",
"edit_link": "Edit",
"feishu_api": "Feishu interface",
"feishu_bot": "Feishu Robot",
"feishu_bot_desc": "Directly access Feishu Robot through API",
"feishu_name": "Lark",
"key_alias": "key alias, for display only ",
"key_tips": "You can use the API Key to access certain interfaces (you can't access the app, you need to use the API key within the app to access the app)",
"link_name": "Name of the share link",
"new_feishu_bot": "Added Feishu robot",
"feishu_api": "Feishu API",
"feishu_bot": "Feishu Bot",
"feishu_bot_desc": "Connect to Feishu Bot directly via API",
"feishu_name": "Feishu",
"key_alias": "Key alias, for display only",
"key_tips": "You can use the API key to access specific interfaces (cannot access the application, use the in-app API key for that)",
"link_name": "Share Link Name",
"new_feishu_bot": "Add New Feishu Bot",
"official_account": {
"api": "WeChat public account API",
"create_modal_title": "Create a WeChat public account to access",
"desc": "Directly access WeChat official account through API",
"edit_modal_title": "Edit WeChat public account access",
"name": "WeChat public account access",
"params": "Wechat params"
"api": "WeChat Official Account API",
"create_modal_title": "Create WeChat Official Account Integration",
"desc": "Connect to WeChat Official Account directly via API",
"edit_modal_title": "Edit WeChat Official Account Integration",
"name": "WeChat Official Account Integration",
"params": "WeChat Official Account Parameters"
},
"publish_name": "name",
"publish_name": "Name",
"qpm_is_empty": "QPM cannot be empty",
"qpm_tips": "How many times per minute can each IP ask at most",
"request_address": "Request address",
"show_share_link_modal_title": "Get started",
"token_auth": "Token authentication",
"token_auth_tips": "Identity verification server address, if this value is filled, a request will be sent to the specified server before each conversation to perform identity verification",
"token_auth_use_cases": "View usage instructions for identity verification",
"qpm_tips": "Maximum number of queries per minute per IP",
"request_address": "Request URL",
"show_share_link_modal_title": "Get Started",
"token_auth": "Token Authentication",
"token_auth_tips": "Token authentication server URL. If provided, a request will be sent to the specified server for authentication before each conversation.",
"token_auth_use_cases": "View Token Authentication Guide",
"wecom": {
"api": "Qiwei API",
"bot": "Enterprise WeChat robot",
"bot_desc": "Directly access enterprise WeChat robots through API",
"create_modal_title": "Create a Qiwei robot",
"edit_modal_title": "Edit Qiwei Robot",
"title": "Publish to enterprise WeChat robot"
"api": "WeCom API",
"bot": "WeCom Bot",
"bot_desc": "Connect to WeCom Bot directly via API",
"create_modal_title": "Create WeCom Bot",
"edit_modal_title": "Edit WeCom Bot",
"title": "Publish to WeCom Bot"
}
}

View File

@@ -1,120 +1,113 @@
{
"bill": {
"balance": "Balance",
"buy_plan": "Buy a package",
"buy_standard_plan_success": "Package purchased successfully",
"contact_customer_service": "Contact customer service",
"conversion": "exchange",
"convert_error": "Redemption failed",
"convert_success": "Redemption successful",
"current_token_price": "Current points price",
"not_need_invoice": "Balance payment, unable to issue invoice",
"price": "price",
"renew_plan": "Renewal package",
"standard_valid_tip": "Package usage rules: The system gives priority to using more advanced packages, and the original unused packages will take effect later.",
"token_expire_1year": "Points are valid for one year",
"tokens": "integral",
"use_balance": "Use balance",
"use_balance_hint": "Due to the system upgrade, the original \"automatic renewal and deduction from balance\" mode has been cancelled, and the balance recharge entrance has been closed. \nYour balance can be used to purchase points",
"valid_time": "Effective time",
"you_can_convert": "You can redeem",
"buy_plan": "Purchase Plan",
"buy_standard_plan_success": "Plan Purchase Successful",
"contact_customer_service": "Contact Support",
"conversion": "Conversion",
"convert_error": "Conversion Failed",
"convert_success": "Conversion Successful",
"current_token_price": "Current Token Price",
"not_need_invoice": "Balance payment, invoice not available",
"price": "Price",
"renew_plan": "Renew Plan",
"standard_valid_tip": "Plan Usage Rules: Higher-level plans will be used first. Unused plans will be activated later.",
"token_expire_1year": "Tokens are valid for one year",
"tokens": "Tokens",
"use_balance": "Use Balance",
"use_balance_hint": "Due to system upgrade, the 'Auto-renewal from balance' mode is canceled, and the balance recharge option is closed. Your balance can be used to purchase tokens.",
"valid_time": "Effective Time",
"you_can_convert": "You can convert",
"yuan": "Yuan"
},
"promotion": {
"register": "Register",
"pay": "Pay"
},
"bind_inform_account_error": "Abnormal binding notification account",
"bind_inform_account_success": "Binding notification account successful",
"code_error": {
"app_error": {
"invalid_app_type": "Wrong application type",
"invalid_owner": "Illegal app owner"
}
},
"bind_inform_account_error": "Failed to Bind Notification Account",
"bind_inform_account_success": "Notification Account Bound Successfully",
"delete": {
"admin_failed": "Failed to delete administrator",
"admin_success": "Administrator deleted successfully"
"admin_failed": "Failed to Delete Admin",
"admin_success": "Admin Deleted Successfully"
},
"has_chosen": "chosen",
"has_chosen": "Selected",
"login": {
"error": "Login exception",
"failed": "Login failed",
"login_account": "Login to {{account}} account",
"login_error": "wrong user name or password",
"password_condition": "Password maximum 60 characters",
"success": "login successful",
"to_register": "If you dont have an account, please register."
"error": "Login Error",
"failed": "Login Failed",
"login_account": "Login to {{account}} Account",
"login_error": "Incorrect Username or Password",
"password_condition": "Password can be up to 60 characters",
"success": "Login Successful",
"to_register": "No account? Register"
},
"name": "name",
"name": "Name",
"notification": {
"Bind Notification Pipe Hint": "Bind the email address or mobile phone number for receiving notifications to ensure that you receive important system notifications in a timely manner.",
"remind_owner_bind": "Please remind the creator to bind the notification account"
"Bind Notification Pipe Hint": "Please bind a notification receiving account to ensure you receive notifications such as plan expiration reminders, ensuring your service runs smoothly.",
"remind_owner_bind": "Please remind the creator to bind a notification account"
},
"operations": "operate",
"operations": "Actions",
"password": {
"change_error": "Exception when changing password",
"code_required": "verification code must be filled",
"code_send_error": "Verification code sending exception",
"code_sended": "Verification code sent",
"change_error": "Password Change Error",
"code_required": "Verification Code Required",
"code_send_error": "Failed to Send Verification Code",
"code_sended": "Verification Code Sent",
"confirm": "Confirm Password",
"email_phone": "Email/Mobile phone number",
"email_phone_error": "Email/mobile phone number format error",
"email_phone_void": "Email/mobile phone number cannot be empty",
"get_code": "get verification code",
"get_code_again": "Reacquire after s",
"new_password": "New password (4~20 digits)",
"not_match": "Two passwords are inconsistent",
"password_condition": "Password must be at least 4 characters and at most 20 characters",
"password_required": "password can not be blank",
"retrieve": "Retrieve password",
"retrieved": "Password has been retrieved",
"retrieved_account": "Retrieve {{account}} account",
"to_login": "Go to login",
"verification_code": "Verification code"
"email_phone": "Email/Phone Number",
"email_phone_error": "Invalid Email/Phone Number Format",
"email_phone_void": "Email/Phone Number Cannot Be Empty",
"get_code": "Get Verification Code",
"get_code_again": "Get Again in s",
"new_password": "New Password (4-20 characters)",
"not_match": "Passwords Do Not Match",
"password_condition": "Password must be between 4 and 20 characters",
"password_required": "Password Cannot Be Empty",
"retrieve": "Retrieve Password",
"retrieved": "Password Retrieved",
"retrieved_account": "Retrieve {{account}} Account",
"to_login": "Go to Login",
"verification_code": "Verification Code"
},
"permission": {
"Manage": "administrator",
"Manage tip": "Team administrator, with full permissions",
"Read": "Read only",
"Read desc": "Members can only read related resources and cannot create new resources.",
"Manage": "Admin",
"Manage tip": "Team admin with full permissions",
"Read": "Read Only",
"Read desc": "Members can only read related resources, cannot create new resources",
"Write": "Write",
"Write tip": "In addition to readable resources, you can also create new resources",
"change_owner": "transfer ownership",
"change_owner_failed": "Transfer ownership failed",
"change_owner_placeholder": "Enter username to find account",
"change_owner_success": "Successfully transferred ownership",
"change_owner_tip": "Your administrator rights will be retained after the transfer",
"change_owner_to": "transferred to",
"only_collaborators": "Collaborator access only",
"team_read": "Team accessible",
"team_write": "Team editable"
"Write tip": "In addition to read access, can create new resources",
"only_collaborators": "Collaborators Only",
"team_read": "Team Read Access",
"team_write": "Team Write Access"
},
"permission_des": {
"manage": "Can create resources, invite, and delete members",
"read": "Members can only read related resources and cannot create new resources.",
"write": "In addition to readable resources, you can also create new resources"
},
"permissions": "Permissions",
"register": {
"confirm": "Confirm registration",
"error": "Registration exception",
"failed": "registration failed",
"register_account": "Register {{account}} account",
"success": "registration success",
"to_login": "Already have an account? Log in"
"promotion": {
"pay": "Friend Payment",
"register": "Friend Registration"
},
"search_user": "Search username",
"register": {
"confirm": "Confirm Registration",
"error": "Registration Error",
"failed": "Registration Failed",
"register_account": "Register {{account}} Account",
"success": "Registration Successful",
"to_login": "Already have an account? Login"
},
"search_user": "Search Username",
"synchronization": {
"button": "Sync now",
"placeholder": "Please enter sync label",
"title": "Fill in the tag synchronization link and click the sync button to synchronize"
"button": "Sync Now",
"placeholder": "Enter Sync Tag",
"title": "Enter the sync tag link and click the sync button to synchronize"
},
"team": {
"Add manager": "Add manager",
"add_collaborator": "Add collaborators",
"manage_collaborators": "Manage collaborators",
"no_collaborators": "No collaborators yet"
"Add manager": "Add Admin",
"add_collaborator": "Add Collaborator",
"manage_collaborators": "Manage Collaborators",
"no_collaborators": "No Collaborators"
},
"usage": {
"feishu": "Lark",
"official_account": "Official account",
"share": "share link",
"wecom": "Enterprise WeChat"
"feishu": "Feishu",
"official_account": "Official Account",
"share": "Share Link",
"wecom": "WeCom"
}
}

View File

@@ -7,160 +7,160 @@
}
},
"Code": "Code",
"about_xxx_question": "Questions about xxx",
"add_new_input": "Add input",
"append_application_reply_to_history_as_new_context": "Splice the app's reply content into the history and return it as new context",
"application_call": "application call",
"assigned_reply": "Specify reply",
"choose_another_application_to_call": "Select a different app to call",
"classification_result": "Classification results",
"about_xxx_question": "Question regarding xxx",
"add_new_input": "Add New Input",
"append_application_reply_to_history_as_new_context": "Append the application's reply to the history as new context",
"application_call": "Application Call",
"assigned_reply": "Assigned Reply",
"choose_another_application_to_call": "Select another application to call",
"classification_result": "Classification Result",
"code": {
"Reset template": "Reset template",
"Reset template confirm": "Are you sure to restore the code template? All input and output to template values will be reset, please be careful to save the current code."
"Reset template": "Reset Template",
"Reset template confirm": "Confirm reset code template? This will reset all inputs and outputs to template values. Please save your current code."
},
"code_execution": "code run",
"collection_metadata_filter": "Collection metadata filtering",
"complete_extraction_result": "Complete extraction results",
"complete_extraction_result_description": "A JSON string, for example: {\"name:\":\"YY\",\"Time\":\"2023/7/2 18:00\"}",
"concatenation_result": "Splicing result",
"concatenation_text": "Splice text",
"condition_checker": "Judger",
"confirm_delete_field_tip": "Confirm to delete the field?",
"contains": "Include",
"content_to_retrieve": "Content to be retrieved",
"content_to_search": "Content to be retrieved",
"create_link_error": "Create link exception",
"custom_feedback": "Custom feedback",
"custom_input": "Custom input",
"custom_plugin_output": "Custom plug-in output",
"delete_api": "Are you sure you want to delete this API key? \nAfter deletion, the key will become invalid immediately and the corresponding conversation log will not be deleted. Please confirm!",
"dynamic_input_description": "Receives the output value of the previous node as variables, which can be used by Laf request parameters.",
"dynamic_input_description_concat": "Can reference the output of other nodes, as variables for text splicing, input/evoke variable lists",
"edit_input": "Edit input",
"end_with": "ends with",
"error_info_returns_empty_on_success": "Code running error message, returns empty when successful",
"execute_a_simple_script_code_usually_for_complex_data_processing": "Execute a simple script code, usually used for complex data processing.",
"execute_different_branches_based_on_conditions": "Depending on certain conditions, different branches are executed.",
"execution_error": "Run error",
"extraction_requirements_description": "Extract requirement description",
"extraction_requirements_description_detail": "Give the AI some corresponding background knowledge or description of requirements to guide the AI to complete the task better. \n\\nThis input box can use global variables.",
"extraction_requirements_placeholder": "For example: \\n1. The current time is: {{cTime}}. \nYou are a laboratory reservation assistant. Your task is to help users make laboratory reservations and obtain the corresponding reservation information from the text. \n\\n2. You are the Google search assistant and need to extract appropriate search terms from the text.",
"feedback_text": "Text of feedback",
"field_description": "Field description",
"field_description_placeholder": "Describes the functionality of this input field, which affects the quality of model generation if the parameter is called for a tool",
"code_execution": "Code Execution",
"collection_metadata_filter": "Collection Metadata Filter",
"complete_extraction_result": "Complete Extraction Result",
"complete_extraction_result_description": "A JSON string, e.g., {\"name\":\"YY\",\"Time\":\"2023/7/2 18:00\"}",
"concatenation_result": "Concatenation Result",
"concatenation_text": "Concatenation Text",
"condition_checker": "Condition Checker",
"confirm_delete_field_tip": "Confirm delete this field?",
"contains": "Contains",
"content_to_retrieve": "Content to Retrieve",
"content_to_search": "Content to Search",
"create_link_error": "Error creating link",
"custom_feedback": "Custom Feedback",
"custom_input": "Custom Input",
"custom_plugin_output": "Custom Plugin Output",
"delete_api": "Confirm delete this API key? The key will be invalid immediately after deletion, but the corresponding conversation logs will not be deleted. Please confirm!",
"dynamic_input_description": "Receive the output value of the previous node as a variable, which can be used by Laf request parameters.",
"dynamic_input_description_concat": "You can reference the output of other nodes as variables for text concatenation. Type / to invoke the variable list.",
"edit_input": "Edit Input",
"end_with": "Ends With",
"error_info_returns_empty_on_success": "Error information of code execution, returns empty on success",
"execute_a_simple_script_code_usually_for_complex_data_processing": "Execute a simple script code, usually for complex data processing.",
"execute_different_branches_based_on_conditions": "Execute different branches based on conditions.",
"execution_error": "Execution Error",
"extraction_requirements_description": "Extraction Requirements Description",
"extraction_requirements_description_detail": "Provide AI with some background knowledge or requirements to guide it in completing the task better.\\nThis input box can use global variables.",
"extraction_requirements_placeholder": "For example: \\n1. The current time is: {{cTime}}. You are a lab reservation assistant, and your task is to help users reserve a lab by extracting the corresponding reservation information from the text.\\n2. You are a Google search assistant, and you need to extract suitable search terms from the text.",
"feedback_text": "Feedback Text",
"field_description": "Field Description",
"field_description_placeholder": "Describe the function of this input field. If it is a tool call parameter, this description will affect the quality of the model generation.",
"field_name_already_exists": "Field name already exists",
"field_required": "Required",
"field_used_as_tool_input": "As tool input",
"filter_description": "Currently, label and creation time filtering is supported, which needs to be filled in according to the following format:\n\n{\n \n\"tags\": {\n \n\"$and\": [\"tag 1\",\"tag 2\"],\n \n\"$or\": [\"When there is $and tag, and takes effect, or does not take effect\"]\n \n},\n \n\"createTime\": {\n \n\"$gte\": \"YYYY-MM-DD HH:mm format is sufficient. The creation time of the collection is greater than this time\",\n \n\"$lte\": \"YYYY-MM-DD HH:mm format is sufficient. The creation time of the collection is less than this time. It can be used together with $gte\"\n \n}\n\n}",
"full_field_extraction": "Complete extraction of fields",
"full_field_extraction_description": "Returns true when the extracted fields are all filled in (model extraction or using default values is considered successful)",
"full_response_data": "Complete response data",
"greater_than": "greater than",
"greater_than_or_equal_to": "Greater than or equal to",
"greeting": "greet",
"http_raw_response_description": "The raw response of the HTTP request. \nOnly string or JSON type response data can be accepted.",
"http_request": "HTTP request",
"http_request_error_info": "HTTP request error information, returns empty when successful",
"field_used_as_tool_input": "Used as Tool Call Parameter",
"filter_description": "Currently supports filtering by tags and creation time. Fill in the format as follows:\n{\n \"tags\": {\n \"$and\": [\"Tag 1\",\"Tag 2\"],\n \"$or\": [\"When there are $and tags, and is effective, or is not effective\"]\n },\n \"createTime\": {\n \"$gte\": \"YYYY-MM-DD HH:mm format, collection creation time greater than this time\",\n \"$lte\": \"YYYY-MM-DD HH:mm format, collection creation time less than this time, can be used with $gte\"\n }\n}",
"full_field_extraction": "Full Field Extraction",
"full_field_extraction_description": "Returns true when all fields are fully extracted (success includes model extraction or using default values)",
"full_response_data": "Full Response Data",
"greater_than": "Greater Than",
"greater_than_or_equal_to": "Greater Than or Equal To",
"greeting": "Greeting",
"http_raw_response_description": "Raw HTTP response. Only accepts string or JSON type response data.",
"http_request": "HTTP Request",
"http_request_error_info": "HTTP request error information, returns empty on success",
"ifelse": {
"Input value": "Input",
"Select value": "Select"
"Input value": "Input Value",
"Select value": "Select Value"
},
"input_description": "Input descriotion",
"input_variable_list": "Enterable/evoked variable list",
"intro_assigned_reply": "This module can directly reply to a specified piece of content. \nOften used for guidance and prompts. \nWhen non-string content is passed in, it will be converted into a string for output.",
"intro_custom_feedback": "When this module is triggered, a piece of feedback will be added to the current conversation record. \nCan be used to automatically record dialogue effects, etc.",
"intro_custom_plugin_output": "Customize the external output of the configuration. When using the plug-in, only the output of the custom configuration is exposed.",
"intro_http_request": "You can issue an HTTP request to implement more complex operations (network search, database query, etc.)",
"intro_knowledge_base_search_merge": "Multiple knowledge base search results can be combined and output. \nUse RRF's merge method for final sorting output.",
"intro_laf_function_call": "You can call cloud functions under the Laf account.",
"intro_plugin_input": "You can configure what inputs the plug-in requires and use these inputs to run the plug-in",
"intro_question_classification": "Determine the type of question based on the user's history and current questions. \nMultiple sets of question types can be added. Here is an example template:\n\nType 1: Say hello\n\nType 2: Questions about the “use” of the product\n\nType 3: Questions about product purchase”\n\nType 4: Other questions",
"intro_question_optimization": "Using the question optimization function, you can improve the search accuracy during continuous dialogue in the knowledge base. \nAfter using this function, AI will first be used to construct one or more new search terms based on the context. These search terms are more conducive to knowledge base searches. \nThis module has been built into the knowledge base search module. If you only perform a knowledge base search, you can directly use the completion function built into the knowledge base.",
"intro_text_concatenation": "Fixed or incoming text can be processed and output, and non-string type data will eventually be converted into string type.",
"intro_text_content_extraction": "Specified data can be extracted from text, such as SQL statements, search keywords, codes, etc.",
"intro_tool_call_termination": "This module needs to be called by the configuration tool. \nWhen this module is executed, this tool call will be forcibly ended, and AI will no longer be called to answer questions based on the tool call results.",
"is_empty": "is empty",
"is_equal_to": "equal",
"is_not_empty": "Not empty",
"is_not_equal": "not equal to",
"judgment_result": "Judgment result",
"knowledge_base_reference": "Knowledge base reference",
"knowledge_base_search_merge": "Knowledge base search citation merge",
"laf_function_call_test": "Laf function call (test)",
"length_equal_to": "The length is equal to",
"length_greater_than": "length greater than",
"length_greater_than_or_equal_to": "length greater than",
"length_less_than": "length less than",
"length_less_than_or_equal_to": "length less than or equal to",
"length_not_equal_to": "length is not equal to",
"less_than": "less than",
"less_than_or_equal_to": "less than or equal to",
"max_dialog_rounds": "How many rounds of conversation records can be carried at most?",
"input_description": "Field Description",
"input_variable_list": "Type / to invoke variable list",
"intro_assigned_reply": "This module can directly reply with a specified content. Commonly used for guidance or prompts. Non-string content will be converted to string for output.",
"intro_custom_feedback": "When this module is triggered, a feedback will be added to the current conversation record. It can be used to automatically record conversation effects, etc.",
"intro_custom_plugin_output": "Custom configuration of external output. When using plugins, only the custom configured output is exposed.",
"intro_http_request": "Can send an HTTP request to perform more complex operations (network search, database query, etc.)",
"intro_knowledge_base_search_merge": "Can merge multiple Dataset search results for output. Uses RRF merging method for final sorting output.",
"intro_laf_function_call": "Can call cloud functions under the Laf account.",
"intro_plugin_input": "Can configure what inputs the plugin needs and use these inputs to run the plugin.",
"intro_question_classification": "Determine the type of question based on the user's history and current question. Multiple question types can be added. Below is a template example:\nType 1: Greeting\nType 2: Questions about product 'usage'\nType 3: Questions about product 'purchase'\nType 4: Other questions",
"intro_question_optimization": "Using question optimization can improve the accuracy of Dataset searches during continuous conversations. After using this function, AI will first construct one or more new search terms based on the context, which are more conducive to Dataset searches. This module is already built into the Dataset search module. If you only perform a single Dataset search, you can directly use the built-in completion function of the Dataset.",
"intro_text_concatenation": "Can process and output fixed or incoming text. Non-string type data will be converted to string type.",
"intro_text_content_extraction": "Can extract specified data from text, such as SQL statements, search keywords, code, etc.",
"intro_tool_call_termination": "This module needs to be configured for tool calls. When this module is executed, the current tool call will be forcibly terminated, and AI will no longer answer questions based on the tool call results.",
"is_empty": "Is Empty",
"is_equal_to": "Is Equal To",
"is_not_empty": "Is Not Empty",
"is_not_equal": "Is Not Equal",
"judgment_result": "Judgment Result",
"knowledge_base_reference": "Dataset Reference",
"knowledge_base_search_merge": "Dataset Search Merge",
"laf_function_call_test": "Laf Function Call (Test)",
"length_equal_to": "Length Equal To",
"length_greater_than": "Length Greater Than",
"length_greater_than_or_equal_to": "Length Greater Than or Equal To",
"length_less_than": "Length Less Than",
"length_less_than_or_equal_to": "Length Less Than or Equal To",
"length_not_equal_to": "Length Not Equal To",
"less_than": "Less Than",
"less_than_or_equal_to": "Less Than or Equal To",
"max_dialog_rounds": "Maximum Number of Dialog Rounds",
"max_tokens": "Maximum Tokens",
"new_context": "new context",
"not_contains": "Not included",
"only_the_reference_type_is_supported": "Only the Reference type is supported",
"optional_value_type": "Optional value type",
"optional_value_type_tip": "One or more data types can be specified, and users can only select the configured type when adding fields in winter",
"other_questions": "Other questions",
"pass_returned_object_as_output_to_next_nodes": "Use the object returned in the code as output and pass it to subsequent nodes. \nThe variable name needs to correspond to the key of return",
"new_context": "New Context",
"not_contains": "Does Not Contain",
"only_the_reference_type_is_supported": "Only reference type is supported",
"optional_value_type": "Optional Value Type",
"optional_value_type_tip": "You can specify one or more data types. When dynamically adding fields, users can only select the configured types.",
"other_questions": "Other Questions",
"pass_returned_object_as_output_to_next_nodes": "Pass the object returned in the code as output to the next nodes. The variable name needs to correspond to the return key.",
"plugin": {
"Instruction_Tip": "You can configure a description to explain the purpose of this plugin. This description will be displayed each time before using the plugin. Standard Markdown syntax is supported.",
"Instruction_Tip": "You can configure an instruction to explain the purpose of the plugin. This instruction will be displayed each time the plugin is used. Supports standard Markdown syntax.",
"Instructions": "Instructions"
},
"plugin_input": "Plug-in input",
"question_classification": "Problem classification",
"question_optimization": "Problem optimization",
"quote_num": "Reference {{num}}",
"raw_response": "original response",
"regex": "regular",
"reply_text": "Reply text",
"request_error": "Request error",
"plugin_input": "Plugin Input",
"question_classification": "Question Classification",
"question_optimization": "Question Optimization",
"quote_num": "Quote {{num}}",
"raw_response": "Raw Response",
"regex": "Regex",
"reply_text": "Reply Text",
"request_error": "Request Error",
"response": {
"Code log": "Log",
"Custom inputs": "Custom inputs",
"Custom outputs": "Custom outputs",
"Code log": "Code Log",
"Custom inputs": "Custom Inputs",
"Custom outputs": "Custom Outputs",
"Error": "Error",
"Read file result": "Document parsing result preview",
"User_select_description": "User select description",
"User_select_result": "User select result",
"read files": "parsed document"
"Read file result": "Read File Result",
"User_select_description": "Description",
"User_select_result": "Selected Result",
"read files": "Read Files"
},
"select_an_application": "Choose an app",
"select_an_application": "Select an Application",
"select_another_application_to_call": "You can choose another application to call",
"special_array_format": "Special array format, when the search result is empty, an empty array is returned.",
"start_with": "Start with",
"system_variables": "System variables",
"target_fields_description": "A target field is composed of 'description' and 'key', and multiple target fields can be extracted.",
"special_array_format": "Special array format, returns an empty array when the search result is empty.",
"start_with": "Starts With",
"system_variables": "system variables",
"target_fields_description": "A target field consists of 'description' and 'key'. Multiple target fields can be extracted.",
"template": {
"ai_chat": "LLM chat",
"ai_chat_intro": "Call the AI model for a conversation",
"dataset_search": "Dataset search",
"dataset_search_intro": "Call the \"Semantic Search\" and \"Full-text Search\" capabilities to find reference content that may be related to the problem from the \"Knowledge Base\"",
"ai_chat": "AI Chat",
"ai_chat_intro": "AI Large Model Chat",
"dataset_search": "Dataset Search",
"dataset_search_intro": "Use 'semantic search' and 'full-text search' capabilities to find potentially relevant reference content from the 'Dataset'.",
"system_config": "System Configuration",
"tool_call": "Tool call",
"tool_call_intro": "One or more function blocks are automatically selected for calling through the AI model, and plug-ins can also be called.",
"workflow_start": "Process starts"
"tool_call": "Tool Call",
"tool_call_intro": "Automatically select one or more functional blocks for calling through the AI model, or call plugins.",
"workflow_start": "Workflow Start"
},
"text_concatenation": "Text splicing",
"text_content_extraction": "Text content extraction",
"text_to_extract": "Text to be extracted",
"these_variables_will_be_input_parameters_for_code_execution": "These variables will be used as input parameters when the code is run.",
"tool_call_termination": "Tool call terminated",
"tool_input": "Tool",
"trigger_after_application_completion": "will be triggered after the application has completely ended",
"update_link_error": "Update link exception",
"update_specified_node_output_or_global_variable": "You can update the output value of the specified node or update global variables",
"text_concatenation": "Text Concatenation",
"text_content_extraction": "Text Content Extraction",
"text_to_extract": "Text to Extract",
"these_variables_will_be_input_parameters_for_code_execution": "These variables will be input parameters for code execution",
"tool_call_termination": "Tool Call Termination",
"tool_input": "Tool Input",
"trigger_after_application_completion": "Will be triggered after the application is fully completed",
"update_link_error": "Error updating link",
"update_specified_node_output_or_global_variable": "Can update the output value of a specified node or update global variables",
"use_user_id": "User ID",
"user_question": "User issues",
"variable_picker_tips": "enter node name or variable name to search",
"variable_update": "variable update",
"user_question": "User Question",
"variable_picker_tips": "Type node name or variable name to search",
"variable_update": "Variable Update",
"workflow": {
"Back_to_current_version": "Back to current version",
"My edit": "My edit",
"Switch_failed": "Switch failed",
"Switch_success": "switch successfully",
"Team cloud": "Team cloud",
"exit_tips": "Your changes have not been saved. Exiting directly will not save your edits."
"Back_to_current_version": "Back to Current Version",
"My edit": "My Edit",
"Switch_failed": "Switch Failed",
"Switch_success": "Switch Successful",
"Team cloud": "Team Cloud",
"exit_tips": "Your changes have not been saved. 'Exit directly' will not save your edits."
}
}

View File

@@ -179,5 +179,12 @@
"user_file_input_desc": "用户上传的文档和图片链接",
"user_select": "用户选择",
"user_select_tip": "该模块可配置多个选项,以供对话时选择。不同选项可导向不同工作流支线"
},
"permission": {
"des": {
"read": "可使用该应用进行对话",
"write": "可查看和编辑应用",
"manage": "写权限基础上,可配置发布渠道、查看对话日志、分配该应用权限"
}
}
}

View File

@@ -531,6 +531,7 @@
"feishu": "飞书",
"official_account": "公众号",
"online": "在线使用",
"free_login": "免登录链接",
"share": "外部链接调用",
"team": "团队空间对话",
"test": "测试",
@@ -647,8 +648,7 @@
"success": "开始同步"
}
},
"training": {
}
"training": {}
},
"data": {
"Auxiliary Data": "辅助数据",
@@ -926,7 +926,18 @@
"Team app": "团队应用",
"Tool module": "工具",
"UnKnow Module": "未知模块",
"http body placeholder": "与 Apifox 相同的语法"
"http body placeholder": "与 Apifox 相同的语法",
"empty_workflow": "空白工作流",
"empty_app": "空白应用",
"empty_plugin": "空白插件",
"system_config": "系统配置",
"system_config_info": "可以配置应用的系统参数",
"work_start": "流程开始",
"self_input": "自定义插件输入",
"self_output": "自定义插件输出",
"config_params": "可以配置应用的系统参数",
"ai_chat": "AI 对话",
"ai_chat_intro": "AI 大模型对话"
},
"templates": {
"Load plugin error": "加载插件失败"
@@ -1159,6 +1170,9 @@
"Collaborator": "协作者",
"Default permission": "默认权限",
"Manage": "管理",
"manager": "管理员",
"read": "读权限",
"write": "写权限",
"No InheritPermission": "已限制权限,不再继承父级文件夹的权限,",
"Not collaborator": "暂无协作者",
"Owner": "创建者",

View File

@@ -34,9 +34,17 @@
"delete_tag_confirm": "确定删除标签?",
"manage": "标签管理",
"searchOrAddTag": "搜索或添加标签",
"tags": "标签"
"tags": "标签",
"total_tags": "共{{total}}个标签"
},
"the_knowledge_base_has_indexes_that_are_being_trained_or_being_rebuilt": "知识库有训练中或正在重建的索引",
"website_dataset": "Web 站点同步",
"website_dataset_desc": "Web 站点同步允许你直接使用一个网页链接构建知识库"
"website_dataset_desc": "Web 站点同步允许你直接使用一个网页链接构建知识库",
"permission": {
"des": {
"read": "可查看知识库内容",
"write": "可增加和变更知识库内容",
"manage": "可管理整个知识库数据和信息"
}
}
}

View File

@@ -104,5 +104,10 @@
"official_account": "公众号",
"share": "分享链接",
"wecom": "企业微信"
},
"permission_des": {
"read": "成员仅可阅读相关资源,无法新建资源",
"write": "除了可读资源外,还可以新建新的资源",
"manage": "可创建资源、邀请、删除成员"
}
}

View File

@@ -216,7 +216,7 @@ function AddMemberModal({ onClose }: AddModalPropsType) {
borderRadius={'md'}
h={'32px'}
>
{perLabel}
{t(perLabel as any)}
<ChevronDownIcon fontSize={'md'} />
</Flex>
}

View File

@@ -187,7 +187,7 @@ function PermissionSelect({
>
<Radio isChecked={selectedSingleValue === item.value} />
<Box ml={4}>
<Box>{item.name}</Box>
<Box>{t(item.name as any)}</Box>
<Box color={'myGray.500'} fontSize={'mini'}>
{t(item.description as any)}
</Box>

View File

@@ -4,6 +4,7 @@ import Tag from '@fastgpt/web/components/common/Tag';
import React from 'react';
import { useContextSelector } from 'use-context-selector';
import { CollaboratorContext } from './context';
import { useTranslation } from 'next-i18next';
export type PermissionTagsProp = {
permission: PermissionValueType;
@@ -11,7 +12,7 @@ export type PermissionTagsProp = {
function PermissionTags({ permission }: PermissionTagsProp) {
const { getPerLabelList } = useContextSelector(CollaboratorContext, (v) => v);
const { t } = useTranslation();
const perTagList = getPerLabelList(permission);
return (
@@ -26,7 +27,7 @@ function PermissionTags({ permission }: PermissionTagsProp) {
px={3}
fontSize={'xs'}
>
{item}
{t(item as any)}
</Tag>
))}
</Flex>

View File

@@ -20,9 +20,9 @@ const PermissionTag = ({
const commonLabel = (() => {
if (permission.isOwner) return t('common:permission.Owner');
if (permission.hasManagePer) return PermissionList['manage'].name;
if (permission.hasWritePer) return PermissionList['write'].name;
if (permission.hasReadPer) return PermissionList['read'].name;
if (permission.hasManagePer) return t(PermissionList['manage'].name as any);
if (permission.hasWritePer) return t(PermissionList['write'].name as any);
if (permission.hasReadPer) return t(PermissionList['read'].name as any);
return;
})();
@@ -44,8 +44,10 @@ const PermissionTag = ({
permission.hasManagePer,
permission.hasReadPer,
permission.hasWritePer,
permission.isOwner,
permission.value,
permissionList
permissionList,
t
]);
return (
<HStack>

View File

@@ -61,7 +61,7 @@ function PermissionManage() {
ml={3}
borderRadius={'sm'}
>
{TeamPermissionList['manage'].description}
{t(TeamPermissionList['manage'].description as any)}
</Box>
</Flex>
{userInfo?.team.role === 'owner' && (

View File

@@ -306,7 +306,7 @@ const MyInfo = ({ onOpenContact }: { onOpenContact: () => void }) => {
<strong>{formatStorePrice2Read(userInfo?.team?.balance).toFixed(3)}</strong>{' '}
{t('user:bill.yuan')}
</Box>
{/* TODO:暂时隐藏 */}
{userInfo?.permission.hasManagePer && !!standardPlan && (
<Button variant={'primary'} size={'sm'} ml={5} onClick={onOpenConversionModal}>
{t('user:bill.conversion')}

View File

@@ -83,7 +83,7 @@ const FeiShuEditModal = ({
fontSize={'sm'}
>
<Flex alignItems={'center'}>
<MyIcon name="book" mr="1" />
<MyIcon w={'17px'} h={'17px'} name="book" mr="1" />
{t('common:common.Read document')}
</Flex>
</Link>

View File

@@ -85,7 +85,7 @@ const OffiAccountEditModal = ({
fontSize={'sm'}
>
<Flex alignItems={'center'}>
<MyIcon name="book" mr="1" />
<MyIcon name="book" w={'17px'} h={'17px'} mr="1" />
{t('common:common.Read document')}
</Flex>
</Link>

View File

@@ -82,7 +82,7 @@ const WecomEditModal = ({
fontSize={'sm'}
>
<Flex alignItems={'center'}>
<MyIcon name="book" mr="1" />
<MyIcon name="book" w={'17px'} h={'17px'} mr="1" />
{t('common:common.Read document')}
</Flex>
</Link>

View File

@@ -194,7 +194,11 @@ const TagManageModal = ({ onClose }: { onClose: () => void }) => {
pt={6}
>
<MyIcon name="menu" w={5} />
<Box ml={2} fontWeight={'semibold'} flex={'1 0 0'}>{`${tagsTotal}个标签`}</Box>
<Box ml={2} fontWeight={'semibold'} flex={'1 0 0'}>
{t('dataset:tag.total_tags', {
total: tagsTotal
})}
</Box>
<Button
size={'sm'}
leftIcon={<MyIcon name="common/addLight" w={4} />}

View File

@@ -4,7 +4,7 @@ import { useTranslation } from 'next-i18next';
import { useRouter } from 'next/router';
import { useSystemStore } from '@/web/common/system/useSystemStore';
import type { FastGPTFeConfigsType } from '@fastgpt/global/common/system/types/index.d';
import { change2DefaultLng, setLngStore } from '@/web/common/utils/i18n';
import { change2DefaultLng, LangEnum, setLngStore } from '@/web/common/utils/i18n';
import { useMemoizedFn, useMount } from 'ahooks';
import { TrackEventName } from '../common/system/constants';
@@ -40,11 +40,13 @@ export const useInitApp = () => {
const initUserLanguage = useMemoizedFn(() => {
// get default language
const targetLng = change2DefaultLng(i18n.language);
if (targetLng) {
setLngStore(targetLng);
router.replace(router.asPath, undefined, { locale: targetLng });
}
const targetLng =
change2DefaultLng(i18n.language) ||
(['zh', 'zh-CN'].includes(navigator.language) ? 'zh' : 'en');
setLngStore(targetLng);
router.replace(router.asPath, undefined, { locale: targetLng });
});
useMount(() => {

View File

@@ -32,8 +32,8 @@ export const emptyTemplates: Record<
nodes: [
{
nodeId: 'userGuide',
name: '系统配置',
intro: '可以配置应用的系统参数',
name: i18nT('common:core.module.template.system_config'),
intro: i18nT('common:core.module.template.config_params'),
avatar: 'core/workflow/template/systemConfig',
flowNodeType: FlowNodeTypeEnum.systemConfig,
position: {
@@ -95,7 +95,7 @@ export const emptyTemplates: Record<
},
{
nodeId: '448745',
name: '流程开始',
name: i18nT('common:core.module.template.work_start'),
intro: '',
avatar: 'core/workflow/template/workflowStart',
flowNodeType: FlowNodeTypeEnum.workflowStart,
@@ -109,9 +109,9 @@ export const emptyTemplates: Record<
key: 'userChatInput',
renderTypeList: [FlowNodeInputTypeEnum.reference, FlowNodeInputTypeEnum.textarea],
valueType: WorkflowIOValueTypeEnum.string,
label: '用户问题',
label: i18nT('common:core.module.input.label.user question'),
required: true,
toolDescription: '用户问题'
toolDescription: i18nT('common:core.module.input.label.user question')
}
],
outputs: [
@@ -126,8 +126,8 @@ export const emptyTemplates: Record<
},
{
nodeId: 'loOvhld2ZTKa',
name: 'AI 对话',
intro: 'AI 大模型对话',
name: i18nT('common:core.module.template.ai_chat'),
intro: i18nT('common:core.module.template.ai_chat_intro'),
avatar: 'core/workflow/template/aiChat',
flowNodeType: FlowNodeTypeEnum.chatNode,
showStatus: true,
@@ -210,16 +210,16 @@ export const emptyTemplates: Record<
key: 'userChatInput',
renderTypeList: [FlowNodeInputTypeEnum.reference, FlowNodeInputTypeEnum.textarea],
valueType: WorkflowIOValueTypeEnum.string,
label: '用户问题',
label: i18nT('common:core.module.input.label.user question'),
required: true,
toolDescription: '用户问题',
toolDescription: i18nT('common:core.module.input.label.user question'),
value: ['448745', 'userChatInput']
},
{
key: 'quoteQA',
renderTypeList: [FlowNodeInputTypeEnum.settingDatasetQuotePrompt],
label: '',
debugLabel: '知识库引用',
debugLabel: i18nT('common:core.module.Dataset quote.label'),
description: '',
valueType: WorkflowIOValueTypeEnum.datasetQuote
}
@@ -255,12 +255,12 @@ export const emptyTemplates: Record<
},
[AppTypeEnum.workflow]: {
avatar: 'core/app/type/workflowFill',
name: '空白工作流',
name: i18nT('common:core.module.template.empty_workflow'),
nodes: [
{
nodeId: 'userGuide',
name: '系统配置',
intro: '可以配置应用的系统参数',
name: i18nT('common:core.module.template.system_config'),
intro: i18nT('common:core.module.template.system_config_info'),
avatar: 'core/workflow/template/systemConfig',
flowNodeType: 'userGuide',
position: {
@@ -322,7 +322,7 @@ export const emptyTemplates: Record<
},
{
nodeId: '448745',
name: '流程开始',
name: i18nT('common:core.module.template.work_start'),
intro: '',
avatar: 'core/workflow/template/workflowStart',
flowNodeType: 'workflowStart',
@@ -336,9 +336,9 @@ export const emptyTemplates: Record<
key: 'userChatInput',
renderTypeList: ['reference', 'textarea'],
valueType: 'string',
label: '用户问题',
label: i18nT('common:core.module.input.label.user question'),
required: true,
toolDescription: '用户问题'
toolDescription: i18nT('common:core.module.input.label.user question')
}
],
outputs: [
@@ -356,11 +356,11 @@ export const emptyTemplates: Record<
},
[AppTypeEnum.plugin]: {
avatar: 'core/app/type/pluginFill',
name: '空白插件',
name: i18nT('common:core.module.template.empty_plugin'),
nodes: [
{
nodeId: 'pluginInput',
name: '自定义插件输入',
name: i18nT('common:core.module.template.self_input'),
avatar: 'core/workflow/template/workflowStart',
flowNodeType: FlowNodeTypeEnum.pluginInput,
showStatus: false,
@@ -374,7 +374,7 @@ export const emptyTemplates: Record<
},
{
nodeId: 'pluginOutput',
name: '自定义插件输出',
name: i18nT('common:core.module.template.self_output'),
avatar: '/imgs/workflow/output.png',
flowNodeType: FlowNodeTypeEnum.pluginOutput,
showStatus: false,

View File

@@ -162,16 +162,16 @@ export function form2AppWorkflow(
key: 'userChatInput',
renderTypeList: [FlowNodeInputTypeEnum.reference, FlowNodeInputTypeEnum.textarea],
valueType: WorkflowIOValueTypeEnum.string,
label: '用户问题',
label: i18nT('common:core.module.input.label.user question'),
required: true,
toolDescription: '用户问题',
toolDescription: i18nT('common:core.module.input.label.user question'),
value: [workflowStartNodeId, 'userChatInput']
},
{
key: 'quoteQA',
renderTypeList: [FlowNodeInputTypeEnum.settingDatasetQuotePrompt],
label: '',
debugLabel: '知识库引用',
debugLabel: i18nT('common:core.module.Dataset quote.label'),
description: '',
valueType: WorkflowIOValueTypeEnum.datasetQuote,
value: selectedDatasets ? [datasetNodeId, 'quoteQA'] : undefined
@@ -467,7 +467,7 @@ export function form2AppWorkflow(
key: 'userChatInput',
renderTypeList: [FlowNodeInputTypeEnum.reference, FlowNodeInputTypeEnum.textarea],
valueType: WorkflowIOValueTypeEnum.string,
label: '用户问题',
label: i18nT('common:core.module.input.label.user question'),
required: true,
value: [workflowStartNodeId, 'userChatInput']
},