Initial commit

This commit is contained in:
2025-10-14 14:17:21 +08:00
commit ac715a8b88
35011 changed files with 3834178 additions and 0 deletions

View File

@@ -0,0 +1,87 @@
const translation = {
title: 'Chú thích',
name: 'Chú thích cho câu trả lời',
editBy: 'Câu trả lời được chỉnh sửa bởi {{author}}',
noData: {
title: 'Không có chú thích',
description: 'Bạn có thể chỉnh sửa chú thích trong phần gỡ lỗi ứng dụng hoặc nhập hàng loạt chú thích vào đây để có phản hồi chất lượng cao.',
},
table: {
header: {
question: 'câu hỏi',
answer: 'câu trả lời',
createdAt: 'tạo lúc',
hits: 'lượt truy cập',
actions: 'hành động',
addAnnotation: 'Thêm chú thích',
bulkImport: 'Nhập hàng loạt',
bulkExport: 'Xuất hàng loạt',
clearAll: 'Xóa tất cả chú thích',
},
},
editModal: {
title: 'Chỉnh sửa chú thích câu trả lời',
queryName: 'Câu hỏi của người dùng',
answerName: 'Câu trả lời của AI',
yourAnswer: 'Câu trả lời của bạn',
answerPlaceholder: 'Nhập câu trả lời của bạn vào đây',
yourQuery: 'Câu hỏi của bạn',
queryPlaceholder: 'Nhập câu hỏi của bạn ở đây',
removeThisCache: 'Xóa chú thích này',
createdAt: 'Được tạo lúc',
},
addModal: {
title: 'Thêm chú thích câu trả lời',
queryName: 'Câu hỏi',
answerName: 'Câu trả lời',
answerPlaceholder: 'Nhập câu trả lời vào đây',
queryPlaceholder: 'Nhập câu hỏi ở đây',
createNext: 'Thêm chú thích khác',
},
batchModal: {
title: 'Nhập hàng loạt',
csvUploadTitle: 'Kéo và thả tệp CSV của bạn vào đây hoặc ',
browse: 'chọn tệp',
tip: 'Tệp CSV phải tuân theo cấu trúc sau:',
question: 'câu hỏi',
answer: 'câu trả lời',
contentTitle: 'tiêu đề nội dung',
content: 'nội dung',
template: 'Tải mẫu tại đây',
cancel: 'Hủy',
run: 'Chạy hàng loạt',
runError: 'Chạy hàng loạt thất bại',
processing: 'Đang xử lý hàng loạt',
completed: 'Nhập hoàn tất',
error: 'Lỗi khi nhập',
ok: 'OK',
},
errorMessage: {
answerRequired: 'Câu trả lời là bắt buộc',
queryRequired: 'Câu hỏi là bắt buộc',
},
viewModal: {
annotatedResponse: 'Câu trả lời đã chú thích',
hitHistory: 'Lịch sử truy cập',
hit: 'Lượt truy cập',
hits: 'Lượt truy cập',
noHitHistory: 'Không có lịch sử truy cập',
},
hitHistoryTable: {
query: 'Câu hỏi',
match: 'Độ chính xác',
response: 'Phản hồi',
source: 'Nguồn',
score: 'Điểm',
time: 'Thời gian',
},
initSetup: {
title: 'Thiết lập ban đầu cho chú thích câu trả lời',
configTitle: 'Thiết lập chú thích câu trả lời',
confirmBtn: 'Lưu & Kích hoạt',
configConfirmBtn: 'Lưu',
},
embeddingModelSwitchTip: 'Mô hình vector hóa văn bản chú thích, việc chuyển đổi mô hình sẽ dẫn đến việc nhúng lại, có thể phát sinh thêm chi phí.',
}
export default translation

View File

@@ -0,0 +1,85 @@
const translation = {
apiServer: 'Máy chủ API',
apiKey: 'Khóa API',
status: 'Trạng thái',
disabled: 'Đã tắt',
ok: 'Đang hoạt động',
copy: 'Sao chép',
copied: 'Đã sao chép',
play: 'Chạy',
pause: 'Tạm dừng',
playing: 'Đang chạy',
merMaid: {
rerender: 'Vẽ lại',
},
never: 'Không bao giờ',
apiKeyModal: {
apiSecretKey: 'Khóa bí mật API',
apiSecretKeyTips: 'Để ngăn chặn việc lạm dụng API, hãy bảo vệ Khóa API của bạn. Tránh sử dụng nó dưới dạng văn bản thuần trong mã giao diện người dùng.',
createNewSecretKey: 'Tạo khóa bí mật mới',
secretKey: 'Khóa bí mật',
created: 'ĐÃ TẠO',
lastUsed: 'SỬ DỤNG LẦN CUỐI',
generateTips: 'Hãy lưu giữ khóa này ở nơi an toàn và dễ tiếp cận.',
},
actionMsg: {
deleteConfirmTitle: 'Xóa khóa bí mật này?',
deleteConfirmTips: 'Hành động này không thể hoàn tác.',
ok: 'OK',
},
completionMode: {
title: 'API ứng dụng hoàn thành',
info: 'Đối với việc tạo văn bản chất lượng cao như bài viết, tóm tắt và dịch thuật, hãy sử dụng API hoàn thành tin nhắn với đầu vào từ người dùng. Việc tạo văn bản dựa trên các thông số mô hình và mẫu đề xuất được thiết lập trong Dify Prompt Engineering.',
createCompletionApi: 'Tạo tin nhắn hoàn thành',
createCompletionApiTip: 'Tạo một tin nhắn hoàn thành để hỗ trợ chế độ câu hỏi và trả lời.',
inputsTips: '(Tùy chọn) Cung cấp các trường đầu vào người dùng dưới dạng cặp khóa-giá trị, tương ứng với các biến trong Prompt Eng. Khóa là tên biến, Giá trị là giá trị tham số. Nếu loại trường là Lựa chọn, Giá trị đã gửi phải là một trong các lựa chọn đã thiết lập trước.',
queryTips: 'Nội dung văn bản đầu vào của người dùng.',
blocking: 'Loại chặn, đợi để thực hiện hoàn tất và trả kết quả. (Yêu cầu có thể bị gián đoạn nếu quá trình kéo dài)',
streaming: 'trả về dữ liệu theo luồng. Thực hiện trả dữ liệu theo luồng dựa trên SSE (Sự kiện được gửi từ máy chủ).',
messageFeedbackApi: 'Phản hồi tin nhắn (thích)',
messageFeedbackApiTip: 'Đánh giá các tin nhắn nhận được thay mặt cho người dùng cuối với các lựa chọn thích hoặc không thích. Dữ liệu này hiển thị trên trang Nhật ký & Chú thích và được sử dụng cho việc điều chỉnh mô hình trong tương lai.',
messageIDTip: 'ID tin nhắn',
ratingTip: 'thích hoặc không thích, null là hủy bỏ',
parametersApi: 'Thu thập thông tin tham số ứng dụng',
parametersApiTip: 'Truy xuất các tham số Đầu vào được cấu hình, bao gồm tên biến, tên trường, loại và giá trị mặc định. Thường được sử dụng để hiển thị các trường này trong một biểu mẫu hoặc điền vào các giá trị mặc định sau khi máy khách tải.',
},
chatMode: {
title: 'API ứng dụng trò chuyện',
info: 'Đối với ứng dụng trò chuyện linh hoạt sử dụng định dạng Câu hỏi và Trả lời, gọi API tin nhắn trò chuyện để bắt đầu cuộc trò chuyện. Duy trì cuộc trò chuyện liên tục bằng cách chuyển conversation_id đã trả về. Các tham số phản hồi và mẫu phụ thuộc vào các cài đặt của Dify Prompt Eng.',
createChatApi: 'Tạo tin nhắn trò chuyện',
createChatApiTip: 'Tạo một tin nhắn trò chuyện mới hoặc tiếp tục một cuộc trò chuyện đang tồn tại.',
inputsTips: '(Tùy chọn) Cung cấp các trường đầu vào người dùng dưới dạng cặp khóa-giá trị, tương ứng với các biến trong Prompt Eng. Khóa là tên biến, Giá trị là giá trị tham số. Nếu loại trường là Lựa chọn, Giá trị đã gửi phải là một trong các lựa chọn đã thiết lập trước.',
queryTips: 'Nội dung câu hỏi của người dùng',
blocking: 'Loại chặn, đợi để thực hiện hoàn tất và trả kết quả. (Yêu cầu có thể bị gián đoạn nếu quá trình kéo dài)',
streaming: 'trả về dữ liệu theo luồng. Thực hiện trả dữ liệu theo luồng dựa trên SSE (Sự kiện được gửi từ máy chủ).',
conversationIdTip: '(Tùy chọn) ID cuộc trò chuyện: để trống cho cuộc trò chuyện lần đầu; chuyển conversation_id từ ngữ cảnh để tiếp tục cuộc trò chuyện.',
messageFeedbackApi: 'Phản hồi của người dùng cuối về tin nhắn',
messageFeedbackApiTip: 'Đánh giá các tin nhắn nhận được thay mặt cho người dùng cuối với các lựa chọn thích hoặc không thích. Dữ liệu này hiển thị trên trang Nhật ký & Chú thích và được sử dụng cho việc điều chỉnh mô hình trong tương lai.',
messageIDTip: 'ID tin nhắn',
ratingTip: 'thích hoặc không thích, null là hủy bỏ',
chatMsgHistoryApi: 'Lấy lịch sử tin nhắn trò chuyện',
chatMsgHistoryApiTip: 'Trang đầu tiên trả về `limit` tin nhắn mới nhất, được sắp xếp theo thứ tự ngược lại.',
chatMsgHistoryConversationIdTip: 'ID Cuộc trò chuyện',
chatMsgHistoryFirstId: 'ID của bản ghi trò chuyện đầu tiên trên trang hiện tại. Giá trị mặc định là không có.',
chatMsgHistoryLimit: 'Số lượng cuộc trò chuyện được trả về trong một yêu cầu',
conversationsListApi: 'Lấy danh sách cuộc trò chuyện',
conversationsListApiTip: 'Lấy danh sách phiên của người dùng hiện tại. Theo mặc định, trả về 20 phiên cuối cùng.',
conversationsListFirstIdTip: 'ID của bản ghi cuối cùng trên trang hiện tại, mặc định không có.',
conversationsListLimitTip: 'Số lượng cuộc trò chuyện được trả về trong một yêu cầu',
conversationRenamingApi: 'Đổi tên cuộc trò chuyện',
conversationRenamingApiTip: 'Đổi tên cuộc trò chuyện; tên sẽ được hiển thị trong giao diện nhiều phiên.',
conversationRenamingNameTip: 'Tên mới',
parametersApi: 'Thu thập thông tin tham số ứng dụng',
parametersApiTip: 'Truy xuất các tham số Đầu vào được cấu hình, bao gồm tên biến, tên trường, loại và giá trị mặc định. Thường được sử dụng để hiển thị các trường này trong một biểu mẫu hoặc điền vào các giá trị mặc định sau khi máy khách tải.',
},
develop: {
requestBody: 'Nội dung yêu cầu',
pathParams: 'Tham số đường dẫn',
query: 'Truy vấn',
toc: 'Nội dung',
},
loading: 'Tải',
regenerate: 'Tái tạo',
}
export default translation

View File

@@ -0,0 +1,418 @@
const translation = {
pageTitle: {
line1: 'YÊU CẦU',
line2: 'KỸ THUẬT',
},
orchestrate: 'Điều phối',
promptMode: {
simple: 'Chuyển sang Chế độ Chuyên gia để chỉnh sửa toàn bộ YÊU CẦU',
advanced: 'Chế độ Chuyên gia',
switchBack: 'Quay lại',
advancedWarning: {
title: 'Bạn đã chuyển sang Chế độ Chuyên gia. Sau khi sửa đổi YÊU CẦU, bạn KHÔNG THỂ quay lại chế độ cơ bản.',
description: 'Trong Chế độ Chuyên gia, bạn có thể chỉnh sửa toàn bộ YÊU CẦU.',
learnMore: 'Tìm hiểu thêm',
ok: 'Đồng ý',
},
operation: {
addMessage: 'Thêm tin nhắn',
},
contextMissing: 'Thiếu thành phần Ngữ cảnh, hiệu quả của yêu cầu có thể không tốt.',
},
operation: {
applyConfig: 'Áp dụng',
resetConfig: 'Đặt lại',
debugConfig: 'Gỡ lỗi',
addFeature: 'Thêm tính năng',
automatic: 'Tự động',
stopResponding: 'Dừng phản hồi',
agree: 'thích',
disagree: 'không thích',
cancelAgree: 'Bỏ thích',
cancelDisagree: 'Bỏ không thích',
userAction: 'Hành động người dùng ',
},
notSetAPIKey: {
title: 'Chưa thiết lập khóa API của nhà cung cấp LLM',
trailFinished: 'Kết thúc dùng thử',
description: 'Chưa thiết lập khóa API của nhà cung cấp LLM. Cần thiết lập trước khi gỡ lỗi.',
settingBtn: 'Đi đến cài đặt',
},
trailUseGPT4Info: {
title: 'Hiện không hỗ trợ GPT-4',
description: 'Để sử dụng GPT-4, vui lòng thiết lập API Key.',
},
feature: {
groupChat: {
title: 'Nâng cao trò chuyện',
description: 'Thêm cài đặt trước cho cuộc trò chuyện có thể cải thiện trải nghiệm người dùng.',
},
groupExperience: {
title: 'Nâng cao trải nghiệm',
},
conversationOpener: {
title: 'Mở đầu cuộc trò chuyện',
description: 'Trong ứng dụng trò chuyện, câu nói đầu tiên mà AI tự động nói với người dùng thường được sử dụng như một lời chào.',
},
suggestedQuestionsAfterAnswer: {
title: 'Câu hỏi gợi ý',
description: 'Thiết lập đề xuất câu hỏi tiếp theo có thể tạo ra cuộc trò chuyện tốt hơn cho người dùng.',
resDes: '3 đề xuất cho câu hỏi tiếp theo của người dùng.',
tryToAsk: 'Thử hỏi',
},
moreLikeThis: {
title: 'Thêm tương tự',
description: 'Tạo nhiều văn bản cùng một lúc, sau đó chỉnh sửa và tiếp tục tạo ra.',
generateNumTip: 'Số lượng mỗi lần tạo',
tip: 'Sử dụng tính năng này sẽ tiêu tốn thêm token.',
},
speechToText: {
title: 'Chuyển đổi giọng nói thành văn bản',
description: 'Khi được bật, bạn có thể sử dụng đầu vào bằng giọng nói.',
resDes: 'Đã bật đầu vào bằng giọng nói',
},
textToSpeech: {
title: 'Chuyển đổi văn bản thành giọng nói',
description: 'Khi được bật, văn bản có thể được chuyển đổi thành giọng nói.',
resDes: 'Đã bật chuyển đổi văn bản thành âm thanh',
},
citation: {
title: 'Trích dẫn và chú thích',
description: 'Khi được bật, hiển thị nguồn tài liệu và phần được trích dẫn của nội dung được tạo ra.',
resDes: 'Đã bật trích dẫn và chú thích',
},
annotation: {
title: 'Phản hồi có chú thích',
description: 'Bạn có thể thêm phản hồi chất lượng cao vào bộ nhớ cache để ưu tiên phù hợp với các câu hỏi tương tự của người dùng.',
resDes: 'Đã bật phản hồi có chú thích',
scoreThreshold: {
title: 'Ngưỡng điểm',
description: 'Được sử dụng để đặt ngưỡng tương đồng cho phản hồi có chú thích.',
easyMatch: 'Khớp dễ dàng',
accurateMatch: 'Khớp chính xác',
},
matchVariable: {
title: 'Biến khớp',
choosePlaceholder: 'Chọn biến khớp',
},
cacheManagement: 'Quản lý chú thích',
cached: 'Đã lưu cache',
remove: 'Xóa',
removeConfirm: 'Xóa chú thích này?',
add: 'Thêm chú thích',
edit: 'Chỉnh sửa chú thích',
},
dataSet: {
title: 'Ngữ cảnh',
noData: 'Bạn có thể nhập dữ liệu làm ngữ cảnh',
words: 'Từ',
textBlocks: 'Khối văn bản',
selectTitle: 'Chọn kiến thức tham khảo',
selected: 'Kiến thức đã chọn',
noDataSet: 'Không tìm thấy kiến thức',
toCreate: 'Tạo mới',
notSupportSelectMulti: 'Hiện chỉ hỗ trợ một kiến thức',
queryVariable: {
title: 'Biến truy vấn',
tip: 'Biến này sẽ được sử dụng làm đầu vào truy vấn để truy xuất ngữ cảnh, lấy thông tin ngữ cảnh liên quan đến đầu vào của biến này.',
choosePlaceholder: 'Chọn biến truy vấn',
noVar: 'Không có biến',
noVarTip: 'Vui lòng tạo một biến trong phần Biến',
unableToQueryDataSet: 'Không thể truy vấn kiến thức',
unableToQueryDataSetTip: 'Không thể truy vấn kiến thức thành công, vui lòng chọn một biến truy vấn ngữ cảnh trong phần ngữ cảnh.',
ok: 'Đồng ý',
contextVarNotEmpty: 'Biến truy vấn ngữ cảnh không thể trống',
deleteContextVarTitle: 'Xóa biến "{{varName}}"?',
deleteContextVarTip: 'Biến này đã được thiết lập là biến truy vấn ngữ cảnh, và việc xóa nó sẽ ảnh hưởng đến việc sử dụng bình thường của kiến thức. Nếu bạn vẫn cần xóa nó, vui lòng chọn lại biến khác trong phần ngữ cảnh.',
},
},
tools: {
title: 'Công cụ',
tips: 'Công cụ cung cấp phương thức gọi API tiêu chuẩn, sử dụng đầu vào của người dùng hoặc biến làm tham số yêu cầu để truy vấn dữ liệu bên ngoài như ngữ cảnh.',
toolsInUse: 'Đang sử dụng {{count}} công cụ',
modal: {
title: 'Công cụ',
toolType: {
title: 'Loại công cụ',
placeholder: 'Vui lòng chọn loại công cụ',
},
name: {
title: 'Tên',
placeholder: 'Vui lòng nhập tên',
},
variableName: {
title: 'Tên biến',
placeholder: 'Vui lòng nhập tên biến',
},
},
},
conversationHistory: {
title: 'Lịch sử cuộc trò chuyện',
description: 'Đặt tiền tố cho các vai trò trong cuộc trò chuyện',
tip: 'Lịch sử cuộc trò chuyện chưa được bật, vui lòng thêm <histories> vào phần prompt ở trên.',
learnMore: 'Tìm hiểu thêm',
editModal: {
title: 'Chỉnh sửa tên vai trò trong cuộc trò chuyện',
userPrefix: 'Tiền tố người dùng',
assistantPrefix: 'Tiền tố trợ lý',
},
},
toolbox: {
title: 'HỘP CÔNG CỤ',
},
moderation: {
title: 'Kiểm duyệt nội dung',
description: 'Bảo vệ đầu ra của mô hình bằng cách sử dụng API kiểm duyệt hoặc danh sách từ nhạy cảm.',
allEnabled: 'Đã bật kiểm duyệt nội dung ĐẦU VÀO/ĐẦU RA',
inputEnabled: 'Đã bật kiểm duyệt nội dung ĐẦU VÀO',
outputEnabled: 'Đã bật kiểm duyệt nội dung ĐẦU RA',
modal: {
title: 'Cài đặt kiểm duyệt nội dung',
provider: {
title: 'Nhà cung cấp',
openai: 'Kiểm duyệt OpenAI',
openaiTip: {
prefix: 'Kiểm duyệt OpenAI yêu cầu cấu hình khóa API OpenAI trong ',
suffix: '.',
},
keywords: 'Từ khóa',
},
keywords: {
tip: 'Mỗi dòng một từ khóa, phân tách bằng dòng mới. Tối đa 100 ký tự mỗi dòng.',
placeholder: 'Mỗi dòng một từ khóa, phân tách bằng dòng mới',
line: 'Dòng',
},
content: {
input: 'Kiểm duyệt nội dung ĐẦU VÀO',
output: 'Kiểm duyệt nội dung ĐẀU RA',
preset: 'Câu trả lời mẫu',
placeholder: 'Nội dung câu trả lời mẫu ở đây',
condition: 'Đã bật ít nhất một kiểm duyệt nội dung ĐẦU VÀO và ĐẦU RA',
fromApi: 'Câu trả lời mẫu được trả về bởi API',
errorMessage: 'Câu trả lời mẫu không thể trống',
supportMarkdown: 'Hỗ trợ Markdown',
},
openaiNotConfig: {
before: 'Kiểm duyệt OpenAI yêu cầu cấu hình khóa API OpenAI trong',
after: '',
},
},
},
},
automatic: {
title: 'Tự động hóa triển khai ứng dụng',
description: 'Mô tả tình huống của bạn, Dify sẽ tự động hóa một ứng dụng cho bạn.',
intendedAudience: 'Đối tượng mục tiêu là ai?',
intendedAudiencePlaceHolder: 'Ví dụ: Sinh viên',
solveProblem: 'Họ hy vọng AI có thể giải quyết vấn đề gì?',
solveProblemPlaceHolder: 'Ví dụ: Đánh giá thành tích học tập',
generate: 'Tạo',
audiencesRequired: 'Yêu cầu nhập đối tượng mục tiêu',
problemRequired: 'Yêu cầu nhập vấn đề cần giải quyết',
resTitle: 'Chúng tôi đã tự động hóa ứng dụng sau đây cho bạn.',
apply: 'Áp dụng tự động hóa này',
noData: 'Mô tả tình huống sử dụng của bạn ở bên trái, xem trước tự động hóa sẽ hiển thị ở đây.',
loading: 'Đang tự động hóa ứng dụng cho bạn...',
overwriteTitle: 'Ghi đè cấu hình hiện tại?',
overwriteMessage: 'Áp dụng tự động hóa này sẽ ghi đè lên cấu hình hiện tại.',
},
resetConfig: {
title: 'Xác nhận đặt lại?',
message: 'Đặt lại sẽ loại bỏ các thay đổi, khôi phục cấu hình đã xuất bản lần cuối.',
},
errorMessage: {
nameOfKeyRequired: 'Tên của khóa: {{key}} là bắt buộc',
valueOfVarRequired: 'Giá trị {{key}} không thể trống',
queryRequired: 'Văn bản yêu cầu là bắt buộc.',
waitForResponse: 'Vui lòng đợi phản hồi của tin nhắn trước để hoàn thành.',
waitForBatchResponse: 'Vui lòng đợi phản hồi của tác vụ hàng loạt để hoàn thành.',
notSelectModel: 'Vui lòng chọn một mô hình',
waitForImgUpload: 'Vui lòng đợi hình ảnh được tải lên',
},
chatSubTitle: 'Hướng dẫn',
completionSubTitle: 'Tiền tố lời nhắc',
promptTip: 'Lời nhắc hướng dẫn các phản hồi của AI với hướng dẫn và ràng buộc. Chèn biến như {{input}}. Lời nhắc này sẽ không được hiển thị cho người dùng.',
formattingChangedTitle: 'Định dạng đã thay đổi',
formattingChangedText: 'Thay đổi định dạng sẽ đặt lại khu vực gỡ lỗi, bạn có chắc chắn không?',
variableTitle: 'Biến',
variableTip: 'Người dùng điền các biến vào một biểu mẫu, tự động thay thế các biến trong lời nhắc.',
notSetVar: 'Biến cho phép người dùng đưa ra từ khóa lời nhắc hoặc mở đầu khi điền vào biểu mẫu. Bạn có thể thử nhập "{{input}}" trong các từ khóa lời nhắc.',
autoAddVar: 'Phát hiện biến không xác định được tham chiếu trong tiền-lời nhắc, bạn có muốn thêm chúng vào biểu mẫu đầu vào người dùng không?',
variableTable: {
key: 'Khóa biến',
name: 'Tên trường nhập liệu người dùng',
optional: 'Tùy chọn',
type: 'Loại nhập liệu',
action: 'Hành động',
typeString: 'Chuỗi',
typeSelect: 'Lựa chọn',
},
varKeyError: {
canNoBeEmpty: '{{key}} là bắt buộc',
tooLong: '{{key}} quá dài. Không thể dài hơn 30 ký tự',
notValid: '{{key}} không hợp lệ. Chỉ có thể chứa chữ cái, số, và dấu gạch dưới',
notStartWithNumber: '{{key}} không thể bắt đầu bằng số',
keyAlreadyExists: '{{key}} đã tồn tại',
},
otherError: {
promptNoBeEmpty: 'Lời nhắc không thể trống',
historyNoBeEmpty: 'Lịch sử cuộc trò chuyện phải được thiết lập trong lời nhắc',
queryNoBeEmpty: 'Truy vấn phải được thiết lập trong lời nhắc',
},
variableConfig: {
'addModalTitle': 'Thêm trường nhập',
'editModalTitle': 'Chỉnh sửa trường nhập',
'description': 'Cài đặt cho biến {{varName}}',
'fieldType': 'Loại trường',
'string': 'Văn bản ngắn',
'text-input': 'Văn bản ngắn',
'paragraph': 'Đoạn văn',
'select': 'Lựa chọn',
'number': 'Số',
'notSet': 'Chưa thiết lập, hãy thử nhập {{input}} trong gợi ý tiền tố',
'stringTitle': 'Tùy chọn hộp văn bản biểu mẫu',
'maxLength': 'Độ dài tối đa',
'options': 'Tùy chọn',
'addOption': 'Thêm tùy chọn',
'apiBasedVar': 'Biến dựa trên API',
'varName': 'Tên biến',
'labelName': 'Tên nhãn',
'inputPlaceholder': 'Vui lòng nhập',
'required': 'Bắt buộc',
'errorMsg': {
varNameRequired: 'Tên biến là bắt buộc',
labelNameRequired: 'Tên nhãn là bắt buộc',
varNameCanBeRepeat: 'Tên biến không được trùng lặp',
atLeastOneOption: 'Cần ít nhất một tùy chọn',
optionRepeat: 'Có các tùy chọn trùng lặp',
},
},
vision: {
name: 'Thị giác',
description: 'Cho phép tính năng thị giác sẽ cho phép mô hình nhận diện hình ảnh và trả lời các câu hỏi về chúng.',
settings: 'Cài đặt',
visionSettings: {
title: 'Cài đặt thị giác',
resolution: 'Độ phân giải',
resolutionTooltip: `Độ phân giải thấp sẽ cho phép mô hình nhận một phiên bản hình ảnh 512 x 512 thấp hơn, và đại diện cho hình ảnh với ngân sách 65 token. Điều này cho phép API trả về phản hồi nhanh hơn và tiêu thụ ít token đầu vào cho các trường hợp sử dụng không yêu cầu chi tiết cao.
\n
Độ phân giải cao sẽ đầu tiên cho phép mô hình nhìn thấy hình ảnh thấp hơn và sau đó tạo ra các cắt chi tiết của hình ảnh đầu vào dưới dạng hình vuông 512px dựa trên kích thước hình ảnh đầu vào. Mỗi cắt chi tiết sử dụng hai lần ngân sách token cho tổng cộng 129 token.`,
high: 'Cao',
low: 'Thấp',
uploadMethod: 'Phương thức tải lên',
both: 'Cả hai',
localUpload: 'Tải lên nội bộ',
url: 'URL',
uploadLimit: 'Giới hạn tải lên',
},
},
voice: {
name: 'Giọng nói',
defaultDisplay: 'Giọng mặc định',
description: 'Cài đặt chuyển đổi văn bản thành giọng nói',
settings: 'Cài đặt',
voiceSettings: {
title: 'Cài đặt giọng nói',
language: 'Ngôn ngữ',
resolutionTooltip: 'Chuyển đổi văn bản thành giọng nói hỗ trợ ngôn ngữ.',
voice: 'Giọng nói',
autoPlay: 'Tự động phát',
autoPlayEnabled: 'Đã bật',
autoPlayDisabled: 'Đã tắt',
},
},
openingStatement: {
title: 'Mở đầu cuộc trò chuyện',
add: 'Thêm',
writeOpener: 'Viết câu mở đầu',
placeholder: 'Viết thông điệp mở đầu của bạn ở đây, bạn có thể sử dụng biến, hãy thử nhập {{biến}}.',
openingQuestion: 'Câu hỏi mở đầu',
noDataPlaceHolder: 'Bắt đầu cuộc trò chuyện với người dùng có thể giúp AI thiết lập mối quan hệ gần gũi hơn với họ trong các ứng dụng trò chuyện.',
varTip: 'Bạn có thể sử dụng biến, hãy thử nhập {{biến}}',
tooShort: 'Cần ít nhất 20 từ trong lời nhắc ban đầu để tạo ra các câu mở đầu cho cuộc trò chuyện.',
notIncludeKey: 'Lời nhắc ban đầu không bao gồm biến: {{key}}. Vui lòng thêm nó vào lời nhắc ban đầu.',
},
modelConfig: {
model: 'Mô hình',
setTone: 'Thiết lập giọng điệu của phản hồi',
title: 'Mô hình và tham số',
modeType: {
chat: 'Trò chuyện',
completion: 'Hoàn thành',
},
},
inputs: {
title: 'Gỡ lỗi và xem trước',
noPrompt: 'Hãy thử viết một số lời nhắc trong trường tiền-lời nhắc',
userInputField: 'Trường nhập liệu người dùng',
noVar: 'Điền vào giá trị của biến, nó sẽ tự động thay thế từ khóa lời nhắc mỗi khi bắt đầu phiên mới.',
chatVarTip: 'Điền vào giá trị của biến, nó sẽ tự động thay thế từ khóa lời nhắc mỗi khi bắt đầu phiên mới',
completionVarTip: 'Điền vào giá trị của biến, nó sẽ tự động thay thế từ khóa lời nhắc mỗi khi một câu hỏi được gửi.',
previewTitle: 'Xem trước lời nhắc',
queryTitle: 'Nội dung truy vấn',
queryPlaceholder: 'Vui lòng nhập văn bản yêu cầu.',
run: 'CHẠY',
},
result: 'Văn bản đầu ra',
datasetConfig: {
settingTitle: 'Cài đặt truy xuất',
knowledgeTip: 'Nhấn vào nút "+" để thêm kiến thức',
retrieveOneWay: {
title: 'Truy xuất N-to-1',
description: 'Dựa trên ý định của người dùng và mô tả kiến thức, Agent tự động chọn kiến thức tốt nhất để truy vấn. Phù hợp nhất cho các ứng dụng có kiến thức cụ thể, giới hạn.',
},
retrieveMultiWay: {
title: 'Truy xuất đa hướng',
description: 'Dựa trên ý định của người dùng, truy vấn qua tất cả kiến thức, truy xuất văn bản liên quan từ nhiều nguồn và chọn ra kết quả tốt nhất phù hợp với truy vấn của người dùng sau khi sắp xếp lại. Yêu cầu cấu hình của API mô hình Rerank.',
},
rerankModelRequired: 'Mô hình Rerank là bắt buộc',
params: 'Tham số',
top_k: 'Top K',
top_kTip: 'Sử dụng để lọc các phần chính xác nhất với câu hỏi của người dùng. Hệ thống cũng sẽ tự động điều chỉnh giá trị của Top K, theo max_tokens của mô hình đã chọn.',
score_threshold: 'Ngưỡng điểm',
score_thresholdTip: 'Sử dụng để thiết lập ngưỡng tương đồng cho việc lọc các phần.',
retrieveChangeTip: 'Thay đổi chế độ chỉ mục và chế độ truy xuất có thể ảnh hưởng đến các ứng dụng liên quan đến kiến thức này.',
},
debugAsSingleModel: 'Gỡ lỗi như một mô hình',
debugAsMultipleModel: 'Gỡ lỗi như nhiều mô hình',
duplicateModel: 'Sao chép',
publishAs: 'Xuất bản dưới dạng',
assistantType: {
name: 'Loại trợ lý',
chatAssistant: {
name: 'Trợ lý cơ bản',
description: 'Xây dựng một trợ lý dựa trên trò chuyện sử dụng một Mô hình Ngôn ngữ Lớn.',
},
agentAssistant: {
name: 'Trợ lý tác nhân',
description: 'Xây dựng một tác nhân thông minh có thể tự động chọn các công cụ để hoàn thành các nhiệm vụ.',
},
},
agent: {
agentMode: 'Chế độ tác nhân',
agentModeDes: 'Thiết lập loại chế độ suy luận cho tác nhân',
agentModeType: {
ReACT: 'ReAct',
functionCall: 'Gọi hàm',
},
setting: {
name: 'Thiết lập tác nhân',
description: 'Thiết lập tác nhân cho phép cấu hình chế độ tác nhân và các tính năng nâng cao như lời nhắc tích hợp sẵn, chỉ có sẵn trong loại Tác nhân.',
maximumIterations: {
name: 'Số lần lặp tối đa',
description: 'Giới hạn số lần lặp mà một trợ lý tác nhân có thể thực hiện',
},
},
buildInPrompt: 'Lời nhắc tích hợp',
firstPrompt: 'Lời nhắc đầu tiên',
nextIteration: 'Lần lặp tiếp theo',
promptPlaceholder: 'Viết lời nhắc của bạn ở đây',
tools: {
name: 'Công cụ',
description: 'Sử dụng công cụ có thể mở rộng khả năng của LLM, như tìm kiếm trên internet hoặc thực hiện các phép tính khoa học',
enabled: 'Đã kích hoạt',
},
},
}
export default translation

