| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420 | const translation = {  common: {    editing: 'Chỉnh sửa',    autoSaved: 'Tự động lưu',    unpublished: 'Chưa xuất bản',    published: 'Đã xuất bản',    publish: 'Xuất bản',    update: 'Cập nhật',    run: 'Chạy',    running: 'Đang chạy',    inRunMode: 'Chế độ chạy',    inPreview: 'Trong chế độ xem trước',    inPreviewMode: 'Chế độ xem trước',    preview: 'Xem trước',    viewRunHistory: 'Xem lịch sử chạy',    runHistory: 'Lịch sử chạy',    goBackToEdit: 'Quay lại trình chỉnh sửa',    conversationLog: 'Nhật ký cuộc trò chuyện',    features: 'Tính năng',    debugAndPreview: 'Gỡ lỗi và xem trước',    restart: 'Khởi động lại',    currentDraft: 'Bản nháp hiện tại',    currentDraftUnpublished: 'Bản nháp hiện tại chưa xuất bản',    latestPublished: 'Xuất bản mới nhất',    publishedAt: 'Đã xuất bản tại',    restore: 'Khôi phục',    runApp: 'Chạy ứng dụng',    batchRunApp: 'Chạy ứng dụng hàng loạt',    accessAPIReference: 'Truy cập tài liệu API',    embedIntoSite: 'Nhúng vào trang web',    addTitle: 'Thêm tiêu đề...',    addDescription: 'Thêm mô tả...',    noVar: 'Không có biến',    searchVar: 'Tìm kiếm biến',    variableNamePlaceholder: 'Tên biến',    setVarValuePlaceholder: 'Đặt giá trị biến',    needConnecttip: 'Bước này không được kết nối với bất kỳ điều gì',    maxTreeDepth: 'Giới hạn tối đa {{depth}} nút trên mỗi nhánh',    needEndNode: 'Phải thêm khối Kết thúc',    needAnswerNode: 'Phải thêm khối Trả lời',    workflowProcess: 'Quy trình làm việc',    notRunning: 'Chưa chạy',    previewPlaceholder: 'Nhập nội dung vào hộp bên dưới để bắt đầu gỡ lỗi Chatbot',    effectVarConfirm: {      title: 'Xóa biến',      content: 'Biến được sử dụng trong các nút khác. Bạn có chắc chắn muốn xóa nó không?',    },    insertVarTip: 'Nhấn phím \'/\' để chèn nhanh',    processData: 'Xử lý dữ liệu',    input: 'Đầu vào',    output: 'Đầu ra',    jinjaEditorPlaceholder: 'Gõ \'/\' hoặc \'{\' để chèn biến',    viewOnly: 'Chỉ xem',    showRunHistory: 'Hiển thị lịch sử chạy',    enableJinja: 'Bật hỗ trợ mẫu Jinja',    learnMore: 'Tìm hiểu thêm',    copy: 'Sao chép',    duplicate: 'Nhân bản',    addBlock: 'Thêm khối',    pasteHere: 'Dán vào đây',    pointerMode: 'Chế độ con trỏ',    handMode: 'Chế độ tay',    model: 'Mô hình',    workflowAsTool: 'Quy trình làm việc như công cụ',    configureRequired: 'Yêu cầu cấu hình',    configure: 'Cấu hình',    manageInTools: 'Quản lý trong công cụ',    workflowAsToolTip: 'Cần cấu hình lại công cụ sau khi cập nhật quy trình làm việc.',    viewDetailInTracingPanel: 'Xem chi tiết',  },  errorMsg: {    fieldRequired: '{{field}} là bắt buộc',    authRequired: 'Yêu cầu xác thực',    invalidJson: '{{field}} là JSON không hợp lệ',    fields: {      variable: 'Tên biến',      variableValue: 'Giá trị biến',      code: 'Mã',      model: 'Mô hình',      rerankModel: 'Mô hình xếp hạng lại',    },    invalidVariable: 'Biến không hợp lệ',  },  singleRun: {    testRun: 'Chạy thử nghiệm ',    startRun: 'Bắt đầu chạy',    running: 'Đang chạy',    testRunIteration: 'Lặp chạy thử nghiệm',    back: 'Quay lại',    iteration: 'Lặp',  },  tabs: {    'searchBlock': 'Tìm kiếm khối',    'blocks': 'Khối',    'tools': 'Công cụ',    'allTool': 'Tất cả',    'builtInTool': 'Tích hợp sẵn',    'customTool': 'Tùy chỉnh',    'workflowTool': 'Quy trình làm việc',    'question-understand': 'Hiểu câu hỏi',    'logic': 'Logic',    'transform': 'Chuyển đổi',    'utilities': 'Tiện ích',    'noResult': 'Không tìm thấy kết quả phù hợp',  },  blocks: {    'start': 'Bắt đầu',    'end': 'Kết thúc',    'answer': 'Trả lời',    'llm': 'LLM',    'knowledge-retrieval': 'Truy xuất kiến thức',    'question-classifier': 'Phân loại câu hỏi',    'if-else': 'NẾU/NGƯỢC LẠI',    'code': 'Mã',    'template-transform': 'Mẫu',    'http-request': 'Yêu cầu HTTP',    'variable-assigner': 'Trình gán biến',    'variable-aggregator': 'Trình tổng hợp biến',    'iteration-start': 'Bắt đầu lặp',    'iteration': 'Lặp',    'parameter-extractor': 'Trình trích xuất tham số',  },  blocksAbout: {    'start': 'Định nghĩa các tham số ban đầu để khởi chạy quy trình làm việc',    'end': 'Định nghĩa kết thúc và loại kết quả của quy trình làm việc',    'answer': 'Định nghĩa nội dung trả lời của cuộc trò chuyện',    'llm': 'Gọi các mô hình ngôn ngữ lớn để trả lời câu hỏi hoặc xử lý ngôn ngữ tự nhiên',    'knowledge-retrieval': 'Cho phép truy vấn nội dung văn bản liên quan đến câu hỏi của người dùng từ cơ sở kiến thức',    'question-classifier': 'Định nghĩa các điều kiện phân loại câu hỏi của người dùng, LLM có thể định nghĩa cách cuộc trò chuyện tiến triển dựa trên mô tả phân loại',    'if-else': 'Cho phép phân chia quy trình làm việc thành hai nhánh dựa trên điều kiện if/else',    'code': 'Thực thi một đoạn mã Python hoặc NodeJS để thực hiện logic tùy chỉnh',    'template-transform': 'Chuyển đổi dữ liệu thành chuỗi bằng cú pháp mẫu Jinja',    'http-request': 'Cho phép gửi các yêu cầu máy chủ qua giao thức HTTP',    'variable-assigner': 'Tổng hợp các biến từ nhiều nhánh thành một biến duy nhất để cấu hình đồng nhất các nút cuối.',    'variable-aggregator': 'Tổng hợp các biến từ nhiều nhánh thành một biến duy nhất để cấu hình đồng nhất các nút cuối.',    'iteration': 'Thực hiện nhiều bước trên một đối tượng danh sách cho đến khi tất cả các kết quả được xuất ra.',    'parameter-extractor': 'Sử dụng LLM để trích xuất các tham số có cấu trúc từ ngôn ngữ tự nhiên để gọi công cụ hoặc yêu cầu HTTP.',  },  operator: {    zoomIn: 'Phóng to',    zoomOut: 'Thu nhỏ',    zoomTo50: 'Phóng to 50%',    zoomTo100: 'Phóng to 100%',    zoomToFit: 'Phóng to vừa màn hình',  },  panel: {    userInputField: 'Trường đầu vào của người dùng',    changeBlock: 'Thay đổi khối',    helpLink: 'Liên kết trợ giúp',    about: 'Về',    createdBy: 'Tạo bởi ',    nextStep: 'Bước tiếp theo',    addNextStep: 'Thêm khối tiếp theo trong quy trình làm việc này',    selectNextStep: 'Chọn khối tiếp theo',    runThisStep: 'Chạy bước này',    checklist: 'Danh sách kiểm tra',    checklistTip: 'Đảm bảo rằng tất cả các vấn đề đã được giải quyết trước khi xuất bản',    checklistResolved: 'Tất cả các vấn đề đã được giải quyết',    organizeBlocks: 'Tổ chức các khối',    change: 'Thay đổi',  },  nodes: {    common: {      outputVars: 'Biến đầu ra',      insertVarTip: 'Chèn biến',      memory: {        memory: 'Bộ nhớ',        memoryTip: 'Cài đặt bộ nhớ cuộc trò chuyện',        windowSize: 'Kích thước cửa sổ',        conversationRoleName: 'Tên vai trò cuộc trò chuyện',        user: 'Tiền tố người dùng',        assistant: 'Tiền tố trợ lý',      },      memories: {        title: 'Bộ nhớ',        tip: 'Bộ nhớ cuộc trò chuyện',        builtIn: 'Tích hợp sẵn',      },    },    start: {      required: 'bắt buộc',      inputField: 'Trường đầu vào',      builtInVar: 'Biến tích hợp sẵn',      outputVars: {        query: 'Đầu vào của người dùng',        memories: {          des: 'Lịch sử cuộc trò chuyện',          type: 'loại tin nhắn',          content: 'nội dung tin nhắn',        },        files: 'Danh sách tệp',      },      noVarTip: 'Đặt các đầu vào có thể sử dụng trong Quy trình làm việc',    },    end: {      outputs: 'Đầu ra',      output: {        type: 'loại đầu ra',        variable: 'biến đầu ra',      },      type: {        'none': 'Không có',        'plain-text': 'Văn bản thuần',        'structured': 'Cấu trúc',      },    },    answer: {      answer: 'Trả lời',      outputVars: 'Biến đầu ra',    },    llm: {      model: 'mô hình',      variables: 'biến',      context: 'ngữ cảnh',      contextTooltip: 'Bạn có thể nhập Kiến thức làm ngữ cảnh',      notSetContextInPromptTip: 'Để kích hoạt tính năng ngữ cảnh, vui lòng điền biến ngữ cảnh vào PROMPT.',      prompt: 'prompt',      roleDescription: {        system: 'Cung cấp hướng dẫn cấp cao cho cuộc trò chuyện',        user: 'Cung cấp hướng dẫn, câu hỏi hoặc bất kỳ đầu vào văn bản nào cho mô hình',        assistant: 'Các phản hồi của mô hình dựa trên tin nhắn của người dùng',      },      addMessage: 'Thêm tin nhắn',      vision: 'tầm nhìn',      files: 'Tệp',      resolution: {        name: 'Độ phân giải',        high: 'Cao',        low: 'Thấp',      },      outputVars: {        output: 'Nội dung được tạo',        usage: 'Thông tin sử dụng mô hình',      },      singleRun: {        variable: 'Biến',      },      sysQueryInUser: 'sys.query trong tin nhắn của người dùng là bắt buộc',    },    knowledgeRetrieval: {      queryVariable: 'Biến truy vấn',      knowledge: 'Kiến thức',      outputVars: {        output: 'Dữ liệu phân đoạn được truy xuất',        content: 'Nội dung phân đoạn',        title: 'Tiêu đề phân đoạn',        icon: 'Biểu tượng phân đoạn',        url: 'URL phân đoạn',        metadata: 'Siêu dữ liệu khác',      },    },    http: {      inputVars: 'Biến đầu vào',      api: 'API',      apiPlaceholder: 'Nhập URL, gõ ‘/’ để chèn biến',      notStartWithHttp: 'API phải bắt đầu bằng http:// hoặc https://',      key: 'Khóa',      value: 'Giá trị',      bulkEdit: 'Chỉnh sửa hàng loạt',      keyValueEdit: 'Chỉnh sửa khóa-giá trị',      headers: 'Tiêu đề',      params: 'Tham số',      body: 'Nội dung',      outputVars: {        body: 'Nội dung phản hồi',        statusCode: 'Mã trạng thái phản hồi',        headers: 'Danh sách tiêu đề phản hồi JSON',        files: 'Danh sách tệp',      },      authorization: {        'authorization': 'Ủy quyền',        'authorizationType': 'Loại ủy quyền',        'no-auth': 'Không có',        'api-key': 'Khóa API',        'auth-type': 'Loại xác thực',        'basic': 'Cơ bản',        'bearer': 'Bearer',        'custom': 'Tùy chỉnh',        'api-key-title': 'Khóa API',        'header': 'Tiêu đề',      },      insertVarPlaceholder: 'gõ \'/\' để chèn biến',      timeout: {        title: 'Thời gian chờ',        connectLabel: 'Thời gian chờ kết nối',        connectPlaceholder: 'Nhập thời gian chờ kết nối tính bằng giây',        readLabel: 'Thời gian chờ đọc',        readPlaceholder: 'Nhập thời gian chờ đọc tính bằng giây',        writeLabel: 'Thời gian chờ ghi',        writePlaceholder: 'Nhập thời gian chờ ghi tính bằng giây',      },    },    code: {      inputVars: 'Biến đầu vào',      outputVars: 'Biến đầu ra',      advancedDependencies: 'Phụ thuộc nâng cao',      advancedDependenciesTip: 'Thêm một số phụ thuộc được tải trước mà tốn nhiều thời gian hoặc không phải là mặc định tại đây',      searchDependencies: 'Tìm kiếm phụ thuộc',    },    templateTransform: {      inputVars: 'Biến đầu vào',      code: 'Mã',      codeSupportTip: 'Chỉ hỗ trợ Jinja2',      outputVars: {        output: 'Nội dung chuyển đổi',      },    },    ifElse: {      if: 'Nếu',      else: 'Ngược lại',      elseDescription: 'Sử dụng để xác định logic sẽ thực hiện khi điều kiện if không được thỏa mãn.',      and: 'và',      or: 'hoặc',      operator: 'Toán tử',      notSetVariable: 'Vui lòng đặt biến trước',      comparisonOperator: {        'contains': 'chứa',        'not contains': 'không chứa',        'start with': 'bắt đầu bằng',        'end with': 'kết thúc bằng',        'is': 'là',        'is not': 'không là',        'empty': 'trống',        'not empty': 'không trống',        'null': 'là null',        'not null': 'không là null',      },      enterValue: 'Nhập giá trị',      addCondition: 'Thêm điều kiện',      conditionNotSetup: 'Điều kiện chưa được thiết lập',    },    variableAssigner: {      title: 'Gán biến',      outputType: 'Loại đầu ra',      varNotSet: 'Biến chưa được đặt',      noVarTip: 'Thêm các biến cần gán',      type: {        string: 'Chuỗi',        number: 'Số',        object: 'Đối tượng',        array: 'Mảng',      },      aggregationGroup: 'Nhóm tổng hợp',      aggregationGroupTip: 'Bật tính năng này cho phép trình tổng hợp biến tổng hợp nhiều bộ biến.',      addGroup: 'Thêm nhóm',      outputVars: {        varDescribe: 'Đầu ra {{groupName}}',      },      setAssignVariable: 'Đặt biến gán',    },    tool: {      toAuthorize: 'Ủy quyền',      inputVars: 'Biến đầu vào',      outputVars: {        text: 'nội dung do công cụ tạo ra',        files: {          title: 'tệp do công cụ tạo ra',          type: 'Loại hỗ trợ. Hiện tại chỉ hỗ trợ hình ảnh',          transfer_method: 'Phương pháp truyền. Giá trị là remote_url hoặc local_file',          url: 'URL hình ảnh',          upload_file_id: 'ID tệp đã tải lên',        },      },    },    questionClassifiers: {      model: 'mô hình',      inputVars: 'Biến đầu vào',      outputVars: {        className: 'Tên lớp',      },      class: 'Lớp',      classNamePlaceholder: 'Viết tên lớp của bạn',      advancedSetting: 'Cài đặt nâng cao',      topicName: 'Tên chủ đề',      topicPlaceholder: 'Viết tên chủ đề của bạn',      addClass: 'Thêm lớp',      instruction: 'Hướng dẫn',      instructionTip: 'Nhập hướng dẫn bổ sung để giúp trình phân loại câu hỏi hiểu rõ hơn về cách phân loại câu hỏi.',      instructionPlaceholder: 'Viết hướng dẫn của bạn',    },    parameterExtractor: {      inputVar: 'Biến đầu vào',      extractParameters: 'Trích xuất tham số',      importFromTool: 'Nhập từ công cụ',      addExtractParameter: 'Thêm tham số trích xuất',      addExtractParameterContent: {        name: 'Tên',        namePlaceholder: 'Tên tham số trích xuất',        type: 'Loại',        typePlaceholder: 'Loại tham số trích xuất',        description: 'Mô tả',        descriptionPlaceholder: 'Mô tả tham số trích xuất',        required: 'Bắt buộc',        requiredContent: 'Bắt buộc chỉ được sử dụng làm tài liệu tham khảo cho suy luận mô hình và không phải để xác thực bắt buộc của đầu ra tham số.',      },      extractParametersNotSet: 'Tham số trích xuất chưa được thiết lập',      instruction: 'Hướng dẫn',      instructionTip: 'Nhập hướng dẫn bổ sung để giúp trình trích xuất tham số hiểu rõ hơn về cách trích xuất tham số.',      advancedSetting: 'Cài đặt nâng cao',      reasoningMode: 'Chế độ suy luận',      reasoningModeTip: 'Bạn có thể chọn chế độ suy luận phù hợp dựa trên khả năng của mô hình để phản hồi các hướng dẫn về việc gọi hàm hoặc prompt.',      isSuccess: 'Thành công. Khi thành công giá trị là 1, khi thất bại giá trị là 0.',      errorReason: 'Lý do lỗi',    },    iteration: {      deleteTitle: 'Xóa nút lặp?',      deleteDesc: 'Xóa nút lặp sẽ xóa tất cả các nút con',      input: 'Đầu vào',      output: 'Biến đầu ra',      iteration_one: '{{count}} Lặp',      iteration_other: '{{count}} Lặp',      currentIteration: 'Lặp hiện tại',    },  },  tracing: {    stopBy: 'Dừng bởi {{user}}',  },}export default translation
 |