feat: translations (#3176)

This commit is contained in:
crazywoola 2024-04-08 23:17:16 +08:00 • committed by GitHub
commit 1382f10433
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
40 changed files with 2595 additions and 696 deletions

View file

@ -266,18 +266,32 @@ const translation = {
queryNoBeEmpty: 'Truy vấn phải được thiết lập trong lời nhắc',
},
variableConig: {
modalTitle: 'Thiết lập trường',
description: 'Thiết lập cho biến {{varName}}',
fieldType: 'Loại Trường',
string: 'Văn Bản Ngắn',
paragraph: 'Đoạn Văn',
select: 'Chọn',
notSet: 'Không được thiết lập, hãy thử nhập {{input}} vào lời nhắc tiền.',
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',
'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': 'Chọn',
'number': 'Số',
'notSet': 'Không 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 lặp lại',
atLeastOneOption: 'Ít nhất một tùy chọn là bắt buộc',
optionRepeat: 'Có các tùy chọn trùng lặp',
},
},
vision: {
name: 'Tầm nhìn',
@ -348,6 +362,7 @@ const translation = {
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: 'N-to-1 Truy xuất',
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. Tốt nhất cho các ứng dụng có Kiến thức cụ thể, giới hạn.',

View file

@ -5,13 +5,19 @@ const translation = {
table: {
header: {
time: 'Thời gian',
endUser: 'Người dùng cuối',
input: 'Đầu vào',
output: 'Đầu ra',
summary: 'Tiêu đề',
messageCount: 'Số lượng tin nhắn',
userRate: 'Tỷ lệ người dùng',
adminRate: 'Tỷ lệ quản trị',
endUser: 'Người Dùng Cuối',
input: 'Đầu Vào',
output: 'Đầu Ra',
summary: 'Tiêu Đề',
messageCount: 'Số Lượng Tin Nhắn',
userRate: 'Tỷ Lệ Người Dùng',
adminRate: 'Tỷ Lệ Quản Trị',
startTime: 'THỜI GIAN BẮT ĐẦU',
status: 'TRẠNG THÁI',
runtime: 'THỜI GIAN CHẠY',
tokens: 'MÃ',
user: 'NGƯỜI DÙNG CUỐI',
version: 'PHIÊN BẢN',
},
pagination: {
previous: 'Trước',
@ -21,49 +27,57 @@ const translation = {
noChat: 'Chưa có cuộc trò chuyện',
noOutput: 'Không có đầu ra',
element: {
title: 'Có ai ở đó không?',
content: 'Quan sát và ghi 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 trí tuệ nhân tạo. Bạn có thể thử <shareLink>chia sẻ</shareLink> hoặc <testLink>kiểm tra</testLink> ứng dụng Web của mình, sau đó quay lại trang này.',
title: 'Có ai đó ở đó không?',
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 trí tuệ nhân tạo. Bạn có thể thử <shareLink>chia sẻ</shareLink> hoặc <testLink>kiểm tra</testLink> ứng dụng Web một cách tự nhiên, sau đó quay lại trang này.',
},
},
},
detail: {
time: 'Thời gian',
conversationId: 'ID Cuộc trò chuyện',
promptTemplate: 'Mẫu Nhắc nhở',
promptTemplateBeforeChat: 'Mẫu Nhắc nhở Trước Cuộc trò chuyện · Như Tin nhắn Hệ thống',
annotationTip: 'Cải thiện Được Đánh Dấu bởi {{user}}',
conversationId: 'ID Cuộc Trò Chuyện',
promptTemplate: 'Mẫu Nhắc Nhở',
promptTemplateBeforeChat: 'Mẫu Nhắc Nhở Trước Trò Chuyện · Như Tin Nhắn Hệ Thống',
annotationTip: 'Cải Thiện Được Đánh Dấu bởi {{user}}',
timeConsuming: '',
second: 'giây',
tokenCost: 'Token đã tiêu',
tokenCost: 'Chi Phí Mã',
loading: 'đang tải',
operation: {
like: 'thích',
dislike: 'không thích',
addAnnotation: 'Thêm Cải thiện',
editAnnotation: 'Chỉnh sửa Cải thiện',
annotationPlaceholder: 'Nhập câu trả lời mong muốn mà bạn muốn trí tuệ nhân tạo trả lời, có thể được sử dụng cho việc điều chỉnh mô hình và cải thiện liên tục chất lượng tạo văn bản trong tương lai.',
addAnnotation: 'Thêm Cải Thiện',
editAnnotation: 'Chỉnh Sửa Cải Thiện',
annotationPlaceholder: 'Nhập câu trả lời mong muốn mà bạn muốn trí tuệ nhân tạo trả lời, điều này có thể được sử dụng để điều chỉnh mô hình và cải thiện liên tục chất lượng sinh văn bản trong tương lai.',
},
variables: 'Biến',
uploadImages: 'Ảnh đã tải lên',
uploadImages: 'Ảnh Đã Tải Lên',
},
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: 'Từ Đầu tháng đến nay',
quarterToDate: 'Từ Đầu quý đến nay',
yearToDate: 'Từ Đầu năm đến nay',
allTime: 'Tất cả thời gian',
last7days: '7 Ngày Qua',
last4weeks: '4 Tuần Qua',
last3months: '3 Tháng Qua',
last12months: '12 Tháng Qua',
monthToDate: 'Tháng Đến Hiện Tại',
quarterToDate: 'Quý Đến Hiện Tại',
yearToDate: 'Năm Đến Hiện Tại',
allTime: 'Tất Cả Thời Gian',
},
annotation: {
all: 'Tất cả',
annotated: 'Cải thiện Đã Đánh Dấu ({{count}} mục)',
annotated: 'Cải Thiện Đã Đánh Dấu ({{count}} mục)',
not_annotated: 'Chưa Đánh Dấu',
},
},
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ý',
},
promptLog: 'Nhật Ký Nhắc Nhở',
viewLog: 'Xem Nhật Ký',
}
export default translation

