diff --git a/src/translation/de.json b/src/translation/de.json index 53f2aaf14..666a22f2f 100644 --- a/src/translation/de.json +++ b/src/translation/de.json @@ -439,7 +439,6 @@ "time": "Zeit", "searchPlaceholder": "Suche", "details": "Details", - "showRawLogsAction": "Rohdaten-Logfiles anzeigen", "empty": "Das Ereignisprotokoll ist leer." }, "changeDomainDialog": { diff --git a/src/translation/en.json b/src/translation/en.json index 50177b64e..e56536a9b 100644 --- a/src/translation/en.json +++ b/src/translation/en.json @@ -802,6 +802,12 @@ "title": "Really remove {{ domain }}?", "description": "This will delete the domain {{ domain }}.", "removeAction": "Remove" + }, + "syncDns": { + "title": "Sync DNS", + "description": "This will reprovision the app and email DNS records across all domains.", + "syncAction": "Sync DNS", + "showLogsAction": "Show Logs" } }, "notifications": { diff --git a/src/translation/it.json b/src/translation/it.json index 35fcc19cc..a0947390e 100644 --- a/src/translation/it.json +++ b/src/translation/it.json @@ -1269,7 +1269,6 @@ }, "eventlog": { "searchPlaceholder": "Cerca", - "showRawLogsAction": "Mostra Raw Logs", "type": { "spamFilterTrainedInfo": "Filtro antispam addestrato utilizzando il contenuto della casella postale", "deniedInfo": "Connessione da {{ remote.ip }} negata. {{ details.message || details.reason }}", diff --git a/src/translation/nl.json b/src/translation/nl.json index 9f4ad9e42..8f4bd641f 100644 --- a/src/translation/nl.json +++ b/src/translation/nl.json @@ -518,7 +518,6 @@ "inboundInfo": "Inkomende e-mail van {{ mailFrom | prettyEmailAddresses }} aan {{ rcptTo | prettyEmailAddresses }}. Spam: {{ details.spamStatus.indexOf('Yes,') === 0 ? 'Yes' : 'No' }}", "spamFilterTrainedInfo": "Het spam filter wordt getraind op basis van de e-mailbox inhoud" }, - "showRawLogsAction": "Toon ruwe data logbestanden", "searchPlaceholder": "Zoeken" }, "changeDomainDialog": { diff --git a/src/translation/vi.json b/src/translation/vi.json index ce1d88178..0247bc42d 100644 --- a/src/translation/vi.json +++ b/src/translation/vi.json @@ -365,7 +365,7 @@ "description": "Cloudron sao lưu toàn bộ hệ thống của bạn vào nơi sao lưu được cài đặt.", "configure": "Cấu hình", "format": "Định dạng lưu trữ", - "endpoint": "Endpoint", + "endpoint": "Điểm Endpoint", "location": "Nơi sao lưu", "provider": "Nhà cung cấp", "disabledList": "Những app sau đã tắt chế độ sao lưu tự động:" @@ -398,14 +398,14 @@ "prefix": "Tên tiền tố (prefix)", "bucketName": "Tên bucket", "acceptSelfSignedCerts": "Chấp nhận chứng chỉ số tự ký", - "s3Endpoint": "Endpoint", + "s3Endpoint": "Điểm Endpoint", "hardlinksLabel": "Sử dụng hardlink", "ext4Label": "Thư mục sao lưu là một ổ đĩa ngoài EXT4", "provider": "Nhà cung cấp dịch vụ lưu trữ", "mountPointDescription": "Điểm mount cần được cài đặt thủ công. Xem hướng dẫn.", "title": "Cấu hình nơi lưu trữ bản sao lưu", "mountPoint": "Điểm mount", - "noopNote": "Lựa chọn này sẽ làm hỏng tính năng sao lưu và phục hồi của Cloudron và chỉ nên dùng khi test hệ thống. Xin đảm bảo rằng server được sao lưu toàn bộ bằng những phương tiện khác.", + "noopNote": "Lựa chọn này sẽ làm hỏng tính năng sao lưu và khôi phục của Cloudron và chỉ nên dùng khi test hệ thống. Xin đảm bảo rằng server được sao lưu toàn bộ bằng những phương tiện khác.", "format": "Định dạng lưu trữ" }, "cleanupBackups": { @@ -441,7 +441,7 @@ "stopTask": "Dừng {{ taskType === 'backup' ? 'Backup' : 'Cleanup' }}", "backupNow": "Sao lưu ngay bây giờ", "cleanupBackups": "Dọn sạch bản sao lưu", - "tooltipDownloadBackupConfig": "Tải cấu hình bản sao lưu", + "tooltipDownloadBackupConfig": "Tải xuống cấu hình bản sao lưu", "appCount": "{{ appCount }} app", "noApps": "Không có app nào cả", "version": "Phiên bản", @@ -458,24 +458,58 @@ } }, "login": { - "2faToken": "Mã xác minh 2 bước (nếu bật)" + "2faToken": "Mã xác minh 2 bước (nếu bật)", + "resetPasswordAction": "Đặt lại mật khẩu", + "signInAction": "Đăng nhập", + "password": "Mật khẩu", + "username": "Tên đăng nhập", + "errorIncorrectCredentials": "Không đúng tên đăng nhập hoặc mật khẩu", + "loginTo": "Đăng nhập vào" }, "setupAccount": { - "username": "Tên đăng nhập" + "username": "Tên đăng nhập", + "success": { + "openDashboardAction": "Mở dashboard", + "title": "Tài khoản của bạn đã sẵn sàng" + }, + "invalidToken": { + "description": "Liên hệ admin server của bạn để lấy link mời mới.", + "title": "Link mời không hợp lệ hoăc đã quá hạn" + }, + "setupAction": "Cài đặt", + "errorPasswordNoMatch": "Hai mật khẩu không khớp", + "errorPassword": "Mật khẩu cần ít nhất 8 ký tự", + "passwordRepeat": "Nhập lại mật khẩu", + "password": "Mật khẩu mới", + "fullName": "Họ tên", + "errorUsernameInvalid": "Tên đăng nhập không hợp lệ", + "errorUsernameTooLong": "Tên đăng nhập quá dài", + "errorUsernameTooShort": "Tên đăng nhập quá ngắn", + "description": "Xin cài đặt tài khoản của bạn", + "welcomeTo": "Chào mừng đến" }, "email": { "enableEmailDialog": { - "enableAction": "Bật" + "enableAction": "Bật", + "setupDnsInfo": "Sử dụng lựa chọn này để cài đặt những bản ghi có liên quan đến email. Để trống lựa chọn này sẽ hữu ích cho việc tạo ra các hộp thư và nhập dữ liệu các mail đã có sẵn trước khi đưa vào sử dụng.", + "setupDnsCheckbox": "Cài đặt các bản ghi DNS ngay", + "cloudflareInfo": "Tên miền {{ adminDomain }} được quản lý bởi Cloudflare. Xin chắc rằng proxy qua Cloudflare đã được tắt cho {{ mailFqdn }} và được chỉnh về chế độDNS only. Việc này là cần thiết vì Cloudflare không proxy được email.", + "noProviderInfo": "Chưa cài đặt nhà cung cấp DNS. Những bản ghi DNS trong phần Trạng thái cần được cài đặt thủ công.", + "description": "Lựa chọn này sẽ cấu hình Cloudron để nhận mail cho {{ domain }}. Xem hướng dẫn để mở những cổng cần thiết cho Email Cloudron.", + "title": "Bật chế độ email cho {{ domain }}?" }, "incoming": { "mailinglists": { "members": "Thành viên trong danh sách", "description": "Danh sách này chuyển tiếp mail cho những thành viên trong danh sách.", - "title": "Danh sách chuyển tiếp mail" + "title": "Danh sách chuyển tiếp mail", + "membersOnlyTooltip": "Chỉ cho phép chuyển tiếp mail đến thành viên trong danh sách", + "everyoneTooltip": "Cho phép chuyển tiếp mail cho những người ngoài danh sách", + "name": "Tên" }, "mailboxes": { "usage": "Đã sử dụng", - "aliases": "Tên khác", + "aliases": "Tên gọi khác", "owner": "Chủ sở hữu", "name": "Tên", "disabledTooltip": "Chế độ email đã tắt cho tên miền này", @@ -487,17 +521,130 @@ "server": "Server", "loginHelp": "Dùng tenhopthu@{{ domain }} và mật khẩu của chủ hộp thư để truy cập tất cả hộp thư trên tên miền này", "sieveServerInfo": "Giao thức ManageSieve", - "outgointServerInfo": "Mail đi (SMTP)", + "outgointServerInfo": "Mail gửi ra (SMTP)", "enableAction": "Bật", "disableAction": "Tắt", "description": "Mail server của Cloudron cho phép người dùng nhận mail về tên miền này. Các app Rainloop, SOGo, Roundcube đã được cấu hình sẵn để truy cập được vào mail trên Cloudron.", - "title": "Mail đến" + "title": "Mail đến", + "incomingServerInfo": "Mail đến (IMAP)", + "catchall": { + "saveAction": "Lưu", + "subscriptionRequired": "Tính năng này chỉ có trong các gói trả phí. Cài đặt gói trả phí ngay bây giờ", + "description": "Những mail gửi đến địa chỉ mail không tồn tại sẽ được chuyển tiếp cho những hộp thư dưới đây.", + "title": "Bắt hết cả mail" + } }, "config": { "connectionDetails": "Chi tiết kết nối cho những mail client khác", "title": "Cấu hình email cho {{ domain }}" }, - "backAction": "Trở về mục email" + "backAction": "Trở về mục email", + "outbound": { + "tabTitle": "Mail gửi ra", + "mailRelay": { + "username": "Tên đăng nhập", + "spfDocInfo": "Cloudron không tự động cài đặt bản ghi SPF. Xin cài đặt thủ công theo hướng dẫn {{ name }}.", + "saveAction": "Lưu", + "saveSuccess": "Đã lưu", + "password": "Mật khẩu", + "apiTokenOrKey": "Mã/key API", + "selfsignedCheckbox": "Chấp nhận chứng chỉ số tự ký", + "port": "Cổng SMTP (STARTTLS)", + "host": "Host SMTP" + }, + "noopNonAdminDomainWarning": "Cloudron không thể cung cấp dịch vụ gửi mail cho các app trên tên miền này khi chế độ email chưa được bật.", + "noopAdminDomainWarning": "Cloudron không thể gửi link mời người dùng, đặt lại mật khẩu hay gửi các thông báo khác khi chế độ email chưa được bật trên tên miền chính", + "description": "Cloudron sẽ dùng mail server này (Smart host) để gửi mail đi cho các app được cài trên tên miền này.", + "title": "Hệ thống relay chuyển mail ra ngoài" + }, + "mailboxboxDialog": { + "groupsHeader": "Nhóm", + "usersHeader": "Người dùng" + }, + "deleteMailinglistDialog": { + "deleteAction": "Xoá", + "description": "Chắc chắn xoá danh sách chuyển tiếp mail {{ name }}@{{ domain }}?", + "title": "Xoá danh sách chuyển tiếp mail {{ name }}@{{ domain }}" + }, + "editMailinglistDialog": { + "title": "Chỉnh sửa danh sách chuyển tiếp mail {{ name }}@{{ domain }}" + }, + "addMailinglistDialog": { + "membersOnlyCheckbox": "Chỉ cho phép chuyển tiếp mail cho thành viên trong danh sách", + "membersInfo": "Cách mỗi email bằng một dòng mới", + "members": "Thành viên trong danh sách", + "title": "Thêm danh sách chuyển tiếp mail" + }, + "deleteMailboxDialog": { + "deleteAction": "Xoá", + "purgeMailboxCheckbox": "Xoá hết tất cả mail và bộ lọc trong hộp thư này", + "description": "Sau khi xoá hộp thư, tất cả mail đến hộp thư này sẽ bị văng ra. Bạn có thể chọn không xoá mail trong hộp thư vì lý do lưu trữ. Những mail được lưu trữ nằm ở /home/yellowtent/boxdata/mail/vmail trên server này.", + "title": "Xoá hộp thư {{ name }}@{{ domain }}" + }, + "editMailboxDialog": { + "addAnotherAliasAction": "Thêm một tên gọi khác nữa", + "addAliasAction": "Thêm một tên gọi khác", + "noAliases": "Không có tên gọi khác nào được chỉnh.", + "aliases": "Tên gọi khác", + "owner": "Chủ hộp thư", + "title": "Chỉnh sửa hộp thư {{ name }}@{{ domain }}" + }, + "addMailboxDialog": { + "owner": "Chủ hộp thư", + "name": "Tên", + "title": "Thêm hộp thư" + }, + "disableEmailDialog": { + "disableAction": "Tắt", + "description": "Lựa chọn này sẽ cấu hình Cloudron để ngưng nhận mail cho {{ domain }}. Những hộp thư và danh sách liên quan hiện có của tên miền này sẽ không được xoá.", + "title": "Tắt mail server cho {{ domain }}?" + }, + "subscriptionDialog": { + "setupAction": "Cài đặt gói đăng ký", + "description": "Để thêm hộp thư, hãy đăng ký gói trả phí.", + "title": "Cần có gói dăng ký" + }, + "smtpStatus": { + "notBlacklisted": "IP của server này {{ ip }} không có trên danh sách chặn.", + "blacklistCheck": "Kiểm tra trạng thái IP có bị liệt vào danh sách chặn không", + "blacklisted": "IP của server này {{ ip }} đang bị liệt vào danh sách chặn.", + "outboudRelay": "SMTP gửi ra (Chuyển tiếp)", + "outboudDirect": "SMTP gửi ra (Trực tiếp)", + "title": "Trạng thái SMTP" + }, + "dnsStatus": { + "recordNotSet": "chưa được cài", + "type": "Loại bản ghi", + "current": "Giá trị hiện tại", + "expected": "Giá trị mong đợi", + "domain": "Tên miền", + "hostname": "Tên host", + "ptrInfo": "Bản ghi PTR được cài bởi nhà cung cấp VPS và không phải nhà cung cấp DNS của bạn.", + "namecheapInfo": "Namecheap yêu cầu cài đặt thủ công cho các bản ghi MX", + "description": "Trạng thái của các bản ghi DNS có thể sẽ báo lỗi trong khi các bản ghi chưa được phân phối hoàn toàn đến điểm đến (mất khoảng 5 phút để hoàn thành). Xem phần sửa chữa lỗi trong hướng dẫn để có thêm sự hỗ trợ.", + "reSetupAction": "Cài lại DNS", + "title": "Trạng thái DNS" + }, + "status": { + "tabTitle": "Trạng thái" + }, + "signature": { + "saveAction": "Lưu", + "htmlFormat": "Dạng HTML (không bắt buộc)", + "plainTextFormat": "Dạng văn bản", + "subscriptionRequired": "Tính năng này chỉ có trong các gói trả phí. Cài đặt gói trả phí ngay bây giờ", + "description": "Phần chữ này sẽ được gắn thêm vào phía cuối mail gửi đi từ tên miền này.", + "title": "Chữ ký cuối mail" + }, + "masquerading": { + "disableAction": "Tắt", + "enableAction": "Bật", + "description": "Việc cài đặt mặt nạ mail cho phép người dùng và app gửi mail với một tên gọi khác tuỳ chọn cho địa chỉ mail GỬI TỪ (FROM).", + "title": "Mặt nạ email" + }, + "settings": { + "tabTitle": "Cài đặt" + } }, "network": { "configureIp": { @@ -570,7 +717,7 @@ "eventlog": { "searchPlaceholder": "Tìm kiếm", "type": { - "spamFilterTrainedInfo": "Bộ lọc spam đã được huấn luyện dựa trên nội dung trong hộp thư.", + "spamFilterTrainedInfo": "Bộ lọc spam đã được rèn giũa thêm dựa trên nội dung hộp thư", "deniedInfo": "Kết nối từ IP {{ remote.ip }} bị từ chối. Lý do: {{ details.message || details.reason }}", "deliveredInfo": "Đã gửi mail cho {{ rcptTo | prettyEmailAddresses }} từ {{ mailFrom | prettyEmailAddresses }}", "receivedInfo": "Đã lưu mail từ {{ mailFrom | prettyEmailAddresses }} vào hộp thư {{ rcptTo | prettyEmailAddresses }}", @@ -578,7 +725,7 @@ "inboundInfo": "Nhận mail từ {{ mailFrom | prettyEmailAddresses }} đến {{ rcptTo | prettyEmailAddresses }}. Có phải spam không: {{ details.spamStatus.indexOf('Yes,') === 0 ? 'Yes' : 'No' }}", "deferredInfo": "Không gửi được mail cho {{ rcptTo | prettyEmailAddresses }}. {{ details.message || details.reason }}. Sẽ thử lại tự động trong vòng {{ details.delay }} giây nữa.", "bounceInfo": "Bị trả về {{ mailFrom | prettyEmailAddresses }} cho email gửi cho {{ rcptTo | prettyEmailAddresses }}. Lý do: {{ details.message || details.reason }}", - "spamFilterTrained": "Bộ lọc spam đã được huấn luyện", + "spamFilterTrained": "Bộ lọc spam đã được rèn giũa thêm", "bounce": "Bị trả về", "denied": "Bị từ chối", "queued": "Xếp vào hàng", @@ -969,5 +1116,342 @@ "provider": "Nhà cung cấp", "domain": "Tên miền", "addDomain": "Thêm tên miền" + }, + "app": { + "appInfo": { + "sso": "App này được cài đặt để xác minh người dùng bằng Thư mục ngừoi dùng Cloudron. Người dùng Cloudron có thể đăng nhập và sử dụng được ngay.", + "ssoEmail": "App này được cài đặt cho phép tất cả người dùng với một hộp thư trên Cloudron này. Hãy đăng nhập với email và mật khẩu trên Cloudron để truy cập vào hộp thư.", + "package": "Gói đóng gói", + "customAppUpdateWarning": "Đây là một app tuỳ chỉnh không có trên Cửa hàng app và sẽ không nhận được các bản cập nhật mới. Xem phần Hướng dẫn để biết cách cập nhật app tuỳ chỉnh.", + "firstTimeTitle": "Lần sử dụng đầu tiên", + "firstTimeCollapseHeader": "Hướng dẫn cho lần cài đặt đầu tiên", + "openAction": "Mở {{ app }}", + "postInstallConfirmCheckbox": "Đã xem hướng dẫn", + "appDocsUrl": "Xin xem phần {{ title }} hướng dẫn để xem những thông tin hữu ích và chủ đề thường gặp của app này. Nếu bạn cần hỗ trợ thêm, hãy ghé xem trong diễn đàn {{ title }}." + }, + "uninstall": { + "uninstall": { + "uninstallAction": "Gỡ cài đặt", + "backupWarning": "Các bản sao lưu app sẽ không được xoá ngay mà sẽ dựa vào lịch trình sao lưu được định sẵn. Bạn có thể hồi sinh app từ một bản sao lưu hiện có bằng những hướng dẫn sau đây.", + "description": "Lựa chọn này sẽ gỡ cài đặt app ngay lập tức và xoá hết tất cả những dữ liệu liên quan. Trang web sẽ không còn truy cập được sau đó.", + "title": "Gỡ cài đặt" + }, + "startStop": { + "stopAction": "Dừng app", + "startAction": "Chạy app", + "description": "App có thể được dừng chạy để bảo tồn tài nguyên server thay vì gỡ cài đặt. Những bản sao lưu tương lai sẽ không bao gồm những thay đổi từ thời điểm này đến bản sao lưu kề cận nhất. Vì lý do này, bạn nên tạo một bản sao lưu trước khi cho dừng app.", + "title": "Chạy / Dừng" + } + }, + "repair": { + "appIsBusyTooltip": "App đang bận", + "recovery": { + "description": "Nếu app không có phản hồi, hãy thử khởi động lại app. Nếu app bị tự khởi động lại liên tục vì một plugin hay cấu hình hỏng, hãy bật app vào chế độ phục hồi để truy cập vào màn hình console. \nDùng những hướng dẫn sau đây để khởi chạy app trở lại.", + "disableRecoveryModeAction": "Tắt chế độ phục hồi", + "enableRecoveryModeAction": "Bật chế độ phục hồi", + "title": "Khôi phục khi app bị sụp", + "restartAction": "Khởi động lại app" + }, + "taskError": { + "retryAction": "Thử lại tác vụ {{ task }}", + "description": "Nếu một tác vụ cấu hình, cập nhật, khôi phục hay sao lưu bị lỗi, hãy thử làm lại tác vụ đó.", + "title": "Lỗi tác vụ" + } + }, + "backups": { + "auto": { + "enableAction": "Bật chế độ sao lưu tự động", + "disableAction": "Tắt chế độ sao lưu tự động", + "disabled": "Sao lưu tự động hiện đang tắt.", + "enabled": "Sao lưu tự động đang được bật.", + "description": "Cloudron định kỳ tạo ra bản sao lưu dựa trên cài đặt trong phần sao lưu .", + "title": "Bản sao lưu tự động" + }, + "import": { + "description": "Dùng tính năng nhập này để di dời app từ một Cloudron khác. App kia phải có phiên bản đóng gói và quyền truy cập giống như app ở đây.", + "title": "Nhập vào từ bản sao lưu ngoài" + }, + "backups": { + "importAction": "Nhập bản sao lưu vào", + "createBackupAction": "Tạo bản sao lưu", + "restoreTooltip": "Khôi phục app trở về bản sao lưu này", + "cloneTooltip": "Nhân bản app từ bản sao lưu này", + "downloadConfigTooltip": "Tải xuống cấu hình bản sao lưu", + "time": "Tạo ra lúc", + "packageVersion": "Phiên bản đóng gói", + "description": "Bản sao lưu là những bản chụp snapshot hoàn chỉnh của app. Bạn có thể dùng các bản sao lưu để khôi phục hoặc nhân bản app này.", + "title": "Bản sao lưu" + } + }, + "updates": { + "auto": { + "enableAction": "Bật chế độ cập nhật tự động", + "disableAction": "Tắt chế độ cập nhật tự động", + "disabled": "Cập nhật tự động hiện đang tắt.", + "enabled": "Cập nhật tự dộng đang được mở.", + "description": "Cloudron định kỳ kiểm tra Cửa hàng app cho các phiên bản cập nhật mới. Nếu bạn tắt chế độ cập nhật tự động, xin chắc rằng bạn cài đặt thủ công các cập nhật phiên bản mới.", + "title": "Cập nhật tự động" + }, + "info": { + "updateAvailableAction": "Có phiên bản cập nhật mới", + "customAppUpdateInfo": "Phiên bản mới không có sẵn cho các app tuỳ chỉnh", + "checkForUpdatesAction": "Kiểm tra phiên bản mới", + "lastUpdated": "Lần cuối cập nhật", + "packageVersion": "Phiên bản đóng gói", + "appId": "ID của app", + "description": "Tựa đề app và phiên bản", + "title": "Thông tin app" + } + }, + "security": { + "robots": { + "disableIndexingAction": "Không cho lên chỉ mục", + "txtPlaceholder": "Để trống để cho tất cả bot lên chỉ mục app này", + "title": "File Robots.txt" + }, + "csp": { + "saveAction": "Lưu", + "title": "Chính sách an ninh nội dung", + "description": "Cài đặt lựa chọn này sẽ ghi chèn lên những CSP header gửi từ app này ra" + } + }, + "email": { + "csp": { + "title": "Chính sách an ninh nội dung" + }, + "from": { + "saveAction": "Lưu", + "mailboxPlaceholder": "Để trống để dùng giá trị mặc định của hệ thống", + "description": "Lựa chọn này cài đặt tên địa chỉ mà app sẽ gửi mail ra. App này đã được cài đặt để gửi mail trong phần cài đặt {{ domain }}'s Mail gửi ra.", + "title": "Địa chỉ mail GỬI TỪ (FROM)" + } + }, + "graphs": { + "memoryTitle": "Bộ nhớ (RAM + Swap) trong đơn vị MB", + "period": { + "30d": "30 ngày trước", + "7d": "7 ngày trước", + "24h": "24 tiếng trước", + "12h": "12 tiếng trước" + }, + "selectPeriod": "Chọn giai đoạn {{ period }}" + }, + "storage": { + "mounts": { + "saveAction": "Lưu", + "addMountAction": "Gắn thêm một volume vào", + "noMounts": "Không có volume được gắn thêm.", + "volume": "Volume", + "title": "Thư mục mount thêm", + "readOnly": "Chỉ cho phép đọc" + }, + "appdata": { + "moveAction": "Chuyển dữ liệu", + "dataDirPlaceholder": "Để trống để dùng giá trị mặc định của hệ thống", + "description": "Theo mặc định, dữ liệu của app được chứa ở {{ storagePath }}. Nếu server sắp dùng hết dung lượng ổ đĩa, bạn có thể gắn thêm một ổ đĩa EXT4 ngoài và chuyển dữ liệu app qua.", + "title": "Dữ liệu app" + } + }, + "resources": { + "cpu": { + "description": "Phần trăm thời gian CPU dành cho app khi hệ thống đang chịu tải nặng.", + "title": "Chia phần trong CPU", + "setAction": "Cài đặt" + }, + "memory": { + "resizeAction": "Chỉnh lại", + "error": "Hệ thống không chỉnh được giới hạn bộ nhớ này, hãy thử một giá trị thấp hơn.", + "description": "Cloudron dành 50% giá trị này cho RAM và 50% còn lại cho swap.", + "title": "Giới hạn bộ nhớ" + } + }, + "accessControl": { + "sftp": { + "username": "Tên đăng nhập", + "port": "Cổng", + "server": "Server", + "title": "SFTP" + }, + "userManagement": { + "visibleForSelected": "Chỉ hiển thị với các người dùng và nhóm sau", + "visibleForAllUsers": "Hiển thị với tất cả người dùng trên Cloudron", + "sftpAccessControl": "Cài đặt này cũng quản lý truy cập SFTP.", + "dashboardVisibility": "Chế độ hiển thị dashboard", + "descriptionSftp": "Cũng để quản lý truy cập SFTP.", + "description": "App này được cấu hình để xác minh người dùng bằng thư mục người dùng trên Cloudron.", + "title": "Quản lý người dùng" + } + }, + "location": { + "aliasesPlaceholder": "Để trống để dùng tên miền gốc", + "noAliases": "Không có tên miền với tên gọi khác được cài đặt.", + "addAliasAction": "Thêm một tên gọi khác", + "aliases": "Tên gọi khác", + "saveAction": "Lưu", + "addRedirectionAction": "Thêm đường chuyển hướng", + "noRedirections": "Không có tên miền chuyển hướng được cài đặt.", + "redirectionsPlaceholder": "Để trống để dùng tên miền gốc", + "redirections": "Chuyển hướng", + "locationPlaceholder": "Để trống để dùng tên miền gốc", + "location": "Nơi cài đặt" + }, + "display": { + "saveAction": "Lưu", + "tagsPlaceholder": "Dùng một khoảng trắng để cách ra mỗi tag", + "iconResetAction": "Chỉnh lại hình ảnh biểu tượng", + "tagsTooltip": "Dùng để phân nhóm app trong dashboard", + "icon": "Hình ảnh biểu tượng", + "tags": "Tag", + "label": "Nhãn" + }, + "uninstallTabTitle": "Gỡ cài đặt", + "repairTabTitle": "Sửa chữa", + "backupsTabTitle": "Bản sao lưu", + "updatesTabTitle": "Cập nhật", + "emailTabTitle": "Email", + "securityTabTitle": "An ninh", + "graphsTabTitle": "Biểu đồ", + "storageTabTitle": "Lưu trữ", + "resourcesTabTitle": "Tài nguyên", + "accessControlTabTitle": "Quyền truy cập", + "locationTabTitle": "Nơi cài đặt", + "displayTabTitle": "Hiển thị", + "projectWebsiteAction": "Trang web của dự án", + "adminPageAction": "Trang Admin", + "docsAction": "Hướng dẫn", + "firstTimeSetupAction": "Thông tin lần đầu cài đặt", + "docsActionTooltip": "Hướng dẫn", + "filemanagerActionTooltip": "Quản lý tập tin", + "terminalActionTooltip": "Màn hình terminal", + "logsActionTooltip": "Log", + "backAction": "Trở về mục App của tôi", + "domainCollisionDialog": { + "description": "Để đề phòng, Cloudron sẽ không ghi chèn lên những bản ghi DNS hiện có. Xin xác nhận rằng những tên miền ở trên hiện không được dùng cho dịch vụ nào bên ngoài Cloudron.", + "overwriteAction": "Ghi chèn lên những bản ghi DNS hiện có", + "collisionListTitle": "Những tên miền sau đây đã có trong DNS của bạn:", + "title": "Xung đột tên miền" + }, + "states": { + "notResponding": "Không có phản hồi", + "stopped": "Đã dừng", + "running": "Đang chạy" + }, + "cloneDialog": { + "cloneAction": "Nhân bản", + "location": "Nơi cài đặt", + "description": "Sử dụng bản sao lưu từ {{ creationTime }} và phiên bản v{{ packageVersion }}", + "title": "Nhân bản {{ app }}" + }, + "restoreDialog": { + "restoreAction": "Khôi phục", + "warning": "Những dữ liệu được tạo ra tính từ thời điểm này và lần sao lưu cuối sẽ bị mất vĩnh viễn. Bạn nên tạo một bản sao lưu của những dữ liệu hiện tại trước khi thực hiện việc khôi phục app.", + "description": "Lựa chọn này sẽ khôi phục app về phần dữ liệu từ {{ creationTime }}.", + "title": "Khôi phục {{ app }}" + }, + "updateDialog": { + "updateAction": "Cập nhật", + "setupSubscriptionAction": "Cài đặt gói đăng ký", + "skipBackupCheckbox": "Bỏ qua sao lưu", + "subscriptionExpired": "Gói đăng ký Cloudron của bạn đã hết hạn. Xin cài đặt một gói đăng ký để cập nhật app.", + "changelogHeader": "Những thay đổi trong phiên bản mới {{ version}}:", + "unstableWarning": "Bản cập nhật này là phiên bản ra mắt sớm và chưa được ổn định. Xin lưu ý rủi ro khi cập nhật.", + "title": "Cập nhật {{ app }}" + }, + "importBackupDialog": { + "importAction": "Nhập vào", + "uploadAction": "Tải lên cấu hình bản sao lưu", + "description": "Những dữ liệu được tạo ra tính từ thời điểm này và lần sao lưu cuối cùng sẽ bị mất vĩnh viễn. Bạn nên tạo một bản sao lưu của những dữ liệu hiện tại trước khi thực hiện việc nhập vào.", + "title": "Nhập bản sao lưu vào" + }, + "repairDialog": { + "retryAction": "Thử lại {{ task }}", + "fromBackup": "Khôi phục từ bản sau lưu:", + "taskError": "Tác vụ {{ task }} không hoàn thành với lỗi sau:", + "location": "Nơi cài đặt", + "domainDescription": "Cloudron sẽ sửa chữa app để dùng những tên miền sau:", + "description": "Cloudron sẽ cài đặt lại app này với cấu hình hiện tại. Những dữ liệu bên trong cũng sẽ được giữ nguyên.", + "title": "Sửa chữa {{ app }}" + }, + "uninstallDialog": { + "uninstallAction": "Gỡ cài đặt", + "description": "Lựa chọn này sẽ ngay lập tức gỡ app {{ app }} và xoá toàn bộ dữ liệu trong đó.", + "title": "Gỡ cài đặt {{ app }}" + } + }, + "volumes": { + "name": "Tên volume", + "title": "Volume", + "backupWarning": "Volume không được sao lưu. Khôi phục lại một app sẽ không khôi phục lại dữ liệu trong volume. Xin có một phương án sao lưu thích hợp cho từng volume của bạn.", + "description": "Volume là những thư mục trên server có thể được chia sẻ cho các app. Volume có thể là mount NFS/SSHFS hay những ổ đĩa lưu trữ ngoài gắn thêm vào server.", + "removeVolumeDialog": { + "removeAction": "Xoá", + "description": "Lựa chọn này sẽ xoá volume {{ volume }}. Dữ liệu trong đường dẫn host sẽ không được xoá.", + "title": "Chắc chắn xoá volume {{ volume }} ?" + }, + "addVolumeDialog": { + "addAction": "Thêm volume", + "nameWarning": "Cloudron sẽ gắn thêm đường dẫn host vào container của app với tên volume này trong thư mục /media.", + "title": "Thêm volume" + }, + "removeVolumeActionTooltip": "Xoá volume", + "openFileManagerActionTooltip": "Mở Quản lý tập tin", + "hostPath": "Đường dẫn host", + "addVolumeAction": "Thêm volume" + }, + "welcomeEmail": { + "inviteLinkAction": "Bắt đầu tạo tải khoản", + "subject": "Chào mừng đến <%= cloudron %>", + "inviteLinkActionText": "Bấm theo link để bắt đầu: <%- inviteLink %>", + "expireNote": "Link mời sẽ hết hạn trong 7 ngày.", + "invitor": "Bạn nhận được mail này vì <%= invitor %> đã mời bạn tham gia.", + "salutation": "Xin chào <%= user %>,", + "welcomeTo": "Chào mừng đến <%= cloudronName %>!" + }, + "storage": { + "mounts": { + "volumeLocation": "Volume được gắn thêm vào theo tên volume trong thư mục /media của app." + } + }, + "lang": { + "zh_Hans": "Tiếng Trung (Giản thể)", + "vi": "Tiếng Việt", + "pl": "Tiếng Phần Lan", + "nl": "Tiếng Hà Lan", + "ja": "Tiếng Nhật", + "it": "Tiếng Ý", + "fr": "Tiếng Pháp", + "de": "Tiếng Đức", + "en": "Tiếng Anh" + }, + "passwordResetEmail": { + "subject": "[<%= cloudron %>] Đặt lại mật khẩu", + "resetActionText": "Để đặt lại mật khẩu, xin vào trang sau: <%- resetLink %>", + "expireNote": "Link đặt lại mật khẩu sẽ hết hạn trong 24 giờ.", + "resetAction": "Bấm vào để đặt lại mật khẩu", + "description": "Một người nào đó, hy vọng là bạn, đã yêu cầu đặt lại mật khẩu cho tài khoản. Nếu bạn không gửi yêu cầu này, xin bỏ qua thông báo này.", + "salutation": "Xin chào <%= user %>," + }, + "passwordReset": { + "success": { + "openDashboardAction": "Mở dashboard", + "title": "Mật khẩu đã đổi thành công" + }, + "passwordChanged": { + "submitAction": "Gửi" + }, + "newPassword": { + "errorMismatch": "Hai mật khẩu không khớp", + "passwordRepeat": "Nhập lại mật khẩu", + "errorLength": "Mật khẩu cần ít nhất 8 đến tối đa 265 ký tự", + "password": "Mật khẩu mới", + "title": "Đặt mật khẩu mới" + }, + "emailSent": { + "title": "Đã gửi mail đặt lại mật khẩu" + }, + "backToLoginAction": "Trở về phần đăng nhập", + "resetAction": "Đặt lại", + "usernameOrEmail": "Tên đăng nhập hoặc email", + "title": "Đặt lại mật khẩu" } } diff --git a/src/translation/zh_Hans.json b/src/translation/zh_Hans.json index f38869559..91f83d721 100644 --- a/src/translation/zh_Hans.json +++ b/src/translation/zh_Hans.json @@ -550,7 +550,6 @@ "inboundInfo": "从 {{ mailFrom | prettyEmailAddresses }} 发送给 {{ rcptTo | prettyEmailAddresses }} 的邮件。垃圾邮件判定:{{ details.spamStatus.indexOf('Yes,') === 0 ? '是' : '否' }}", "deniedInfo": "已拒绝 {{ remote.ip }} 的连接。{{ details.message || details.reason }}" }, - "showRawLogsAction": "显示原始日志", "searchPlaceholder": "搜索", "empty": "无事件日志。" },