View File

@@ -0,0 +1,100 @@
const translation = {
title: 'Nhật ký',
description: 'Nhật ký ghi lại trạng thái hoạt động của ứng dụng, bao gồm đầu vào của người dùng và phản hồi của trí tuệ nhân tạo.',
dateTimeFormat: 'MM/DD/YYYY hh:mm A',
table: {
header: {
updatedTime: 'Thời gian cập nhật',
time: 'Thời gian tạo',
endUser: 'Người dùng cuối hoặc tài khoản',
input: 'Đầu vào',
output: 'Đầu ra',
summary: 'Tóm tắt',
messageCount: 'Số lượng tin nhắn',
userRate: 'Đánh giá người dùng',
adminRate: 'Đánh giá quản trị viên',
startTime: 'THỜI GIAN BẮT ĐẦU',
status: 'TRẠNG THÁI',
runtime: 'THỜI GIAN CHẠY',
tokens: 'TOKEN',
user: 'NGƯỜI DÙNG CUỐI HOẶC TÀI KHOẢN',
version: 'PHIÊN BẢN',
},
pagination: {
previous: 'Trước',
next: 'Sau',
},
empty: {
noChat: 'Chưa có cuộc trò chuyện',
noOutput: 'Không có đầu ra',
element: {
title: 'Chưa có dữ liệu',
content: 'Quan sát và chú thích các tương tác giữa người dùng cuối và ứng dụng trí tuệ nhân tạo ở đây để liên tục cải thiện độ chính xác của AI. Bạn có thể thử <shareLink>chia sẻ</shareLink> hoặc <testLink>kiểm tra</testLink> ứng dụng Web, sau đó quay lại trang này.',
},
},
},
detail: {
time: 'Thời gian',
conversationId: 'ID cuộc trò chuyện',
promptTemplate: 'Mẫu lời nhắc',
promptTemplateBeforeChat: 'Mẫu lời nhắc trước trò chuyện · Tin nhắn hệ thống',
annotationTip: 'Cải thiện được đánh dấu bởi {{user}}',
timeConsuming: '',
second: 'giây',
tokenCost: 'Chi phí token',
loading: 'Đang tải',
operation: {
like: 'Thích',
dislike: 'Không thích',
addAnnotation: 'Thêm chú thích',
editAnnotation: 'Chỉnh sửa chú thích',
annotationPlaceholder: 'Nhập câu trả lời mong muốn từ AI. Điều này sẽ được sử dụng để điều chỉnh mô hình và cải thiện chất lượng sinh văn bản trong tương lai.',
},
variables: 'Biến',
uploadImages: 'Ảnh đã tải lên',
modelParams: 'Thông số mô hình',
},
filter: {
period: {
today: 'Hôm nay',
last7days: '7 ngày qua',
last4weeks: '4 tuần qua',
last3months: '3 tháng qua',
last12months: '12 tháng qua',
monthToDate: 'Tháng hiện tại',
quarterToDate: 'Quý hiện tại',
yearToDate: 'Năm hiện tại',
allTime: 'Tất cả thời gian',
},
annotation: {
all: 'Tất cả',
annotated: 'Đã chú thích ({{count}} mục)',
not_annotated: 'Chưa chú thích',
},
sortBy: 'Sắp xếp theo:',
descending: 'giảm dần',
ascending: 'tăng dần',
},
workflowTitle: 'Nhật ký quy trình làm việc',
workflowSubtitle: 'Nhật ký ghi lại hoạt động của Tự động hóa.',
runDetail: {
title: 'Nhật ký cuộc trò chuyện',
workflowTitle: 'Chi tiết nhật ký',
fileListDetail: 'Chi tiết',
fileListLabel: 'Chi tiết tệp',
},
promptLog: 'Nhật ký lời nhắc',
AgentLog: 'Nhật ký tác nhân',
viewLog: 'Xem nhật ký',
agentLogDetail: {
AgentMode: 'Chế độ tác nhân',
toolUsed: 'Công cụ đã sử dụng',
iterations: 'Số lần lặp',
iteration: 'Lần lặp',
finalProcessing: 'Xử lý cuối cùng',
agentMode: 'Chế độ đại lý',
},
agentLog: 'Nhật ký đại lý',
}
export default translation

View File

@@ -0,0 +1,172 @@
const translation = {
welcome: {
firstStepTip: 'Để bắt đầu,',
enterKeyTip: 'nhập khóa API OpenAI của bạn bên dưới',
getKeyTip: 'Lấy khóa API từ bảng điều khiển OpenAI',
placeholder: 'Khóa API OpenAI của bạn (ví dụ: sk-xxxx)',
},
apiKeyInfo: {
cloud: {
trial: {
title: 'Bạn đang sử dụng gói dùng thử của {{providerName}}.',
description: 'Gói dùng thử được cung cấp để bạn kiểm tra. Trước khi hết lượt gọi của gói dùng thử, vui lòng thiết lập nhà cung cấp mô hình riêng hoặc mua thêm hạn mức.',
},
exhausted: {
title: 'Gói dùng thử của bạn đã hết, vui lòng thiết lập khóa API của bạn.',
description: 'Gói dùng thử của bạn đã hết. Vui lòng thiết lập nhà cung cấp mô hình riêng hoặc mua thêm hạn mức.',
},
},
selfHost: {
title: {
row1: 'Để bắt đầu,',
row2: 'hãy thiết lập nhà cung cấp mô hình của bạn trước.',
},
},
callTimes: 'Số lần gọi',
usedToken: 'Token đã sử dụng',
setAPIBtn: 'Thiết lập nhà cung cấp mô hình',
tryCloud: 'Hoặc dùng thử phiên bản đám mây của Dify với gói miễn phí',
},
overview: {
title: 'Tổng quan',
appInfo: {
explanation: 'Ứng dụng web AI sẵn sàng sử dụng',
accessibleAddress: 'Địa chỉ công khai',
preview: 'Xem trước',
regenerate: 'Tạo lại',
regenerateNotice: 'Bạn có muốn tạo lại địa chỉ công khai không?',
preUseReminder: 'Vui lòng kích hoạt ứng dụng web trước khi tiếp tục.',
settings: {
entry: 'Cài đặt',
title: 'Cài đặt ứng dụng web',
webName: 'Tên ứng dụng web',
webDesc: 'Mô tả ứng dụng web',
webDescTip: 'Văn bản này sẽ hiển thị ở phía người dùng, cung cấp hướng dẫn cơ bản về cách sử dụng ứng dụng',
webDescPlaceholder: 'Nhập mô tả của ứng dụng web',
language: 'Ngôn ngữ',
workflow: {
title: 'Các bước quy trình',
show: 'Hiển thị',
hide: 'Ẩn',
showDesc: 'Hiển thị hoặc ẩn chi tiết dòng công việc trong WebApp',
subTitle: 'Chi tiết quy trình làm việc',
},
chatColorTheme: 'Giao diện màu trò chuyện',
chatColorThemeDesc: 'Thiết lập giao diện màu của chatbot',
chatColorThemeInverted: 'Đảo ngược',
invalidHexMessage: 'Giá trị mã màu không hợp lệ',
more: {
entry: 'Hiển thị thêm cài đặt',
copyright: 'Bản quyền',
copyRightPlaceholder: 'Nhập tên tác giả hoặc tổ chức',
privacyPolicy: 'Chính sách bảo mật',
privacyPolicyPlaceholder: 'Nhập liên kết chính sách bảo mật',
privacyPolicyTip: 'Giúp người dùng hiểu dữ liệu mà ứng dụng thu thập, xem <privacyPolicyLink>Chính sách bảo mật</privacyPolicyLink> của Dify.',
customDisclaimer: 'Tuyên bố từ chối trách nhiệm tùy chỉnh',
customDisclaimerPlaceholder: 'Nhập liên kết tuyên bố từ chối trách nhiệm',
customDisclaimerTip: 'Liên kết này sẽ hiển thị ở phía người dùng, cung cấp thông tin về trách nhiệm của ứng dụng',
copyrightTip: 'Hiển thị thông tin bản quyền trong ứng dụng web',
copyrightTooltip: 'Vui lòng nâng cấp lên gói Professional trở lên',
},
sso: {
title: 'SSO ứng dụng web',
description: 'Tất cả người dùng được yêu cầu đăng nhập bằng SSO trước khi sử dụng WebApp',
tooltip: 'Liên hệ với quản trị viên để bật SSO WebApp',
label: 'Xác thực SSO',
},
modalTip: 'Cài đặt ứng dụng web phía máy khách.',
},
embedded: {
entry: 'Nhúng',
title: 'Nhúng vào trang web',
explanation: 'Chọn cách nhúng ứng dụng trò chuyện vào trang web của bạn',
iframe: 'Để thêm ứng dụng trò chuyện vào bất kỳ đâu trên trang web của bạn, hãy thêm iframe này vào mã HTML của bạn.',
scripts: 'Để thêm ứng dụng trò chuyện vào góc dưới bên phải của trang web, thêm mã này vào mã HTML của bạn.',
chromePlugin: 'Cài đặt tiện ích mở rộng Dify Chatbot cho Chrome',
copied: 'Đã sao chép',
copy: 'Sao chép',
},
qrcode: {
title: 'Mã QR để chia sẻ',
scan: 'Quét và chia sẻ ứng dụng',
download: 'Tải xuống mã QR',
},
customize: {
way: 'cách',
entry: 'Tùy chỉnh',
title: 'Tùy chỉnh ứng dụng web AI',
explanation: 'Bạn có thể tùy chỉnh giao diện của ứng dụng web để phù hợp với kịch bản và phong cách mong muốn.',
way1: {
name: 'Fork mã nguồn phía client, sửa đổi và triển khai lên Vercel (khuyến nghị)',
step1: 'Fork mã nguồn phía client và sửa đổi',
step1Tip: 'Nhấp vào đây để fork mã nguồn vào tài khoản GitHub của bạn và sửa đổi',
step1Operation: 'Dify-WebClient',
step2: 'Triển khai lên Vercel',
step2Tip: 'Nhấp vào đây để nhập kho lưu trữ vào Vercel và triển khai',
step2Operation: 'Nhập kho lưu trữ',
step3: 'Cấu hình biến môi trường',
step3Tip: 'Thêm các biến môi trường sau vào Vercel',
},
way2: {
name: 'Viết mã phía client để gọi API và triển khai lên máy chủ',
operation: 'Tài liệu',
},
},
launch: 'Phóng',
},
apiInfo: {
title: 'API dịch vụ backend',
explanation: 'Dễ dàng tích hợp vào ứng dụng của bạn',
accessibleAddress: 'Điểm cuối dịch vụ API',
doc: 'Tài liệu tham khảo API',
},
status: {
running: 'Đang hoạt động',
disable: 'Đã tắt',
},
},
analysis: {
title: 'Phân tích',
ms: 'ms',
tokenPS: 'Token/giây',
totalMessages: {
title: 'Tổng số tin nhắn',
explanation: 'Số lượng tương tác AI hàng ngày.',
},
totalConversations: {
title: 'Tổng số cuộc hội thoại',
explanation: 'Số lượng cuộc hội thoại AI hàng ngày; không bao gồm kỹ thuật/gỡ lỗi prompt.',
},
activeUsers: {
title: 'Người dùng hoạt động',
explanation: 'Số người dùng duy nhất tham gia trò chuyện với AI; không tính việc tạo lại/lặp lại câu hỏi.',
},
tokenUsage: {
title: 'Sử dụng token',
explanation: 'Phản ánh việc sử dụng mô hình ngôn ngữ hàng ngày cho ứng dụng, hữu ích cho mục đích kiểm soát chi phí.',
consumed: 'Đã sử dụng',
},
avgSessionInteractions: {
title: 'Trung bình tương tác mỗi phiên',
explanation: 'Số lần giao tiếp liên tục giữa người dùng và AI; áp dụng cho các ứng dụng dựa trên trò chuyện.',
},
avgUserInteractions: {
title: 'Trung bình tương tác mỗi người dùng',
explanation: 'Phản ánh tần suất sử dụng hàng ngày của người dùng. Chỉ số này cho biết mức độ gắn kết của người dùng.',
},
userSatisfactionRate: {
title: 'Tỷ lệ hài lòng của người dùng',
explanation: 'Số lượt thích trên mỗi 1.000 tin nhắn. Chỉ số này cho biết tỷ lệ câu trả lời mà người dùng rất hài lòng.',
},
avgResponseTime: {
title: 'Thời gian phản hồi trung bình',
explanation: 'Thời gian (ms) để AI xử lý/phản hồi; áp dụng cho các ứng dụng dựa trên văn bản.',
},
tps: {
title: 'Tốc độ đầu ra token',
explanation: 'Đo lường hiệu suất của LLM. Đếm tốc độ đầu ra token của LLM từ khi bắt đầu yêu cầu đến khi hoàn thành đầu ra.',
},
},
}
export default translation

View File

