Enhance audience management features with new components and API integrations
- Added `AssignCoursesModal`, `AudienceMemberRow`, `AudienceTable`, and related components for improved audience management UI. - Implemented audience invite actions including resend and revoke functionality. - Updated audience API to support importing members and assigning courses. - Refactored audience data handling to include status and invite management. - Improved overall user experience with pagination and selection features in the audience table.
This commit is contained in:
@@ -475,7 +475,54 @@
|
||||
"name": "Имя",
|
||||
"email": "электронная почта",
|
||||
"date_joined": "Дата присоединения",
|
||||
"upgrade": "Обновите свой план, чтобы пригласить больше студентов"
|
||||
"upgrade": "Обновите свой план, чтобы пригласить больше студентов",
|
||||
"import_users": "Импортировать пользователей",
|
||||
"search_placeholder": "Искать…",
|
||||
"status": "Статус",
|
||||
"status_active": "Активный",
|
||||
"status_pending": "Ожидается",
|
||||
"status_expired": "Срок действия истек",
|
||||
"status_revoked": "Отозван",
|
||||
"select_all": "Выбрать все",
|
||||
"selected_count": "{count} выбрано",
|
||||
"assign_courses": "Назначение курсам",
|
||||
"invite": {
|
||||
"row_actions_aria": "Открытые действия",
|
||||
"resend": "Отправить приглашение повторно",
|
||||
"revoke": "Отозвать ожидающее приглашение",
|
||||
"resend_snackbar_success": "Письмо с приглашением отправлено",
|
||||
"resend_snackbar_email_failed": "Приглашение было продлено, но письмо не удалось отправить.",
|
||||
"revoke_snackbar_success": "Ожидаемое приглашение отозвано"
|
||||
},
|
||||
"assign": {
|
||||
"title": "Назначение курсам",
|
||||
"description": "Предоставьте выбранным пользователям доступ к курсам и, при необходимости, уведомите их по электронной почте.",
|
||||
"select_courses": "Выберите курсы",
|
||||
"select_courses_placeholder": "Выбирайте курсы...",
|
||||
"send_email": "Отправить уведомление по электронной почте",
|
||||
"submit": "Назначить",
|
||||
"cancel": "Отмена",
|
||||
"snackbar_success": "Назначены пользователи {assigned} для курсов ({alreadyEnrolled} уже зачислены, письма {emailsSent} отправлены)",
|
||||
"snackbar_no_courses": "Пожалуйста, выберите хотя бы один курс",
|
||||
"snackbar_failed": "Не удалось назначить курсы."
|
||||
},
|
||||
"import": {
|
||||
"title": "Импортировать пользователей",
|
||||
"description": "Добавьте студентов в свою организацию, введя их адреса электронной почты. При желании назначьте их на курсы и отправьте приглашения по электронной почте.",
|
||||
"emails_label": "Адреса электронной почты",
|
||||
"emails_placeholder": "Введите адреса электронной почты, разделенные запятыми, новой строкой или точкой с запятой.\nнапример [email protected], [email protected]",
|
||||
"course_access": "Доступ к курсу",
|
||||
"no_courses": "Нет задания по курсу",
|
||||
"all_courses": "Все курсы",
|
||||
"select_courses": "Выберите конкретные курсы",
|
||||
"select_courses_placeholder": "Выбирайте курсы...",
|
||||
"send_email": "Отправить электронное письмо с приглашением импортированным пользователям",
|
||||
"submit": "Импортировать пользователей",
|
||||
"back": "Вернуться к аудитории",
|
||||
"snackbar_success": "Импортированные пользователи: {imported} ({skiped} уже существует, писем отправлено: {emailsSent})",
|
||||
"snackbar_no_emails": "Пожалуйста, введите хотя бы один адрес электронной почты",
|
||||
"snackbar_failed": "Не удалось импортировать пользователей."
|
||||
}
|
||||
},
|
||||
"community": {
|
||||
"title": "Сообщество",
|
||||
@@ -940,6 +987,8 @@
|
||||
"complete": "Завершить",
|
||||
"next": "Далее",
|
||||
"prev": "Предыдущий",
|
||||
"prev_shortcut": "Назад (←)",
|
||||
"next_shortcut": "Далее (→)",
|
||||
"disabled": "Функция отключена",
|
||||
"version_history": {
|
||||
"title": "История версий",
|
||||
@@ -1200,6 +1249,9 @@
|
||||
},
|
||||
"edit": {
|
||||
"accepted_answers_placeholder": "Принятые ответы (через запятую)"
|
||||
},
|
||||
"review": {
|
||||
"your_answer_label": "Отправлено:"
|
||||
}
|
||||
},
|
||||
"numeric": {
|
||||
@@ -1217,6 +1269,11 @@
|
||||
"tolerance_info": "Допустимое отклонение от правильного значения (например, 0,5 принимает +/-0,5).",
|
||||
"correct_value_placeholder": "Правильное значение",
|
||||
"tolerance_placeholder": "Толерантность"
|
||||
},
|
||||
"review": {
|
||||
"your_answer_label": "Отправлено:",
|
||||
"in_range": "В пределах допуска",
|
||||
"out_of_range": "Внешняя толерантность"
|
||||
}
|
||||
},
|
||||
"short_answer": {
|
||||
@@ -1228,6 +1285,10 @@
|
||||
},
|
||||
"edit": {
|
||||
"instructions_placeholder": "Дополнительные инструкции"
|
||||
},
|
||||
"review": {
|
||||
"your_answer_label": "Отправлено:",
|
||||
"accepted_label": "Принятые ответы"
|
||||
}
|
||||
},
|
||||
"true_false": {
|
||||
@@ -1291,8 +1352,9 @@
|
||||
"option_prefix": "Вариант",
|
||||
"remove": "Удалить",
|
||||
"add_option": "Добавить вариант",
|
||||
"correct_badge": "(Правильно)",
|
||||
"not_set": "Не установлено"
|
||||
"correct_badge": "Правильно",
|
||||
"not_set": "Не установлено",
|
||||
"incorrect_badge": "Неправильный"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -1473,7 +1535,10 @@
|
||||
"cancel": "Отмена"
|
||||
},
|
||||
"content_locked_title": "Этот контент заблокирован",
|
||||
"content_locked_description": "Ваш преподаватель еще не разблокировал этот контент. Завершите предыдущий контент или зайдите позже."
|
||||
"content_locked_description": "Ваш преподаватель еще не разблокировал этот контент. Завершите предыдущий контент или зайдите позже.",
|
||||
"saving": "Сохранение…",
|
||||
"saved": "Сохранено",
|
||||
"draft_recovery": "Для этого урока найден несохраненный черновик. Хотели бы вы восстановить его?"
|
||||
},
|
||||
"news_feed": {
|
||||
"heading": "Лента новостей",
|
||||
@@ -1582,6 +1647,7 @@
|
||||
"unpublished": "Неопубликовано",
|
||||
"continue_course": "Продолжить",
|
||||
"learn_more": "Узнать больше",
|
||||
"tags_overflow_aria": "Ещё {count} тегов",
|
||||
"list_view": {
|
||||
"title": "Название",
|
||||
"description": "Описание",
|
||||
@@ -2245,7 +2311,8 @@
|
||||
"email_password_disabled_message": "Для этой организации отключен вход по электронной почте и паролю.",
|
||||
"google_auth_disabled": "Аутентификация Google отключена.",
|
||||
"signup_disabled_error": "Регистрация для этой организации отключена. Пожалуйста, свяжитесь с вашим администратором.",
|
||||
"or_continue_with": "Или продолжите, используя адрес электронной почты и пароль."
|
||||
"or_continue_with": "Или продолжите, используя адрес электронной почты и пароль.",
|
||||
"sso_enabled": "{provider} включен для этой организации"
|
||||
},
|
||||
"tabs": {
|
||||
"general": "Общий",
|
||||
@@ -2471,7 +2538,8 @@
|
||||
"edit_group": "Редактировать группу",
|
||||
"edit_tag": "Изменить тег",
|
||||
"save": "Сохранить",
|
||||
"cancel": "Отмена"
|
||||
"cancel": "Отмена",
|
||||
"actions_menu": "Действия с тегами"
|
||||
},
|
||||
"common": {
|
||||
"not_available": "Н/Д"
|
||||
@@ -2480,9 +2548,13 @@
|
||||
"invite": {
|
||||
"organization": {
|
||||
"page_title": "Присоединяйтесь к {orgName} в ClassroomIO.",
|
||||
"role_label": "Роль: {роль}",
|
||||
"email_label": "Приглашенный адрес электронной почты: {email}",
|
||||
"join_button": "Присоединиться к организации",
|
||||
"invitation_student": "Вас пригласили в {orgName} в качестве ученика.",
|
||||
"invitation_teacher": "Вас пригласили в {orgName} в качестве преподавателя.",
|
||||
"invitation_admin": "Вас пригласили в {orgName} в качестве администратора.",
|
||||
"invitation_fallback": "Вас пригласили в {orgName} в качестве {role}.",
|
||||
"email_line": "Электронная почта: {email}",
|
||||
"accept_button": "Принять приглашение",
|
||||
"go_to_dashboard": "Перейти в панель управления",
|
||||
"messages": {
|
||||
"email_mismatch": "Вы вошли в систему с другим адресом электронной почты, указанным в этом приглашении.",
|
||||
"expired": "Срок действия этой ссылки для приглашения истек.",
|
||||
@@ -2520,6 +2592,17 @@
|
||||
"cancel": "Cancel",
|
||||
"save": "Create key"
|
||||
}
|
||||
},
|
||||
"usage": {
|
||||
"title": "Использование и ограничения",
|
||||
"description": "MCP доступен в каждом плане, но использование контролируется с помощью ежемесячных кредитов на автоматизацию и ключевых лимитов.",
|
||||
"credits_title": "Оставшиеся кредиты",
|
||||
"credits_description": "Мутирующие действия MCP потребляют кредиты. Действия чтения бесплатны.",
|
||||
"keys_title": "Активные ключи",
|
||||
"keys_description": "Используйте один ключ MCP для каждой интеграции, чтобы можно было без проблем менять или отзывать доступ.",
|
||||
"rate_limits_title": "Ограничения ставок",
|
||||
"rate_limits_description": "Запросы на чтение/запись/публикацию разрешены в минуту.",
|
||||
"used_label": "Использовано:"
|
||||
}
|
||||
},
|
||||
"keys": {
|
||||
@@ -2534,7 +2617,11 @@
|
||||
"never_used": "Никогда",
|
||||
"scopes_label": "Области применения:",
|
||||
"revoke_confirm": "Отозвать этот ключ автоматизации?",
|
||||
"rotate_confirm": "Повернуть этот ключ автоматизации?"
|
||||
"rotate_confirm": "Повернуть этот ключ автоматизации?",
|
||||
"table_key": "Ключ",
|
||||
"table_status": "Статус",
|
||||
"table_created": "Создано",
|
||||
"table_last_used": "Последнее использование"
|
||||
},
|
||||
"clients": {
|
||||
"claude_code": "Клод Код",
|
||||
|
||||
Reference in New Issue
Block a user