diff --git a/src/translation/de.json b/src/translation/de.json
index 95278cd7b..53f2aaf14 100644
--- a/src/translation/de.json
+++ b/src/translation/de.json
@@ -154,6 +154,9 @@
"changes": "Änderungen",
"skipBackupCheckbox": "Backup überspringen",
"updateAction": "Aktualisierung"
+ },
+ "registryConfig": {
+ "provider": "Docker Registry Anbieter"
}
},
"users": {
@@ -791,7 +794,8 @@
"accessControlDescription": "Wenn Nicht-Administratoren den Zugriff auf SFTP erhalten, können diese die Konfigurationsdateien und geheimen Schlüssel der Anwendung lesen. Bei einigen Anwendungen wie WordPress können sie auch das Passwort protokollieren."
},
"configureActionTooltip": "Konfigurieren",
- "restartActionTooltip": "Neustart"
+ "restartActionTooltip": "Neustart",
+ "refresh": "Aktualisieren"
},
"branding": {
"title": "Design- & Textanpassungen",
diff --git a/src/translation/en.json b/src/translation/en.json
index d35f727ee..50177b64e 100644
--- a/src/translation/en.json
+++ b/src/translation/en.json
@@ -518,7 +518,6 @@
"deniedInfo": "Connection from {{ remote.ip }} denied. {{ details.message || details.reason }}",
"spamFilterTrainedInfo": "Spam filter trained using mailbox content"
},
- "showRawLogsAction": "Show Raw Logs",
"searchPlaceholder": "Search"
},
"changeDomainDialog": {
diff --git a/src/translation/nl.json b/src/translation/nl.json
index cb06a8fb6..9f4ad9e42 100644
--- a/src/translation/nl.json
+++ b/src/translation/nl.json
@@ -937,7 +937,8 @@
"memoryLimitDescription": "Cloudron wijst 50% van deze waarde toe als RAM en 50% als swap.",
"accessControlDescription": "Indien je toestaat dat non-admins toegang hebben tot SFTP, dan kunnen zij bijv. configuratiebestanden en geheime sleutels inzien. Voor WordPress kunnen ze alle wachtwoorden vastleggen."
},
- "description": "Cloudron diensten bestaan uit functionaliteiten zoals databases, e-mail en authenticatie. Hint: alle diensten dienen 'groen' te zijn, zo niet dan kun je deze herstarten of het geheugenlimiet verhogen."
+ "description": "Cloudron diensten bestaan uit functionaliteiten zoals databases, e-mail en authenticatie. Hint: alle diensten dienen 'groen' te zijn, zo niet dan kun je deze herstarten of het geheugenlimiet verhogen.",
+ "refresh": "Ververs"
},
"settings": {
"appstoreAccount": {
diff --git a/src/translation/vi.json b/src/translation/vi.json
new file mode 100644
index 000000000..ce1d88178
--- /dev/null
+++ b/src/translation/vi.json
@@ -0,0 +1,973 @@
+{
+ "apps": {
+ "noAccess": {
+ "title": "Bạn chưa thể truy cập vào app.",
+ "description": "Khi có quyền truy cập, app sẽ hiện lên tại đây."
+ },
+ "configActionTooltip": "Cấu hình",
+ "logsActionTooltip": "Log",
+ "infoActionTooltip": "Thông tin",
+ "adminPageActionTooltip": "Trang Admin",
+ "searchPlaceholder": "Tìm App",
+ "stateFilterHeader": "Tất cả trạng thái",
+ "tagsFilterHeader": "Tag: {{ tags }}",
+ "tagsFilterHeaderAll": "Tất cả tag",
+ "domainsFilterHeader": "Tất cả tên miền",
+ "title": "App của tôi",
+ "noApps": {
+ "title": "Chưa có app cài đặt!",
+ "description": "Cài đặt một vài app nhé? Hãy xem trong Cửa hàng App"
+ }
+ },
+ "main": {
+ "logout": "Thoát",
+ "dialog": {
+ "cancel": "Hủy",
+ "save": "Lưu",
+ "close": "Đóng",
+ "no": "Không",
+ "yes": "Có"
+ },
+ "username": "Tên đăng nhập",
+ "displayName": "Tên hiển thị",
+ "table": {
+ "date": "Ngày"
+ },
+ "pagination": {
+ "prev": "trước",
+ "next": "tiếp",
+ "perPageSelector": "Hiển thị {{ n }} trên một trang"
+ },
+ "action": {
+ "reboot": "Khởi động lại",
+ "logs": "Log"
+ },
+ "clipboard": {
+ "clickToCopy": "Bấm để copy",
+ "clickToCopyBackupId": "Bấm để copy backup id",
+ "copied": "Đã copy"
+ },
+ "rebootDialog": {
+ "title": "Chắc chắn muốn khởi động lại server?",
+ "warning": "Khởi động lại server sẽ gây ra thời gian downtime tạm thời cho tất cả app cài đặt trên Cloudron!",
+ "rebootAction": "Khởi động lại ngay",
+ "description": "Sử dụng chức năng này cho bản cập nhật an ninh hay khi hệ thống gặp trục trặc ngoài ý muốn. Tất cả app và dịch vụ đang chạy trên Cloudron sẽ tự động chạy lại sau khi khởi động lại hoàn thành."
+ },
+ "actions": "Thao tác",
+ "offline": "Cloudron đang offline. Đang kết nối lại…"
+ },
+ "appstore": {
+ "title": "Cửa hàng App",
+ "category": {
+ "all": "Tất cả",
+ "popular": "Phổ biến",
+ "newApps": "App Mới",
+ "chat": "Chat",
+ "analytics": "Thống kê",
+ "crm": "Quản lý quan hệ khách hàng",
+ "forum": "Diễn đàn",
+ "gallery": "Thư viện hình ảnh",
+ "finance": "Tài chính",
+ "git": "Host code",
+ "email": "Email",
+ "game": "Game",
+ "hosting": "Host web",
+ "media": "Hình ảnh",
+ "learning": "Học tập",
+ "notes": "Ghi chú",
+ "sync": "Đồng bộ tập tin",
+ "wiki": "Wiki",
+ "vpn": "VPN",
+ "blog": "Blog",
+ "document": "Tài liệu",
+ "project": "Quản lý dự án"
+ },
+ "noAppsFound": "Không tìm thấy app.",
+ "unstable": "Chưa ổn định",
+ "installDialog": {
+ "lastUpdated": "Cập nhật {{ date }}",
+ "memoryRequirement": "Cần ít nhất {{ size }} bộ nhớ",
+ "location": "Nơi cài đặt",
+ "locationPlaceholder": "Để trống để dùng tên miền gốc",
+ "manualWarning": "Thêm A record cho {{ nơi cài đặt }} vào địa chỉ IP công cộng của Cloudron này",
+ "userManagement": "Quản lý người dùng",
+ "userManagementMailbox": "Tất cả người dùng với hộp thư trên Cloudron này có quyền truy cập app.",
+ "userManagementLeaveToApp": "Để phần quản lý người dùng cho app",
+ "userManagementAllUsers": "Cho phép tất cả người dùng trên Cloudron truy cập",
+ "errorUserManagementSelectAtLeastOne": "Chọn ít nhất một người dùng hay nhóm",
+ "users": "Người dùng",
+ "groups": "Nhóm",
+ "lowOnResources": "Cloudron này đang chạy gần hết bộ nhớ.",
+ "pleaseUpgradeServer": "Hãy nâng cấp server có bộ nhớ nhiều hơn. Hoặc, gỡ cài đặt những app không dùng đến để có thêm chỗ trống.",
+ "setupSubscriptionAction": "Cài đặt gói đăng ký",
+ "installAnywayAction": "Vẫn cài đặt luôn",
+ "installAction": "Cài đặt",
+ "subscriptionRequired": "Để cài đặt thêm app, hãy đăng ký gói trả phí.",
+ "userManagementNone": "App này có phần quản lý người dùng riêng.",
+ "userManagementSelectUsers": "Chỉ cho phép người dùng và nhóm sau",
+ "configuredForCloudronEmail": "App này đã được cấu hình sẵn để sử dụng với Cloudron Email.",
+ "doInstallAction": "Cài đặt {{ dnsOverwrite ? 'and overwrite DNS' : '' }}"
+ },
+ "appNotFoundDialog": {
+ "title": "Không tìm thấy app",
+ "description": "Không có app {{ appId }} với phiên bản {{ version }}."
+ },
+ "accountDialog": {
+ "titleSignUp": "Đăng ký Cloudron.io",
+ "titleLogin": "Đăng nhập Cloudron.io",
+ "email": "Email",
+ "password": "Mật khẩu",
+ "2faToken": "Mã xác minh 2 bước (nếu bật)",
+ "intendedUse": "Dự dịnh sử dụng",
+ "chooseAnOption": "Hãy chọn một lựa chọn sau …",
+ "errorWrongPassword": "Sai mật khẩu",
+ "loginAction": "Đăng nhập",
+ "createAccountAction": "Tạo tài khoản",
+ "switchToLoginAction": "Đã có tài khoản rồi? Đăng nhập",
+ "switchToSignUpAction": "Chưa có tài khoản? Hãy đăng ký nhé",
+ "description": "Tài khoản này được dùng để truy cập Cửa hàng App và quản lý gói đăng ký của bạn",
+ "licenseCheckbox": "Tôi đồng ý bản quyền của Cloudron"
+ },
+ "searchPlaceholder": "Tìm kiếm app thay thế cho Github, Dropbox, Slack, Trello, …",
+ "appMissing": "Thiếu app nào đó? Hãy nhắn cho chúng tôi.",
+ "categoryLabel": "Danh mục"
+ },
+ "users": {
+ "editUserDialog": {
+ "title": "Chỉnh sửa người dùng {{ username }}",
+ "externalLdapWarning": "Người dùng này được đồng bộ từ thư mục LDAP ngoài."
+ },
+ "deleteUserDialog": {
+ "deleteAction": "Xoá",
+ "description": "Sau khi xoá, người dùng này sẽ không được truy cập vào dashboard hay đăng nhập bất kỳ app nào. Lưu ý rằng dữ liệu người dùng sẽ vẫn chưa được xoá trong app.",
+ "title": "Xoá người dùng {{ username }}"
+ },
+ "user": {
+ "activeCheckbox": "Người dùng đang hoạt động",
+ "errorDisplayNameRequired": "Bạn cần nhập tên",
+ "recoveryEmail": "Email khôi phục mật khẩu",
+ "primaryEmail": "Email chính",
+ "email": "Email",
+ "displayName": "Tên hiển thị",
+ "usernamePlaceholder": "Không bắt buộc. Nếu để trống, người dùng có thể tự chọn khi đăng ký",
+ "errorInvalidUsername": "Tên người dùng không hợp lệ",
+ "errorInvalidEmail": "Email không hợp lệ",
+ "errorEmailRequired": "Bạn cần nhập email",
+ "errorNotValidFullName": "Tên không hợp lệ",
+ "noGroups": "Hiện không có nhóm nào.",
+ "groups": "Nhóm",
+ "role": "Vai trò",
+ "username": "Tên đăng nhập",
+ "fullName": "Họ tên"
+ },
+ "addUserDialog": {
+ "addUserAction": "Thêm người dùng",
+ "sendInviteCheckbox": "Gửi email mời ngay",
+ "title": "Thêm người dùng"
+ },
+ "subscriptionDialog": {
+ "setupAction": "Cài đặt gói đăng ký",
+ "title": "Cần có gói dăng ký"
+ },
+ "externalLdap": {
+ "errorSelfSignedCert": "Server đang dùng chứng chỉ số không hợp lệ hay tự ký.",
+ "bindPassword": "Mật khẩu bind (không bắt buộc)",
+ "bindUsername": "Tên bind DN/Tên người dùng (không bắt buộc)",
+ "configureAction": "Cấu hình",
+ "syncAction": "Đồng bộ",
+ "showLogsAction": "Hiển thị log",
+ "autocreateUsersOnLogin": "Tự động tạo tài khoản người dùng khi họ đăng nhập vào Cloudron",
+ "auth": "Xác minh",
+ "groupnameField": "Vùng tên nhóm",
+ "groupFilter": "Lọc nhóm",
+ "groupBaseDn": "Tên base DN nhóm",
+ "syncGroups": "Đồng bộ nhóm",
+ "usernameField": "Vùng tên người dùng",
+ "filter": "Lọc",
+ "baseDn": "Tên base DN",
+ "acceptSelfSignedCert": "Chấp nhận chứng chỉ số tự ký",
+ "server": "URL server",
+ "provider": "Nhà cung cấp",
+ "noopInfo": "Xác thực LDAP chưa được cấu hình.",
+ "subscriptionRequiredAction": "Cài đặt gói đăng ký ngay",
+ "description": "Cloudron sẽ đồng bộ người dùng và nhóm từ server LDAP hay ActiveDirectory bên ngoài. Xác minh mật khẩu cho người dùng được dựa trên server ngoài. Việc đồng bộ hoá không được chạy tự động mà cần được khởi động bằng tay.",
+ "title": "LDAP",
+ "subscriptionRequired": "Tính năng này chỉ có trong gói trả phí."
+ },
+ "users": {
+ "inactiveTooltip": "Người dùng không hoạt động",
+ "resetPasswordTooltip": "Cài lại mật khẩu hay link mời",
+ "removeUserTooltip": "Xóa người dùng",
+ "editUserTooltip": "Chỉnh sửa người dùng",
+ "notActivatedYetTooltip": "Người dùng chưa được kích hoạt",
+ "externalLdapTooltip": "Từ thư mục LDAP ngoài",
+ "usermanagerTooltip": "Người dùng này có thể quản lý nhóm và những người dùng khác",
+ "adminTooltip": "Người dùng này có vai trò admin",
+ "superadminTooltip": "Người dùng này có vai trò superadmin",
+ "empty": "Không tìm thấy người dùng",
+ "groups": "Nhóm",
+ "user": "Người dùng",
+ "transferOwnershipTooltip": "Chuyển đổi quyền sở hữu"
+ },
+ "settings": {
+ "saveAction": "Lưu",
+ "subscriptionRequiredAction": "Cài đặt gói đăng ký ngay",
+ "subscriptionRequired": "Chức năng này chỉ có trong gói trả phí.",
+ "require2FACheckbox": "Yêu cầu người dùng cài đặt Mã xác minh 2 bước",
+ "allowProfileEditCheckbox": "Cho phép người dùng chỉnh sửa tên và email",
+ "title": "Cài đặt"
+ },
+ "groups": {
+ "externalLdapTooltip": "Từ thư mục LDAP ngoài",
+ "users": "Người dùng",
+ "name": "Tên",
+ "newGroupAction": "Nhóm mới",
+ "title": "Nhóm"
+ },
+ "newUserAction": "Người dùng mới",
+ "title": "Người dùng",
+ "editGroupDialog": {
+ "title": "Chỉnh sửa nhóm {{ name }}",
+ "externalLdapWarning": "Nhóm này được đồng bộ từ thư mục LDAP ngoài."
+ },
+ "group": {
+ "addGroupAction": "Thêm nhóm",
+ "users": "Người dùng",
+ "errorNameTooLong": "Tên quá dài",
+ "errorNameTooShort": "Tên quá ngắn",
+ "errorNameRequired": "Bạn cần điền tên",
+ "name": "Tên"
+ },
+ "addGroupDialog": {
+ "title": "Thêm nhóm"
+ },
+ "deleteGroupDialog": {
+ "description": "Nhóm này vẫn còn {{ memberCount }} thành viên. Bạn có chắc nhóm hiện đang không được sử dụng?",
+ "deleteAction": "Xoá",
+ "title": "Xoá nhóm {{ name }}"
+ },
+ "passwordResetDialog": {
+ "title": "Đặt lại mật khẩu hoặc link mời cho {{ username }}",
+ "description": "Dùng link dưới đây để đặt lại mật khẩu hoặc mời lại {{ username }}:",
+ "sendEmailLinkAction": "Gửi link qua email cho người dùng"
+ },
+ "transferOwnershipDialog": {
+ "newOwner": "Chủ sở hữu mới",
+ "transferAction": "Chuyển nhượng quyền sở hữu",
+ "title": "Chắc chắn chuyển nhượng quyền sở hữu?",
+ "description": "Việc này sẽ làm người dùng được lựa chọn trở thành chủ sở hữu và admin của Cloudron này và xoá bỏ quyền quản trị của người dùng hiện tại."
+ },
+ "externalLdapDialog": {
+ "title": "Cấu hình LDAP"
+ },
+ "role": {
+ "user": "Người dùng",
+ "usermanager": "Quản lý người dùng",
+ "admin": "Admin",
+ "owner": "Siêu Admin"
+ },
+ "searchPlaceholder": "Tìm kiếm"
+ },
+ "profile": {
+ "changeAvatar": {
+ "useGravatar": "Dùng Gravatar",
+ "title": "Đổi ảnh đại diện",
+ "useCustomPicture": "Dùng ảnh tự chọn"
+ },
+ "language": "Ngôn ngữ",
+ "changePassword": {
+ "errorPasswordRequired": "Bạn cần nhập mật khẩu",
+ "errorPasswordsDontMatch": "Hai mật khẩu không khớp",
+ "errorPasswordInvalid": "Mật khẩu cần ít nhất 8 đến tối đa 265 ký tự",
+ "title": "Thay đổi mật khẩu",
+ "currentPassword": "Mật khẩu hiện tại",
+ "newPassword": "Mật khẩu mới",
+ "newPasswordRepeat": "Nhập lần nữa mật khẩu mới"
+ },
+ "disable2FA": {
+ "password": "Mật khẩu",
+ "disable": "Tắt",
+ "title": "Tắt chế độ Xác minh hai bước"
+ },
+ "enable2FA": {
+ "description": "Admin Cloudron của bạn yêu cầu tất cả thành viên phải bật chế độ xác minh hai bước. Bạn không thể truy cập dashboard cho đến khi bật chế độ này.",
+ "title": "Bật chế độ Xác minh hai bước",
+ "token": "Mã",
+ "authenticatorAppDescription": "Dùng Google Authenticator (Android, iOS), FreeOTP authenticator (Android, iOS) hoặc một app TOTP tương tự để quét mã.",
+ "enable": "Bật",
+ "setup2FA": "Cài đặt Xác minh hai bước"
+ },
+ "changeDisplayName": {
+ "errorNameInvalid": "Tên hiển thị không hợp lệ",
+ "errorDisplayNameRequired": "Bạn cần nhập một tên hiển thị",
+ "title": "Thay đổi tên hiển thị"
+ },
+ "createAppPassword": {
+ "title": "Tạo mật khẩu app",
+ "name": "Tên cho mật khẩu",
+ "errorNameRequired": "Bạn cần điền tên",
+ "app": "App",
+ "generatePassword": "Tạo mật khẩu",
+ "copyNow": "Xin copy mật khẩu này bây giờ. Nó sẽ không được hiển thị lại vì lý do an ninh.",
+ "description": "Sử dụng mật khẩu sau để xác minh cho app:"
+ },
+ "createApiToken": {
+ "title": "Tạo mã API",
+ "errorNameRequired": "Bạn cần điền tên",
+ "description": "Mã API mới:",
+ "copyNow": "Xin copy mã API này bây giờ. Nó sẽ không được hiển thị lại vì lý do an ninh.",
+ "generateToken": "Tạo mã API",
+ "name": "Tên cho mã API"
+ },
+ "enable2FAAction": "Bật xác minh hai bước",
+ "primaryEmail": "Email chính",
+ "passwordRecoveryEmail": "Email khôi phục mật khẩu",
+ "appPasswords": {
+ "app": "App",
+ "name": "Tên",
+ "noPasswordsPlaceholder": "Không có mật khẩu app được tạo",
+ "newPassword": "Mật khẩu mới",
+ "deletePasswordTooltip": "Xoá mật khẩu",
+ "title": "Mật khẩu app",
+ "description": "Mật khẩu app là một biện pháp an ninh giúp bảo vệ tài khoản người dùng Cloudron của bạn. Khi bạn cần truy cập một app trong Cloudron từ một app điện thoại hay client không đáng tin cậy, bạn có thể đăng nhập bằng tên đăng nhập và mật khẩu app thay thế ở đây."
+ },
+ "apiTokens": {
+ "title": "Mã API",
+ "description": "Dùng những mã truy cập cá nhân này để xác minh cho Cloudron API",
+ "noTokensPlaceholder": "Không có mã API được tạo",
+ "revokeTokenTooltip": "Rút lại mã",
+ "newApiToken": "Mã API mới",
+ "name": "Tên",
+ "expiresAt": "Hết hiệu lực vào"
+ },
+ "loginTokens": {
+ "title": "Mã đăng nhập",
+ "description": "Bạn có {{ webadminTokenCount}} mã đăng nhập web đang hoạt động and {{ cliTokenCount }} mã CLI.",
+ "logoutAll": "Thoát ra hết"
+ },
+ "changeEmail": {
+ "title": "Thay đổi email chính",
+ "errorEmailInvalid": "Email không hợp lệ",
+ "errorEmailRequired": "Bạn cần nhập một email hợp lệ"
+ },
+ "disable2FAAction": "Tắt xác minh hai bước",
+ "changeFallbackEmail": {
+ "title": "Thay đổi email khôi phục mật khẩu",
+ "errorEmailRequired": "Bạn cần nhập một email hợp lệ",
+ "errorEmailInvalid": "Email không hợp lệ"
+ },
+ "changePasswordAction": "Đổi mật khẩu",
+ "title": "Hồ sơ"
+ },
+ "backups": {
+ "location": {
+ "title": "Nơi sao lưu",
+ "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",
+ "location": "Nơi sao lưu",
+ "provider": "Nhà cung cấp",
+ "disabledList": "Những app sau đã tắt chế độ sao lưu tự động:"
+ },
+ "title": "Bản sao lưu",
+ "configureBackupStorage": {
+ "copyConcurrencyDescription": "Số bản sao tập tin từ xa song song khi đang sao lưu Cloudron.",
+ "memoryLimitDescription": "Giới hạn bộ nhớ cho thao tác sao lưu. Điều chỉnh nếu bạn cần tăng giới hạn hiện tại so với giá trị mặc định.",
+ "encryptionPasswordRepeat": "Nhập lại mật khẩu",
+ "encryptionPasswordPlaceholder": "Mật khẩu để mã hoá các bản sao lưu",
+ "copyConcurrencyDigitalOceanNote": "DigitalOcean Spaces giới hạn ở mức 20.",
+ "copyConcurrency": "Copy đồng thời",
+ "uploadConcurrencyDescription": "Số tập tin để tải lên cùng lúc khi đang sao lưu Cloudron",
+ "downloadConcurrency": "Tải xuống đồng thời",
+ "uploadConcurrency": "Tải lên đồng thời",
+ "downloadConcurrencyDescription": "Số tập tin để tải xuống cùng lúc khi khôi phục lại Cloudron",
+ "uploadPartSize": "Kích cỡ bản sao lưu tải lên",
+ "uploadPartSizeDescription": "Kích cỡ bản tải lên nhiều phần. Có đến 3 phần được tải lên cùng lúc và cần lượng bộ nhớ như nhau.",
+ "encryptionDescription": "Lưu dòng mật khẩu này ở nơi an toàn. Cloudron không lưu trữ mật khẩu này. Các bản sao lưu sẽ không được giải mã khi không có dòng mật khẩu này",
+ "encryptionPassword": "Mật khẩu mã hoá bản sao lưu (không bắt buộc)",
+ "localDirectory": "Thư mục sao lưu địa phương",
+ "memoryLimit": "Giới hạn bộ nhớ",
+ "advancedSettings": "Cài đặt nâng cao…",
+ "s3LikeNote": "Xin xoá các quy định vòng đời khi hết hạn của object vì nó sẽ làm hỏng bản sao lưu dạng rsync.",
+ "formatChangeNote": "Những bản sao lưu trước với định dạng lưu trữ cũ phải xoá thủ công.",
+ "gcsServiceKey": "Mã tài khoản dịch vụ",
+ "s3SecretAccessKey": "Mã secret",
+ "s3AccessKeyId": "Mã access",
+ "region": "Vùng",
+ "prefix": "Tên tiền tố (prefix)",
+ "bucketName": "Tên bucket",
+ "acceptSelfSignedCerts": "Chấp nhận chứng chỉ số tự ký",
+ "s3Endpoint": "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.",
+ "format": "Định dạng lưu trữ"
+ },
+ "cleanupBackups": {
+ "description": "Các bản sao lưu được dọn sạch tự động dựa trên thời gian lưu giữ. Thao tác này sẽ xoá ngay lập tức các bản sao lưu đang có.",
+ "cleanupNow": "Dọn sạch ngay bây giờ",
+ "title": "Dọn sạch bản sao lưu"
+ },
+ "configureBackupSchedule": {
+ "retentionPolicy": "Thời gian lưu giữ",
+ "hours": "Thời gian",
+ "days": "Ngày",
+ "scheduleDescription": "Chọn ngày và giờ mà Cloudron sẽ thực hiện sao lưu. Xin lưu ý tránh chọn thời gian trùng với lịch cập nhật phiên bản Cloudron.",
+ "schedule": "Lịch sao lưu",
+ "title": "Cấu hình lịch sao lưu và thời gian lưu giữ"
+ },
+ "backupFailed": {
+ "title": "Không tạo dược bản sao lưu"
+ },
+ "backupDetails": {
+ "list": "Tham chiếu sao lưu của {{ appCount }} app",
+ "format": "Định dạng",
+ "version": "Phiên bản",
+ "date": "Ngày",
+ "id": "ID",
+ "title": "Chi tiết sao lưu"
+ },
+ "logs": {
+ "showLogs": "Hiển thị log",
+ "description": "Xin hãy cẩn thận khi tải các file log này lên server công cộng vì có thể chúng chứa những thông tin nhạy cảm.",
+ "title": "Log"
+ },
+ "listing": {
+ "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",
+ "appCount": "{{ appCount }} app",
+ "noApps": "Không có app nào cả",
+ "version": "Phiên bản",
+ "contents": "Nội dung",
+ "noBackups": "Chưa có bản sao lưu nào được tạo",
+ "title": "Danh sách"
+ },
+ "schedule": {
+ "configure": "Cấu hình",
+ "retentionPolicy": "Thời gian lưu giữ",
+ "schedule": "Lịch sao lưu",
+ "description": "Cloudron sao lưu toàn bộ hệ thống của bạn dựa vào định kỳ sao lưu đã lên lịch và giữ các bản sao lưu theo thời gian lưu giữ đã định.",
+ "title": "Lịch sao lưu và thời gian lưu giữ"
+ }
+ },
+ "login": {
+ "2faToken": "Mã xác minh 2 bước (nếu bật)"
+ },
+ "setupAccount": {
+ "username": "Tên đăng nhập"
+ },
+ "email": {
+ "enableEmailDialog": {
+ "enableAction": "Bật"
+ },
+ "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"
+ },
+ "mailboxes": {
+ "usage": "Đã sử dụng",
+ "aliases": "Tên khác",
+ "owner": "Chủ sở hữu",
+ "name": "Tên",
+ "disabledTooltip": "Chế độ email đã tắt cho tên miền này",
+ "addAction": "Thêm hộp thư",
+ "title": "Hộp thư"
+ },
+ "tabTitle": "Hộp thư",
+ "port": "Cổng",
+ "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)",
+ "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"
+ },
+ "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"
+ },
+ "network": {
+ "configureIp": {
+ "providerGenericDescription": "Địa chỉ IP công cộng của server này sẽ được tự động dò tìm ra.",
+ "title": "Cấu hình nhà cung cấp IP"
+ },
+ "dyndns": {
+ "saved": "Đã lưu",
+ "useLabel": "Dùng DNS động",
+ "description": "Bật lựa chọn này để đồng bộ các bản ghi DNS với một địa chỉ IP thường xuyên thay đổi. Việc này hữu ích khi Cloudron chạy trên hệ thống mạng với địa chỉ IP hay thay đổi như kết nối mạng ở nhà.",
+ "title": "DNS động"
+ },
+ "firewall": {
+ "configure": {
+ "blocklistPlaceholder": "Dòng ngăn cách địa chỉ IP hay Subnet",
+ "description": "Những địa chỉ IP trùng khớp sẽ không kết nối vào server này được bao gồm mail server, dashboard và tất cả các app. Cẩn thận đừng tự khoá bản thân mình ra khỏi server.",
+ "title": "Cấu hình tường lửa"
+ },
+ "blocklist": "{{ blockCount }} địa chỉ IP đã được chặn",
+ "blockedIpRanges": "Địa chỉ IP và các vùng bị chặn",
+ "title": "Tường lửa"
+ },
+ "ip": {
+ "detected": "được dò ra",
+ "interfaceDescription": "Liệt kê những thiết bị hiện hữu trên server với:",
+ "configure": "Cấu hình",
+ "interface": "Tên giao diện mạng",
+ "address": "Địa chỉ IP",
+ "provider": "Nhà cung cấp",
+ "description": "Cloudron dùng địa chỉ IP này để cài đặt các bản ghi DNS.",
+ "title": "Địa chỉ IP"
+ },
+ "title": "Mạng"
+ },
+ "emails": {
+ "typeFilterHeader": "Tất cả sự kiện",
+ "solrConfig": {
+ "notEnoughMemory": "Xin dành ra ít nhất 3GB cho mail server để bật Solr.",
+ "enableSolrCheckbox": "Bật tìm kiếm văn bản bằng Solr",
+ "description": "Solr có thể được dùng để tìm kiếm nhanh văn bản trong mail. Solr chỉ có thể chạy khi mail service được chia ít nhất 3GB RAM.",
+ "title": "Tìm kiếm dạng văn bản đầy đủ (Solr)"
+ },
+ "testMailDialog": {
+ "sendAction": "Gửi",
+ "mailToPlaceholder": "Địa chỉ mail",
+ "mailTo": "Gửi mail cho",
+ "description": "Gửi mail thử từ no-reply@{{ domain }} tới địa chỉ mail dưới đây.",
+ "title": "Gủi mail thử cho {{ domain }}"
+ },
+ "spamFilterDialog": {
+ "customRulesPlaceholder": "Quy định Spamassassin tuỳ chỉnh",
+ "blacklisteAddressesPlaceholder": "Dòng để cácch những kiểu mẫu địa chỉ mail",
+ "customRules": "Quy định Spamassassin tuỳ chỉnh",
+ "blacklisteAddressesInfo": "Địa chỉ mail trùng khớp trong danh sách đen sẽ bị cho vào mục Spam. Kiểu ghi ‘*’ và ‘?’ cũng được hỗ trợ.",
+ "blacklisteAddresses": "Địa chỉ mail trong danh sách đen",
+ "title": "Bộ lọc spam"
+ },
+ "changeMailSizeDialog": {
+ "size": "Kích cỡ tối đa ghi bằng MB:",
+ "description": "Việc thay đổi kích cỡ mail tối đa này cần phải khởi động lại mail server.",
+ "title": "Thay đổi kích cỡ mail tối đa"
+ },
+ "changeDomainDialog": {
+ "manualInfo": "Thêm A record thủ công cho {{ domain }} vào địa chỉ IP công cộng của Cloudron này",
+ "locationPlaceholder": "Để trống để dùng tên miền gốc",
+ "location": "Vị trí",
+ "title": "Thay đổi vị trí đặt mail server",
+ "description": "Cloudron sẽ thay đổi những giá trị DNS cần thiết cho tất cả tên miền và khởi động lại mail server. Những client nhận mail trên máy tính hay điện thoại cần được cài đặt lại để sử dụng vị trí mới này làm IMAP và SMTP server."
+ },
+ "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ư.",
+ "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 }}",
+ "outboundInfo": "Mail đã được xếp vào hàng để gửi đến {{ rcptTo | prettyEmailAddresses }} từ {{ mailFrom | prettyEmailAddresses }}",
+ "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",
+ "bounce": "Bị trả về",
+ "denied": "Bị từ chối",
+ "queued": "Xếp vào hàng",
+ "outgoing": "Gửi mail ra",
+ "incoming": "Nhận mail vào",
+ "deferred": "Trì hoãn lại"
+ },
+ "empty": "Lò sự kiện hiện đang trống.",
+ "details": "Chi tiết",
+ "time": "Thời gian",
+ "title": "Log sự kiện"
+ },
+ "settings": {
+ "solrFts": "Tìm kiếm dạng văn bản đầy đủ (Solr)",
+ "solrNotRunning": "Đang ngừng",
+ "solrRunning": "Đang chạy",
+ "solrEnabled": "Đã bật",
+ "solrDisabled": "Đã tắt",
+ "changeDomainProgress": "Thay đổi tên miền email:",
+ "spamFilterOverview": "{{ blacklistCount }} email có trong danh sách đen.",
+ "location": "Nơi đặt mail server",
+ "spamFilter": "Lọc spam",
+ "maxMailSize": "Kích cỡ mail tối đa",
+ "info": "Các cài đặt này áp dụng cho tất cả các tên miền.",
+ "title": "Cài đặt"
+ },
+ "domains": {
+ "testEmailTooltip": "Gửi mail thử",
+ "stats": "{{ mailboxCount }} Hộp thư / Đã sử dụng: {{ usage }}",
+ "disabled": "Tắt",
+ "outbound": "Chỉ gửi ra",
+ "config": "Cấu hình",
+ "domain": "Tên miền",
+ "title": "Tên miền"
+ },
+ "title": "Email"
+ },
+ "branding": {
+ "changeLogo": {
+ "title": "Chọn ảnh đại diện cho Cloudron"
+ },
+ "footer": {
+ "subscriptionRequired": "Chức năng tuỳ chỉnh phần lề dưới chỉ có trong các gói trả phí.",
+ "setupSubscriptionNow": "Cài đặt gói đăng ký ngay",
+ "title": "Phần lề dưới",
+ "description": "Dùng markdown để chỉnh style cho phần lề dưới."
+ },
+ "logo": "Logo",
+ "cloudronName": "Tên cho Cloudron",
+ "title": "Thương hiệu"
+ },
+ "eventlog": {
+ "time": "Thời gian",
+ "title": "Log sự kiện",
+ "filterAllEvents": "Tất cả sự kiện",
+ "searchPlaceholder": "Tìm kiếm",
+ "details": "Chi tiết",
+ "source": "Nguồn"
+ },
+ "system": {
+ "selectPeriodLabel": "Chọn khoảng thời gian",
+ "cpuUsage": {
+ "graphTitle": "Phần trăm sử dụng",
+ "title": "Dung lượng CPU"
+ },
+ "systemMemory": {
+ "graphSubtext": "Các giá trị bộ nhớ riêng từng app không hiển thị chồng lên nhau",
+ "title": "Bộ nhớ hệ thống"
+ },
+ "diskUsage": {
+ "notAvailableYet": "Chưa có thông số",
+ "diskContent": "Ổ đĩa {{ type }} này hiện chứa",
+ "usageInfo": "Còn {{ available | prettyDiskSize }} trống trong tổng {{ size | prettyDiskSize }}",
+ "mountedAt": "{{ filesystem }} được gắn ở {{ mountpoint }}",
+ "title": "Dung lượng ổ đĩa"
+ },
+ "title": "Thông tin hệ thống"
+ },
+ "support": {
+ "remoteSupport": {
+ "enableAction": "Bật chế độ hỗ trợ qua SSH",
+ "disableAction": "Tắt chế độ hỗ trợ qua SSH",
+ "warning": "Xin đừng bật lựa chọn này trừ khi có yêu cầu từ nhóm hỗ trợ Cloudron.",
+ "description": "Bật lựa chọn này để cho phép những kỹ sư hỗ trợ kết nối vào server này qua SSH.",
+ "subscriptionRequired": "Tính năng hỗ trợ từ xa chỉ có trong các gói trả phí.",
+ "title": "Hỗ trợ từ xa"
+ },
+ "ticket": {
+ "emailPlaceholder": "Nếu cần, bạn hãy để lại một email khác với email trên để liên lạc với bạn",
+ "reportPlaceholder": "Mô tả vấn đề bạn gặp phải",
+ "submitAction": "Gửi",
+ "sshCheckbox": "Cho phép những kỹ sư hỗ trợ kết nối vào server này qua SSH",
+ "report": "Mô tả",
+ "emailInfo": "(Email đăng ký là {{ email }})",
+ "email": "Email",
+ "topic": "Chủ đề",
+ "selectApp": "Chọn App",
+ "typeEmail": "Lỗi Email",
+ "typeBug": "Báo cáo bug",
+ "typeApp": "Lỗi App",
+ "type": "Loại vấn đề",
+ "subscriptionRequiredDescription": "Bạn có thể tìm thấy câu trả lời trong hướng dẫn sử dụng hoặc hỏi trên Diễn đàn.",
+ "subscriptionRequired": "Phiếu hỗ trợ chỉ có trong những gói trả phí.",
+ "title": "Phiếu hỗ trợ"
+ },
+ "title": "Hỗ trợ"
+ },
+ "settings": {
+ "registryConfig": {
+ "provider": "Nhà cung cấp docker registry"
+ },
+ "language": {
+ "description": "Ngôn ngữ mặc định cho Cloudron được cài đặt ở đây. Ngôn ngữ này sẽ được dùng trong các email trao đổi qua lại như email mời người dùng hay cài đặt lại mật khẩu. Mỗi người dùng vẫn có thể chỉnh ngôn ngữ thuận tiện hơn cho mình trong dashboard cá nhân của từng người.",
+ "title": "Ngôn ngữ"
+ },
+ "updateDialog": {
+ "updateAction": "Cập nhật",
+ "skipBackupCheckbox": "Bỏ qua sao lưu",
+ "changes": "Những thay đổi",
+ "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.",
+ "blockingAppsInfo": "Xin chờ các quá trình trên hoàn thành.",
+ "blockingApps": "Những app sau đang chặn quá trình cập nhật vì có những tác vụ chưa hoàn thành:",
+ "title": "Cập nhật Cloudron lên phiên bản"
+ },
+ "updateScheduleDialog": {
+ "description": "Chọn ngày và thời gian mà Cloudron sẽ tự động cập nhật phiên bản mới của hệ thống và app. Xin tránh chọn trùng lịch cập nhật này với lịch sao lưu.",
+ "hours": "Thời gian",
+ "selectOne": "Xin chọn ít nhất một ngày và thời gian",
+ "days": "Ngày",
+ "enableCheckbox": "Bật chế độ cập nhật tự động",
+ "disableCheckbox": "Tắt chế độ cập nhật tự động",
+ "title": "Cấu hình lịch cập nhật tự động"
+ },
+ "privateDockerRegistry": {
+ "username": "Tên đăng nhập",
+ "configureAction": "Cấu hình registry",
+ "usernameNotSet": "Chưa được cài đặt",
+ "server": "Địa chỉ server",
+ "setupSubscriptionAction": "Cài đặt gói đăng ký ngay",
+ "subscriptionRequired": "Tính năng này chỉ có trong gói trả phí.",
+ "description": "Cloudron có thể tải hình ảnh về và cài đặt những app tuỳ chỉnh từ nơi lưu trữ docker registry cá nhân.",
+ "title": "Docker registry cá nhân"
+ },
+ "privateDockerRegistryDialog": {
+ "passwordToken": "Mật khẩu/Mật mã",
+ "email": "Email (Không bắt buộc)",
+ "title": "Cấu hình registry cá nhân"
+ },
+ "updates": {
+ "checkForUpdatesAction": "Kiểm tra phiên bản cập nhật mới",
+ "stopUpdateAction": "Dừng cập nhật",
+ "updateAvailableAction": "Có phiên bản cập nhật mới",
+ "changeScheduleAction": "Thay đổi lịch cập nhật",
+ "showLogsAction": "Hiển thị log",
+ "version": "Phiên bản hệ thống",
+ "currentSchedule": "Lịch cập nhật tự động hiện tại cho hệ thống và các app là",
+ "autoUpdateDisabled": "Cập nhật tự động cho hệ thống và các app đã tắt.",
+ "title": "Cập nhật"
+ },
+ "timezone": {
+ "description": "Múi giờ hiện tại là ở {{ timeZone }}.\nMúi giờ này được dùng cho việc lên lịch sao lưu và cập nhật hệ thống.",
+ "title": "Múi giờ"
+ },
+ "appstoreAccount": {
+ "subscriptionReactivateAction": "Kích hoạt lại gói đăng ký",
+ "subscriptionChangeAction": "Thay đổi gói đăng ký",
+ "subscriptionSetupAction": "Cài đặt gói đăng ký",
+ "subscriptionEndsAt": "Đã huỷ đăng ký và kết thúc vào",
+ "cloudronId": "Mã Cloudron ID",
+ "subscription": "Gói đăng ký",
+ "email": "Email tài khoản",
+ "setupAction": "Cài đặt tài khoản",
+ "description": "Tài khoản Cloudron.io được dùng để truy cập Cửa hàng App và quản lý gói đăng ký.",
+ "title": "Tài khoản Cloudron.io"
+ },
+ "title": "Cài đặt"
+ },
+ "services": {
+ "configure": {
+ "accessControlDescription": "Cho phép người dùng không phải admin truy cập vào SFTP sẽ cho họ đọc được file cấu hình và những mã bí mật. Với một số app như WordPress, người dùng này còn có thể xem được mật khẩu.",
+ "resetToDefaults": "Chỉnh về mặc định",
+ "requireAdminRoleLabel": "Cần là admin mới truy cập được vào SFTP",
+ "accessControl": "Quản lý quyền truy cập",
+ "memoryLimitDescription": "Cloudron dành 50% giá trị này cho RAM và 50% còn lại cho swap.",
+ "title": "Cấu hình {{ name }}"
+ },
+ "restartActionTooltip": "Khởi động lại",
+ "configureActionTooltip": "Cấu hình",
+ "memoryLimit": "Giới hạn bộ nhớ",
+ "memoryUsage": "Dung lượng bộ nhớ sử dụng",
+ "service": "Dịch vụ",
+ "description": "Những dịch vụ trong Cloudron mang đến các tính năng như cơ sở dữ liệu, email và xác thực.",
+ "title": "Dịch vụ",
+ "refresh": "Làm mới (refresh)"
+ },
+ "filemanager": {
+ "title": "Quản lý tập tin",
+ "status": {
+ "restartingApp": "đang khởi động lại app"
+ },
+ "newFile": {
+ "errorAlreadyExists": "Đã tồn tại"
+ },
+ "newDirectory": {
+ "errorAlreadyExists": "Đã tồn tại"
+ },
+ "extract": {
+ "error": "Không thể giải nén: {{ message }}"
+ },
+ "list": {
+ "mtime": "Đã chỉnh sửa",
+ "menu": {
+ "selectAll": "Chọn tất cả",
+ "paste": "Dán",
+ "copy": "Sao chép",
+ "cut": "Cắt",
+ "edit": "Chỉnh sửa",
+ "delete": "Xoá",
+ "download": "Tải xuống",
+ "extract": "Giải nén tại đây",
+ "chown": "Đổi quyền sở hữu",
+ "rename": "Đổi tên"
+ },
+ "name": "Tên",
+ "symlink": "Liên kết symlink đến {{ target }}",
+ "empty": "Không có tập tin nào",
+ "owner": "Chủ sở hữu",
+ "size": "Kích cỡ"
+ },
+ "toolbar": {
+ "openLogs": "Mở log",
+ "openTerminal": "Mở màn hình terminal",
+ "restartApp": "Khởi động lại app",
+ "uploadFile": "Tải tập tin lên",
+ "uploadFolder": "Tải thư mục lên",
+ "newFolder": "Thư mục mới",
+ "newFile": "Tập tin mới",
+ "upload": "Tải lên",
+ "new": "Thêm mới"
+ },
+ "chownDialog": {
+ "recursiveCheckbox": "Đổi quyền sở hữu theo vòng lặp đệ quy",
+ "change": "Đổi chủ sở hữu",
+ "newOwner": "Chủ sở hữu mới",
+ "title": "Đổi quyền sở hữu"
+ },
+ "notFound": "Không tìm thấy",
+ "textEditorCloseDialog": {
+ "dontSave": "Không cần lưu",
+ "details": "Những thay đổi của bạn sẽ bị mất nếu bạn không lưu lại",
+ "title": "Tập tin có những thay đổi chưa được lưu"
+ },
+ "extractDialog": {
+ "closeWarning": "Xin đừng làm mới trang cho đến khi việc giải nén đã xong.",
+ "title": "Đang giải nén {{ fileName }}"
+ },
+ "uploadingDialog": {
+ "overwrite": "Ghi đè lên",
+ "retry": "Thử lại",
+ "closeWarning": "Xin đừng làm mới trang đến khi việc tải lên đã hoàn thành.",
+ "errorAlreadyExists": "Một hay nhiều tập tin trùng đã tồn tại.",
+ "errorFailed": "Không tải lên được một hay nhiều tập tin. Xin thử lại.",
+ "title": "Đang tải lên các tập tin ({{ countDone }}/{{ count }})"
+ },
+ "renameDialog": {
+ "rename": "Đổi tên",
+ "newName": "Tên mới",
+ "title": "Đổi tên {{ fileName }}"
+ },
+ "newFileDialog": {
+ "create": "Tạo",
+ "title": "Tập tin mới"
+ },
+ "newDirectoryDialog": {
+ "create": "Tạo",
+ "title": "Thư mục mới"
+ },
+ "removeDialog": {
+ "reallyDelete": "Chắc chắn xoá?"
+ }
+ },
+ "terminal": {
+ "contextmenu": {
+ "pasteInfo": "Để dán dùng Ctrl+V",
+ "clear": "Xoá",
+ "copy": "Sao chép"
+ },
+ "busy": {
+ "installing": "Đang cài đặt app…",
+ "resuming": "Đang hoàn tác vụ của app…",
+ "restartingInPausedMode": "Đang tạm dừng khởi động lại app…",
+ "restarting": "Đang khởi động lại app…"
+ },
+ "downloadAction": "Tải xuống",
+ "uploading": "Đang tải lên…",
+ "uploadToTmp": "Tải lên /tmp",
+ "restart": "Khởi động lại",
+ "scheduler": "Lên lịch tự động/Cron",
+ "upload": {
+ "title": "Tải tập tin lên {{ name }}"
+ },
+ "download": {
+ "download": "Tải xuống",
+ "filePath": "Đường chỉ đến tập tin hay thư mục",
+ "title": "Tải xuống từ {{ name }}"
+ },
+ "title": "Màn hình terminal"
+ },
+ "logs": {
+ "download": "Tải xuống tất cả log",
+ "clear": "Làm sạch phần xem log",
+ "title": "Log"
+ },
+ "notifications": {
+ "clearAll": "Xoá hết",
+ "dismissTooltip": "Xoá",
+ "nonePending": "Đã xem tất cả!",
+ "title": "Thông báo"
+ },
+ "domains": {
+ "removeDialog": {
+ "description": "Lựa chọn này sẽ xoá tên miền {{ domain }}.",
+ "removeAction": "Xoá",
+ "title": "Chắc chắn xoá {{ domain }}?"
+ },
+ "domainDialog": {
+ "netcupApiKey": "Key API",
+ "netcupApiPassword": "Mật khẩu API",
+ "netcupCustomerNumber": "Số khách hàng",
+ "mastodonHostname": "Vị trí server của Mastodon",
+ "matrixHostname": "Vị trí server của Matrix",
+ "fallbackCertCertificatePlaceholder": "Chứng chỉ số",
+ "fallbackCertKeyPlaceholder": "Mã chứng chỉ số",
+ "fallbackCertCustomCertInfo": "Chứng chỉ số wildcard tuỳ chỉnh này sẽ được dùng cho tất cả app trên tên miền này. Nếu CCS không được nhập vào, một CCS tự ký sẽ được tự động tạo ra.",
+ "fallbackCertCustomCert": "Chứng chỉ số tuỳ chỉnh",
+ "fallbackCertInfo": "Chứng chỉ số được tự động lấy về và gia hạn từ Let’s Encrypt. Xem mức giới hạn sử dụng hiện tại ở đây.\nChứng chỉ số wildcard dự phòng này sẽ được dùng phòng trường hợp việc lấy chứng chỉ bên Let’s Encrypt không thành công. Nếu CCS dự phòng ở đây không được nhập vào, một CCS tự ký sẽ được tạo ra làm phương án dự phòng tiếp theo.",
+ "fallbackCert": "Chứng chỉ số dự phòng (không bắt buộc)",
+ "certProvider": "Nhà cung cấp chứng chỉ số",
+ "zoneName": "Tên zone (không bắt buộc)",
+ "advancedAction": "Cài đặt nâng cao…",
+ "letsEncryptInfo": "Let’s Encrypt cần cổng 80 trên server này mở để kết nối",
+ "wildcardInfo": "Cài đặt bản ghi A cho *.{{ domain }} và {{ domain }} vào địa chỉ IP của server này.",
+ "manualInfo": "Tất cả các bản ghi DNS cần được cài đặt thủ công trước khi cài đặt mỗi app.",
+ "namecheapInfo": "IP của server này còn được cho phép sử dụng mã API này.",
+ "namecheapApiKey": "Mã API",
+ "namecheapUsername": "Tên đăng nhập Namecheap",
+ "nameComApiToken": "Mã API",
+ "nameComUsername": "Tên đăng nhập Name.com",
+ "linodeToken": "Mã Linode",
+ "cloudflareEmail": "Email Cloudflare",
+ "cloudflareTokenTypeApiToken": "Mã API",
+ "cloudflareTokenTypeGlobalApiKey": "Mã API toàn cầu",
+ "cloudflareTokenType": "Loại mã",
+ "goDaddyApiSecret": "Mã secret API",
+ "goDaddyApiKey": "Key API",
+ "gandiApiKey": "Mã API Gandi",
+ "digitalOceanToken": "Mã DigitalOcean",
+ "gcdnsServiceAccountKey": "Mã tài khoản dịch vụ",
+ "route53SecretAccessKey": "Mã secret",
+ "route53AccessKeyId": "Mã access",
+ "provider": "Nhà cung cấp DNS",
+ "domain": "Tên miền",
+ "addDescription": "Thêm tên miền cho phép bạn cài đặt app trên những tên miền con. Cài đặt mail cho tên miền có thể được tuỳ chỉnh trên mục Email.",
+ "editTitle": "Cấu hình {{ domain }}",
+ "addTitle": "Thêm tên miền"
+ },
+ "subscriptionRequired": {
+ "description": "Để thêm tên miền, hãy đăng ký gói trả phí.",
+ "title": "Cần có gói dăng ký",
+ "setupAction": "Cài đặt gói đăng ký"
+ },
+ "changeDashboardDomain": {
+ "showLogsAction": "Hiển thị log",
+ "cancelAction": "Hủy",
+ "changeAction": "Thay đổi tên miền",
+ "description": "Lựa chọn này sẽ chuyển dashboard và mail server sang tên miền con my của tên miền được chọn.",
+ "title": "Thay đổi tên miền dashboard"
+ },
+ "renewCerts": {
+ "showLogsAction": "Hiển thị log",
+ "renewAllAction": "Gia hạn tất cả chứng chỉ số",
+ "description": "Cloudron gia hạn tự động chứng chỉ số của Let’s Encrypt. Sử dụng lựa chọn này để kích hoạt lệnh gia hạn ngay lập tức.",
+ "title": "Gia hạn chứng chỉ số"
+ },
+ "title": "Tên miền & Chứng chỉ số",
+ "tooltipRemove": "Xoá tên miền",
+ "tooltipEdit": "Chỉnh tên miền",
+ "provider": "Nhà cung cấp",
+ "domain": "Tên miền",
+ "addDomain": "Thêm tên miền"
+ }
+}