@@ -0,0 +1,199 @@
const translation = {
createApp: 'TẠO ỨNG DỤNG',
types: {
all: 'Tất cả',
chatbot: 'Chatbot',
agent: 'Tác nhân',
workflow: 'Quy trình',
completion: 'Hoàn thành',
advanced: 'Dòng trò chuyện',
basic: 'Cơ bản',
},
duplicate: 'Sao chép',
duplicateTitle: 'Sao chép ứng dụng',
export: 'Xuất DSL',
exportFailed: 'Xuất DSL thất bại.',
importDSL: 'Nhập tệp DSL',
createFromConfigFile: 'Tạo từ tệp DSL',
deleteAppConfirmTitle: 'Xóa ứng dụng này?',
deleteAppConfirmContent:
'Việc xóa ứng dụng là không thể hoàn tác. Người dùng sẽ không thể truy cập vào ứng dụng của bạn nữa và tất cả cấu hình cũng như nhật ký nhắc sẽ bị xóa vĩnh viễn.',
appDeleted: 'Ứng dụng đã bị xóa',
appDeleteFailed: 'Không thể xóa ứng dụng',
join: 'Tham gia cộng đồng',
communityIntro:
'Thảo luận với các thành viên nhóm, người đóng góp và nhà phát triển trên các kênh khác nhau.',
roadmap: 'Xem lộ trình của chúng tôi',
newApp: {
startFromBlank: 'Tạo mới',
startFromTemplate: 'Tạo từ mẫu',
captionAppType: 'Bạn muốn tạo loại ứng dụng nào?',
chatbotDescription: 'Xây dựng một ứng dụng trò chuyện. Ứng dụng này sử dụng định dạng hỏi đáp, cho phép nhiều vòng trò chuyện liên tục.',
completionDescription: 'Xây dựng một ứng dụng tạo văn bản chất lượng cao dựa trên gợi ý, như tạo bài viết, tóm tắt, dịch thuật và nhiều hơn nữa.',
completionWarning: 'Loại ứng dụng này sẽ không được hỗ trợ trong tương lai.',
agentDescription: 'Xây dựng một tác nhân thông minh có thể tự động chọn công cụ để hoàn thành các nhiệm vụ',
workflowDescription: 'Xây dựng một ứng dụng tạo văn bản chất lượng cao dựa trên quy trình làm việc với mức độ tùy chỉnh cao. Phù hợp cho người dùng có kinh nghiệm.',
workflowWarning: 'Hiện đang trong phiên bản beta',
chatbotType: 'Phương pháp quản lý Chatbot',
basic: 'Cơ bản',
basicTip: 'Dành cho người mới bắt đầu, có thể chuyển sang Chatflow sau này',
basicFor: 'DÀNH CHO NGƯỜI MỚI BẮT ĐẦU',
basicDescription: 'Quản lý cơ bản cho phép quản lý ứng dụng Chatbot bằng cách sử dụng các cài đặt đơn giản, không cần sửa đổi các lời nhắc tích hợp sẵn. Phù hợp cho người mới bắt đầu.',
advanced: 'Chatflow',
advancedFor: 'Dành cho người dùng có kinh nghiệm',
advancedDescription: 'Quản lý Chatbot dưới dạng các quy trình làm việc, cung cấp mức độ tùy chỉnh cao, bao gồm khả năng chỉnh sửa các lời nhắc tích hợp sẵn. Phù hợp cho người dùng có kinh nghiệm.',
captionName: 'Biểu tượng và tên ứng dụng',
appNamePlaceholder: 'Đặt tên cho ứng dụng của bạn',
captionDescription: 'Mô tả',
appDescriptionPlaceholder: 'Nhập mô tả của ứng dụng',
useTemplate: 'Sử dụng mẫu này',
previewDemo: 'Xem trước demo',
chatApp: 'Trợ lý',
chatAppIntro:
'Tôi muốn xây dựng một ứng dụng trò chuyện. Ứng dụng này sử dụng định dạng hỏi đáp, cho phép nhiều vòng trò chuyện liên tục.',
agentAssistant: 'Trợ lý tác nhân mới',
completeApp: 'Máy tạo văn bản',
completeAppIntro:
'Tôi muốn tạo một ứng dụng tạo văn bản chất lượng cao dựa trên gợi ý, như tạo bài viết, tóm tắt, dịch thuật và nhiều hơn nữa.',
showTemplates: 'Tôi muốn chọn từ mẫu',
hideTemplates: 'Quay lại chế độ lựa chọn',
Create: 'Tạo',
Cancel: 'Hủy',
nameNotEmpty: 'Tên không được để trống',
appTemplateNotSelected: 'Vui lòng chọn một mẫu',
appTypeRequired: 'Vui lòng chọn loại ứng dụng',
appCreated: 'Ứng dụng đã được tạo',
appCreateFailed: 'Không thể tạo ứng dụng',
Confirm: 'Xác nhận',
caution: 'Thận trọng',
appCreateDSLErrorPart1: 'Một sự khác biệt đáng kể trong các phiên bản DSL đã được phát hiện. Buộc nhập có thể khiến ứng dụng bị trục trặc.',
appCreateDSLErrorPart2: 'Bạn có muốn tiếp tục không?',
appCreateDSLErrorTitle: 'Phiên bản không tương thích',
appCreateDSLErrorPart3: 'Phiên bản DSL ứng dụng hiện tại:',
appCreateDSLWarning: 'Phạt cảnh cáo: Sự khác biệt về phiên bản DSL có thể ảnh hưởng đến một số tính năng nhất định',
appCreateDSLErrorPart4: 'Phiên bản DSL được hệ thống hỗ trợ:',
forBeginners: 'DÀNH CHO NGƯỜI MỚI BẮT ĐẦU',
chooseAppType: 'Chọn loại ứng dụng',
chatbotShortDescription: 'Chatbot dựa trên LLM với thiết lập đơn giản',
noTemplateFoundTip: 'Hãy thử tìm kiếm bằng các từ khóa khác nhau.',
workflowShortDescription: 'Điều phối cho các tác vụ tự động hóa một lượt',
optional: 'Tùy chọn',
advancedShortDescription: 'Quy trình làm việc cho các cuộc đối thoại nhiều lượt phức tạp với bộ nhớ',
workflowUserDescription: 'Điều phối quy trình làm việc cho các tác vụ một vòng như tự động hóa và xử lý hàng loạt.',
foundResults: '{{đếm}} Kết quả',
chatbotUserDescription: 'Nhanh chóng xây dựng chatbot dựa trên LLM với cấu hình đơn giản. Bạn có thể chuyển sang Chatflow sau.',
agentUserDescription: 'Một tác nhân thông minh có khả năng suy luận lặp đi lặp lại và sử dụng công cụ tự động để đạt được mục tiêu nhiệm vụ.',
noIdeaTip: 'Không có ý tưởng? Kiểm tra các mẫu của chúng tôi',
advancedUserDescription: 'Điều phối quy trình làm việc cho các tác vụ đối thoại phức tạp nhiều vòng với khả năng bộ nhớ.',
forAdvanced: 'DÀNH CHO NGƯỜI DÙNG NÂNG CAO',
foundResult: '{{đếm}} Kết quả',
agentShortDescription: 'Tác nhân thông minh với lý luận và sử dụng công cụ tự động',
noTemplateFound: 'Không tìm thấy mẫu',
noAppsFound: 'Không tìm thấy ứng dụng nào',
learnMore: 'Tìm hiểu thêm',
completionShortDescription: 'Trợ lý AI cho các tác vụ tạo văn bản',
completionUserDescription: 'Nhanh chóng xây dựng trợ lý AI cho các tác vụ tạo văn bản với cấu hình đơn giản.',
},
editApp: 'Chỉnh sửa thông tin',
editAppTitle: 'Chỉnh sửa thông tin ứng dụng',
editDone: 'Thông tin ứng dụng đã được cập nhật',
editFailed: 'Không thể cập nhật thông tin ứng dụng',
iconPicker: {
ok: 'Đồng ý',
cancel: 'Hủy',
emoji: 'Biểu tượng cảm xúc',
image: 'Hình ảnh',
},
switch: 'Chuyển sang quản lý quy trình',
switchTipStart: 'Một bản sao ứng dụng mới sẽ được tạo và chuyển sang quản lý quy trình. Bản sao mới sẽ ',
switchTip: 'không thể',
switchTipEnd: ' chuyển lại quản lý cơ bản.',
switchLabel: 'Bản sao ứng dụng sẽ được tạo',
removeOriginal: 'Xóa ứng dụng gốc',
switchStart: 'Bắt đầu chuyển',
typeSelector: {
all: 'Tất cả loại',
chatbot: 'Chatbot',
agent: 'Tác nhân',
workflow: 'Quy trình',
completion: 'Hoàn thành',
advanced: 'Dòng trò chuyện',
},
tracing: {
title: 'Theo dõi hiệu suất ứng dụng',
description: 'Cấu hình nhà cung cấp LLMOps bên thứ ba và theo dõi hiệu suất ứng dụng.',
config: 'Cấu hình',
collapse: 'Thu gọn',
expand: 'Mở rộng',
tracing: 'Theo dõi',
disabled: 'Đã tắt',
disabledTip: 'Vui lòng cấu hình nhà cung cấp trước',
enabled: 'Đang hoạt động',
tracingDescription: 'Ghi lại toàn bộ ngữ cảnh thực thi ứng dụng, bao gồm các cuộc gọi LLM, ngữ cảnh, lời nhắc, yêu cầu HTTP và nhiều hơn nữa, đến một nền tảng theo dõi của bên thứ ba.',
configProviderTitle: {
configured: 'Đã cấu hình',
notConfigured: 'Cấu hình nhà cung cấp để bật theo dõi',
moreProvider: 'Thêm nhà cung cấp',
},
langsmith: {
title: 'LangSmith',
description: 'Nền tảng phát triển tất cả trong một cho mọi bước của vòng đời ứng dụng được hỗ trợ bởi LLM.',
},
langfuse: {
title: 'Langfuse',
description: 'Theo dõi, đánh giá, quản lý lời nhắc và số liệu để gỡ lỗi và cải thiện ứng dụng LLM của bạn.',
},
inUse: 'Đang sử dụng',
configProvider: {
title: 'Cấu hình ',
placeholder: 'Nhập {{key}} của bạn',
project: 'Dự án',
publicKey: 'Khóa công khai',
secretKey: 'Khóa bí mật',
viewDocsLink: 'Xem tài liệu {{key}}',
removeConfirmTitle: 'Xóa cấu hình {{key}}?',
removeConfirmContent: 'Cấu hình hiện tại đang được sử dụng, việc xóa nó sẽ tắt tính năng Theo dõi.',
},
view: 'Cảnh',
opik: {
description: 'Opik là một nền tảng mã nguồn mở để đánh giá, thử nghiệm và giám sát các ứng dụng LLM.',
title: 'Opik',
},
},
answerIcon: {
description: 'Có nên sử dụng biểu tượng WebApp để thay thế 🤖 trong ứng dụng được chia sẻ hay không',
descriptionInExplore: 'Có nên sử dụng biểu tượng WebApp để thay thế 🤖 trong Khám phá hay không',
title: 'Sử dụng biểu tượng WebApp để thay thế 🤖',
},
importFromDSLFile: 'Từ tệp DSL',
importFromDSL: 'Nhập từ DSL',
importFromDSLUrlPlaceholder: 'Dán liên kết DSL vào đây',
importFromDSLUrl: 'Từ URL',
mermaid: {
handDrawn: 'Vẽ tay',
classic: 'Cổ điển',
},
openInExplore: 'Mở trong Khám phá',
newAppFromTemplate: {
sidebar: {
Recommended: 'Khuyến cáo',
Assistant: 'Phó',
Writing: 'Văn',
Workflow: 'Quy trình làm việc',
Agent: 'Người đại lý',
Programming: 'Chương trình',
HR: 'HR',
},
searchAllTemplate: 'Tìm kiếm tất cả các mẫu...',
byCategories: 'THEO DANH MỤC',
},
showMyCreatedAppsOnly: 'Chỉ hiển thị ứng dụng do tôi tạo',
appSelector: {
params: 'THÔNG SỐ ỨNG DỤNG',
placeholder: 'Chọn một ứng dụng...',
noParams: 'Không cần thông số',
label: 'Ứng dụng',
},
}
export default translation

View File

@@ -0,0 +1,118 @@
const translation = {
currentPlan: 'Kế hoạch Hiện tại',
upgradeBtn: {
plain: 'Nâng cấp Kế hoạch',
encourage: 'Nâng cấp Ngay',
encourageShort: 'Nâng cấp',
},
viewBilling: 'Quản lý thanh toán và đăng ký',
buyPermissionDeniedTip: 'Vui lòng liên hệ với quản trị viên doanh nghiệp của bạn để đăng ký',
plansCommon: {
title: 'Chọn một kế hoạch phù hợp với bạn',
yearlyTip: 'Nhận 2 tháng miễn phí khi đăng ký hàng năm!',
mostPopular: 'Phổ biến nhất',
planRange: {
monthly: 'Hàng tháng',
yearly: 'Hàng năm',
},
month: 'tháng',
year: 'năm',
save: 'Tiết kiệm ',
free: 'Miễn phí',
currentPlan: 'Kế hoạch Hiện tại',
contractSales: 'Liên hệ bộ phận bán hàng',
contractOwner: 'Liên hệ quản lý nhóm',
startForFree: 'Bắt đầu miễn phí',
getStartedWith: 'Bắt đầu với ',
contactSales: 'Liên hệ Bán hàng',
talkToSales: 'Nói chuyện với Bộ phận Bán hàng',
modelProviders: 'Nhà cung cấp Mô hình',
teamMembers: 'Thành viên Nhóm',
buildApps: 'Xây dựng Ứng dụng',
vectorSpace: 'Không gian Vector',
vectorSpaceBillingTooltip: 'Mỗi 1MB có thể lưu trữ khoảng 1.2 triệu ký tự dữ liệu vector hóa (ước tính sử dụng OpenAI Embeddings, thay đổi tùy theo các mô hình).',
vectorSpaceTooltip: 'Không gian Vector là hệ thống bộ nhớ dài hạn cần thiết cho LLMs để hiểu dữ liệu của bạn.',
documentsUploadQuota: 'Hạn mức Tải lên Tài liệu',
documentProcessingPriority: 'Ưu tiên Xử lý Tài liệu',
documentProcessingPriorityTip: 'Để có ưu tiên xử lý tài liệu cao hơn, vui lòng nâng cấp kế hoạch của bạn.',
documentProcessingPriorityUpgrade: 'Xử lý nhiều dữ liệu với độ chính xác cao và tốc độ nhanh hơn.',
priority: {
'standard': 'Tiêu chuẩn',
'priority': 'Ưu tiên',
'top-priority': 'Ưu tiên Cao nhất',
},
logsHistory: 'Lịch sử Nhật ký',
customTools: 'Công cụ Tùy chỉnh',
unavailable: 'Không có sẵn',
days: 'ngày',
unlimited: 'Không giới hạn',
support: 'Hỗ trợ',
supportItems: {
communityForums: 'Diễn đàn cộng đồng',
emailSupport: 'Hỗ trợ qua email',
priorityEmail: 'Hỗ trợ qua email & chat ưu tiên',
logoChange: 'Thay đổi Logo',
SSOAuthentication: 'Xác thực SSO',
personalizedSupport: 'Hỗ trợ cá nhân hóa',
dedicatedAPISupport: 'Hỗ trợ API dành riêng',
customIntegration: 'Tích hợp và hỗ trợ tùy chỉnh',
ragAPIRequest: 'Yêu cầu API RAG',
bulkUpload: 'Tải lên tài liệu hàng loạt',
agentMode: 'Chế độ Đại lý',
workflow: 'Quy trình làm việc',
llmLoadingBalancing: 'Cân bằng tải LLM',
llmLoadingBalancingTooltip: 'Thêm nhiều khóa API vào mô hình, vượt qua giới hạn tốc độ API một cách hiệu quả.',
},
comingSoon: 'Sắp ra mắt',
member: 'Thành viên',
memberAfter: 'Thành viên',
messageRequest: {
title: 'Số Lượng Tin Nhắn',
tooltip: 'Hạn mức triệu hồi tin nhắn cho các kế hoạch sử dụng mô hình OpenAI (ngoại trừ gpt4). Các tin nhắn vượt quá giới hạn sẽ sử dụng Khóa API OpenAI của bạn.',
},
annotatedResponse: {
title: 'Hạn Mức Quota Phản hồi Đã được Ghi chú',
tooltip: 'Chỉnh sửa và ghi chú thủ công các phản hồi cung cấp khả năng trả lời câu hỏi chất lượng cao có thể tùy chỉnh cho các ứng dụng. (Chỉ áp dụng trong các ứng dụng trò chuyện)',
},
ragAPIRequestTooltip: 'Đề cập đến số lượng cuộc gọi API triệu hồi chỉ khả năng xử lý cơ sở kiến thức của Dify.',
receiptInfo: 'Chỉ chủ nhóm và quản trị viên nhóm có thể đăng ký và xem thông tin thanh toán',
annotationQuota: 'Hạn ngạch chú thích',
},
plans: {
sandbox: {
name: 'Hộp Cát',
description: 'Thử nghiệm miễn phí 200 lần GPT',
includesTitle: 'Bao gồm:',
},
professional: {
name: 'Chuyên nghiệp',
description: 'Dành cho cá nhân và các nhóm nhỏ để mở khóa nhiều sức mạnh với giá cả phải chăng.',
includesTitle: 'Tất cả trong kế hoạch miễn phí, cộng thêm:',
},
team: {
name: 'Nhóm',
description: 'Hợp tác mà không giới hạn và tận hưởng hiệu suất hạng nhất.',
includesTitle: 'Tất cả trong kế hoạch Chuyên nghiệp, cộng thêm:',
},
enterprise: {
name: 'Doanh nghiệp',
description: 'Nhận toàn bộ khả năng và hỗ trợ cho các hệ thống quan trọng cho nhiệm vụ quy mô lớn.',
includesTitle: 'Tất cả trong kế hoạch Nhóm, cộng thêm:',
},
},
vectorSpace: {
fullTip: 'Không gian Vector đã đầy.',
fullSolution: 'Nâng cấp kế hoạch của bạn để có thêm không gian.',
},
apps: {
fullTipLine1: 'Nâng cấp kế hoạch của bạn để',
fullTipLine2: 'xây dựng thêm ứng dụng.',
},
annotatedResponse: {
fullTipLine1: 'Nâng cấp kế hoạch của bạn để',
fullTipLine2: 'ghi chú thêm cuộc trò chuyện.',
quotaTitle: 'Hạn Mức Quota Phản hồi Đã được Ghi chú',
},
}
export default translation

View File

