From dfcffc7fc1597d9e92edff12972a4ad724410edc Mon Sep 17 00:00:00 2001 From: papapatrick <109422393+Patrickill@users.noreply.github.com> Date: Thu, 5 Sep 2024 17:29:36 +0800 Subject: [PATCH] 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 --- .../global/support/permission/app/constant.ts | 8 +- .../global/support/permission/constant.ts | 14 +- .../support/permission/dataset/constant.ts | 7 +- .../support/permission/user/constant.ts | 8 +- .../global/support/wallet/usage/constants.ts | 4 +- packages/web/i18n/en/app.json | 276 ++- packages/web/i18n/en/chat.json | 70 +- packages/web/i18n/en/common.json | 1991 +++++++++-------- packages/web/i18n/en/dataset.json | 70 +- packages/web/i18n/en/file.json | 30 +- packages/web/i18n/en/publish.json | 66 +- packages/web/i18n/en/user.json | 181 +- packages/web/i18n/en/workflow.json | 272 +-- packages/web/i18n/zh/app.json | 7 + packages/web/i18n/zh/common.json | 20 +- packages/web/i18n/zh/dataset.json | 12 +- packages/web/i18n/zh/user.json | 5 + .../MemberManager/AddMemberModal.tsx | 2 +- .../MemberManager/PermissionSelect.tsx | 2 +- .../MemberManager/PermissionTags.tsx | 5 +- .../permission/PermissionTags/index.tsx | 10 +- .../components/PermissionManage/index.tsx | 2 +- .../pages/account/components/Info/index.tsx | 2 +- .../Publish/FeiShu/FeiShuEditModal.tsx | 2 +- .../OffiAccount/OffiAccountEditModal.tsx | 2 +- .../Publish/Wecom/WecomEditModal.tsx | 2 +- .../CollectionCard/TagManageModal.tsx | 6 +- projects/app/src/web/context/useInitApp.ts | 14 +- projects/app/src/web/core/app/templates.ts | 38 +- projects/app/src/web/core/app/utils.ts | 8 +- 30 files changed, 1590 insertions(+), 1546 deletions(-) diff --git a/packages/global/support/permission/app/constant.ts b/packages/global/support/permission/app/constant.ts index 72cc49805..377828d1c 100644 --- a/packages/global/support/permission/app/constant.ts +++ b/packages/global/support/permission/app/constant.ts @@ -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') } }; diff --git a/packages/global/support/permission/constant.ts b/packages/global/support/permission/constant.ts index 1afdb573f..ff4e8454d 100644 --- a/packages/global/support/permission/constant.ts +++ b/packages/global/support/permission/constant.ts @@ -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' diff --git a/packages/global/support/permission/dataset/constant.ts b/packages/global/support/permission/dataset/constant.ts index 217d74e8c..977316b22 100644 --- a/packages/global/support/permission/dataset/constant.ts +++ b/packages/global/support/permission/dataset/constant.ts @@ -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') } }; diff --git a/packages/global/support/permission/user/constant.ts b/packages/global/support/permission/user/constant.ts index 2ff438e0f..cef0671e6 100644 --- a/packages/global/support/permission/user/constant.ts +++ b/packages/global/support/permission/user/constant.ts @@ -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') } }; diff --git a/packages/global/support/wallet/usage/constants.ts b/packages/global/support/wallet/usage/constants.ts index 5edfce9ab..6e0dab53b 100644 --- a/packages/global/support/wallet/usage/constants.ts +++ b/packages/global/support/wallet/usage/constants.ts @@ -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' diff --git a/packages/web/i18n/en/app.json b/packages/web/i18n/en/app.json index 0a303ccd7..f1fd0aa28 100644 --- a/packages/web/i18n/en/app.json +++ b/packages/web/i18n/en/app.json @@ -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." + } } diff --git a/packages/web/i18n/en/chat.json b/packages/web/i18n/en/chat.json index 3f3ed280f..d087c1864 100644 --- a/packages/web/i18n/en/chat.json +++ b/packages/web/i18n/en/chat.json @@ -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" } diff --git a/packages/web/i18n/en/common.json b/packages/web/i18n/en/common.json index 23842179b..e887c1e4c 100644 --- a/packages/web/i18n/en/common.json +++ b/packages/web/i18n/en/common.json @@ -1,27 +1,27 @@ { - "App": "App", + "App": "Application", "Export": "Export", "FAQ": { - "ai_point_a": "Every time the AI ​​model is called, a certain amount of AI points will be consumed. \nFor specific calculation standards, please refer to the \"AI Points Calculation Standards\" above.\n\nToken calculation uses the same formula as GPT3.5, 1Token≈0.7 Chinese characters≈0.9 English words. Continuous characters may be considered as 1 Tokens.", - "ai_point_expire_a": "will expire. \nAfter the current package expires, the AI ​​points will be cleared and updated to the AI ​​points of the new package. \nThe AI ​​points for the annual package last for 1 year, not every month.", - "ai_point_expire_q": "Will AI points expire?", + "ai_point_a": "Each time you use the AI model, a certain amount of AI points will be deducted. For detailed calculation standards, please refer to the 'AI Points Calculation Standards' above.\nToken calculation uses the same formula as GPT-3.5, where 1 Token ≈ 0.7 Chinese characters ≈ 0.9 English words. Consecutive characters may be considered as 1 Token.", + "ai_point_expire_a": "Yes, they will expire. After the current package expires, the AI points will be reset to the new package's AI points. Annual package AI points are valid for one year, not monthly.", + "ai_point_expire_q": "Do AI points expire?", "ai_point_q": "What are AI points?", - "auto_renew_a": "After the current package expires, the system will automatically renew according to the \"future package\" and the system will try to deduct the fee from the account balance. If you need to automatically renew, please reserve a quota in the account balance.", - "auto_renew_q": "Will the subscription package automatically renew?", - "change_package_a": "When the current package price is greater than the new package, you cannot switch immediately. You will be switched in the form of \"renewal\" after the current package expires.\n\nWhen the current package price is lower than the new package, the system will automatically calculate the remaining balance of the current package, and you can pay the price difference to switch packages.", - "change_package_q": "Can I switch subscription plans?", - "check_subscription_a": "Account - personal information - package details - usage. \nYou can view the effective and expiry dates of the packages you own. \nWhen the paid package expires, it will automatically switch to the free version.", - "check_subscription_q": "Where can I check my subscribed plans?", - "dataset_compute_a": "1 knowledge base storage is equal to 1 knowledge base index. \nA piece of knowledge base data can contain one or more knowledge base indexes. \nDuring enhanced training, 1 piece of data will generate 5 indexes.", - "dataset_compute_q": "How to calculate knowledge base storage?", - "dataset_index_a": "Won't. \nHowever, when the knowledge base index exceeds, knowledge base content cannot be inserted and updated.", - "dataset_index_q": "Will the knowledge base index be deleted if it exceeds the limit?", - "free_user_clean_a": "After free version users (free version without purchasing additional packages) have no usage records for 30 days, the system will automatically clear all knowledge base content under the account.", - "free_user_clean_q": "Will the data in the free version be cleared?", - "package_overlay_a": "OK. \nEach resource package purchased is independent and will be used stacked within its validity period. \nAI points will be deducted from the resource package that expires first.", + "auto_renew_a": "After the current package expires, the system will automatically renew according to the 'Future Package'. The system will attempt to deduct the fee from your account balance. Please ensure there is sufficient balance for automatic renewal.", + "auto_renew_q": "Will the subscription package renew automatically?", + "change_package_a": "If the current package price is higher than the new package, it cannot be switched immediately and will switch upon renewal after the current package expires.\nIf the current package price is lower than the new package, the system will calculate the remaining balance of the current package, and you can pay the difference to switch packages.", + "change_package_q": "Can I switch subscription packages?", + "check_subscription_a": "Go to Account - Personal Information - Package Details - Usage. You can view the effective and expiration dates of your subscribed packages. After the paid package expires, it will automatically switch to the free version.", + "check_subscription_q": "Where can I view my subscribed packages?", + "dataset_compute_a": "1 Dataset storage equals 1 Dataset index. A piece of Dataset data can contain one or more Dataset indexes. In enhanced training, 1 piece of data generates 5 indexes.", + "dataset_compute_q": "How is Dataset storage calculated?", + "dataset_index_a": "No, but if the Dataset index exceeds the limit, you cannot insert or update Dataset content.", + "dataset_index_q": "Will the Dataset index be deleted if it exceeds the limit?", + "free_user_clean_a": "If a free team (free version and has not purchased additional packages) does not log in to the system for 30 consecutive days, the system will automatically clear all Dataset content under that team.", + "free_user_clean_q": "Will the data of the free version be cleared?", + "package_overlay_a": "Yes, each purchased resource pack is independent and will be used in an overlapping manner within its validity period. AI points will be deducted from the resource pack that expires first.", "package_overlay_q": "Can additional resource packs be stacked?", - "switch_package_a": "The package usage rule is to give priority to more advanced packages. Therefore, if the new package purchased is more advanced than the current package, the new package will take effect immediately: otherwise, the current package will continue to be used.", - "switch_package_q": "Switch subscription plans?" + "switch_package_a": "The package usage rule is to prioritize the use of higher-level packages. Therefore, if the newly purchased package is higher than the current package, the new package will take effect immediately; otherwise, the current package will continue to be used.", + "switch_package_q": "Will the subscription package be switched?" }, "Folder": "Folder", "Login": "Login", @@ -33,175 +33,175 @@ "Running": "Running", "UnKnow": "Unknown", "Warning": "Warning", - "add_new": "Add new", - "back": "return", - "chose_condition": "Selection criteria", - "chosen": "selected", + "add_new": "Add New", + "back": "Back", + "chose_condition": "Choose Condition", + "chosen": "Chosen", "classification": "Classification", - "click_to_resume": "Resume", - "code_editor": "Code edit", + "click_to_resume": "Click to Resume", + "code_editor": "Code Editor", "code_error": { "app_error": { - "invalid_app_type": "Wrong application type", - "invalid_owner": "Illegal app owner", - "not_exist": "App does not exist", - "un_auth_app": "No permission to operate this application" + "invalid_app_type": "Invalid Application Type", + "invalid_owner": "Unauthorized Application Owner", + "not_exist": "Application Does Not Exist", + "un_auth_app": "Unauthorized to Operate This Application" }, "chat_error": { - "un_auth": "No permission to operate this conversation record" + "un_auth": "Unauthorized to Operate This Chat Record" }, "error_code": { - "400": "Request failed", - "401": "No access", - "403": "Nervous visit", - "404": "Request does not exist", - "405": "Request method error", - "406": "Request format error", - "410": "Resource deleted", - "422": "Validation error", - "500": "Server error occurred", - "502": "Gateway error", - "503": "The server is temporarily overloaded or under maintenance", - "504": "Gateway timeout" + "400": "Request Failed", + "401": "No Access Permission", + "403": "Access Forbidden", + "404": "Request Not Found", + "405": "Request Method Error", + "406": "Request Format Error", + "410": "Resource Deleted", + "422": "Validation Error", + "500": "Server Error", + "502": "Gateway Error", + "503": "Server Overloaded or Under Maintenance", + "504": "Gateway Timeout" }, "error_message": { - "403": "Credential error", - "510": "Insufficient account balance", - "511": "No permission to operate this model", - "513": "No permission to read the file", - "514": "Api Key is illegal" + "403": "Credential Error", + "510": "Insufficient Account Balance", + "511": "Unauthorized to Operate This Model", + "513": "Unauthorized to Read This File", + "514": "Invalid API Key" }, "openapi_error": { - "api_key_not_exist": "API Key does not exist", - "exceed_limit": "Up to 10 sets of API keys", - "un_auth": "No permission to operate this API Key" + "api_key_not_exist": "API Key Does Not Exist", + "exceed_limit": "Up to 10 API Keys", + "un_auth": "Unauthorized to Operate This API Key" }, "outlink_error": { - "invalid_link": "Sharing link is invalid", - "link_not_exist": "Sharing link does not exist", - "un_auth_user": "Identity verification failed" + "invalid_link": "Invalid Share Link", + "link_not_exist": "Share Link Does Not Exist", + "un_auth_user": "Identity Verification Failed" }, "plugin_error": { - "not_exist": "Plugin does not exist", - "un_auth": "No permission to operate this plug-in" + "not_exist": "Plugin Does Not Exist", + "un_auth": "Unauthorized to Operate This Plugin" }, "system_error": { - "community_version_num_limit": "If the number limit of the open source version is exceeded, please upgrade to the commercial version: https://fastgpt.in" + "community_version_num_limit": "Exceeded Open Source Version Limit, Please Upgrade to Commercial Version: https://fastgpt.in" }, "team_error": { - "ai_points_not_enough": "", - "app_amount_not_enough": "The number of applications has reached the upper limit~", - "dataset_amount_not_enough": "The number of knowledge bases has reached the upper limit~", - "dataset_size_not_enough": "The capacity of the knowledge base is insufficient, please expand it first~", + "ai_points_not_enough": "Insufficient AI Points", + "app_amount_not_enough": "Application Limit Reached", + "dataset_amount_not_enough": "Dataset Limit Reached", + "dataset_size_not_enough": "Insufficient Dataset Capacity, Please Expand", "over_size": "error.team.overSize", - "plugin_amount_not_enough": "The number of plug-ins has reached the upper limit~", - "re_rank_not_enough": "Not authorized to use search rearrangement~", - "un_auth": "No permission to operate this team", - "website_sync_not_enough": "No permission to use Web site synchronization~" + "plugin_amount_not_enough": "Plugin Limit Reached", + "re_rank_not_enough": "Unauthorized to Use Re-Rank", + "un_auth": "Unauthorized to Operate This Team", + "website_sync_not_enough": "Unauthorized to Use Website Sync" }, "token_error_code": { - "403": "Invalid login status, please log in again" + "403": "Invalid Login Status, Please Re-login" }, "user_error": { - "balance_not_enough": "Account balance is insufficient~", - "bin_visitor": "Your identity verification failed", - "bin_visitor_guest": "You are currently a visitor and do not have permission to operate", - "un_auth_user": "The user cannot be found" + "balance_not_enough": "Insufficient Account Balance", + "bin_visitor": "Identity Verification Failed", + "bin_visitor_guest": "You Are Currently a Guest, Unauthorized to Operate", + "un_auth_user": "User Not Found" } }, "common": { "Action": "Action", "Add": "Add", "Add New": "Add New", - "Add Success": "Add successfully", + "Add Success": "Added Successfully", "All": "All", "Cancel": "Cancel", "Choose": "Choose", "Close": "Close", - "Config": "Config", + "Config": "Configuration", "Confirm": "Confirm", - "Confirm Create": "Confirm Create", + "Confirm Create": "Confirm Creation", "Confirm Import": "Confirm Import", "Confirm Move": "Move Here", "Confirm Update": "Confirm Update", - "Confirm to leave the page": "Confirm to leave the page?", + "Confirm to leave the page": "Confirm to Leave This Page?", "Copy": "Copy", - "Copy Successful": "Copy Successful", - "Copy_failed": "Copy failed, please copy manually", - "Create Failed": "Create Failed", + "Copy Successful": "Copied Successfully", + "Copy_failed": "Copy Failed, Please Copy Manually", + "Create Failed": "Creation Failed", "Create New": "Create New", - "Create Success": "Create Success", - "Create Time": "Create Time", + "Create Success": "Created Successfully", + "Create Time": "Creation Time", "Creating": "Creating", "Custom Title": "Custom Title", "Delete": "Delete", - "Delete Failed": "Delete Failed", - "Delete Success": "Delete Success", - "Delete Warning": "Delete Warning", - "Delete folder": "Delete", + "Delete Failed": "Deletion Failed", + "Delete Success": "Deleted Successfully", + "Delete Warning": "Deletion Warning", + "Delete folder": "Delete Folder", "Detail": "Detail", "Documents": "Documents", "Done": "Done", "Edit": "Edit", "Exit": "Exit", - "Exit Directly": "Exit", - "Expired Time": "Expired Time", + "Exit Directly": "Exit Directly", + "Expired Time": "Expiration Time", "Field": "Field", "File": "File", "Finish": "Finish", "Import": "Import", - "Import failed": "Import failed", - "Import success": "Import success", + "Import failed": "Import Failed", + "Import success": "Imported Successfully", "Input": "Input", - "Input folder description": "Folder description", - "Input name": "Folder name", - "Intro": "Intro", - "Last Step": "Last Step", - "Last use time": "Last use time", + "Input folder description": "Folder Description", + "Input name": "Enter a Name", + "Intro": "Introduction", + "Last Step": "Previous Step", + "Last use time": "Last Use Time", "Load Failed": "Load Failed", "Loading": "Loading...", "More": "More", "Move": "Move", "MultipleRowSelect": { - "No data": "No data available" + "No data": "No Data Available" }, "Name": "Name", "Next Step": "Next Step", - "No more data": "No more data~", - "Not open": "Unopened", + "No more data": "No More Data", + "Not open": "Not Open", "OK": "OK", "Open": "Open", "Operation": "Operation", "Other": "Other", "Output": "Output", - "Params": "Params", - "Password inconsistency": "Passwords do not match", - "Permission": "Permissions", - "Please Input Name": "Please enter a name", - "Read document": "Read document", - "Read intro": "Read intro", + "Params": "Parameters", + "Password inconsistency": "Passwords Do Not Match", + "Permission": "Permission", + "Please Input Name": "Please Enter a Name", + "Read document": "Read Document", + "Read intro": "Read Introduction", "Remove": "Remove", "Rename": "Rename", "Request Error": "Request Error", - "Require Input": "Required Input", + "Require Input": "Required", "Restart": "Restart", - "Role": "Role", - "Root folder": "Root folder", + "Role": "Permission", + "Root folder": "Root Folder", "Run": "Run", "Save": "Save", - "Save Failed": "Saved failed", - "Save Success": "Saved success", - "Save_and_exit": "Save and exit", + "Save Failed": "Save Failed", + "Save Success": "Saved Successfully", + "Save_and_exit": "Save and Exit", "Search": "Search", - "Select File Failed": "Select File Failed", - "Select template": "Select template", - "Set Avatar": "Click to set avatar", - "Set Name": "Set a name", + "Select File Failed": "File Selection Failed", + "Select template": "Select Template", + "Set Avatar": "Click to Set Avatar", + "Set Name": "Enter a Name", "Setting": "Setting", "Status": "Status", - "Submit failed": "Submit failed", + "Submit failed": "Submission Failed", "Success": "Success", - "Sync success": "Sync success", + "Sync success": "Synced Successfully", "Team": "Team", "Team Tags Set": "Tags", "Un used": "Unused", @@ -210,372 +210,373 @@ "Unlimited": "Unlimited", "Update": "Update", "Update Failed": "Update Failed", - "Update Success": "Update Success", - "Update Successful": "Update Successful", - "Upload File Failed": "Upload File Failed", + "Update Success": "Updated Successfully", + "Update Successful": "Updated Successfully", + "Upload File Failed": "File Upload Failed", "Username": "Username", "Waiting": "Waiting", "Warning": "Warning", "Website": "Website", - "all_result": "full results", + "all_result": "Full Results", "avatar": { - "Select Avatar": "Click to select avatar", - "Select Failed": "Select avatar failed" + "Select Avatar": "Click to Select Avatar", + "Select Failed": "Avatar Selection Failed" }, - "base_config": "Basic configuration", + "base_config": "Basic Configuration", "choosable": "Choosable", "confirm": { - "Common Tip": "Operation confirmation" + "Common Tip": "Operation Confirmation" }, - "copy_to_clipboard": "copy to clipboard", + "copy_to_clipboard": "Copy to Clipboard", "course": { - "Read Course": "Read course" + "Read Course": "Read Course" }, "empty": { - "Common Tip": "No data~" + "Common Tip": "No Data Available" }, "error": { - "Select avatar failed": "Avatar selection failed", - "too_many_request": "Too many requests, please try again later.", - "unKnow": "An unexpected error occurred~" + "Select avatar failed": "Avatar Selection Failed", + "too_many_request": "Too Many Requests, Please Try Again Later.", + "unKnow": "An Unexpected Error Occurred" }, "export_to_json": "Export to JSON", - "failed": "fail", + "failed": "Failed", "folder": { - "Drag Tip": "Drag me", - "Move Success": "Move successful", + "Drag Tip": "Click to Drag", + "Move Success": "Moved Successfully", "Move to": "Move to", - "No Folder": "No subdirectories, place here", - "Open folder": "Open folder", - "Root Path": "Root directory", - "empty": "This directory has nothing selectable~", - "open_dataset": "Open knowledge base" + "No Folder": "No Subdirectories, Place Here", + "Open folder": "Open Folder", + "Root Path": "Root Directory", + "empty": "No More Items in This Directory", + "open_dataset": "Open Dataset" }, "have_done": "Completed", "input": { - "Repeat Value": "Duplicate value" + "Repeat Value": "Duplicate Value" }, "is_requesting": "Requesting...", "jsonEditor": { - "Parse error": "JSON may be incorrect, please check carefully" + "Parse error": "Possible JSON Error, Please Check Carefully" }, - "json_config": "JSON configuration", + "json_config": "JSON Configuration", "link": { - "UnValid": "Invalid link" + "UnValid": "Invalid Link" }, "month": "Month", - "name_is_empty": "Name cannot be empty", - "no_intro": "No introduction yet", - "not_support": "not support", - "page_center": "Center the page", - "redo_tip": "redo ctrl shift z", - "redo_tip_mac": "redo ⌘ shift z", - "request_end": "All loaded", - "request_more": "Click to load more", + "name_is_empty": "Name Cannot Be Empty", + "no_intro": "No Introduction Available", + "not_support": "Not Supported", + "page_center": "Page Center", + "redo_tip": "Redo ctrl shift z", + "redo_tip_mac": "Redo ⌘ shift z", + "request_end": "All Loaded", + "request_more": "Click to Load More", "speech": { - "error tip": "Speech to text failed", - "not support": "Your browser does not support speech input" + "error tip": "Speech to Text Failed", + "not support": "Your Browser Does Not Support Speech Input" }, - "submit_success": "Submitted successfully", + "submit_success": "Submitted Successfully", "submitted": "Submitted", "submitting": "Submitting", - "support": "support", + "support": "Support", "system": { - "Commercial version function": "Commercial version feature", - "Help Chatbot": "Chatbot assistant", - "Use Helper": "Use helper" + "Commercial version function": "Please Upgrade to the Commercial Version to Use This Feature: https://fastgpt.in", + "Help Chatbot": "Help Chatbot", + "Use Helper": "Use Helper" }, "ui": { "textarea": { - "Magnifying": "Magnify" + "Magnifying": "Magnifying" } }, - "undo_tip": "unde ctrl z", - "undo_tip_mac": "undo ⌘ z ", - "upload_file": "Upload files", - "zoomin_tip": "zoomIn ctrl -", - "zoomin_tip_mac": "zoomIn ⌘ -", - "zoomout_tip": "zoomOut ctrl +", - "zoomout_tip_mac": "zoomOut ⌘ +" + "undo_tip": "Undo ctrl z", + "undo_tip_mac": "Undo ⌘ z ", + "upload_file": "Upload File", + "zoomin_tip": "Zoom Out ctrl -", + "zoomin_tip_mac": "Zoom Out ⌘ -", + "zoomout_tip": "Zoom In ctrl +", + "zoomout_tip_mac": "Zoom In ⌘ +" }, "comon": { "Continue_Adding": "Continue Adding" }, - "confirm_choice": "Confirm selection", - "contribute_app_template": "Contribution template", + "confirm_choice": "Confirm Choice", + "contribute_app_template": "Contribute Template", "core": { "Chat": "Chat", - "Max Token": "Max token per data", + "Max Token": "Max Token", "ai": { - "AI settings": "AI settings", - "Ai point price": "AI point consumption", - "Max context": "Max context", - "Model": "AI model", - "Not deploy rerank model": "Rerank model not deployed", + "AI settings": "AI Settings", + "Ai point price": "AI Points Consumption", + "Max context": "Max Context", + "Model": "AI Model", + "Not deploy rerank model": "Re-rank Model Not Deployed", "Prompt": "Prompt", - "Support tool": "Function call", + "Support tool": "Function Call", "model": { - "Dataset Agent Model": "File processing model", - "Vector Model": "Index model", - "doc_index_and_dialog": "Document index" + "Dataset Agent Model": "File Processing Model", + "Vector Model": "Index Model", + "doc_index_and_dialog": "Document Index & Dialog Index" } }, "app": { - "Ai response": "Return AI content", - "Api request": "API access", - "Api request desc": "Access existing systems via API, or enterprise WeChat, Lark, etc.", - "App intro": "App introduction", - "Chat Variable": "Chat box variable", - "Config schedule plan": "Configure scheduled execution", - "Config whisper": "Configure voice input", - "Interval timer config": "Scheduled execution configuration", - "Interval timer run": "Scheduled execution", - "Interval timer tip": "Can be scheduled to execute applications", - "Make a brief introduction of your app": "Give your AI app an introduction", - "Max histories": "Chat history count", - "Max tokens": "Reply limit", - "Name and avatar": "Avatar & name", - "Not saved": "Not saved", - "Onclick to save": "Click to save", + "Ai response": "AI Response", + "Api request": "API Request", + "Api request desc": "Integrate into existing systems through API, or WeChat Work, Feishu, etc.", + "App intro": "App Introduction", + "Chat Variable": "Chat Variable", + "Config schedule plan": "Configure Scheduled Execution", + "Config whisper": "Configure Voice Input", + "Interval timer config": "Scheduled Execution Configuration", + "Interval timer run": "Scheduled Execution", + "Interval timer tip": "Can Execute App on Schedule", + "Make a brief introduction of your app": "Give Your AI App an Introduction", + "Max histories": "Number of Chat Histories", + "Max tokens": "Response Limit", + "Name and avatar": "Avatar & Name", + "Not saved": "Not Saved", + "Onclick to save": "Click to Save", "Publish": "Publish", - "Publish Confirm": "Confirm to publish the app? It will immediately update the app status across all published channels.", - "Publish app tip": "Once you publish your app, all distribution channels will immediately use that version", - "Question Guide": "Guess you want to ask", - "Question Guide Tip": "After the conversation ends, it will generate 3 guiding questions.", - "Quote prompt": "Quote template prompt", - "Quote templates": "Quote content templates", - "Random": "Diverge", + "Publish Confirm": "Confirm to Publish App? This Will Immediately Update the App Status on All Publishing Channels.", + "Publish app tip": "After Publishing the App, All Publishing Channels Will Immediately Use This Version", + "Question Guide": "Guess What You Want to Ask", + "Question Guide Tip": "After the conversation ends, 3 guiding questions will be generated.", + "Quote prompt": "Quote Template Prompt", + "Quote templates": "Quote Content Templates", + "Random": "Divergent", "Saved time": "Saved: {{time}}", - "Search team tags": "Search tags", - "Select TTS": "Select voice playback mode", - "Select app from template": "Select from template", - "Select quote template": "Select quote prompt template", - "Set a name for your app": "Set a name for your app", - "Setting ai property": "Click to configure AI model related properties", - "Share link": "Login-free window", - "Share link desc": "Share the link with other users, who can use it directly without logging in", - "Share link desc detail": "You can directly share this model with other users for conversation, and the other party can directly start the conversation without logging in. Note, this feature will consume your account balance, please keep the link safe!", - "TTS": "Voice playback", - "TTS Tip": "After enabling, each conversation can use the voice playback function. Using this function may incur additional costs.", - "TTS start": "Read content", - "Team tags": "Team tags", + "Search team tags": "Search Tags", + "Select TTS": "Select Voice Playback Mode", + "Select app from template": "Select from Template", + "Select quote template": "Select Quote Prompt Template", + "Set a name for your app": "Set a Name for Your App", + "Setting ai property": "Click to Configure AI Model Properties", + "Share link": "Login-Free Window", + "Share link desc": "Share the link with other users, they can use it directly without logging in", + "Share link desc detail": "You can directly share this model with other users for conversation, they can use it directly without logging in. Note, this feature will consume your account balance, please keep the link safe!", + "TTS": "Voice Playback", + "TTS Tip": "After enabling, you can use the voice playback function after each conversation. Using this feature may incur additional costs.", + "TTS start": "Read Content", + "Team tags": "Team Tags", "Temperature": "Temperature", - "Tool call": "Tool call", + "Tool call": "Tool Call", "ToolCall": { - "No plugin": "No available plugins", - "Parameter setting": "Input parameters", + "No plugin": "No Available Plugins", + "Parameter setting": "Input Parameters", "System": "System", "Team": "Team" }, - "Welcome Text": "Conversation opener", - "Whisper": "Voice input", - "Whisper config": "Voice input configuration", - "deterministic": "Rigorous", + "Welcome Text": "Conversation Opening", + "Whisper": "Voice Input", + "Whisper config": "Voice Input Configuration", + "deterministic": "Deterministic", "edit": { - "Prompt Editor": "Prompt editor", - "Query extension background prompt": "Conversation background description", - "Query extension background tip": "Describe the scope of the current conversation to help the AI complete and expand the current question. The content filled in is usually for the assistant" + "Prompt Editor": "Prompt Editor", + "Query extension background prompt": "Conversation Background Description", + "Query extension background tip": "Describe the scope of the current conversation to help the AI complete and extend the current question. The content you fill in is usually for this assistant." }, - "edit_content": "Application information editing", + "edit_content": "Edit App Information", "error": { - "App name can not be empty": "App name cannot be empty", - "Get app failed": "Failed to get app" + "App name can not be empty": "App Name Cannot Be Empty", + "Get app failed": "Failed to Retrieve App" }, "feedback": { - "Custom feedback": "Custom feedback", - "close custom feedback": "Close feedback" + "Custom feedback": "Custom Feedback", + "close custom feedback": "Close Feedback" }, "have_publish": "Published", - "have_saved": "have saved", - "loading": "loading", + "have_saved": "Saved", + "loading": "Loading", "logs": { "Source And Time": "Source & Time" }, - "more": "View more", + "more": "View More", "navbar": { - "External": "external use", - "Flow mode": "Advanced orchestration", - "Publish": "release", - "Publish app": "Publish application", - "Simple mode": "Easy configuration" + "External": "External Use", + "Flow mode": "Advanced Orchestration", + "Publish": "Publish", + "Publish app": "Publish App", + "Simple mode": "Simple Configuration" }, - "no_app": "There is no application yet, go and create one!", - "not_published": "Unpublished", - "not_saved": "not saved", + "no_app": "No Apps Yet, Create One Now!", + "not_published": "Not Published", + "not_saved": "Not Saved", "outLink": { - "Can Drag": "Icon draggable", - "Default open": "Open by default", - "Iframe block title": "Copy the Iframe below and add it to your website", - "Link block title": "Copy the link below and open it in a browser", - "Script Close Icon": "Close icon", - "Script Open Icon": "Open icon", + "Can Drag": "Icon Can Be Dragged", + "Default open": "Default Open", + "Iframe block title": "Copy the iframe below to add to your website", + "Link block title": "Copy the link below to open in the browser", + "Script Close Icon": "Close Icon", + "Script Open Icon": "Open Icon", "Script block title": "Add the code below to your website", - "Select Mode": "Start using", - "Select Using Way": "Select usage method", - "Show History": "Show chat history" + "Select Mode": "Start Using", + "Select Using Way": "Select Usage Method", + "Show History": "Show Chat History" }, "publish": { - "Fei Shu Bot Desc": "Access to Lark bot", - "Fei shu bot": "Lark", - "Fei shu bot publish": "Publish to Lark bot" + "Fei Shu Bot Desc": "Integrate into Feishu Bot", + "Fei shu bot": "Feishu", + "Fei shu bot publish": "Publish to Feishu Bot" }, "schedule": { - "Default prompt": "Default question", + "Default prompt": "Default Question", "Default prompt placeholder": "Default question when executing the app", "Every day": "Every day at {{hour}}:00", "Every month": "Every month on the {{day}} at {{hour}}:00", "Every week": "Every week on {{day}} at {{hour}}:00", "Interval": "Every {{interval}} hours", - "Open schedule": "Scheduled execution" + "Open schedule": "Scheduled Execution" }, - "setting": "App information settings", + "setting": "App Information Settings", "share": { - "Amount limit tip": "A maximum of 10 groups can be created", - "Create link": "Create new link", - "Create link tip": "Link created successfully. The share address has been copied, you can share it directly", - "Ip limit title": "IP rate limit (people/minute)", - "Is response quote": "Return quote", - "Not share link": "No share link created", - "Role check": "Identity verification" + "Amount limit tip": "Up to 10 groups", + "Create link": "Create New Link", + "Create link tip": "Creation successful. The share address has been copied and can be shared directly.", + "Ip limit title": "IP Rate Limit (people/minute)", + "Is response quote": "Return Quote", + "Not share link": "No Share Link Created", + "Role check": "Identity Verification" }, "tip": { - "Add a intro to app": "Come and give the app an introduction~", - "chatNodeSystemPromptTip": "The model has a fixed guide word. By adjusting this content, you can guide the model in the chat direction. \nThe content will be anchored at the beginning of the context. \nVariables can be selected via input/insert\n\nIf a knowledge base is associated, you can also use appropriate descriptions to guide the model when to call the knowledge base search. \nFor example:\n\nYou are an assistant in the movie \"Interstellar\". When users ask about content related to \"Interstellar\", please search the knowledge base and answer based on the search results.", - "variableTip": "You can ask the user to fill in some content as specific variables for this round of conversation before the conversation starts. This module is located after the opening guide.\nVariables can be injected into other module string type inputs through the form of {{variable key}}, such as: prompt words, limiting words, etc.", - "welcomeTextTip": "Send an initial content before each conversation starts. Supports standard Markdown syntax, additional tags available:\n[Shortcut key]: User can click to send the question directly" + "Add a intro to app": "Give the app an introduction", + "chatNodeSystemPromptTip": "Fixed guide words for the model. By adjusting this content, you can guide the model's chat direction. This content will be fixed at the beginning of the context. You can use / to insert variables.\nIf a Dataset is associated, you can also guide the model when to call the Dataset search by appropriate description. For example:\nYou are an assistant for the movie 'Interstellar'. When users ask about content related to 'Interstellar', please search the Dataset and answer based on the search results.", + "variableTip": "Before the conversation starts, you can ask the user to fill in some content as specific variables for this round of conversation. This module is located after the opening guide.\nVariables can be injected into other modules' string type inputs in the form of {{variable key}}, such as prompts, delimiters, etc.", + "welcomeTextTip": "Before each conversation starts, send an initial content. Supports standard Markdown syntax. Additional tags that can be used:\n[Quick Key]: Users can directly send the question by clicking" }, "tool_label": { - "doc": "Use documentation", - "github": "GitHub address", - "price": "Billing instructions", - "view_doc": "View documentation" + "doc": "Documentation", + "github": "GitHub Address", + "price": "Pricing", + "view_doc": "View Documentation" }, "tts": { - "Close": "Do not use", - "Speech model": "Voice model", - "Speech speed": "Speech speed", - "Test Listen": "Test listen", - "Test Listen Text": "Hello, this is a voice test, if you can hear this sentence, it means the voice playback function is normal", - "Web": "Browser built-in (free)" + "Close": "Do Not Use", + "Speech model": "Speech Model", + "Speech speed": "Speech Speed", + "Test Listen": "Test Listen", + "Test Listen Text": "Hello, this is a voice test. If you can hear this sentence, the voice playback function is normal.", + "Web": "Browser Built-in (Free)" }, "whisper": { - "Auto send": "Auto send", - "Auto send tip": "Automatically send after voice input is complete, no need to manually click the send button", - "Auto tts response": "Auto voice response", - "Auto tts response tip": "Questions sent via voice input will be responded to directly in voice form, please make sure the voice playback function is turned on.", + "Auto send": "Auto Send", + "Auto send tip": "Automatically send after voice input is completed, no need to click the send button manually", + "Auto tts response": "Auto Voice Response", + "Auto tts response tip": "The question sent by voice input will be directly responded to in voice form. Please ensure that the voice playback function is enabled.", "Close": "Close", - "Not tts tip": "You have not turned on voice playback, this function cannot be used", + "Not tts tip": "You have not enabled voice playback, this feature cannot be used", "Open": "Open", - "Switch": "Turn on voice input" + "Switch": "Enable Voice Input" } }, "chat": { "Admin Mark Content": "Corrected Reply", - "Audio Not Support": "Device does not support audio playback", - "Audio Speech Error": "Audio speech error", - "Cancel Speak": "Cancel voice input", - "Chat API is error or undefined": "Chat API error or undefined", - "Confirm to clear history": "Confirm to clear the online chat history of this app? Records of sharing and API calls will not be cleared.", - "Confirm to clear share chat history": "Confirm to delete all chat history?", - "Converting to text": "Converting to text...", + "Audio Not Support": "Device Does Not Support Voice Playback", + "Audio Speech Error": "Voice Playback Error", + "Cancel Speak": "Cancel Voice Input", + "Chat API is error or undefined": "Chat API Error or Undefined", + "Confirm to clear history": "Confirm to Clear Online Chat History for This App? Share and API Call Records Will Not Be Cleared.", + "Confirm to clear share chat history": "Confirm to Delete All Chat Records?", + "Converting to text": "Converting to Text...", "Custom History Title": "Custom History Title", - "Custom History Title Description": "If set to empty, it will automatically follow the chat history.", - "Debug test": "Debug preview", - "Exit Chat": "Exit chat", - "Failed to initialize chat": "Failed to initialize chat", - "Feedback Failed": "Feedback submission error", - "Feedback Modal": "Feedback Result", - "Feedback Modal Tip": "Enter what you find unsatisfactory about the answer", - "Feedback Submit": "Submit feedback", - "Feedback Success": "Feedback successful!", - "Finish Speak": "Voice input complete", + "Custom History Title Description": "If set to empty, it will automatically follow the chat record.", + "Debug test": "Debug Preview", + "Exit Chat": "Exit Chat", + "Failed to initialize chat": "Failed to Initialize Chat", + "Feedback Failed": "Feedback Submission Failed", + "Feedback Modal": "Result Feedback", + "Feedback Modal Tip": "Enter the part you are not satisfied with the answer", + "Feedback Submit": "Submit Feedback", + "Feedback Success": "Feedback Successful!", + "Finish Speak": "Voice Input Completed", "History": "History", - "History Amount": "{{amount}} records", - "Mark": "Mark expected answer", - "Mark Description": "The current marking function is in beta.\n\nAfter adding a mark, you need to select a dataset to store the marking data. You can quickly mark questions and expected answers through this function to guide the model's response next time.\n\nCurrently, like other data in the dataset, the marking function is influenced by the model and does not guarantee 100% compliance with expectations after marking.\n\nMarking data is only synchronized one-way with the dataset. If the dataset modifies the marking data, the log display of marking data cannot be synchronized", - "Mark Description Title": "Introduction to marking function", - "New Chat": "New conversation", + "History Amount": "{{amount}} Records", + "Mark": "Mark Expected Answer", + "Mark Description": "The current marking function is in beta.\n\nAfter clicking to add a mark, you need to select a Dataset to store the marked data. You can quickly mark questions and expected answers through this function to guide the model's next answer.\n\nCurrently, the marking function is the same as other data in the Dataset and is affected by the model, which does not mean that it will 100% meet expectations after marking.\n\nMarking data is only synchronized with the Dataset in one direction. If the Dataset modifies the marked data, the marked data displayed in the log cannot be synchronized.", + "Mark Description Title": "Marking Function Introduction", + "New Chat": "New Chat", "Pin": "Pin", - "Question Guide": "Guess what you want to ask", + "Question Guide": "Guess What You Want to Ask", "Quote": "Quote", - "Quote Amount": "Dataset quotes ({{amount}} items)", - "Read Mark Description": "View introduction to marking function", - "Recent use": "Recent use", - "Record": "Voice input", - "Restart": "Restart conversation", - "Run test": "Run test", - "Select Image": "Select image", - "Select dataset": "Select dataset", - "Select dataset Desc": "Select a dataset to store the expected answer", + "Quote Amount": "Dataset Quotes ({{amount}} Records)", + "Read Mark Description": "View Marking Function Introduction", + "Recent use": "Recently Used", + "Record": "Voice Input", + "Restart": "Restart Chat", + "Run test": "Run Preview", + "Select Image": "Select Image", + "Select dataset": "Select Dataset", + "Select dataset Desc": "Select a Dataset to store the expected answer", "Send Message": "Send", - "Speaking": "I'm listening, please speak...", - "Start Chat": "Start conversation", - "Type a message": "Type a question, send [Enter]/newline [Ctrl(Alt/Shift) + Enter]", + "Speaking": "I'm Listening, Please Speak...", + "Start Chat": "Start Chat", + "Type a message": "Enter a Question, Press [Enter] to Send / Press [Ctrl(Alt/Shift) + Enter] for New Line", "Unpin": "Unpin", - "You need to a chat app": "You do not have a usable app", + "You need to a chat app": "You Do Not Have an Available App", "error": { - "Chat error": "Chat error", - "Messages empty": "API content is empty, text may be too long~", - "Select dataset empty": "You did not select a dataset", - "User input empty": "User question input is empty", - "data_error": "Exception in getting data" + "Chat error": "Chat Error", + "Messages empty": "API Content is Empty, Possibly Due to Text Being Too Long", + "Select dataset empty": "You Have Not Selected a Dataset", + "User input empty": "User Question Input is Empty", + "data_error": "Data Retrieval Error" }, "feedback": { - "Close User Like": "User expressed approval\nClick to close this mark", - "Feedback Close": "Close feedback", - "No Content": "User did not provide specific feedback content", - "Read User dislike": "User expressed disapproval\nClick to view content" + "Close User Like": "User Agrees\nClick to Close This Mark", + "Feedback Close": "Close Feedback", + "No Content": "User Did Not Provide Specific Feedback Content", + "Read User dislike": "User Disagrees\nClick to View Content" }, "logs": { - "api": "API call", - "feishu": "Lark", - "official_account": "Official account", - "online": "Online use", - "share": "External link call", - "team": "Team chat", + "api": "API Call", + "feishu": "Feishu", + "free_login": "No login link", + "official_account": "Official Account", + "online": "Online Use", + "share": "External Link Call", + "team": "Team Space Chat", "test": "Test", - "wecom": "Enterprise WeChat" + "wecom": "WeChat Work" }, "markdown": { - "Edit Question": "Edit question", - "Quick Question": "Click to ask now", - "Send Question": "Send question" + "Edit Question": "Edit Question", + "Quick Question": "Click to Ask Immediately", + "Send Question": "Send Question" }, "quote": { - "Quote Tip": "Only the actual quote content is displayed here. If the data is updated, it will not be updated in real-time here", - "Read Quote": "View quote" + "Quote Tip": "Only the actual quoted content is displayed here. If the data is updated, it will not be updated in real-time here.", + "Read Quote": "View Quote" }, "response": { - "Complete Response": "Complete response", - "Extension model": "Question optimization model", - "Plugin response detail": "Plugin details", - "Read complete response": "View details", - "Read complete response tips": "Click to view detailed process", - "Tool call response detail": "Tool operation details", - "Tool call tokens": "Tool call Tokens consumption", - "context total length": "Total context length", - "module cq": "Question classification list", - "module cq result": "Classification result", - "module extract description": "Extract requirement description", - "module extract result": "Extraction result", - "module historyPreview": "Record preview (only part of the content is displayed)", - "module http result": "response body", - "module if else Result": "Determinator result", - "module limit": "Single search limit", - "module maxToken": "Maximum response tokens", + "Complete Response": "Complete Response", + "Extension model": "Question Optimization Model", + "Plugin response detail": "Plugin Details", + "Read complete response": "View Details", + "Read complete response tips": "Click to View Detailed Process", + "Tool call response detail": "Tool Run Details", + "Tool call tokens": "Tool Call Tokens Consumption", + "context total length": "Total Context Length", + "module cq": "Question Classification List", + "module cq result": "Classification Result", + "module extract description": "Extract Background Description", + "module extract result": "Extraction Result", + "module historyPreview": "History Preview (Only Partial Content Displayed)", + "module http result": "Response Body", + "module if else Result": "Condition Result", + "module limit": "Single Search Limit", + "module maxToken": "Max Response Tokens", "module model": "Model", - "module name": "Model name", - "module query": "question/search term", - "module quoteList": "Quote content", + "module name": "Model Name", + "module query": "Question/Search Term", + "module quoteList": "Quote Content", "module similarity": "Similarity", - "module temperature": "temperature", - "module time": "Running time", - "module tokens": "total tokens", - "plugin output": "Plugin output value", - "search using reRank": "Result rearrangement", - "text output": "text output", - "update_var_result": "Variable update results (display multiple variable update results in order)", - "user_select_result": "User select result" + "module temperature": "Temperature", + "module time": "Run Time", + "module tokens": "Total Tokens", + "plugin output": "Plugin Output Value", + "search using reRank": "Result Re-Rank", + "text output": "Text Output", + "update_var_result": "Variable Update Result (Displays Multiple Variable Update Results in Order)", + "user_select_result": "User Selection Result" }, "retry": "Regenerate", "tts": { @@ -588,501 +589,512 @@ } }, "dataset": { - "All Dataset": "All datasets", - "Avatar": "Dataset avatar", - "Choose Dataset": "Associate dataset", + "All Dataset": "All Datasets", + "Avatar": "Dataset Avatar", + "Choose Dataset": "Associate Dataset", "Collection": "Dataset", "Create dataset": "Create a {{name}}", "Dataset": "Dataset", "Dataset ID": "Dataset ID", - "Dataset Type": "Dataset type", - "Delete Confirm": "Confirm to delete this dataset? Data cannot be recovered after deletion, please confirm!", + "Dataset Type": "Dataset Type", + "Delete Confirm": "Confirm to Delete This Dataset? Data Cannot Be Recovered After Deletion, Please Confirm!", "Empty Dataset": "Empty Dataset", - "Empty Dataset Tips": "No datasets yet, go create one!", - "Folder placeholder": "This is a directory", - "Go Dataset": "Go to dataset", - "Intro Placeholder": "This dataset has no introduction~", - "Manual collection": "Manual dataset", - "My Dataset": "My dataset", - "Name": "Dataset name", - "Query extension intro": "Enabling the question optimization feature can improve the accuracy of dataset searches during continuous dialogue. After enabling this feature, AI will complete missing information based on conversation records when searching the dataset.", - "Quote Length": "Quote content length", - "Read Dataset": "View dataset details", - "Set Website Config": "Start configuring website information", - "Start export": "Export started", - "Table collection": "Table dataset", - "Text collection": "Text dataset", + "Empty Dataset Tips": "No Dataset Yet, Create One Now!", + "Folder placeholder": "This is a Directory", + "Go Dataset": "Go to Dataset", + "Intro Placeholder": "This Dataset Has No Introduction Yet", + "Manual collection": "Manual Dataset", + "My Dataset": "My Dataset", + "Name": "Dataset Name", + "Query extension intro": "Enabling the question optimization function can improve the accuracy of Dataset searches during continuous conversations. After enabling this function, when performing Dataset searches, the AI will complete the missing information of the question based on the conversation history.", + "Quote Length": "Quote Content Length", + "Read Dataset": "View Dataset Details", + "Set Website Config": "Start Configuring Website Information", + "Start export": "Export Started", + "Table collection": "Table Dataset", + "Text collection": "Text Dataset", "collection": { - "Click top config website": "Click to configure website", - "Collection name": "Dataset name", - "Collection raw text": "Dataset content", - "Empty Tip": "The dataset is empty", - "QA Prompt": "QA split guide words", - "Start Sync Tip": "Confirm to start syncing data? Old data will be deleted and re-acquired, please confirm!", - "Sync": "Sync data", - "Sync Collection": "Data synchronization", - "Website Empty Tip": "No associated websites yet", - "Website Link": "Web site address", + "Click top config website": "Click to Configure Website", + "Collection name": "Dataset Name", + "Collection raw text": "Dataset Content", + "Empty Tip": "The Dataset is Empty", + "QA Prompt": "QA Split Prompt", + "Start Sync Tip": "Confirm to Start Syncing Data? Old Data Will Be Deleted and Re-fetched, Please Confirm!", + "Sync": "Sync Data", + "Sync Collection": "Data Sync", + "Website Empty Tip": "No Website Associated Yet", + "Website Link": "Website Address", "id": "Collection ID", "metadata": { - "Chunk Size": "Segment size", - "Createtime": "Creation time", - "Raw text length": "Raw text length", - "Read Metadata": "View metadata", - "Training Type": "Training mode", - "Updatetime": "Update time", - "Web page selector": "Website selector", + "Chunk Size": "Chunk Size", + "Createtime": "Creation Time", + "Raw text length": "Raw Text Length", + "Read Metadata": "View Metadata", + "Training Type": "Training Mode", + "Updatetime": "Update Time", + "Web page selector": "Web Page Selector", "metadata": "Metadata", - "read source": "View original content", - "source": "Data source", - "source name": "Source name", - "source size": "Source size" + "read source": "View Original Content", + "source": "Data Source", + "source name": "Source Name", + "source size": "Source Size" }, "status": { "active": "Ready" }, "sync": { "result": { - "sameRaw": "Content unchanged, no update needed", - "success": "Start syncing" + "sameRaw": "Content Unchanged, No Update Needed", + "success": "Sync Started" } }, "training": { } }, "data": { - "Auxiliary Data": "Auxiliary data", - "Auxiliary Data Placeholder": "This part is optional, usually to complement the data content above to build structured prompt words for special scenarios, up to {{maxToken}} characters.", - "Auxiliary Data Tip": "This part is optional\nThis content is usually to complement the data content above to build structured prompt words for special scenarios", - "Data Content": "Related data content", - "Data Content Placeholder": "This input box is mandatory, the content is usually a description of the knowledge point or a user's question, up to {{maxToken}} characters.", - "Data Content Tip": "This input box is mandatory\nThe content is usually a description of the knowledge point or a user's question.", - "Default Index Tip": "Cannot be edited, the default index will use the text of the related data content and auxiliary data to generate the index directly.", - "Edit": "Edit data", - "Empty Tip": "This collection has no data yet~", - "Main Content": "Main content", - "Search data placeholder": "Search related data", - "Too Long": "Total length too long", - "Total Amount": "{{total}} sets", - "empty_index": "No custom index", + "Auxiliary Data": "Auxiliary Data", + "Auxiliary Data Placeholder": "This part is optional and is usually used to construct structured prompts in conjunction with the 'Data Content' above for special scenarios, up to {{maxToken}} characters.", + "Auxiliary Data Tip": "This part is optional\nThis content is usually used to construct structured prompts in conjunction with the data content above for special scenarios", + "Data Content": "Related Data Content", + "Data Content Placeholder": "This input box is required. This content is usually a description of the knowledge point or a user's question, up to {{maxToken}} characters.", + "Data Content Tip": "This input box is required\nThis content is usually a description of the knowledge point or a user's question.", + "Default Index Tip": "Cannot be edited. The default index will use the text of 'Related Data Content' and 'Auxiliary Data' to generate the index directly.", + "Edit": "Edit Data", + "Empty Tip": "This collection has no data yet", + "Main Content": "Main Content", + "Search data placeholder": "Search Related Data", + "Too Long": "Total Length Exceeded", + "Total Amount": "{{total}} Groups", + "empty_index": "No Custom Index", "group": "Group", - "unit": "items" + "unit": "Items" }, - "embedding model tip": "The index model can convert natural language into vectors for semantic retrieval.\nNote, different index models cannot be used together, once you select an index model, it cannot be changed.", + "embedding model tip": "The index model can convert natural language into vectors for semantic search.\nNote that different index models cannot be used together. Once an index model is selected, it cannot be changed.", "error": { - "Data not found": "Data does not exist or has been deleted", - "Start Sync Failed": "Failed to start syncing", - "Template does not exist": "Template does not exist", - "invalidVectorModelOrQAModel": "Invalid vector model or QA model", - "unAuthDataset": "Unauthorized to operate this dataset", - "unAuthDatasetCollection": "Unauthorized to operate this collection", - "unAuthDatasetData": "Unauthorized to operate this data", - "unAuthDatasetFile": "Unauthorized to operate this file", - "unCreateCollection": "Unauthorized to operate this data", - "unLinkCollection": "Not a network link collection" + "Data not found": "Data Not Found or Deleted", + "Start Sync Failed": "Failed to Start Sync", + "Template does not exist": "Template Does Not Exist", + "invalidVectorModelOrQAModel": "Invalid Vector Model or QA Model", + "unAuthDataset": "Unauthorized to Operate This Dataset", + "unAuthDatasetCollection": "Unauthorized to Operate This Dataset", + "unAuthDatasetData": "Unauthorized to Operate This Data", + "unAuthDatasetFile": "Unauthorized to Operate This File", + "unCreateCollection": "Unauthorized to Operate This Data", + "unLinkCollection": "Not a Web Link Collection" }, - "externalFile": "external file repository", + "externalFile": "External File Library", "file": "File", "folder": "Directory", "import": { - "Auto mode Estimated Price Tips": "Requires calling the file processing model, consuming more Tokens: {{price}} points/1k Tokens", + "Auto mode Estimated Price Tips": "Requires calling the file processing model, which consumes a lot of tokens: {{price}} points/1K tokens", "Auto process": "Automatic", "Auto process desc": "Automatically set segmentation and preprocessing rules", "Chunk Range": "Range: {{min}}~{{max}}", - "Chunk Split": "Direct segmentation", - "Chunk Split Tip": "Segment the text according to certain rules and convert it into a format that can be semantically searched, suitable for most scenarios. Does not require calling additional models for processing, low cost.", - "Custom process": "Custom rules", + "Chunk Split": "Direct Segmentation", + "Chunk Split Tip": "Segment the text according to certain rules and convert it into a format that can be semantically searched. Suitable for most scenarios. No additional model processing is required, and the cost is low.", + "Custom process": "Custom Rules", "Custom process desc": "Customize segmentation and preprocessing rules", - "Custom prompt": "Custom prompt words", - "Custom split char": "Custom delimiter", - "Custom split char Tips": "Allows you to segment based on a custom delimiter. Usually used for pre-processed data, using a specific delimiter for precise segmentation.", - "Custom text": "Custom text", - "Custom text desc": "Manually enter a text as a dataset", - "Data Preprocessing": "Data processing", - "Data process params": "Data processing parameters", - "Down load csv template": "Click to download CSV template", - "Embedding Estimated Price Tips": "Only using the index model, consumes a small amount of AI points: {{price}} points/1k Tokens", - "Ideal chunk length": "Ideal chunk length", - "Ideal chunk length Tips": "Segment according to the end symbol, and combine the segments into a block. This value determines the estimated size of the block.", - "Import success": "Import successful, please wait for training", - "Link name": "Network link", - "Link name placeholder": "Only supports static links, if the data is empty after upload, the link may not be readable\nOne per line, up to 10 links at a time", - "Local file": "Local file", - "Local file desc": "Upload PDF, TXT, DOCX, etc. files", - "Preview chunks": "Preview segments (up to 5)", - "Preview raw text": "Preview raw text (up to 3000 characters)", - "Process way": "Processing method", - "QA Estimated Price Tips": "Requires calling the file processing model, consuming more AI points: {{price}} points/1k Tokens", + "Custom prompt": "Custom Prompt", + "Custom split char": "Custom Separator", + "Custom split char Tips": "Allows you to segment based on custom separators. Usually used for pre-processed data, using specific separators for precise segmentation.", + "Custom text": "Custom Text", + "Custom text desc": "Manually enter a piece of text as a dataset", + "Data Preprocessing": "Data Processing", + "Data process params": "Data Processing Parameters", + "Down load csv template": "Click to Download CSV Template", + "Embedding Estimated Price Tips": "Only use the index model, consuming a small amount of AI points: {{price}} points/1K tokens", + "Ideal chunk length": "Ideal Chunk Length", + "Ideal chunk length Tips": "Segment according to ending symbols and combine multiple segments into one chunk. This value determines the estimated size of the chunk.", + "Import success": "Import Successful, Please Wait for Training", + "Link name": "Web Link", + "Link name placeholder": "Only supports static links. If the data is empty after uploading, the link may not be readable\nEach line one, up to 10 links at a time", + "Local file": "Local File", + "Local file desc": "Upload files in PDF, TXT, DOCX, etc. formats", + "Preview chunks": "Preview Segments (up to 5 segments)", + "Preview raw text": "Preview Raw Text (up to 3000 characters)", + "Process way": "Processing Method", + "QA Estimated Price Tips": "Requires calling the file processing model, which consumes a lot of AI points: {{price}} points/1K tokens", "QA Import": "QA Split", - "QA Import Tip": "According to certain rules, split the text into a larger paragraph, call AI to generate Q&A pairs for that paragraph. Has very high search accuracy, but loses a lot of content details.", - "Select file": "Select file", - "Select source": "Select source", - "Source name": "Source name", - "Sources list": "Source list", - "Start upload": "Start upload", - "Total files": "A total of {{total}} files", - "Training mode": "Training mode", - "Upload data": "Upload data", - "Upload file progress": "file_upload progress", + "QA Import Tip": "According to certain rules, split the text into larger paragraphs and call AI to generate Q&A pairs for the paragraph. It has very high retrieval accuracy but may lose a lot of content details.", + "Select file": "Select File", + "Select source": "Select Source", + "Source name": "Source Name", + "Sources list": "Source List", + "Start upload": "Start Upload", + "Total files": "Total {{total}} Files", + "Training mode": "Training Mode", + "Upload data": "Upload Data", + "Upload file progress": "File Upload Progress", "Upload status": "Status", - "Web link": "Web link", + "Web link": "Web Link", "Web link desc": "Read static web page content as a dataset" }, "link": "Link", "search": { - "Dataset Search Params": "Knowledge base search configuration", - "Empty result response": "Empty search reply", - "Filter": "Search filter", - "Max Tokens": "Maximum tokens", - "Max Tokens Tips": "Maximum number of Tokens per search, approximately 1 Chinese character = 1.7 Tokens, 1 English character = 1 Token", - "Min Similarity": "Minimum similarity", - "Min Similarity Tips": "Different index models have different similarities, please choose the appropriate value through search testing. When using ReRank, the similarity may be very low.", - "No support similarity": "Supports similarity filtering only when using result reranking or semantic retrieval", - "Nonsupport": "Not supported", - "Params Setting": "Search parameter settings", - "Quote index": "Which quote", - "ReRank": "Result reranking", - "ReRank desc": "Use the reranking model for secondary sorting to enhance the overall ranking.", + "Dataset Search Params": "Dataset Search Configuration", + "Empty result response": "Empty Search Response", + "Filter": "Search Filter", + "Max Tokens": "Quote Limit", + "Max Tokens Tips": "The maximum number of tokens for a single search. About 1 Chinese character = 1.7 tokens, 1 English word = 1 token", + "Min Similarity": "Minimum Similarity", + "Min Similarity Tips": "The similarity of different index models varies. Please choose an appropriate value through search testing. When using Re-rank, the similarity may be very low.", + "No support similarity": "Only supported when using result re-rank or semantic search", + "Nonsupport": "Not Supported", + "Params Setting": "Search Parameter Settings", + "Quote index": "Quote Index", + "ReRank": "Result Re-rank", + "ReRank desc": "Use the re-rank model for secondary sorting to enhance the comprehensive ranking.", "Source id": "Source ID", - "Source name": "Source name", - "Using query extension": "Use question optimization", + "Source name": "Quote Source Name", + "Using query extension": "Use Question Optimization", "mode": { - "embedding": "Semantic retrieval", + "embedding": "Semantic Search", "embedding desc": "Use vectors for text relevance queries", - "fullTextRecall": "Full-text retrieval", - "fullTextRecall desc": "Use traditional full-text retrieval, suitable for finding some keywords and special subject-predicate data", - "mixedRecall": "Mixed retrieval", - "mixedRecall desc": "Return the combined results of vector retrieval and full-text retrieval, sorted using the RRF algorithm." + "fullTextRecall": "Full Text Search", + "fullTextRecall desc": "Use traditional full-text search, suitable for finding some keywords and subject-predicate special data", + "mixedRecall": "Mixed Search", + "mixedRecall desc": "Use a combination of vector search and full-text search results, sorted using the RRF algorithm." }, "score": { - "embedding": "Semantic retrieval", - "embedding desc": "Obtain scores by calculating the distance between vectors, ranging from 0 to 1.", - "fullText": "Full-text retrieval", + "embedding": "Semantic Search", + "embedding desc": "Get scores by calculating the distance between vectors, ranging from 0 to 1.", + "fullText": "Full Text Search", "fullText desc": "Calculate the score of the same keywords, ranging from 0 to infinity.", - "reRank": "Result reranking", - "reRank desc": "Calculate the relevance between sentences using the ReRank model, ranging from 0 to 1.", - "rrf": "Comprehensive ranking", - "rrf desc": "Merge multiple search results by inverted calculation." + "reRank": "Result Re-rank", + "reRank desc": "Calculate the relevance between sentences using the re-rank model, ranging from 0 to 1.", + "rrf": "Comprehensive Ranking", + "rrf desc": "Merge multiple search results using the reciprocal rank fusion method." }, - "search mode": "Search mode" + "search mode": "Search Mode" }, "status": { "active": "Ready", "syncing": "Syncing" }, "test": { - "Batch test": "Batch test", - "Batch test Placeholder": "Select a Csv file", - "Search Test": "Search test", + "Batch test": "Batch Test", + "Batch test Placeholder": "Select a CSV File", + "Search Test": "Search Test", "Test": "Test", - "Test Result": "Test result", - "Test Text": "Single text test", + "Test Result": "Test Result", + "Test Text": "Single Text Test", "Test Text Placeholder": "Enter the text to be tested", - "Test params": "Test parameters", - "delete test history": "Delete this test result", - "test history": "Test history", + "Test params": "Test Parameters", + "delete test history": "Delete This Test Result", + "test history": "Test History", "test result placeholder": "Test results will be displayed here", - "test result tip": "Sort based on the similarity between the knowledge base content and the test text. You can adjust the corresponding text according to the test results.\nNote: The data in the test record may have been modified, clicking on a test data will display the latest data." + "test result tip": "Sort based on the similarity between the Dataset content and the test text. You can adjust the corresponding text based on the test results.\nNote: The data in the test records may have been modified. Clicking on a test data will display the latest data." }, "training": { - "Agent queue": "QA training queue", - "Auto mode": "Enhanced processing (experimental)", - "Auto mode Tip": "Increase the semantic richness of data blocks by generating related questions and summaries through sub-indexes and model calls, which is more conducive to retrieval. Requires more storage space and increases AI call frequency.", - "Chunk mode": "Direct segmentation", - "Full": "Estimated more than 5 minutes", + "Agent queue": "QA Training Queue", + "Auto mode": "Enhanced Processing (Experimental)", + "Auto mode Tip": "Increase the semantic richness of data blocks by generating related questions and summaries through sub-indexes and calling models, making it more conducive to retrieval. Requires more storage space and increases AI call times.", + "Chunk mode": "Direct Segmentation", + "Full": "Estimated Over 5 Minutes", "Leisure": "Idle", - "QA mode": "Question and answer split", - "Vector queue": "Index queue", - "Waiting": "Estimated 5 minutes", - "Website Sync": "Web site sync", - "tag": "queue situation" + "QA mode": "QA Split", + "Vector queue": "Index Queue", + "Waiting": "Estimated 5 Minutes", + "Website Sync": "Website Sync", + "tag": "Queue Status" }, "website": { "Base Url": "Base URL", - "Config": "Web site configuration", - "Config Description": "The Web site sync feature allows you to fill in a website's base URL, and the system will automatically crawl related web pages for knowledge base training. Only static sites will be crawled, mainly project documentation and blogs.", - "Confirm Create Tips": "Confirm to sync this site, the sync task will start subsequently, please confirm!", - "Confirm Update Tips": "Confirm to update the site configuration? It will start syncing immediately according to the new configuration, please confirm!", + "Config": "Website Configuration", + "Config Description": "The website sync function allows you to fill in the root address of a website. The system will automatically crawl related web pages for Dataset training. Only static websites will be crawled, mainly project documentation and blogs.", + "Confirm Create Tips": "Confirm to sync this site. The sync task will start shortly. Please confirm!", + "Confirm Update Tips": "Confirm to update the site configuration? The sync will start immediately according to the new configuration. Please confirm!", "Selector": "Selector", - "Selector Course": "Selector tutorial", - "Start Sync": "Start sync", - "UnValid Website Tip": "Your site may be a non-static site and cannot be synced" + "Selector Course": "Usage Tutorial", + "Start Sync": "Start Sync", + "UnValid Website Tip": "Your site may not be a static site and cannot be synced" } }, "module": { - "Add question type": "Add question type", - "Add_option": "Add option", - "Can not connect self": "Cannot connect to self", - "Confirm Delete Node": "Confirm delete node?", - "Data Type": "Data type", + "Add question type": "Add Question Type", + "Add_option": "Add Option", + "Can not connect self": "Cannot Connect to Itself", + "Confirm Delete Node": "Confirm to Delete This Node?", + "Data Type": "Data Type", "Dataset quote": { - "label": "Knowledge base quote", - "select": "Select knowledge base reference" + "label": "Dataset Quote", + "select": "Select Dataset Quote" }, - "Default Value": "Default value", - "Default value": "Default value", - "Default value placeholder": "If not filled, the default return is an empty string", + "Default Value": "Default Value", + "Default value": "Default Value", + "Default value placeholder": "Leave blank to return an empty string by default", "Diagram": "Diagram", - "Edit intro": "Edit description", - "Field Description": "Field description", - "Field Name": "Field name", - "Http request props": "Request parameters", - "Http request settings": "Request settings", - "Http timeout": "Timeout", - "Input Type": "Input type", - "Laf sync params": "Synchronize parameters", - "Max Length": "Maximum length", + "Edit intro": "Edit Description", + "Field Description": "Field Description", + "Field Name": "Field Name", + "Http request props": "Request Parameters", + "Http request settings": "Request Configuration", + "Http timeout": "Timeout Duration", + "Input Type": "Input Type", + "Laf sync params": "Sync Parameters", + "Max Length": "Max Length", "Max Length placeholder": "Maximum length of input text", - "Max Value": "Maximum value", - "Min Value": "Minimum value", + "Max Value": "Max Value", + "Min Value": "Min Value", "QueryExtension": { - "placeholder": "For example:\nIntroduction and usage of python.\nThe current conversation is related to the game 'GTA5'." + "placeholder": "For example:\nQuestions about the introduction and use of Python.\nThe current conversation is related to the game 'GTA5'." }, - "Quote prompt setting": "Quote prompt setting", - "Select app": "Select app", - "Setting quote prompt": "Configure quote prompt", - "Variable": "Global variable", - "Variable Setting": "Variable setting", + "Quote prompt setting": "Quote Prompt Configuration", + "Select app": "Select App", + "Setting quote prompt": "Configure Quote Prompt", + "Variable": "Global Variable", + "Variable Setting": "Variable Setting", "edit": { - "Field Name Cannot Be Empty": "Field name cannot be empty" + "Field Name Cannot Be Empty": "Field Name Cannot Be Empty" }, "extract": { - "Add field": "Add field", - "Enum Description": "List possible values for the field, one per line", - "Enum Value": "Enumeration value", - "Field Description Placeholder": "Name/age/SQL statement...", - "Field Setting Title": "Extract field configuration", - "Required": "Must return", - "Required Description": "Even if the field cannot be extracted, the default value will be returned", - "Target field": "Target field" + "Add field": "Add Field", + "Enum Description": "List the possible values of this field, one per line", + "Enum Value": "Enum Value", + "Field Description Placeholder": "Name/Age/SQL Statement...", + "Field Setting Title": "Extract Field Configuration", + "Required": "Must Return", + "Required Description": "Even if the field cannot be extracted, it will be returned using the default value", + "Target field": "Target Field" }, "http": { - "Add props": "Add parameters", - "Add props_and_tips": "Add parameter, enter \"/\" to call variable list", - "AppId": "Application ID", + "Add props": "Add Parameter", + "Add props_and_tips": "To add parameters, enter \"/\" to invoke the variable list", + "AppId": "App ID", "AppSecret": "AppSecret", - "ChatId": "Current chat ID", - "Current time": "Current time", - "Histories": "Last 10 chat records", - "Key already exists": "Key already exists", - "Key cannot be empty": "Parameter name cannot be empty", - "Props name": "Parameter name", - "Props name_and_tips": "Parameter name, enter \"/\" to call variables list", - "Props tip": "Can set HTTP request related parameters\nCan use / to call variables, currently available variables:\n{{variable}}", - "Props value": "Parameter value", - "Props value_and_tips": "Parameter value, enter \"/\" to call variables list", - "ResponseChatItemId": "AI response ID", + "ChatId": "Current Chat ID", + "Current time": "Current Time", + "Histories": "History Records", + "Key already exists": "Key Already Exists", + "Key cannot be empty": "Parameter Name Cannot Be Empty", + "Props name": "Parameter Name", + "Props name_and_tips": "Parameter name, enter \"/\" to call up the variable list", + "Props tip": "You can set related parameters for the HTTP request\nYou can call global variables or external parameter inputs through {{key}}, currently available variables:\n{{variable}}", + "Props value": "Parameter Value", + "Props value_and_tips": "Parameter value, enter \"/\" to invoke the variable list", + "ResponseChatItemId": "AI Response ID", "Url and params have been split": "Path parameters have been automatically added to Params", - "curl import": "curl import", - "curl import placeholder": "Please enter curl format content, the request information of the first interface will be extracted." + "curl import": "cURL Import", + "curl import placeholder": "Please enter the cURL format content, the request information of the first interface will be extracted." }, "input": { - "Add Branch": "Add branch", - "add": "Add condition", + "Add Branch": "Add Branch", + "add": "Add Condition", "description": { - "Background": "You can add some specific content introductions to better identify the user's question type. This content is usually to introduce something unknown to the model.", - "HTTP Dynamic Input": "Receives the output value of the previous node as a variable, which can be used by HTTP request parameters.", - "Http Request Header": "Custom request headers, please strictly fill in JSON strings.\n1. Ensure there is no comma after the last property\n2. Ensure key includes double quotes\nFor example: {\"Authorization\":\"Bearer xxx\"}", - "Http Request Url": "New HTTP request URL. If there are two 'request URLs', you can delete this module and re-add it to pull the latest module configuration.", - "Response content": "Can use \\n to achieve continuous line breaks.\nCan be overridden by external module input. If non-string type data is passed in, it will be automatically converted to string" + "Background": "You can add some specific content introductions to better identify the type of user questions. This content is usually to introduce something the model does not know.", + "HTTP Dynamic Input": "Receive the output value of the previous node as a variable, which can be used by the HTTP request parameters.", + "Http Request Header": "Custom request headers, please strictly fill in the JSON string.\n1. Ensure that the last attribute has no comma\n2. Ensure that the key contains double quotes\nFor example: {\"Authorization\":\"Bearer xxx\"}", + "Http Request Url": "New HTTP request address. If there are two 'request addresses', you can delete this module and re-add it to pull the latest module configuration.", + "Response content": "You can use \\n to achieve continuous line breaks.\nYou can achieve replies through external module input, and the content filled in here will be overwritten by external module input.\nIf non-string type data is passed in, it will be automatically converted to a string" }, "label": { - "Background": "Background knowledge", - "Http Request Url": "Request URL", - "Response content": "Response content", - "Select dataset": "Select knowledge base", - "aiModel": "AI model", - "chat history": "Chat history", - "user question": "User question" + "Background": "Background Knowledge", + "Http Request Url": "Request Address", + "Response content": "Response Content", + "Select dataset": "Select Dataset", + "aiModel": "AI Model", + "chat history": "Chat History", + "user question": "User Question" }, "placeholder": { - "Classify background": "For example: \n1. AIGC (Artificial Intelligence Generated Content) refers to the use of artificial intelligence technology to automatically or semi-automatically generate digital content, such as text, images, music, videos, etc.\n2. AIGC technology includes but is not limited to natural language processing, computer vision, machine learning, and deep learning. These technologies can create new content or modify existing content to meet specific creative, educational, entertainment, or informational needs." + "Classify background": "For example:\n1. AIGC (Artificial Intelligence Generated Content) refers to the use of artificial intelligence technology to automatically or semi-automatically generate digital content, such as text, images, music, videos, etc.\n2. AIGC technology includes but is not limited to natural language processing, computer vision, machine learning, and deep learning. These technologies can create new content or modify existing content to meet specific creative, educational, entertainment, or informational needs." } }, "laf": { - "Select laf function": "Select laf function" + "Select laf function": "Select LAF Function" }, "output": { "description": { - "Ai response content": "Triggered after the stream response is complete", - "New context": "Concatenate this response content with historical records to return as a new context", - "query extension result": "Outputs as an array of strings, can directly connect this result to 'Knowledge base search' 'User question', it is recommended not to connect to 'AI dialogue' 'User question'" + "Ai response content": "Will be triggered after the stream reply is completed", + "New context": "Splice the current reply content with the history records and return it as the new context", + "query extension result": "Output as a string array, which can be directly connected to the 'User Question' of 'Dataset Search'. It is recommended not to connect to the 'User Question' of 'AI Chat'" }, "label": { - "Ai response content": "AI response content", - "New context": "New context", - "query extension result": "Optimized result" + "Ai response content": "AI Response Content", + "New context": "New Context", + "query extension result": "Optimization Result" } }, "template": { - "AI function": "AI function", - "AI response switch tip": "If you wish the current node not to output content, you can turn off this switch. AI output content will not be displayed to the user, you can manually use 'AI response content' for special processing.", - "AI support tool tip": "Supports function calls model, can better use tool invocation.", - "Basic Node": "Basic", - "Query extension": "Question optimization", - "System Plugin": "System", - "System input module": "System input", - "Team Plugin": "Team", - "Team app": "Team", + "AI function": "AI Capability", + "AI response switch tip": "If you want the current node not to output content, you can turn off this switch. The content output by AI will not be displayed to the user, and you can manually use 'AI Response Content' for special processing.", + "AI support tool tip": "Models that support function calls can better use tool calls.", + "Basic Node": "Basic Function", + "Query extension": "Question Optimization", + "System Plugin": "System Plugin", + "System input module": "System Input", + "Team Plugin": "Team Plugin", + "Team app": "Team App", "Tool module": "Tool", - "UnKnow Module": "Unknown module", - "http body placeholder": "Same syntax as APIFox" + "UnKnow Module": "Unknown Module", + "ai_chat": "AI conversation", + "ai_chat_intro": "AI large model dialogue", + "config_params": "Can configure application system parameters", + "empty_app": "Blank application", + "empty_plugin": "Blank plugin", + "empty_workflow": "Blank workflow", + "http body placeholder": "Same syntax as Apifox", + "self_input": "Custom plug-in input", + "self_output": "Custom plug-in output", + "system_config": "System configuration", + "system_config_info": "Can configure application system parameters", + "work_start": "Process starts" }, "templates": { - "Load plugin error": "Load plugin error" + "Load plugin error": "Failed to Load Plugin" }, "variable": { - "Custom type": "Custom variable", - "add option": "Add option", + "Custom type": "Custom Variable", + "add option": "Add Option", "input type": "Text", - "key": "Variable key", - "key already exists": "Key already exist", - "key is required": "Variable key is required", - "select type": "Dropdown single select", - "text max length": "Maximum length", + "key": "Variable Key", + "key already exists": "Key Already Exists", + "key is required": "Variable Key is Required", + "select type": "Dropdown Single Select", + "text max length": "Max Length", "textarea type": "Paragraph", - "variable name": "Variable name", - "variable name is required": "Variable name cannot be empty", - "variable option is required": "Options cannot be all empty", - "variable option is value is required": "Option content cannot be empty", + "variable name": "Variable Name", + "variable name is required": "Variable Name Cannot Be Empty", + "variable option is required": "Options Cannot Be All Empty", + "variable option is value is required": "Option Content Cannot Be Empty", "variable options": "Options" }, - "variable add option": "Add option", - "variable_update": "variable update", - "variable_update_info": "You can update the output value of the specified node or update global variables" + "variable add option": "Add Option", + "variable_update": "Variable Update", + "variable_update_info": "Can update the output value of the specified node or update global variables" }, "plugin": { - "Custom headers": "Custom headers", - "Free": "The plugin requires no points~", - "Get Plugin Module Detail Failed": "Plugin loading failed", + "Custom headers": "Custom Request Headers", + "Free": "This plugin does not consume points", + "Get Plugin Module Detail Failed": "Failed to Retrieve Plugin Information", "Http plugin intro placeholder": "For display only, no actual effect", - "cost": "Plugin cost: " + "cost": "Points Consumption:" }, - "view_chat_detail": "View conversation details", + "view_chat_detail": "View Chat Details", "workflow": { - "Can not delete node": "This node cannot be deleted", + "Can not delete node": "This Node Cannot Be Deleted", "Change input type tip": "Changing the input type will clear the filled values, please confirm!", - "Check Failed": "Workflow validation failed, please check if the nodes are correctly filled and the connections are normal", - "Confirm stop debug": "Confirm to stop debugging? Debugging information will not be preserved.", - "Copy node": "Node copied", - "Custom inputs": "Custom inputs", - "Custom outputs": "Custom outputs", - "Dataset quote": "Knowledge base quote", + "Check Failed": "Workflow Validation Failed, Please Check If the Nodes Are Correctly Filled and the Connections Are Normal", + "Confirm stop debug": "Confirm to Stop Debugging? Debug Information Will Not Be Retained.", + "Copy node": "Node Copied", + "Custom inputs": "Custom Inputs", + "Custom outputs": "Custom Outputs", + "Dataset quote": "Dataset Quote", "Debug": "Debug", - "Debug Node": "Debug mode", - "Failed": "Execution failed", - "Not intro": "This node has no introduction~", + "Debug Node": "Debug Mode", + "Failed": "Run Failed", + "Not intro": "This Node Has No Introduction", "Run": "Run", "Running": "Running", - "Save and publish": "Save and publish", - "Save to cloud": "Save", - "Skipped": "Skipped execution", - "Stop debug": "Stop debugging", - "Success": "Execution successful", - "Value type": "Data type", + "Save and publish": "Save and Publish", + "Save to cloud": "Save Only", + "Skipped": "Skipped", + "Stop debug": "Stop Debugging", + "Success": "Run Successful", + "Value type": "Data Type", "Variable": { - "Variable type": "Variable type" + "Variable type": "Variable Type" }, "debug": { - "Done": "Debugging completed", - "Hide result": "Hide result", - "Not result": "No run result", - "Run result": "Run result", - "Show result": "Show result" + "Done": "Debugging Completed", + "Hide result": "Hide Result", + "Not result": "No Run Result", + "Run result": "Run Result", + "Show result": "Show Result" }, "inputType": { - "JSON Editor": "JSON Editor", - "Manual input": "Manual input", - "Manual select": "Manual select", - "Reference": "Variable reference", - "custom": "Custom", - "dynamicTargetInput": "Dynamic external data", - "file_link": "File link", - "input": "Single line input box", - "number input": "Number input box", - "select": "Select", - "selectApp": "App selection", - "selectDataset": "Knowledge base selection", - "selectLLMModel": "Dialogue model selection", + "JSON Editor": "JSON Input Box", + "Manual input": "Manual Input", + "Manual select": "Manual Select", + "Reference": "Variable Reference", + "custom": "Custom Variable", + "dynamicTargetInput": "Dynamic External Data", + "file_link": "File Upload", + "input": "Single Line Input Box", + "number input": "Number Input Box", + "select": "Single Select Box", + "selectApp": "App Select", + "selectDataset": "Dataset Select", + "selectLLMModel": "Chat Model Select", "switch": "Switch", - "textarea": "Multi-line input box" + "textarea": "Multi-line Input Box" }, "publish": { - "OnRevert version": "Click to revert to this version", - "OnRevert version confirm": "Confirm to revert to this version? It will save the configuration of the version being edited and create a new published version for the reverted version.", - "histories": "Publishing records" + "OnRevert version": "Click to Revert to This Version", + "OnRevert version confirm": "Confirm to Revert to This Version? The configuration of the editing version will be saved, and a new release version will be created for the reverted version.", + "histories": "Release Records" }, - "run_test": "Test", + "run_test": "Run", "template": { "Interactive": "Interactive", "Multimodal": "Multimodal", "Search": "Search" }, "tool": { - "Handle": "Tool connector", - "Select Tool": "Select tool" + "Handle": "Tool Connector", + "Select Tool": "Select Tool" }, "value": "Value", "variable": "Variable" } }, - "create": "to create", - "cron_job_run_app": "Cron job", + "create": "Create", + "cron_job_run_app": "Scheduled Task", "dataset": { - "Confirm move the folder": "Confirm moving to the folder", - "Confirm to delete the data": "Confirm to delete the data?", - "Confirm to delete the file": "Confirm to delete the file and all its data?", + "Confirm move the folder": "Confirm to Move to This Directory", + "Confirm to delete the data": "Confirm to Delete This Data?", + "Confirm to delete the file": "Confirm to Delete This File and All Its Data?", "Create Folder": "Create Folder", - "Create manual collection": "Create manual collection", + "Create manual collection": "Create Manual Dataset", "Delete Dataset Error": "Delete Dataset Error", "Edit Folder": "Edit Folder", "Edit Info": "Edit Information", "Export": "Export", - "Export Dataset Limit Error": "Export Dataset Error", - "Folder Name": "Enter folder name", - "Insert Data": "Insert Data", - "Manual collection Tip": "Manual collections allow you to create an empty container to store data", - "Move Failed": "Move Failed~", - "Select Dataset": "Select this dataset", - "Select Dataset Tips": "Only datasets from the same index model can be selected", - "Select Folder": "Enter folder", + "Export Dataset Limit Error": "Export Data Failed", + "Folder Name": "Enter Folder Name", + "Insert Data": "Insert", + "Manual collection Tip": "Manual datasets allow you to create an empty container to hold data", + "Move Failed": "Move Error", + "Select Dataset": "Select This Dataset", + "Select Dataset Tips": "Only Datasets with the same index model can be selected", + "Select Folder": "Enter Folder", "Training Name": "Data Training", "collections": { - "Collection Embedding": "{{total}} groups indexing", - "Confirm to delete the folder": "Confirm to delete the folder and all its contents?", + "Collection Embedding": "{{total}} Indexes", + "Confirm to delete the folder": "Confirm to Delete This Folder and All Its Contents?", "Create And Import": "Create/Import", - "Data Amount": "Total data", - "Select Collection": "Select file", - "Select One Collection To Store": "Select a file to store" + "Data Amount": "Total Data", + "Select Collection": "Select File", + "Select One Collection To Store": "Select a File to Store" }, "data": { - "Add Index": "Add custom index", - "Can not edit": "No editing permission", + "Add Index": "Add Custom Index", + "Can not edit": "No Edit Permission", "Custom Index Number": "Custom Index {{number}}", "Default Index": "Default Index", - "Delete Tip": "Confirm to delete this data?", + "Delete Tip": "Confirm to Delete This Data?", "Index Edit": "Data Index", - "Index Placeholder": "Enter index text content", - "Input Data": "Import new data", - "Input Success Tip": "Data imported successfully", + "Index Placeholder": "Enter Index Text Content", + "Input Data": "Import New Data", + "Input Success Tip": "Data Imported Successfully", "Update Data": "Update Data", - "Update Success Tip": "Data updated successfully", + "Update Success Tip": "Data Updated Successfully", "edit": { - "Content": "Data content", + "Content": "Data Content", "Course": "Documentation", - "Delete": "Delete data", + "Delete": "Delete Data", "Index": "Data Index ({{amount}})", - "divide_content": "Chunked content" + "divide_content": "Segment Content" }, - "input is empty": "Data content cannot be empty" + "input is empty": "Data Content Cannot Be Empty" }, - "dataset_name": "Knowledge base name", - "deleteFolderTips": "Confirm to delete this folder and all the datasets it contains? Once deleted, data cannot be recovered. Please confirm!", + "dataset_name": "Dataset Name", + "deleteFolderTips": "Confirm to Delete This Folder and All Its Contained Datasets? Data Cannot Be Recovered After Deletion, Please Confirm!", "test": { - "noResult": "No results found" + "noResult": "No Search Results" } }, - "default_reply": "Default reply", + "default_reply": "Default Reply", "error": { "Create failed": "Create failed", "code_error": "Code error", @@ -1090,122 +1102,125 @@ "inheritPermissionError": "Inherit permission Error", "missingParams": "Insufficient parameters", "team": { - "overSize": "Team members exceed the limit" + "overSize": "Team Member Limit Exceeded" }, - "upload_file_error_filename": "{{name}} upload failed", + "upload_file_error_filename": "{{name}} Upload Failed", "username_empty": "Account cannot be empty" }, - "extraction_results": "Extract results", - "field_name": "Name", - "free": "free", - "get_QR_failed": "Failed to obtain QR code", - "get_app_failed": "Failed to get app", - "get_laf_failed": "Failed to get Laf function list", - "has_verification": "Verified, click to cancel binding", + "extraction_results": "Extraction Results", + "field_name": "Field Name", + "free": "Free", + "get_QR_failed": "Failed to Get QR Code", + "get_app_failed": "Failed to Retrieve App", + "get_laf_failed": "Failed to Retrieve Laf Function List", + "has_verification": "Verified, Click to Unbind", "info": { - "buy_extra": "Purchase additional packages", - "csv_download": "Click to download batch test template", - "csv_message": "Read the first column of the CSV file for batch testing, supporting up to 100 sets of data at a time.", - "felid_message": "The field key must be pure English letters or numbers, and cannot start with a number.", - "free_plan": "When a free version user does not log in to the system for 30 consecutive days, the system will automatically clean up the account knowledge base.", - "include": "Includes standard package and additional resource package", - "node_info": "Adjusting this module will have an impact on the timing of tool calls.\n\nYou can guide the model to make tool calls by accurately describing the function of the module.", - "old_version_attention": "If it is detected that your advanced arrangement is an old version, the system will automatically format it into a new version of the workflow for you.\n\n\nDue to large version differences, some workflows may not be arranged normally. Please reconnect the workflows manually. \nIf the error persists, try deleting the corresponding node and adding it again.\n\n\nYou can directly click Debug to perform workflow testing, and click Publish after debugging is completed. \nThe new workflow will not actually save and take effect until you click Publish.\n\n\nAutosave will not take effect until you publish the new workflow.", - "open_api_notice": "You can fill in the relevant secret key of OpenAI/OneAPI. \nIf you fill in this content, the online platform will use [AI Dialogue], [Problem Classification] and [Content Extraction] to retrieve the Key you filled in, and no charges will be made. \nPlease pay attention to whether your Key has permission to access the corresponding model. \nThe GPT model can choose FastAI.", - "open_api_placeholder": "Request address, default is openai official. \nThe forwarding address can be filled in, but \"v1\" is not automatically completed.", - "resource": "Resource usage" + "buy_extra": "Buy Extra Package", + "csv_download": "Click to Download Batch Test Template", + "csv_message": "Read the first column of the CSV file for batch testing, supporting up to 100 groups of data at a time.", + "felid_message": "Field key must be pure English letters or numbers and cannot start with a number.", + "free_plan": "If a free team does not log in to the system for 30 consecutive days, the system will automatically clear the account's Dataset.", + "include": "Includes Standard Package and Extra Resource Pack", + "node_info": "Adjusting this module will affect the timing of tool calls.\nYou can guide the model to call tools by accurately describing the function of this module.", + "old_version_attention": "Detected that your advanced orchestration is an old version. The system will automatically format it into the new workflow version.\n\nDue to significant version differences, some workflows may not be arranged correctly. Please manually reconnect the workflow. If it is still abnormal, try deleting the corresponding node and re-adding it.\n\nYou can directly click debug to test the workflow. After debugging, click publish. The new workflow will only be saved and take effect after you click publish.\n\nBefore you publish the new workflow, auto-save will not take effect.", + "open_api_notice": "You can fill in the relevant keys of OpenAI/OneAPI. If you fill in this content, the 'AI Chat', 'Question Classification', and 'Content Extraction' on the online platform will use the key you filled in and will not be charged. Please check if your key has access to the corresponding model. GPT models can choose FastAI.", + "open_api_placeholder": "Request address, default is the official OpenAI. You can fill in the transit address, 'v1' will not be automatically completed", + "resource": "Resource Usage" }, - "invalid_variable": "Invalid variable", - "is_open": "Opened", - "is_using": "in use", - "item_description": "Field description", - "item_name": "Field name", - "key_repetition": "key duplicate", + "invalid_variable": "Invalid Variable", + "is_open": "Is Open", + "is_using": "In Use", + "item_description": "Field Description", + "item_name": "Field Name", + "key_repetition": "Key Repetition", "navbar": { "Account": "Account", "Chat": "Chat", - "Datasets": "Knowledge", + "Datasets": "Datasets", "Studio": "Studio", "Tools": "Tools" }, "new_create": "Create New", - "no": "no", - "no_data": "No data", - "no_laf_env": "The system is not configured with Laf environment", - "not_yet_introduced": "No introduction yet", + "no": "No", + "no_data": "No Data Available", + "no_laf_env": "System Not Configured with Laf Environment", + "not_yet_introduced": "No Introduction Yet", "option": "Option", "pay": { "amount": "Amount", - "balance": "Account balance", - "balance_notice": "Insufficient account balance", - "confirm_pay": "confirm payment", - "get_pay_QR": "Get the recharge QR code", - "need_pay": "Need to pay", - "need_to_pay": "Actually paid", - "new_package_price": "New package price", - "notice": "Do not close the page", - "old_package_price": "Old package price", - "other": "For other amounts, please round up the whole number", + "balance": "Account Balance", + "balance_notice": "Insufficient Account Balance", + "confirm_pay": "Confirm Payment", + "get_pay_QR": "Get Payment QR Code", + "need_pay": "Need to Pay", + "need_to_pay": "Actual Payment", + "new_package_price": "New Package Price", + "notice": "Please Do Not Close the Page", + "old_package_price": "Old Package Balance", + "other": "Other Amount, Please Use Whole Numbers", "package_tip": { - "buy": "The package level you purchased is lower than the current package, and the package will take effect after the current package expires. \nYou can check the package usage in Account—Personal Information—Package Details.", - "renewal": "You are renewing your plan. \nYou can check the package usage in Account—Personal Information—Package Details.", - "upgrade": "If the package you purchased is higher than the current package, the package will take effect immediately, and the current package will take effect later. \nYou can check the package usage in Account—Personal Information—Package Details." + "buy": "The package you purchased is lower than the current package. This package will take effect after the current package expires.\nYou can view the package usage in Account - Personal Information - Package Details.", + "renewal": "You are renewing the package. You can view the package usage in Account - Personal Information - Package Details.", + "upgrade": "The package you purchased is higher than the current package. This package will take effect immediately, and the current package will take effect later. You can view the package usage in Account - Personal Information - Package Details." }, - "to_recharge": "Insufficient balance, please recharge", - "wechat": "WeChat scan the QR code to pay: ¥{{price}}", - "yuan": "Yuan" + "to_recharge": "Insufficient Balance, Go to Recharge", + "wechat": "Please Scan the QR Code with WeChat to Pay: {{price}} Yuan\nPlease Do Not Close the Page", + "yuan": "{{amount}} Yuan" }, "permission": { - "Collaborator": "collaborator", - "Default permission": "Default permission", + "Collaborator": "Collaborator", + "Default permission": "Default Permission", "Manage": "Manage", - "No InheritPermission": "The permission has been restricted, and the parent folder's permission will not be inherited,", - "Not collaborator": "Not collaborator", + "No InheritPermission": "Permission Inheritance Restricted", + "Not collaborator": "No Collaborator", "Owner": "Owner", "Permission": "Permission", - "Permission config": "Permission config", + "Permission config": "Permission Configuration", "Private": "Private", - "Private Tip": "Only available to oneself", + "Private Tip": "Only Available to Yourself", "Public": "Team", - "Public Tip": "Available to all team members", - "Remove InheritPermission Confirm": "This operation will cause to lose the current permission settings, whether to continue?", - "Resume InheritPermission Confirm": "Whether to resume to inherit the parent folder's permission?", + "Public Tip": "Available to All Team Members", + "Remove InheritPermission Confirm": "This operation will invalidate permission inheritance. Proceed?", + "Resume InheritPermission Confirm": "Resume inheriting permissions from the parent folder?", "Resume InheritPermission Failed": "Resume Failed", - "Resume InheritPermission Success": "Resume Success", - "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" + "Resume InheritPermission Success": "Resume Successful", + "change_owner": "Transfer Ownership", + "change_owner_failed": "Transfer Ownership Failed", + "change_owner_placeholder": "Enter Username to Search Account", + "change_owner_success": "Ownership Transferred Successfully", + "change_owner_tip": "Your permissions will not be retained after the transfer", + "change_owner_to": "Transfer to", + "manager": "administrator", + "read": "Read permission", + "write": "write permission" }, "plugin": { - "App": "Select app", - "Currentapp": "Current app", + "App": "Select App", + "Currentapp": "Current App", "Description": "Description", - "Edit Http Plugin": "Edit HTTP plugin", - "Enter PAT": "Please enter the access token (PAT)", - "Get Plugin Module Detail Failed": "Failed to get plugin information", - "Import Plugin": "Import HTTP plugin", + "Edit Http Plugin": "Edit HTTP Plugin", + "Enter PAT": "Enter Personal Access Token (PAT)", + "Get Plugin Module Detail Failed": "Failed to Retrieve Plugin Information", + "Import Plugin": "Import HTTP Plugin", "Import from URL": "Import from URL. https://xxxx", - "Intro": "Plugin introduction", - "Invalid Env": "Invalid laf environment", - "Invalid Schema": "Invalid schema", + "Intro": "Plugin Introduction", + "Invalid Env": "Invalid Laf Environment", + "Invalid Schema": "Invalid Schema", "Invalid URL": "Invalid URL", "Method": "Method", "Path": "Path", - "Please bind laf accout first": "Please bind laf account first", - "Plugin List": "Plugin list", - "Search plugin": "Search plugin", - "Search_app": "Search app", - "Set Name": "Name the plugin", - "contribute": "Contribute plugins", - "go to laf": "Go to write", + "Please bind laf accout first": "Please Bind Laf Account First", + "Plugin List": "Plugin List", + "Search plugin": "Search Plugin", + "Search_app": "Search App", + "Set Name": "Name the Plugin", + "contribute": "Contribute Plugin", + "go to laf": "Go to Write", "path": "Path" }, - "reply_now": "Reply immediately", - "required": "must", - "resume_failed": "Recovery failed", + "reply_now": "Reply Now", + "required": "Required", + "resume_failed": "Resume Failed", "select_reference_variable": "Select Reference Variable", "share_link": "Share Link", "support": { @@ -1216,330 +1231,330 @@ "Read": "Read" }, "openapi": { - "Api baseurl": "API base URL", - "Api manager": "API key management", - "Copy success": "API address copied", - "New api key": "New API key", - "New api key tip": "Please keep your key safe, it will not be shown again~" + "Api baseurl": "API Base URL", + "Api manager": "API Key Management", + "Copy success": "API Address Copied", + "New api key": "New API Key", + "New api key tip": "Please keep your key safe, it will not be displayed again" }, "outlink": { - "Delete link tip": "Confirm to delete this no-login link? After deletion, the link will immediately become invalid, but the conversation logs will still be retained, please confirm!", - "Max usage points": "Points limit", - "Max usage points tip": "The maximum points this link can use. Exceeding this limit will make the link unusable. -1 means unlimited.", - "Usage points": "Points used", + "Delete link tip": "Confirm to Delete This Login-Free Link? The link will become invalid immediately after deletion, but the chat logs will be retained. Please confirm!", + "Max usage points": "Points Limit", + "Max usage points tip": "The maximum number of points allowed for this link. It cannot be used after exceeding the limit. -1 means unlimited.", + "Usage points": "Points Consumption", "share": { - "Response Quote": "Return quote", - "Response Quote tips": "Return quote content in the share link, but will not allow users to download the original document" + "Response Quote": "Return Quote", + "Response Quote tips": "Return quoted content in the share link, but do not allow users to download the original document" } }, "permission": { "Permission": "Permission" }, "standard": { - "AI Bonus Points": "AI points", - "Expired Time": "End time", - "Start Time": "Start time", - "due_date": "Expiration time", - "storage": "Storage amount", + "AI Bonus Points": "AI Points", + "Expired Time": "End Time", + "Start Time": "Start Time", + "due_date": "Due Date", + "storage": "Storage", "type": "Type" }, "team": { "limit": { - "No permission rerank": "No permission to use result rerank, please upgrade your plan" + "No permission rerank": "No Permission to Use Result Re-rank, Please Upgrade Your Package" } }, "user": { "Avatar": "Avatar", - "Go laf env": "Click to go to {{env}} to get the PAT credential.", - "Laf account course": "View the tutorial for binding laf account.", - "Laf account intro": "After binding your laf account, you will be able to use laf modules in the workflow to write code online.", - "Need to login": "Please login first", - "Price": "Pricing standard", - "User self info": "Personal information", + "Go laf env": "Click to Go to {{env}} to Get PAT Token.", + "Laf account course": "View the Tutorial for Binding Laf Account.", + "Laf account intro": "After binding your Laf account, you can use the Laf module in the workflow to write code online.", + "Need to login": "Please Log In First", + "Price": "Pricing", + "User self info": "Profile", "auth": { - "Sending Code": "Sending" + "Sending Code": "Sending Code" }, "captcha_placeholder": "Please enter the verification code", "inform": { - "System message": "System message" + "System message": "System Message" }, "login": { "And": "and", "Email": "Email", - "Forget Password": "Forgot password?", - "Github": "Login with Github", - "Google": "Login with Google", + "Forget Password": "Forgot Password?", + "Github": "GitHub Login", + "Google": "Google Login", "Password": "Password", - "Password login": "Password login", - "Phone": "Login with phone number", - "Phone number": "Phone number", - "Policy tip": "Using represents your agreement to our", - "Privacy": "Privacy policy", - "Provider error": "Login error, please retry", - "Register": "Register account", - "Root login": "Login with root user", + "Password login": "Password Login", + "Phone": "Phone Login", + "Phone number": "Phone Number", + "Policy tip": "By using, you agree to our", + "Privacy": "Privacy Policy", + "Provider error": "Login Error, Please Try Again", + "Register": "Register Account", + "Root login": "Login with Root User", "Root password placeholder": "Root password is the environment variable you set", - "Terms": "Terms of service", + "Terms": "Terms of Service", "Username": "Username", - "Wechat": "Login with Wechat", - "can_not_login": "Unable to log in, click to contact", - "error": "Login exception", - "security_failed": "Security check failed", - "wx_qr_login": "Wechat QR code login" + "Wechat": "WeChat Login", + "can_not_login": "Cannot Log In, Click to Contact", + "error": "Login Error", + "security_failed": "Security Verification Failed", + "wx_qr_login": "WeChat QR Code Login" }, "logout": { - "confirm": "Confirm to log out?" + "confirm": "Confirm to Log Out?" }, "team": { - "Dataset usage": "Knowledge base capacity", - "Team Tags Async Success": "Synchronization complete", + "Dataset usage": "Dataset Capacity", + "Team Tags Async Success": "Sync Completed", "member": "Member" } }, "wallet": { - "Ai point every thousand tokens": "{{points}} points/1K tokens", + "Ai point every thousand tokens": "{{points}} Points/1K Tokens", "Amount": "Amount", - "Bills": "Bills", + "Bills": "Bills and Invoices", "Buy": "Buy", - "Confirm pay": "Confirm payment", - "Not sufficient": "Your AI points are insufficient, please upgrade your plan or buy additional AI points before continuing.", - "Plan expired time": "Plan expiration time", - "Plan reset time": "Plan reset time", - "Standard Plan Detail": "Plan details", - "To read plan": "View plan", - "amount_0": "The purchase quantity cannot be 0", - "apply_invoice": "Apply for making an invoice", + "Confirm pay": "Payment Confirmation", + "Not sufficient": "Insufficient AI Points, Please Upgrade Your Package or Purchase Additional AI Points to Continue Using.", + "Plan expired time": "Package Expiration Time", + "Plan reset time": "Package Reset Time", + "Standard Plan Detail": "Package Details", + "To read plan": "View Package", + "amount_0": "Purchase Quantity Cannot Be 0", + "apply_invoice": "Apply for Invoice", "bill": { - "Number": "Order number", + "Number": "Order Number", "Status": "Status", - "Type": "Order type", + "Type": "Order Type", "payWay": { - "Way": "Payment method", - "balance": "Balance payment", - "wx": "Wechat payment" + "Way": "Payment Method", + "balance": "Balance Payment", + "wx": "WeChat Payment" }, "status": { "closed": "Closed", - "notpay": "Not paid", + "notpay": "Unpaid", "refund": "Refunded", - "success": "Payment successful" + "success": "Payment Successful" } }, - "bill_detail": "Bill details", + "bill_detail": "Bill Details", "bill_tag": { - "bill": "billing records", - "default_header": "Default header", - "invoice": "Invoicing records" + "bill": "Bill Records", + "default_header": "Default Header", + "invoice": "Invoice Records" }, - "billable_invoice": "Billable bills", - "buy_resource": "Purchase resource pack", - "has_invoice": "Whether the invoice has been issued", - "invoice_amount": "Invoice amount", + "billable_invoice": "Billable Invoice", + "buy_resource": "Buy Resource Pack", + "has_invoice": "Invoiced", + "invoice_amount": "Invoice Amount", "invoice_data": { - "bank": "Bank of deposit", - "bank_account": "Account opening account", - "company_address": "Company address", - "company_phone": "Company phone number", - "email": "Email address", - "in_valid": "There are empty fields or incorrect email formats", - "need_special_invoice": "Do you need a special ticket?", - "organization_name": "Organization name", - "unit_code": "same credit code" + "bank": "Bank", + "bank_account": "Bank Account", + "company_address": "Company Address", + "company_phone": "Company Phone", + "email": "Email Address", + "in_valid": "There are empty fields or email format errors", + "need_special_invoice": "Need Special Invoice", + "organization_name": "Organization Name", + "unit_code": "Unified Credit Code" }, - "invoice_detail": "Invoice details", - "invoice_info": "The invoice will be sent to your mailbox within 3-7 working days, please be patient.", + "invoice_detail": "Invoice Details", + "invoice_info": "The invoice will be sent to the email within 3-7 working days, please wait patiently", "invoicing": "Invoicing", "moduleName": { - "index": "Index generation", - "qa": "QA split" + "index": "Index Generation", + "qa": "QA Split" }, - "noBill": "No bill records~", - "no_invoice": "No invoicing record yet", + "noBill": "No Bill Records", + "no_invoice": "No Invoice Records", "subscription": { - "AI points": "AI points", - "AI points click to read tip": "Each call to the AI model will consume a certain amount of AI points (similar to Tokens). Click to view detailed calculation rules.", - "AI points usage": "AI points usage", - "AI points usage tip": "Each call to the AI model will consume a certain amount of AI points. The specific calculation standard can be referred to the 'Pricing standard' above", - "Ai points": "AI points calculation standard", - "Buy now": "Switch plan", - "Current plan": "Current plan", - "Extra ai points": "Extra AI points", - "Extra dataset size": "Extra knowledge base capacity", - "Extra plan": "Extra resource pack", - "Extra plan tip": "When the standard plan is not enough, you can buy extra resource packs to continue using", - "FAQ": "Frequently asked questions", + "AI points": "AI Points", + "AI points click to read tip": "Each time the AI model is called, a certain amount of AI points (similar to tokens) will be consumed. Click to view detailed calculation rules.", + "AI points usage": "AI Points Usage", + "AI points usage tip": "Each time the AI model is called, a certain amount of AI points will be consumed. For specific calculation standards, please refer to the 'Pricing' above.", + "Ai points": "AI Points Calculation Standards", + "Buy now": "Switch Package", + "Current plan": "Current Package", + "Extra ai points": "Extra AI Points", + "Extra dataset size": "Extra Dataset Capacity", + "Extra plan": "Extra Resource Pack", + "Extra plan tip": "When the standard package is not enough, you can purchase extra resource packs to continue using", + "FAQ": "FAQ", "Month amount": "Months", - "Next plan": "Future plan", - "Nonsupport": "No purchase required", - "Stand plan level": "Subscription plan", - "Standard update fail": "Failed to modify subscription plan", - "Standard update success": "Subscription plan change successful!", - "Sub plan": "Subscription plan", - "Sub plan tip": "Free use of {{title}} or upgrade to a higher plan", - "Team plan and usage": "Plan and usage", - "Training weight": "Training priority: {{weight}}", - "Update extra ai points": "Extra AI points", - "Update extra dataset size": "Extra storage", - "Upgrade plan": "Upgrade plan", - "ai_model": "AI language model", + "Next plan": "Future Package", + "Nonsupport": "No Purchase Needed", + "Stand plan level": "Subscription Package", + "Standard update fail": "Failed to Update Subscription Package", + "Standard update success": "Subscription Package Updated Successfully!", + "Sub plan": "Subscription Package", + "Sub plan tip": "Free to use {{title}} or upgrade to a higher package", + "Team plan and usage": "Package and Usage", + "Training weight": "Training Priority: {{weight}}", + "Update extra ai points": "Extra AI Points", + "Update extra dataset size": "Extra Storage", + "Upgrade plan": "Upgrade Package", + "ai_model": "AI Language Model", "function": { - "History store": "{{amount}} days of conversation history retention", - "Max app": "{{amount}} apps", - "Max dataset": "{{amount}} knowledge bases", - "Max dataset size": "{{amount}} sets of knowledge base indexes", - "Max members": "{{amount}} team members", - "Points": "{{amount}} AI points" + "History store": "{{amount}} Days of Chat History Retention", + "Max app": "{{amount}} Apps & Plugins", + "Max dataset": "{{amount}} Datasets", + "Max dataset size": "{{amount}} Dataset Indexes", + "Max members": "{{amount}} Team Members", + "Points": "{{amount}} AI Points" }, "mode": { "Month": "Monthly", - "Period": "Subscription period", + "Period": "Subscription Period", "Year": "Yearly", - "Year sale": "Two months free" + "Year sale": "Two Months Free" }, - "point": "integral", - "rerank": "Rerank", + "point": "Points", + "rerank": "Result Re-rank", "standardSubLevel": { - "custom": "Customized version", - "enterprise": "Enterprise edition", - "enterprise_desc": "Suitable for small and medium-sized enterprises to build knowledge base applications in production environments", - "experience": "Experience edition", - "experience_desc": "Unlocks the full functionality of FastGPT", - "free": "Free edition", - "free desc": "Basic functions can be used for free every month, and the knowledge base will be cleared if there is no usage record for 30 days", - "team": "Team edition", - "team_desc": "Suitable for small teams to build knowledge base applications and provide external services" + "custom": "Custom Version", + "enterprise": "Enterprise Version", + "enterprise_desc": "Suitable for small and medium-sized enterprises to build Dataset applications in production environments", + "experience": "Experience Version", + "experience_desc": "Unlock the full functionality of FastGPT", + "free": "Free Version", + "free desc": "Basic functions can be used for free every month. If the system is not logged in for 30 consecutive days, the Dataset will be automatically cleared.", + "team": "Team Version", + "team_desc": "Suitable for small teams to build Dataset applications and provide external services" }, "status": { - "active": "Taking effect", + "active": "Active", "expired": "Expired", - "inactive": "To be used" + "inactive": "Inactive" }, - "token_compute": "Click to view the online Tokens calculator", + "token_compute": "Click to View Online Tokens Calculator", "type": { - "balance": "Balance recharge", - "extraDatasetSize": "Knowledge base expansion", - "extraPoints": "AI points package", - "standard": "Plan subscription" + "balance": "Balance Recharge", + "extraDatasetSize": "Dataset Expansion", + "extraPoints": "AI Points Package", + "standard": "Package Subscription" }, - "web_site_sync": "Website sync" + "web_site_sync": "Website Sync" }, "usage": { - "Ai model": "AI model", - "App name": "App name", - "Audio Speech": "Audio playback", - "Bill Module": "Billing module", + "Ai model": "AI Model", + "App name": "App Name", + "Audio Speech": "Voice Playback", + "Bill Module": "Billing Module", "Duration": "Duration (seconds)", - "Extension result": "Question optimization result", - "Module name": "Module name", + "Extension result": "Question Optimization Result", + "Module name": "Module Name", "Source": "Source", - "Text Length": "Text length", - "Time": "Generation time", - "Token Length": "Token length", - "Total": "Total amount", - "Total points": "AI points consumed", - "Usage Detail": "Usage details", - "Whisper": "Voice input" + "Text Length": "Text Length", + "Time": "Generation Time", + "Token Length": "Token Length", + "Total": "Total Amount", + "Total points": "AI Points Consumption", + "Usage Detail": "Usage Details", + "Whisper": "Voice Input" }, - "use_default": "Use default header" + "use_default": "Use Default Header" } }, "sync_link": "Sync Link", "system": { - "Concat us": "Concat", - "Help Document": "Help document" + "Concat us": "Contact Us", + "Help Document": "Help Document" }, "tag_list": "Tag List", "team_tag": "Team Tag", "template": { - "Quote Content Tip": "You can customize the structure of the quote content to better adapt to different scenarios. You can use some variables for template configuration:\n{{q}} - search content, {{a}} - expected content, {{source}} - source, {{sourceId}} - source file name, {{index}} - the nth quote, they are all optional, here are the default values:\n{{default}}", - "Quote Prompt Tip": "You can use {{quote}} to insert the quote content template, and use {{question}} to insert the question. Here are the default values:\n{{default}}" + "Quote Content Tip": "You can customize the structure of the quoted content to better adapt to different scenarios. You can use some variables to configure the template:\n{{q}} - Search content, {{a}} - Expected content, {{source}} - Source, {{sourceId}} - Source file name, {{index}} - The nth quote, they are all optional. Below is the default value:\n{{default}}", + "Quote Prompt Tip": "You can use {{quote}} to insert the quote content template, and use {{question}} to insert the question. Below is the default value:\n{{default}}" }, - "textarea_variable_picker_tip": "Input '/' to select variables", - "tool_field": "Tool field parameter configuration", - "undefined_var": "An undefined variable is referenced. Is it automatically added?", + "textarea_variable_picker_tip": "Enter \"/\" to select a variable", + "tool_field": "Tool Field Parameter Configuration", + "undefined_var": "Referenced an undefined variable, add it automatically?", "unit": { - "character": "character", - "minute": "minute" + "character": "Character", + "minute": "Minute" }, - "unusable_variable": "no usable variable", - "upload_file_error": "Upload file error", + "unusable_variable": "No Usable Variables", + "upload_file_error": "File Upload Failed", "user": { "Account": "Account", - "Amount of earnings": "Earnings (¥)", - "Amount of inviter": "Total number of invitees", - "Application Name": "Project name", + "Amount of earnings": "Earnings (¥)", + "Amount of inviter": "Total Number of Invites", + "Application Name": "Project Name", "Avatar": "Avatar", "Change": "Change", - "Copy invite url": "Copy invite link", - "Edit name": "Click to edit nickname", - "Invite Url": "Invite link", - "Invite url tip": "Friends registered through this link will be permanently bound to you, and you will receive a certain balance reward when they recharge.\nIn addition, you will immediately receive a 5 yuan reward when friends register with a phone number.\nThe reward will be sent to your default team.", - "Laf Account Setting": "laf account settings", + "Copy invite url": "Copy Invite Link", + "Edit name": "Click to Edit Nickname", + "Invite Url": "Invite Link", + "Invite url tip": "Friends registered through this link will be permanently bound to you, and you will receive a balance reward when they recharge.\nAdditionally, you will immediately receive a 5 yuan reward when friends register with their phone number.\nThe reward will be sent to your default team.", + "Laf Account Setting": "Laf Account Configuration", "Language": "Language", "Member Name": "Nickname", "Notice": "Notice", "Notification Receive": "Notification Receive", - "Notification Receive Bind": "Please bind notification receive method", - "Old password is error": "Old password is incorrect", - "OpenAI Account Setting": "OpenAI account settings", + "Notification Receive Bind": "Please bind the notification receive method first", + "Old password is error": "Old Password is Incorrect", + "OpenAI Account Setting": "OpenAI Account Configuration", "Password": "Password", "Pay": "Recharge", - "Personal Information": "Personal information", + "Personal Information": "Profile", "Promotion": "Promotion", - "Promotion Rate": "Cashback ratio", - "Promotion Record": "Promotion record", - "Promotion rate tip": "You will receive a certain percentage of balance reward when your friend recharges", + "Promotion Rate": "Cashback Rate", + "Promotion Record": "Promotion Record", + "Promotion rate tip": "You will receive a balance reward when friends recharge", "Replace": "Replace", - "Set OpenAI Account Failed": "Failed to set OpenAI account", - "Sign Out": "Sign out", + "Set OpenAI Account Failed": "Failed to Set OpenAI Account", + "Sign Out": "Sign Out", "Team": "Team", "Time": "Time", "Timezone": "Timezone", - "Update Password": "Update password", - "Update password failed": "Failed to update password", - "Update password successful": "Password updated successfully", - "Usage Record": "Usage record", + "Update Password": "Update Password", + "Update password failed": "Failed to Update Password", + "Update password successful": "Password Updated Successfully", + "Usage Record": "Usage Record", "apikey": { - "key": "API key" + "key": "API Key" }, "confirm_password": "Confirm Password", "new_password": "New Password", - "no_invite_records": "No invitation record yet", - "no_notice": "No notification yet", - "no_usage_records": "No usage record yet", + "no_invite_records": "No Invite Records", + "no_notice": "No Notices", + "no_usage_records": "No Usage Records", "old_password": "Old Password", "password_message": "Password must be at least 4 characters and at most 60 characters", "team": { "Balance": "Team Balance", "Check Team": "Switch", - "Confirm Invite": "Confirm Invitation", + "Confirm Invite": "Confirm Invite", "Create Team": "Create New Team", "Invite Member": "Invite Member", - "Invite Member Failed Tip": "An error occurred while inviting members", - "Invite Member Result Tip": "Invitation Result Tip", - "Invite Member Success Tip": "Invitation completed\nSuccess: {{success}}\nInvalid usernames: {{inValid}}\nAlready in team: {{inTeam}}", - "Invite Member Tips": "The invitee can access or use other resources within the team", + "Invite Member Failed Tip": "Failed to Invite Member", + "Invite Member Result Tip": "Invite Result Tip", + "Invite Member Success Tip": "Member Invitation Completed\nSuccess: {{success}} people\nInvalid Username: {{inValid}}\nAlready in Team: {{inTeam}}", + "Invite Member Tips": "The other party can view or use other resources within the team", "Leave Team": "Leave Team", - "Leave Team Failed": "Failed to leave team", + "Leave Team Failed": "Failed to Leave Team", "Member": "Member", "Member Name": "Member Name", - "Over Max Member Tip": "Maximum of {{max}} members in the team", + "Over Max Member Tip": "The team can have up to {{max}} people", "Personal Team": "Personal Team", "Processing invitations": "Processing Invitations", "Processing invitations Tips": "You have {{amount}} team invitations to process", - "Remove Member Confirm Tip": "Confirm to remove {{username}} from the team? All their resources will be transferred to the team creator's account.", + "Remove Member Confirm Tip": "Confirm to remove {{username}} from the team?", "Select Team": "Select Team", - "Set Name": "Name Your Team", - "Switch Team Failed": "Failed to switch team", + "Set Name": "Name the Team", + "Switch Team Failed": "Failed to Switch Team", "Tags Async": "Save", "Team Name": "Team Name", "Team Tags Async": "Tag Sync", - "Team Tags Async Success": "Link error corrected, tag information updated", + "Team Tags Async Success": "Link Error Successful, Tag Information Updated", "Update Team": "Update Team Information", "invite": { "Accept Confirm": "Confirm to join this team?", "Accepted": "Joined Team", - "Deal Width Footer Tip": "Will automatically close after processing~", + "Deal Width Footer Tip": "It will automatically close after processing", "Reject": "Invitation Rejected", "Reject Confirm": "Confirm to reject this invitation?", "accept": "Accept", @@ -1548,8 +1563,8 @@ "member": { "Confirm Leave": "Confirm to leave this team?", "active": "Joined", - "reject": "Reject", - "waiting": "Waiting for Acceptance" + "reject": "Rejected", + "waiting": "Pending Acceptance" }, "role": { "Admin": "Admin", @@ -1557,9 +1572,9 @@ "Visitor": "Visitor" } }, - "type": "type" + "type": "Type" }, - "verification": "verify", - "xx_search_result": "{{key}} Search results", - "yes": "yes" + "verification": "Verification", + "xx_search_result": "{{key}} Search Results", + "yes": "Yes" } diff --git a/packages/web/i18n/en/dataset.json b/packages/web/i18n/en/dataset.json index 5a8ea868a..bc4cae8bb 100644 --- a/packages/web/i18n/en/dataset.json +++ b/packages/web/i18n/en/dataset.json @@ -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." } diff --git a/packages/web/i18n/en/file.json b/packages/web/i18n/en/file.json index 50655bb82..cf32aab95 100644 --- a/packages/web/i18n/en/file.json +++ b/packages/web/i18n/en/file.json @@ -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" } diff --git a/packages/web/i18n/en/publish.json b/packages/web/i18n/en/publish.json index 63cb657b1..fa818da40 100644 --- a/packages/web/i18n/en/publish.json +++ b/packages/web/i18n/en/publish.json @@ -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" } } diff --git a/packages/web/i18n/en/user.json b/packages/web/i18n/en/user.json index ae47a77da..a191a2b8a 100644 --- a/packages/web/i18n/en/user.json +++ b/packages/web/i18n/en/user.json @@ -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 don’t 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" } } diff --git a/packages/web/i18n/en/workflow.json b/packages/web/i18n/en/workflow.json index a9e3f36b2..ae36f34fa 100644 --- a/packages/web/i18n/en/workflow.json +++ b/packages/web/i18n/en/workflow.json @@ -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." } } diff --git a/packages/web/i18n/zh/app.json b/packages/web/i18n/zh/app.json index 22809318b..f647b7e4e 100644 --- a/packages/web/i18n/zh/app.json +++ b/packages/web/i18n/zh/app.json @@ -179,5 +179,12 @@ "user_file_input_desc": "用户上传的文档和图片链接", "user_select": "用户选择", "user_select_tip": "该模块可配置多个选项,以供对话时选择。不同选项可导向不同工作流支线" + }, + "permission": { + "des": { + "read": "可使用该应用进行对话", + "write": "可查看和编辑应用", + "manage": "写权限基础上,可配置发布渠道、查看对话日志、分配该应用权限" + } } } diff --git a/packages/web/i18n/zh/common.json b/packages/web/i18n/zh/common.json index 0d9b681c3..65ef8b23a 100644 --- a/packages/web/i18n/zh/common.json +++ b/packages/web/i18n/zh/common.json @@ -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": "创建者", diff --git a/packages/web/i18n/zh/dataset.json b/packages/web/i18n/zh/dataset.json index a6ddbc59c..32a06cb14 100644 --- a/packages/web/i18n/zh/dataset.json +++ b/packages/web/i18n/zh/dataset.json @@ -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": "可管理整个知识库数据和信息" + } + } } diff --git a/packages/web/i18n/zh/user.json b/packages/web/i18n/zh/user.json index feefae436..1e4b43116 100644 --- a/packages/web/i18n/zh/user.json +++ b/packages/web/i18n/zh/user.json @@ -104,5 +104,10 @@ "official_account": "公众号", "share": "分享链接", "wecom": "企业微信" + }, + "permission_des": { + "read": "成员仅可阅读相关资源,无法新建资源", + "write": "除了可读资源外,还可以新建新的资源", + "manage": "可创建资源、邀请、删除成员" } } diff --git a/projects/app/src/components/support/permission/MemberManager/AddMemberModal.tsx b/projects/app/src/components/support/permission/MemberManager/AddMemberModal.tsx index 3d07bf609..b63ee01e6 100644 --- a/projects/app/src/components/support/permission/MemberManager/AddMemberModal.tsx +++ b/projects/app/src/components/support/permission/MemberManager/AddMemberModal.tsx @@ -216,7 +216,7 @@ function AddMemberModal({ onClose }: AddModalPropsType) { borderRadius={'md'} h={'32px'} > - {perLabel} + {t(perLabel as any)} } diff --git a/projects/app/src/components/support/permission/MemberManager/PermissionSelect.tsx b/projects/app/src/components/support/permission/MemberManager/PermissionSelect.tsx index 11225466e..3430e9033 100644 --- a/projects/app/src/components/support/permission/MemberManager/PermissionSelect.tsx +++ b/projects/app/src/components/support/permission/MemberManager/PermissionSelect.tsx @@ -187,7 +187,7 @@ function PermissionSelect({ > - {item.name} + {t(item.name as any)} {t(item.description as any)} diff --git a/projects/app/src/components/support/permission/MemberManager/PermissionTags.tsx b/projects/app/src/components/support/permission/MemberManager/PermissionTags.tsx index 11ebc8a8d..7d9f7de16 100644 --- a/projects/app/src/components/support/permission/MemberManager/PermissionTags.tsx +++ b/projects/app/src/components/support/permission/MemberManager/PermissionTags.tsx @@ -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)} ))} diff --git a/projects/app/src/components/support/permission/PermissionTags/index.tsx b/projects/app/src/components/support/permission/PermissionTags/index.tsx index acb56b446..a8a978475 100644 --- a/projects/app/src/components/support/permission/PermissionTags/index.tsx +++ b/projects/app/src/components/support/permission/PermissionTags/index.tsx @@ -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 ( diff --git a/projects/app/src/components/support/user/team/TeamManageModal/components/PermissionManage/index.tsx b/projects/app/src/components/support/user/team/TeamManageModal/components/PermissionManage/index.tsx index 732c5ae87..4d6756cc2 100644 --- a/projects/app/src/components/support/user/team/TeamManageModal/components/PermissionManage/index.tsx +++ b/projects/app/src/components/support/user/team/TeamManageModal/components/PermissionManage/index.tsx @@ -61,7 +61,7 @@ function PermissionManage() { ml={3} borderRadius={'sm'} > - {TeamPermissionList['manage'].description} + {t(TeamPermissionList['manage'].description as any)} {userInfo?.team.role === 'owner' && ( diff --git a/projects/app/src/pages/account/components/Info/index.tsx b/projects/app/src/pages/account/components/Info/index.tsx index 406d6df92..8150733e7 100644 --- a/projects/app/src/pages/account/components/Info/index.tsx +++ b/projects/app/src/pages/account/components/Info/index.tsx @@ -306,7 +306,7 @@ const MyInfo = ({ onOpenContact }: { onOpenContact: () => void }) => { {formatStorePrice2Read(userInfo?.team?.balance).toFixed(3)}{' '} {t('user:bill.yuan')} - {/* TODO:暂时隐藏 */} + {userInfo?.permission.hasManagePer && !!standardPlan && (