666 lines
43 KiB
Go
666 lines
43 KiB
Go
package server
|
||
|
||
func t(locale, key string) string {
|
||
if translations, ok := _translations[locale]; ok {
|
||
if v, ok := translations[key]; ok {
|
||
return v
|
||
}
|
||
}
|
||
if translations, ok := _translations["en"]; ok {
|
||
if v, ok := translations[key]; ok {
|
||
return v
|
||
}
|
||
}
|
||
if locale == "ru" {
|
||
return "Перевод временно недоступен"
|
||
}
|
||
return "Translation unavailable"
|
||
}
|
||
|
||
var _translations = map[string]map[string]string{
|
||
"ru": {
|
||
"home.title": "Синхронизация Верстака",
|
||
"home.eyebrow": "Локальная работа, когда нужно",
|
||
"home.heading": "Ваши vault остаются вашими",
|
||
"home.description": "Verstak Sync Server безопасно связывает ваши устройства, не заменяя локальный vault.",
|
||
"home.login": "Войти",
|
||
"home.register": "Создать аккаунт",
|
||
"home.version": "Версия",
|
||
"nav.primary": "Основная навигация",
|
||
"nav.login": "Войти",
|
||
"nav.register": "Регистрация",
|
||
"footer.localFirst": "Локальная работа прежде всего",
|
||
"locale.label": "Язык",
|
||
"locale.system": "Системный",
|
||
"locale.apply": "Применить язык",
|
||
"auth.welcome": "Добро пожаловать",
|
||
"auth.account": "Учётная запись",
|
||
"auth.loginTitle": "Вход в синхронизацию",
|
||
"auth.login": "Войти",
|
||
"auth.logout": "Выйти",
|
||
"auth.register": "Создать аккаунт",
|
||
"auth.registerTitle": "Создать аккаунт",
|
||
"auth.haveAccount": "Уже есть аккаунт? Войти",
|
||
"auth.forgot": "Забыли пароль?",
|
||
"auth.forgotTitle": "Восстановление пароля",
|
||
"auth.forgotDescription": "Укажите email, и мы отправим ссылку для сброса пароля, если аккаунт существует.",
|
||
"auth.sendLink": "Отправить ссылку",
|
||
"auth.backLogin": "Вернуться ко входу",
|
||
"auth.resetTitle": "Новый пароль",
|
||
"auth.savePassword": "Сохранить пароль",
|
||
"field.username": "Имя пользователя",
|
||
"field.usernameOrEmail": "Имя пользователя или email",
|
||
"field.email": "Email",
|
||
"field.password": "Пароль",
|
||
"field.newPassword": "Новый пароль",
|
||
"field.confirmPassword": "Подтвердите пароль",
|
||
"register.resultTitle": "Проверьте почту",
|
||
"register.resultMessage": "Если SMTP настроен, мы отправили ссылку подтверждения. После подтверждения можно войти.",
|
||
"forgot.sentTitle": "Проверьте почту",
|
||
"forgot.sentMessage": "Если аккаунт существует, ссылка для сброса уже отправлена.",
|
||
"reset.doneTitle": "Пароль изменён",
|
||
"reset.doneMessage": "Теперь можно войти с новым паролем.",
|
||
"confirm.title": "Подтвердите email",
|
||
"confirm.description": "Подтвердите адрес email, чтобы активировать учётную запись.",
|
||
"confirm.action": "Подтвердить email",
|
||
"confirm.resultTitle": "Email подтверждён",
|
||
"confirm.resultMessage": "Учётная запись активирована. Теперь можно войти.",
|
||
"common.continue": "Продолжить",
|
||
"common.back": "Назад",
|
||
"common.actions": "Действия",
|
||
"error.label": "Ошибка",
|
||
"error.badRequest": "Некорректный запрос",
|
||
"error.tryAgain": "Проверьте данные и повторите попытку.",
|
||
"error.registrationDisabled": "Регистрация отключена администратором.",
|
||
"error.allFieldsRequired": "Все поля обязательны.",
|
||
"error.passwordInvalid": "Пароль не соответствует требованиям безопасности.",
|
||
"error.accountTaken": "Имя пользователя или email уже заняты.",
|
||
"error.emailRequired": "Введите email.",
|
||
"error.passwordMismatch": "Пароли не совпадают.",
|
||
"error.invalidPublicURL": "Укажите корректный абсолютный public URL с http или https.",
|
||
"error.rateLimited": "Слишком много попыток. Подождите и повторите запрос.",
|
||
"error.notFound": "Страница не найдена.",
|
||
"error.deviceMustBeRevoked": "Удалять можно только предварительно отозванное устройство.",
|
||
"home.unavailableTitle": "Сервер временно недоступен",
|
||
"home.unavailableMessage": "Сервер ещё не готов обслуживать запросы. Повторите попытку позже.",
|
||
"error.invalidCredentials": "Неверное имя пользователя или пароль.",
|
||
"error.internal": "Внутренняя ошибка. Повторите попытку позже.",
|
||
"admin.eyebrow": "Администрирование сервера",
|
||
"admin.loginTitle": "Вход администратора",
|
||
"admin.navigation": "Навигация администратора",
|
||
"admin.overview": "Обзор",
|
||
"admin.access": "Доступ",
|
||
"admin.activeDevices": "Активные устройства",
|
||
"admin.operations": "Операции",
|
||
"admin.vaults": "Хранилища",
|
||
"admin.storage": "Хранилище",
|
||
"admin.audit": "Аудит",
|
||
"admin.settings": "Настройки",
|
||
"admin.diagnostics": "Диагностика",
|
||
"admin.serviceHealth": "Состояние сервиса",
|
||
"admin.lastActivity": "Последняя активность",
|
||
"admin.noVaults": "Vault пока нет",
|
||
"admin.databaseBytes": "Размер базы данных, байт",
|
||
"admin.blobBytes": "Объём blobs, байт",
|
||
"admin.retentionNote": "Журнал операций не удаляется автоматически: он нужен новым устройствам для восстановления состояния.",
|
||
"admin.event": "Событие",
|
||
"admin.time": "Время",
|
||
"admin.noAudit": "Событий аудита пока нет",
|
||
"admin.database": "База данных доступна",
|
||
"admin.blobStorage": "Blob-хранилище доступно",
|
||
"admin.schema": "Версия схемы",
|
||
"admin.serverTime": "Время сервера",
|
||
"admin.healthJSON": "Открыть health JSON",
|
||
"admin.manage": "Управление",
|
||
"admin.saveUser": "Сохранить пользователя",
|
||
"admin.search": "Поиск",
|
||
"admin.all": "Все",
|
||
"admin.applyFilters": "Применить",
|
||
"admin.pagination": "Пагинация",
|
||
"admin.previous": "Назад",
|
||
"admin.next": "Далее",
|
||
"admin.runCleanup": "Запустить безопасную очистку",
|
||
"admin.downloadDiagnostics": "Скачать диагностику",
|
||
"admin.vaultPrivacy": "Содержимое файлов и операции не отображаются в диагностике.",
|
||
"admin.general": "Общие настройки",
|
||
"admin.serverName": "Название сервера",
|
||
"admin.allowRegistration": "Разрешить публичную регистрацию",
|
||
"admin.smtpConfigured": "SMTP настраивается отдельно и пароль никогда не возвращается в форму.",
|
||
"user.account": "Моя учётная запись",
|
||
"user.devices": "Подключённые устройства",
|
||
"user.emailConfirmed": "Email подтверждён",
|
||
"user.emailUnconfirmed": "Email не подтверждён",
|
||
"user.filterDevices": "Поиск устройств",
|
||
"user.connectInstruction": "Подключите новое устройство через приложение Verstak: откройте настройки синхронизации и выполните pairing с этим сервером.",
|
||
"user.deviceRevoked": "Устройство отозвано.",
|
||
"user.noDevices": "Устройств пока нет",
|
||
"device.name": "Устройство",
|
||
"device.vault": "Хранилище",
|
||
"device.version": "Версия клиента",
|
||
"device.lastSeen": "Последняя активность",
|
||
"device.created": "Подключено",
|
||
"device.status": "Статус",
|
||
"device.active": "Активно",
|
||
"device.revoked": "Отозвано",
|
||
"device.revoke": "Отозвать",
|
||
"device.revokeConfirm": "Отозвать это устройство? Для продолжения нужен пароль.",
|
||
"server.registerTitle": "Регистрация",
|
||
"server.register": "Регистрация",
|
||
"server.username": "Имя пользователя",
|
||
"server.email": "Email",
|
||
"server.password": "Пароль",
|
||
"server.registerBtn": "Зарегистрироваться",
|
||
"server.alreadyHaveAccount": "Уже есть аккаунт?",
|
||
"server.loginBtn": "Войти",
|
||
"server.loginTitle": "Вход",
|
||
"server.usernameOrEmail": "Имя пользователя или email",
|
||
"server.forgotPassword": "Забыли пароль?",
|
||
"server.adminLink": "Админ",
|
||
"server.dashboard": "Панель управления",
|
||
"server.allFieldsRequired": "Все поля обязательны",
|
||
"server.back": "Назад",
|
||
"server.emailConfirmBody": "Подтвердите регистрацию: %s",
|
||
"server.emailConfirmSubject": "Verstak — подтверждение email",
|
||
"server.registrationSuccess": "Регистрация успешна",
|
||
"server.registrationEmailSent": "Письмо с ссылкой подтверждения отправлено.",
|
||
"server.registrationCheckEmail": "Проверьте почту и подтвердите аккаунт.",
|
||
"server.registrationAutoMessage": "Email не подтверждается. Токен подтверждения выведен в лог сервера.",
|
||
"server.resetPasswordTitle": "Сброс пароля",
|
||
"server.resetPassword": "Сброс пароля",
|
||
"server.resetInstruction": "Введите email для получения ссылки сброса.",
|
||
"server.sendLink": "Отправить ссылку",
|
||
"server.backToLogin": "Вернуться к входу",
|
||
"server.emailSentTitle": "Письмо отправлено",
|
||
"server.emailSent": "Письмо отправлено",
|
||
"server.emailSentMessage": "Если аккаунт существует, ссылка для сброса пароля отправлена на почту.",
|
||
"server.goHome": "На главную",
|
||
"server.newPasswordTitle": "Новый пароль",
|
||
"server.newPassword": "Новый пароль",
|
||
"server.passwordConfirm": "Подтвердите пароль",
|
||
"server.save": "Сохранить",
|
||
"server.passwordChanged": "Пароль изменён",
|
||
"server.passwordChangedMessage": "Пароль успешно изменён. Теперь можно войти.",
|
||
"server.emailConfirmed": "Email подтверждён",
|
||
"server.emailConfirmedMessage": "Аккаунт активирован. Теперь можно войти.",
|
||
"server.needEmail": "Введите email",
|
||
"server.passwordsDoNotMatch": "Пароли не совпадают",
|
||
"server.newPasswordResult": "Новый пароль для %s:\n",
|
||
"server.logout": "Выйти",
|
||
"server.error": "Ошибка",
|
||
"server.internalError": "Что-то пошло не так. Повторите попытку.",
|
||
"server.registrationFailed": "Не удалось зарегистрировать аккаунт. Повторите попытку.",
|
||
"userDashboard.devices": "Устройства",
|
||
"userDashboard.device": "Устройство",
|
||
"userDashboard.status": "Статус",
|
||
"userDashboard.connected": "Подключено",
|
||
"userDashboard.lastSeen": "Последний раз",
|
||
"userDashboard.version": "Версия",
|
||
"userDashboard.connectNew": "Подключить новое устройство",
|
||
"userDashboard.connectNewHint": "Установите Верстак на новом устройстве и выполните регистрацию.",
|
||
"userDashboard.revokeConfirm": "Отозвать устройство?",
|
||
"userDashboard.revokePrompt": "Введите пароль для подтверждения:",
|
||
"userDashboard.noDevices": "Нет устройств",
|
||
"userDashboard.active": "Активно",
|
||
"userDashboard.revoked": "Отозвано",
|
||
"userDashboard.revoke": "Отозвать",
|
||
"admin.login": "Вход администратора",
|
||
"admin.username": "Имя пользователя",
|
||
"admin.password": "Пароль",
|
||
"admin.loginBtn": "Войти",
|
||
"admin.dashboard": "Панель управления",
|
||
"admin.deviceCount": "Устройств",
|
||
"admin.opsCount": "Операций",
|
||
"admin.devices": "Устройства",
|
||
"admin.noDevices": "Нет устройств",
|
||
"admin.device": "Устройство",
|
||
"admin.user": "Пользователь",
|
||
"admin.version": "Версия",
|
||
"admin.status": "Статус",
|
||
"admin.lastSeen": "Последний раз",
|
||
"admin.active": "Активно",
|
||
"admin.revoked": "Отозвано",
|
||
"admin.revoke": "Отозвать",
|
||
"admin.smtp": "SMTP",
|
||
"admin.users": "Пользователи",
|
||
"admin.usersHeading": "Пользователи",
|
||
"admin.healthCheck": "Проверка здоровья",
|
||
"admin.smtpServer": "SMTP сервер",
|
||
"admin.smtpPort": "SMTP порт",
|
||
"admin.smtpType": "Тип шифрования",
|
||
"admin.smtpNoEncryption": "Без шифрования",
|
||
"admin.smtpUsername": "Имя пользователя SMTP",
|
||
"admin.smtpPassword": "Пароль SMTP",
|
||
"admin.smtpFrom": "Отправитель",
|
||
"admin.smtpServerURL": "URL сервера",
|
||
"admin.smtpSave": "Сохранить",
|
||
"admin.smtpTest": "Тест",
|
||
"admin.smtpTitle": "Настройки SMTP",
|
||
"admin.smtpTesting": "Проверка...",
|
||
"admin.smtpPassed": "✓ Тест пройден",
|
||
"admin.smtpRequired": "Укажите SMTP-сервер, порт и отправителя.",
|
||
"admin.smtpTestFailed": "Не удалось проверить настройки SMTP. Повторите попытку.",
|
||
"admin.settingsSaved": "Настройки сервера сохранены.",
|
||
"admin.smtpSaved": "Настройки SMTP сохранены.",
|
||
"admin.smtpStartTLS": "STARTTLS",
|
||
"admin.smtpTLS": "TLS",
|
||
"admin.warningReadiness": "Один или несколько компонентов сервера не готовы к работе.",
|
||
"admin.warningSMTP": "SMTP не настроен: письма подтверждения и сброса пароля не будут отправляться.",
|
||
"admin.warningOperations": "Журнал операций быстро растёт. Не удаляйте его без checkpoint-механизма.",
|
||
"admin.ops24h": "за 24 часа",
|
||
"admin.sort": "Сортировка",
|
||
"admin.created": "Создан",
|
||
"admin.ip": "IP",
|
||
"admin.message": "Сообщение",
|
||
"admin.severity": "Важность",
|
||
"admin.info": "Информация",
|
||
"admin.warningLevel": "Предупреждение",
|
||
"admin.errorLevel": "Ошибка",
|
||
"admin.publicURL": "Публичный URL",
|
||
"admin.saveSettings": "Сохранить настройки",
|
||
"admin.trustedProxies": "Доверенные reverse proxy",
|
||
"admin.network": "Сеть",
|
||
"admin.limits": "Лимиты и retention",
|
||
"admin.readOnlyConfig": "Лимиты задаются конфигурацией сервера и доступны здесь только для просмотра.",
|
||
"admin.maxJSONBody": "Максимальный JSON body",
|
||
"admin.maxPushOperations": "Операций в push",
|
||
"admin.maxPullPage": "Операций в pull page",
|
||
"admin.maxBlobBytes": "Максимальный размер blob",
|
||
"admin.maxVaultBlobBytes": "Квота blob vault",
|
||
"admin.maxUserBlobBytes": "Квота blob пользователя",
|
||
"admin.sequence": "Последняя sequence",
|
||
"admin.refresh": "Обновить",
|
||
"admin.copyDiagnostics": "Скопировать диагностику",
|
||
"admin.copied": "Скопировано",
|
||
"admin.blobReferences": "Ссылки на blobs",
|
||
"admin.orphanBlobs": "Blob без ссылок",
|
||
"admin.tempUploads": "Временные загрузки",
|
||
"admin.expiredSessions": "Истёкшие сессии",
|
||
"admin.expiredTokens": "Истёкшие email-токены",
|
||
"admin.lastCleanup": "Последняя очистка",
|
||
"admin.cleanupDone": "Безопасная очистка завершена.",
|
||
"audit.other": "Другое событие",
|
||
"audit.deviceAuthFailed": "Ошибка авторизации устройства",
|
||
"audit.devicePaired": "Устройство подключено",
|
||
"audit.deviceRevoked": "Устройство отозвано",
|
||
"audit.deviceDeleted": "Отозванное устройство удалено",
|
||
"audit.rateLimited": "Сработало ограничение попыток",
|
||
"audit.retentionCleanup": "Выполнена безопасная очистка",
|
||
"audit.smtpSettingsUpdated": "Настройки SMTP изменены",
|
||
"audit.smtpTestFailed": "Проверка SMTP не удалась",
|
||
"audit.smtpTestPassed": "Проверка SMTP прошла",
|
||
"audit.userBlockChanged": "Статус блокировки пользователя изменён",
|
||
"audit.userConfirmed": "Email пользователя подтверждён",
|
||
"audit.userCreated": "Пользователь создан",
|
||
"audit.userDeleted": "Пользователь удалён",
|
||
"audit.userPasswordReset": "Пароль пользователя сброшен",
|
||
"audit.userUpdated": "Пользователь изменён",
|
||
"audit.webSettingsUpdated": "Общие настройки изменены",
|
||
"status.ok": "Работает",
|
||
"status.degraded": "Требует внимания",
|
||
"status.available": "Доступно",
|
||
"status.unavailable": "Недоступно",
|
||
"admin.revokeConfirm": "Вы уверены?",
|
||
"common.loading": "Загрузка...",
|
||
"common.ok": "OK",
|
||
"common.error": "Ошибка",
|
||
"common.warning": "Предупреждения",
|
||
"admin.filterPlaceholder": "Поиск...",
|
||
"admin.email": "Email",
|
||
"admin.actions": "Действия",
|
||
"admin.confirmTitle": "Подтверждение",
|
||
"admin.modalCancel": "Отмена",
|
||
"admin.modalConfirm": "Подтвердить",
|
||
"admin.editUser": "Редактировать пользователя",
|
||
"admin.editBtn": "Сохранить",
|
||
"admin.resultTitle": "Результат",
|
||
"admin.confirmed": "Подтверждён",
|
||
"admin.unconfirmed": "Не подтверждён",
|
||
"admin.blocked": "Заблокирован",
|
||
"admin.unblock": "Разблокировать",
|
||
"admin.block": "Заблокировать",
|
||
"admin.resetPassword": "Сбросить пароль",
|
||
"admin.noUsers": "Нет пользователей",
|
||
"admin.resetPasswordConfirm": "Сбросить пароль",
|
||
"admin.resetPasswordMessage": "Новый пароль: ",
|
||
"admin.generatePassword": "Сгенерировать одноразовый пароль",
|
||
"admin.oneTimePasswordNotice": "Сохраните этот пароль сейчас: он будет показан только один раз.",
|
||
"admin.oneTimePasswordHint": "После ухода со страницы получить пароль повторно нельзя. Пользователь должен сменить его после входа.",
|
||
"admin.resetBtn": "Сбросить",
|
||
"admin.deleteUser": "Удалить",
|
||
"admin.deleteDevice": "Удалить устройство",
|
||
"admin.confirmUser": "Подтвердить email",
|
||
"admin.deleteUserConfirm": "Удалить пользователя и все связанные устройства, vault-связи, blobs и операции? Это действие нельзя отменить.",
|
||
"admin.deleteUserMessage": "Удалить пользователя %s?",
|
||
"admin.deleteBtn": "Удалить",
|
||
"admin.unblockUserTitle": "Разблокировать",
|
||
"admin.blockUserTitle": "Заблокировать",
|
||
"admin.unblockUserMessage": "Разблокировать пользователя?",
|
||
"admin.blockUserMessage": "Заблокировать пользователя?",
|
||
"admin.createUser": "Создать пользователя",
|
||
"admin.createUserBtn": "Создать",
|
||
"admin.createUserFailed": "Не удалось создать пользователя. Повторите попытку.",
|
||
},
|
||
"en": {
|
||
"home.title": "Verstak Sync",
|
||
"home.eyebrow": "Local work, when it matters",
|
||
"home.heading": "Your vaults stay yours",
|
||
"home.description": "Verstak Sync Server securely connects your devices without replacing the local vault.",
|
||
"home.login": "Login",
|
||
"home.register": "Create account",
|
||
"home.version": "Version",
|
||
"nav.primary": "Primary navigation",
|
||
"nav.login": "Login",
|
||
"nav.register": "Register",
|
||
"footer.localFirst": "Local-first by design",
|
||
"locale.label": "Language",
|
||
"locale.system": "System",
|
||
"locale.apply": "Apply language",
|
||
"auth.welcome": "Welcome",
|
||
"auth.account": "Account",
|
||
"auth.loginTitle": "Sign in to sync",
|
||
"auth.login": "Login",
|
||
"auth.logout": "Logout",
|
||
"auth.register": "Create account",
|
||
"auth.registerTitle": "Create an account",
|
||
"auth.haveAccount": "Already have an account? Login",
|
||
"auth.forgot": "Forgot password?",
|
||
"auth.forgotTitle": "Reset your password",
|
||
"auth.forgotDescription": "Enter your email and we will send a reset link if the account exists.",
|
||
"auth.sendLink": "Send reset link",
|
||
"auth.backLogin": "Back to login",
|
||
"auth.resetTitle": "New password",
|
||
"auth.savePassword": "Save password",
|
||
"field.username": "Username",
|
||
"field.usernameOrEmail": "Username or email",
|
||
"field.email": "Email",
|
||
"field.password": "Password",
|
||
"field.newPassword": "New password",
|
||
"field.confirmPassword": "Confirm password",
|
||
"register.resultTitle": "Check your email",
|
||
"register.resultMessage": "If SMTP is configured, we sent a confirmation link. You can sign in after confirmation.",
|
||
"forgot.sentTitle": "Check your email",
|
||
"forgot.sentMessage": "If the account exists, a reset link has been sent.",
|
||
"reset.doneTitle": "Password changed",
|
||
"reset.doneMessage": "You can now sign in with your new password.",
|
||
"confirm.title": "Confirm your email",
|
||
"confirm.description": "Confirm your email address to activate the account.",
|
||
"confirm.action": "Confirm email",
|
||
"confirm.resultTitle": "Email confirmed",
|
||
"confirm.resultMessage": "Your account is active. You can now sign in.",
|
||
"common.continue": "Continue",
|
||
"common.back": "Back",
|
||
"common.actions": "Actions",
|
||
"error.label": "Error",
|
||
"error.badRequest": "Invalid request",
|
||
"error.tryAgain": "Check the entered data and try again.",
|
||
"error.registrationDisabled": "Registration is disabled by the administrator.",
|
||
"error.allFieldsRequired": "All fields are required.",
|
||
"error.passwordInvalid": "The password does not meet the security requirements.",
|
||
"error.accountTaken": "Username or email is already in use.",
|
||
"error.emailRequired": "Enter an email address.",
|
||
"error.passwordMismatch": "Passwords do not match.",
|
||
"error.invalidPublicURL": "Enter a valid absolute public URL using http or https.",
|
||
"error.rateLimited": "Too many attempts. Wait and try again.",
|
||
"error.notFound": "Page not found.",
|
||
"error.deviceMustBeRevoked": "Only a revoked device can be deleted.",
|
||
"home.unavailableTitle": "Server is temporarily unavailable",
|
||
"home.unavailableMessage": "The server is not ready to serve requests yet. Try again later.",
|
||
"error.invalidCredentials": "Invalid username or password.",
|
||
"error.internal": "Internal error. Please try again later.",
|
||
"admin.eyebrow": "Server administration",
|
||
"admin.loginTitle": "Administrator login",
|
||
"admin.navigation": "Administrator navigation",
|
||
"admin.overview": "Overview",
|
||
"admin.access": "Access",
|
||
"admin.activeDevices": "Active devices",
|
||
"admin.operations": "Operations",
|
||
"admin.vaults": "Vaults",
|
||
"admin.storage": "Storage",
|
||
"admin.audit": "Audit log",
|
||
"admin.settings": "Settings",
|
||
"admin.diagnostics": "Diagnostics",
|
||
"admin.serviceHealth": "Service health",
|
||
"admin.lastActivity": "Last activity",
|
||
"admin.noVaults": "No vaults yet",
|
||
"admin.databaseBytes": "Database size, bytes",
|
||
"admin.blobBytes": "Blob storage, bytes",
|
||
"admin.retentionNote": "Operations are not deleted automatically: new devices need them to restore state.",
|
||
"admin.event": "Event",
|
||
"admin.time": "Time",
|
||
"admin.noAudit": "No audit events yet",
|
||
"admin.database": "Database reachable",
|
||
"admin.blobStorage": "Blob storage writable",
|
||
"admin.schema": "Schema version",
|
||
"admin.serverTime": "Server time",
|
||
"admin.healthJSON": "Open health JSON",
|
||
"admin.manage": "Manage",
|
||
"admin.saveUser": "Save user",
|
||
"admin.search": "Search",
|
||
"admin.all": "All",
|
||
"admin.applyFilters": "Apply",
|
||
"admin.pagination": "Pagination",
|
||
"admin.previous": "Previous",
|
||
"admin.next": "Next",
|
||
"admin.runCleanup": "Run safe cleanup",
|
||
"admin.downloadDiagnostics": "Download diagnostics",
|
||
"admin.vaultPrivacy": "File contents and operations are not displayed in diagnostics.",
|
||
"admin.general": "General settings",
|
||
"admin.serverName": "Server name",
|
||
"admin.allowRegistration": "Allow public registration",
|
||
"admin.smtpConfigured": "SMTP is configured separately and its password is never returned to a form.",
|
||
"user.account": "My account",
|
||
"user.devices": "Connected devices",
|
||
"user.emailConfirmed": "Email confirmed",
|
||
"user.emailUnconfirmed": "Email not confirmed",
|
||
"user.filterDevices": "Search devices",
|
||
"user.connectInstruction": "Connect another device in Verstak: open sync settings and pair it with this server.",
|
||
"user.deviceRevoked": "Device revoked.",
|
||
"user.noDevices": "No devices yet",
|
||
"device.name": "Device",
|
||
"device.vault": "Vault",
|
||
"device.version": "Client version",
|
||
"device.lastSeen": "Last activity",
|
||
"device.created": "Connected",
|
||
"device.status": "Status",
|
||
"device.active": "Active",
|
||
"device.revoked": "Revoked",
|
||
"device.revoke": "Revoke",
|
||
"device.revokeConfirm": "Revoke this device? Your password is required to continue.",
|
||
"server.registerTitle": "Registration",
|
||
"server.register": "Register",
|
||
"server.username": "Username",
|
||
"server.email": "Email",
|
||
"server.password": "Password",
|
||
"server.registerBtn": "Register",
|
||
"server.alreadyHaveAccount": "Already have an account?",
|
||
"server.loginBtn": "Login",
|
||
"server.loginTitle": "Login",
|
||
"server.usernameOrEmail": "Username or email",
|
||
"server.forgotPassword": "Forgot password?",
|
||
"server.adminLink": "Admin",
|
||
"server.dashboard": "Dashboard",
|
||
"server.allFieldsRequired": "All fields are required",
|
||
"server.back": "Back",
|
||
"server.emailConfirmBody": "Confirm registration: %s",
|
||
"server.emailConfirmSubject": "Verstak — email confirmation",
|
||
"server.registrationSuccess": "Registration successful",
|
||
"server.registrationEmailSent": "Confirmation link has been sent.",
|
||
"server.registrationCheckEmail": "Check your email and confirm your account.",
|
||
"server.registrationAutoMessage": "Email is not confirmed. Confirmation token logged to server.",
|
||
"server.resetPasswordTitle": "Reset Password",
|
||
"server.resetPassword": "Reset Password",
|
||
"server.resetInstruction": "Enter your email to receive a reset link.",
|
||
"server.sendLink": "Send link",
|
||
"server.backToLogin": "Back to login",
|
||
"server.emailSentTitle": "Email sent",
|
||
"server.emailSent": "Email sent",
|
||
"server.emailSentMessage": "If the account exists, a reset link has been sent.",
|
||
"server.goHome": "Go home",
|
||
"server.newPasswordTitle": "New Password",
|
||
"server.newPassword": "New Password",
|
||
"server.passwordConfirm": "Confirm Password",
|
||
"server.save": "Save",
|
||
"server.passwordChanged": "Password changed",
|
||
"server.passwordChangedMessage": "Password has been changed. You can now login.",
|
||
"server.emailConfirmed": "Email confirmed",
|
||
"server.emailConfirmedMessage": "Account activated. You can now login.",
|
||
"server.needEmail": "Enter email",
|
||
"server.passwordsDoNotMatch": "Passwords do not match",
|
||
"server.newPasswordResult": "New password for %s:\n",
|
||
"server.logout": "Logout",
|
||
"server.error": "Error",
|
||
"server.internalError": "Something went wrong. Please try again.",
|
||
"server.registrationFailed": "Could not register the account. Please try again.",
|
||
"userDashboard.devices": "Devices",
|
||
"userDashboard.device": "Device",
|
||
"userDashboard.status": "Status",
|
||
"userDashboard.connected": "Connected",
|
||
"userDashboard.lastSeen": "Last seen",
|
||
"userDashboard.version": "Version",
|
||
"userDashboard.connectNew": "Connect new device",
|
||
"userDashboard.connectNewHint": "Install Verstak on a new device and register it.",
|
||
"userDashboard.revokeConfirm": "Revoke device?",
|
||
"userDashboard.revokePrompt": "Enter password to confirm:",
|
||
"userDashboard.noDevices": "No devices",
|
||
"userDashboard.active": "Active",
|
||
"userDashboard.revoked": "Revoked",
|
||
"userDashboard.revoke": "Revoke",
|
||
"admin.login": "Admin Login",
|
||
"admin.username": "Username",
|
||
"admin.password": "Password",
|
||
"admin.loginBtn": "Login",
|
||
"admin.dashboard": "Admin Dashboard",
|
||
"admin.deviceCount": "Devices",
|
||
"admin.opsCount": "Operations",
|
||
"admin.devices": "Devices",
|
||
"admin.noDevices": "No devices",
|
||
"admin.device": "Device",
|
||
"admin.user": "User",
|
||
"admin.version": "Version",
|
||
"admin.status": "Status",
|
||
"admin.lastSeen": "Last seen",
|
||
"admin.active": "Active",
|
||
"admin.revoked": "Revoked",
|
||
"admin.revoke": "Revoke",
|
||
"admin.smtp": "SMTP",
|
||
"admin.users": "Users",
|
||
"admin.usersHeading": "Users",
|
||
"admin.healthCheck": "Health Check",
|
||
"admin.smtpServer": "SMTP Server",
|
||
"admin.smtpPort": "SMTP Port",
|
||
"admin.smtpType": "Encryption",
|
||
"admin.smtpNoEncryption": "None",
|
||
"admin.smtpUsername": "SMTP Username",
|
||
"admin.smtpPassword": "SMTP Password",
|
||
"admin.smtpFrom": "From",
|
||
"admin.smtpServerURL": "Server URL",
|
||
"admin.smtpSave": "Save",
|
||
"admin.smtpTest": "Test",
|
||
"admin.smtpTitle": "SMTP Settings",
|
||
"admin.smtpTesting": "Testing...",
|
||
"admin.smtpPassed": "✓ Test passed",
|
||
"admin.smtpRequired": "Enter the SMTP server, port, and sender.",
|
||
"admin.smtpTestFailed": "Could not test the SMTP settings. Please try again.",
|
||
"admin.settingsSaved": "Server settings saved.",
|
||
"admin.smtpSaved": "SMTP settings saved.",
|
||
"admin.smtpStartTLS": "STARTTLS",
|
||
"admin.smtpTLS": "TLS",
|
||
"admin.warningReadiness": "One or more server components are not ready.",
|
||
"admin.warningSMTP": "SMTP is not configured: confirmation and password-reset emails will not be sent.",
|
||
"admin.warningOperations": "The operation log is growing quickly. Do not prune it without a checkpoint mechanism.",
|
||
"admin.ops24h": "in the last 24 hours",
|
||
"admin.sort": "Sort",
|
||
"admin.created": "Created",
|
||
"admin.ip": "IP",
|
||
"admin.message": "Message",
|
||
"admin.severity": "Severity",
|
||
"admin.info": "Info",
|
||
"admin.warningLevel": "Warning",
|
||
"admin.errorLevel": "Error",
|
||
"admin.publicURL": "Public URL",
|
||
"admin.saveSettings": "Save settings",
|
||
"admin.trustedProxies": "Trusted reverse proxies",
|
||
"admin.network": "Network",
|
||
"admin.limits": "Limits and retention",
|
||
"admin.readOnlyConfig": "Limits are configured on the server and are read-only here.",
|
||
"admin.maxJSONBody": "Maximum JSON body",
|
||
"admin.maxPushOperations": "Operations per push",
|
||
"admin.maxPullPage": "Operations per pull page",
|
||
"admin.maxBlobBytes": "Maximum blob size",
|
||
"admin.maxVaultBlobBytes": "Vault blob quota",
|
||
"admin.maxUserBlobBytes": "User blob quota",
|
||
"admin.sequence": "Latest sequence",
|
||
"admin.refresh": "Refresh",
|
||
"admin.copyDiagnostics": "Copy diagnostics",
|
||
"admin.copied": "Copied",
|
||
"admin.blobReferences": "Blob references",
|
||
"admin.orphanBlobs": "Unreferenced blobs",
|
||
"admin.tempUploads": "Temporary uploads",
|
||
"admin.expiredSessions": "Expired sessions",
|
||
"admin.expiredTokens": "Expired email tokens",
|
||
"admin.lastCleanup": "Last cleanup",
|
||
"admin.cleanupDone": "Safe cleanup completed.",
|
||
"audit.other": "Other event",
|
||
"audit.deviceAuthFailed": "Device authentication failed",
|
||
"audit.devicePaired": "Device paired",
|
||
"audit.deviceRevoked": "Device revoked",
|
||
"audit.deviceDeleted": "Revoked device deleted",
|
||
"audit.rateLimited": "Rate limit triggered",
|
||
"audit.retentionCleanup": "Safe cleanup completed",
|
||
"audit.smtpSettingsUpdated": "SMTP settings updated",
|
||
"audit.smtpTestFailed": "SMTP test failed",
|
||
"audit.smtpTestPassed": "SMTP test passed",
|
||
"audit.userBlockChanged": "User block status changed",
|
||
"audit.userConfirmed": "User email confirmed",
|
||
"audit.userCreated": "User created",
|
||
"audit.userDeleted": "User deleted",
|
||
"audit.userPasswordReset": "User password reset",
|
||
"audit.userUpdated": "User updated",
|
||
"audit.webSettingsUpdated": "General settings updated",
|
||
"status.ok": "Operational",
|
||
"status.degraded": "Needs attention",
|
||
"status.available": "Available",
|
||
"status.unavailable": "Unavailable",
|
||
"admin.revokeConfirm": "Are you sure?",
|
||
"common.loading": "Loading...",
|
||
"common.ok": "OK",
|
||
"common.error": "Error",
|
||
"common.warning": "Warnings",
|
||
"admin.filterPlaceholder": "Search...",
|
||
"admin.email": "Email",
|
||
"admin.actions": "Actions",
|
||
"admin.confirmTitle": "Confirm",
|
||
"admin.modalCancel": "Cancel",
|
||
"admin.modalConfirm": "Confirm",
|
||
"admin.editUser": "Edit User",
|
||
"admin.editBtn": "Save",
|
||
"admin.resultTitle": "Result",
|
||
"admin.confirmed": "Confirmed",
|
||
"admin.unconfirmed": "Unconfirmed",
|
||
"admin.blocked": "Blocked",
|
||
"admin.unblock": "Unblock",
|
||
"admin.block": "Block",
|
||
"admin.resetPassword": "Reset Password",
|
||
"admin.noUsers": "No users",
|
||
"admin.resetPasswordConfirm": "Reset Password",
|
||
"admin.resetPasswordMessage": "New password: ",
|
||
"admin.generatePassword": "Generate one-time password",
|
||
"admin.oneTimePasswordNotice": "Save this password now: it is shown only once.",
|
||
"admin.oneTimePasswordHint": "It cannot be retrieved after leaving this page. The user should change it after signing in.",
|
||
"admin.resetBtn": "Reset",
|
||
"admin.deleteUser": "Delete",
|
||
"admin.deleteDevice": "Delete device",
|
||
"admin.confirmUser": "Confirm email",
|
||
"admin.deleteUserConfirm": "Delete this user and all related devices, vault associations, blobs, and operations? This cannot be undone.",
|
||
"admin.deleteUserMessage": "Delete user %s?",
|
||
"admin.deleteBtn": "Delete",
|
||
"admin.unblockUserTitle": "Unblock",
|
||
"admin.blockUserTitle": "Block",
|
||
"admin.unblockUserMessage": "Unblock user?",
|
||
"admin.blockUserMessage": "Block user?",
|
||
"admin.createUser": "Create User",
|
||
"admin.createUserBtn": "Create",
|
||
"admin.createUserFailed": "Could not create the user. Please try again.",
|
||
},
|
||
}
|