@@ -0,0 +1,642 @@
const translation = {
api: {
success: 'Thành công',
actionSuccess: 'Thành công',
saved: 'Đã lưu',
create: 'Tạo',
remove: 'Xóa',
},
operation: {
create: 'Tạo mới',
confirm: 'Xác nhận',
cancel: 'Hủy bỏ',
clear: 'Xóa',
save: 'Lưu',
saveAndEnable: 'Lưu & Kích hoạt',
edit: 'Chỉnh sửa',
add: 'Thêm',
added: 'Đã thêm',
refresh: 'Làm mới',
reset: 'Đặt lại',
search: 'Tìm kiếm',
change: 'Thay đổi',
remove: 'Xóa',
send: 'Gửi',
copy: 'Sao chép',
lineBreak: 'Ngắt dòng',
sure: 'Tôi chắc chắn',
download: 'Tải xuống',
delete: 'Xóa',
settings: 'Cài đặt',
setup: 'Thiết lập',
getForFree: 'Nhận miễn phí',
reload: 'Tải lại',
ok: 'OK',
log: 'Nhật ký',
learnMore: 'Tìm hiểu thêm',
params: 'Tham số',
duplicate: 'Nhân bản',
rename: 'Đổi tên',
audioSourceUnavailable: 'AudioSource không khả dụng',
copyImage: 'Sao chép hình ảnh',
zoomOut: 'Thu nhỏ',
zoomIn: 'Phóng to',
openInNewTab: 'Mở trong tab mới',
regenerate: 'Tái tạo',
close: 'Đóng',
saveAndRegenerate: 'Lưu và tạo lại các phần con',
view: 'Cảnh',
viewMore: 'XEM THÊM',
submit: 'Trình',
skip: 'Tàu',
imageCopied: 'Hình ảnh sao chép',
deleteApp: 'Xóa ứng dụng',
viewDetails: 'Xem chi tiết',
copied: 'Sao chép',
in: 'trong',
},
placeholder: {
input: 'Vui lòng nhập',
select: 'Vui lòng chọn',
},
voice: {
language: {
zhHans: 'Tiếng Trung',
zhHant: 'Tiếng Trung phồn thể',
enUS: 'Tiếng Anh',
deDE: 'Tiếng Đức',
frFR: 'Tiếng Pháp',
esES: 'Tiếng Tây Ban Nha',
itIT: 'Tiếng Ý',
thTH: 'Tiếng Thái',
idID: 'Tiếng Indonesia',
jaJP: 'Tiếng Nhật',
koKR: 'Tiếng Hàn',
ptBR: 'Tiếng Bồ Đào Nha',
ruRU: 'Tiếng Nga',
ukUA: 'Tiếng Ukraina',
viVN: 'Tiếng Việt',
plPL: 'Tiếng Ba Lan',
roRO: 'Tiếng Rumani',
hiIN: 'Tiếng Hindi',
trTR: 'Tiếng Thổ Nhĩ Kỳ',
faIR: 'Tiếng Ba Tư',
},
},
unit: {
char: 'ký tự',
},
actionMsg: {
noModification: 'Hiện không có sự thay đổi.',
modifiedSuccessfully: 'Chỉnh sửa thành công',
modifiedUnsuccessfully: 'Chỉnh sửa không thành công',
copySuccessfully: 'Đã sao chép thành công',
paySucceeded: 'Thanh toán thành công',
payCancelled: 'Thanh toán đã hủy',
generatedSuccessfully: 'Tạo thành công',
generatedUnsuccessfully: 'Tạo không thành công',
},
model: {
params: {
temperature: 'Độ sáng tạo',
temperatureTip:
'Kiểm soát độ ngẫu nhiên: Giảm độ sáng tạo dẫn đến ít kết quả ngẫu nhiên hơn. Khi độ sáng tạo gần bằng 0, mô hình sẽ trở nên xác định và lặp lại.',
top_p: 'Top P',
top_pTip:
'Kiểm soát đa dạng thông qua lấy mẫu nhân nhóm: 0.5 có nghĩa là nửa số tùy chọn có khả năng cao được xem xét.',
presence_penalty: 'Phạt sự hiện diện',
presence_penaltyTip:
'Độ lớn của sự phạt cho các token mới dựa trên việc chúng có xuất hiện trong văn bản cho đến nay hay không.\nTăng khả năng của mô hình để nói về các chủ đề mới.',
frequency_penalty: 'Phạt tần suất',
frequency_penaltyTip:
'Độ lớn của sự phạt cho các token mới dựa trên tần suất hiện tại của chúng trong văn bản cho đến nay.\nGiảm khả năng của mô hình để lặp lại cùng một dòng văn bản.',
max_tokens: 'Max token',
max_tokensTip:
'Sử dụng để giới hạn độ dài tối đa của câu trả lời, theo token. \nGiá trị lớn có thể giới hạn không gian còn lại cho từ khóa khởi đầu, nhật ký trò chuyện và Kiến thức. \nKhuyến nghị đặt giá trị dưới hai phần ba của gpt-4-1106-preview, gpt-4-vision-preview max token (đầu vào 128k đầu ra 4k)',
maxTokenSettingTip: 'Cài đặt max token của bạn quá cao, có thể hạn chế không gian cho từ khóa, truy vấn và dữ liệu. Xem xét đặt nó dưới 2/3.',
setToCurrentModelMaxTokenTip: 'Max token được cập nhật đến 80% token tối đa của mô hình hiện tại {{maxToken}}.',
stop_sequences: 'Chuỗi dừng',
stop_sequencesTip: 'Lên đến bốn chuỗi nơi API sẽ dừng việc tạo ra các token tiếp theo. Văn bản được trả về sẽ không chứa chuỗi dừng.',
stop_sequencesPlaceholder: 'Nhập chuỗi và nhấn Tab',
},
tone: {
Creative: 'Sáng tạo',
Balanced: 'Cân bằng',
Precise: 'Chính xác',
Custom: 'Tùy chỉnh',
},
addMoreModel: 'Điều chỉnh cài đặt để thêm mô hình',
settingsLink: 'Cài đặt nhà cung cấp mô hình',
capabilities: 'Khả năng đa phương thức',
},
menus: {
status: 'beta',
explore: 'Khám phá',
apps: 'Studio',
plugins: 'Plugins',
pluginsTips: 'Tích hợp các plugin bên thứ ba hoặc tạo ra các AI-Plugin tương thích với ChatGPT.',
datasets: 'Kiến thức',
datasetsTips: 'SẮP RA MẮT: Nhập dữ liệu văn bản của bạn hoặc cập nhật dữ liệu theo thời gian thực thông qua Webhook để cải thiện ngữ cảnh LLM.',
newApp: 'Ứng dụng mới',
newDataset: 'Tạo Kiến thức',
tools: 'Công cụ',
exploreMarketplace: 'Khám phá Marketplace',
},
userProfile: {
settings: 'Cài đặt',
emailSupport: 'Hỗ trợ qua Email',
workspace: 'Không gian làm việc',
createWorkspace: 'Tạo Không gian làm việc',
helpCenter: 'Trung tâm trợ giúp',
communityFeedback: 'Phản hồi',
roadmap: 'Lộ trình',
community: 'Cộng đồng',
about: 'Về chúng tôi',
logout: 'Đăng xuất',
},
settings: {
accountGroup: 'TÀI KHOẢN',
workplaceGroup: 'KHÔNG GIAN LÀM VIỆC',
account: 'Tài khoản của tôi',
members: 'Thành viên',
billing: 'Thanh toán',
integrations: 'Tích hợp',
language: 'Ngôn ngữ',
provider: 'Nhà cung cấp mô hình',
dataSource: 'Nguồn dữ liệu',
plugin: 'Plugins',
apiBasedExtension: 'Mở rộng dựa trên API',
generalGroup: 'TỔNG QUÁT',
},
account: {
avatar: 'Ảnh đại diện',
name: 'Tên',
email: 'Email',
password: 'Mật khẩu',
passwordTip: 'Bạn có thể đặt một mật khẩu cố định nếu bạn không muốn sử dụng mã đăng nhập tạm thời',
setPassword: 'Đặt mật khẩu',
resetPassword: 'Đặt lại mật khẩu',
currentPassword: 'Mật khẩu hiện tại',
newPassword: 'Mật khẩu mới',
confirmPassword: 'Xác nhận mật khẩu',
notEqual: 'Hai mật khẩu không giống nhau.',
langGeniusAccount: 'Tài khoản Dify',
langGeniusAccountTip: 'Tài khoản Dify của bạn và dữ liệu người dùng liên quan.',
editName: 'Chỉnh sửa Tên',
showAppLength: 'Hiển thị {{length}} ứng dụng',
delete: 'Xóa tài khoản',
deleteTip: 'Xóa tài khoản của bạn sẽ xóa vĩnh viễn tất cả dữ liệu của bạn và không thể khôi phục được.',
deleteConfirmTip: 'Để xác nhận, vui lòng gửi thông tin sau từ email đã đăng ký của bạn tới ',
studio: 'Dify Studio',
myAccount: 'Tài khoản của tôi',
account: 'Tài khoản',
deletePrivacyLinkTip: 'Để biết thêm thông tin về cách chúng tôi xử lý dữ liệu của bạn, vui lòng xem',
deletePrivacyLink: 'Chính sách bảo mật.',
deleteSuccessTip: 'Tài khoản của bạn cần thời gian để xóa xong. Chúng tôi sẽ gửi email cho bạn khi tất cả hoàn tất.',
deleteLabel: 'Để xác nhận, vui lòng nhập email của bạn bên dưới',
deletePlaceholder: 'Vui lòng nhập email của bạn',
sendVerificationButton: 'Gửi mã xác minh',
verificationLabel: 'Mã xác minh',
verificationPlaceholder: 'Dán mã gồm 6 chữ số',
permanentlyDeleteButton: 'Xóa vĩnh viễn tài khoản',
feedbackTitle: 'Phản hồi',
feedbackLabel: 'Hãy cho chúng tôi biết lý do tại sao bạn xóa tài khoản của mình?',
feedbackPlaceholder: 'Tùy chọn',
},
members: {
team: 'Nhóm',
invite: 'Mời',
name: 'TÊN',
lastActive: 'HOẠT ĐỘNG GẦN ĐÂY',
role: 'VAI TRÒ',
pending: 'Đang chờ...',
owner: 'Chủ sở hữu',
admin: 'Quản trị viên',
adminTip: 'Có thể xây dựng ứng dụng và quản lý cài đặt nhóm',
normal: 'Bình thường',
normalTip: 'Chỉ có thể sử dụng ứng dụng, không thể xây dựng ứng dụng',
editor: 'Biên tập viên',
editorTip: 'Có thể xây dựng ứng dụng, không thể quản lý cài đặt nhóm',
inviteTeamMember: 'Mời thành viên nhóm',
inviteTeamMemberTip: 'Sau khi đăng nhập, họ có thể truy cập trực tiếp vào dữ liệu nhóm của bạn.',
emailNotSetup: 'Máy chủ email chưa được thiết lập, vì vậy không thể gửi email mời. Vui lòng thông báo cho người dùng về liên kết mời sẽ được phát hành sau khi mời.',
email: 'Email',
emailInvalid: 'Định dạng Email không hợp lệ',
emailPlaceholder: 'Vui lòng nhập email',
sendInvite: 'Gửi Lời mời',
invitedAsRole: 'Được mời với vai trò {{role}}',
invitationSent: 'Lời mời đã được gửi',
invitationSentTip: 'Lời mời đã được gửi, và họ có thể đăng nhập vào Dify để truy cập vào dữ liệu nhóm của bạn.',
invitationLink: 'Liên kết Lời mời',
failedInvitationEmails: 'Dưới đây là danh sách email không gửi được lời mời',
ok: 'OK',
removeFromTeam: 'Xóa khỏi nhóm',
removeFromTeamTip: 'Sẽ xóa quyền truy cập nhóm',
setAdmin: 'Đặt làm quản trị viên',
setMember: 'Đặt thành viên bình thường',
setEditor: 'Đặt làm biên tập viên',
disInvite: 'Hủy lời mời',
deleteMember: 'Xóa thành viên',
you: '(Bạn)',
datasetOperatorTip: 'Chỉ có thể quản lý cơ sở kiến thức',
builderTip: 'Có thể xây dựng và chỉnh sửa ứng dụng của riêng mình',
builder: 'Chủ thầu',
datasetOperator: 'Quản trị viên kiến thức',
setBuilder: 'Đặt làm trình tạo',
},
integrations: {
connected: 'Đã kết nối',
google: 'Google',
googleAccount: 'Đăng nhập bằng tài khoản Google',
github: 'GitHub',
githubAccount: 'Đăng nhập bằng tài khoản GitHub',
connect: 'Kết nối',
},
language: {
displayLanguage: 'Ngôn ngữ hiển thị',
timezone: 'Múi giờ',
},
provider: {
apiKey: 'Khóa API',
enterYourKey: 'Nhập khóa API của bạn ở đây',
invalidKey: 'Khóa API OpenAI không hợp lệ',
validatedError: 'Xác minh thất bại: ',
validating: 'Đang xác minh khóa...',
saveFailed: 'Lưu khóa API thất bại',
apiKeyExceedBill: 'Khóa API này không có lượng truy vấn khả dụng, vui lòng đọc',
addKey: 'Thêm Khóa',
comingSoon: 'Sắp Ra Mắt',
editKey: 'Chỉnh sửa',
invalidApiKey: 'Khóa API không hợp lệ',
azure: {
apiBase: 'Cơ sở API',
apiBasePlaceholder: 'URL cơ sở API của điểm cuối Azure OpenAI của bạn.',
apiKey: 'Khóa API',
apiKeyPlaceholder: 'Nhập khóa API của bạn ở đây',
helpTip: 'Tìm hiểu Dịch vụ Azure OpenAI',
},
openaiHosted: {
openaiHosted: 'OpenAI đang lưu trữ',
onTrial: 'DÙNG THỬ',
exhausted: 'HẾT QUOTA',
desc: 'Dịch vụ lưu trữ OpenAI được cung cấp bởi Dify cho phép bạn sử dụng các mô hình như GPT-3.5. Trước khi hết lượng truy vấn dùng thử, bạn cần thiết lập các nhà cung cấp mô hình khác.',
callTimes: 'Số lần gọi',
usedUp: 'Quota dùng thử đã hết. Thêm nhà cung cấp Mô hình của riêng bạn.',
useYourModel: 'Hiện đang sử dụng nhà cung cấp Mô hình của riêng bạn.',
close: 'Đóng',
},
anthropicHosted: {
anthropicHosted: 'Anthropic Claude',
onTrial: 'DÙNG THỬ',
exhausted: 'HẾT QUOTA',
desc: 'Mô hình mạnh mẽ, vượt trội trong một loạt các nhiệm vụ từ trò chuyện phức tạp và tạo nội dung sáng tạo đến hướng dẫn chi tiết.',
callTimes: 'Số lần gọi',
usedUp: 'Quota dùng thử đã hết. Thêm nhà cung cấp Mô hình của riêng bạn.',
useYourModel: 'Hiện đang sử dụng nhà cung cấp Mô hình của riêng bạn.',
close: 'Đóng',
trialQuotaTip: 'Hạn ngạch dùng thử Anthropic của bạn sẽ hết hạn vào 2025/03/11 và sẽ không còn khả dụng sau đó. Vui lòng sử dụng nó kịp thời.',
},
anthropic: {
using: 'Khả năng nhúng đang sử dụng',
enableTip: 'Để kích hoạt mô hình Anthrop, bạn cần ràng buộc với Dịch vụ OpenAI hoặc Azure OpenAI trước.',
notEnabled: 'Chưa được kích hoạt',
keyFrom: 'Nhận khóa API của bạn từ Anthrop',
},
encrypted: {
front: 'Khóa API của bạn sẽ được mã hóa và lưu trữ bằng',
back: ' công nghệ.',
},
},
modelProvider: {
notConfigured: 'Mô hình hệ thống vẫn chưa được cấu hình hoàn toàn và một số chức năng có thể không khả dụng.',
systemModelSettings: 'Cài đặt Mô hình Hệ thống',
systemModelSettingsLink: 'Tại sao cần thiết phải thiết lập mô hình hệ thống?',
selectModel: 'Chọn mô hình của bạn',
setupModelFirst: 'Vui lòng thiết lập mô hình của bạn trước',
systemReasoningModel: {
key: 'Mô hình lập luận hệ thống',
tip: 'Thiết lập mô hình suy luận mặc định sẽ được sử dụng để tạo ứng dụng. Các tính năng như tạo tên cuộc trò chuyện và đề xuất câu hỏi tiếp theo cũng sẽ sử dụng mô hình suy luận mặc định này.',
},
embeddingModel: {
key: 'Mô hình nhúng',
tip: 'Thiết lập mô hình mặc định cho việc xử lý nhúng tài liệu của Kiến thức, cả hai phương tiện truy xuất và nhập của Kiến thức đều sử dụng mô hình nhúng này cho xử lý vector hóa. Chuyển đổi sẽ làm cho kích thước vector giữa Kiến thức được nhập và câu hỏi không nhất quán, dẫn đến việc truy xuất thất bại. Để tránh truy xuất thất bại, vui lòng không chuyển đổi mô hình này tùy ý.',
required: 'Mô hình nhúng là bắt buộc',
},
speechToTextModel: {
key: 'Mô hình Chuyển đổi Văn bản thành Tiếng nói',
tip: 'Thiết lập mô hình mặc định cho đầu vào chuyển đổi tiếng nói thành văn bản trong cuộc trò chuyện.',
},
ttsModel: {
key: 'Mô hình Văn bản thành Tiếng nói',
tip: 'Thiết lập mô hình mặc định cho đầu vào văn bản thành tiếng nói trong cuộc trò chuyện.',
},
rerankModel: {
key: 'Mô hình Sắp xếp lại',
tip: 'Mô hình sắp xếp lại sẽ sắp xếp lại danh sách tài liệu ứng cử viên dựa trên sự phù hợp ngữ nghĩa với truy vấn của người dùng, cải thiện kết quả của việc xếp hạng ngữ nghĩa',
},
quota: 'Hạn mức',
searchModel: 'Mô hình tìm kiếm',
noModelFound: 'Không tìm thấy mô hình cho {{model}}',
models: 'Mô hình',
showMoreModelProvider: 'Hiển thị thêm nhà cung cấp mô hình',
selector: {
tip: 'Mô hình này đã bị xóa. Vui lòng thêm một mô hình hoặc chọn mô hình khác.',
emptyTip: 'Không có mô hình khả dụng',
emptySetting: 'Vui lòng vào cài đặt để cấu hình',
rerankTip: 'Vui lòng thiết lập mô hình sắp xếp lại',
},
card: {
quota: 'QUOTA',
onTrial: 'Thử nghiệm',
paid: 'Đã thanh toán',
quotaExhausted: 'Quota đã hết',
callTimes: 'Số lần gọi',
tokens: 'Tokens',
buyQuota: 'Mua Quota',
priorityUse: 'Ưu tiên sử dụng',
removeKey: 'Remove API Key',
tip: 'Ưu tiên sẽ được trao cho hạn ngạch đã thanh toán. Hạn ngạch dùng thử sẽ được sử dụng sau khi hết hạn ngạch trả phí.',
},
item: {
deleteDesc: 'Các mô hình {{modelName}} đang được sử dụng như là các mô hình lập luận hệ thống. Một số chức năng sẽ không khả dụng sau khi loại bỏ. Vui lòng xác nhận.',
freeQuota: 'QUYỀN LỢI MIỄN PHÍ',
},
addApiKey: 'Thêm khóa API của bạn',
invalidApiKey: 'Khóa API không hợp lệ',
encrypted: {
front: 'Khóa API CỦA BẠN sẽ được mã hóa và lưu trữ bằng',
back: ' công nghệ.',
},
freeQuota: {
howToEarn: 'Cách kiếm',
},
addMoreModelProvider: 'THÊM NHÀ CUNG CẤP MÔ HÌNH',
addModel: 'Thêm Mô hình',
modelsNum: '{{num}} Mô hình',
showModels: 'Hiện Mô hình',
showModelsNum: 'Hiện {{num}} Mô hình',
collapse: 'Thu gọn',
config: 'Cấu hình',
modelAndParameters: 'Mô hình và Tham số',
model: 'Mô hình',
featureSupported: '{{feature}} được hỗ trợ',
callTimes: 'Số lần gọi',
credits: 'Tín dụng Tin nhắn',
buyQuota: 'Mua Quyền lợi',
getFreeTokens: 'Nhận mã thông báo miễn phí',
priorityUsing: 'Ưu tiên sử dụng',
deprecated: 'Đã lỗi thời',
confirmDelete: 'Xác nhận xóa?',
quotaTip: 'Số lượng mã thông báo miễn phí còn lại',
loadPresets: 'Tải Cài đặt trước',
parameters: 'THAM SỐ',
loadBalancingHeadline: 'Cân bằng tải',
loadBalancing: 'Cân bằng tải',
configLoadBalancing: 'Cấu hình cân bằng tải',
defaultConfig: 'Cấu hình mặc định',
modelHasBeenDeprecated: 'Mô hình này đã bị phản đối',
providerManagedDescription: 'Sử dụng bộ thông tin đăng nhập duy nhất do nhà cung cấp mô hình cung cấp.',
apiKeyStatusNormal: 'Trạng thái APIKey bình thường',
editConfig: 'Chỉnh sửa cấu hình',
loadBalancingInfo: 'Theo mặc định, cân bằng tải sử dụng chiến lược Vòng tròn. Nếu giới hạn tốc độ được kích hoạt, thời gian hồi chiêu 1 phút sẽ được áp dụng.',
addConfig: 'Thêm cấu hình',
loadBalancingDescription: 'Giảm áp lực với nhiều bộ thông tin xác thực.',
apiKey: 'KHÓA API',
providerManaged: 'Nhà cung cấp được quản lý',
apiKeyRateLimit: 'Đã đạt đến giới hạn tốc độ, có sẵn sau {{giây}} giây',
upgradeForLoadBalancing: 'Nâng cấp gói của bạn để bật Cân bằng tải.',
loadBalancingLeastKeyWarning: 'Để bật cân bằng tải, ít nhất 2 phím phải được bật.',
toBeConfigured: 'Được cấu hình',
emptyProviderTitle: 'Nhà cung cấp mô hình chưa được thiết lập',
discoverMore: 'Khám phá thêm trong',
emptyProviderTip: 'Vui lòng cài đặt nhà cung cấp mô hình trước.',
installProvider: 'Cài đặt nhà cung cấp mô hình',
configureTip: 'Thiết lập api-key hoặc thêm mô hình để sử dụng',
},
dataSource: {
add: 'Thêm nguồn dữ liệu',
connect: 'Kết nối',
notion: {
title: 'Notion',
description: 'Sử dụng Notion như một nguồn dữ liệu cho Kiến thức.',
connectedWorkspace: 'Không gian làm việc đã kết nối',
addWorkspace: 'Thêm không gian làm việc',
connected: 'Đã kết nối',
disconnected: 'Đã ngắt kết nối',
changeAuthorizedPages: 'Thay đổi trang được ủy quyền',
pagesAuthorized: 'Các trang được ủy quyền',
sync: 'Đồng bộ',
remove: 'Xóa',
selector: {
pageSelected: 'Các trang đã chọn',
searchPages: 'Tìm kiếm trang...',
noSearchResult: 'Không có kết quả tìm kiếm',
addPages: 'Thêm trang',
preview: 'Xem trước',
},
},
website: {
title: 'Trang mạng',
inactive: 'Không hoạt động',
with: 'Với',
active: 'Hoạt động',
configuredCrawlers: 'Trình thu thập thông tin đã định cấu hình',
description: 'Nhập nội dung từ các trang web bằng trình thu thập dữ liệu web.',
},
configure: 'Cấu hình',
},
plugin: {
serpapi: {
apiKey: 'Khóa API',
apiKeyPlaceholder: 'Nhập khóa API của bạn',
keyFrom: 'Nhận khóa SerpAPI của bạn từ Trang tài khoản SerpAPI',
},
},
apiBasedExtension: {
title: 'Các tiện ích API cung cấp quản lý API tập trung, giúp cấu hình dễ dàng sử dụng trên các ứng dụng của Dify.',
link: 'Tìm hiểu cách phát triển Phần mở rộng API của riêng bạn.',
linkUrl: 'https://docs.dify.ai/features/extension/api_based_extension',
add: 'Thêm Phần mở rộng API',
selector: {
title: 'Phần mở rộng API',
placeholder: 'Vui lòng chọn phần mở rộng API',
manage: 'Quản lý Phần mở rộng API',
},
modal: {
title: 'Thêm Phần mở rộng API',
editTitle: 'Chỉnh sửa Phần mở rộng API',
name: {
title: 'Tên',
placeholder: 'Vui lòng nhập tên',
},
apiEndpoint: {
title: 'Điểm cuối API',
placeholder: 'Vui lòng nhập điểm cuối API',
},
apiKey: {
title: 'Khóa API',
placeholder: 'Vui lòng nhập khóa API',
lengthError: 'Độ dài khóa API không được nhỏ hơn 5 ký tự',
},
},
type: 'Loại',
},
about: {
changeLog: 'Nhật ký thay đổi',
updateNow: 'Cập nhật ngay',
nowAvailable: 'Dify {{version}} hiện đã có sẵn.',
latestAvailable: 'Dify {{version}} là phiên bản mới nhất hiện có.',
},
appMenus: {
overview: 'Giám sát',
promptEng: 'Orchestrate',
apiAccess: 'Truy cập API',
logAndAnn: 'Nhật ký & Thông báo',
logs: 'Nhật ký',
},
environment: {
testing: 'TESTING',
development: 'DEVELOPMENT',
},
appModes: {
completionApp: 'Ứng dụng Tạo văn bản',
chatApp: 'Ứng dụng Trò chuyện',
},
datasetMenus: {
documents: 'Tài liệu',
hitTesting: 'Kiểm tra truy vấn',
settings: 'Cài đặt',
emptyTip: 'Kiến thức chưa được liên kết, vui lòng đi đến ứng dụng hoặc plug-in để hoàn thành liên kết.',
viewDoc: 'Xem tài liệu',
relatedApp: 'các ứng dụng liên kết',
noRelatedApp: 'Không có ứng dụng được liên kết',
},
voiceInput: {
speaking: 'Hãy nói...',
converting: 'Chuyển đổi thành văn bản...',
notAllow: 'micro không được ủy quyền',
},
modelName: {
'gpt-3.5-turbo': 'GPT-3.5-Turbo',
'gpt-3.5-turbo-16k': 'GPT-3.5-Turbo-16K',
'gpt-4': 'GPT-4',
'gpt-4-32k': 'GPT-4-32K',
'text-davinci-003': 'Text-Davinci-003',
'text-embedding-ada-002': 'Text-Embedding-Ada-002',
'whisper-1': 'Whisper-1',
'claude-instant-1': 'Claude-Instant',
'claude-2': 'Claude-2',
},
chat: {
renameConversation: 'Đổi tên Cuộc trò chuyện',
conversationName: 'Tên cuộc trò chuyện',
conversationNamePlaceholder: 'Vui lòng nhập tên cuộc trò chuyện',
conversationNameCanNotEmpty: 'Yêu cầu nhập tên cuộc trò chuyện',
citation: {
title: 'THAM KHẢO',
linkToDataset: 'Liên kết tới Kiến thức',
characters: 'Ký tự:',
hitCount: 'Số lượt truy xuất:',
vectorHash: 'Vector hash:',
hitScore: 'Điểm truy xuất:',
},
inputPlaceholder: 'Nói chuyện với Bot',
thought: 'Tư duy',
thinking: 'Suy nghĩ...',
},
promptEditor: {
placeholder: 'Viết từ khóa của bạn ở đây, nhập \'{\' để chèn một biến, nhập \'/\' để chèn một khối nội dung nhắc nhở',
context: {
item: {
title: 'Bối cảnh',
desc: 'Chèn mẫu bối cảnh',
},
modal: {
title: '{{num}} Kiến thức trong Bối cảnh',
add: 'Thêm Bối cảnh',
footer: 'Bạn có thể quản lý các bối cảnh trong phần Bối cảnh bên dưới.',
},
},
history: {
item: {
title: 'Lịch sử Cuộc trò chuyện',
desc: 'Chèn mẫu tin nhắn lịch sử',
},
modal: {
title: 'VÍ DỤ',
user: 'Xin chào',
assistant: 'Xin chào! Tôi có thể giúp gì cho bạn hôm nay?',
edit: 'Chỉnh sửa Tên Vai trò Cuộc trò chuyện',
},
},
variable: {
item: {
title: 'Biến & Công cụ Bên ngoài',
desc: 'Chèn Biến & Công cụ Bên ngoài',
},
outputToolDisabledItem: {
title: 'Công cụ Bên ngoài',
desc: 'Công cụ Bên ngoài không thể chèn vào đây',
},
modal: {
add: 'Biến mới',
addTool: 'Công cụ mới',
},
},
query: {
item: {
title: 'Truy vấn',
desc: 'Chèn mẫu truy vấn người dùng',
},
},
existed: 'Đã tồn tại trong tin nhắn',
},
imageUploader: {
uploadFromComputer: 'Tải lên từ Máy tính',
uploadFromComputerReadError: 'Đọc ảnh thất bại, vui lòng thử lại.',
uploadFromComputerUploadError: 'Tải ảnh lên thất bại, vui lòng tải lên lại.',
uploadFromComputerLimit: 'Ảnh tải lên không được vượt quá {{size}} MB',
pasteImageLink: 'Dán liên kết ảnh',
pasteImageLinkInputPlaceholder: 'Dán liên kết ảnh ở đây',
pasteImageLinkInvalid: 'Liên kết ảnh không hợp lệ',
imageUpload: 'Tải ảnh lên',
},
tag: {
placeholder: 'Tất cả các thẻ',
addNew: 'Thêm thẻ mới',
noTag: 'Không có thẻ',
noTagYet: 'Chưa có thẻ',
addTag: 'thêm thẻ',
editTag: 'Chỉnh sửa thẻ',
manageTags: 'Quản lý thẻ',
selectorPlaceholder: 'Nhập để tìm kiếm hoặc tạo',
create: 'Tạo',
delete: 'Xóa thẻ',
deleteTip: 'Thẻ đang được sử dụng, xóa nó đi?',
created: 'Thẻ được tạo thành công',
failed: 'Tạo thẻ không thành công',
},
errorMsg: {
fieldRequired: '{{trường}} là bắt buộc',
urlError: 'URL phải bắt đầu bằng http:// hoặc https://',
},
fileUploader: {
uploadFromComputer: 'Tải lên cục bộ',
pasteFileLink: 'Dán liên kết tệp',
pasteFileLinkInputPlaceholder: 'Nhập URL...',
uploadFromComputerLimit: 'Tải lên tệp không được vượt quá {{size}}',
fileExtensionNotSupport: 'Phần mở rộng tệp không được hỗ trợ',
pasteFileLinkInvalid: 'Liên kết tệp không hợp lệ',
uploadFromComputerUploadError: 'Tải lên tệp không thành công, vui lòng tải lên lại.',
uploadFromComputerReadError: 'Đọc tệp không thành công, vui lòng thử lại.',
},
license: {
expiring_plural: 'Hết hạn sau {{count}} ngày',
expiring: 'Hết hạn trong một ngày',
},
pagination: {
perPage: 'Mục trên mỗi trang',
},
}
export default translation

View File

