diff --git a/dashboard/public/translation/en.json b/dashboard/public/translation/en.json index d37010699..d716749c7 100644 --- a/dashboard/public/translation/en.json +++ b/dashboard/public/translation/en.json @@ -67,6 +67,9 @@ "loadingPlaceholder": "Loading", "platform": { "startupFailed": "Platform startup failed" + }, + "sidebar": { + "collapseAction": "Collapse sidebar" } }, "appstore": { @@ -1287,7 +1290,7 @@ "packageVersion": "Package version", "lastUpdated": "Last updated", "customAppUpdateInfo": "Auto-update is not available for custom apps.", - "installedAt": "Installed at" + "installedAt": "Installed" }, "auto": { "description": "App updates are applied periodically based on the update schedule", diff --git a/dashboard/public/translation/nl.json b/dashboard/public/translation/nl.json index ac4875550..c5a89890d 100644 --- a/dashboard/public/translation/nl.json +++ b/dashboard/public/translation/nl.json @@ -836,7 +836,7 @@ "packageVersion": "Pakketversie", "lastUpdated": "Laatst geüpdatet", "customAppUpdateInfo": "Auto-update is niet beschikbaar voor maatwerk apps.", - "installedAt": "Geïnstalleerd op" + "installedAt": "Geïnstalleerd" }, "auto": { "description": "App updates worden uitgevoerd op basis van de update planning.", diff --git a/dashboard/public/translation/pt.json b/dashboard/public/translation/pt.json index 0960ccbd6..5168c4346 100644 --- a/dashboard/public/translation/pt.json +++ b/dashboard/public/translation/pt.json @@ -762,35 +762,101 @@ "checkIntegrity": "Verificar Integridade" }, "import": { - "title": "Importar da Cópia de Segurança Externa" + "title": "Importar da Cópia de Segurança Externa", + "description": "Importar a aplicação de uma cópia de segurança externa." + }, + "auto": { + "title": "Cópias de segurança automáticas" } }, "repair": { "taskError": { - "description": "Se uma instalação, configuração, atualização, restauração ou cópia de segurança resultou num erro, pode tentar novamente a tarefa.", - "retryAction": "Repetir Tarefa {{ task }}" + "description": "Repetir uma instalação falhada, configuração, atualização, restauro, ou tarefa de cópia de segurança.", + "retryAction": "Repetir tarefa {{ task }}", + "title": "Erro de tarefa" }, "recovery": { - "title": "Modo de Recuperação" + "title": "Modo de Recuperação", + "restartAction": "Reiniciar", + "disableAction": "Desativar modo de recuperação", + "enableAction": "Ativar modo de recuperação" + }, + "restart": { + "title": "Reiniciar", + "description": "Se a aplicação não responder, tente reinstalar a mesma." } }, "updates": { "info": { "customAppUpdateInfo": "A atualização automática não está disponível para as aplicações personalizadas.", - "installedAt": "Instalado às", - "lastUpdated": "Última Atualização", - "packageVersion": "Versão do Pacote", - "description": "Título e Versão da Aplicação" + "installedAt": "Instalado", + "lastUpdated": "Última atualização", + "packageVersion": "Versão do pacote", + "description": "Título e Versão da Aplicação", + "appId": "Id. da Aplicação" + }, + "auto": { + "description": "As atualizações da aplicação são aplicadas periodicamente, com base no agendamento da atualização", + "title": "Atualizações automáticas" + }, + "updates": { + "description": "Cloudron procura automaticamente por atualizações na 'Loja de Aplicações'. Você também podes procurar manualmente." } }, "security": { - "hstsPreload": "Ativar pré-carregamento de HSTS para este site e todos os subdomínios" + "hstsPreload": "Ativar Pré-carregamento de HSTS (incluindo os subdomínios)", + "csp": { + "title": "Política de Segurança de Conteúdo", + "saveAction": "Guardar" + }, + "robots": { + "title": "Robots.txt", + "disableIndexingAction": "Desativar indexação", + "description": "Por predefinição, os robôs podem indexar esta aplicação." + } }, "forumAction": "Fórum", "resources": { "devices": { "label": "Dispositivos" } + }, + "email": { + "inbox": { + "title": "Mensagens a receber", + "enable": "Utilize Cloudron Mail para receber mensagens", + "disable": "Não configurar caixa de entrada" + }, + "from": { + "title": "Correio dos endereços", + "mailboxPlaceholder": "Nome da caixa de correio", + "saveAction": "Guardar", + "enable": "Utilize Cloudron Mail para enviar mensagens", + "displayName": "De nome" + }, + "configuration": { + "title": "Correio a enviar" + } + }, + "graphs": { + "period": { + "1h": "1 hora", + "12h": "12 horas", + "24h": "24 horas", + "7d": "7 dias", + "30d": "30 dias", + "6h": "6 horas" + }, + "diskIOTotal": "Total de leitura: {{ read }} Total de gravação: {{ write }}", + "networkIOTotal": "Total de a receber: {{ inbound }} Total de a enviar: {{ outbound }}" + }, + "storage": { + "mounts": { + "permissions": { + "readWrite": "Ler e Gravar", + "label": "Permissões" + } + } } }, "logs": { diff --git a/dashboard/public/translation/ru.json b/dashboard/public/translation/ru.json index ade57f1a9..de893e2b8 100644 --- a/dashboard/public/translation/ru.json +++ b/dashboard/public/translation/ru.json @@ -134,7 +134,7 @@ "bindPassword": "Привязать пароль (необязательно)", "bindUsername": "Привязать Уникальное имя (DN)/Имя пользователя (необязательно)", "title": "Подключиться к удалённому каталогу", - "noopInfo": "Внешний каталог не настроен.", + "noopInfo": "Внешний каталог не настроен", "provider": "Провайдер", "server": "URL сервера", "acceptSelfSignedCert": "Принимать самоподписанный сертификат", @@ -162,7 +162,7 @@ "username": "Имя пользователя", "role": "Роль", "groups": "Группы", - "noGroups": "Нет доступных групп.", + "noGroups": "Нет доступных групп", "usernamePlaceholder": "Необязательно. Если не указано, пользователь может выбрать во время регистрации.", "displayName": "Отображаемое имя", "primaryEmail": "Основной email", @@ -1081,7 +1081,7 @@ "changeDashboardDomain": { "title": "Домен панели управления", "changeAction": "Изменить домен", - "description": "Перемещает панель управления на поддомен \"my\" выбранного домена." + "description": "Изменяет поддомен панели управления \"my\" для выбранного домена" }, "domainDialog": { "editTitle": "Редактировать домен", @@ -1377,7 +1377,7 @@ "title": "Email подпись", "plainTextFormat": "Обычный текст", "htmlFormat": "Формат HTML", - "description": "Данный текст будет прикреплён ко всем письмам, отправляемым с выбранного домена.", + "description": "Данный текст будет прикреплён ко всем исходящим письмам с выбранного домена.", "customSignatureSet": "Настроена пользовательская подпись", "noSignatureSet": "Подпись не настроена" }, diff --git a/dashboard/public/translation/vi.json b/dashboard/public/translation/vi.json index ec7dfa54c..5ce91a77e 100644 --- a/dashboard/public/translation/vi.json +++ b/dashboard/public/translation/vi.json @@ -105,7 +105,7 @@ }, "users": { "editUserDialog": { - "title": "Chỉnh sửa người dùng {{ username }}", + "title": "Chỉnh sửa người dùng", "externalLdapWarning": "Người dùng này được đồng bộ từ thư mục LDAP ngoài." }, "deleteUserDialog": { @@ -150,8 +150,8 @@ "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 thiết lập.", - "description": "Cài đặt này đồng bộ và xác thực người dùng và nhóm từ một server LDAP hay ActiveDirectory bên ngoài. Sự đồng bộ hóa này được chạy theo chu kỳ nhưng cũng có thể được khởi động bằng tay.", + "noopInfo": "Không có thư mục ngoài nào được thiết lập", + "description": "Đồng bộ hóa và cho phép người dùng và nhóm từ một server LDAP hay Active Directory bên ngoài. Quá trình đồng bộ được chạy định kỳ mỗi 4 tiếng.", "title": "Kết nối thư mục ngoài", "disableWarning": "Nguồn mã xác minh cho tất cả người dùng hiện hữu sẽ được cài đặt lại dựa trên cơ sở dữ liệu mật khẩu nội bộ trên server." }, @@ -168,35 +168,39 @@ "invitationTooltip": "Mời", "setGhostTooltip": "Nhập vai", "mailmanagerTooltip": "Người dùng này có thể quản lý những ng dùng khác và cả những hộp thư", - "noMatchesPlaceholder": "Không có người dùng tương ứng" + "noMatchesPlaceholder": "Không có người dùng tương ứng", + "emptyPlaceholder": "Không có người dùng" }, "settings": { "saveAction": "Lưu", "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" + "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", - "emptyPlaceholder": "Chưa có nhóm nào cả" + "emptyPlaceholder": "Chưa có nhóm", + "noMatchesPlaceholder": "Không có nhóm tương ứng" }, "editGroupDialog": { - "title": "Chỉnh sửa nhóm {{ name }}", + "title": "Chỉnh sửa nhóm", "externalLdapWarning": "Nhóm này được đồng bộ từ thư mục LDAP ngoài." }, "group": { - "addGroupAction": "Thêm nhóm", + "addGroupAction": "Thêm", "users": "Người dùng", - "name": "Tên" + "name": "Tên", + "allowedApps": "App được cấp phép" }, "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?", + "description": "Nhóm này vẫn còn {{ memberCount }} thành viên.