View file

@ -2,14 +2,14 @@ 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 của bạn từ bảng điều khiển OpenAI',
placeholder: 'Khóa API OpenAI của bạn (ví dụ: sk-xxxx)',
getKeyTip: 'Lấy API Key của bạn từ bảng điều khiển OpenAI',
placeholder: 'Khóa API OpenAI của bạn (vd. sk-xxxx)',
},
apiKeyInfo: {
cloud: {
trial: {
title: 'Bạn đang sử dụng hạn mức thử nghiệm của {{providerName}}.',
description: 'Hạn mức thử nghiệm được cung cấp cho việc thử nghiệm của bạn. Trước khi hạn mức cuộc gọi thử nghiệm được sử dụng hết, vui lòng thiết lập nhà cung cấp mô hình của riêng bạn hoặc mua thêm hạn mức.',
description: 'Hạn mức thử nghiệm được cung cấp cho việc kiểm tra của bạn. Trước khi hết lượt gọi hạn mức thử nghiệm, vui lòng thiết lập nhà cung cấp mô hình của riêng bạn hoặc mua thêm hạn mức.',
},
exhausted: {
title: 'Hạn mức thử nghiệm của bạn đã được sử dụng hết, vui lòng thiết lập APIKey của bạn.',
@ -25,66 +25,66 @@ const translation = {
callTimes: 'Số lần gọi',
usedToken: 'Token đã sử dụng',
setAPIBtn: 'Đi đến thiết lập nhà cung cấp mô hình',
tryCloud: 'Hoặc thử phiên bản đám mây của Dify với báo giá miễn phí',
tryCloud: 'Hoặc thử phiên bản điện toán đám mây của Dify với báo giá miễn phí',
},
overview: {
title: 'Tổng quan',
appInfo: {
explanation: 'WebApp Trí tuệ nhân tạo Sẵn sàng sử dụng',
accessibleAddress: 'URL Công cộng',
explanation: 'Ứng dụng web AI sẵn sàng sử dụng',
accessibleAddress: 'Địa chỉ công cộng',
preview: 'Xem trước',
regenerate: 'Tạo lại',
preUseReminder: 'Vui lòng kích hoạt WebApp trước khi tiếp tục.',
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 WebApp',
webName: 'Tên WebApp',
webDesc: 'Mô tả WebApp',
webDescTip: 'Văn bản này sẽ được hiển thị trên phía máy khách, 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 WebApp',
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ẽ được hiển thị ở phía máy khách, 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ữ',
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',
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 truy cập hiểu về dữ liệu mà ứng dụng thu thập, xem <privacyPolicyLink>Chính sách Bảo mật</privacyPolicyLink> của Dify.',
privacyPolicyTip: 'Giúp khách truy cập hiểu được dữ liệu mà ứng dụng thu thập, xem <privacyPolicyLink>Chính sách bảo mật</privacyPolicyLink> của Dify.',
},
},
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 ở bất kỳ đâu trên trang web của bạn, thêm iframe này vào mã html của bạn.',
scripts: 'Để thêm ứng dụng trò chuyện vào phía dưới bên phải của trang web của bạn, thêm mã này vào mã html của bạn.',
chromePlugin: 'Cài đặt Phần mở rộng Chrome Dify Chatbot',
iframe: 'Để thêm ứng dụng trò chuyện ở 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 của bạn, 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 để chia sẻ ứng dụng',
download: 'Tải về Mã QR',
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 WebApp Trí tuệ nhân tạo',
explanation: 'Bạn có thể tùy chỉnh giao diện trước của ứng dụng Web để phù hợp với kịch bản và nhu cầu phong cách của bạn.',
title: 'Tùy chỉnh ứng dụng web AI',
explanation: 'Bạn có thể tùy chỉnh giao diện phía trước của Ứng dụng Web để phù hợp với kịch bản và nhu cầu phong cách của mình.',
way1: {
name: 'Fork mã nguồn máy khách, chỉnh sửa và triển khai lên Vercel (được khuyến nghị)',
step1: 'Fork mã nguồn máy khách và chỉnh sửa',
step1Tip: 'Nhấn vào đây để fork mã nguồn vào tài khoản GitHub của bạn và chỉnh sửa mã',
name: 'Fork mã nguồn của máy khách, sửa đổi và triển khai lên Vercel (được khuyến nghị)',
step1: 'Fork mã nguồn của máy khách 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 mã',
step1Operation: 'Dify-WebClient',
step2: 'Triển khai lên Vercel',
step2Tip: 'Nhấn vào đây để nhập kho vào Vercel và triển khai',
step2Tip: 'Nhấp vào đây để nhập kho vào Vercel và triển khai',
step2Operation: 'Nhập kho',
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 máy khách để gọi API và triển khai nó lên máy chủ',
name: 'Viết mã phía máy khách để gọi API và triển khai lên một máy chủ',
operation: 'Tài liệu',
},
},
@ -92,8 +92,8 @@ const translation = {
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 API Dịch vụ',
doc: 'Tài liệu Tham khảo API',
accessibleAddress: 'Điểm cuối Dịch vụ API',
doc: 'Tài liệu tham khảo API',
},
status: {
running: 'Đang hoạt động',
@ -105,33 +105,37 @@ const translation = {
ms: 'ms',
tokenPS: 'Token/s',
totalMessages: {
title: 'Tổng số tin nhắn',
explanation: 'Số lượt tương tác AI hàng ngày; không bao gồm kỹ thuật kịch bản / gỡ lỗi.',
title: 'Tổng Số Tin Nhắn',
explanation: 'Số lần tương tác AI hàng ngày; không tính việc kỹ thuật hóa/nhái lại câu hỏi.',
},
activeUsers: {
title: 'Người dùng hoạt động',
explanation: 'Người dùng duy nhất tham gia trò chuyện với AI; không bao gồm kỹ thuật kịch bản / gỡ lỗi.',
title: 'Người Dùng Hoạt Động',
explanation: 'Người dùng duy nhất tham gia trò chuyện với AI; không tính việc kỹ thuật hóa/nhái lại câu hỏi.',
},
tokenUsage: {
title: 'Sử dụng Token',
explanation: 'Phản ánh việc sử dụng token hàng ngày của mô hình ngôn ngữ cho ứng dụng, hữu ích cho mục đích kiểm soát chi phí.',
consumed: 'Đã tiêu',
title: 'Sử Dụng Token',
explanation: 'Phản ánh việc sử dụng hàng ngày của mô hình ngôn ngữ 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 trong phiên',
explanation: 'Số lượt giao tiếp giữa người dùng và AI liên tục; cho các ứng dụng dựa trên cuộc trò chuyện.',
title: 'Trung Bình Tương Tác Phiên',
explanation: 'Số lần giao tiếp liên tục giữa người dùng và AI; cho các ứng dụng dựa trên cuộc trò chuyện.',
},
avgUserInteractions: {
title: 'Trung Bình Tương Tác 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. Số liệu này phản ánh sự kết dính của người dùng.',
},
userSatisfactionRate: {
title: 'Tỷ lệ Hài lòng của Người dùng',
explanation: 'Số lượng thích cho mỗi 1.000 tin nhắn. Điều này cho thấy tỷ lệ phản hồi mà người dùng rất hài lòng.',
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. Điều 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: 'Trung bình Thời gian Phản hồi',
explanation: 'Thời gian (ms) để AI xử lý / phản hồi; cho các ứng dụng dựa trên văn bản.',
title: 'Thời Gian Trả Lời Trung Bình',
explanation: 'Thời gian (ms) để AI xử lý/phản hồi; cho các ứng dụng dựa trên văn bản.',
},
tps: {
title: 'Tốc độ Đầu ra Token',
explanation: 'Đo 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 cho đến khi hoàn thành đầu ra.',
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.',
},
},
}

View file

@ -1,39 +1,60 @@
const translation = {
createApp: 'Tạo ứng dụng mới',
createApp: 'TẠO ỨNG DỤNG',
types: {
all: 'Tất cả',
assistant: 'Trợ lý',
chatbot: 'Chatbot',
agent: 'Đại lý',
workflow: 'Quy trình',
completion: 'Hoàn thành',
},
modes: {
completion: 'Máy tạo văn bản',
chat: 'Trợ lý Cơ bản',
},
createFromConfigFile: 'Tạo ứng dụng từ tệp cấu hình',
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ể đảo ngượ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 và nhật ký mẫu sẽ bị xóa vĩnh viễn.',
'Việc xóa ứng dụng là không thể đảo ngượ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 và nhật ký nhắc sẽ bị xóa vĩnh viễn.',
appDeleted: 'Ứng dụng đã bị xóa',
appDeleteFailed: 'Xóa ứng dụng thất bại',
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',
appNamePlaceholder: 'Vui lòng nhập tên của ứng dụng',
newApp: {
startToCreate: 'Hãy bắt đầu với ứng dụng mới của bạn',
captionName: 'Biểu tượng & tên ứng dụng',
captionAppType: 'Bạn muốn tạo loại ứng dụng nào?',
startFromBlank: 'Tạo từ Trắng',
startFromTemplate: 'Tạo từ Mẫu',
captionAppType: 'Loại ứng dụng bạn muốn tạo?',
chatbotDescription: 'Xây dựng một ứng dụng dựa trên trò chuyện. Ứng dụng này sử dụng định dạng câu hỏi và trả lời, 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 các gợi ý, như tạo bài báo, tóm tắt, dịch và nhiều hơn nữa.',
completionWarning: 'Loại ứng dụng này sẽ không được hỗ trợ nữa.',
agentDescription: 'Xây dựng một Đại lý 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. Nó 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, mà không cần phải sửa đổi các nhắc nhở tích hợp sẵn. 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ý Quy trình 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 nhắc nhở tích hợp sẵn. 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 dựa trên trò chuyện. Ứng dụng này sử dụng định dạng câu hỏi và trả lời, cho phép nhiều vòng trò chuyện liên tục.',
agentAssistant: 'Trợ lý Mới cho Đại lý',
completeApp: 'Máy Tạo Văn Bản',
agentAssistant: 'Trợ lý Đại lý 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 ra văn bản chất lượng cao dựa trên các mẫu, như việc 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ột mẫu',
hideTemplates: 'Quay lại lựa chọn chế độ',
'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 các gợi ý, như tạo bài báo, tóm tắt, dịch 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',
@ -42,13 +63,28 @@ const translation = {
appCreated: 'Ứng dụng đã được tạo',
appCreateFailed: 'Không thể tạo ứng dụng',
},
editApp: {
startToEdit: 'Chỉnh sửa ứng dụng',
},
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',
emoji: {
ok: 'Đồng ý',
cancel: 'Hủy',
},
switch: 'Chuyển sang Quy trình Quản lý',
switchTipStart: 'Một bản sao ứng dụng mới sẽ được tạo cho bạn và bản sao mới sẽ chuyển sang Quy trình Quản lý. Bản sao mới sẽ ',
switchTip: 'không cho phép',
switchTipEnd: ' chuyển lại Cơ bản Quản lý.',
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: 'Đại lý',
workflow: 'Quy trình',
completion: 'Hoàn thành',
},
}
export default translation

View file

@ -400,6 +400,7 @@ const translation = {
promptEng: 'Orchestrate',
apiAccess: 'Truy cập API',
logAndAnn: 'Nhật ký & Thông báo',
logs: 'Nhật ký',
},
environment: {
testing: 'TESTING',
@ -477,6 +478,10 @@ const translation = {
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',

View file

@ -18,7 +18,7 @@ const translation = {
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 các ứng dụng của bạn dựa trên các mẫu.',
allCategories: 'Tất cả Danh mục',
allCategories: 'Tất cả danh mục',
},
appCard: {
addToWorkspace: 'Thêm vào Kho lưu trữ',

View file

@ -1,5 +1,23 @@
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',
},
}
export default translation

View file

@ -1,3 +1,333 @@
const translation = {}
const translation = {
common: {
editing: 'Chỉnh sửa',
autoSaved: 'Tự động lưu',
unpublished: 'Chưa xuất bản',
published: 'Đã xuất bản',
publish: 'Xuất bản',
update: 'Cập nhật',
run: 'Chạy',
running: 'Đang chạy',
inRunMode: 'Ở Chế độ chạy',
inPreview: 'Ở 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 soạn thảo',
conversationLog: 'Nhật ký cuộc trò chuyện',
features: 'Tính năng',
debugAndPreview: 'Debug và Xem trước',
restart: 'Khởi động lại',
currentDraft: 'Bản nháp hiện tại',
currentDraftUnpublished: 'Bản nháp hiện tại chưa xuất bản',
latestPublished: 'Bản 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 chưa kết nối với bất kỳ điều gì',
maxTreeDepth: 'Giới hạn tối đa của {{depth}} nút mỗi nhánh',
needEndNode: 'Khối Kết thúc phải được thêm vào',
needAnswerNode: 'Khối Trả lời phải được thêm vào',
workflowProcess: 'Quy trình làm việc',
notRunning: 'Chưa chạy',
previewPlaceholder: 'Nhập nội dung vào ô dưới đây để 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 vẫn muốn xóa nó?',
},
insertVarTip: 'Nhấn phím \'/\' để chèn nhanh',
},
errorMsg: {
fieldRequired: '{{field}} là bắt buộc',
authRequired: 'Yêu cầu xác thực',
invalidJson: '{{field}} 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 Rerank',
},
invalidVariable: 'Biến không hợp lệ',
},
singleRun: {
testRun: 'Chạy thử ',
startRun: 'Bắt đầu chạy',
running: 'Đang chạy',
},
tabs: {
'searchBlock': 'Tìm kiếm khối',
'blocks': 'Khối',
'builtInTool': 'Công cụ tích hợp',
'customTool': 'Công cụ tùy chỉnh',
'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ả',
},
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': 'Bộ 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': 'Bộ gán biến',
},
blocksAbout: {
'start': 'Xác định các tham số ban đầu cho việc khởi chạy một quy trình',
'end': 'Xác định kết thúc và loại kết quả của một quy trình',
'answer': 'Xác định nội dung trả lời của một cuộc trò chuyện chat',
'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 bạn truy vấn nội dung văn bản liên quan đến các câu hỏi của người dùng từ Kiến thức',
'question-classifier': 'Xác định các điều kiện phân loại của các câu hỏi của người dùng, LLM có thể xác định 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 bạn chia quy trình thành hai nhánh dựa trên các đ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 sử dụ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': 'Gán biến trong các nhánh khác nhau vào cùng một biến để đạt được cấu hình thống nhất của các nút sau',
},
operator: {
zoomIn: 'Phóng to',
zoomOut: 'Thu nhỏ',
zoomTo50: 'Thu phóng đến 50%',
zoomTo100: 'Thu phóng đến 100%',
zoomToFit: 'Thu phóng vừa với cửa sổ',
},
panel: {
userInputField: 'Trường nhập của người dùng',
changeBlock: 'Thay đổi Khối',
helpLink: 'Liên kết Trợ giúp',
about: 'Về',
createdBy: 'Được 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 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: 'Sắp xếp các khối',
change: 'Thay đổi',
},
nodes: {
common: {
outputVars: 'Biến đầu ra',
insertVarTip: 'Chèn Biến',
memory: {
memory: 'Bộ nhớ',
memoryTip: 'Cài đặt bộ nhớ 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: 'Các ký ức',
tip: 'Bộ nhớ trò chuyện',
builtIn: 'Tích hợp sẵn',
},
},
start: {
required: 'bắt buộc',
inputField: 'Trường nhập',
builtInVar: 'Biến tích hợp sẵn',
outputVars: {
query: 'Đầu vào 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: 'Thiết lập các đầu vào có thể được 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',
'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: 'bối cảnh',
contextTooltip: 'Bạn có thể nhập Kiến thức dưới dạng bối cảnh',
notSetContextInPromptTip: 'Để bật tính năng bối cảnh, vui lòng điền vào biến ngữ cảnh trong PROMPT.',
prompt: 'nhắc nhở',
roleDescription: {
system: 'Đưa ra chỉ thị cấp cao cho cuộc trò chuyện',
user: 'Cung cấp chỉ thị, truy vấn hoặc bất kỳ đầu vào dựa trên 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 các 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: 'Tạo nội dung',
usage: 'Thông tin Sử dụng Mô hình',
},
singleRun: {
variable: 'Biến',
},
},
knowledgeRetrieval: {
queryVariable: 'Biến Truy vấn',
knowledge: 'Kiến thức',
outputVars: {
output: 'Dữ liệu phân đoạn 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: 'Các siêu dữ liệu khác',
},
},
http: {
inputVars: 'Biến đầu vào',
api: 'API',
apiPlaceholder: 'Nhập URL, nhập ‘/’ 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': 'Xác thực',
'authorizationType': 'Loại Xác thực',
'no-auth': 'Không',
'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: 'nhập \'/\' để chèn biến',
},
code: {
inputVars: 'Biến đầu vào',
outputVars: 'Biến đầu ra',
},
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: 'Được sử dụng để xác định logic sẽ được thực hiện khi điều kiện if không được đáp ứng.',
and: 'và',
or: 'hoặc',
operator: 'Toán tử',
notSetVariable: 'Vui lòng thiết lập 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 phải là',
'empty': 'trống',
'not empty': 'không trống',
'null': 'null',
'not null': 'không null',
},
enterValue: 'Nhập giá trị',
addCondition: 'Thêm Điều kiện',
conditionNotSetup: 'Điều kiện CHƯA được thiết lập',
},
variableAssigner: {
title: 'Gán biến',
outputType: 'Loại đầu ra',
outputVarType: 'Loại Biến đầu ra',
varNotSet: 'Biến không được thiết lập',
noVarTip: 'Thêm các biến cần gán',
type: {
string: 'Chuỗi',
number: 'Số',
object: 'Đối tượng',
array: 'Mảng',
},
outputVars: {
output: 'Giá trị biến được gán',
},
},
tool: {
toAuthorize: 'Để ủy quyền',
inputVars: 'Biến đầu vào',
outputVars: {
text: 'nội dung được tạo ra bởi công cụ',
files: {
title: 'tệp được tạo ra bởi công cụ',
type: 'Loại hỗ trợ. Hiện chỉ hỗ trợ hình ảnh',
transfer_method: 'Phương pháp chuyển. Giá trị là remote_url hoặc local_file',
url: 'URL Hình ảnh',
upload_file_id: 'ID tệp tải lên',
},
},
},
questionClassifiers: {
model: 'mô hình',
inputVars: 'Biến đầu vào',
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',
instructionPlaceholder: 'Viết hướng dẫn của bạn',
},
},
tracing: {
stopBy: 'Dừng lại bởi {{user}}',
},
}
export default translation