@@ -0,0 +1,30 @@
const translation = {
custom: 'Tùy chỉnh',
upgradeTip: {
prefix: 'Nâng cấp gói của bạn để',
suffix: 'tùy chỉnh thương hiệu.',
},
webapp: {
title: 'Tùy chỉnh thương hiệu WebApp',
removeBrand: 'Xóa "Được hỗ trợ bởi Dify"',
changeLogo: 'Thay đổi logo "Được hỗ trợ bởi"',
changeLogoTip: 'Định dạng SVG hoặc PNG với kích thước tối thiểu 40x40px',
},
app: {
title: 'Tùy chỉnh thương hiệu tiêu đề ứng dụng',
changeLogoTip: 'Định dạng SVG hoặc PNG với kích thước tối thiểu 80x80px',
},
upload: 'Tải lên',
uploading: 'Đang tải lên',
uploadedFail: 'Tải ảnh lên thất bại, vui lòng thử lại.',
change: 'Thay đổi',
apply: 'Áp dụng',
restore: 'Khôi phục mặc định',
customize: {
contactUs: 'liên hệ với chúng tôi',
prefix: 'Để tùy chỉnh logo thương hiệu trong ứng dụng, vui lòng',
suffix: 'để nâng cấp lên phiên bản Doanh nghiệp.',
},
}
export default translation

View File

@@ -0,0 +1,205 @@
const translation = {
steps: {
header: {
creation: 'Tạo Kiến thức',
update: 'Thêm dữ liệu',
fallbackRoute: 'Kiến thức',
},
one: 'Chọn nguồn dữ liệu',
two: 'Tiền xử lý và làm sạch văn bản',
three: 'Thực hiện và hoàn thành',
},
error: {
unavailable: 'Kiến thức này không khả dụng',
},
stepOne: {
filePreview: 'Xem trước tệp',
pagePreview: 'Xem trước trang',
dataSourceType: {
file: 'Nhập từ tệp văn bản',
notion: 'Đồng bộ từ Notion',
web: 'Đồng bộ từ trang web',
},
uploader: {
title: 'Tải lên tệp văn bản',
button: 'Kéo và thả tệp, hoặc',
browse: 'Chọn tệp',
tip: 'Hỗ trợ {{supportTypes}}. Tối đa {{size}}MB mỗi tệp.',
validation: {
typeError: 'Loại tệp không được hỗ trợ',
size: 'Tệp quá lớn. Tối đa là {{size}}MB',
count: 'Không hỗ trợ tải lên nhiều tệp',
filesNumber: 'Bạn đã đạt đến giới hạn tải lên lô của {{filesNumber}} tệp.',
},
cancel: 'Hủy',
change: 'Thay đổi',
failed: 'Tải lên thất bại',
},
notionSyncTitle: 'Notion chưa được kết nối',
notionSyncTip: 'Để đồng bộ với Notion, trước tiên cần thiết lập kết nối với Notion.',
connect: 'Đi đến kết nối',
button: 'tiếp theo',
emptyDatasetCreation: 'Tôi muốn tạo Kiến thức trống',
modal: {
title: 'Tạo Kiến thức trống',
tip: 'Một Kiến thức trống sẽ không chứa tài liệu nào, và bạn có thể tải lên tài liệu bất kỳ lúc nào.',
input: 'Tên Kiến thức',
placeholder: 'Vui lòng nhập',
nameNotEmpty: 'Tên không thể để trống',
nameLengthInvalid: 'Tên phải từ 1 đến 40 ký tự',
cancelButton: 'Hủy',
confirmButton: 'Tạo',
failed: 'Tạo thất bại',
},
website: {
fireCrawlNotConfigured: 'Firecrawl không được cấu hình',
limit: 'Giới hạn',
run: 'Chạy',
firecrawlDoc: 'Tài liệu Firecrawl',
fireCrawlNotConfiguredDescription: 'Định cấu hình Firecrawl bằng khóa API để sử dụng.',
configure: 'Cấu hình',
scrapTimeInfo: 'Tổng cộng {{tổng}} trang được thu thập trong vòng {{thời gian}}',
options: 'Tùy chọn',
unknownError: 'Lỗi không xác định',
extractOnlyMainContent: 'Chỉ trích xuất nội dung chính (không có đầu trang, điều hướng, chân trang, v.v.)',
exceptionErrorTitle: 'Một ngoại lệ xảy ra trong khi chạy tác vụ Firecrawl:',
firecrawlDocLink: 'https://docs.dify.ai/guides/knowledge-base/sync-from-website',
selectAll: 'Chọn tất cả',
firecrawlTitle: 'Trích xuất nội dung web bằng 🔥Firecrawl',
totalPageScraped: 'Tổng số trang được cạo:',
excludePaths: 'Loại trừ đường dẫn',
includeOnlyPaths: 'Chỉ bao gồm đường dẫn',
maxDepth: 'Độ sâu tối đa',
preview: 'Download',
resetAll: 'Đặt lại tất cả',
crawlSubPage: 'Thu thập dữ liệu các trang phụ',
maxDepthTooltip: 'Độ sâu tối đa cần thu thập dữ liệu so với URL đã nhập. Độ sâu 0 chỉ cần cạo trang của url đã nhập, độ sâu 1 cạo url và mọi thứ sau khi nhậpURL + một /, v.v.',
jinaReaderTitle: 'Chuyển đổi toàn bộ trang web thành Markdown',
jinaReaderDoc: 'Tìm hiểu thêm về Jina Reader',
useSitemap: 'Sử dụng sơ đồ trang web',
chooseProvider: 'Chọn nhà cung cấp',
jinaReaderDocLink: 'https://jina.ai/reader',
jinaReaderNotConfigured: 'Jina Reader không được cấu hình',
jinaReaderNotConfiguredDescription: 'Thiết lập Jina Reader bằng cách nhập khóa API miễn phí của bạn để truy cập.',
useSitemapTooltip: 'Thực hiện theo sơ đồ trang web để thu thập dữ liệu trang web. Nếu không, Jina Reader sẽ thu thập dữ liệu lặp đi lặp lại dựa trên mức độ liên quan của trang, mang lại ít trang hơn nhưng chất lượng cao hơn.',
},
cancel: 'Hủy',
},
stepTwo: {
segmentation: 'Cài đặt phân đoạn',
auto: 'Tự động',
autoDescription: 'Tự động thiết lập quy tắc phân đoạn và tiền xử lý. Khuyến nghị cho người dùng mới.',
custom: 'Tùy chỉnh',
customDescription: 'Tùy chỉnh quy tắc phân đoạn, độ dài đoạn và quy tắc tiền xử lý, v.v.',
separator: 'Ký tự phân đoạn',
separatorPlaceholder: 'Ví dụ, dòng mới (\\\\n) hoặc ký tự đặc biệt (như "***")',
maxLength: 'Độ dài tối đa của đoạn',
overlap: 'Độ chồng lấp đoạn',
overlapTip: 'Thiết lập chồng lấp đoạn có thể duy trì sự liên quan ngữ nghĩa giữa chúng, tăng cường hiệu quả truy xuất. Đề xuất thiết lập từ 10% đến 25% của kích thước đoạn tối đa.',
overlapCheck: 'Độ chồng lấp đoạn không nên lớn hơn độ dài tối đa của đoạn',
rules: 'Quy tắc tiền xử lý văn bản',
removeExtraSpaces: 'Thay thế khoảng trắng liên tục, dòng mới và tab',
removeUrlEmails: 'Xóa tất cả URL và địa chỉ email',
removeStopwords: 'Loại bỏ các từ dừng như "một", "và", "những"',
preview: 'Xác nhận & Xem trước',
reset: 'Đặt lại',
indexMode: 'Chế độ chỉ mục',
qualified: 'Chất lượng cao',
recommend: 'Khuyến nghị',
qualifiedTip: 'Sử dụng giao diện nhúng hệ thống mặc định để xử lý, cung cấp độ chính xác cao hơn khi người dùng truy vấn.',
warning: 'Vui lòng thiết lập khóa API nhà cung cấp mô hình trước.',
click: 'Đi đến cài đặt',
economical: 'Tiết kiệm',
economicalTip: 'Sử dụng các động cơ vector ngoại tuyến, chỉ mục từ khóa, v.v. để giảm độ chính xác mà không tốn token',
QATitle: 'Phân đoạn theo định dạng Câu hỏi & Trả lời',
QATip: 'Bật tùy chọn này sẽ tiêu tốn thêm token',
QALanguage: 'Phân đoạn bằng',
estimateCost: 'Ước tính',
estimateSegment: 'Số đoạn ước tính',
segmentCount: 'đoạn',
calculating: 'Đang tính toán...',
fileSource: 'Tiền xử lý tài liệu',
notionSource: 'Tiền xử lý trang',
other: 'và ',
fileUnit: ' tệp',
notionUnit: ' trang',
previousStep: 'Quay lại',
nextStep: 'Lưu & Xử lý',
save: 'Lưu & Xử lý',
cancel: 'Hủy',
sideTipTitle: 'Tại sao phải phân đoạn và tiền xử lý?',
sideTipP1: 'Khi xử lý dữ liệu văn bản, phân đoạn và làm sạch là hai bước tiền xử lý quan trọng.',
sideTipP2: 'Phân đoạn chia nhỏ văn bản dài thành các đoạn để mô hình hiểu được tốt hơn. Điều này cải thiện chất lượng và tính liên quan của kết quả mô hình.',
sideTipP3: 'Làm sạch loại bỏ các ký tự và định dạng không cần thiết, làm cho Kiến thức trở nên sạch sẽ và dễ dàng phân tích hơn.',
sideTipP4: 'Phân đoạn và làm sạch đúng cách cải thiện hiệu suất của mô hình, cung cấp kết quả chính xác và có giá trị hơn.',
previewTitle: 'Xem trước',
previewTitleButton: 'Xem trước',
previewButton: 'Chuyển sang dạng Câu hỏi & Trả lời',
previewSwitchTipStart: 'Xem trước đoạn hiện tại đang ở định dạng văn bản, chuyển sang xem trước dạng câu hỏi và trả lời sẽ',
previewSwitchTipEnd: ' tiêu tốn thêm token',
characters: 'ký tự',
indexSettingTip: 'Để thay đổi phương pháp chỉ mục, vui lòng đi tới ',
retrievalSettingTip: 'Để thay đổi phương pháp truy xuất, vui lòng đi tới ',
datasetSettingLink: 'cài đặt Kiến thức.',
websiteSource: 'Trang web tiền xử lý',
webpageUnit: 'Trang',
separatorTip: 'Dấu phân cách là ký tự được sử dụng để phân tách văn bản. \\n\\n và \\n là dấu phân cách thường được sử dụng để tách các đoạn văn và dòng. Kết hợp với dấu phẩy (\\n\\n,\\n), các đoạn văn sẽ được phân đoạn theo các dòng khi vượt quá độ dài đoạn tối đa. Bạn cũng có thể sử dụng dấu phân cách đặc biệt do chính bạn xác định (ví dụ: ***).',
maxLengthCheck: 'Chiều dài đoạn tối đa phải nhỏ hơn {{limit}}',
fullDocTip: 'Toàn bộ tài liệu được sử dụng làm phần cha và được truy xuất trực tiếp. Xin lưu ý rằng vì lý do hiệu suất, văn bản vượt quá 10000 mã thông báo sẽ tự động bị cắt bớt.',
parentChild: 'Cha mẹ-con cái',
general: 'Tổng quát',
parentChildTip: 'Khi sử dụng chế độ cha-con, phần con được sử dụng để truy xuất và phần cha được sử dụng để gọi lại dưới dạng ngữ cảnh.',
fullDoc: 'Tài liệu đầy đủ',
notAvailableForQA: 'Không có sẵn cho Chỉ số Hỏi & Đáp',
notAvailableForParentChild: 'Không có sẵn cho Chỉ số cha mẹ-con',
previewChunk: 'Xem trước Chunk',
previewChunkTip: 'Nhấp vào nút \'Preview Chunk\' ở bên trái để tải bản xem trước',
childChunkForRetrieval: 'Child-chunk để truy xuất',
highQualityTip: 'Sau khi hoàn tất việc nhúng ở chế độ Chất lượng cao, không thể hoàn nguyên về chế độ Tiết kiệm.',
useQALanguage: 'Chunk sử dụng định dạng Q & A trong',
generalTip: 'Chế độ phân đoạn văn bản chung, các đoạn được truy xuất và gọi lại là như nhau.',
qaSwitchHighQualityTipTitle: 'Định dạng Q & A yêu cầu phương pháp lập chỉ mục chất lượng cao',
qaSwitchHighQualityTipContent: 'Hiện tại, chỉ có phương pháp chỉ mục chất lượng cao mới hỗ trợ phân đoạn định dạng Q&A. Bạn có muốn chuyển sang chế độ chất lượng cao không?',
switch: 'Chuyển',
paragraph: 'Đoạn',
parentChunkForContext: 'Parent-chunk cho ngữ cảnh',
previewChunkCount: '{{đếm}} Khối ước tính',
parentChildDelimiterTip: 'Dấu phân cách là ký tự được sử dụng để phân tách văn bản. \\n\\n được khuyến nghị để chia tài liệu gốc thành các phần lớn của cha mẹ. Bạn cũng có thể sử dụng các dấu phân cách đặc biệt do chính bạn xác định.',
parentChildChunkDelimiterTip: 'Dấu phân cách là ký tự được sử dụng để phân tách văn bản. \\n được khuyến nghị để chia các chunk cha thành các chunk con nhỏ. Bạn cũng có thể sử dụng các dấu phân cách đặc biệt do chính bạn xác định.',
paragraphTip: 'Chế độ này chia văn bản thành các đoạn văn dựa trên dấu phân cách và độ dài khối tối đa, sử dụng văn bản được tách làm phần gốc để truy xuất.',
},
stepThree: {
creationTitle: '🎉 Kiến thức đã được tạo',
creationContent: 'Chúng tôi đã tự động đặt tên cho Kiến thức, bạn có thể sửa đổi nó bất kỳ lúc nào',
label: 'Tên Kiến thức',
additionTitle: '🎉 Tài liệu đã được tải lên',
additionP1: 'Tài liệu đã được tải lên Kiến thức',
additionP2: ', bạn có thể tìm thấy nó trong danh sách tài liệu của Kiến thức.',
stop: 'Dừng xử lý',
resume: 'Tiếp tục xử lý',
navTo: 'Đi đến tài liệu',
sideTipTitle: 'Tiếp theo là gì',
sideTipContent: 'Sau khi tài liệu hoàn thành chỉ mục, Kiến thức có thể được tích hợp vào ứng dụng như một ngữ cảnh, bạn có thể tìm cài đặt ngữ cảnh trong trang điều chỉnh prompt. Bạn cũng có thể tạo nó như một plugin chỉ mục ChatGPT độc lập để phát hành.',
modelTitle: 'Bạn có chắc chắn muốn dừng việc nhúng?',
modelContent: 'Nếu bạn cần tiếp tục xử lý sau này, bạn sẽ tiếp tục từ vị trí bạn đã dừng lại.',
modelButtonConfirm: 'Xác nhận',
modelButtonCancel: 'Hủy',
},
firecrawl: {
getApiKeyLinkText: 'Lấy khóa API của bạn từ firecrawl.dev',
configFirecrawl: 'Định cấu hình 🔥Firecrawl',
apiKeyPlaceholder: 'Khóa API từ firecrawl.dev',
},
jinaReader: {
getApiKeyLinkText: 'Nhận khóa API miễn phí của bạn tại jina.ai',
configJinaReader: 'Định cấu hình Jina Reader',
apiKeyPlaceholder: 'Khóa API từ jina.ai',
},
otherDataSource: {
title: 'Kết nối với các nguồn dữ liệu khác?',
description: 'Hiện tại, cơ sở tri thức của Dify chỉ có nguồn dữ liệu hạn chế. Đóng góp nguồn dữ liệu vào cơ sở kiến thức Dify là một cách tuyệt vời để giúp nâng cao tính linh hoạt và sức mạnh của nền tảng cho tất cả người dùng. Hướng dẫn đóng góp của chúng tôi giúp bạn dễ dàng bắt đầu. Vui lòng nhấp vào liên kết bên dưới để tìm hiểu thêm.',
learnMore: 'Tìm hiểu thêm',
},
}
export default translation

View File

@@ -0,0 +1,394 @@
const translation = {
list: {
title: 'Tài liệu',
desc: 'Tất cả các tệp của Kiến thức được hiển thị ở đây. Toàn bộ Kiến thức có thể được liên kết với trích dẫn của Dify hoặc được lập chỉ mục thông qua plugin Chat.',
addFile: 'Thêm tệp',
addPages: 'Thêm trang',
table: {
header: {
fileName: 'TÊN TỆP',
words: 'SỐ TỪ',
hitCount: 'SỐ LẦN TRUY VẤN',
uploadTime: 'THỜI GIAN TẢI LÊN',
status: 'TRẠNG THÁI',
action: 'THAO TÁC',
chunkingMode: 'CHẾ ĐỘ CHUNKING',
},
rename: 'Rename',
name: 'Tên',
},
action: {
uploadFile: 'Tải lên tệp mới',
settings: 'Cài đặt phân đoạn',
addButton: 'Thêm đoạn',
add: 'Thêm một đoạn',
batchAdd: 'Thêm hàng loạt',
archive: 'Lưu trữ',
unarchive: 'Khôi phục',
delete: 'Xóa',
enableWarning: 'Tệp đã lưu trữ không thể được kích hoạt',
sync: 'Đồng bộ',
},
index: {
enable: 'Kích hoạt',
disable: 'Vô hiệu hóa',
all: 'Tất cả',
enableTip: 'Tệp có thể được lập chỉ mục',
disableTip: 'Tệp không thể được lập chỉ mục',
},
status: {
queuing: 'Đang chờ',
indexing: 'Đang lập chỉ mục',
paused: 'Tạm dừng',
error: 'Lỗi',
available: 'Có sẵn',
enabled: 'Đã kích hoạt',
disabled: 'Đã vô hiệu hóa',
archived: 'Đã lưu trữ',
},
empty: {
title: 'Chưa có tài liệu',
upload: {
tip: 'Bạn có thể tải lên tệp, đồng bộ từ trang web, hoặc từ ứng dụng web như Notion, GitHub, v.v.',
},
sync: {
tip: 'Dify sẽ định kỳ tải xuống tệp từ Notion của bạn và hoàn tất xử lý.',
},
},
delete: {
title: 'Bạn có chắc chắn muốn xóa?',
content: 'Nếu bạn cần tiếp tục xử lý sau này, bạn sẽ tiếp tục từ vị trí bạn đã dừng lại',
},
batchModal: {
title: 'Thêm đoạn hàng loạt',
csvUploadTitle: 'Kéo và thả tệp CSV của bạn vào đây, hoặc ',
browse: 'duyệt',
tip: 'Tệp CSV phải tuân thủ cấu trúc sau:',
question: 'câu hỏi',
answer: 'trả lời',
contentTitle: 'nội dung đoạn',
content: 'nội dung',
template: 'Tải mẫu ở đây',
cancel: 'Hủy',
run: 'Chạy hàng loạt',
runError: 'Chạy hàng loạt thất bại',
processing: 'Đang xử lý hàng loạt',
completed: 'Nhập hoàn tất',
error: 'Lỗi nhập',
ok: 'OK',
},
addUrl: 'Thêm URL',
learnMore: 'Tìm hiểu thêm',
},
metadata: {
title: 'Siêu dữ liệu',
desc: 'Gắn nhãn siêu dữ liệu cho các tài liệu cho phép AI truy cập chúng kịp thời và tiết lộ nguồn của các tài liệu tham chiếu cho người dùng.',
dateTimeFormat: 'D MMMM, YYYY hh:mm A',
docTypeSelectTitle: 'Vui lòng chọn loại tài liệu',
docTypeChangeTitle: 'Thay đổi loại tài liệu',
docTypeSelectWarning: 'Nếu thay đổi loại tài liệu, các siêu dữ liệu hiện tại sẽ không được bảo toàn',
firstMetaAction: 'Bắt đầu',
placeholder: {
add: 'Thêm ',
select: 'Chọn ',
},
source: {
upload_file: 'Tải lên tệp',
notion: 'Đồng bộ từ Notion',
github: 'Đồng bộ từ Github',
},
type: {
book: 'Sách',
webPage: 'Trang web',
paper: 'Bài báo',
socialMediaPost: 'Bài đăng mạng xã hội',
personalDocument: 'Tài liệu cá nhân',
businessDocument: 'Tài liệu doanh nghiệp',
IMChat: 'Trò chuyện tin nhắn',
wikipediaEntry: 'Bài viết Wikipedia',
notion: 'Đồng bộ từ Notion',
github: 'Đồng bộ từ Github',
technicalParameters: 'Tham số kỹ thuật',
},
field: {
processRule: {
processDoc: 'Xử lý tài liệu',
segmentRule: 'Quy tắc phân đoạn',
segmentLength: 'Độ dài đoạn',
processClean: 'Quy tắc làm sạch văn bản',
},
book: {
title: 'Tiêu đề',
language: 'Ngôn ngữ',
author: 'Tác giả',
publisher: 'Nhà xuất bản',
publicationDate: 'Ngày xuất bản',
ISBN: 'ISBN',
category: 'Thể loại',
},
webPage: {
title: 'Tiêu đề',
url: 'URL',
language: 'Ngôn ngữ',
authorPublisher: 'Tác giả/Nhà xuất bản',
publishDate: 'Ngày xuất bản',
topicKeywords: 'Chủ đề/Từ khóa',
description: 'Mô tả',
},
paper: {
title: 'Tiêu đề',
language: 'Ngôn ngữ',
author: 'Tác giả',
publishDate: 'Ngày xuất bản',
journalConferenceName: 'Tên tạp chí/Hội nghị',
volumeIssuePage: 'Tập/Số/Trang',
DOI: 'DOI',
topicsKeywords: 'Chủ đề/Từ khóa',
abstract: 'Tóm tắt',
},
socialMediaPost: {
platform: 'Nền tảng',
authorUsername: 'Tác giả/Tên người dùng',
publishDate: 'Ngày đăng',
postURL: 'URL bài đăng',
topicsTags: 'Chủ đề/Thẻ',
},
personalDocument: {
title: 'Tiêu đề',
author: 'Tác giả',
creationDate: 'Ngày tạo',
lastModifiedDate: 'Ngày sửa đổi cuối',
documentType: 'Loại tài liệu',
tagsCategory: 'Thẻ/Danh mục',
},
businessDocument: {
title: 'Tiêu đề',
author: 'Tác giả',
creationDate: 'Ngày tạo',
lastModifiedDate: 'Ngày sửa đổi cuối',
documentType: 'Loại tài liệu',
departmentTeam: 'Phòng ban/Nhóm',
},
IMChat: {
chatPlatform: 'Nền tảng trò chuyện',
chatPartiesGroupName: 'Người tham gia/Tên nhóm',
participants: 'Người tham gia',
startDate: 'Ngày bắt đầu',
endDate: 'Ngày kết thúc',
topicsKeywords: 'Chủ đề/Từ khóa',
fileType: 'Loại tệp',
},
wikipediaEntry: {
title: 'Tiêu đề',
language: 'Ngôn ngữ',
webpageURL: 'URL trang web',
editorContributor: 'Biên tập viên/Người đóng góp',
lastEditDate: 'Ngày chỉnh sửa cuối',
summaryIntroduction: 'Tóm tắt/Giới thiệu',
},
notion: {
title: 'Tiêu đề',
language: 'Ngôn ngữ',
author: 'Tác giả',
createdTime: 'Thời gian tạo',
lastModifiedTime: 'Thời gian sửa đổi cuối',
url: 'URL',
tag: 'Thẻ',
description: 'Mô tả',
},
github: {
repoName: 'Tên kho lưu trữ',
repoDesc: 'Mô tả kho lưu trữ',
repoOwner: 'Chủ sở hữu kho lưu trữ',
fileName: 'Tên tệp',
filePath: 'Đường dẫn tệp',
programmingLang: 'Ngôn ngữ lập trình',
url: 'URL',
license: 'Giấy phép',
lastCommitTime: 'Thời gian commit cuối',
lastCommitAuthor: 'Tác giả commit cuối',
},
originInfo: {
originalFilename: 'Tên tệp gốc',
originalFileSize: 'Kích thước tệp gốc',
uploadDate: 'Ngày tải lên',
lastUpdateDate: 'Ngày cập nhật cuối',
source: 'Nguồn',
},
technicalParameters: {
segmentSpecification: 'Đặc tả đoạn',
segmentLength: 'Độ dài đoạn',
avgParagraphLength: 'Độ dài trung bình đoạn văn',
paragraphs: 'Số đoạn văn',
hitCount: 'Số lần truy vấn',
embeddingTime: 'Thời gian nhúng',
embeddedSpend: 'Chi phí nhúng',
},
},
languageMap: {
zh: 'Tiếng Trung',
en: 'Tiếng Anh',
es: 'Tiếng Tây Ban Nha',
fr: 'Tiếng Pháp',
de: 'Tiếng Đức',
ja: 'Tiếng Nhật',
ko: 'Tiếng Hàn',
ru: 'Tiếng Nga',
ar: 'Tiếng Ả Rập',
pt: 'Tiếng Bồ Đào Nha',
it: 'Tiếng Ý',
nl: 'Tiếng Hà Lan',
pl: 'Tiếng Ba Lan',
sv: 'Tiếng Thụy Điển',
tr: 'Tiếng Thổ Nhĩ Kỳ',
he: 'Tiếng Do Thái',
hi: 'Tiếng Hindi',
da: 'Tiếng Đan Mạch',
fi: 'Tiếng Phần Lan',
no: 'Tiếng Na Uy',
hu: 'Tiếng Hungary',
el: 'Tiếng Hy Lạp',
cs: 'Tiếng Séc',
th: 'Tiếng Thái',
id: 'Tiếng Indonesia',
},
categoryMap: {
book: {
fiction: 'Tiểu thuyết',
biography: 'Tiểu sử',
history: 'Lịch sử',
science: 'Khoa học',
technology: 'Công nghệ',
education: 'Giáo dục',
philosophy: 'Triết học',
religion: 'Tôn giáo',
socialSciences: 'Khoa học xã hội',
art: 'Nghệ thuật',
travel: 'Du lịch',
health: 'Sức khỏe',
selfHelp: 'Tự lực',
businessEconomics: 'Kinh doanh và kinh tế',
cooking: 'Nấu ăn',
childrenYoungAdults: 'Thiếu nhi và thanh thiếu niên',
comicsGraphicNovels: 'Truyện tranh và tiểu thuyết đồ họa',
poetry: 'Thơ ca',
drama: 'Kịch',
other: 'Khác',
},
personalDoc: {
notes: 'Ghi chú',
blogDraft: 'Bản nháp blog',
diary: 'Nhật ký',
researchReport: 'Báo cáo nghiên cứu',
bookExcerpt: 'Trích đoạn sách',
schedule: 'Lịch trình',
list: 'Danh sách',
projectOverview: 'Tổng quan dự án',
photoCollection: 'Bộ sưu tập ảnh',
creativeWriting: 'Viết sáng tạo',
codeSnippet: 'Đoạn mã',
designDraft: 'Bản phác thảo thiết kế',
personalResume: 'Sơ yếu lý lịch cá nhân',
other: 'Khác',
},
businessDoc: {
meetingMinutes: 'Biên bản cuộc họp',
researchReport: 'Báo cáo nghiên cứu',
proposal: 'Đề xuất',
employeeHandbook: 'Sổ tay nhân viên',
trainingMaterials: 'Tài liệu đào tạo',
requirementsDocument: 'Tài liệu yêu cầu',
designDocument: 'Tài liệu thiết kế',
productSpecification: 'Thông số kỹ thuật sản phẩm',
financialReport: 'Báo cáo tài chính',
marketAnalysis: 'Phân tích thị trường',
projectPlan: 'Kế hoạch dự án',
teamStructure: 'Cấu trúc nhóm',
policiesProcedures: 'Chính sách và quy trình',
contractsAgreements: 'Hợp đồng và thỏa thuận',
emailCorrespondence: 'Thư từ trao đổi',
other: 'Khác',
},
},
},
embedding: {
processing: 'Đang nhúng...',
paused: 'Đã tạm dừng nhúng',
completed: 'Hoàn tất nhúng',
error: 'Lỗi khi nhúng',
docName: 'Đang xử lý văn bản',
mode: 'Quy tắc phân đoạn',
segmentLength: 'Độ dài đoạn',
textCleaning: 'Định nghĩa và làm sạch văn bản',
segments: 'Đoạn',
highQuality: 'Chế độ chất lượng cao',
economy: 'Chế độ tiết kiệm',
estimate: 'Ước tính tiêu thụ',
stop: 'Dừng xử lý',
resume: 'Tiếp tục xử lý',
automatic: 'Tự động',
custom: 'Tùy chỉnh',
previewTip: 'Xem trước đoạn sẽ có sẵn sau khi việc nhúng hoàn tất',
parentMaxTokens: 'Cha mẹ',
pause: 'Tạm dừng',
childMaxTokens: 'Con',
hierarchical: 'Cha mẹ-con cái',
},
segment: {
paragraphs: 'Đoạn văn',
keywords: 'Từ khóa',
addKeyWord: 'Thêm từ khóa',
keywordError: 'Độ dài tối đa của từ khóa là 20',
characters: 'ký tự',
hitCount: 'Số lần truy vấn',
vectorHash: 'Mã băm vector: ',
questionPlaceholder: 'thêm câu hỏi ở đây',
questionEmpty: 'Câu hỏi không thể trống',
answerPlaceholder: 'thêm câu trả lời ở đây',
answerEmpty: 'Câu trả lời không thể trống',
contentPlaceholder: 'thêm nội dung ở đây',
contentEmpty: 'Nội dung không thể trống',
newTextSegment: 'Đoạn văn bản mới',
newQaSegment: 'Đoạn hỏi đáp mới',
delete: 'Xóa đoạn này?',
childChunks_one: 'KHỐI TRẺ',
searchResults_zero: 'KẾT QUẢ',
empty: 'Không tìm thấy Chunk',
newChunk: 'Khối mới',
childChunk: 'Khối trẻ em',
regeneratingMessage: 'Quá trình này có thể mất một lúc, vui lòng đợi...',
regenerationSuccessMessage: 'Bạn có thể đóng cửa sổ này.',
regenerationSuccessTitle: 'Hoàn thành tái tạo',
characters_other: 'Ký tự',
chunks_one: 'KHÚC',
chunkAdded: '1 miếng được thêm vào',
editChildChunk: 'Chỉnh sửa phần con',
characters_one: 'nhân vật',
expandChunks: 'Mở rộng các đoạn',
chunks_other: 'KHỐI',
editedAt: 'Chỉnh sửa tại',
addAnother: 'Thêm một cái khác',
regenerationConfirmTitle: 'Bạn có muốn tái tạo các chunk con không?',
searchResults_one: 'KẾT QUẢ',
regeneratingTitle: 'Tái tạo các chunk con',
editParentChunk: 'Chỉnh sửa phần cha',
collapseChunks: 'Thu gọn các đoạn',
searchResults_other: 'KẾT QUẢ',
parentChunks_one: 'PHẦN CHA MẸ',
newChildChunk: 'Khối con mới',
parentChunk: 'Phần cha mẹ',
parentChunks_other: 'PHẦN CHA MẸ',
regenerationConfirmMessage: 'Tạo lại các chunk con sẽ ghi đè lên các chunk con hiện tại, bao gồm các chunk đã chỉnh sửa và chunk mới được thêm vào. Sự tái sinh không thể hoàn tác.',
childChunkAdded: '1 phần con được thêm vào',
addChunk: 'Thêm Chunk',
chunkDetail: 'Chi tiết khối',
childChunks_other: 'KHỐI CON',
editChunk: 'Chỉnh sửa Chunk',
addChildChunk: 'Thêm phần con',
clearFilter: 'Bộ lọc rõ ràng',
chunk: 'Khúc',
edited: 'EDITED',
},
}
export default translation