Xóa nhóm \"{{ name }}\"?", "deleteAction": "Xoá", - "title": "Xoá nhóm {{ name }}" + "title": "Xoá nhóm" }, "passwordResetDialog": { "title": "Đặt lại mật khẩu cho {{ username }}", @@ -232,8 +236,8 @@ }, "setGhostDialog": { "generatePassword": "Tạo mật khẩu", - "title": "Tạo mật khẩu để nhập vai người dùng {{ username }}", - "description": "Cài đặt một mật khẩu tạm thời để đăng nhập vào thay mặt người dùng trong các app hoặc dashboard. Mật khẩu tạm thời chỉ có hiệu lực trong vòng 6 tiếng.", + "title": "Nhập vai người dùng", + "description": "Đặt một mật khẩu tạm thời để đăng nhập vào thay mặt người dùng trong các app hoặc dashboard. Mật khẩu tạm thời chỉ có hiệu lực trong vòng 6 tiếng.", "password": "Mật khẩu", "setPassword": "Cài mật khẩu" }, @@ -241,11 +245,15 @@ "body": "Email đã được gửi đến {{ email }}" }, "invitationDialog": { - "title": "Mời {{ username }}", + "title": "Mời người dùng", "description": "Đường link mời sau đây đã được gửi đến {{ email }}:", "sendAction": "Gửi mail", - "descriptionLink": "Sao chép đường link mời", - "descriptionEmail": "Gửi link mời" + "descriptionLink": "Đường link mời", + "descriptionEmail": "Gửi link mời", + "context": "Mời người dùng \"{{ username }}\"" + }, + "2FAResetDialog": { + "description": "Xóa bảo mật 2 Bước cho người dùng “{{ username }}”?" } }, "profile": { @@ -266,17 +274,18 @@ "title": "Bật chế độ Xác minh 2 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" + "enable": "Bật", + "mandatorySetup": "Cần có bảo mật 2 Bước để truy cập bảng điều khiển. Vui lòng hoàn thành cài đặt này để tiếp tục thao tác." }, "createAppPassword": { - "title": "Tạo mật khẩu app", + "title": "Thêm mật khẩu app", "name": "Tên cho mật khẩu", "app": "App", "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", + "title": "Thêm mã API", "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.", "name": "Tên cho mã API", @@ -289,14 +298,14 @@ "appPasswords": { "app": "App", "name": "Tên", - "noPasswordsPlaceholder": "Không có mật khẩu app được tạo", + "noPasswordsPlaceholder": "Không có mật khẩu app", "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", + "noTokensPlaceholder": "Không có mã API", "name": "Tên", "lastUsed": "Lần dùng cuối", "neverUsed": "chưa từng dùng", @@ -313,12 +322,12 @@ }, "changeEmail": { "title": "Thay đổi email chính", - "email": "Thêm địa chỉ mail mới", - "password": "Mật khẩu để xác nhận" + "email": "Thêm email mới", + "password": "Xác nhận bằng mật khẩu" }, "disable2FAAction": "Tắt xác minh hai bước", "changeFallbackEmail": { - "title": "Thay đổi email khôi phục mật khẩu" + "title": "Đổi email khôi phục mật khẩu" }, "changePasswordAction": "Đổi mật khẩu", "title": "Hồ sơ", @@ -326,10 +335,12 @@ "body": "Email đã được gửi đến {{ email }}" }, "removeApiToken": { - "title": "Chắc chắn xóa mã token {{ name }}?" + "title": "Xóa mã token API", + "description": "Xóa mã token API \"{{ name }}\" ?" }, "removeAppPassword": { - "title": "Chắc chắn xóa mật khẩu {{ name }}?" + "title": "Xóa mật khẩu app", + "description": "Xóa mật khẩu app \"{{ name }}\" ?" } }, "backups": { @@ -395,20 +406,20 @@ }, "listing": { "backupNow": "Sao lưu ngay bây giờ", - "cleanupBackups": "Dọn sạch bản sao lưu", - "tooltipDownloadBackupConfig": "Tải xuống cấu hình bản sao lưu", + "cleanupBackups": "Xóa bản sao lưu", + "tooltipDownloadBackupConfig": "Tải xuống cấu hình", "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", + "noBackups": "Không có bản sao lưu", + "title": "Bản sao lưu hệ thống", "tooltipPreservedBackup": "Bản sao này sẽ được giữ lại" }, "schedule": { "retentionPolicy": "Thời gian lưu giữ", "schedule": "Lịch sao lưu", - "title": "Lịch sao lưu và thời gian lưu giữ" + "title": "Lịch sao lưu & thời gian lưu giữ" }, "backupEdit": { "preserved": { diff --git a/dashboard/src/components/SideBar.vue b/dashboard/src/components/SideBar.vue index 4fe3ae7f5..84814de13 100644 --- a/dashboard/src/components/SideBar.vue +++ b/dashboard/src/components/SideBar.vue @@ -69,7 +69,7 @@ onMounted(() => { />
- +