mirror of
https://github.com/andwati/zitadel.git
synced 2026-10-18 05:52:51 +00:00
# Which Problems Are Solved - The previous monorepo in monorepo structure for the login app and its related packages was fragmented, complicated and buggy. - The process for building and testing the login container was inconsistent between local development and CI. - Lack of clear documentation as well as easy and reliable ways for non-frontend developers to reproduce and fix failing PR checks locally. # How the Problems Are Solved - Consolidated the login app and its related npm packages by moving the main package to `apps/login/apps/login` and merging `apps/login/packages/integration` and `apps/login/packages/acceptance` into the main `apps/login` package. - Migrated from Docker Compose-based test setups to dev container-based setups, adding support for multiple dev container configurations: - `.devcontainer/base` - `.devcontainer/turbo-lint-unit` - `.devcontainer/turbo-lint-unit-debug` - `.devcontainer/login-integration` - `.devcontainer/login-integration-debug` - Added npm scripts to run the new dev container setups, enabling exact reproduction of GitHub PR checks locally, and updated the pipeline to use these containers. - Cleaned up Dockerfiles and docker-bake.hcl files to only build the production image for the login app. - Cleaned up compose files to focus on dev environments in dev containers. - Updated `CONTRIBUTING.md` with guidance on running and debugging PR checks locally using the new dev container approach. - Introduced separate Dockerfiles for the login app to distinguish between using published client packages and building clients from local protos. - Ensured the login container is always built in the pipeline for use in integration and acceptance tests. - Updated Makefile and GitHub Actions workflows to use `--frozen-lockfile` for installing pnpm packages, ensuring reproducible installs. - Disabled GitHub release creation by the changeset action. - Refactored the `/build` directory structure for clarity and maintainability. - Added a `clean` command to `docks/package.json`. - Experimentally added `knip` to the `zitadel-client` package for improved linting of dependencies and exports. # Additional Changes - Fixed Makefile commands for consistency and reliability. - Improved the structure and clarity of the `/build` directory to support seamless integration of the login build. - Enhanced documentation and developer experience for running and debugging CI checks locally. # Additional Context - See updated `CONTRIBUTING.md` for new local development and debugging instructions. - These changes are a prerequisite for further improvements to the CI pipeline and local development workflow. - Closes #10276
293 lines
14 KiB
JSON
293 lines
14 KiB
JSON
{
|
|
"common": {
|
|
"back": "Назад"
|
|
},
|
|
"accounts": {
|
|
"title": "Аккаунты",
|
|
"description": "Выберите аккаунт, который хотите использовать.",
|
|
"addAnother": "Добавить другой аккаунт",
|
|
"noResults": "Аккаунты не найдены",
|
|
"verified": "проверенный",
|
|
"expired": "истёк"
|
|
},
|
|
"logout": {
|
|
"title": "Выход",
|
|
"description": "Выберите аккаунт, который хотите удалить",
|
|
"noResults": "Аккаунты не найдены",
|
|
"clear": "Удалить сессию",
|
|
"verifiedAt": "Последняя активность: {time}",
|
|
"success": {
|
|
"title": "Выход выполнен успешно",
|
|
"description": "Вы успешно вышли из системы."
|
|
}
|
|
},
|
|
"loginname": {
|
|
"title": "С возвращением!",
|
|
"description": "Введите свои данные для входа.",
|
|
"register": "Зарегистрировать нового пользователя",
|
|
"submit": "Продолжить",
|
|
"required": {
|
|
"loginName": "Это поле обязательно для заполнения"
|
|
}
|
|
},
|
|
"password": {
|
|
"verify": {
|
|
"title": "Пароль",
|
|
"description": "Введите ваш пароль.",
|
|
"resetPassword": "Сбросить пароль",
|
|
"submit": "Продолжить",
|
|
"required": {
|
|
"password": "Это поле обязательно для заполнения"
|
|
}
|
|
},
|
|
"set": {
|
|
"title": "Установить пароль",
|
|
"description": "Установите пароль для вашего аккаунта",
|
|
"codeSent": "Код отправлен на ваш адрес электронной почты.",
|
|
"noCodeReceived": "Не получили код?",
|
|
"resend": "Отправить код повторно",
|
|
"submit": "Продолжить",
|
|
"required": {
|
|
"code": "Это поле обязательно для заполнения",
|
|
"newPassword": "Вы должны указать пароль!",
|
|
"confirmPassword": "Это поле обязательно для заполнения"
|
|
}
|
|
},
|
|
"change": {
|
|
"title": "Изменить пароль",
|
|
"description": "Установите пароль для вашего аккаунта",
|
|
"submit": "Продолжить",
|
|
"required": {
|
|
"newPassword": "Вы должны указать новый пароль!",
|
|
"confirmPassword": "Это поле обязательно для заполнения"
|
|
}
|
|
}
|
|
},
|
|
"idp": {
|
|
"title": "Войти через SSO",
|
|
"description": "Выберите одного из провайдеров для входа",
|
|
"orSignInWith": "или войти через",
|
|
"signInWithApple": "Войти через Apple",
|
|
"signInWithGoogle": "Войти через Google",
|
|
"signInWithAzureAD": "Войти через AzureAD",
|
|
"signInWithGithub": "Войти через GitHub",
|
|
"signInWithGitlab": "Войти через GitLab",
|
|
"loginSuccess": {
|
|
"title": "Вход выполнен успешно",
|
|
"description": "Вы успешно вошли в систему!"
|
|
},
|
|
"linkingSuccess": {
|
|
"title": "Аккаунт привязан",
|
|
"description": "Аккаунт успешно привязан!"
|
|
},
|
|
"registerSuccess": {
|
|
"title": "Регистрация завершена",
|
|
"description": "Вы успешно зарегистрировались!"
|
|
},
|
|
"loginError": {
|
|
"title": "Ошибка входа",
|
|
"description": "Произошла ошибка при попытке входа."
|
|
},
|
|
"linkingError": {
|
|
"title": "Ошибка привязки аккаунта",
|
|
"description": "Произошла ошибка при попытке привязать аккаунт."
|
|
},
|
|
"completeRegister": {
|
|
"title": "Завершите регистрацию",
|
|
"description": "Завершите регистрацию вашего аккаунта."
|
|
}
|
|
},
|
|
"ldap": {
|
|
"title": "Войти через LDAP",
|
|
"description": "Введите ваши учетные данные LDAP.",
|
|
"username": "Имя пользователя",
|
|
"password": "Пароль",
|
|
"submit": "Продолжить",
|
|
"required": {
|
|
"username": "Это поле обязательно для заполнения",
|
|
"password": "Это поле обязательно для заполнения"
|
|
}
|
|
},
|
|
"mfa": {
|
|
"verify": {
|
|
"title": "Подтвердите вашу личность",
|
|
"description": "Выберите один из следующих факторов.",
|
|
"noResults": "Нет доступных методов двухфакторной аутентификации"
|
|
},
|
|
"set": {
|
|
"title": "Настройка двухфакторной аутентификации",
|
|
"description": "Выберите один из следующих методов.",
|
|
"skip": "Пропустить"
|
|
}
|
|
},
|
|
"otp": {
|
|
"verify": {
|
|
"title": "Подтверждение 2FA",
|
|
"totpDescription": "Введите код из приложения-аутентификатора.",
|
|
"smsDescription": "Введите код, полученный по SMS.",
|
|
"emailDescription": "Введите код, полученный по email.",
|
|
"noCodeReceived": "Не получили код?",
|
|
"resendCode": "Отправить код повторно",
|
|
"submit": "Продолжить",
|
|
"required": {
|
|
"code": "Это поле обязательно для заполнения"
|
|
}
|
|
},
|
|
"set": {
|
|
"title": "Настройка двухфакторной аутентификации",
|
|
"totpDescription": "Отсканируйте QR-код в приложении-аутентификаторе.",
|
|
"smsDescription": "Введите номер телефона для получения кода по SMS.",
|
|
"emailDescription": "Введите email для получения кода.",
|
|
"totpRegisterDescription": "Отсканируйте QR-код или перейдите по ссылке вручную.",
|
|
"submit": "Продолжить",
|
|
"required": {
|
|
"code": "Это поле обязательно для заполнения"
|
|
}
|
|
}
|
|
},
|
|
"passkey": {
|
|
"verify": {
|
|
"title": "Аутентификация с помощью пасскей",
|
|
"description": "Устройство запросит отпечаток пальца, лицо или экранный замок",
|
|
"usePassword": "Использовать пароль",
|
|
"submit": "Продолжить"
|
|
},
|
|
"set": {
|
|
"title": "Настройка пасскей",
|
|
"description": "Устройство запросит отпечаток пальца, лицо или экранный замок",
|
|
"info": {
|
|
"description": "Пасскей — метод аутентификации через устройство (отпечаток пальца, Apple FaceID и аналоги).",
|
|
"link": "Аутентификация без пароля"
|
|
},
|
|
"skip": "Пропустить",
|
|
"submit": "Продолжить"
|
|
}
|
|
},
|
|
"u2f": {
|
|
"verify": {
|
|
"title": "Подтверждение 2FA",
|
|
"description": "Подтвердите аккаунт с помощью устройства."
|
|
},
|
|
"set": {
|
|
"title": "Настройка двухфакторной аутентификации",
|
|
"description": "Настройте устройство как второй фактор.",
|
|
"submit": "Продолжить"
|
|
}
|
|
},
|
|
"register": {
|
|
"methods": {
|
|
"passkey": "Пасскей",
|
|
"password": "Пароль"
|
|
},
|
|
"disabled": {
|
|
"title": "Регистрация отключена",
|
|
"description": "Регистрация недоступна. Обратитесь к администратору."
|
|
},
|
|
"missingdata": {
|
|
"title": "Недостаточно данных",
|
|
"description": "Укажите email, имя и фамилию для регистрации."
|
|
},
|
|
"title": "Регистрация",
|
|
"description": "Создайте свой аккаунт ZITADEL.",
|
|
"noMethodAvailableWarning": "Нет доступных методов аутентификации. Обратитесь к администратору.",
|
|
"selectMethod": "Выберите метод аутентификации",
|
|
"agreeTo": "Для регистрации необходимо принять условия:",
|
|
"termsOfService": "Условия использования",
|
|
"privacyPolicy": "Политика конфиденциальности",
|
|
"submit": "Продолжить",
|
|
"orUseIDP": "или используйте Identity Provider",
|
|
"password": {
|
|
"title": "Установить пароль",
|
|
"description": "Установите пароль для вашего аккаунта",
|
|
"submit": "Продолжить",
|
|
"required": {
|
|
"password": "Вы должны указать пароль!",
|
|
"confirmPassword": "Это поле обязательно для заполнения"
|
|
}
|
|
},
|
|
"required": {
|
|
"firstname": "Это поле обязательно для заполнения",
|
|
"lastname": "Это поле обязательно для заполнения",
|
|
"email": "Это поле обязательно для заполнения"
|
|
}
|
|
},
|
|
"invite": {
|
|
"title": "Пригласить пользователя",
|
|
"description": "Укажите email и имя пользователя для приглашения.",
|
|
"info": "Пользователь получит email с инструкциями.",
|
|
"notAllowed": "Ваши настройки не позволяют приглашать пользователей.",
|
|
"submit": "Продолжить",
|
|
"success": {
|
|
"title": "Пользователь приглашён",
|
|
"description": "Письмо успешно отправлено.",
|
|
"verified": "Пользователь приглашён и уже подтвердил email.",
|
|
"notVerifiedYet": "Пользователь приглашён. Он получит email с инструкциями.",
|
|
"submit": "Пригласить другого пользователя"
|
|
}
|
|
},
|
|
"signedin": {
|
|
"title": "Добро пожаловать, {user}!",
|
|
"description": "Вы вошли в систему.",
|
|
"continue": "Продолжить",
|
|
"error": {
|
|
"title": "Ошибка",
|
|
"description": "Не удалось войти в систему. Проверьте свои данные и попробуйте снова."
|
|
}
|
|
},
|
|
"verify": {
|
|
"userIdMissing": "Не указан userId!",
|
|
"successTitle": "Пользователь подтверждён",
|
|
"successDescription": "Пользователь успешно подтверждён.",
|
|
"setupAuthenticator": "Настроить аутентификатор",
|
|
"verify": {
|
|
"title": "Подтверждение пользователя",
|
|
"description": "Введите код из письма подтверждения.",
|
|
"noCodeReceived": "Не получили код?",
|
|
"resendCode": "Отправить код повторно",
|
|
"codeSent": "Код отправлен на ваш email.",
|
|
"submit": "Продолжить",
|
|
"required": {
|
|
"code": "Это поле обязательно для заполнения"
|
|
}
|
|
}
|
|
},
|
|
"authenticator": {
|
|
"title": "Выбор метода аутентификации",
|
|
"description": "Выберите предпочитаемый метод аутентификации",
|
|
"noMethodsAvailable": "Нет доступных методов аутентификации",
|
|
"allSetup": "Аутентификатор уже настроен!",
|
|
"linkWithIDP": "или привязать через Identity Provider"
|
|
},
|
|
"device": {
|
|
"usercode": {
|
|
"title": "Код устройства",
|
|
"description": "Введите код.",
|
|
"submit": "Продолжить",
|
|
"required": {
|
|
"code": "Это поле обязательно для заполнения"
|
|
}
|
|
},
|
|
"request": {
|
|
"title": "{appName} хочет подключиться:",
|
|
"description": "{appName} получит доступ к:",
|
|
"disclaimer": "Нажимая «Разрешить», вы разрешаете этому приложению и Zitadel использовать вашу информацию в соответствии с их условиями использования и политиками конфиденциальности. Вы можете отозвать этот доступ в любое время.",
|
|
"submit": "Разрешить",
|
|
"deny": "Запретить"
|
|
},
|
|
"scope": {
|
|
"openid": "Проверка вашей личности.",
|
|
"email": "Доступ к вашему адресу электронной почты.",
|
|
"profile": "Доступ к полной информации вашего профиля.",
|
|
"offline_access": "Разрешить офлайн-доступ к вашему аккаунту."
|
|
}
|
|
},
|
|
"error": {
|
|
"noUserCode": "Не указан код пользователя!",
|
|
"noDeviceRequest": "Не найдена ни одна заявка на устройство.",
|
|
"unknownContext": "Не удалось получить контекст пользователя. Укажите имя пользователя или loginName в параметрах поиска.",
|
|
"sessionExpired": "Ваша сессия истекла. Войдите снова.",
|
|
"failedLoading": "Ошибка загрузки данных. Попробуйте ещё раз.",
|
|
"tryagain": "Попробовать снова"
|
|
}
|
|
}
|