View File

@@ -0,0 +1,35 @@
const translation = {
title: 'Kiểm tra truy vấn',
desc: 'Kiểm tra hiệu quả truy xuất của Kiến thức dựa trên văn bản truy vấn đã cho.',
dateTimeFormat: 'MM/DD/YYYY hh:mm A',
recents: 'Gần đây',
table: {
header: {
source: 'Nguồn',
text: 'Văn bản',
time: 'Thời gian',
},
},
input: {
title: 'Văn bản nguồn',
placeholder: 'Vui lòng nhập một văn bản, khuyến nghị sử dụng một câu khẳng định ngắn.',
countWarning: 'Tối đa 200 ký tự.',
indexWarning: 'Chỉ có sẵn trong Kiến thức chất lượng cao.',
testing: 'Đang kiểm tra',
},
hit: {
title: 'CÁC ĐOẠN VĂN ĐƯỢC TRUY XUẤT',
emptyTip: 'Kết quả kiểm tra truy vấn sẽ hiển thị ở đây',
},
noRecentTip: 'Không có kết quả truy vấn gần đây',
viewChart: 'Xem BIỂU ĐỒ VECTOR',
settingTitle: 'Cài đặt truy xuất',
viewDetail: 'Xem chi tiết',
records: 'Hồ sơ',
open: 'Mở',
keyword: 'Từ khoá',
hitChunks: 'Nhấn {{num}} đoạn con',
chunkDetail: 'Chi tiết khối',
}
export default translation

View File

@@ -0,0 +1,41 @@
const translation = {
title: 'Cài đặt Kiến thức',
desc: 'Tại đây, bạn có thể sửa đổi các thuộc tính và phương pháp làm việc của Kiến thức.',
form: {
name: 'Tên Kiến thức',
namePlaceholder: 'Vui lòng nhập tên Kiến thức',
nameError: 'Tên không thể để trống',
desc: 'Mô tả Kiến thức',
descInfo: 'Vui lòng viết mô tả rõ ràng về nội dung của Kiến thức. Mô tả này sẽ được sử dụng làm cơ sở cho việc kết hợp khi lựa chọn từ nhiều Kiến thức trong quá trình suy luận.',
descPlaceholder: 'Mô tả những gì có trong Kiến thức này. Một mô tả chi tiết giúp AI truy cập nội dung của Kiến thức một cách hiệu quả. Nếu để trống, Dify sẽ sử dụng chiến lược truy xuất mặc định.',
descWrite: 'Tìm hiểu cách viết mô tả Kiến thức tốt.',
permissions: 'Quyền hạn',
permissionsOnlyMe: 'Chỉ mình tôi',
permissionsAllMember: 'Tất cả thành viên nhóm',
indexMethod: 'Phương pháp chỉ mục',
indexMethodHighQuality: 'Chất lượng cao',
indexMethodHighQualityTip: 'Sử dụng mô hình Embedding để xử lý, cung cấp độ chính xác cao hơn khi người dùng truy vấn.',
indexMethodEconomy: 'Tiết kiệm',
indexMethodEconomyTip: 'Sử dụng các công cụ nhúng vector ngoại tuyến, chỉ mục từ khóa, v.v. để giảm độ chính xác mà không tiêu tốn token',
embeddingModel: 'Mô hình nhúng',
embeddingModelTip: 'Để thay đổi mô hình nhúng, vui lòng đi tới ',
embeddingModelTipLink: 'Cài đặt',
retrievalSetting: {
title: 'Cài đặt truy xuất',
learnMore: 'Tìm hiểu thêm',
description: ' về phương pháp truy xuất.',
longDescription: ' về phương pháp truy xuất. Bạn có thể thay đổi điều này bất kỳ lúc nào trong cài đặt Kiến thức.',
},
save: 'Lưu',
permissionsInvitedMembers: 'Thành viên một phần trong nhóm',
me: '(Bạn)',
externalKnowledgeAPI: 'API kiến thức bên ngoài',
retrievalSettings: 'Cài đặt truy xuất',
externalKnowledgeID: 'ID kiến thức bên ngoài',
helpText: 'Tìm hiểu cách viết mô tả tập dữ liệu tốt.',
indexMethodChangeToEconomyDisabledTip: 'Không khả dụng để hạ cấp từ HQ xuống ECO',
upgradeHighQualityTip: 'Sau khi nâng cấp lên chế độ Chất lượng cao, không thể hoàn nguyên về chế độ Tiết kiệm',
},
}
export default translation

View File

@@ -0,0 +1,173 @@
const translation = {
knowledge: 'Kiến thức',
documentCount: ' tài liệu',
wordCount: ' nghìn từ',
appCount: ' ứng dụng liên kết',
createDataset: 'Tạo bộ kiến thức',
createDatasetIntro: 'Nhập dữ liệu văn bản của bạn hoặc cập nhật dữ liệu theo thời gian thực qua Webhook để tăng cường ngữ cảnh cho LLM.',
deleteDatasetConfirmTitle: 'Xóa bộ kiến thức này?',
deleteDatasetConfirmContent:
'Việc xóa bộ kiến thức là không thể hoàn tác. Người dùng sẽ không còn truy cập được vào bộ kiến thức của bạn, và tất cả cấu hình cùng nhật ký lời nhắc sẽ bị xóa vĩnh viễn.',
datasetUsedByApp: 'Bộ kiến thức này đang được sử dụng bởi một số ứng dụng. Các ứng dụng sẽ không thể sử dụng bộ kiến thức này nữa, và tất cả cấu hình lời nhắc cùng nhật ký sẽ bị xóa vĩnh viễn.',
datasetDeleted: 'Bộ kiến thức đã được xóa',
datasetDeleteFailed: 'Xóa bộ kiến thức không thành công',
didYouKnow: 'Bạn có biết?',
intro1: 'Bộ kiến thức có thể được tích hợp vào ứng dụng Dify ',
intro2: 'như một ngữ cảnh',
intro3: ',',
intro4: 'hoặc ',
intro5: 'có thể được tạo',
intro6: ' dưới dạng một plugin chỉ mục ChatGPT độc lập để xuất bản',
unavailable: 'Không khả dụng',
unavailableTip: 'Mô hình nhúng không khả dụng, cần cấu hình mô hình nhúng mặc định',
datasets: 'BỘ KIẾN THỨC',
datasetsApi: 'API',
retrieval: {
semantic_search: {
title: 'Tìm kiếm Vector',
description: 'Tạo các nhúng truy vấn và tìm kiếm đoạn văn bản tương tự nhất với biểu diễn vector của nó.',
},
full_text_search: {
title: 'Tìm kiếm Toàn văn bản',
description: 'Lập chỉ mục cho tất cả các thuật ngữ trong tài liệu, cho phép người dùng tìm kiếm bất kỳ thuật ngữ nào và truy xuất đoạn văn bản liên quan chứa các thuật ngữ đó.',
},
hybrid_search: {
title: 'Tìm kiếm Kết hợp',
description: 'Thực hiện tìm kiếm toàn văn bản và tìm kiếm vector đồng thời, sắp xếp lại để chọn kết quả phù hợp nhất với truy vấn của người dùng. Yêu cầu cấu hình API mô hình Rerank.',
recommend: 'Đề xuất',
},
invertedIndex: {
title: 'Chỉ mục Ngược',
description: 'Chỉ mục Ngược là một cấu trúc được sử dụng cho việc truy xuất hiệu quả. Nó được tổ chức theo thuật ngữ, mỗi thuật ngữ trỏ đến tài liệu hoặc trang web chứa nó.',
},
change: 'Thay đổi',
changeRetrievalMethod: 'Thay đổi phương pháp truy xuất',
},
docsFailedNotice: 'tài liệu không được lập chỉ mục',
retry: 'Thử lại',
indexingTechnique: {
high_quality: 'CHẤT LƯỢNG',
economy: 'TIẾT KIỆM',
},
indexingMethod: {
semantic_search: 'VECTOR',
full_text_search: 'VĂN BẢN ĐẦY ĐỦ',
hybrid_search: 'KẾT HỢP',
invertedIndex: 'ĐẢO NGƯỢC',
},
mixtureHighQualityAndEconomicTip: 'Mô hình xếp hạng lại là cần thiết cho sự kết hợp của các cơ sở kiến thức chất lượng cao và tiết kiệm.',
inconsistentEmbeddingModelTip: 'Mô hình xếp hạng lại là cần thiết nếu các mô hình nhúng của các cơ sở kiến thức được chọn không nhất quán.',
retrievalSettings: 'Cài đặt truy xuất',
rerankSettings: 'Cài đặt xếp hạng lại',
weightedScore: {
title: 'Điểm số có trọng số',
description: 'Bằng cách điều chỉnh trọng số được gán, chiến lược xếp hạng lại này xác định liệu ưu tiên khớp ngữ nghĩa hay từ khóa.',
semanticFirst: 'Ngữ nghĩa trước',
keywordFirst: 'Từ khóa trước',
customized: 'Tùy chỉnh',
semantic: 'Ngữ nghĩa',
keyword: 'Từ khóa',
},
nTo1RetrievalLegacy: 'Truy xuất N-đến-1 sẽ chính thức bị loại bỏ từ tháng 9. Khuyến nghị sử dụng truy xuất đa đường dẫn mới nhất để có kết quả tốt hơn.',
nTo1RetrievalLegacyLink: 'Tìm hiểu thêm',
nTo1RetrievalLegacyLinkText: 'Truy xuất N-đến-1 sẽ chính thức bị loại bỏ vào tháng 9.',
defaultRetrievalTip: 'Truy xuất nhiều đường dẫn được sử dụng theo mặc định. Kiến thức được lấy từ nhiều cơ sở kiến thức và sau đó được xếp hạng lại.',
editExternalAPIConfirmWarningContent: {
front: 'API Kiến thức Bên ngoài này được liên kết với',
end: 'kiến thức bên ngoài, và sửa đổi này sẽ được áp dụng cho tất cả chúng. Bạn có chắc chắn muốn lưu thay đổi này không?',
},
editExternalAPIFormWarning: {
front: 'API bên ngoài này được liên kết với',
end: 'Kiến thức bên ngoài',
},
deleteExternalAPIConfirmWarningContent: {
title: {
end: '?',
front: 'Xóa',
},
content: {
front: 'API Kiến thức Bên ngoài này được liên kết với',
end: 'kiến thức bên ngoài. Xóa API này sẽ làm mất hiệu lực tất cả chúng. Bạn có chắc chắn muốn xóa API này không?',
},
noConnectionContent: 'Bạn có chắc chắn xóa API này không?',
},
selectExternalKnowledgeAPI: {
placeholder: 'Chọn một API kiến thức bên ngoài',
},
connectDatasetIntro: {
content: {
end: '. Sau đó tìm ID kiến thức tương ứng và điền vào biểu mẫu bên trái. Nếu tất cả thông tin là chính xác, nó sẽ tự động chuyển đến bài kiểm tra truy xuất trong cơ sở kiến thức sau khi nhấp vào nút kết nối.',
front: 'Để kết nối với cơ sở kiến thức bên ngoài, trước tiên bạn cần tạo API bên ngoài. Vui lòng đọc kỹ và tham khảo',
link: 'Tìm hiểu cách tạo API bên ngoài',
},
learnMore: 'Tìm hiểu thêm',
title: 'Cách kết nối với cơ sở kiến thức bên ngoài',
},
connectHelper: {
helper3: '. Chúng tôi thực sự khuyên bạn nên',
helper4: 'Đọc tài liệu trợ giúp',
helper1: 'Kết nối với cơ sở kiến thức bên ngoài thông qua API và ID cơ sở kiến thức. Hiện tại,',
helper2: 'Chỉ hỗ trợ chức năng truy xuất',
helper5: 'cẩn thận trước khi sử dụng tính năng này.',
},
externalKnowledgeForm: {
cancel: 'Hủy',
connect: 'Kết nối',
},
externalAPIForm: {
encrypted: {
end: 'Công nghệ.',
front: 'Mã thông báo API của bạn sẽ được mã hóa và lưu trữ bằng cách sử dụng',
},
apiKey: 'Khóa API',
endpoint: 'Điểm cuối API',
edit: 'Biên tập',
cancel: 'Hủy',
name: 'Tên',
save: 'Cứu',
},
learnHowToWriteGoodKnowledgeDescription: 'Tìm hiểu cách viết mô tả kiến thức tốt',
noExternalKnowledge: 'Chưa có API Kiến thức Bên ngoài, hãy nhấp vào đây để tạo',
connectDataset: 'Kết nối với cơ sở kiến thức bên ngoài',
externalTag: 'Ngoài',
externalAPIPanelTitle: 'API kiến thức bên ngoài',
editExternalAPITooltipTitle: 'KIẾN THỨC LIÊN KẾT',
externalKnowledgeNamePlaceholder: 'Vui lòng nhập tên của cơ sở kiến thức',
createExternalAPI: 'Thêm API kiến thức bên ngoài',
externalKnowledgeDescription: 'Mô tả kiến thức',
externalAPIPanelDocumentation: 'Tìm hiểu cách tạo API Kiến thức Bên ngoài',
allExternalTip: 'Khi chỉ sử dụng kiến thức bên ngoài, người dùng có thể chọn có bật mô hình Xếp hạng lại hay không. Nếu không được bật, các đoạn được truy xuất sẽ được sắp xếp dựa trên điểm số. Khi các chiến lược truy xuất của các cơ sở kiến thức khác nhau không nhất quán, nó sẽ không chính xác.',
editExternalAPIFormTitle: 'Chỉnh sửa API Kiến thức Bên ngoài',
externalKnowledgeId: 'ID kiến thức bên ngoài',
mixtureInternalAndExternalTip: 'Mô hình Rerank là cần thiết cho sự kết hợp giữa kiến thức bên trong và bên ngoài.',
externalAPI: 'API bên ngoài',
externalKnowledgeDescriptionPlaceholder: 'Mô tả nội dung trong Cơ sở Kiến thức này (tùy chọn)',
externalKnowledgeName: 'Tên kiến thức bên ngoài',
externalKnowledgeIdPlaceholder: 'Vui lòng nhập ID kiến thức',
createNewExternalAPI: 'Tạo API Kiến thức Bên ngoài mới',
externalAPIPanelDescription: 'API kiến thức bên ngoài được sử dụng để kết nối với cơ sở kiến thức bên ngoài Dify và truy xuất kiến thức từ cơ sở kiến thức đó.',
chunkingMode: {
general: 'Tổng quát',
parentChild: 'Cha mẹ-con cái',
},
parentMode: {
paragraph: 'Đoạn',
fullDoc: 'Tài liệu đầy đủ',
},
batchAction: {
disable: 'Vô hiệu hóa',
enable: 'Kích hoạt',
delete: 'Xóa',
selected: 'Chọn',
archive: 'Lưu trữ',
cancel: 'Hủy',
},
localDocs: 'Tài liệu địa phương',
enable: 'Kích hoạt',
preprocessDocument: '{{số}} Tiền xử lý tài liệu',
documentsDisabled: '{{num}} tài liệu bị vô hiệu hóa - không hoạt động trong hơn 30 ngày',
allKnowledge: 'Tất cả kiến thức',
allKnowledgeDescription: 'Chọn để hiển thị tất cả kiến thức trong không gian làm việc này. Chỉ Chủ sở hữu không gian làm việc mới có thể quản lý tất cả kiến thức.',
}
export default translation

View File

@@ -0,0 +1,43 @@
const translation = {
title: 'Khám phá',
sidebar: {
discovery: 'Khám phá',
chat: 'Trò chuyện',
workspace: 'Không gian làm việc',
action: {
pin: 'Ghim',
unpin: 'Bỏ ghim',
rename: 'Đổi tên',
delete: 'Xóa',
},
delete: {
title: 'Xóa ứng dụng',
content: 'Bạn có chắc chắn muốn xóa ứng dụng này không?',
},
},
apps: {
title: 'Khám phá ứng dụng bởi Dify',
description: 'Sử dụng ngay các ứng dụng mẫu này hoặc tùy chỉnh ứng dụng của bạn dựa trên các mẫu có sẵn.',
allCategories: 'Tất cả danh mục',
},
appCard: {
addToWorkspace: 'Thêm vào không gian làm việc',
customize: 'Tùy chỉnh',
},
appCustomize: {
title: 'Tạo ứng dụng từ {{name}}',
subTitle: 'Biểu tượng và tên ứng dụng',
nameRequired: 'Vui lòng nhập tên ứng dụng',
},
category: {
Assistant: 'Trợ lý',
Writing: 'Viết lách',
Translate: 'Dịch thuật',
Programming: 'Lập trình',
HR: 'Nhân sự',
Agent: 'Người đại lý',
Workflow: 'Quy trình làm việc',
},
}
export default translation

View File

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

View File

@@ -0,0 +1,110 @@
const translation = {
pageTitle: 'Xin chào, hãy bắt đầu! 👋',
welcome: 'Chào mừng bạn đến với Dify, vui lòng đăng nhập để tiếp tục.',
email: 'Địa chỉ email',
emailPlaceholder: 'Nhập email của bạn',
password: 'Mật khẩu',
passwordPlaceholder: 'Nhập mật khẩu của bạn',
name: 'Tên người dùng',
namePlaceholder: 'Nhập tên người dùng của bạn',
forget: 'Quên mật khẩu?',
signBtn: 'Đăng nhập',
installBtn: 'Cài đặt',
setAdminAccount: 'Thiết lập tài khoản quản trị',
setAdminAccountDesc: 'Tài khoản quản trị có quyền tối đa, có thể tạo ứng dụng và quản lý các nhà cung cấp LLM, v.v.',
createAndSignIn: 'Tạo và đăng nhập',
oneMoreStep: 'Còn một bước nữa',
createSample: 'Dựa trên thông tin này, chúng tôi sẽ tạo một ứng dụng mẫu cho bạn',
invitationCode: 'Mã mời',
invitationCodePlaceholder: 'Nhập mã mời của bạn',
interfaceLanguage: 'Ngôn ngữ giao diện',
timezone: 'Múi giờ',
go: 'Đi đến Dify',
sendUsMail: 'Gửi email giới thiệu cho chúng tôi, chúng tôi sẽ xử lý yêu cầu mời của bạn.',
acceptPP: 'Tôi đã đọc và đồng ý với chính sách bảo mật',
reset: 'Vui lòng chạy lệnh sau để đặt lại mật khẩu của bạn',
withGitHub: 'Tiếp tục với GitHub',
withGoogle: 'Tiếp tục với Google',
rightTitle: 'Khai phá tiềm năng tối đa của LLM',
rightDesc: 'Dễ dàng xây dựng ứng dụng AI hấp dẫn, có thể vận hành và cải thiện được.',
tos: 'Điều khoản dịch vụ',
pp: 'Chính sách bảo mật',
tosDesc: 'Bằng cách đăng ký, bạn đồng ý với',
goToInit: 'Nếu bạn chưa khởi tạo tài khoản, vui lòng chuyển đến trang khởi tạo',
dontHave: 'Chưa có tài khoản?',
invalidInvitationCode: 'Mã mời không hợp lệ',
accountAlreadyInited: 'Tài khoản đã được khởi tạo',
forgotPassword: 'Quên mật khẩu?',
resetLinkSent: 'Đã gửi liên kết đặt lại mật khẩu',
sendResetLink: 'Gửi liên kết đặt lại mật khẩu',
backToSignIn: 'Quay lại đăng nhập',
forgotPasswordDesc: 'Vui lòng nhập địa chỉ email của bạn để đặt lại mật khẩu. Chúng tôi sẽ gửi cho bạn một email hướng dẫn cách đặt lại mật khẩu.',
checkEmailForResetLink: 'Vui lòng kiểm tra email để nhận liên kết đặt lại mật khẩu. Nếu không thấy trong vài phút, hãy kiểm tra thư mục spam.',
passwordChanged: 'Đăng nhập ngay',
changePassword: 'Đổi mật khẩu',
changePasswordTip: 'Vui lòng nhập mật khẩu mới cho tài khoản của bạn',
invalidToken: 'Mã thông báo không hợp lệ hoặc đã hết hạn',
confirmPassword: 'Xác nhận mật khẩu',
confirmPasswordPlaceholder: 'Nhập lại mật khẩu mới của bạn',
passwordChangedTip: 'Mật khẩu của bạn đã được thay đổi thành công',
error: {
emailEmpty: 'Vui lòng nhập địa chỉ email',
emailInValid: 'Vui lòng nhập một địa chỉ email hợp lệ',
nameEmpty: 'Vui lòng nhập tên',
passwordEmpty: 'Vui lòng nhập mật khẩu',
passwordInvalid: 'Mật khẩu phải chứa cả chữ và số, và có độ dài ít nhất 8 ký tự',
passwordLengthInValid: 'Mật khẩu phải có ít nhất 8 ký tự',
registrationNotAllowed: 'Không tìm thấy tài khoản. Vui lòng liên hệ với quản trị viên hệ thống để đăng ký.',
},
license: {
tip: 'Trước khi bắt đầu sử dụng Phiên bản Cộng đồng của Dify, vui lòng đọc',
link: 'Giấy phép mã nguồn mở trên GitHub',
},
join: 'Tham gia',
joinTipStart: 'Mời bạn tham gia',
joinTipEnd: 'đội ngũ tại Dify',
invalid: 'Liên kết đã hết hạn',
explore: 'Khám phá Dify',
activatedTipStart: 'Bạn đã tham gia',
activatedTipEnd: 'đội ngũ',
activated: 'Đăng nhập ngay',
adminInitPassword: 'Mật khẩu khởi tạo quản trị viên',
validate: 'Xác thực',
sso: 'Tiếp tục với SSO',
checkCode: {
checkYourEmail: 'Kiểm tra email của bạn',
verify: 'Xác minh',
resend: 'Gửi lại',
didNotReceiveCode: 'Bạn không nhận được mã?',
validTime: 'Lưu ý rằng mã có hiệu lực trong 5 phút',
invalidCode: 'Mã không hợp lệ',
verificationCode: 'Mã xác minh',
useAnotherMethod: 'Sử dụng phương pháp khác',
emptyCode: 'Mã là bắt buộc',
verificationCodePlaceholder: 'Nhập mã gồm 6 chữ số',
tips: 'Chúng tôi gửi mã xác minh đến <strong>{{email}}</strong>',
},
back: 'Lưng',
withSSO: 'Tiếp tục với SSO',
continueWithCode: 'Tiếp tục với mã',
changePasswordBtn: 'Đặt mật khẩu',
useVerificationCode: 'Sử dụng mã xác minh',
noLoginMethodTip: 'Vui lòng liên hệ với quản trị viên hệ thống để thêm phương thức xác thực.',
enterYourName: 'Vui lòng nhập tên người dùng của bạn',
setYourAccount: 'Đặt tài khoản của bạn',
backToLogin: 'Quay lại đăng nhập',
noLoginMethod: 'Phương thức xác thực không được cấu hình',
or: 'HOẶC',
resetPasswordDesc: 'Nhập email bạn đã sử dụng để đăng ký trên Dify và chúng tôi sẽ gửi cho bạn email đặt lại mật khẩu.',
usePassword: 'Sử dụng mật khẩu',
resetPassword: 'Đặt lại mật khẩu',
sendVerificationCode: 'Gửi mã xác minh',
licenseInactive: 'Giấy phép không hoạt động',
licenseLost: 'Mất giấy phép',
licenseInactiveTip: 'Giấy phép Dify Enterprise cho không gian làm việc của bạn không hoạt động. Vui lòng liên hệ với quản trị viên của bạn để tiếp tục sử dụng Dify.',
licenseExpired: 'Giấy phép đã hết hạn',
licenseExpiredTip: 'Giấy phép Dify Enterprise cho không gian làm việc của bạn đã hết hạn. Vui lòng liên hệ với quản trị viên của bạn để tiếp tục sử dụng Dify.',
licenseLostTip: 'Không thể kết nối máy chủ cấp phép Dify. Vui lòng liên hệ với quản trị viên của bạn để tiếp tục sử dụng Dify.',
}
export default translation

View File

@@ -0,0 +1,25 @@
const translation = {
tags: {
education: 'Giáo dục',
medical: 'Y',
business: 'Kinh doanh',
weather: 'Thời tiết',
finance: 'Tài chính',
productivity: 'Năng suất',
design: 'Thiết kế',
videos: 'Video',
utilities: 'Tiện ích',
social: 'Xã hội',
search: 'Tìm kiếm',
news: 'Tin tức',
image: 'Ảnh',
agent: 'Người đại lý',
other: 'Khác',
travel: 'Du lịch',
entertainment: 'Giải trí',
},
searchTags: 'Thẻ tìm kiếm',
allTags: 'Tất cả thẻ',
}
export default translation

View File

@@ -0,0 +1,209 @@
const translation = {
category: {
all: 'Tất cả',
bundles: 'Bó',
extensions: 'Phần mở rộng',
tools: 'Công cụ',
agents: 'Chiến lược đại lý',
models: 'Mô hình',
},
categorySingle: {
agent: 'Chiến lược đại lý',
tool: 'Công cụ',
extension: 'Phần mở rộng',
model: 'Mẫu',
bundle: 'Bó',
},
list: {
source: {
marketplace: 'Cài đặt từ Marketplace',
local: 'Cài đặt từ tệp gói cục bộ',
github: 'Cài đặt từ GitHub',
},
noInstalled: 'Không có plugin nào được cài đặt',
notFound: 'Không tìm thấy plugin',
},
source: {
marketplace: 'Chợ',
local: 'Tệp gói cục bộ',
github: 'GitHub',
},
detailPanel: {
categoryTip: {
local: 'Plugin cục bộ',
debugging: 'Plugin gỡ lỗi',
marketplace: 'Được cài đặt từ Marketplace',
github: 'Cài đặt từ Github',
},
operation: {
detail: 'Chi tiết',
update: 'Cập nhật',
viewDetail: 'xem chi tiết',
info: 'Thông tin plugin',
remove: 'Triệt',
install: 'Cài đặt',
checkUpdate: 'Kiểm tra cập nhật',
},
toolSelector: {
descriptionPlaceholder: 'Mô tả ngắn gọn về mục đích của công cụ, ví dụ: lấy nhiệt độ cho một vị trí cụ thể.',
params: 'CẤU HÌNH LÝ LUẬN',
toolLabel: 'Công cụ',
descriptionLabel: 'Mô tả công cụ',
unsupportedContent2: 'Nhấp để chuyển đổi phiên bản.',
auto: 'Tự động',
placeholder: 'Chọn một công cụ...',
paramsTip1: 'Kiểm soát các tham số suy luận LLM.',
uninstalledTitle: 'Công cụ chưa được cài đặt',
unsupportedContent: 'Phiên bản plugin đã cài đặt không cung cấp hành động này.',
uninstalledContent: 'Plugin này được cài đặt từ kho lưu trữ cục bộ / GitHub. Vui lòng sử dụng sau khi cài đặt.',
paramsTip2: 'Khi tắt \'Tự động\', giá trị mặc định sẽ được sử dụng.',
uninstalledLink: 'Quản lý trong Plugins',
title: 'Thêm công cụ',
settings: 'CÀI ĐẶT NGƯỜI DÙNG',
empty: 'Nhấp vào nút \'+\' để thêm công cụ. Bạn có thể thêm nhiều công cụ.',
unsupportedTitle: 'Hành động không được hỗ trợ',
},
switchVersion: 'Chuyển đổi phiên bản',
endpointDisableTip: 'Tắt điểm cuối',
endpointDeleteTip: 'Xóa điểm cuối',
configureApp: 'Định cấu hình ứng dụng',
configureModel: 'Định cấu hình mô hình',
endpointsTip: 'Plugin này cung cấp các chức năng cụ thể thông qua các điểm cuối và bạn có thể định cấu hình nhiều bộ điểm cuối cho không gian làm việc hiện tại.',
endpointDisableContent: 'Bạn có muốn vô hiệu hóa {{name}} không?',
strategyNum: '{{số}} {{chiến lược}} BAO GỒM',
endpoints: 'Điểm cuối',
actionNum: '{{số}} {{hành động}} BAO GỒM',
configureTool: 'Công cụ định cấu hình',
modelNum: '{{số}} CÁC MÔ HÌNH BAO GỒM',
serviceOk: 'Dịch vụ OK',
endpointsDocLink: 'Xem tài liệu',
endpointsEmpty: 'Nhấp vào nút \'+\' để thêm điểm cuối',
endpointModalDesc: 'Sau khi định cấu hình, các tính năng do plugin cung cấp thông qua điểm cuối API có thể được sử dụng.',
endpointDeleteContent: 'Bạn có muốn xóa {{name}} không?',
endpointModalTitle: 'Điểm cuối thiết lập',
disabled: 'Tàn tật',
},
debugInfo: {
title: 'Gỡ lỗi',
viewDocs: 'Xem tài liệu',
},
privilege: {
whoCanInstall: 'Ai có thể cài đặt và quản lý plugin?',
everyone: 'Ai ai',
whoCanDebug: 'Ai có thể gỡ lỗi plugin?',
title: 'Tùy chọn plugin',
admins: 'Quản trị viên',
noone: 'Không ai',
},
pluginInfoModal: {
release: 'Phát hành',
repository: 'Kho',
title: 'Thông tin plugin',
packageName: 'Gói',
},
action: {
delete: 'Xóa plugin',
deleteContentRight: 'plugin?',
usedInApps: 'Plugin này đang được sử dụng trong các ứng dụng {{num}}.',
pluginInfo: 'Thông tin plugin',
checkForUpdates: 'Kiểm tra thông tin cập nhật',
deleteContentLeft: 'Bạn có muốn xóa',
},
installModal: {
labels: {
package: 'Gói',
repository: 'Kho',
version: 'Phiên bản',
},
close: 'Đóng',
installFailedDesc: 'Plugin đã được cài đặt không thành công.',
cancel: 'Hủy',
install: 'Cài đặt',
dropPluginToInstall: 'Thả gói plugin vào đây để cài đặt',
readyToInstallPackage: 'Giới thiệu cài đặt plugin sau',
uploadingPackage: 'Tải lên {{packageName}}...',
installing: 'Cài đặt...',
installedSuccessfully: 'Cài đặt thành công',
readyToInstall: 'Giới thiệu cài đặt plugin sau',
next: 'Sau',
readyToInstallPackages: 'Chuẩn bị cài đặt các plugin {{num}} sau',
pluginLoadErrorDesc: 'Plugin này sẽ không được cài đặt',
fromTrustSource: 'Hãy đảm bảo rằng bạn chỉ cài đặt các plugin từ <trustSource>một nguồn đáng tin cậy</trustSource>.',
installedSuccessfullyDesc: 'Plugin đã được cài đặt thành công.',
uploadFailed: 'Tải lên không thành công',
installPlugin: 'Cài đặt Plugin',
installFailed: 'Cài đặt không thành công',
installComplete: 'Cài đặt hoàn tất',
back: 'Lưng',
pluginLoadError: 'Lỗi tải plugin',
},
installFromGitHub: {
installFailed: 'Cài đặt không thành công',
updatePlugin: 'Cập nhật plugin từ GitHub',
gitHubRepo: 'Kho lưu trữ GitHub',
selectPackage: 'Chọn gói',
selectVersionPlaceholder: 'Vui lòng chọn một phiên bản',
installedSuccessfully: 'Cài đặt thành công',
installPlugin: 'Cài đặt plugin từ GitHub',
uploadFailed: 'Tải lên không thành công',
selectPackagePlaceholder: 'Vui lòng chọn một gói',
selectVersion: 'Chọn phiên bản',
installNote: 'Hãy đảm bảo rằng bạn chỉ cài đặt các plugin từ một nguồn đáng tin cậy.',
},
upgrade: {
upgrade: 'Cài đặt',
upgrading: 'Cài đặt...',
successfulTitle: 'Cài đặt thành công',
title: 'Cài đặt Plugin',
usedInApps: 'Được sử dụng trong các ứng dụng {{num}}',
description: 'Giới thiệu cài đặt plugin sau',
close: 'Đóng',
},
error: {
noReleasesFound: 'Không tìm thấy bản phát hành. Vui lòng kiểm tra kho lưu trữ GitHub hoặc URL đầu vào.',
fetchReleasesError: 'Không thể truy xuất bản phát hành. Vui lòng thử lại sau.',
inValidGitHubUrl: 'URL GitHub không hợp lệ. Vui lòng nhập URL hợp lệ theo định dạng: https://github.com/owner/repo',
},
marketplace: {
sortOption: {
newlyReleased: 'Mới phát hành',
mostPopular: 'Phổ biến nhất',
firstReleased: 'Phát hành lần đầu tiên',
recentlyUpdated: 'Cập nhật gần đây',
},
empower: 'Hỗ trợ phát triển AI của bạn',
viewMore: 'Xem thêm',
difyMarketplace: 'Thị trường Dify',
discover: 'Khám phá',
pluginsResult: '{{num}} kết quả',
moreFrom: 'Các ứng dụng khác từ Marketplace',
sortBy: 'Thành phố đen',
noPluginFound: 'Không tìm thấy plugin nào',
and: 'và',
},
task: {
installingWithError: 'Cài đặt {{installingLength}} plugins, {{successLength}} thành công, {{errorLength}} không thành công',
installing: 'Cài đặt {{installingLength}} plugins, 0 xong.',
installingWithSuccess: 'Cài đặt {{installingLength}} plugins, {{successLength}} thành công.',
installError: '{{errorLength}} plugin không cài đặt được, nhấp để xem',
installedError: '{{errorLength}} plugin không cài đặt được',
clearAll: 'Xóa tất cả',
},
from: 'Từ',
installAction: 'Cài đặt',
searchInMarketplace: 'Tìm kiếm trên Marketplace',
endpointsEnabled: '{{num}} bộ điểm cuối được kích hoạt',
install: '{{num}} lượt cài đặt',
findMoreInMarketplace: 'Tìm thêm trong Marketplace',
submitPlugin: 'Gửi plugin',
search: 'Tìm kiếm',
searchCategories: 'Danh mục tìm kiếm',
installPlugin: 'Cài đặt plugin',
searchPlugins: 'Tìm kiếm plugin',
fromMarketplace: 'Từ Marketplace',
allCategories: 'Tất cả các danh mục',
searchTools: 'Công cụ tìm kiếm...',
installFrom: 'CÀI ĐẶT TỪ',
}
export default translation

View File

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

View File

@@ -0,0 +1,31 @@
const translation = {
input: 'NHẬP',
result: 'KẾT QUẢ',
detail: 'CHI TIẾT',
tracing: 'THEO DÕI',
resultPanel: {
status: 'TRẠNG THÁI',
time: 'THỜI GIAN',
tokens: 'TỔNG SỐ TOKEN',
},
meta: {
title: 'DỮ LIỆU META',
status: 'Trạng thái',
version: 'Phiên bản',
executor: 'Người thực thi',
startTime: 'Thời gian bắt đầu',
time: 'Thời gian đã trôi qua',
tokens: 'Tổng số token',
steps: 'Các bước chạy',
},
resultEmpty: {
title: 'Chạy này chỉ xuất ra định dạng JSON,',
tipLeft: 'vui lòng truy cập ',
link: 'bảng chi tiết',
tipRight: ' xem nó.',
},
circularInvocationTip: 'Có lệnh gọi vòng tròn các công cụ/nút trong quy trình làm việc hiện tại.',
actionLogs: 'Nhật ký hành động',
}
export default translation

View File

@@ -0,0 +1,70 @@
const translation = {
common: {
welcome: '',
appUnavailable: 'Ứng dụng không khả dụng',
appUnknownError: 'Ứng dụng gặp lỗi không xác định',
},
chat: {
newChat: 'Cuộc trò chuyện mới',
pinnedTitle: 'Đã ghim',
unpinnedTitle: 'Trò chuyện',
newChatDefaultName: 'Cuộc trò chuyện mới',
resetChat: 'Đặt lại cuộc trò chuyện',
poweredBy: 'Được cung cấp bởi',
prompt: 'Lời nhắc',
privatePromptConfigTitle: 'Cài đặt cuộc trò chuyện',
publicPromptConfigTitle: 'Lời nhắc ban đầu',
configStatusDes: 'Trước khi bắt đầu, bạn có thể chỉnh sửa cài đặt cuộc trò chuyện',
configDisabled: 'Cài đặt của phiên trước đã được sử dụng cho phiên này.',
startChat: 'Bắt đầu trò chuyện',
privacyPolicyLeft: 'Vui lòng đọc ',
privacyPolicyMiddle: 'chính sách bảo mật',
privacyPolicyRight: ' được cung cấp bởi nhà phát triển ứng dụng.',
deleteConversation: {
title: 'Xóa cuộc trò chuyện',
content: 'Bạn có chắc muốn xóa cuộc trò chuyện này không?',
},
tryToSolve: 'Thử giải quyết',
temporarySystemIssue: 'Xin lỗi, hệ thống đang gặp sự cố tạm thời.',
},
generation: {
tabs: {
create: 'Tạo đơn lẻ',
batch: 'Tạo hàng loạt',
saved: 'Đã lưu',
},
savedNoData: {
title: 'Bạn chưa lưu kết quả nào!',
description: 'Bắt đầu tạo nội dung và tìm kết quả đã lưu của bạn ở đây.',
startCreateContent: 'Bắt đầu tạo nội dung',
},
title: 'Hoàn thiện AI',
queryTitle: 'Nội dung truy vấn',
completionResult: 'Kết quả hoàn thiện',
queryPlaceholder: 'Nhập nội dung truy vấn của bạn...',
run: 'Thực thi',
copy: 'Sao chép',
resultTitle: 'Kết quả AI',
noData: 'AI sẽ hiển thị kết quả ở đây.',
csvUploadTitle: 'Kéo và thả tệp CSV của bạn vào đây, hoặc ',
browse: 'chọn tệp',
csvStructureTitle: 'Tệp CSV phải tuân thủ cấu trúc sau:',
downloadTemplate: 'Tải xuống mẫu tại đây',
field: 'Trường',
batchFailed: {
info: '{{num}} lần thực thi thất bại',
retry: 'Thử lại',
outputPlaceholder: 'Không có nội dung đầu ra',
},
errorMsg: {
empty: 'Vui lòng nhập nội dung vào tệp đã tải lên.',
fileStructNotMatch: 'Cấu trúc tệp CSV tải lên không khớp.',
emptyLine: 'Dòng {{rowIndex}} trống',
invalidLine: 'Dòng {{rowIndex}}: {{varName}} không thể để trống',
moreThanMaxLengthLine: 'Dòng {{rowIndex}}: {{varName}} không thể chứa quá {{maxLength}} ký tự',
atLeastOne: 'Vui lòng nhập ít nhất một dòng vào tệp đã tải lên.',
},
},
}
export default translation

View File

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

View File

@@ -0,0 +1,158 @@
const translation = {
title: 'Công cụ',
createCustomTool: 'Tạo công cụ tùy chỉnh',
type: {
all: 'Tất cả',
builtIn: 'Tích hợp sẵn',
custom: 'Tùy chỉnh',
workflow: 'Quy trình làm việc',
},
contribute: {
line1: 'Tôi quan tâm đến việc ',
line2: 'đóng góp công cụ cho Dify.',
viewGuide: 'Xem hướng dẫn',
},
author: 'Tác giả',
auth: {
unauthorized: 'Chưa xác thực',
authorized: 'Đã xác thực',
setup: 'Thiết lập xác thực để sử dụng',
setupModalTitle: 'Thiết lập xác thực',
setupModalTitleDescription: 'Sau khi cấu hình thông tin đăng nhập, tất cả thành viên trong không gian làm việc có thể sử dụng công cụ này khi triển khai ứng dụng.',
},
includeToolNum: 'Bao gồm {{num}} công cụ',
addTool: 'Thêm công cụ',
createTool: {
title: 'Tạo công cụ tùy chỉnh',
editAction: 'Cấu hình',
editTitle: 'Chỉnh sửa công cụ tùy chỉnh',
name: 'Tên',
toolNamePlaceHolder: 'Nhập tên công cụ',
schema: 'Schema',
schemaPlaceHolder: 'Nhập schema OpenAPI của bạn vào đây',
viewSchemaSpec: 'Xem chi tiết OpenAPI-Swagger',
importFromUrl: 'Nhập từ URL',
importFromUrlPlaceHolder: 'https://...',
urlError: 'Vui lòng nhập URL hợp lệ',
examples: 'Ví dụ',
exampleOptions: {
json: 'Thời tiết (JSON)',
yaml: 'Cửa hàng thú cưng (YAML)',
blankTemplate: 'Mẫu trống',
},
availableTools: {
title: 'Công cụ hiện có',
name: 'Tên',
description: 'Mô tả',
method: 'Phương thức',
path: 'Đường dẫn',
action: 'Hành động',
test: 'Kiểm tra',
},
authMethod: {
title: 'Phương thức xác thực',
type: 'Loại xác thực',
keyTooltip: 'Khóa tiêu đề HTTP, bạn có thể để trống nếu không biết hoặc đặt một giá trị tùy chỉnh',
types: {
none: 'Không',
api_key: 'Khóa API',
apiKeyPlaceholder: 'Tên tiêu đề HTTP cho Khóa API',
apiValuePlaceholder: 'Nhập Khóa API',
},
key: 'Khóa',
value: 'Giá trị',
},
authHeaderPrefix: {
title: 'Loại xác thực',
types: {
basic: 'Cơ bản',
bearer: 'Bearer',
custom: 'Tùy chỉnh',
},
},
privacyPolicy: 'Chính sách bảo mật',
privacyPolicyPlaceholder: 'Vui lòng nhập chính sách bảo mật',
customDisclaimer: 'Tuyên bố từ chối trách nhiệm tùy chỉnh',
customDisclaimerPlaceholder: 'Vui lòng nhập tuyên bố từ chối trách nhiệm tùy chỉnh',
deleteToolConfirmTitle: 'Xóa công cụ này?',
deleteToolConfirmContent: 'Xóa công cụ là không thể hoàn tác. Người dùng sẽ không thể truy cập lại công cụ của bạn.',
toolInput: {
label: 'Tags',
methodParameter: 'Thông số',
name: 'Tên',
descriptionPlaceholder: 'Mô tả ý nghĩa của tham số',
methodSetting: 'Khung cảnh',
title: 'Công cụ nhập liệu',
methodSettingTip: 'Người dùng điền vào cấu hình công cụ',
required: 'Bắt buộc',
method: 'Phương pháp',
methodParameterTip: 'LLM lấp đầy trong quá trình suy luận',
description: 'Sự miêu tả',
labelPlaceholder: 'Chọn thẻ (tùy chọn)',
},
nameForToolCallTip: 'Chỉ hỗ trợ số, chữ cái và dấu gạch dưới.',
nameForToolCall: 'Công cụ gọi tên',
nameForToolCallPlaceHolder: 'Được sử dụng để nhận dạng máy, chẳng hạn như getCurrentWeather, list_pets',
descriptionPlaceholder: 'Mô tả ngắn gọn về mục đích của công cụ, ví dụ: lấy nhiệt độ cho một vị trí cụ thể.',
description: 'Sự miêu tả',
confirmTitle: 'Xác nhận để lưu ?',
confirmTip: 'Các ứng dụng sử dụng công cụ này sẽ bị ảnh hưởng',
},
test: {
title: 'Kiểm tra',
parametersValue: 'Tham số & Giá trị',
parameters: 'Tham số',
value: 'Giá trị',
testResult: 'Kết quả kiểm tra',
testResultPlaceholder: 'Kết quả kiểm tra sẽ hiển thị ở đây',
},
thought: {
using: 'Đang sử dụng',
used: 'Đã sử dụng',
requestTitle: 'Yêu cầu đến',
responseTitle: 'Phản hồi từ',
},
setBuiltInTools: {
info: 'Thông tin',
setting: 'Cài đặt',
toolDescription: 'Mô tả công cụ',
parameters: 'Tham số',
string: 'chuỗi',
number: 'số',
required: 'Bắt buộc',
infoAndSetting: 'Thông tin & Cài đặt',
file: 'tệp',
},
noCustomTool: {
title: 'Chưa có công cụ tùy chỉnh!',
content: 'Thêm và quản lý các công cụ tùy chỉnh của bạn ở đây để xây dựng ứng dụng AI.',
createTool: 'Tạo công cụ',
},
noSearchRes: {
title: 'Xin lỗi, không có kết quả!',
content: 'Chúng tôi không tìm thấy công cụ nào phù hợp với tìm kiếm của bạn.',
reset: 'Đặt lại tìm kiếm',
},
builtInPromptTitle: 'Lời nhắc',
toolRemoved: 'Công cụ đã bị xóa',
notAuthorized: 'Công cụ chưa được xác thực',
howToGet: 'Cách nhận',
addToolModal: {
category: 'loại',
manageInTools: 'Quản lý trong Công cụ',
type: 'kiểu',
add: 'thêm',
added: 'Thêm',
emptyTip: 'Đi tới "Quy trình làm việc -> Xuất bản dưới dạng công cụ"',
emptyTitle: 'Không có sẵn công cụ quy trình làm việc',
emptyTitleCustom: 'Không có công cụ tùy chỉnh nào có sẵn',
emptyTipCustom: 'Tạo công cụ tùy chỉnh',
},
toolNameUsageTip: 'Tên cuộc gọi công cụ để lý luận và nhắc nhở tổng đài viên',
customToolTip: 'Tìm hiểu thêm về các công cụ tùy chỉnh Dify',
openInStudio: 'Mở trong Studio',
noTools: 'Không tìm thấy công cụ',
copyToolName: 'Sao chép tên',
}
export default translation

View File

@@ -0,0 +1,782 @@
const translation = {
common: {
undo: 'Hoàn tác',
redo: 'Làm lại',
editing: 'Đang 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: '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 lúc',
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',
importSuccess: 'Nhập thành công',
backupCurrentDraft: 'Sao lưu dự thảo hiện tại',
chooseDSL: 'Chọn tệp DSL(yml)',
importDSLTip: 'Dự thảo hiện tại sẽ bị ghi đè. Xuất quy trình làm việc dưới dạng bản sao lưu trước khi nhập.',
importFailure: 'Nhập không thành công',
overwriteAndImport: 'Ghi đè và nhập',
importDSL: 'Nhập DSL',
syncingData: 'Đồng bộ hóa dữ liệu, chỉ vài giây.',
parallelTip: {
click: {
title: 'Bấm',
desc: 'để thêm',
},
drag: {
title: 'Kéo',
desc: 'Để kết nối',
},
limit: 'Song song được giới hạn trong các nhánh {{num}}.',
depthLimit: 'Giới hạn lớp lồng song song của {{num}} layer',
},
parallelRun: 'Chạy song song',
disconnect: 'Ngắt kết nối',
jumpToNode: 'Chuyển đến nút này',
addParallelNode: 'Thêm nút song song',
parallel: 'SONG SONG',
branch: 'NHÁNH',
featuresDocLink: 'Tìm hiểu thêm',
fileUploadTip: 'Các tính năng tải lên hình ảnh đã được nâng cấp để tải tệp lên.',
featuresDescription: 'Nâng cao trải nghiệm người dùng ứng dụng web',
ImageUploadLegacyTip: 'Bây giờ bạn có thể tạo các biến loại tệp trong biểu mẫu bắt đầu. Chúng tôi sẽ không còn hỗ trợ tính năng tải lên hình ảnh trong tương lai.',
importWarning: 'Thận trọng',
importWarningDetails: 'Sự khác biệt về phiên bản DSL có thể ảnh hưởng đến một số tính năng nhất định',
openInExplore: 'Mở trong Khám phá',
onFailure: 'Khi thất bại',
addFailureBranch: 'Thêm nhánh Fail',
loadMore: 'Tải thêm quy trình làm việc',
noHistory: 'Không có lịch sử',
},
env: {
envPanelTitle: 'Biến Môi Trường',
envDescription: 'Biến môi trường có thể được sử dụng để lưu trữ thông tin cá nhân và thông tin xác thực. Chúng chỉ được đọc và có thể được tách khỏi tệp DSL trong quá trình xuất.',
envPanelButton: 'Thêm Biến',
modal: {
title: 'Thêm Biến Môi Trường',
editTitle: 'Sửa Biến Môi Trường',
type: 'Loại',
name: 'Tên',
namePlaceholder: 'tên môi trường',
value: 'Giá trị',
valuePlaceholder: 'giá trị môi trường',
secretTip: 'Được sử dụng để xác định thông tin hoặc dữ liệu nhạy cảm, với cài đặt DSL được cấu hình để ngăn chặn rò rỉ.',
},
export: {
title: 'Xuất biến môi trường bí mật?',
checkbox: 'Xuất giá trị bí mật',
ignore: 'Xuất DSL',
export: 'Xuất DSL với giá trị bí mật',
},
},
chatVariable: {
panelTitle: 'Biến Hội Thoại',
panelDescription: 'Biến Hội Thoại được sử dụng để lưu trữ thông tin tương tác mà LLM cần ghi nhớ, bao gồm lịch sử hội thoại, tệp đã tải lên, tùy chọn người dùng. Chúng có thể đọc và ghi được.',
docLink: 'Truy cập tài liệu của chúng tôi để tìm hiểu thêm.',
button: 'Thêm Biến',
modal: {
title: 'Thêm Biến Hội Thoại',
editTitle: 'Chỉnh Sửa Biến Hội Thoại',
name: 'Tên',
namePlaceholder: 'Tên biến',
type: 'Loại',
value: 'Giá Trị Mặc Định',
valuePlaceholder: 'Giá trị mặc định, để trống nếu không đặt',
description: 'Mô tả',
descriptionPlaceholder: 'Mô tả biến',
editInJSON: 'Chỉnh sửa dưới dạng JSON',
oneByOne: 'Thêm từng cái một',
editInForm: 'Chỉnh sửa trong Biểu mẫu',
arrayValue: 'Giá trị',
addArrayValue: 'Thêm Giá trị',
objectKey: 'Khóa',
objectType: 'Loại',
objectValue: 'Giá Trị Mặc Định',
},
storedContent: 'Nội dung đã lưu',
updatedAt: 'Cập nhật lúc ',
},
changeHistory: {
title: 'Lịch sử thay đổi',
placeholder: 'Bạn chưa thay đổi gì cả',
clearHistory: 'Xóa lịch sử',
hint: 'Gợi ý',
hintText: 'Các hành động chỉnh sửa của bạn được theo dõi trong lịch sử thay đổi, được lưu trên thiết bị của bạn trong suốt phiên làm việc này. Lịch sử này sẽ bị xóa khi bạn thoát khỏi trình soạn thảo.',
stepBackward_one: '{{count}} bước lùi',
stepBackward_other: '{{count}} bước lùi',
stepForward_one: '{{count}} bước tiến',
stepForward_other: '{{count}} bước tiến',
sessionStart: 'Bắt đầu phiên',
currentState: 'Trạng thái hiện tại',
nodeTitleChange: 'Tiêu đề khối đã thay đổi',
nodeDescriptionChange: 'Mô tả khối đã thay đổi',
nodeDragStop: 'Khối đã di chuyển',
nodeChange: 'Khối đã thay đổi',
nodeConnect: 'Khối đã kết nối',
nodePaste: 'Khối đã dán',
nodeDelete: 'Khối đã xóa',
nodeAdd: 'Khối đã thêm',
nodeResize: 'Khối đã thay đổi kích thước',
noteAdd: 'Ghi chú đã thêm',
noteChange: 'Ghi chú đã thay đổi',
noteDelete: 'Ghi chú đã xóa',
edgeDelete: 'Khối đã ngắt kết nối',
},
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',
visionVariable: 'Biến tầm nhìn',
},
invalidVariable: 'Biến không hợp lệ',
rerankModelRequired: 'Trước khi bật Mô hình xếp hạng lại, vui lòng xác nhận rằng mô hình đã được định cấu hình thành công trong cài đặt.',
noValidTool: '{{field}} không chọn công cụ hợp lệ nào',
toolParameterRequired: '{{field}}: tham số [{{param}}] là bắt buộc',
},
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',
'searchTool': 'Công cụ tìm kiếm',
'agent': 'Chiến lược đại lý',
'plugin': 'Plugin',
},
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',
'assigner': 'Trình gán biến',
'iteration-start': 'Bắt đầu lặp',
'iteration': 'Lặp',
'parameter-extractor': 'Trình trích xuất tham số',
'list-operator': 'Toán tử danh sách',
'document-extractor': 'Trình trích xuất tài liệu',
'agent': 'Người đại lý',
},
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.',
'assigner': 'Nút gán biến được sử dụng để gán giá trị cho các biến có thể ghi (như các biến hội thoạ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.',
'document-extractor': 'Được sử dụng để phân tích cú pháp các tài liệu đã tải lên thành nội dung văn bản dễ hiểu bởi LLM.',
'list-operator': 'Được sử dụng để lọc hoặc sắp xếp nội dung mảng.',
'agent': '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',
},
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: 'Giới thiệu',
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',
optional: '(tùy chọn)',
},
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',
},
errorHandle: {
none: {
title: 'Không ai',
desc: 'Nút sẽ ngừng chạy nếu xảy ra ngoại lệ và không được xử lý',
},
defaultValue: {
title: 'Giá trị mặc định',
desc: 'Khi xảy ra lỗi, hãy chỉ định nội dung đầu ra tĩnh.',
tip: 'Nếu lỗi, sẽ trả về giá trị dưới đó.',
inLog: 'Ngoại lệ nút, xuất theo giá trị mặc định.',
output: 'Giá trị mặc định đầu ra',
},
failBranch: {
title: 'Chi nhánh thất bại',
desc: 'Khi xảy ra lỗi, nó sẽ thực thi nhánh ngoại lệ',
customize: 'Chuyển đến canvas để tùy chỉnh logic nhánh thất bại.',
customizeTip: 'Khi nhánh fail được kích hoạt, các ngoại lệ do các nút ném sẽ không chấm dứt quá trình. Thay vào đó, nó sẽ tự động thực thi nhánh lỗi được xác định trước, cho phép bạn linh hoạt cung cấp thông báo lỗi, báo cáo, bản sửa lỗi hoặc bỏ qua các hành động.',
inLog: 'Node exception, sẽ tự động thực thi nhánh fail. Đầu ra nút sẽ trả về loại lỗi và thông báo lỗi và chuyển chúng đến hạ lưu.',
},
partialSucceeded: {
tip: 'Có {{num}} node trong quá trình chạy bất thường, vui lòng truy tìm để kiểm tra nhật ký.',
},
tip: 'Chiến lược xử lý ngoại lệ, được kích hoạt khi một nút gặp phải ngoại lệ.',
title: 'Xử lý lỗi',
},
retry: {
retry: 'Thử lại',
maxRetries: 'Số lần thử lại tối đa',
retryInterval: 'Khoảng thời gian thử lại',
retryTimes: 'Thử lại {{lần}} lần khi không thành công',
retrying: 'Thử lại...',
retrySuccessful: 'Thử lại thành công',
retryFailed: 'Thử lại không thành công',
retryFailedTimes: '{{lần}} lần thử lại không thành công',
retries: '{{số}} Thử lại',
retryOnFailure: 'Thử lại khi không thành công',
times: 'lần',
ms: 'Ms',
},
},
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',
},
binaryFileVariable: 'Biến tệp nhị phân',
type: 'Kiểu',
extractListPlaceholder: 'Nhập chỉ mục mục danh sách, nhập \'/\' chèn biến',
curl: {
title: 'Nhập từ cURL',
placeholder: 'Dán chuỗi cURL vào đâ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',
'regex match': 'Trận đấu Regex',
'exists': 'Tồn tại',
'not exists': 'không tồn tại',
'not in': 'không có trong',
'in': 'trong',
'all of': 'tất cả',
},
enterValue: 'Nhập giá trị',
addCondition: 'Thêm điều kiện',
conditionNotSetup: 'Điều kiện chưa được thiết lập',
selectVariable: 'Chọn biến...',
optionName: {
video: 'Video',
image: 'Ảnh',
url: 'Địa chỉ',
audio: 'Âm thanh',
doc: 'Doc',
localUpload: 'Tải lên cục bộ',
},
addSubVariable: 'Biến phụ',
select: 'Lựa',
},
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',
},
assigner: {
'assignedVariable': 'Biến Được Gán',
'writeMode': 'Chế Độ Ghi',
'writeModeTip': 'Khi BIẾN ĐƯỢC GÁN là một mảng, chế độ thêm sẽ thêm vào cuối.',
'over-write': 'Ghi đè',
'append': 'Thêm vào',
'plus': 'Cộng',
'clear': 'Xóa',
'setVariable': 'Đặt Biến',
'variable': 'Biến',
'operations': {
'-=': '-=',
'over-write': 'Ghi đè lên',
'clear': 'Trong',
'append': 'Thêm',
'title': 'Hoạt động',
'*=': '*=',
'/=': '/=',
'extend': 'Mở rộng',
'+=': '+=',
'set': 'Cài',
'overwrite': 'Ghi đè lên',
},
'setParameter': 'Đặt tham số...',
'selectAssignedVariable': 'Chọn biến được gán...',
'noVarTip': 'Nhấp vào nút "+" để thêm biến',
'assignedVarsDescription': 'Các biến được gán phải là các biến có thể ghi, chẳng hạn như các biến hội thoại.',
'varNotSet': 'Biến KHÔNG được đặt',
'noAssignedVars': 'Không có biến được gán sẵn có',
'variables': 'Biế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',
},
json: 'JSON được tạo bởi công cụ',
},
},
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',
ErrorMethod: {
operationTerminated: 'Chấm dứt',
removeAbnormalOutput: 'loại bỏ-bất thường-đầu ra',
continueOnError: 'Tiếp tục lỗi',
},
comma: ',',
error_other: '{{đếm}} Lỗi',
error_one: '{{đếm}} Lỗi',
MaxParallelismTitle: 'Song song tối đa',
parallelPanelDesc: 'Ở chế độ song song, các tác vụ trong quá trình lặp hỗ trợ thực thi song song.',
parallelMode: 'Chế độ song song',
parallelModeEnableTitle: 'Đã bật Chế độ song song',
errorResponseMethod: 'Phương pháp phản hồi lỗi',
MaxParallelismDesc: 'Tính song song tối đa được sử dụng để kiểm soát số lượng tác vụ được thực hiện đồng thời trong một lần lặp.',
answerNodeWarningDesc: 'Cảnh báo chế độ song song: Các nút trả lời, bài tập biến hội thoại và các thao tác đọc/ghi liên tục trong các lần lặp có thể gây ra ngoại lệ.',
parallelModeEnableDesc: 'Trong chế độ song song, các tác vụ trong các lần lặp hỗ trợ thực thi song song. Bạn có thể định cấu hình điều này trong bảng thuộc tính ở bên phải.',
parallelModeUpper: 'CHẾ ĐỘ SONG SONG',
},
note: {
editor: {
openLink: 'Mở',
italic: 'Nghiêng',
link: 'Liên kết',
medium: 'Đau vừa',
small: 'Nhỏ',
placeholder: 'Viết ghi chú của bạn...',
large: 'Lớn',
showAuthor: 'Hiển thị tác giả',
bulletList: 'Danh sách dấu đầu dòng',
bold: 'Dũng cảm',
unlink: 'Hủy liên kết',
invalidUrl: 'URL không hợp lệ',
strikethrough: 'Gạch ngang',
enterUrl: 'Nhập URL...',
},
addNote: 'Thêm ghi chú',
},
docExtractor: {
outputVars: {
text: 'Văn bản trích xuất',
},
learnMore: 'Tìm hiểu thêm',
inputVar: 'Biến đầu vào',
supportFileTypes: 'Các loại tệp hỗ trợ: {{types}}.',
},
listFilter: {
outputVars: {
last_record: 'Kỷ lục cuối cùng',
first_record: 'Kỷ lục đầu tiên',
result: 'Lọc kết quả',
},
orderBy: 'Đặt hàng theo',
selectVariableKeyPlaceholder: 'Chọn khóa biến phụ',
inputVar: 'Biến đầu vào',
desc: 'DESC',
filterConditionKey: 'Khóa điều kiện bộ lọc',
filterConditionComparisonValue: 'Giá trị Điều kiện lọc',
limit: 'Top N',
filterCondition: 'Điều kiện lọc',
asc: 'ASC',
filterConditionComparisonOperator: 'Toán tử so sánh điều kiện bộ lọc',
extractsCondition: 'Giải nén mục N',
},
agent: {
strategy: {
selectTip: 'Chọn chiến lược tác nhân',
searchPlaceholder: 'Chiến lược tác nhân tìm kiếm',
shortLabel: 'Chiến lược',
configureTipDesc: 'Sau khi cấu hình chiến lược tác nhân, nút này sẽ tự động tải các cấu hình còn lại. Chiến lược sẽ ảnh hưởng đến cơ chế suy luận công cụ nhiều bước.',
tooltip: 'Các chiến lược Agentic khác nhau xác định cách hệ thống lập kế hoạch và thực hiện các cuộc gọi công cụ nhiều bước',
label: 'Chiến lược đại lý',
configureTip: 'Vui lòng định cấu hình chiến lược tác nhân.',
},
pluginInstaller: {
install: 'Cài đặt',
installing: 'Cài đặt',
},
modelNotInMarketplace: {
title: 'Mô hình chưa được cài đặt',
manageInPlugins: 'Quản lý trong Plugins',
desc: 'Mô hình này được cài đặt từ kho lưu trữ cục bộ hoặc GitHub. Vui lòng sử dụng sau khi cài đặt.',
},
modelNotSupport: {
desc: 'Phiên bản plugin đã cài đặt không cung cấp mô hình này.',
title: 'Mô hình không được hỗ trợ',
descForVersionSwitch: 'Phiên bản plugin đã cài đặt không cung cấp mô hình này. Nhấp để chuyển đổi phiên bản.',
},
modelSelectorTooltips: {
deprecated: 'Mô hình này không còn được dùng nữa',
},
outputVars: {
files: {
title: 'Tệp do tác nhân tạo',
transfer_method: 'Phương thức chuyển khoản. Giá trị là remote_url hoặc local_file',
upload_file_id: 'Tải lên id tệp',
type: 'Loại hỗ trợ. Bây giờ chỉ hỗ trợ hình ảnh',
url: 'URL hình ảnh',
},
json: 'JSON do tác nhân tạo',
text: 'Nội dung do tác nhân tạo',
},
checkList: {
strategyNotSelected: 'Chiến lược không được chọn',
},
installPlugin: {
install: 'Cài đặt',
cancel: 'Hủy',
title: 'Cài đặt Plugin',
desc: 'Giới thiệu cài đặt plugin sau',
changelog: 'Nhật ký thay đổi',
},
toolNotAuthorizedTooltip: '{{công cụ}} Không được ủy quyền',
unsupportedStrategy: 'Chiến lược không được hỗ trợ',
toolNotInstallTooltip: '{{tool}} không được cài đặt',
strategyNotFoundDescAndSwitchVersion: 'Phiên bản plugin đã cài đặt không cung cấp chiến lược này. Nhấp để chuyển đổi phiên bản.',
strategyNotInstallTooltip: '{{strategy}} không được cài đặt',
modelNotInstallTooltip: 'Mô hình này không được cài đặt',
strategyNotSet: 'Chiến lược tác nhân không được thiết lập',
linkToPlugin: 'Liên kết đến Plugins',
configureModel: 'Định cấu hình mô hình',
pluginNotInstalledDesc: 'Plugin này được cài đặt từ GitHub. Vui lòng vào Plugins để cài đặt lại',
modelNotSelected: 'Mô hình không được chọn',
learnMore: 'Tìm hiểu thêm',
pluginNotInstalled: 'Plugin này chưa được cài đặt',
model: 'mẫu',
pluginNotFoundDesc: 'Plugin này được cài đặt từ GitHub. Vui lòng vào Plugins để cài đặt lại',
maxIterations: 'Số lần lặp lại tối đa',
tools: 'Công cụ',
notAuthorized: 'Không được ủy quyền',
strategyNotFoundDesc: 'Phiên bản plugin đã cài đặt không cung cấp chiến lược này.',
toolbox: 'hộp công cụ',
},
},
tracing: {
stopBy: 'Dừng bởi {{user}}',
},
variableReference: {
noAssignedVars: 'Không có biến được gán sẵn có',
noAvailableVars: 'Không có biến khả dụng',
assignedVarsDescription: 'Các biến được gán phải là các biến có thể ghi, chẳng hạn như',
conversationVars: 'Biến cuộc trò chuyện',
noVarsForOperation: 'Không có biến nào có sẵn để gán với hoạt động đã chọn.',
},
}
export default translation