@tinyweb_dev/oe-exam-sdk 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/exam-create.d.ts +0 -1
- package/dist/api/exam-create.js +1 -180
- package/dist/api/exam-create.types.d.ts +0 -1
- package/dist/api/exam-create.types.js +1 -2
- package/dist/api/exam-questions.d.ts +0 -1
- package/dist/api/exam-questions.js +1 -99
- package/dist/api/exam-questions.types.d.ts +0 -1
- package/dist/api/exam-questions.types.js +1 -2
- package/dist/api/exam-taking.d.ts +0 -1
- package/dist/api/exam-taking.js +1 -74
- package/dist/api/exam-taking.types.d.ts +0 -1
- package/dist/api/exam-taking.types.js +1 -2
- package/dist/api/index.d.ts +0 -1
- package/dist/api/index.js +1 -7
- package/dist/api/result-review.d.ts +0 -1
- package/dist/api/result-review.js +1 -51
- package/dist/api/result-review.types.d.ts +0 -1
- package/dist/api/result-review.types.js +1 -2
- package/dist/components/CueCardEditor.d.ts +0 -1
- package/dist/components/CueCardEditor.js +1 -59
- package/dist/components/common/ResolvedImage.d.ts +0 -1
- package/dist/components/common/ResolvedImage.js +1 -16
- package/dist/components/exams/CreateExamInfoForm.d.ts +0 -1
- package/dist/components/exams/CreateExamInfoForm.js +1 -36
- package/dist/components/exams/CreateExamPageContainer.d.ts +0 -1
- package/dist/components/exams/CreateExamPageContainer.js +1 -104
- package/dist/components/exams/ExamCreator.d.ts +0 -1
- package/dist/components/exams/ExamCreator.js +1 -90
- package/dist/components/exams/ExamPartTabs.d.ts +0 -1
- package/dist/components/exams/ExamPartTabs.js +1 -41
- package/dist/components/exams/ExamQuestionGrid.d.ts +0 -1
- package/dist/components/exams/ExamQuestionGrid.js +1 -19
- package/dist/components/exams/ExamQuestionsPageContainer.d.ts +0 -1
- package/dist/components/exams/ExamQuestionsPageContainer.js +1 -91
- package/dist/components/exams/PartAudioUploader.d.ts +0 -1
- package/dist/components/exams/PartAudioUploader.js +1 -10
- package/dist/components/exams/TemplateSelector.d.ts +0 -1
- package/dist/components/exams/TemplateSelector.js +1 -67
- package/dist/components/exams/api.d.ts +0 -1
- package/dist/components/exams/api.js +1 -4
- package/dist/components/exams/create-exam.validation.d.ts +0 -1
- package/dist/components/exams/create-exam.validation.js +1 -19
- package/dist/components/exams/exam-template.utils.d.ts +0 -1
- package/dist/components/exams/exam-template.utils.js +1 -19
- package/dist/components/exams/index.d.ts +0 -1
- package/dist/components/exams/index.js +1 -11
- package/dist/components/exams/take/ExamTakingPageContainer.d.ts +0 -1
- package/dist/components/exams/take/ExamTakingPageContainer.js +1 -154
- package/dist/components/exams/take/GenericQuestionRenderer.d.ts +0 -1
- package/dist/components/exams/take/GenericQuestionRenderer.js +1 -15
- package/dist/components/exams/take/exam-taking.utils.d.ts +0 -1
- package/dist/components/exams/take/exam-taking.utils.js +1 -89
- package/dist/components/exams/take/hooks/useSpeakingRecorder.d.ts +0 -1
- package/dist/components/exams/take/hooks/useSpeakingRecorder.js +1 -25
- package/dist/components/exams/take/index.d.ts +0 -1
- package/dist/components/exams/take/index.js +1 -3
- package/dist/components/exams/take/types.d.ts +0 -1
- package/dist/components/exams/take/types.js +1 -2
- package/dist/components/index.d.ts +0 -1
- package/dist/components/index.js +1 -43
- package/dist/components/questions/_shared/config/question-types.config.d.ts +0 -1
- package/dist/components/questions/_shared/config/question-types.config.js +1 -334
- package/dist/components/questions/_shared/constants/color-palette.d.ts +0 -1
- package/dist/components/questions/_shared/constants/color-palette.js +1 -22
- package/dist/components/questions/_shared/hooks/useAnswerGroupQuestionGroup.d.ts +0 -1
- package/dist/components/questions/_shared/hooks/useAnswerGroupQuestionGroup.js +1 -106
- package/dist/components/questions/_shared/hooks/useBasicQuestionGroup.d.ts +0 -1
- package/dist/components/questions/_shared/hooks/useBasicQuestionGroup.js +1 -223
- package/dist/components/questions/_shared/hooks/useCompareImagesGroup.d.ts +0 -1
- package/dist/components/questions/_shared/hooks/useCompareImagesGroup.js +1 -141
- package/dist/components/questions/_shared/hooks/useImageQuestionGroup.d.ts +0 -1
- package/dist/components/questions/_shared/hooks/useImageQuestionGroup.js +1 -124
- package/dist/components/questions/_shared/hooks/useInfoExchangeGroup.d.ts +0 -1
- package/dist/components/questions/_shared/hooks/useInfoExchangeGroup.js +1 -51
- package/dist/components/questions/_shared/hooks/useQuestionFormState.d.ts +0 -1
- package/dist/components/questions/_shared/hooks/useQuestionFormState.js +1 -55
- package/dist/components/questions/_shared/hooks/useQuestionInitialization.d.ts +0 -1
- package/dist/components/questions/_shared/hooks/useQuestionInitialization.js +1 -124
- package/dist/components/questions/_shared/hooks/useQuestionListGroup.d.ts +0 -1
- package/dist/components/questions/_shared/hooks/useQuestionListGroup.js +1 -122
- package/dist/components/questions/_shared/hooks/useQuestionOnChange.d.ts +0 -1
- package/dist/components/questions/_shared/hooks/useQuestionOnChange.js +1 -71
- package/dist/components/questions/_shared/hooks/useSceneQuestionGroup.d.ts +0 -1
- package/dist/components/questions/_shared/hooks/useSceneQuestionGroup.js +1 -195
- package/dist/components/questions/_shared/index.d.ts +0 -1
- package/dist/components/questions/_shared/index.js +1 -8
- package/dist/components/questions/_shared/types/answer-the-question.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/answer-the-question.type.js +1 -2
- package/dist/components/questions/_shared/types/arrange-letters-into-words.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/arrange-letters-into-words.type.js +1 -2
- package/dist/components/questions/_shared/types/choose-correct-adjective.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/choose-correct-adjective.type.js +1 -4
- package/dist/components/questions/_shared/types/color-region.config.d.ts +0 -1
- package/dist/components/questions/_shared/types/color-region.config.js +1 -2
- package/dist/components/questions/_shared/types/fill-in-blank.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/fill-in-blank.type.js +1 -2
- package/dist/components/questions/_shared/types/fill-missing-words-in-grid.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/fill-missing-words-in-grid.type.js +1 -2
- package/dist/components/questions/_shared/types/gn-speaking-interview.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/gn-speaking-interview.type.js +1 -2
- package/dist/components/questions/_shared/types/index.d.ts +0 -1
- package/dist/components/questions/_shared/types/index.js +1 -13
- package/dist/components/questions/_shared/types/label-the-picture.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/label-the-picture.type.js +1 -2
- package/dist/components/questions/_shared/types/listen-and-choose-from-answer-group.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/listen-and-choose-from-answer-group.type.js +1 -2
- package/dist/components/questions/_shared/types/listen-and-choose-objects-in-scene.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/listen-and-choose-objects-in-scene.type.js +1 -2
- package/dist/components/questions/_shared/types/listen-and-drag-objects-into-scene.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/listen-and-drag-objects-into-scene.type.js +1 -2
- package/dist/components/questions/_shared/types/listen-and-speak-answer.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/listen-and-speak-answer.type.js +1 -2
- package/dist/components/questions/_shared/types/listen-and-speak-compare-images.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/listen-and-speak-compare-images.type.js +1 -2
- package/dist/components/questions/_shared/types/listen-and-speak-image-group.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/listen-and-speak-image-group.type.js +1 -2
- package/dist/components/questions/_shared/types/listen-and-speak-info-exchange.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/listen-and-speak-info-exchange.type.js +1 -2
- package/dist/components/questions/_shared/types/listen-and-speak-odd-one-out.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/listen-and-speak-odd-one-out.type.js +1 -4
- package/dist/components/questions/_shared/types/listen-and-speak-question-list.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/listen-and-speak-question-list.type.js +1 -2
- package/dist/components/questions/_shared/types/listen-and-speak-with-story-images.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/listen-and-speak-with-story-images.type.js +1 -4
- package/dist/components/questions/_shared/types/listen-and-tick-answer.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/listen-and-tick-answer.type.js +1 -2
- package/dist/components/questions/_shared/types/listening-drawline.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/listening-drawline.type.js +1 -2
- package/dist/components/questions/_shared/types/look-and-choose-answer.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/look-and-choose-answer.type.js +1 -2
- package/dist/components/questions/_shared/types/look-picture-fill-word-hint.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/look-picture-fill-word-hint.type.js +1 -2
- package/dist/components/questions/_shared/types/match-by-writing-answer.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/match-by-writing-answer.type.js +1 -2
- package/dist/components/questions/_shared/types/multiple-choice.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/multiple-choice.type.js +1 -2
- package/dist/components/questions/_shared/types/question-group.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/question-group.type.js +1 -12
- package/dist/components/questions/_shared/types/read-and-color-objects.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/read-and-color-objects.type.js +1 -2
- package/dist/components/questions/_shared/types/read-displayed-content.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/read-displayed-content.type.js +1 -2
- package/dist/components/questions/_shared/types/read-passage-and-answer-questions.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/read-passage-and-answer-questions.type.js +1 -2
- package/dist/components/questions/_shared/types/speaking-describe-image.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/speaking-describe-image.type.js +1 -2
- package/dist/components/questions/_shared/types/spontaneous-qa.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/spontaneous-qa.type.js +1 -2
- package/dist/components/questions/_shared/types/word-fill-paragraph-with-options.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/word-fill-paragraph-with-options.type.js +1 -2
- package/dist/components/questions/_shared/types/word-fill-paragraph.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/word-fill-paragraph.type.js +1 -2
- package/dist/components/questions/_shared/types/word-fill-structured-form.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/word-fill-structured-form.type.js +1 -2
- package/dist/components/questions/_shared/types/word-ordering.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/word-ordering.type.js +1 -2
- package/dist/components/questions/_shared/types/write-a-short-letter.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/write-a-short-letter.type.js +1 -2
- package/dist/components/questions/_shared/types/write-correct-verb-form.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/write-correct-verb-form.type.js +1 -4
- package/dist/components/questions/_shared/types/write-sentences.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/write-sentences.type.js +1 -2
- package/dist/components/questions/_shared/types/write-short-paragraph.type.d.ts +0 -1
- package/dist/components/questions/_shared/types/write-short-paragraph.type.js +1 -2
- package/dist/components/questions/_shared/utils/answer-builder.d.ts +0 -1
- package/dist/components/questions/_shared/utils/answer-builder.js +1 -80
- package/dist/components/questions/_shared/utils/createColorRegionRegistration.d.ts +0 -1
- package/dist/components/questions/_shared/utils/createColorRegionRegistration.js +1 -40
- package/dist/components/questions/_shared/utils/id-generator.d.ts +0 -1
- package/dist/components/questions/_shared/utils/id-generator.js +1 -4
- package/dist/components/questions/_shared/utils/question-validation.d.ts +0 -1
- package/dist/components/questions/_shared/utils/question-validation.js +1 -22
- package/dist/components/questions/components/ColorNode.d.ts +0 -1
- package/dist/components/questions/components/ColorNode.js +1 -86
- package/dist/components/questions/components/ColorRegionClient.d.ts +0 -1
- package/dist/components/questions/components/ColorRegionClient.js +1 -546
- package/dist/components/questions/components/ColorRegionCreator.d.ts +0 -1
- package/dist/components/questions/components/ColorRegionCreator.js +1 -421
- package/dist/components/questions/components/ColorRegionNode.d.ts +0 -1
- package/dist/components/questions/components/ColorRegionNode.js +1 -60
- package/dist/components/questions/components/CreatorGuide.d.ts +0 -1
- package/dist/components/questions/components/CreatorGuide.js +1 -104
- package/dist/components/questions/components/NameNode.d.ts +0 -1
- package/dist/components/questions/components/NameNode.js +1 -27
- package/dist/components/questions/components/QuestionBankOption.d.ts +0 -1
- package/dist/components/questions/components/QuestionBankOption.js +1 -47
- package/dist/components/questions/components/QuestionBasicInfoForm.d.ts +0 -1
- package/dist/components/questions/components/QuestionBasicInfoForm.js +1 -10
- package/dist/components/questions/components/QuestionCommonFields.d.ts +0 -1
- package/dist/components/questions/components/QuestionCommonFields.js +1 -34
- package/dist/components/questions/components/QuestionSearchDropdown.d.ts +0 -1
- package/dist/components/questions/components/QuestionSearchDropdown.js +1 -259
- package/dist/components/questions/components/QuestionTypeSelector.d.ts +0 -1
- package/dist/components/questions/components/QuestionTypeSelector.js +1 -33
- package/dist/components/questions/components/QuestionTypeSpecificForms.d.ts +0 -1
- package/dist/components/questions/components/QuestionTypeSpecificForms.js +1 -7
- package/dist/components/questions/components/RegionNode.d.ts +0 -1
- package/dist/components/questions/components/RegionNode.js +1 -95
- package/dist/components/questions/components/index.d.ts +0 -1
- package/dist/components/questions/components/index.js +1 -15
- package/dist/components/questions/creator/QuestionCreator.d.ts +0 -1
- package/dist/components/questions/creator/QuestionCreator.js +1 -91
- package/dist/components/questions/creator/QuestionGroupCreator.d.ts +0 -1
- package/dist/components/questions/creator/QuestionGroupCreator.js +1 -120
- package/dist/components/questions/creator/dedicated-component-router.d.ts +0 -1
- package/dist/components/questions/creator/dedicated-component-router.js +1 -80
- package/dist/components/questions/creator/index.d.ts +0 -1
- package/dist/components/questions/creator/index.js +1 -4
- package/dist/components/questions/creator/question-type-registry.d.ts +0 -1
- package/dist/components/questions/creator/question-type-registry.js +1 -81
- package/dist/components/questions/groups/ArticlesGroupCard.d.ts +0 -1
- package/dist/components/questions/groups/ArticlesGroupCard.js +1 -122
- package/dist/components/questions/groups/BasicQuestionGroupCard.d.ts +0 -1
- package/dist/components/questions/groups/BasicQuestionGroupCard.js +1 -51
- package/dist/components/questions/groups/DocumentGroupCard.d.ts +0 -1
- package/dist/components/questions/groups/DocumentGroupCard.js +1 -115
- package/dist/components/questions/groups/MatchAnswerGroupCard.d.ts +0 -1
- package/dist/components/questions/groups/MatchAnswerGroupCard.js +1 -26
- package/dist/components/questions/index.d.ts +0 -1
- package/dist/components/questions/index.js +1 -11
- package/dist/components/questions/types/answer-the-question/AnswerTheQuestionClient.d.ts +0 -1
- package/dist/components/questions/types/answer-the-question/AnswerTheQuestionClient.js +1 -38
- package/dist/components/questions/types/answer-the-question/AnswerTheQuestionCreator.d.ts +0 -1
- package/dist/components/questions/types/answer-the-question/AnswerTheQuestionCreator.js +1 -352
- package/dist/components/questions/types/answer-the-question/register.d.ts +0 -1
- package/dist/components/questions/types/answer-the-question/register.js +1 -68
- package/dist/components/questions/types/answer-the-question/transform.d.ts +0 -1
- package/dist/components/questions/types/answer-the-question/transform.js +1 -37
- package/dist/components/questions/types/arrange-letters-into-words/ArrangeLettersIntoWordsClient.d.ts +0 -1
- package/dist/components/questions/types/arrange-letters-into-words/ArrangeLettersIntoWordsClient.js +1 -142
- package/dist/components/questions/types/arrange-letters-into-words/ArrangeLettersIntoWordsCreator.d.ts +0 -1
- package/dist/components/questions/types/arrange-letters-into-words/ArrangeLettersIntoWordsCreator.js +1 -119
- package/dist/components/questions/types/arrange-letters-into-words/index.d.ts +0 -1
- package/dist/components/questions/types/arrange-letters-into-words/index.js +1 -3
- package/dist/components/questions/types/arrange-letters-into-words/register.d.ts +0 -1
- package/dist/components/questions/types/arrange-letters-into-words/register.js +1 -5
- package/dist/components/questions/types/arrange-letters-into-words/transform.d.ts +0 -1
- package/dist/components/questions/types/arrange-letters-into-words/transform.js +1 -25
- package/dist/components/questions/types/choose-correct-adjective/ChooseCorrectAdjectiveClient.d.ts +0 -1
- package/dist/components/questions/types/choose-correct-adjective/ChooseCorrectAdjectiveClient.js +1 -65
- package/dist/components/questions/types/choose-correct-adjective/ChooseCorrectAdjectiveCreator.d.ts +0 -1
- package/dist/components/questions/types/choose-correct-adjective/ChooseCorrectAdjectiveCreator.js +1 -170
- package/dist/components/questions/types/choose-correct-adjective/index.d.ts +0 -1
- package/dist/components/questions/types/choose-correct-adjective/index.js +1 -3
- package/dist/components/questions/types/choose-correct-adjective/register.d.ts +0 -1
- package/dist/components/questions/types/choose-correct-adjective/register.js +1 -56
- package/dist/components/questions/types/choose-correct-adjective/transform.d.ts +0 -1
- package/dist/components/questions/types/choose-correct-adjective/transform.js +1 -17
- package/dist/components/questions/types/choose-the-correct-answer/ChooseTheCorrectAnswerClient.d.ts +0 -1
- package/dist/components/questions/types/choose-the-correct-answer/ChooseTheCorrectAnswerClient.js +1 -132
- package/dist/components/questions/types/choose-the-correct-answer/ChooseTheCorrectAnswerCreator.d.ts +0 -1
- package/dist/components/questions/types/choose-the-correct-answer/ChooseTheCorrectAnswerCreator.js +1 -582
- package/dist/components/questions/types/choose-the-correct-answer/index.d.ts +0 -1
- package/dist/components/questions/types/choose-the-correct-answer/index.js +1 -3
- package/dist/components/questions/types/choose-the-correct-answer/register.d.ts +0 -1
- package/dist/components/questions/types/choose-the-correct-answer/register.js +1 -102
- package/dist/components/questions/types/choose-the-correct-answer/transform.d.ts +0 -1
- package/dist/components/questions/types/choose-the-correct-answer/transform.js +1 -44
- package/dist/components/questions/types/fill-in-blank/FillInBlankClient.d.ts +0 -1
- package/dist/components/questions/types/fill-in-blank/FillInBlankClient.js +1 -276
- package/dist/components/questions/types/fill-in-blank/FillInBlankCreator.d.ts +0 -1
- package/dist/components/questions/types/fill-in-blank/FillInBlankCreator.js +1 -449
- package/dist/components/questions/types/fill-in-blank/index.d.ts +0 -1
- package/dist/components/questions/types/fill-in-blank/index.js +1 -3
- package/dist/components/questions/types/fill-in-blank/register.d.ts +0 -1
- package/dist/components/questions/types/fill-in-blank/register.js +1 -139
- package/dist/components/questions/types/fill-in-blank/transform.d.ts +0 -1
- package/dist/components/questions/types/fill-in-blank/transform.js +1 -60
- package/dist/components/questions/types/fill-missing-words-in-grid/FillMissingWordsInGridClient.d.ts +0 -1
- package/dist/components/questions/types/fill-missing-words-in-grid/FillMissingWordsInGridClient.js +1 -118
- package/dist/components/questions/types/fill-missing-words-in-grid/FillMissingWordsInGridCreator.d.ts +0 -1
- package/dist/components/questions/types/fill-missing-words-in-grid/FillMissingWordsInGridCreator.js +1 -672
- package/dist/components/questions/types/fill-missing-words-in-grid/index.d.ts +0 -1
- package/dist/components/questions/types/fill-missing-words-in-grid/index.js +1 -3
- package/dist/components/questions/types/fill-missing-words-in-grid/register.d.ts +0 -1
- package/dist/components/questions/types/fill-missing-words-in-grid/register.js +1 -38
- package/dist/components/questions/types/fill-missing-words-in-grid/transform.d.ts +0 -1
- package/dist/components/questions/types/fill-missing-words-in-grid/transform.js +1 -16
- package/dist/components/questions/types/gn-speaking-interview/GNSpeakingInterviewCreator.d.ts +0 -1
- package/dist/components/questions/types/gn-speaking-interview/GNSpeakingInterviewCreator.js +1 -263
- package/dist/components/questions/types/gn-speaking-interview/register.d.ts +0 -1
- package/dist/components/questions/types/gn-speaking-interview/register.js +1 -122
- package/dist/components/questions/types/gn-speaking-interview/transform.d.ts +0 -1
- package/dist/components/questions/types/gn-speaking-interview/transform.js +1 -49
- package/dist/components/questions/types/image-object-matching/ImageObjectMatchingClient.d.ts +0 -1
- package/dist/components/questions/types/image-object-matching/ImageObjectMatchingClient.js +1 -17
- package/dist/components/questions/types/image-object-matching/ImageObjectMatchingCreator.d.ts +0 -1
- package/dist/components/questions/types/image-object-matching/ImageObjectMatchingCreator.js +1 -28
- package/dist/components/questions/types/image-object-matching/index.d.ts +0 -1
- package/dist/components/questions/types/image-object-matching/index.js +1 -3
- package/dist/components/questions/types/image-object-matching/register.d.ts +0 -1
- package/dist/components/questions/types/image-object-matching/register.js +1 -4
- package/dist/components/questions/types/image-object-matching/transform.d.ts +0 -1
- package/dist/components/questions/types/image-object-matching/transform.js +1 -3
- package/dist/components/questions/types/label-the-picture/LabelThePictureClient.d.ts +0 -1
- package/dist/components/questions/types/label-the-picture/LabelThePictureClient.js +1 -103
- package/dist/components/questions/types/label-the-picture/LabelThePictureCreator.d.ts +0 -1
- package/dist/components/questions/types/label-the-picture/LabelThePictureCreator.js +1 -345
- package/dist/components/questions/types/label-the-picture/index.d.ts +0 -1
- package/dist/components/questions/types/label-the-picture/index.js +1 -3
- package/dist/components/questions/types/label-the-picture/register.d.ts +0 -1
- package/dist/components/questions/types/label-the-picture/register.js +1 -55
- package/dist/components/questions/types/label-the-picture/transform.d.ts +0 -1
- package/dist/components/questions/types/label-the-picture/transform.js +1 -29
- package/dist/components/questions/types/listen-and-choose-from-answer-group/ListenAndChooseFromAnswerGroupClient.d.ts +0 -1
- package/dist/components/questions/types/listen-and-choose-from-answer-group/ListenAndChooseFromAnswerGroupClient.js +1 -79
- package/dist/components/questions/types/listen-and-choose-from-answer-group/ListenAndChooseFromAnswerGroupCreator.d.ts +0 -1
- package/dist/components/questions/types/listen-and-choose-from-answer-group/ListenAndChooseFromAnswerGroupCreator.js +1 -233
- package/dist/components/questions/types/listen-and-choose-from-answer-group/index.d.ts +0 -1
- package/dist/components/questions/types/listen-and-choose-from-answer-group/index.js +1 -3
- package/dist/components/questions/types/listen-and-choose-from-answer-group/register.d.ts +0 -1
- package/dist/components/questions/types/listen-and-choose-from-answer-group/register.js +1 -83
- package/dist/components/questions/types/listen-and-choose-from-answer-group/transform.d.ts +0 -1
- package/dist/components/questions/types/listen-and-choose-from-answer-group/transform.js +1 -28
- package/dist/components/questions/types/listen-and-choose-objects-in-scene/ListenAndChooseObjectsInSceneClient.d.ts +0 -1
- package/dist/components/questions/types/listen-and-choose-objects-in-scene/ListenAndChooseObjectsInSceneClient.js +1 -71
- package/dist/components/questions/types/listen-and-choose-objects-in-scene/ListenAndChooseObjectsInSceneCreator.d.ts +0 -1
- package/dist/components/questions/types/listen-and-choose-objects-in-scene/ListenAndChooseObjectsInSceneCreator.js +1 -387
- package/dist/components/questions/types/listen-and-choose-objects-in-scene/index.d.ts +0 -1
- package/dist/components/questions/types/listen-and-choose-objects-in-scene/index.js +1 -3
- package/dist/components/questions/types/listen-and-choose-objects-in-scene/register.d.ts +0 -1
- package/dist/components/questions/types/listen-and-choose-objects-in-scene/register.js +1 -101
- package/dist/components/questions/types/listen-and-choose-objects-in-scene/transform.d.ts +0 -1
- package/dist/components/questions/types/listen-and-choose-objects-in-scene/transform.js +1 -34
- package/dist/components/questions/types/listen-and-drag-objects-into-scene/ListenAndDragObjectsIntoSceneClient.d.ts +0 -1
- package/dist/components/questions/types/listen-and-drag-objects-into-scene/ListenAndDragObjectsIntoSceneClient.js +1 -107
- package/dist/components/questions/types/listen-and-drag-objects-into-scene/ListenAndDragObjectsIntoSceneCreator.d.ts +0 -1
- package/dist/components/questions/types/listen-and-drag-objects-into-scene/ListenAndDragObjectsIntoSceneCreator.js +1 -458
- package/dist/components/questions/types/listen-and-drag-objects-into-scene/index.d.ts +0 -1
- package/dist/components/questions/types/listen-and-drag-objects-into-scene/index.js +1 -3
- package/dist/components/questions/types/listen-and-drag-objects-into-scene/register.d.ts +0 -1
- package/dist/components/questions/types/listen-and-drag-objects-into-scene/register.js +1 -111
- package/dist/components/questions/types/listen-and-drag-objects-into-scene/transform.d.ts +0 -1
- package/dist/components/questions/types/listen-and-drag-objects-into-scene/transform.js +1 -36
- package/dist/components/questions/types/listen-and-speak-answer/ArrowIndicator.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-answer/ArrowIndicator.js +1 -9
- package/dist/components/questions/types/listen-and-speak-answer/ListenAndSpeakAnswerClient.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-answer/ListenAndSpeakAnswerClient.js +1 -23
- package/dist/components/questions/types/listen-and-speak-answer/ListenAndSpeakAnswerCreator.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-answer/ListenAndSpeakAnswerCreator.js +1 -292
- package/dist/components/questions/types/listen-and-speak-answer/index.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-answer/index.js +1 -3
- package/dist/components/questions/types/listen-and-speak-answer/register.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-answer/register.js +1 -85
- package/dist/components/questions/types/listen-and-speak-answer/transform.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-answer/transform.js +1 -28
- package/dist/components/questions/types/listen-and-speak-compare-images/ListenAndSpeakCompareImagesClient.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-compare-images/ListenAndSpeakCompareImagesClient.js +1 -33
- package/dist/components/questions/types/listen-and-speak-compare-images/ListenAndSpeakCompareImagesCreator.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-compare-images/ListenAndSpeakCompareImagesCreator.js +1 -296
- package/dist/components/questions/types/listen-and-speak-compare-images/register.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-compare-images/register.js +1 -80
- package/dist/components/questions/types/listen-and-speak-compare-images/transform.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-compare-images/transform.js +1 -28
- package/dist/components/questions/types/listen-and-speak-image-group/ListenAndSpeakImageGroupClient.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-image-group/ListenAndSpeakImageGroupClient.js +1 -35
- package/dist/components/questions/types/listen-and-speak-image-group/ListenAndSpeakImageGroupCreator.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-image-group/ListenAndSpeakImageGroupCreator.js +1 -286
- package/dist/components/questions/types/listen-and-speak-image-group/register.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-image-group/register.js +1 -82
- package/dist/components/questions/types/listen-and-speak-image-group/transform.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-image-group/transform.js +1 -27
- package/dist/components/questions/types/listen-and-speak-info-exchange/ListenAndSpeakInfoExchangeClient.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-info-exchange/ListenAndSpeakInfoExchangeClient.js +1 -39
- package/dist/components/questions/types/listen-and-speak-info-exchange/ListenAndSpeakInfoExchangeCreator.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-info-exchange/ListenAndSpeakInfoExchangeCreator.js +1 -386
- package/dist/components/questions/types/listen-and-speak-info-exchange/register.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-info-exchange/register.js +1 -88
- package/dist/components/questions/types/listen-and-speak-info-exchange/transform.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-info-exchange/transform.js +1 -33
- package/dist/components/questions/types/listen-and-speak-odd-one-out/ListenAndSpeakOddOneOutClient.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-odd-one-out/ListenAndSpeakOddOneOutClient.js +1 -27
- package/dist/components/questions/types/listen-and-speak-odd-one-out/ListenAndSpeakOddOneOutCreator.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-odd-one-out/ListenAndSpeakOddOneOutCreator.js +1 -248
- package/dist/components/questions/types/listen-and-speak-odd-one-out/register.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-odd-one-out/register.js +1 -60
- package/dist/components/questions/types/listen-and-speak-odd-one-out/transform.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-odd-one-out/transform.js +1 -19
- package/dist/components/questions/types/listen-and-speak-question-list/ListenAndSpeakQuestionListClient.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-question-list/ListenAndSpeakQuestionListClient.js +1 -27
- package/dist/components/questions/types/listen-and-speak-question-list/ListenAndSpeakQuestionListCreator.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-question-list/ListenAndSpeakQuestionListCreator.js +1 -257
- package/dist/components/questions/types/listen-and-speak-question-list/register.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-question-list/register.js +1 -82
- package/dist/components/questions/types/listen-and-speak-question-list/transform.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-question-list/transform.js +1 -27
- package/dist/components/questions/types/listen-and-speak-with-story-images/ListenAndSpeakWithStoryImagesClient.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-with-story-images/ListenAndSpeakWithStoryImagesClient.js +1 -27
- package/dist/components/questions/types/listen-and-speak-with-story-images/ListenAndSpeakWithStoryImagesCreator.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-with-story-images/ListenAndSpeakWithStoryImagesCreator.js +1 -231
- package/dist/components/questions/types/listen-and-speak-with-story-images/register.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-with-story-images/register.js +1 -57
- package/dist/components/questions/types/listen-and-speak-with-story-images/transform.d.ts +0 -1
- package/dist/components/questions/types/listen-and-speak-with-story-images/transform.js +1 -17
- package/dist/components/questions/types/look-picture-choose-correct-answer/LookPictureChooseCorrectAnswerClient.d.ts +0 -1
- package/dist/components/questions/types/look-picture-choose-correct-answer/LookPictureChooseCorrectAnswerClient.js +1 -73
- package/dist/components/questions/types/look-picture-choose-correct-answer/LookPictureChooseCorrectAnswerCreator.d.ts +0 -1
- package/dist/components/questions/types/look-picture-choose-correct-answer/LookPictureChooseCorrectAnswerCreator.js +1 -231
- package/dist/components/questions/types/look-picture-choose-correct-answer/index.d.ts +0 -1
- package/dist/components/questions/types/look-picture-choose-correct-answer/index.js +1 -2
- package/dist/components/questions/types/look-picture-choose-correct-answer/register.d.ts +0 -1
- package/dist/components/questions/types/look-picture-choose-correct-answer/register.js +1 -67
- package/dist/components/questions/types/look-picture-choose-correct-answer/transform.d.ts +0 -1
- package/dist/components/questions/types/look-picture-choose-correct-answer/transform.js +1 -43
- package/dist/components/questions/types/look-picture-fill-blank-choose-answer/LookPictureFillBlankChooseAnswerClient.d.ts +0 -1
- package/dist/components/questions/types/look-picture-fill-blank-choose-answer/LookPictureFillBlankChooseAnswerClient.js +1 -97
- package/dist/components/questions/types/look-picture-fill-blank-choose-answer/LookPictureFillBlankChooseAnswerCreator.d.ts +0 -1
- package/dist/components/questions/types/look-picture-fill-blank-choose-answer/LookPictureFillBlankChooseAnswerCreator.js +1 -239
- package/dist/components/questions/types/look-picture-fill-blank-choose-answer/index.d.ts +0 -1
- package/dist/components/questions/types/look-picture-fill-blank-choose-answer/index.js +1 -3
- package/dist/components/questions/types/look-picture-fill-blank-choose-answer/register.d.ts +0 -1
- package/dist/components/questions/types/look-picture-fill-blank-choose-answer/register.js +1 -77
- package/dist/components/questions/types/look-picture-fill-blank-choose-answer/transform.d.ts +0 -1
- package/dist/components/questions/types/look-picture-fill-blank-choose-answer/transform.js +1 -20
- package/dist/components/questions/types/look-picture-fill-word-hint/LookPictureFillWordHintClient.d.ts +0 -1
- package/dist/components/questions/types/look-picture-fill-word-hint/LookPictureFillWordHintClient.js +1 -135
- package/dist/components/questions/types/look-picture-fill-word-hint/LookPictureFillWordHintCreator.d.ts +0 -1
- package/dist/components/questions/types/look-picture-fill-word-hint/LookPictureFillWordHintCreator.js +1 -618
- package/dist/components/questions/types/look-picture-fill-word-hint/index.d.ts +0 -1
- package/dist/components/questions/types/look-picture-fill-word-hint/index.js +1 -3
- package/dist/components/questions/types/look-picture-fill-word-hint/register.d.ts +0 -1
- package/dist/components/questions/types/look-picture-fill-word-hint/register.js +1 -83
- package/dist/components/questions/types/look-picture-fill-word-hint/transform.d.ts +0 -1
- package/dist/components/questions/types/look-picture-fill-word-hint/transform.js +1 -30
- package/dist/components/questions/types/match-by-writing-answer/MatchByWritingAnswerClient.d.ts +0 -1
- package/dist/components/questions/types/match-by-writing-answer/MatchByWritingAnswerClient.js +1 -39
- package/dist/components/questions/types/match-by-writing-answer/MatchByWritingAnswerCreator.d.ts +0 -1
- package/dist/components/questions/types/match-by-writing-answer/MatchByWritingAnswerCreator.js +1 -360
- package/dist/components/questions/types/match-by-writing-answer/index.d.ts +0 -1
- package/dist/components/questions/types/match-by-writing-answer/index.js +1 -4
- package/dist/components/questions/types/match-by-writing-answer/register.d.ts +0 -1
- package/dist/components/questions/types/match-by-writing-answer/register.js +1 -59
- package/dist/components/questions/types/match-by-writing-answer/transform.d.ts +0 -1
- package/dist/components/questions/types/match-by-writing-answer/transform.js +1 -62
- package/dist/components/questions/types/read-and-color-objects/ReadAndColorObjectsClient.d.ts +0 -1
- package/dist/components/questions/types/read-and-color-objects/ReadAndColorObjectsClient.js +1 -17
- package/dist/components/questions/types/read-and-color-objects/ReadAndColorObjectsCreator.d.ts +0 -1
- package/dist/components/questions/types/read-and-color-objects/ReadAndColorObjectsCreator.js +1 -24
- package/dist/components/questions/types/read-and-color-objects/index.d.ts +0 -1
- package/dist/components/questions/types/read-and-color-objects/index.js +1 -3
- package/dist/components/questions/types/read-and-color-objects/register.d.ts +0 -1
- package/dist/components/questions/types/read-and-color-objects/register.js +1 -4
- package/dist/components/questions/types/read-and-color-objects/transform.d.ts +0 -1
- package/dist/components/questions/types/read-and-color-objects/transform.js +1 -37
- package/dist/components/questions/types/read-displayed-content/ReadDisplayedContentCreator.d.ts +0 -1
- package/dist/components/questions/types/read-displayed-content/ReadDisplayedContentCreator.js +1 -126
- package/dist/components/questions/types/read-displayed-content/register.d.ts +0 -1
- package/dist/components/questions/types/read-displayed-content/register.js +1 -65
- package/dist/components/questions/types/read-displayed-content/transform.d.ts +0 -1
- package/dist/components/questions/types/read-displayed-content/transform.js +1 -13
- package/dist/components/questions/types/read-passage-and-answer-questions/ReadPassageAndAnswerQuestionsClient.d.ts +0 -1
- package/dist/components/questions/types/read-passage-and-answer-questions/ReadPassageAndAnswerQuestionsClient.js +1 -65
- package/dist/components/questions/types/read-passage-and-answer-questions/ReadPassageAndAnswerQuestionsCreator.d.ts +0 -1
- package/dist/components/questions/types/read-passage-and-answer-questions/ReadPassageAndAnswerQuestionsCreator.js +1 -512
- package/dist/components/questions/types/read-passage-and-answer-questions/index.d.ts +0 -1
- package/dist/components/questions/types/read-passage-and-answer-questions/index.js +1 -3
- package/dist/components/questions/types/read-passage-and-answer-questions/register.d.ts +0 -1
- package/dist/components/questions/types/read-passage-and-answer-questions/register.js +1 -59
- package/dist/components/questions/types/read-passage-and-answer-questions/transform.d.ts +0 -1
- package/dist/components/questions/types/read-passage-and-answer-questions/transform.js +1 -29
- package/dist/components/questions/types/speaking-conversation/SpeakingConversationCreator.d.ts +0 -1
- package/dist/components/questions/types/speaking-conversation/SpeakingConversationCreator.js +1 -374
- package/dist/components/questions/types/speaking-conversation/SpeakingConversationPreviewClient.d.ts +0 -1
- package/dist/components/questions/types/speaking-conversation/SpeakingConversationPreviewClient.js +1 -42
- package/dist/components/questions/types/speaking-conversation/register.d.ts +0 -1
- package/dist/components/questions/types/speaking-conversation/register.js +1 -111
- package/dist/components/questions/types/speaking-conversation/transform.d.ts +0 -1
- package/dist/components/questions/types/speaking-conversation/transform.js +1 -35
- package/dist/components/questions/types/speaking-cue-card/SpeakingCueCardCreator.d.ts +0 -1
- package/dist/components/questions/types/speaking-cue-card/SpeakingCueCardCreator.js +1 -75
- package/dist/components/questions/types/speaking-cue-card/register.d.ts +0 -1
- package/dist/components/questions/types/speaking-cue-card/register.js +1 -53
- package/dist/components/questions/types/speaking-cue-card/transform.d.ts +0 -1
- package/dist/components/questions/types/speaking-cue-card/transform.js +1 -13
- package/dist/components/questions/types/speaking-describe-image/SpeakingDescribeImageClient.d.ts +0 -1
- package/dist/components/questions/types/speaking-describe-image/SpeakingDescribeImageClient.js +1 -11
- package/dist/components/questions/types/speaking-describe-image/SpeakingDescribeImageCreator.d.ts +0 -1
- package/dist/components/questions/types/speaking-describe-image/SpeakingDescribeImageCreator.js +1 -162
- package/dist/components/questions/types/speaking-describe-image/index.d.ts +0 -1
- package/dist/components/questions/types/speaking-describe-image/index.js +1 -3
- package/dist/components/questions/types/speaking-describe-image/register.d.ts +0 -1
- package/dist/components/questions/types/speaking-describe-image/register.js +1 -70
- package/dist/components/questions/types/speaking-describe-image/transform.d.ts +0 -1
- package/dist/components/questions/types/speaking-describe-image/transform.js +1 -17
- package/dist/components/questions/types/spontaneous-qa/SpontaneousQACreator.d.ts +0 -1
- package/dist/components/questions/types/spontaneous-qa/SpontaneousQACreator.js +1 -235
- package/dist/components/questions/types/spontaneous-qa/register.d.ts +0 -1
- package/dist/components/questions/types/spontaneous-qa/register.js +1 -94
- package/dist/components/questions/types/spontaneous-qa/transform.d.ts +0 -1
- package/dist/components/questions/types/spontaneous-qa/transform.js +1 -35
- package/dist/components/questions/types/true-false/TrueFalseClient.d.ts +0 -1
- package/dist/components/questions/types/true-false/TrueFalseClient.js +1 -76
- package/dist/components/questions/types/true-false/TrueFalseCreator.d.ts +0 -1
- package/dist/components/questions/types/true-false/TrueFalseCreator.js +1 -245
- package/dist/components/questions/types/true-false/index.d.ts +0 -1
- package/dist/components/questions/types/true-false/index.js +1 -3
- package/dist/components/questions/types/true-false/register.d.ts +0 -1
- package/dist/components/questions/types/true-false/register.js +1 -78
- package/dist/components/questions/types/true-false/transform.d.ts +0 -1
- package/dist/components/questions/types/true-false/transform.js +1 -33
- package/dist/components/questions/types/word-fill-paragraph/WordFillParagraphClient.d.ts +0 -1
- package/dist/components/questions/types/word-fill-paragraph/WordFillParagraphClient.js +1 -234
- package/dist/components/questions/types/word-fill-paragraph/WordFillParagraphCreator.d.ts +0 -1
- package/dist/components/questions/types/word-fill-paragraph/WordFillParagraphCreator.js +1 -632
- package/dist/components/questions/types/word-fill-paragraph/WordFillParagraphWrapper.d.ts +0 -1
- package/dist/components/questions/types/word-fill-paragraph/WordFillParagraphWrapper.js +1 -29
- package/dist/components/questions/types/word-fill-paragraph/index.d.ts +0 -1
- package/dist/components/questions/types/word-fill-paragraph/index.js +1 -3
- package/dist/components/questions/types/word-fill-paragraph/register.d.ts +0 -1
- package/dist/components/questions/types/word-fill-paragraph/register.js +1 -137
- package/dist/components/questions/types/word-fill-paragraph/transform.d.ts +0 -1
- package/dist/components/questions/types/word-fill-paragraph/transform.js +1 -57
- package/dist/components/questions/types/word-fill-structured-form/WordFillStructuredFormClient.d.ts +0 -1
- package/dist/components/questions/types/word-fill-structured-form/WordFillStructuredFormClient.js +1 -139
- package/dist/components/questions/types/word-fill-structured-form/WordFillStructuredFormCreator.d.ts +0 -1
- package/dist/components/questions/types/word-fill-structured-form/WordFillStructuredFormCreator.js +1 -262
- package/dist/components/questions/types/word-fill-structured-form/index.d.ts +0 -1
- package/dist/components/questions/types/word-fill-structured-form/index.js +1 -3
- package/dist/components/questions/types/word-fill-structured-form/register.d.ts +0 -1
- package/dist/components/questions/types/word-fill-structured-form/register.js +1 -68
- package/dist/components/questions/types/word-fill-structured-form/transform.d.ts +0 -1
- package/dist/components/questions/types/word-fill-structured-form/transform.js +1 -41
- package/dist/components/questions/types/word-ordering/WordOrderingClient.d.ts +0 -1
- package/dist/components/questions/types/word-ordering/WordOrderingClient.js +1 -85
- package/dist/components/questions/types/word-ordering/WordOrderingCreator.d.ts +0 -1
- package/dist/components/questions/types/word-ordering/WordOrderingCreator.js +1 -193
- package/dist/components/questions/types/word-ordering/index.d.ts +0 -1
- package/dist/components/questions/types/word-ordering/index.js +1 -3
- package/dist/components/questions/types/word-ordering/register.d.ts +0 -1
- package/dist/components/questions/types/word-ordering/register.js +1 -47
- package/dist/components/questions/types/word-ordering/transform.d.ts +0 -1
- package/dist/components/questions/types/word-ordering/transform.js +1 -25
- package/dist/components/questions/types/write-a-short-letter/WriteAShortLetterClient.d.ts +0 -1
- package/dist/components/questions/types/write-a-short-letter/WriteAShortLetterClient.js +1 -99
- package/dist/components/questions/types/write-a-short-letter/WriteAShortLetterCreator.d.ts +0 -1
- package/dist/components/questions/types/write-a-short-letter/WriteAShortLetterCreator.js +1 -321
- package/dist/components/questions/types/write-a-short-letter/index.d.ts +0 -1
- package/dist/components/questions/types/write-a-short-letter/index.js +1 -3
- package/dist/components/questions/types/write-a-short-letter/register.d.ts +0 -1
- package/dist/components/questions/types/write-a-short-letter/register.js +1 -69
- package/dist/components/questions/types/write-a-short-letter/transform.d.ts +0 -1
- package/dist/components/questions/types/write-a-short-letter/transform.js +1 -26
- package/dist/components/questions/types/write-correct-verb-form/WriteCorrectVerbFormClient.d.ts +0 -1
- package/dist/components/questions/types/write-correct-verb-form/WriteCorrectVerbFormClient.js +1 -62
- package/dist/components/questions/types/write-correct-verb-form/WriteCorrectVerbFormCreator.d.ts +0 -1
- package/dist/components/questions/types/write-correct-verb-form/WriteCorrectVerbFormCreator.js +1 -197
- package/dist/components/questions/types/write-correct-verb-form/index.d.ts +0 -1
- package/dist/components/questions/types/write-correct-verb-form/index.js +1 -3
- package/dist/components/questions/types/write-correct-verb-form/register.d.ts +0 -1
- package/dist/components/questions/types/write-correct-verb-form/register.js +1 -63
- package/dist/components/questions/types/write-correct-verb-form/transform.d.ts +0 -1
- package/dist/components/questions/types/write-correct-verb-form/transform.js +1 -18
- package/dist/components/questions/types/write-sentences/WriteSentencesClient.d.ts +0 -1
- package/dist/components/questions/types/write-sentences/WriteSentencesClient.js +1 -23
- package/dist/components/questions/types/write-sentences/WriteSentencesCreator.d.ts +0 -1
- package/dist/components/questions/types/write-sentences/WriteSentencesCreator.js +1 -175
- package/dist/components/questions/types/write-sentences/index.d.ts +0 -1
- package/dist/components/questions/types/write-sentences/index.js +1 -3
- package/dist/components/questions/types/write-sentences/register.d.ts +0 -1
- package/dist/components/questions/types/write-sentences/register.js +1 -59
- package/dist/components/questions/types/write-sentences/transform.d.ts +0 -1
- package/dist/components/questions/types/write-sentences/transform.js +1 -29
- package/dist/components/questions/types/write-short-paragraph/WriteShortParagraphClient.d.ts +0 -1
- package/dist/components/questions/types/write-short-paragraph/WriteShortParagraphClient.js +1 -97
- package/dist/components/questions/types/write-short-paragraph/WriteShortParagraphCreator.d.ts +0 -1
- package/dist/components/questions/types/write-short-paragraph/WriteShortParagraphCreator.js +1 -162
- package/dist/components/questions/types/write-short-paragraph/index.d.ts +0 -1
- package/dist/components/questions/types/write-short-paragraph/index.js +1 -3
- package/dist/components/questions/types/write-short-paragraph/register.d.ts +0 -1
- package/dist/components/questions/types/write-short-paragraph/register.js +1 -5
- package/dist/components/questions/types/write-short-paragraph/transform.d.ts +0 -1
- package/dist/components/questions/types/write-short-paragraph/transform.js +1 -22
- package/dist/components/questions/viewer/QuestionGroupViewer.d.ts +0 -1
- package/dist/components/questions/viewer/QuestionGroupViewer.js +1 -37
- package/dist/components/questions/viewer/QuestionViewer.d.ts +0 -1
- package/dist/components/questions/viewer/QuestionViewer.js +1 -447
- package/dist/components/questions/viewer/index.d.ts +0 -1
- package/dist/components/questions/viewer/index.js +1 -3
- package/dist/components/results/ResultReviewPageContainer.d.ts +0 -1
- package/dist/components/results/ResultReviewPageContainer.js +1 -99
- package/dist/components/results/ReviewQuestionRenderer.d.ts +0 -1
- package/dist/components/results/ReviewQuestionRenderer.js +1 -73
- package/dist/components/results/index.d.ts +0 -1
- package/dist/components/results/index.js +1 -3
- package/dist/components/results/result-review.utils.d.ts +0 -1
- package/dist/components/results/result-review.utils.js +1 -7
- package/dist/components/results/review-data.d.ts +0 -1
- package/dist/components/results/review-data.js +1 -151
- package/dist/components/results/review-renderer.utils.d.ts +0 -1
- package/dist/components/results/review-renderer.utils.js +1 -98
- package/dist/components/results/review-types.d.ts +0 -1
- package/dist/components/results/review-types.js +1 -2
- package/dist/components/themes/cambridge-yle/CambridgeYleAudioPlayer.d.ts +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleAudioPlayer.js +1 -139
- package/dist/components/themes/cambridge-yle/CambridgeYleBottomNav.d.ts +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleBottomNav.js +1 -13
- package/dist/components/themes/cambridge-yle/CambridgeYleExamLayout.d.ts +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleExamLayout.js +1 -19
- package/dist/components/themes/cambridge-yle/CambridgeYleExampleText.d.ts +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleExampleText.js +1 -12
- package/dist/components/themes/cambridge-yle/CambridgeYleHeader.d.ts +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleHeader.js +1 -12
- package/dist/components/themes/cambridge-yle/CambridgeYleInstructionBanner.d.ts +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleInstructionBanner.js +1 -10
- package/dist/components/themes/cambridge-yle/CambridgeYleNavButton.d.ts +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleNavButton.js +1 -14
- package/dist/components/themes/cambridge-yle/CambridgeYlePartBanner.d.ts +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYlePartBanner.js +1 -9
- package/dist/components/themes/cambridge-yle/CambridgeYleProgressBar.d.ts +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleProgressBar.js +1 -7
- package/dist/components/themes/cambridge-yle/CambridgeYleQuestionCard.d.ts +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleQuestionCard.js +1 -6
- package/dist/components/themes/cambridge-yle/CambridgeYleQuestionCardFullWidth.d.ts +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleQuestionCardFullWidth.js +1 -10
- package/dist/components/themes/cambridge-yle/CambridgeYleSidebar.d.ts +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleSidebar.js +1 -42
- package/dist/components/themes/cambridge-yle/CambridgeYleTimer.d.ts +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleTimer.js +1 -26
- package/dist/components/themes/cambridge-yle/index.d.ts +0 -1
- package/dist/components/themes/cambridge-yle/index.js +1 -14
- package/dist/components/themes/english-certification/EcAnswerTheQuestion.d.ts +0 -1
- package/dist/components/themes/english-certification/EcAnswerTheQuestion.js +1 -25
- package/dist/components/themes/english-certification/EcMatchByWritingAnswer.d.ts +0 -1
- package/dist/components/themes/english-certification/EcMatchByWritingAnswer.js +1 -89
- package/dist/components/themes/english-certification/EcWordFillParagraph.d.ts +0 -1
- package/dist/components/themes/english-certification/EcWordFillParagraph.js +1 -56
- package/dist/components/themes/english-certification/EcWordFillStructuredForm.d.ts +0 -1
- package/dist/components/themes/english-certification/EcWordFillStructuredForm.js +1 -157
- package/dist/components/themes/english-certification/EcWritingTask.d.ts +0 -1
- package/dist/components/themes/english-certification/EcWritingTask.js +1 -35
- package/dist/components/themes/english-certification/EnglishCertificationAudioPlayer.d.ts +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationAudioPlayer.js +1 -115
- package/dist/components/themes/english-certification/EnglishCertificationBrand.d.ts +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationBrand.js +1 -12
- package/dist/components/themes/english-certification/EnglishCertificationExamLayout.d.ts +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationExamLayout.js +1 -22
- package/dist/components/themes/english-certification/EnglishCertificationFlagButton.d.ts +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationFlagButton.js +1 -16
- package/dist/components/themes/english-certification/EnglishCertificationFooterBar.d.ts +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationFooterBar.js +1 -20
- package/dist/components/themes/english-certification/EnglishCertificationGroupedQuestion.d.ts +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationGroupedQuestion.js +1 -149
- package/dist/components/themes/english-certification/EnglishCertificationHeader.d.ts +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationHeader.js +1 -32
- package/dist/components/themes/english-certification/EnglishCertificationNavigationPanel.d.ts +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationNavigationPanel.js +1 -72
- package/dist/components/themes/english-certification/EnglishCertificationOptionSelector.d.ts +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationOptionSelector.js +1 -34
- package/dist/components/themes/english-certification/EnglishCertificationPassagePanel.d.ts +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationPassagePanel.js +1 -17
- package/dist/components/themes/english-certification/EnglishCertificationQuestionCard.d.ts +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationQuestionCard.js +1 -23
- package/dist/components/themes/english-certification/EnglishCertificationQuestionItem.d.ts +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationQuestionItem.js +1 -38
- package/dist/components/themes/english-certification/EnglishCertificationQuestionRenderer.d.ts +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationQuestionRenderer.js +1 -73
- package/dist/components/themes/english-certification/EnglishCertificationReadingSection.d.ts +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationReadingSection.js +1 -91
- package/dist/components/themes/english-certification/EnglishCertificationSingleQuestion.d.ts +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationSingleQuestion.js +1 -19
- package/dist/components/themes/english-certification/EnglishCertificationSingleQuestionList.d.ts +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationSingleQuestionList.js +1 -30
- package/dist/components/themes/english-certification/english-certification-theme.d.ts +0 -1
- package/dist/components/themes/english-certification/english-certification-theme.js +1 -59
- package/dist/components/themes/english-certification/grouped-question-utils.d.ts +0 -1
- package/dist/components/themes/english-certification/grouped-question-utils.js +1 -219
- package/dist/components/themes/english-certification/index.d.ts +0 -1
- package/dist/components/themes/english-certification/index.js +1 -22
- package/dist/components/themes/index.d.ts +0 -1
- package/dist/components/themes/index.js +1 -7
- package/dist/components/themes/summer-sky/SummerSkyAudioPlayer.d.ts +0 -1
- package/dist/components/themes/summer-sky/SummerSkyAudioPlayer.js +1 -171
- package/dist/components/themes/summer-sky/SummerSkyLayout.d.ts +0 -1
- package/dist/components/themes/summer-sky/SummerSkyLayout.js +1 -222
- package/dist/components/themes/summer-sky/SummerSkySubmitModal.d.ts +0 -1
- package/dist/components/themes/summer-sky/SummerSkySubmitModal.js +1 -19
- package/dist/components/themes/summer-sky/SummerSkyWaitingRoom.d.ts +0 -1
- package/dist/components/themes/summer-sky/SummerSkyWaitingRoom.js +1 -195
- package/dist/components/themes/types.d.ts +0 -1
- package/dist/components/themes/types.js +1 -2
- package/dist/components/ui/alert-dialog.d.ts +0 -1
- package/dist/components/ui/alert-dialog.js +1 -27
- package/dist/components/ui/alert.d.ts +0 -1
- package/dist/components/ui/alert.js +1 -23
- package/dist/components/ui/avatar.d.ts +0 -1
- package/dist/components/ui/avatar.js +1 -13
- package/dist/components/ui/badge.d.ts +0 -1
- package/dist/components/ui/badge.js +1 -39
- package/dist/components/ui/button.d.ts +0 -1
- package/dist/components/ui/button.js +1 -36
- package/dist/components/ui/calendar.d.ts +0 -1
- package/dist/components/ui/calendar.js +1 -77
- package/dist/components/ui/card.d.ts +0 -1
- package/dist/components/ui/card.js +1 -17
- package/dist/components/ui/carousel.d.ts +0 -1
- package/dist/components/ui/carousel.js +1 -92
- package/dist/components/ui/checkbox.d.ts +0 -1
- package/dist/components/ui/checkbox.js +1 -10
- package/dist/components/ui/collapsible.d.ts +0 -1
- package/dist/components/ui/collapsible.js +1 -14
- package/dist/components/ui/command.d.ts +0 -1
- package/dist/components/ui/command.js +1 -35
- package/dist/components/ui/confirm-dialog.d.ts +0 -1
- package/dist/components/ui/confirm-dialog.js +1 -50
- package/dist/components/ui/dialog.d.ts +0 -1
- package/dist/components/ui/dialog.js +1 -24
- package/dist/components/ui/drawer.d.ts +0 -1
- package/dist/components/ui/drawer.js +1 -36
- package/dist/components/ui/dropdown-menu.d.ts +0 -1
- package/dist/components/ui/dropdown-menu.js +1 -34
- package/dist/components/ui/file-upload.d.ts +0 -1
- package/dist/components/ui/file-upload.js +1 -156
- package/dist/components/ui/form.d.ts +0 -1
- package/dist/components/ui/form.js +1 -63
- package/dist/components/ui/hover-card.d.ts +0 -1
- package/dist/components/ui/hover-card.js +1 -11
- package/dist/components/ui/image-preview.d.ts +0 -1
- package/dist/components/ui/image-preview.js +1 -30
- package/dist/components/ui/input.d.ts +0 -1
- package/dist/components/ui/input.js +1 -9
- package/dist/components/ui/label.d.ts +0 -1
- package/dist/components/ui/label.js +1 -10
- package/dist/components/ui/language-switcher.d.ts +0 -1
- package/dist/components/ui/language-switcher.js +1 -16
- package/dist/components/ui/multi-select.d.ts +0 -1
- package/dist/components/ui/multi-select.js +1 -91
- package/dist/components/ui/points-input.d.ts +0 -1
- package/dist/components/ui/points-input.js +1 -34
- package/dist/components/ui/popover.d.ts +0 -1
- package/dist/components/ui/popover.js +1 -27
- package/dist/components/ui/progress.d.ts +0 -1
- package/dist/components/ui/progress.js +1 -17
- package/dist/components/ui/radio-group.d.ts +0 -1
- package/dist/components/ui/radio-group.js +1 -13
- package/dist/components/ui/scroll-area.d.ts +0 -1
- package/dist/components/ui/scroll-area.js +1 -12
- package/dist/components/ui/select.d.ts +0 -1
- package/dist/components/ui/select.js +1 -39
- package/dist/components/ui/separator.d.ts +0 -1
- package/dist/components/ui/separator.js +1 -9
- package/dist/components/ui/sheet.d.ts +0 -1
- package/dist/components/ui/sheet.js +1 -41
- package/dist/components/ui/single-select.d.ts +0 -1
- package/dist/components/ui/single-select.js +1 -77
- package/dist/components/ui/skeleton.d.ts +0 -1
- package/dist/components/ui/skeleton.js +1 -7
- package/dist/components/ui/switch.d.ts +0 -1
- package/dist/components/ui/switch.js +1 -9
- package/dist/components/ui/table.d.ts +0 -1
- package/dist/components/ui/table.js +1 -21
- package/dist/components/ui/tabs.d.ts +0 -1
- package/dist/components/ui/tabs.js +1 -18
- package/dist/components/ui/textarea.d.ts +0 -1
- package/dist/components/ui/textarea.js +1 -9
- package/dist/components/ui/tooltip.d.ts +0 -1
- package/dist/components/ui/tooltip.js +1 -12
- package/dist/index.d.ts +0 -1
- package/dist/index.js +1 -20
- package/dist/mcp/config.d.ts +0 -1
- package/dist/mcp/config.js +1 -33
- package/dist/mcp/http-client.d.ts +0 -1
- package/dist/mcp/http-client.js +1 -49
- package/dist/mcp/index.d.ts +0 -1
- package/dist/mcp/index.js +1 -30
- package/dist/mcp/tools/_helpers.d.ts +0 -1
- package/dist/mcp/tools/_helpers.js +1 -26
- package/dist/mcp/tools/exams.d.ts +0 -1
- package/dist/mcp/tools/exams.js +1 -440
- package/dist/mcp/tools/index.d.ts +0 -1
- package/dist/mcp/tools/index.js +1 -7
- package/dist/mcp/tools/results.d.ts +0 -1
- package/dist/mcp/tools/results.js +1 -20
- package/dist/shared/constants/ApiConstant.d.ts +0 -1
- package/dist/shared/constants/ApiConstant.js +1 -277
- package/dist/shared/constants/QueryKeyConstant.d.ts +0 -1
- package/dist/shared/constants/QueryKeyConstant.js +1 -113
- package/dist/shared/constants/exam-level.enum.d.ts +0 -1
- package/dist/shared/constants/exam-level.enum.js +1 -42
- package/dist/shared/constants/landings/placement-test.constants.d.ts +0 -1
- package/dist/shared/constants/landings/placement-test.constants.js +1 -432
- package/dist/shared/constants/question-skills.d.ts +0 -1
- package/dist/shared/constants/question-skills.js +1 -268
- package/dist/shared/constants/routes.d.ts +0 -1
- package/dist/shared/constants/routes.js +1 -82
- package/dist/shared/index.d.ts +0 -1
- package/dist/shared/index.js +1 -8
- package/dist/shared/lib/hooks/index.d.ts +0 -1
- package/dist/shared/lib/hooks/index.js +1 -11
- package/dist/shared/lib/hooks/useAlertDialog.d.ts +0 -1
- package/dist/shared/lib/hooks/useAlertDialog.js +1 -58
- package/dist/shared/lib/hooks/useAudioPlayCounter.d.ts +0 -1
- package/dist/shared/lib/hooks/useAudioPlayCounter.js +1 -31
- package/dist/shared/lib/hooks/useAudioPreview.d.ts +0 -1
- package/dist/shared/lib/hooks/useAudioPreview.js +1 -82
- package/dist/shared/lib/hooks/useAudioUpload.d.ts +0 -1
- package/dist/shared/lib/hooks/useAudioUpload.js +1 -25
- package/dist/shared/lib/hooks/useConfirmDialog.d.ts +0 -1
- package/dist/shared/lib/hooks/useConfirmDialog.js +1 -90
- package/dist/shared/lib/hooks/useDebouncedCallback.d.ts +0 -1
- package/dist/shared/lib/hooks/useDebouncedCallback.js +1 -33
- package/dist/shared/lib/hooks/useDelayedAutoPlay.d.ts +0 -1
- package/dist/shared/lib/hooks/useDelayedAutoPlay.js +1 -13
- package/dist/shared/lib/hooks/useFileUpload.d.ts +0 -1
- package/dist/shared/lib/hooks/useFileUpload.js +1 -25
- package/dist/shared/lib/hooks/useImageUrl.d.ts +0 -1
- package/dist/shared/lib/hooks/useImageUrl.js +1 -6
- package/dist/shared/lib/hooks/usePresignedFileUrl.d.ts +0 -1
- package/dist/shared/lib/hooks/usePresignedFileUrl.js +1 -11
- package/dist/shared/lib/hooks/useReactHookForm.d.ts +0 -1
- package/dist/shared/lib/hooks/useReactHookForm.js +1 -32
- package/dist/shared/lib/hooks/useToast.d.ts +0 -1
- package/dist/shared/lib/hooks/useToast.js +1 -63
- package/dist/shared/lib/i18n/index.d.ts +0 -1
- package/dist/shared/lib/i18n/index.js +1 -55
- package/dist/shared/lib/i18n/messages/en/admin.d.ts +0 -1
- package/dist/shared/lib/i18n/messages/en/admin.js +1 -2105
- package/dist/shared/lib/i18n/messages/en/auth.d.ts +0 -1
- package/dist/shared/lib/i18n/messages/en/auth.js +1 -87
- package/dist/shared/lib/i18n/messages/en/common.d.ts +0 -1
- package/dist/shared/lib/i18n/messages/en/common.js +1 -141
- package/dist/shared/lib/i18n/messages/en/file-upload.d.ts +0 -1
- package/dist/shared/lib/i18n/messages/en/file-upload.js +1 -19
- package/dist/shared/lib/i18n/messages/en/student.d.ts +0 -1
- package/dist/shared/lib/i18n/messages/en/student.js +1 -134
- package/dist/shared/lib/i18n/messages/en/terms.d.ts +0 -1
- package/dist/shared/lib/i18n/messages/en/terms.js +1 -38
- package/dist/shared/lib/i18n/messages/en.d.ts +0 -1
- package/dist/shared/lib/i18n/messages/en.js +1 -16
- package/dist/shared/lib/i18n/messages/vi/admin.d.ts +0 -1
- package/dist/shared/lib/i18n/messages/vi/admin.js +1 -2105
- package/dist/shared/lib/i18n/messages/vi/auth.d.ts +0 -1
- package/dist/shared/lib/i18n/messages/vi/auth.js +1 -87
- package/dist/shared/lib/i18n/messages/vi/common.d.ts +0 -1
- package/dist/shared/lib/i18n/messages/vi/common.js +1 -141
- package/dist/shared/lib/i18n/messages/vi/file-upload.d.ts +0 -1
- package/dist/shared/lib/i18n/messages/vi/file-upload.js +1 -19
- package/dist/shared/lib/i18n/messages/vi/student.d.ts +0 -1
- package/dist/shared/lib/i18n/messages/vi/student.js +1 -134
- package/dist/shared/lib/i18n/messages/vi/terms.d.ts +0 -1
- package/dist/shared/lib/i18n/messages/vi/terms.js +1 -38
- package/dist/shared/lib/i18n/messages/vi.d.ts +0 -1
- package/dist/shared/lib/i18n/messages/vi.js +1 -16
- package/dist/shared/lib/i18n/types.d.ts +0 -1
- package/dist/shared/lib/i18n/types.js +1 -2
- package/dist/shared/lib/stores/examQuestionStore.d.ts +0 -1
- package/dist/shared/lib/stores/examQuestionStore.js +1 -213
- package/dist/shared/lib/stores/localeStore.d.ts +0 -1
- package/dist/shared/lib/stores/localeStore.js +1 -11
- package/dist/shared/lib/utils/public-page.d.ts +0 -1
- package/dist/shared/lib/utils/public-page.js +1 -45
- package/dist/shared/lib/utils/question-transform-types.d.ts +0 -1
- package/dist/shared/lib/utils/question-transform-types.js +1 -2
- package/dist/shared/lib/utils/question-transform.d.ts +0 -1
- package/dist/shared/lib/utils/question-transform.js +1 -175
- package/dist/shared/lib/utils.d.ts +0 -1
- package/dist/shared/lib/utils.js +1 -169
- package/dist/shared/lib/validation/choose-correct-answer.validation.d.ts +0 -1
- package/dist/shared/lib/validation/choose-correct-answer.validation.js +1 -112
- package/dist/shared/lib/validation/label-the-picture.validation.d.ts +0 -1
- package/dist/shared/lib/validation/label-the-picture.validation.js +1 -20
- package/dist/shared/lib/validation/listen-and-choose-from-answer-group.validation.d.ts +0 -1
- package/dist/shared/lib/validation/listen-and-choose-from-answer-group.validation.js +1 -47
- package/dist/shared/lib/validation/listen-and-choose-objects-in-scene.validation.d.ts +0 -1
- package/dist/shared/lib/validation/listen-and-choose-objects-in-scene.validation.js +1 -22
- package/dist/shared/lib/validation/listen-and-drag-objects-into-scene.validation.d.ts +0 -1
- package/dist/shared/lib/validation/listen-and-drag-objects-into-scene.validation.js +1 -35
- package/dist/shared/lib/validation/listen-and-speak-answer.validation.d.ts +0 -1
- package/dist/shared/lib/validation/listen-and-speak-answer.validation.js +1 -41
- package/dist/shared/lib/validation/listen-and-speak-compare-images.validation.d.ts +0 -1
- package/dist/shared/lib/validation/listen-and-speak-compare-images.validation.js +1 -46
- package/dist/shared/lib/validation/listen-and-speak-image-group.validation.d.ts +0 -1
- package/dist/shared/lib/validation/listen-and-speak-image-group.validation.js +1 -20
- package/dist/shared/lib/validation/listen-and-speak-info-exchange.validation.d.ts +0 -1
- package/dist/shared/lib/validation/listen-and-speak-info-exchange.validation.js +1 -40
- package/dist/shared/lib/validation/listen-and-speak-odd-one-out.validation.d.ts +0 -1
- package/dist/shared/lib/validation/listen-and-speak-odd-one-out.validation.js +1 -33
- package/dist/shared/lib/validation/listen-and-speak-question-list.validation.d.ts +0 -1
- package/dist/shared/lib/validation/listen-and-speak-question-list.validation.js +1 -20
- package/dist/shared/lib/validation/listen-and-speak-with-story-images.validation.d.ts +0 -1
- package/dist/shared/lib/validation/listen-and-speak-with-story-images.validation.js +1 -29
- package/dist/shared/lib/validation/look-picture-choose-correct-answer.validation.d.ts +0 -1
- package/dist/shared/lib/validation/look-picture-choose-correct-answer.validation.js +1 -13
- package/dist/shared/lib/validation/look-picture-fill-blank-choose-answer.validation.d.ts +0 -1
- package/dist/shared/lib/validation/look-picture-fill-blank-choose-answer.validation.js +1 -48
- package/dist/shared/lib/validation/read-and-color-objects.validation.d.ts +0 -1
- package/dist/shared/lib/validation/read-and-color-objects.validation.js +1 -30
- package/dist/shared/lib/validation/read-displayed-content.validation.d.ts +0 -1
- package/dist/shared/lib/validation/read-displayed-content.validation.js +1 -29
- package/dist/shared/lib/validation/speaking-conversation.validation.d.ts +0 -1
- package/dist/shared/lib/validation/speaking-conversation.validation.js +1 -76
- package/dist/shared/lib/validation/speaking-describe-image.validation.d.ts +0 -1
- package/dist/shared/lib/validation/speaking-describe-image.validation.js +1 -32
- package/dist/shared/lib/validation/spontaneous-qa.validation.d.ts +0 -1
- package/dist/shared/lib/validation/spontaneous-qa.validation.js +1 -49
- package/dist/shared/lib/validation/word-fill-paragraph-default.validation.d.ts +0 -1
- package/dist/shared/lib/validation/word-fill-paragraph-default.validation.js +1 -39
- package/dist/shared/lib/validation/word-fill-paragraph-with-options.validation.d.ts +0 -1
- package/dist/shared/lib/validation/word-fill-paragraph-with-options.validation.js +1 -40
- package/dist/shared/lib/validation/word-fill-paragraph.validation.d.ts +0 -1
- package/dist/shared/lib/validation/word-fill-paragraph.validation.js +1 -44
- package/dist/shared/lib/validation/word-ordering.validation.d.ts +0 -1
- package/dist/shared/lib/validation/word-ordering.validation.js +1 -34
- package/dist/shared/types/branch.types.d.ts +0 -1
- package/dist/shared/types/branch.types.js +1 -7
- package/dist/shared/types/common.types.d.ts +0 -1
- package/dist/shared/types/common.types.js +1 -51
- package/dist/shared/types/entities/exam-schedule.types.d.ts +0 -1
- package/dist/shared/types/entities/exam-schedule.types.js +1 -6
- package/dist/shared/types/entities/exam.types.d.ts +0 -1
- package/dist/shared/types/entities/exam.types.js +1 -2
- package/dist/shared/types/entities/question.types.d.ts +0 -1
- package/dist/shared/types/entities/question.types.js +1 -5
- package/dist/shared/types/entities/result.types.d.ts +0 -1
- package/dist/shared/types/entities/result.types.js +1 -5
- package/dist/shared/types/entities/user.types.d.ts +0 -1
- package/dist/shared/types/entities/user.types.js +1 -5
- package/dist/shared/types/exam-taking.types.d.ts +0 -1
- package/dist/shared/types/exam-taking.types.js +1 -3
- package/dist/shared/types/history.types.d.ts +0 -1
- package/dist/shared/types/history.types.js +1 -35
- package/dist/shared/types/index.d.ts +0 -1
- package/dist/shared/types/index.js +1 -2
- package/dist/shared/types/questions/choose-correct-adjective.d.ts +0 -1
- package/dist/shared/types/questions/choose-correct-adjective.js +1 -5
- package/dist/shared/types/questions/choose-the-correct-answer.d.ts +0 -1
- package/dist/shared/types/questions/choose-the-correct-answer.js +1 -10
- package/dist/shared/types/questions/fill-missing-words-in-grid.d.ts +0 -1
- package/dist/shared/types/questions/fill-missing-words-in-grid.js +1 -12
- package/dist/shared/types/questions/index.d.ts +0 -1
- package/dist/shared/types/questions/index.js +1 -41
- package/dist/shared/types/questions/listen-and-speak-answer.d.ts +0 -1
- package/dist/shared/types/questions/listen-and-speak-answer.js +1 -2
- package/dist/shared/types/questions/listen-and-speak-compare-images.d.ts +0 -1
- package/dist/shared/types/questions/listen-and-speak-compare-images.js +1 -2
- package/dist/shared/types/questions/listen-and-speak-image-group.d.ts +0 -1
- package/dist/shared/types/questions/listen-and-speak-image-group.js +1 -2
- package/dist/shared/types/questions/listen-and-speak-info-exchange.d.ts +0 -1
- package/dist/shared/types/questions/listen-and-speak-info-exchange.js +1 -4
- package/dist/shared/types/questions/listen-and-speak-odd-one-out.d.ts +0 -1
- package/dist/shared/types/questions/listen-and-speak-odd-one-out.js +1 -4
- package/dist/shared/types/questions/listen-and-speak-question-list.d.ts +0 -1
- package/dist/shared/types/questions/listen-and-speak-question-list.js +1 -2
- package/dist/shared/types/questions/listen-and-speak-with-story-images.d.ts +0 -1
- package/dist/shared/types/questions/listen-and-speak-with-story-images.js +1 -4
- package/dist/shared/types/questions/look-picture-choose-correct-answer.d.ts +0 -1
- package/dist/shared/types/questions/look-picture-choose-correct-answer.js +1 -6
- package/dist/shared/types/questions/look-picture-fill-blank-choose-answer.d.ts +0 -1
- package/dist/shared/types/questions/look-picture-fill-blank-choose-answer.js +1 -10
- package/dist/shared/types/questions/look-picture-fill-word-hint.d.ts +0 -1
- package/dist/shared/types/questions/look-picture-fill-word-hint.js +1 -8
- package/dist/shared/types/questions/read-displayed-content.d.ts +0 -1
- package/dist/shared/types/questions/read-displayed-content.js +1 -2
- package/dist/shared/types/questions/speaking-conversation.d.ts +0 -1
- package/dist/shared/types/questions/speaking-conversation.js +1 -8
- package/dist/shared/types/questions/speaking-describe-image.d.ts +0 -1
- package/dist/shared/types/questions/speaking-describe-image.js +1 -2
- package/dist/shared/types/questions/spontaneous-qa.d.ts +0 -1
- package/dist/shared/types/questions/spontaneous-qa.js +1 -2
- package/dist/shared/types/questions/write-correct-verb-form.d.ts +0 -1
- package/dist/shared/types/questions/write-correct-verb-form.js +1 -13
- package/dist/shared/types/role.types.d.ts +0 -1
- package/dist/shared/types/role.types.js +1 -2
- package/dist/shared/types/structure-management.d.ts +0 -1
- package/dist/shared/types/structure-management.js +1 -29
- package/dist/shared/types/student.types.d.ts +0 -1
- package/dist/shared/types/student.types.js +1 -55
- package/dist/shared/types/teacher-dashboard-rooms.d.ts +0 -1
- package/dist/shared/types/teacher-dashboard-rooms.js +1 -3
- package/package.json +4 -2
- package/dist/api/exam-create.d.ts.map +0 -1
- package/dist/api/exam-create.js.map +0 -1
- package/dist/api/exam-create.types.d.ts.map +0 -1
- package/dist/api/exam-create.types.js.map +0 -1
- package/dist/api/exam-questions.d.ts.map +0 -1
- package/dist/api/exam-questions.js.map +0 -1
- package/dist/api/exam-questions.types.d.ts.map +0 -1
- package/dist/api/exam-questions.types.js.map +0 -1
- package/dist/api/exam-taking.d.ts.map +0 -1
- package/dist/api/exam-taking.js.map +0 -1
- package/dist/api/exam-taking.types.d.ts.map +0 -1
- package/dist/api/exam-taking.types.js.map +0 -1
- package/dist/api/index.d.ts.map +0 -1
- package/dist/api/index.js.map +0 -1
- package/dist/api/result-review.d.ts.map +0 -1
- package/dist/api/result-review.js.map +0 -1
- package/dist/api/result-review.types.d.ts.map +0 -1
- package/dist/api/result-review.types.js.map +0 -1
- package/dist/components/CueCardEditor.d.ts.map +0 -1
- package/dist/components/CueCardEditor.js.map +0 -1
- package/dist/components/common/ResolvedImage.d.ts.map +0 -1
- package/dist/components/common/ResolvedImage.js.map +0 -1
- package/dist/components/exams/CreateExamInfoForm.d.ts.map +0 -1
- package/dist/components/exams/CreateExamInfoForm.js.map +0 -1
- package/dist/components/exams/CreateExamPageContainer.d.ts.map +0 -1
- package/dist/components/exams/CreateExamPageContainer.js.map +0 -1
- package/dist/components/exams/ExamCreator.d.ts.map +0 -1
- package/dist/components/exams/ExamCreator.js.map +0 -1
- package/dist/components/exams/ExamPartTabs.d.ts.map +0 -1
- package/dist/components/exams/ExamPartTabs.js.map +0 -1
- package/dist/components/exams/ExamQuestionGrid.d.ts.map +0 -1
- package/dist/components/exams/ExamQuestionGrid.js.map +0 -1
- package/dist/components/exams/ExamQuestionsPageContainer.d.ts.map +0 -1
- package/dist/components/exams/ExamQuestionsPageContainer.js.map +0 -1
- package/dist/components/exams/PartAudioUploader.d.ts.map +0 -1
- package/dist/components/exams/PartAudioUploader.js.map +0 -1
- package/dist/components/exams/TemplateSelector.d.ts.map +0 -1
- package/dist/components/exams/TemplateSelector.js.map +0 -1
- package/dist/components/exams/api.d.ts.map +0 -1
- package/dist/components/exams/api.js.map +0 -1
- package/dist/components/exams/create-exam.validation.d.ts.map +0 -1
- package/dist/components/exams/create-exam.validation.js.map +0 -1
- package/dist/components/exams/exam-template.utils.d.ts.map +0 -1
- package/dist/components/exams/exam-template.utils.js.map +0 -1
- package/dist/components/exams/index.d.ts.map +0 -1
- package/dist/components/exams/index.js.map +0 -1
- package/dist/components/exams/take/ExamTakingPageContainer.d.ts.map +0 -1
- package/dist/components/exams/take/ExamTakingPageContainer.js.map +0 -1
- package/dist/components/exams/take/GenericQuestionRenderer.d.ts.map +0 -1
- package/dist/components/exams/take/GenericQuestionRenderer.js.map +0 -1
- package/dist/components/exams/take/exam-taking.utils.d.ts.map +0 -1
- package/dist/components/exams/take/exam-taking.utils.js.map +0 -1
- package/dist/components/exams/take/hooks/useSpeakingRecorder.d.ts.map +0 -1
- package/dist/components/exams/take/hooks/useSpeakingRecorder.js.map +0 -1
- package/dist/components/exams/take/index.d.ts.map +0 -1
- package/dist/components/exams/take/index.js.map +0 -1
- package/dist/components/exams/take/types.d.ts.map +0 -1
- package/dist/components/exams/take/types.js.map +0 -1
- package/dist/components/index.d.ts.map +0 -1
- package/dist/components/index.js.map +0 -1
- package/dist/components/questions/_shared/config/question-types.config.d.ts.map +0 -1
- package/dist/components/questions/_shared/config/question-types.config.js.map +0 -1
- package/dist/components/questions/_shared/constants/color-palette.d.ts.map +0 -1
- package/dist/components/questions/_shared/constants/color-palette.js.map +0 -1
- package/dist/components/questions/_shared/hooks/useAnswerGroupQuestionGroup.d.ts.map +0 -1
- package/dist/components/questions/_shared/hooks/useAnswerGroupQuestionGroup.js.map +0 -1
- package/dist/components/questions/_shared/hooks/useBasicQuestionGroup.d.ts.map +0 -1
- package/dist/components/questions/_shared/hooks/useBasicQuestionGroup.js.map +0 -1
- package/dist/components/questions/_shared/hooks/useCompareImagesGroup.d.ts.map +0 -1
- package/dist/components/questions/_shared/hooks/useCompareImagesGroup.js.map +0 -1
- package/dist/components/questions/_shared/hooks/useImageQuestionGroup.d.ts.map +0 -1
- package/dist/components/questions/_shared/hooks/useImageQuestionGroup.js.map +0 -1
- package/dist/components/questions/_shared/hooks/useInfoExchangeGroup.d.ts.map +0 -1
- package/dist/components/questions/_shared/hooks/useInfoExchangeGroup.js.map +0 -1
- package/dist/components/questions/_shared/hooks/useQuestionFormState.d.ts.map +0 -1
- package/dist/components/questions/_shared/hooks/useQuestionFormState.js.map +0 -1
- package/dist/components/questions/_shared/hooks/useQuestionInitialization.d.ts.map +0 -1
- package/dist/components/questions/_shared/hooks/useQuestionInitialization.js.map +0 -1
- package/dist/components/questions/_shared/hooks/useQuestionListGroup.d.ts.map +0 -1
- package/dist/components/questions/_shared/hooks/useQuestionListGroup.js.map +0 -1
- package/dist/components/questions/_shared/hooks/useQuestionOnChange.d.ts.map +0 -1
- package/dist/components/questions/_shared/hooks/useQuestionOnChange.js.map +0 -1
- package/dist/components/questions/_shared/hooks/useSceneQuestionGroup.d.ts.map +0 -1
- package/dist/components/questions/_shared/hooks/useSceneQuestionGroup.js.map +0 -1
- package/dist/components/questions/_shared/index.d.ts.map +0 -1
- package/dist/components/questions/_shared/index.js.map +0 -1
- package/dist/components/questions/_shared/types/answer-the-question.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/answer-the-question.type.js.map +0 -1
- package/dist/components/questions/_shared/types/arrange-letters-into-words.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/arrange-letters-into-words.type.js.map +0 -1
- package/dist/components/questions/_shared/types/choose-correct-adjective.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/choose-correct-adjective.type.js.map +0 -1
- package/dist/components/questions/_shared/types/color-region.config.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/color-region.config.js.map +0 -1
- package/dist/components/questions/_shared/types/fill-in-blank.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/fill-in-blank.type.js.map +0 -1
- package/dist/components/questions/_shared/types/fill-missing-words-in-grid.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/fill-missing-words-in-grid.type.js.map +0 -1
- package/dist/components/questions/_shared/types/gn-speaking-interview.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/gn-speaking-interview.type.js.map +0 -1
- package/dist/components/questions/_shared/types/index.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/index.js.map +0 -1
- package/dist/components/questions/_shared/types/label-the-picture.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/label-the-picture.type.js.map +0 -1
- package/dist/components/questions/_shared/types/listen-and-choose-from-answer-group.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/listen-and-choose-from-answer-group.type.js.map +0 -1
- package/dist/components/questions/_shared/types/listen-and-choose-objects-in-scene.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/listen-and-choose-objects-in-scene.type.js.map +0 -1
- package/dist/components/questions/_shared/types/listen-and-drag-objects-into-scene.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/listen-and-drag-objects-into-scene.type.js.map +0 -1
- package/dist/components/questions/_shared/types/listen-and-speak-answer.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/listen-and-speak-answer.type.js.map +0 -1
- package/dist/components/questions/_shared/types/listen-and-speak-compare-images.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/listen-and-speak-compare-images.type.js.map +0 -1
- package/dist/components/questions/_shared/types/listen-and-speak-image-group.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/listen-and-speak-image-group.type.js.map +0 -1
- package/dist/components/questions/_shared/types/listen-and-speak-info-exchange.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/listen-and-speak-info-exchange.type.js.map +0 -1
- package/dist/components/questions/_shared/types/listen-and-speak-odd-one-out.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/listen-and-speak-odd-one-out.type.js.map +0 -1
- package/dist/components/questions/_shared/types/listen-and-speak-question-list.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/listen-and-speak-question-list.type.js.map +0 -1
- package/dist/components/questions/_shared/types/listen-and-speak-with-story-images.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/listen-and-speak-with-story-images.type.js.map +0 -1
- package/dist/components/questions/_shared/types/listen-and-tick-answer.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/listen-and-tick-answer.type.js.map +0 -1
- package/dist/components/questions/_shared/types/listening-drawline.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/listening-drawline.type.js.map +0 -1
- package/dist/components/questions/_shared/types/look-and-choose-answer.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/look-and-choose-answer.type.js.map +0 -1
- package/dist/components/questions/_shared/types/look-picture-fill-word-hint.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/look-picture-fill-word-hint.type.js.map +0 -1
- package/dist/components/questions/_shared/types/match-by-writing-answer.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/match-by-writing-answer.type.js.map +0 -1
- package/dist/components/questions/_shared/types/multiple-choice.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/multiple-choice.type.js.map +0 -1
- package/dist/components/questions/_shared/types/question-group.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/question-group.type.js.map +0 -1
- package/dist/components/questions/_shared/types/read-and-color-objects.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/read-and-color-objects.type.js.map +0 -1
- package/dist/components/questions/_shared/types/read-displayed-content.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/read-displayed-content.type.js.map +0 -1
- package/dist/components/questions/_shared/types/read-passage-and-answer-questions.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/read-passage-and-answer-questions.type.js.map +0 -1
- package/dist/components/questions/_shared/types/speaking-describe-image.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/speaking-describe-image.type.js.map +0 -1
- package/dist/components/questions/_shared/types/spontaneous-qa.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/spontaneous-qa.type.js.map +0 -1
- package/dist/components/questions/_shared/types/word-fill-paragraph-with-options.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/word-fill-paragraph-with-options.type.js.map +0 -1
- package/dist/components/questions/_shared/types/word-fill-paragraph.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/word-fill-paragraph.type.js.map +0 -1
- package/dist/components/questions/_shared/types/word-fill-structured-form.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/word-fill-structured-form.type.js.map +0 -1
- package/dist/components/questions/_shared/types/word-ordering.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/word-ordering.type.js.map +0 -1
- package/dist/components/questions/_shared/types/write-a-short-letter.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/write-a-short-letter.type.js.map +0 -1
- package/dist/components/questions/_shared/types/write-correct-verb-form.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/write-correct-verb-form.type.js.map +0 -1
- package/dist/components/questions/_shared/types/write-sentences.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/write-sentences.type.js.map +0 -1
- package/dist/components/questions/_shared/types/write-short-paragraph.type.d.ts.map +0 -1
- package/dist/components/questions/_shared/types/write-short-paragraph.type.js.map +0 -1
- package/dist/components/questions/_shared/utils/answer-builder.d.ts.map +0 -1
- package/dist/components/questions/_shared/utils/answer-builder.js.map +0 -1
- package/dist/components/questions/_shared/utils/createColorRegionRegistration.d.ts.map +0 -1
- package/dist/components/questions/_shared/utils/createColorRegionRegistration.js.map +0 -1
- package/dist/components/questions/_shared/utils/id-generator.d.ts.map +0 -1
- package/dist/components/questions/_shared/utils/id-generator.js.map +0 -1
- package/dist/components/questions/_shared/utils/question-validation.d.ts.map +0 -1
- package/dist/components/questions/_shared/utils/question-validation.js.map +0 -1
- package/dist/components/questions/components/ColorNode.d.ts.map +0 -1
- package/dist/components/questions/components/ColorNode.js.map +0 -1
- package/dist/components/questions/components/ColorRegionClient.d.ts.map +0 -1
- package/dist/components/questions/components/ColorRegionClient.js.map +0 -1
- package/dist/components/questions/components/ColorRegionCreator.d.ts.map +0 -1
- package/dist/components/questions/components/ColorRegionCreator.js.map +0 -1
- package/dist/components/questions/components/ColorRegionNode.d.ts.map +0 -1
- package/dist/components/questions/components/ColorRegionNode.js.map +0 -1
- package/dist/components/questions/components/CreatorGuide.d.ts.map +0 -1
- package/dist/components/questions/components/CreatorGuide.js.map +0 -1
- package/dist/components/questions/components/NameNode.d.ts.map +0 -1
- package/dist/components/questions/components/NameNode.js.map +0 -1
- package/dist/components/questions/components/QuestionBankOption.d.ts.map +0 -1
- package/dist/components/questions/components/QuestionBankOption.js.map +0 -1
- package/dist/components/questions/components/QuestionBasicInfoForm.d.ts.map +0 -1
- package/dist/components/questions/components/QuestionBasicInfoForm.js.map +0 -1
- package/dist/components/questions/components/QuestionCommonFields.d.ts.map +0 -1
- package/dist/components/questions/components/QuestionCommonFields.js.map +0 -1
- package/dist/components/questions/components/QuestionSearchDropdown.d.ts.map +0 -1
- package/dist/components/questions/components/QuestionSearchDropdown.js.map +0 -1
- package/dist/components/questions/components/QuestionTypeSelector.d.ts.map +0 -1
- package/dist/components/questions/components/QuestionTypeSelector.js.map +0 -1
- package/dist/components/questions/components/QuestionTypeSpecificForms.d.ts.map +0 -1
- package/dist/components/questions/components/QuestionTypeSpecificForms.js.map +0 -1
- package/dist/components/questions/components/RegionNode.d.ts.map +0 -1
- package/dist/components/questions/components/RegionNode.js.map +0 -1
- package/dist/components/questions/components/index.d.ts.map +0 -1
- package/dist/components/questions/components/index.js.map +0 -1
- package/dist/components/questions/creator/QuestionCreator.d.ts.map +0 -1
- package/dist/components/questions/creator/QuestionCreator.js.map +0 -1
- package/dist/components/questions/creator/QuestionGroupCreator.d.ts.map +0 -1
- package/dist/components/questions/creator/QuestionGroupCreator.js.map +0 -1
- package/dist/components/questions/creator/dedicated-component-router.d.ts.map +0 -1
- package/dist/components/questions/creator/dedicated-component-router.js.map +0 -1
- package/dist/components/questions/creator/index.d.ts.map +0 -1
- package/dist/components/questions/creator/index.js.map +0 -1
- package/dist/components/questions/creator/question-type-registry.d.ts.map +0 -1
- package/dist/components/questions/creator/question-type-registry.js.map +0 -1
- package/dist/components/questions/groups/ArticlesGroupCard.d.ts.map +0 -1
- package/dist/components/questions/groups/ArticlesGroupCard.js.map +0 -1
- package/dist/components/questions/groups/BasicQuestionGroupCard.d.ts.map +0 -1
- package/dist/components/questions/groups/BasicQuestionGroupCard.js.map +0 -1
- package/dist/components/questions/groups/DocumentGroupCard.d.ts.map +0 -1
- package/dist/components/questions/groups/DocumentGroupCard.js.map +0 -1
- package/dist/components/questions/groups/MatchAnswerGroupCard.d.ts.map +0 -1
- package/dist/components/questions/groups/MatchAnswerGroupCard.js.map +0 -1
- package/dist/components/questions/index.d.ts.map +0 -1
- package/dist/components/questions/index.js.map +0 -1
- package/dist/components/questions/types/answer-the-question/AnswerTheQuestionClient.d.ts.map +0 -1
- package/dist/components/questions/types/answer-the-question/AnswerTheQuestionClient.js.map +0 -1
- package/dist/components/questions/types/answer-the-question/AnswerTheQuestionCreator.d.ts.map +0 -1
- package/dist/components/questions/types/answer-the-question/AnswerTheQuestionCreator.js.map +0 -1
- package/dist/components/questions/types/answer-the-question/register.d.ts.map +0 -1
- package/dist/components/questions/types/answer-the-question/register.js.map +0 -1
- package/dist/components/questions/types/answer-the-question/transform.d.ts.map +0 -1
- package/dist/components/questions/types/answer-the-question/transform.js.map +0 -1
- package/dist/components/questions/types/arrange-letters-into-words/ArrangeLettersIntoWordsClient.d.ts.map +0 -1
- package/dist/components/questions/types/arrange-letters-into-words/ArrangeLettersIntoWordsClient.js.map +0 -1
- package/dist/components/questions/types/arrange-letters-into-words/ArrangeLettersIntoWordsCreator.d.ts.map +0 -1
- package/dist/components/questions/types/arrange-letters-into-words/ArrangeLettersIntoWordsCreator.js.map +0 -1
- package/dist/components/questions/types/arrange-letters-into-words/index.d.ts.map +0 -1
- package/dist/components/questions/types/arrange-letters-into-words/index.js.map +0 -1
- package/dist/components/questions/types/arrange-letters-into-words/register.d.ts.map +0 -1
- package/dist/components/questions/types/arrange-letters-into-words/register.js.map +0 -1
- package/dist/components/questions/types/arrange-letters-into-words/transform.d.ts.map +0 -1
- package/dist/components/questions/types/arrange-letters-into-words/transform.js.map +0 -1
- package/dist/components/questions/types/choose-correct-adjective/ChooseCorrectAdjectiveClient.d.ts.map +0 -1
- package/dist/components/questions/types/choose-correct-adjective/ChooseCorrectAdjectiveClient.js.map +0 -1
- package/dist/components/questions/types/choose-correct-adjective/ChooseCorrectAdjectiveCreator.d.ts.map +0 -1
- package/dist/components/questions/types/choose-correct-adjective/ChooseCorrectAdjectiveCreator.js.map +0 -1
- package/dist/components/questions/types/choose-correct-adjective/index.d.ts.map +0 -1
- package/dist/components/questions/types/choose-correct-adjective/index.js.map +0 -1
- package/dist/components/questions/types/choose-correct-adjective/register.d.ts.map +0 -1
- package/dist/components/questions/types/choose-correct-adjective/register.js.map +0 -1
- package/dist/components/questions/types/choose-correct-adjective/transform.d.ts.map +0 -1
- package/dist/components/questions/types/choose-correct-adjective/transform.js.map +0 -1
- package/dist/components/questions/types/choose-the-correct-answer/ChooseTheCorrectAnswerClient.d.ts.map +0 -1
- package/dist/components/questions/types/choose-the-correct-answer/ChooseTheCorrectAnswerClient.js.map +0 -1
- package/dist/components/questions/types/choose-the-correct-answer/ChooseTheCorrectAnswerCreator.d.ts.map +0 -1
- package/dist/components/questions/types/choose-the-correct-answer/ChooseTheCorrectAnswerCreator.js.map +0 -1
- package/dist/components/questions/types/choose-the-correct-answer/index.d.ts.map +0 -1
- package/dist/components/questions/types/choose-the-correct-answer/index.js.map +0 -1
- package/dist/components/questions/types/choose-the-correct-answer/register.d.ts.map +0 -1
- package/dist/components/questions/types/choose-the-correct-answer/register.js.map +0 -1
- package/dist/components/questions/types/choose-the-correct-answer/transform.d.ts.map +0 -1
- package/dist/components/questions/types/choose-the-correct-answer/transform.js.map +0 -1
- package/dist/components/questions/types/fill-in-blank/FillInBlankClient.d.ts.map +0 -1
- package/dist/components/questions/types/fill-in-blank/FillInBlankClient.js.map +0 -1
- package/dist/components/questions/types/fill-in-blank/FillInBlankCreator.d.ts.map +0 -1
- package/dist/components/questions/types/fill-in-blank/FillInBlankCreator.js.map +0 -1
- package/dist/components/questions/types/fill-in-blank/index.d.ts.map +0 -1
- package/dist/components/questions/types/fill-in-blank/index.js.map +0 -1
- package/dist/components/questions/types/fill-in-blank/register.d.ts.map +0 -1
- package/dist/components/questions/types/fill-in-blank/register.js.map +0 -1
- package/dist/components/questions/types/fill-in-blank/transform.d.ts.map +0 -1
- package/dist/components/questions/types/fill-in-blank/transform.js.map +0 -1
- package/dist/components/questions/types/fill-missing-words-in-grid/FillMissingWordsInGridClient.d.ts.map +0 -1
- package/dist/components/questions/types/fill-missing-words-in-grid/FillMissingWordsInGridClient.js.map +0 -1
- package/dist/components/questions/types/fill-missing-words-in-grid/FillMissingWordsInGridCreator.d.ts.map +0 -1
- package/dist/components/questions/types/fill-missing-words-in-grid/FillMissingWordsInGridCreator.js.map +0 -1
- package/dist/components/questions/types/fill-missing-words-in-grid/index.d.ts.map +0 -1
- package/dist/components/questions/types/fill-missing-words-in-grid/index.js.map +0 -1
- package/dist/components/questions/types/fill-missing-words-in-grid/register.d.ts.map +0 -1
- package/dist/components/questions/types/fill-missing-words-in-grid/register.js.map +0 -1
- package/dist/components/questions/types/fill-missing-words-in-grid/transform.d.ts.map +0 -1
- package/dist/components/questions/types/fill-missing-words-in-grid/transform.js.map +0 -1
- package/dist/components/questions/types/gn-speaking-interview/GNSpeakingInterviewCreator.d.ts.map +0 -1
- package/dist/components/questions/types/gn-speaking-interview/GNSpeakingInterviewCreator.js.map +0 -1
- package/dist/components/questions/types/gn-speaking-interview/register.d.ts.map +0 -1
- package/dist/components/questions/types/gn-speaking-interview/register.js.map +0 -1
- package/dist/components/questions/types/gn-speaking-interview/transform.d.ts.map +0 -1
- package/dist/components/questions/types/gn-speaking-interview/transform.js.map +0 -1
- package/dist/components/questions/types/image-object-matching/ImageObjectMatchingClient.d.ts.map +0 -1
- package/dist/components/questions/types/image-object-matching/ImageObjectMatchingClient.js.map +0 -1
- package/dist/components/questions/types/image-object-matching/ImageObjectMatchingCreator.d.ts.map +0 -1
- package/dist/components/questions/types/image-object-matching/ImageObjectMatchingCreator.js.map +0 -1
- package/dist/components/questions/types/image-object-matching/index.d.ts.map +0 -1
- package/dist/components/questions/types/image-object-matching/index.js.map +0 -1
- package/dist/components/questions/types/image-object-matching/register.d.ts.map +0 -1
- package/dist/components/questions/types/image-object-matching/register.js.map +0 -1
- package/dist/components/questions/types/image-object-matching/transform.d.ts.map +0 -1
- package/dist/components/questions/types/image-object-matching/transform.js.map +0 -1
- package/dist/components/questions/types/label-the-picture/LabelThePictureClient.d.ts.map +0 -1
- package/dist/components/questions/types/label-the-picture/LabelThePictureClient.js.map +0 -1
- package/dist/components/questions/types/label-the-picture/LabelThePictureCreator.d.ts.map +0 -1
- package/dist/components/questions/types/label-the-picture/LabelThePictureCreator.js.map +0 -1
- package/dist/components/questions/types/label-the-picture/index.d.ts.map +0 -1
- package/dist/components/questions/types/label-the-picture/index.js.map +0 -1
- package/dist/components/questions/types/label-the-picture/register.d.ts.map +0 -1
- package/dist/components/questions/types/label-the-picture/register.js.map +0 -1
- package/dist/components/questions/types/label-the-picture/transform.d.ts.map +0 -1
- package/dist/components/questions/types/label-the-picture/transform.js.map +0 -1
- package/dist/components/questions/types/listen-and-choose-from-answer-group/ListenAndChooseFromAnswerGroupClient.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-choose-from-answer-group/ListenAndChooseFromAnswerGroupClient.js.map +0 -1
- package/dist/components/questions/types/listen-and-choose-from-answer-group/ListenAndChooseFromAnswerGroupCreator.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-choose-from-answer-group/ListenAndChooseFromAnswerGroupCreator.js.map +0 -1
- package/dist/components/questions/types/listen-and-choose-from-answer-group/index.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-choose-from-answer-group/index.js.map +0 -1
- package/dist/components/questions/types/listen-and-choose-from-answer-group/register.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-choose-from-answer-group/register.js.map +0 -1
- package/dist/components/questions/types/listen-and-choose-from-answer-group/transform.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-choose-from-answer-group/transform.js.map +0 -1
- package/dist/components/questions/types/listen-and-choose-objects-in-scene/ListenAndChooseObjectsInSceneClient.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-choose-objects-in-scene/ListenAndChooseObjectsInSceneClient.js.map +0 -1
- package/dist/components/questions/types/listen-and-choose-objects-in-scene/ListenAndChooseObjectsInSceneCreator.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-choose-objects-in-scene/ListenAndChooseObjectsInSceneCreator.js.map +0 -1
- package/dist/components/questions/types/listen-and-choose-objects-in-scene/index.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-choose-objects-in-scene/index.js.map +0 -1
- package/dist/components/questions/types/listen-and-choose-objects-in-scene/register.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-choose-objects-in-scene/register.js.map +0 -1
- package/dist/components/questions/types/listen-and-choose-objects-in-scene/transform.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-choose-objects-in-scene/transform.js.map +0 -1
- package/dist/components/questions/types/listen-and-drag-objects-into-scene/ListenAndDragObjectsIntoSceneClient.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-drag-objects-into-scene/ListenAndDragObjectsIntoSceneClient.js.map +0 -1
- package/dist/components/questions/types/listen-and-drag-objects-into-scene/ListenAndDragObjectsIntoSceneCreator.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-drag-objects-into-scene/ListenAndDragObjectsIntoSceneCreator.js.map +0 -1
- package/dist/components/questions/types/listen-and-drag-objects-into-scene/index.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-drag-objects-into-scene/index.js.map +0 -1
- package/dist/components/questions/types/listen-and-drag-objects-into-scene/register.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-drag-objects-into-scene/register.js.map +0 -1
- package/dist/components/questions/types/listen-and-drag-objects-into-scene/transform.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-drag-objects-into-scene/transform.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-answer/ArrowIndicator.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-answer/ArrowIndicator.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-answer/ListenAndSpeakAnswerClient.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-answer/ListenAndSpeakAnswerClient.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-answer/ListenAndSpeakAnswerCreator.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-answer/ListenAndSpeakAnswerCreator.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-answer/index.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-answer/index.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-answer/register.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-answer/register.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-answer/transform.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-answer/transform.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-compare-images/ListenAndSpeakCompareImagesClient.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-compare-images/ListenAndSpeakCompareImagesClient.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-compare-images/ListenAndSpeakCompareImagesCreator.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-compare-images/ListenAndSpeakCompareImagesCreator.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-compare-images/register.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-compare-images/register.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-compare-images/transform.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-compare-images/transform.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-image-group/ListenAndSpeakImageGroupClient.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-image-group/ListenAndSpeakImageGroupClient.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-image-group/ListenAndSpeakImageGroupCreator.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-image-group/ListenAndSpeakImageGroupCreator.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-image-group/register.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-image-group/register.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-image-group/transform.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-image-group/transform.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-info-exchange/ListenAndSpeakInfoExchangeClient.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-info-exchange/ListenAndSpeakInfoExchangeClient.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-info-exchange/ListenAndSpeakInfoExchangeCreator.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-info-exchange/ListenAndSpeakInfoExchangeCreator.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-info-exchange/register.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-info-exchange/register.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-info-exchange/transform.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-info-exchange/transform.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-odd-one-out/ListenAndSpeakOddOneOutClient.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-odd-one-out/ListenAndSpeakOddOneOutClient.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-odd-one-out/ListenAndSpeakOddOneOutCreator.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-odd-one-out/ListenAndSpeakOddOneOutCreator.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-odd-one-out/register.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-odd-one-out/register.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-odd-one-out/transform.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-odd-one-out/transform.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-question-list/ListenAndSpeakQuestionListClient.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-question-list/ListenAndSpeakQuestionListClient.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-question-list/ListenAndSpeakQuestionListCreator.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-question-list/ListenAndSpeakQuestionListCreator.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-question-list/register.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-question-list/register.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-question-list/transform.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-question-list/transform.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-with-story-images/ListenAndSpeakWithStoryImagesClient.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-with-story-images/ListenAndSpeakWithStoryImagesClient.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-with-story-images/ListenAndSpeakWithStoryImagesCreator.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-with-story-images/ListenAndSpeakWithStoryImagesCreator.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-with-story-images/register.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-with-story-images/register.js.map +0 -1
- package/dist/components/questions/types/listen-and-speak-with-story-images/transform.d.ts.map +0 -1
- package/dist/components/questions/types/listen-and-speak-with-story-images/transform.js.map +0 -1
- package/dist/components/questions/types/look-picture-choose-correct-answer/LookPictureChooseCorrectAnswerClient.d.ts.map +0 -1
- package/dist/components/questions/types/look-picture-choose-correct-answer/LookPictureChooseCorrectAnswerClient.js.map +0 -1
- package/dist/components/questions/types/look-picture-choose-correct-answer/LookPictureChooseCorrectAnswerCreator.d.ts.map +0 -1
- package/dist/components/questions/types/look-picture-choose-correct-answer/LookPictureChooseCorrectAnswerCreator.js.map +0 -1
- package/dist/components/questions/types/look-picture-choose-correct-answer/index.d.ts.map +0 -1
- package/dist/components/questions/types/look-picture-choose-correct-answer/index.js.map +0 -1
- package/dist/components/questions/types/look-picture-choose-correct-answer/register.d.ts.map +0 -1
- package/dist/components/questions/types/look-picture-choose-correct-answer/register.js.map +0 -1
- package/dist/components/questions/types/look-picture-choose-correct-answer/transform.d.ts.map +0 -1
- package/dist/components/questions/types/look-picture-choose-correct-answer/transform.js.map +0 -1
- package/dist/components/questions/types/look-picture-fill-blank-choose-answer/LookPictureFillBlankChooseAnswerClient.d.ts.map +0 -1
- package/dist/components/questions/types/look-picture-fill-blank-choose-answer/LookPictureFillBlankChooseAnswerClient.js.map +0 -1
- package/dist/components/questions/types/look-picture-fill-blank-choose-answer/LookPictureFillBlankChooseAnswerCreator.d.ts.map +0 -1
- package/dist/components/questions/types/look-picture-fill-blank-choose-answer/LookPictureFillBlankChooseAnswerCreator.js.map +0 -1
- package/dist/components/questions/types/look-picture-fill-blank-choose-answer/index.d.ts.map +0 -1
- package/dist/components/questions/types/look-picture-fill-blank-choose-answer/index.js.map +0 -1
- package/dist/components/questions/types/look-picture-fill-blank-choose-answer/register.d.ts.map +0 -1
- package/dist/components/questions/types/look-picture-fill-blank-choose-answer/register.js.map +0 -1
- package/dist/components/questions/types/look-picture-fill-blank-choose-answer/transform.d.ts.map +0 -1
- package/dist/components/questions/types/look-picture-fill-blank-choose-answer/transform.js.map +0 -1
- package/dist/components/questions/types/look-picture-fill-word-hint/LookPictureFillWordHintClient.d.ts.map +0 -1
- package/dist/components/questions/types/look-picture-fill-word-hint/LookPictureFillWordHintClient.js.map +0 -1
- package/dist/components/questions/types/look-picture-fill-word-hint/LookPictureFillWordHintCreator.d.ts.map +0 -1
- package/dist/components/questions/types/look-picture-fill-word-hint/LookPictureFillWordHintCreator.js.map +0 -1
- package/dist/components/questions/types/look-picture-fill-word-hint/index.d.ts.map +0 -1
- package/dist/components/questions/types/look-picture-fill-word-hint/index.js.map +0 -1
- package/dist/components/questions/types/look-picture-fill-word-hint/register.d.ts.map +0 -1
- package/dist/components/questions/types/look-picture-fill-word-hint/register.js.map +0 -1
- package/dist/components/questions/types/look-picture-fill-word-hint/transform.d.ts.map +0 -1
- package/dist/components/questions/types/look-picture-fill-word-hint/transform.js.map +0 -1
- package/dist/components/questions/types/match-by-writing-answer/MatchByWritingAnswerClient.d.ts.map +0 -1
- package/dist/components/questions/types/match-by-writing-answer/MatchByWritingAnswerClient.js.map +0 -1
- package/dist/components/questions/types/match-by-writing-answer/MatchByWritingAnswerCreator.d.ts.map +0 -1
- package/dist/components/questions/types/match-by-writing-answer/MatchByWritingAnswerCreator.js.map +0 -1
- package/dist/components/questions/types/match-by-writing-answer/index.d.ts.map +0 -1
- package/dist/components/questions/types/match-by-writing-answer/index.js.map +0 -1
- package/dist/components/questions/types/match-by-writing-answer/register.d.ts.map +0 -1
- package/dist/components/questions/types/match-by-writing-answer/register.js.map +0 -1
- package/dist/components/questions/types/match-by-writing-answer/transform.d.ts.map +0 -1
- package/dist/components/questions/types/match-by-writing-answer/transform.js.map +0 -1
- package/dist/components/questions/types/read-and-color-objects/ReadAndColorObjectsClient.d.ts.map +0 -1
- package/dist/components/questions/types/read-and-color-objects/ReadAndColorObjectsClient.js.map +0 -1
- package/dist/components/questions/types/read-and-color-objects/ReadAndColorObjectsCreator.d.ts.map +0 -1
- package/dist/components/questions/types/read-and-color-objects/ReadAndColorObjectsCreator.js.map +0 -1
- package/dist/components/questions/types/read-and-color-objects/index.d.ts.map +0 -1
- package/dist/components/questions/types/read-and-color-objects/index.js.map +0 -1
- package/dist/components/questions/types/read-and-color-objects/register.d.ts.map +0 -1
- package/dist/components/questions/types/read-and-color-objects/register.js.map +0 -1
- package/dist/components/questions/types/read-and-color-objects/transform.d.ts.map +0 -1
- package/dist/components/questions/types/read-and-color-objects/transform.js.map +0 -1
- package/dist/components/questions/types/read-displayed-content/ReadDisplayedContentCreator.d.ts.map +0 -1
- package/dist/components/questions/types/read-displayed-content/ReadDisplayedContentCreator.js.map +0 -1
- package/dist/components/questions/types/read-displayed-content/register.d.ts.map +0 -1
- package/dist/components/questions/types/read-displayed-content/register.js.map +0 -1
- package/dist/components/questions/types/read-displayed-content/transform.d.ts.map +0 -1
- package/dist/components/questions/types/read-displayed-content/transform.js.map +0 -1
- package/dist/components/questions/types/read-passage-and-answer-questions/ReadPassageAndAnswerQuestionsClient.d.ts.map +0 -1
- package/dist/components/questions/types/read-passage-and-answer-questions/ReadPassageAndAnswerQuestionsClient.js.map +0 -1
- package/dist/components/questions/types/read-passage-and-answer-questions/ReadPassageAndAnswerQuestionsCreator.d.ts.map +0 -1
- package/dist/components/questions/types/read-passage-and-answer-questions/ReadPassageAndAnswerQuestionsCreator.js.map +0 -1
- package/dist/components/questions/types/read-passage-and-answer-questions/index.d.ts.map +0 -1
- package/dist/components/questions/types/read-passage-and-answer-questions/index.js.map +0 -1
- package/dist/components/questions/types/read-passage-and-answer-questions/register.d.ts.map +0 -1
- package/dist/components/questions/types/read-passage-and-answer-questions/register.js.map +0 -1
- package/dist/components/questions/types/read-passage-and-answer-questions/transform.d.ts.map +0 -1
- package/dist/components/questions/types/read-passage-and-answer-questions/transform.js.map +0 -1
- package/dist/components/questions/types/speaking-conversation/SpeakingConversationCreator.d.ts.map +0 -1
- package/dist/components/questions/types/speaking-conversation/SpeakingConversationCreator.js.map +0 -1
- package/dist/components/questions/types/speaking-conversation/SpeakingConversationPreviewClient.d.ts.map +0 -1
- package/dist/components/questions/types/speaking-conversation/SpeakingConversationPreviewClient.js.map +0 -1
- package/dist/components/questions/types/speaking-conversation/register.d.ts.map +0 -1
- package/dist/components/questions/types/speaking-conversation/register.js.map +0 -1
- package/dist/components/questions/types/speaking-conversation/transform.d.ts.map +0 -1
- package/dist/components/questions/types/speaking-conversation/transform.js.map +0 -1
- package/dist/components/questions/types/speaking-cue-card/SpeakingCueCardCreator.d.ts.map +0 -1
- package/dist/components/questions/types/speaking-cue-card/SpeakingCueCardCreator.js.map +0 -1
- package/dist/components/questions/types/speaking-cue-card/register.d.ts.map +0 -1
- package/dist/components/questions/types/speaking-cue-card/register.js.map +0 -1
- package/dist/components/questions/types/speaking-cue-card/transform.d.ts.map +0 -1
- package/dist/components/questions/types/speaking-cue-card/transform.js.map +0 -1
- package/dist/components/questions/types/speaking-describe-image/SpeakingDescribeImageClient.d.ts.map +0 -1
- package/dist/components/questions/types/speaking-describe-image/SpeakingDescribeImageClient.js.map +0 -1
- package/dist/components/questions/types/speaking-describe-image/SpeakingDescribeImageCreator.d.ts.map +0 -1
- package/dist/components/questions/types/speaking-describe-image/SpeakingDescribeImageCreator.js.map +0 -1
- package/dist/components/questions/types/speaking-describe-image/index.d.ts.map +0 -1
- package/dist/components/questions/types/speaking-describe-image/index.js.map +0 -1
- package/dist/components/questions/types/speaking-describe-image/register.d.ts.map +0 -1
- package/dist/components/questions/types/speaking-describe-image/register.js.map +0 -1
- package/dist/components/questions/types/speaking-describe-image/transform.d.ts.map +0 -1
- package/dist/components/questions/types/speaking-describe-image/transform.js.map +0 -1
- package/dist/components/questions/types/spontaneous-qa/SpontaneousQACreator.d.ts.map +0 -1
- package/dist/components/questions/types/spontaneous-qa/SpontaneousQACreator.js.map +0 -1
- package/dist/components/questions/types/spontaneous-qa/register.d.ts.map +0 -1
- package/dist/components/questions/types/spontaneous-qa/register.js.map +0 -1
- package/dist/components/questions/types/spontaneous-qa/transform.d.ts.map +0 -1
- package/dist/components/questions/types/spontaneous-qa/transform.js.map +0 -1
- package/dist/components/questions/types/true-false/TrueFalseClient.d.ts.map +0 -1
- package/dist/components/questions/types/true-false/TrueFalseClient.js.map +0 -1
- package/dist/components/questions/types/true-false/TrueFalseCreator.d.ts.map +0 -1
- package/dist/components/questions/types/true-false/TrueFalseCreator.js.map +0 -1
- package/dist/components/questions/types/true-false/index.d.ts.map +0 -1
- package/dist/components/questions/types/true-false/index.js.map +0 -1
- package/dist/components/questions/types/true-false/register.d.ts.map +0 -1
- package/dist/components/questions/types/true-false/register.js.map +0 -1
- package/dist/components/questions/types/true-false/transform.d.ts.map +0 -1
- package/dist/components/questions/types/true-false/transform.js.map +0 -1
- package/dist/components/questions/types/word-fill-paragraph/WordFillParagraphClient.d.ts.map +0 -1
- package/dist/components/questions/types/word-fill-paragraph/WordFillParagraphClient.js.map +0 -1
- package/dist/components/questions/types/word-fill-paragraph/WordFillParagraphCreator.d.ts.map +0 -1
- package/dist/components/questions/types/word-fill-paragraph/WordFillParagraphCreator.js.map +0 -1
- package/dist/components/questions/types/word-fill-paragraph/WordFillParagraphWrapper.d.ts.map +0 -1
- package/dist/components/questions/types/word-fill-paragraph/WordFillParagraphWrapper.js.map +0 -1
- package/dist/components/questions/types/word-fill-paragraph/index.d.ts.map +0 -1
- package/dist/components/questions/types/word-fill-paragraph/index.js.map +0 -1
- package/dist/components/questions/types/word-fill-paragraph/register.d.ts.map +0 -1
- package/dist/components/questions/types/word-fill-paragraph/register.js.map +0 -1
- package/dist/components/questions/types/word-fill-paragraph/transform.d.ts.map +0 -1
- package/dist/components/questions/types/word-fill-paragraph/transform.js.map +0 -1
- package/dist/components/questions/types/word-fill-structured-form/WordFillStructuredFormClient.d.ts.map +0 -1
- package/dist/components/questions/types/word-fill-structured-form/WordFillStructuredFormClient.js.map +0 -1
- package/dist/components/questions/types/word-fill-structured-form/WordFillStructuredFormCreator.d.ts.map +0 -1
- package/dist/components/questions/types/word-fill-structured-form/WordFillStructuredFormCreator.js.map +0 -1
- package/dist/components/questions/types/word-fill-structured-form/index.d.ts.map +0 -1
- package/dist/components/questions/types/word-fill-structured-form/index.js.map +0 -1
- package/dist/components/questions/types/word-fill-structured-form/register.d.ts.map +0 -1
- package/dist/components/questions/types/word-fill-structured-form/register.js.map +0 -1
- package/dist/components/questions/types/word-fill-structured-form/transform.d.ts.map +0 -1
- package/dist/components/questions/types/word-fill-structured-form/transform.js.map +0 -1
- package/dist/components/questions/types/word-ordering/WordOrderingClient.d.ts.map +0 -1
- package/dist/components/questions/types/word-ordering/WordOrderingClient.js.map +0 -1
- package/dist/components/questions/types/word-ordering/WordOrderingCreator.d.ts.map +0 -1
- package/dist/components/questions/types/word-ordering/WordOrderingCreator.js.map +0 -1
- package/dist/components/questions/types/word-ordering/index.d.ts.map +0 -1
- package/dist/components/questions/types/word-ordering/index.js.map +0 -1
- package/dist/components/questions/types/word-ordering/register.d.ts.map +0 -1
- package/dist/components/questions/types/word-ordering/register.js.map +0 -1
- package/dist/components/questions/types/word-ordering/transform.d.ts.map +0 -1
- package/dist/components/questions/types/word-ordering/transform.js.map +0 -1
- package/dist/components/questions/types/write-a-short-letter/WriteAShortLetterClient.d.ts.map +0 -1
- package/dist/components/questions/types/write-a-short-letter/WriteAShortLetterClient.js.map +0 -1
- package/dist/components/questions/types/write-a-short-letter/WriteAShortLetterCreator.d.ts.map +0 -1
- package/dist/components/questions/types/write-a-short-letter/WriteAShortLetterCreator.js.map +0 -1
- package/dist/components/questions/types/write-a-short-letter/index.d.ts.map +0 -1
- package/dist/components/questions/types/write-a-short-letter/index.js.map +0 -1
- package/dist/components/questions/types/write-a-short-letter/register.d.ts.map +0 -1
- package/dist/components/questions/types/write-a-short-letter/register.js.map +0 -1
- package/dist/components/questions/types/write-a-short-letter/transform.d.ts.map +0 -1
- package/dist/components/questions/types/write-a-short-letter/transform.js.map +0 -1
- package/dist/components/questions/types/write-correct-verb-form/WriteCorrectVerbFormClient.d.ts.map +0 -1
- package/dist/components/questions/types/write-correct-verb-form/WriteCorrectVerbFormClient.js.map +0 -1
- package/dist/components/questions/types/write-correct-verb-form/WriteCorrectVerbFormCreator.d.ts.map +0 -1
- package/dist/components/questions/types/write-correct-verb-form/WriteCorrectVerbFormCreator.js.map +0 -1
- package/dist/components/questions/types/write-correct-verb-form/index.d.ts.map +0 -1
- package/dist/components/questions/types/write-correct-verb-form/index.js.map +0 -1
- package/dist/components/questions/types/write-correct-verb-form/register.d.ts.map +0 -1
- package/dist/components/questions/types/write-correct-verb-form/register.js.map +0 -1
- package/dist/components/questions/types/write-correct-verb-form/transform.d.ts.map +0 -1
- package/dist/components/questions/types/write-correct-verb-form/transform.js.map +0 -1
- package/dist/components/questions/types/write-sentences/WriteSentencesClient.d.ts.map +0 -1
- package/dist/components/questions/types/write-sentences/WriteSentencesClient.js.map +0 -1
- package/dist/components/questions/types/write-sentences/WriteSentencesCreator.d.ts.map +0 -1
- package/dist/components/questions/types/write-sentences/WriteSentencesCreator.js.map +0 -1
- package/dist/components/questions/types/write-sentences/index.d.ts.map +0 -1
- package/dist/components/questions/types/write-sentences/index.js.map +0 -1
- package/dist/components/questions/types/write-sentences/register.d.ts.map +0 -1
- package/dist/components/questions/types/write-sentences/register.js.map +0 -1
- package/dist/components/questions/types/write-sentences/transform.d.ts.map +0 -1
- package/dist/components/questions/types/write-sentences/transform.js.map +0 -1
- package/dist/components/questions/types/write-short-paragraph/WriteShortParagraphClient.d.ts.map +0 -1
- package/dist/components/questions/types/write-short-paragraph/WriteShortParagraphClient.js.map +0 -1
- package/dist/components/questions/types/write-short-paragraph/WriteShortParagraphCreator.d.ts.map +0 -1
- package/dist/components/questions/types/write-short-paragraph/WriteShortParagraphCreator.js.map +0 -1
- package/dist/components/questions/types/write-short-paragraph/index.d.ts.map +0 -1
- package/dist/components/questions/types/write-short-paragraph/index.js.map +0 -1
- package/dist/components/questions/types/write-short-paragraph/register.d.ts.map +0 -1
- package/dist/components/questions/types/write-short-paragraph/register.js.map +0 -1
- package/dist/components/questions/types/write-short-paragraph/transform.d.ts.map +0 -1
- package/dist/components/questions/types/write-short-paragraph/transform.js.map +0 -1
- package/dist/components/questions/viewer/QuestionGroupViewer.d.ts.map +0 -1
- package/dist/components/questions/viewer/QuestionGroupViewer.js.map +0 -1
- package/dist/components/questions/viewer/QuestionViewer.d.ts.map +0 -1
- package/dist/components/questions/viewer/QuestionViewer.js.map +0 -1
- package/dist/components/questions/viewer/index.d.ts.map +0 -1
- package/dist/components/questions/viewer/index.js.map +0 -1
- package/dist/components/results/ResultReviewPageContainer.d.ts.map +0 -1
- package/dist/components/results/ResultReviewPageContainer.js.map +0 -1
- package/dist/components/results/ReviewQuestionRenderer.d.ts.map +0 -1
- package/dist/components/results/ReviewQuestionRenderer.js.map +0 -1
- package/dist/components/results/index.d.ts.map +0 -1
- package/dist/components/results/index.js.map +0 -1
- package/dist/components/results/result-review.utils.d.ts.map +0 -1
- package/dist/components/results/result-review.utils.js.map +0 -1
- package/dist/components/results/review-data.d.ts.map +0 -1
- package/dist/components/results/review-data.js.map +0 -1
- package/dist/components/results/review-renderer.utils.d.ts.map +0 -1
- package/dist/components/results/review-renderer.utils.js.map +0 -1
- package/dist/components/results/review-types.d.ts.map +0 -1
- package/dist/components/results/review-types.js.map +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleAudioPlayer.d.ts.map +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleAudioPlayer.js.map +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleBottomNav.d.ts.map +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleBottomNav.js.map +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleExamLayout.d.ts.map +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleExamLayout.js.map +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleExampleText.d.ts.map +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleExampleText.js.map +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleHeader.d.ts.map +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleHeader.js.map +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleInstructionBanner.d.ts.map +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleInstructionBanner.js.map +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleNavButton.d.ts.map +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleNavButton.js.map +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYlePartBanner.d.ts.map +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYlePartBanner.js.map +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleProgressBar.d.ts.map +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleProgressBar.js.map +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleQuestionCard.d.ts.map +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleQuestionCard.js.map +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleQuestionCardFullWidth.d.ts.map +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleQuestionCardFullWidth.js.map +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleSidebar.d.ts.map +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleSidebar.js.map +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleTimer.d.ts.map +0 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleTimer.js.map +0 -1
- package/dist/components/themes/cambridge-yle/index.d.ts.map +0 -1
- package/dist/components/themes/cambridge-yle/index.js.map +0 -1
- package/dist/components/themes/english-certification/EcAnswerTheQuestion.d.ts.map +0 -1
- package/dist/components/themes/english-certification/EcAnswerTheQuestion.js.map +0 -1
- package/dist/components/themes/english-certification/EcMatchByWritingAnswer.d.ts.map +0 -1
- package/dist/components/themes/english-certification/EcMatchByWritingAnswer.js.map +0 -1
- package/dist/components/themes/english-certification/EcWordFillParagraph.d.ts.map +0 -1
- package/dist/components/themes/english-certification/EcWordFillParagraph.js.map +0 -1
- package/dist/components/themes/english-certification/EcWordFillStructuredForm.d.ts.map +0 -1
- package/dist/components/themes/english-certification/EcWordFillStructuredForm.js.map +0 -1
- package/dist/components/themes/english-certification/EcWritingTask.d.ts.map +0 -1
- package/dist/components/themes/english-certification/EcWritingTask.js.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationAudioPlayer.d.ts.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationAudioPlayer.js.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationBrand.d.ts.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationBrand.js.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationExamLayout.d.ts.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationExamLayout.js.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationFlagButton.d.ts.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationFlagButton.js.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationFooterBar.d.ts.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationFooterBar.js.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationGroupedQuestion.d.ts.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationGroupedQuestion.js.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationHeader.d.ts.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationHeader.js.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationNavigationPanel.d.ts.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationNavigationPanel.js.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationOptionSelector.d.ts.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationOptionSelector.js.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationPassagePanel.d.ts.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationPassagePanel.js.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationQuestionCard.d.ts.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationQuestionCard.js.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationQuestionItem.d.ts.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationQuestionItem.js.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationQuestionRenderer.d.ts.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationQuestionRenderer.js.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationReadingSection.d.ts.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationReadingSection.js.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationSingleQuestion.d.ts.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationSingleQuestion.js.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationSingleQuestionList.d.ts.map +0 -1
- package/dist/components/themes/english-certification/EnglishCertificationSingleQuestionList.js.map +0 -1
- package/dist/components/themes/english-certification/english-certification-theme.d.ts.map +0 -1
- package/dist/components/themes/english-certification/english-certification-theme.js.map +0 -1
- package/dist/components/themes/english-certification/grouped-question-utils.d.ts.map +0 -1
- package/dist/components/themes/english-certification/grouped-question-utils.js.map +0 -1
- package/dist/components/themes/english-certification/index.d.ts.map +0 -1
- package/dist/components/themes/english-certification/index.js.map +0 -1
- package/dist/components/themes/index.d.ts.map +0 -1
- package/dist/components/themes/index.js.map +0 -1
- package/dist/components/themes/summer-sky/SummerSkyAudioPlayer.d.ts.map +0 -1
- package/dist/components/themes/summer-sky/SummerSkyAudioPlayer.js.map +0 -1
- package/dist/components/themes/summer-sky/SummerSkyLayout.d.ts.map +0 -1
- package/dist/components/themes/summer-sky/SummerSkyLayout.js.map +0 -1
- package/dist/components/themes/summer-sky/SummerSkySubmitModal.d.ts.map +0 -1
- package/dist/components/themes/summer-sky/SummerSkySubmitModal.js.map +0 -1
- package/dist/components/themes/summer-sky/SummerSkyWaitingRoom.d.ts.map +0 -1
- package/dist/components/themes/summer-sky/SummerSkyWaitingRoom.js.map +0 -1
- package/dist/components/themes/types.d.ts.map +0 -1
- package/dist/components/themes/types.js.map +0 -1
- package/dist/components/ui/alert-dialog.d.ts.map +0 -1
- package/dist/components/ui/alert-dialog.js.map +0 -1
- package/dist/components/ui/alert.d.ts.map +0 -1
- package/dist/components/ui/alert.js.map +0 -1
- package/dist/components/ui/avatar.d.ts.map +0 -1
- package/dist/components/ui/avatar.js.map +0 -1
- package/dist/components/ui/badge.d.ts.map +0 -1
- package/dist/components/ui/badge.js.map +0 -1
- package/dist/components/ui/button.d.ts.map +0 -1
- package/dist/components/ui/button.js.map +0 -1
- package/dist/components/ui/calendar.d.ts.map +0 -1
- package/dist/components/ui/calendar.js.map +0 -1
- package/dist/components/ui/card.d.ts.map +0 -1
- package/dist/components/ui/card.js.map +0 -1
- package/dist/components/ui/carousel.d.ts.map +0 -1
- package/dist/components/ui/carousel.js.map +0 -1
- package/dist/components/ui/checkbox.d.ts.map +0 -1
- package/dist/components/ui/checkbox.js.map +0 -1
- package/dist/components/ui/collapsible.d.ts.map +0 -1
- package/dist/components/ui/collapsible.js.map +0 -1
- package/dist/components/ui/command.d.ts.map +0 -1
- package/dist/components/ui/command.js.map +0 -1
- package/dist/components/ui/confirm-dialog.d.ts.map +0 -1
- package/dist/components/ui/confirm-dialog.js.map +0 -1
- package/dist/components/ui/dialog.d.ts.map +0 -1
- package/dist/components/ui/dialog.js.map +0 -1
- package/dist/components/ui/drawer.d.ts.map +0 -1
- package/dist/components/ui/drawer.js.map +0 -1
- package/dist/components/ui/dropdown-menu.d.ts.map +0 -1
- package/dist/components/ui/dropdown-menu.js.map +0 -1
- package/dist/components/ui/file-upload.d.ts.map +0 -1
- package/dist/components/ui/file-upload.js.map +0 -1
- package/dist/components/ui/form.d.ts.map +0 -1
- package/dist/components/ui/form.js.map +0 -1
- package/dist/components/ui/hover-card.d.ts.map +0 -1
- package/dist/components/ui/hover-card.js.map +0 -1
- package/dist/components/ui/image-preview.d.ts.map +0 -1
- package/dist/components/ui/image-preview.js.map +0 -1
- package/dist/components/ui/input.d.ts.map +0 -1
- package/dist/components/ui/input.js.map +0 -1
- package/dist/components/ui/label.d.ts.map +0 -1
- package/dist/components/ui/label.js.map +0 -1
- package/dist/components/ui/language-switcher.d.ts.map +0 -1
- package/dist/components/ui/language-switcher.js.map +0 -1
- package/dist/components/ui/multi-select.d.ts.map +0 -1
- package/dist/components/ui/multi-select.js.map +0 -1
- package/dist/components/ui/points-input.d.ts.map +0 -1
- package/dist/components/ui/points-input.js.map +0 -1
- package/dist/components/ui/popover.d.ts.map +0 -1
- package/dist/components/ui/popover.js.map +0 -1
- package/dist/components/ui/progress.d.ts.map +0 -1
- package/dist/components/ui/progress.js.map +0 -1
- package/dist/components/ui/radio-group.d.ts.map +0 -1
- package/dist/components/ui/radio-group.js.map +0 -1
- package/dist/components/ui/scroll-area.d.ts.map +0 -1
- package/dist/components/ui/scroll-area.js.map +0 -1
- package/dist/components/ui/select.d.ts.map +0 -1
- package/dist/components/ui/select.js.map +0 -1
- package/dist/components/ui/separator.d.ts.map +0 -1
- package/dist/components/ui/separator.js.map +0 -1
- package/dist/components/ui/sheet.d.ts.map +0 -1
- package/dist/components/ui/sheet.js.map +0 -1
- package/dist/components/ui/single-select.d.ts.map +0 -1
- package/dist/components/ui/single-select.js.map +0 -1
- package/dist/components/ui/skeleton.d.ts.map +0 -1
- package/dist/components/ui/skeleton.js.map +0 -1
- package/dist/components/ui/switch.d.ts.map +0 -1
- package/dist/components/ui/switch.js.map +0 -1
- package/dist/components/ui/table.d.ts.map +0 -1
- package/dist/components/ui/table.js.map +0 -1
- package/dist/components/ui/tabs.d.ts.map +0 -1
- package/dist/components/ui/tabs.js.map +0 -1
- package/dist/components/ui/textarea.d.ts.map +0 -1
- package/dist/components/ui/textarea.js.map +0 -1
- package/dist/components/ui/tooltip.d.ts.map +0 -1
- package/dist/components/ui/tooltip.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/mcp/config.d.ts.map +0 -1
- package/dist/mcp/config.js.map +0 -1
- package/dist/mcp/http-client.d.ts.map +0 -1
- package/dist/mcp/http-client.js.map +0 -1
- package/dist/mcp/index.d.ts.map +0 -1
- package/dist/mcp/index.js.map +0 -1
- package/dist/mcp/tools/_helpers.d.ts.map +0 -1
- package/dist/mcp/tools/_helpers.js.map +0 -1
- package/dist/mcp/tools/exams.d.ts.map +0 -1
- package/dist/mcp/tools/exams.js.map +0 -1
- package/dist/mcp/tools/index.d.ts.map +0 -1
- package/dist/mcp/tools/index.js.map +0 -1
- package/dist/mcp/tools/results.d.ts.map +0 -1
- package/dist/mcp/tools/results.js.map +0 -1
- package/dist/shared/constants/ApiConstant.d.ts.map +0 -1
- package/dist/shared/constants/ApiConstant.js.map +0 -1
- package/dist/shared/constants/QueryKeyConstant.d.ts.map +0 -1
- package/dist/shared/constants/QueryKeyConstant.js.map +0 -1
- package/dist/shared/constants/exam-level.enum.d.ts.map +0 -1
- package/dist/shared/constants/exam-level.enum.js.map +0 -1
- package/dist/shared/constants/landings/placement-test.constants.d.ts.map +0 -1
- package/dist/shared/constants/landings/placement-test.constants.js.map +0 -1
- package/dist/shared/constants/question-skills.d.ts.map +0 -1
- package/dist/shared/constants/question-skills.js.map +0 -1
- package/dist/shared/constants/routes.d.ts.map +0 -1
- package/dist/shared/constants/routes.js.map +0 -1
- package/dist/shared/index.d.ts.map +0 -1
- package/dist/shared/index.js.map +0 -1
- package/dist/shared/lib/hooks/index.d.ts.map +0 -1
- package/dist/shared/lib/hooks/index.js.map +0 -1
- package/dist/shared/lib/hooks/useAlertDialog.d.ts.map +0 -1
- package/dist/shared/lib/hooks/useAlertDialog.js.map +0 -1
- package/dist/shared/lib/hooks/useAudioPlayCounter.d.ts.map +0 -1
- package/dist/shared/lib/hooks/useAudioPlayCounter.js.map +0 -1
- package/dist/shared/lib/hooks/useAudioPreview.d.ts.map +0 -1
- package/dist/shared/lib/hooks/useAudioPreview.js.map +0 -1
- package/dist/shared/lib/hooks/useAudioUpload.d.ts.map +0 -1
- package/dist/shared/lib/hooks/useAudioUpload.js.map +0 -1
- package/dist/shared/lib/hooks/useConfirmDialog.d.ts.map +0 -1
- package/dist/shared/lib/hooks/useConfirmDialog.js.map +0 -1
- package/dist/shared/lib/hooks/useDebouncedCallback.d.ts.map +0 -1
- package/dist/shared/lib/hooks/useDebouncedCallback.js.map +0 -1
- package/dist/shared/lib/hooks/useDelayedAutoPlay.d.ts.map +0 -1
- package/dist/shared/lib/hooks/useDelayedAutoPlay.js.map +0 -1
- package/dist/shared/lib/hooks/useFileUpload.d.ts.map +0 -1
- package/dist/shared/lib/hooks/useFileUpload.js.map +0 -1
- package/dist/shared/lib/hooks/useImageUrl.d.ts.map +0 -1
- package/dist/shared/lib/hooks/useImageUrl.js.map +0 -1
- package/dist/shared/lib/hooks/usePresignedFileUrl.d.ts.map +0 -1
- package/dist/shared/lib/hooks/usePresignedFileUrl.js.map +0 -1
- package/dist/shared/lib/hooks/useReactHookForm.d.ts.map +0 -1
- package/dist/shared/lib/hooks/useReactHookForm.js.map +0 -1
- package/dist/shared/lib/hooks/useToast.d.ts.map +0 -1
- package/dist/shared/lib/hooks/useToast.js.map +0 -1
- package/dist/shared/lib/i18n/index.d.ts.map +0 -1
- package/dist/shared/lib/i18n/index.js.map +0 -1
- package/dist/shared/lib/i18n/messages/en/admin.d.ts.map +0 -1
- package/dist/shared/lib/i18n/messages/en/admin.js.map +0 -1
- package/dist/shared/lib/i18n/messages/en/auth.d.ts.map +0 -1
- package/dist/shared/lib/i18n/messages/en/auth.js.map +0 -1
- package/dist/shared/lib/i18n/messages/en/common.d.ts.map +0 -1
- package/dist/shared/lib/i18n/messages/en/common.js.map +0 -1
- package/dist/shared/lib/i18n/messages/en/file-upload.d.ts.map +0 -1
- package/dist/shared/lib/i18n/messages/en/file-upload.js.map +0 -1
- package/dist/shared/lib/i18n/messages/en/student.d.ts.map +0 -1
- package/dist/shared/lib/i18n/messages/en/student.js.map +0 -1
- package/dist/shared/lib/i18n/messages/en/terms.d.ts.map +0 -1
- package/dist/shared/lib/i18n/messages/en/terms.js.map +0 -1
- package/dist/shared/lib/i18n/messages/en.d.ts.map +0 -1
- package/dist/shared/lib/i18n/messages/en.js.map +0 -1
- package/dist/shared/lib/i18n/messages/vi/admin.d.ts.map +0 -1
- package/dist/shared/lib/i18n/messages/vi/admin.js.map +0 -1
- package/dist/shared/lib/i18n/messages/vi/auth.d.ts.map +0 -1
- package/dist/shared/lib/i18n/messages/vi/auth.js.map +0 -1
- package/dist/shared/lib/i18n/messages/vi/common.d.ts.map +0 -1
- package/dist/shared/lib/i18n/messages/vi/common.js.map +0 -1
- package/dist/shared/lib/i18n/messages/vi/file-upload.d.ts.map +0 -1
- package/dist/shared/lib/i18n/messages/vi/file-upload.js.map +0 -1
- package/dist/shared/lib/i18n/messages/vi/student.d.ts.map +0 -1
- package/dist/shared/lib/i18n/messages/vi/student.js.map +0 -1
- package/dist/shared/lib/i18n/messages/vi/terms.d.ts.map +0 -1
- package/dist/shared/lib/i18n/messages/vi/terms.js.map +0 -1
- package/dist/shared/lib/i18n/messages/vi.d.ts.map +0 -1
- package/dist/shared/lib/i18n/messages/vi.js.map +0 -1
- package/dist/shared/lib/i18n/types.d.ts.map +0 -1
- package/dist/shared/lib/i18n/types.js.map +0 -1
- package/dist/shared/lib/stores/examQuestionStore.d.ts.map +0 -1
- package/dist/shared/lib/stores/examQuestionStore.js.map +0 -1
- package/dist/shared/lib/stores/localeStore.d.ts.map +0 -1
- package/dist/shared/lib/stores/localeStore.js.map +0 -1
- package/dist/shared/lib/utils/public-page.d.ts.map +0 -1
- package/dist/shared/lib/utils/public-page.js.map +0 -1
- package/dist/shared/lib/utils/question-transform-types.d.ts.map +0 -1
- package/dist/shared/lib/utils/question-transform-types.js.map +0 -1
- package/dist/shared/lib/utils/question-transform.d.ts.map +0 -1
- package/dist/shared/lib/utils/question-transform.js.map +0 -1
- package/dist/shared/lib/utils.d.ts.map +0 -1
- package/dist/shared/lib/utils.js.map +0 -1
- package/dist/shared/lib/validation/choose-correct-answer.validation.d.ts.map +0 -1
- package/dist/shared/lib/validation/choose-correct-answer.validation.js.map +0 -1
- package/dist/shared/lib/validation/label-the-picture.validation.d.ts.map +0 -1
- package/dist/shared/lib/validation/label-the-picture.validation.js.map +0 -1
- package/dist/shared/lib/validation/listen-and-choose-from-answer-group.validation.d.ts.map +0 -1
- package/dist/shared/lib/validation/listen-and-choose-from-answer-group.validation.js.map +0 -1
- package/dist/shared/lib/validation/listen-and-choose-objects-in-scene.validation.d.ts.map +0 -1
- package/dist/shared/lib/validation/listen-and-choose-objects-in-scene.validation.js.map +0 -1
- package/dist/shared/lib/validation/listen-and-drag-objects-into-scene.validation.d.ts.map +0 -1
- package/dist/shared/lib/validation/listen-and-drag-objects-into-scene.validation.js.map +0 -1
- package/dist/shared/lib/validation/listen-and-speak-answer.validation.d.ts.map +0 -1
- package/dist/shared/lib/validation/listen-and-speak-answer.validation.js.map +0 -1
- package/dist/shared/lib/validation/listen-and-speak-compare-images.validation.d.ts.map +0 -1
- package/dist/shared/lib/validation/listen-and-speak-compare-images.validation.js.map +0 -1
- package/dist/shared/lib/validation/listen-and-speak-image-group.validation.d.ts.map +0 -1
- package/dist/shared/lib/validation/listen-and-speak-image-group.validation.js.map +0 -1
- package/dist/shared/lib/validation/listen-and-speak-info-exchange.validation.d.ts.map +0 -1
- package/dist/shared/lib/validation/listen-and-speak-info-exchange.validation.js.map +0 -1
- package/dist/shared/lib/validation/listen-and-speak-odd-one-out.validation.d.ts.map +0 -1
- package/dist/shared/lib/validation/listen-and-speak-odd-one-out.validation.js.map +0 -1
- package/dist/shared/lib/validation/listen-and-speak-question-list.validation.d.ts.map +0 -1
- package/dist/shared/lib/validation/listen-and-speak-question-list.validation.js.map +0 -1
- package/dist/shared/lib/validation/listen-and-speak-with-story-images.validation.d.ts.map +0 -1
- package/dist/shared/lib/validation/listen-and-speak-with-story-images.validation.js.map +0 -1
- package/dist/shared/lib/validation/look-picture-choose-correct-answer.validation.d.ts.map +0 -1
- package/dist/shared/lib/validation/look-picture-choose-correct-answer.validation.js.map +0 -1
- package/dist/shared/lib/validation/look-picture-fill-blank-choose-answer.validation.d.ts.map +0 -1
- package/dist/shared/lib/validation/look-picture-fill-blank-choose-answer.validation.js.map +0 -1
- package/dist/shared/lib/validation/read-and-color-objects.validation.d.ts.map +0 -1
- package/dist/shared/lib/validation/read-and-color-objects.validation.js.map +0 -1
- package/dist/shared/lib/validation/read-displayed-content.validation.d.ts.map +0 -1
- package/dist/shared/lib/validation/read-displayed-content.validation.js.map +0 -1
- package/dist/shared/lib/validation/speaking-conversation.validation.d.ts.map +0 -1
- package/dist/shared/lib/validation/speaking-conversation.validation.js.map +0 -1
- package/dist/shared/lib/validation/speaking-describe-image.validation.d.ts.map +0 -1
- package/dist/shared/lib/validation/speaking-describe-image.validation.js.map +0 -1
- package/dist/shared/lib/validation/spontaneous-qa.validation.d.ts.map +0 -1
- package/dist/shared/lib/validation/spontaneous-qa.validation.js.map +0 -1
- package/dist/shared/lib/validation/word-fill-paragraph-default.validation.d.ts.map +0 -1
- package/dist/shared/lib/validation/word-fill-paragraph-default.validation.js.map +0 -1
- package/dist/shared/lib/validation/word-fill-paragraph-with-options.validation.d.ts.map +0 -1
- package/dist/shared/lib/validation/word-fill-paragraph-with-options.validation.js.map +0 -1
- package/dist/shared/lib/validation/word-fill-paragraph.validation.d.ts.map +0 -1
- package/dist/shared/lib/validation/word-fill-paragraph.validation.js.map +0 -1
- package/dist/shared/lib/validation/word-ordering.validation.d.ts.map +0 -1
- package/dist/shared/lib/validation/word-ordering.validation.js.map +0 -1
- package/dist/shared/types/branch.types.d.ts.map +0 -1
- package/dist/shared/types/branch.types.js.map +0 -1
- package/dist/shared/types/common.types.d.ts.map +0 -1
- package/dist/shared/types/common.types.js.map +0 -1
- package/dist/shared/types/entities/exam-schedule.types.d.ts.map +0 -1
- package/dist/shared/types/entities/exam-schedule.types.js.map +0 -1
- package/dist/shared/types/entities/exam.types.d.ts.map +0 -1
- package/dist/shared/types/entities/exam.types.js.map +0 -1
- package/dist/shared/types/entities/question.types.d.ts.map +0 -1
- package/dist/shared/types/entities/question.types.js.map +0 -1
- package/dist/shared/types/entities/result.types.d.ts.map +0 -1
- package/dist/shared/types/entities/result.types.js.map +0 -1
- package/dist/shared/types/entities/user.types.d.ts.map +0 -1
- package/dist/shared/types/entities/user.types.js.map +0 -1
- package/dist/shared/types/exam-taking.types.d.ts.map +0 -1
- package/dist/shared/types/exam-taking.types.js.map +0 -1
- package/dist/shared/types/history.types.d.ts.map +0 -1
- package/dist/shared/types/history.types.js.map +0 -1
- package/dist/shared/types/index.d.ts.map +0 -1
- package/dist/shared/types/index.js.map +0 -1
- package/dist/shared/types/questions/choose-correct-adjective.d.ts.map +0 -1
- package/dist/shared/types/questions/choose-correct-adjective.js.map +0 -1
- package/dist/shared/types/questions/choose-the-correct-answer.d.ts.map +0 -1
- package/dist/shared/types/questions/choose-the-correct-answer.js.map +0 -1
- package/dist/shared/types/questions/fill-missing-words-in-grid.d.ts.map +0 -1
- package/dist/shared/types/questions/fill-missing-words-in-grid.js.map +0 -1
- package/dist/shared/types/questions/index.d.ts.map +0 -1
- package/dist/shared/types/questions/index.js.map +0 -1
- package/dist/shared/types/questions/listen-and-speak-answer.d.ts.map +0 -1
- package/dist/shared/types/questions/listen-and-speak-answer.js.map +0 -1
- package/dist/shared/types/questions/listen-and-speak-compare-images.d.ts.map +0 -1
- package/dist/shared/types/questions/listen-and-speak-compare-images.js.map +0 -1
- package/dist/shared/types/questions/listen-and-speak-image-group.d.ts.map +0 -1
- package/dist/shared/types/questions/listen-and-speak-image-group.js.map +0 -1
- package/dist/shared/types/questions/listen-and-speak-info-exchange.d.ts.map +0 -1
- package/dist/shared/types/questions/listen-and-speak-info-exchange.js.map +0 -1
- package/dist/shared/types/questions/listen-and-speak-odd-one-out.d.ts.map +0 -1
- package/dist/shared/types/questions/listen-and-speak-odd-one-out.js.map +0 -1
- package/dist/shared/types/questions/listen-and-speak-question-list.d.ts.map +0 -1
- package/dist/shared/types/questions/listen-and-speak-question-list.js.map +0 -1
- package/dist/shared/types/questions/listen-and-speak-with-story-images.d.ts.map +0 -1
- package/dist/shared/types/questions/listen-and-speak-with-story-images.js.map +0 -1
- package/dist/shared/types/questions/look-picture-choose-correct-answer.d.ts.map +0 -1
- package/dist/shared/types/questions/look-picture-choose-correct-answer.js.map +0 -1
- package/dist/shared/types/questions/look-picture-fill-blank-choose-answer.d.ts.map +0 -1
- package/dist/shared/types/questions/look-picture-fill-blank-choose-answer.js.map +0 -1
- package/dist/shared/types/questions/look-picture-fill-word-hint.d.ts.map +0 -1
- package/dist/shared/types/questions/look-picture-fill-word-hint.js.map +0 -1
- package/dist/shared/types/questions/read-displayed-content.d.ts.map +0 -1
- package/dist/shared/types/questions/read-displayed-content.js.map +0 -1
- package/dist/shared/types/questions/speaking-conversation.d.ts.map +0 -1
- package/dist/shared/types/questions/speaking-conversation.js.map +0 -1
- package/dist/shared/types/questions/speaking-describe-image.d.ts.map +0 -1
- package/dist/shared/types/questions/speaking-describe-image.js.map +0 -1
- package/dist/shared/types/questions/spontaneous-qa.d.ts.map +0 -1
- package/dist/shared/types/questions/spontaneous-qa.js.map +0 -1
- package/dist/shared/types/questions/write-correct-verb-form.d.ts.map +0 -1
- package/dist/shared/types/questions/write-correct-verb-form.js.map +0 -1
- package/dist/shared/types/role.types.d.ts.map +0 -1
- package/dist/shared/types/role.types.js.map +0 -1
- package/dist/shared/types/structure-management.d.ts.map +0 -1
- package/dist/shared/types/structure-management.js.map +0 -1
- package/dist/shared/types/student.types.d.ts.map +0 -1
- package/dist/shared/types/student.types.js.map +0 -1
- package/dist/shared/types/teacher-dashboard-rooms.d.ts.map +0 -1
- package/dist/shared/types/teacher-dashboard-rooms.js.map +0 -1
|
@@ -1,2105 +1 @@
|
|
|
1
|
-
const admin = {
|
|
2
|
-
// User management
|
|
3
|
-
'admin.user.create.success': 'User created successfully!',
|
|
4
|
-
'admin.user.update.success': 'User updated successfully!',
|
|
5
|
-
'admin.user.update.error': 'An error occurred while updating the user!',
|
|
6
|
-
'admin.user.delete.success': 'User deleted successfully!',
|
|
7
|
-
'admin.user.delete.error': 'An error occurred while deleting the user!',
|
|
8
|
-
// Exam management
|
|
9
|
-
'admin.exam.create.error': 'Unable to create exam. Please try again!',
|
|
10
|
-
'admin.exam.update.error': 'Unable to update exam. Please try again!',
|
|
11
|
-
'admin.exam.delete.error': 'Unable to delete exam. Please try again!',
|
|
12
|
-
'admin.exam.template.update.error': 'Unable to update template. Please try again!',
|
|
13
|
-
'admin.exam.copy.success': 'Exam copied successfully: {name} ({count} questions)',
|
|
14
|
-
'admin.exam.copy.error': 'Unable to copy exam. Please try again!',
|
|
15
|
-
'admin.exam.toggle.activated': 'Exam "{name}" activated!',
|
|
16
|
-
'admin.exam.toggle.deactivated': 'Exam "{name}" deactivated!',
|
|
17
|
-
'admin.exam.toggle.error': 'Unable to change exam status. Please try again!',
|
|
18
|
-
'admin.exam.variants.delete.success': 'Successfully deleted {count} shuffled variants!',
|
|
19
|
-
'admin.exam.variants.delete.empty': 'No shuffled variants to delete.',
|
|
20
|
-
'admin.exam.variants.delete.error': 'Unable to delete shuffled variants. Please try again!',
|
|
21
|
-
// Question management
|
|
22
|
-
'admin.question.batchCreate.partial': 'Created {successCount}/{total} questions successfully. {errorCount} failed.',
|
|
23
|
-
'admin.question.batchCreate.itemError': 'Question {index}: {error}',
|
|
24
|
-
'admin.question.batchCreate.error': 'Error creating questions: {message}',
|
|
25
|
-
// Question bank
|
|
26
|
-
'admin.questionBank.update.success': 'Question updated successfully!',
|
|
27
|
-
'admin.questionBank.update.error': 'Unable to update question. Please try again!',
|
|
28
|
-
'admin.questionBank.delete.success': 'Question deleted successfully!',
|
|
29
|
-
'admin.questionBank.delete.error': 'Unable to delete question. Please try again!',
|
|
30
|
-
'admin.questionBank.create.missingInfo': 'Missing information',
|
|
31
|
-
'admin.questionBank.create.success': 'Success!',
|
|
32
|
-
'admin.questionBank.create.error': 'Error',
|
|
33
|
-
'admin.questionBank.create.preview': 'Preview',
|
|
34
|
-
// Question bank - Page
|
|
35
|
-
'admin.questionBank.page.title': 'Question Bank',
|
|
36
|
-
'admin.questionBank.page.subtitle': 'Manage and organize questions for exams',
|
|
37
|
-
'admin.questionBank.btn.add': 'Add question',
|
|
38
|
-
'admin.questionBank.fetch.error': 'Error',
|
|
39
|
-
'admin.questionBank.fetch.errorDesc': 'Unable to load question list',
|
|
40
|
-
'admin.questionBank.delete.successMsg': 'Question deleted',
|
|
41
|
-
'admin.questionBank.delete.successDesc': 'Deleted question {code}',
|
|
42
|
-
'admin.questionBank.delete.errorMsg': 'Error',
|
|
43
|
-
'admin.questionBank.delete.errorDesc': 'Unable to delete question',
|
|
44
|
-
'admin.questionBank.update.successMsg': 'Updated',
|
|
45
|
-
'admin.questionBank.update.successDesc': 'Updated question {code}!',
|
|
46
|
-
'admin.questionBank.update.errorMsg': 'Error',
|
|
47
|
-
'admin.questionBank.update.errorDesc': 'Unable to update question',
|
|
48
|
-
'admin.questionBank.create.successMsg': 'Question created',
|
|
49
|
-
'admin.questionBank.create.successDesc': 'Successfully created question {code}!',
|
|
50
|
-
// Question bank - Statistics
|
|
51
|
-
'admin.questionBank.stats.totalQuestions': 'Total Questions',
|
|
52
|
-
'admin.questionBank.stats.inBank': 'In question bank',
|
|
53
|
-
'admin.questionBank.stats.totalUsage': 'Usage Count',
|
|
54
|
-
'admin.questionBank.stats.inExams': 'In exams',
|
|
55
|
-
'admin.questionBank.stats.avgPoints': 'Avg Points',
|
|
56
|
-
'admin.questionBank.stats.avgScore': 'Average score',
|
|
57
|
-
'admin.questionBank.stats.difficultyDistribution': 'Difficulty Distribution',
|
|
58
|
-
'admin.questionBank.stats.questions': 'questions',
|
|
59
|
-
// Question bank - Difficulty
|
|
60
|
-
'admin.questionBank.difficulty.easy': 'Easy',
|
|
61
|
-
'admin.questionBank.difficulty.medium': 'Medium',
|
|
62
|
-
'admin.questionBank.difficulty.hard': 'Hard',
|
|
63
|
-
// Question bank - Table
|
|
64
|
-
'admin.questionBank.table.title': 'Question List',
|
|
65
|
-
'admin.questionBank.table.loading': 'Loading...',
|
|
66
|
-
'admin.questionBank.table.showing': 'Showing {count} / {total} questions',
|
|
67
|
-
'admin.questionBank.table.empty': 'No questions found',
|
|
68
|
-
'admin.questionBank.table.loadingData': 'Loading data...',
|
|
69
|
-
'admin.questionBank.table.created': 'Created: {date}',
|
|
70
|
-
'admin.questionBank.table.pointsUnit': 'pts',
|
|
71
|
-
'admin.questionBank.table.usageUnit': 'times',
|
|
72
|
-
// Question bank - Filter
|
|
73
|
-
'admin.questionBank.filter.searchPlaceholder': 'Search by content...',
|
|
74
|
-
'admin.questionBank.filter.typePlaceholder': 'Question type',
|
|
75
|
-
'admin.questionBank.filter.typeAll': 'All types',
|
|
76
|
-
'admin.questionBank.filter.difficultyPlaceholder': 'Difficulty',
|
|
77
|
-
'admin.questionBank.filter.difficultyAll': 'All difficulties',
|
|
78
|
-
'admin.questionBank.filter.skillPlaceholder': 'Skill',
|
|
79
|
-
'admin.questionBank.filter.skillAll': 'All skills',
|
|
80
|
-
'admin.questionBank.filter.clear': 'Clear filters',
|
|
81
|
-
// Question bank - Table columns
|
|
82
|
-
'admin.questionBank.col.code': 'CODE',
|
|
83
|
-
'admin.questionBank.col.title': 'Title',
|
|
84
|
-
'admin.questionBank.col.type': 'TYPE',
|
|
85
|
-
'admin.questionBank.col.difficulty': 'DIFFICULTY',
|
|
86
|
-
'admin.questionBank.col.skill': 'SKILL',
|
|
87
|
-
'admin.questionBank.col.points': 'POINTS',
|
|
88
|
-
'admin.questionBank.col.usage': 'USAGE',
|
|
89
|
-
'admin.questionBank.col.actions': 'ACTIONS',
|
|
90
|
-
// Question bank - Action buttons
|
|
91
|
-
'admin.questionBank.action.view': 'View details',
|
|
92
|
-
'admin.questionBank.action.edit': 'Edit',
|
|
93
|
-
'admin.questionBank.action.delete': 'Delete',
|
|
94
|
-
// Question bank - Add Dialog
|
|
95
|
-
'admin.questionBank.dialog.add.title': 'Add New Question',
|
|
96
|
-
'admin.questionBank.dialog.add.section1': 'Basic Information',
|
|
97
|
-
'admin.questionBank.dialog.add.section2': 'Question Type',
|
|
98
|
-
'admin.questionBank.dialog.add.section3': 'Question Content',
|
|
99
|
-
'admin.questionBank.dialog.add.code': 'Question Code',
|
|
100
|
-
'admin.questionBank.dialog.add.codePlaceholder': 'E.g.: QB001',
|
|
101
|
-
'admin.questionBank.dialog.add.titleLabel': 'Title',
|
|
102
|
-
'admin.questionBank.dialog.add.titlePlaceholder': 'Brief description of the question',
|
|
103
|
-
'admin.questionBank.dialog.add.difficulty': 'Difficulty Level',
|
|
104
|
-
'admin.questionBank.dialog.add.skill': 'Skill',
|
|
105
|
-
'admin.questionBank.dialog.add.typePlaceholder': 'Select question type...',
|
|
106
|
-
'admin.questionBank.dialog.add.typeNoOptions': 'No question types for {skill}',
|
|
107
|
-
'admin.questionBank.dialog.add.noTypeSelected': 'No question type selected',
|
|
108
|
-
'admin.questionBank.dialog.add.selectTypeHint': 'Please select a question type in step 2',
|
|
109
|
-
'admin.questionBank.dialog.add.required': 'Required',
|
|
110
|
-
'admin.questionBank.dialog.add.cancel': 'Cancel',
|
|
111
|
-
'admin.questionBank.dialog.add.saving': 'Saving...',
|
|
112
|
-
'admin.questionBank.dialog.add.save': 'Add question',
|
|
113
|
-
'admin.questionBank.dialog.add.codeError': 'Please enter question code',
|
|
114
|
-
'admin.questionBank.dialog.add.titleError': 'Please enter title',
|
|
115
|
-
'admin.questionBank.dialog.add.typeError': 'Please select question type',
|
|
116
|
-
// Question bank - Edit Dialog
|
|
117
|
-
'admin.questionBank.dialog.edit.title': 'Edit Question',
|
|
118
|
-
'admin.questionBank.dialog.edit.section1': 'Basic Information',
|
|
119
|
-
'admin.questionBank.dialog.edit.section2': 'Question Type',
|
|
120
|
-
'admin.questionBank.dialog.edit.section3': 'Question Content',
|
|
121
|
-
'admin.questionBank.dialog.edit.code': 'Question Code',
|
|
122
|
-
'admin.questionBank.dialog.edit.codePlaceholder': 'Enter question code',
|
|
123
|
-
'admin.questionBank.dialog.edit.titleLabel': 'Title',
|
|
124
|
-
'admin.questionBank.dialog.edit.titlePlaceholder': 'Brief description of the question',
|
|
125
|
-
'admin.questionBank.dialog.edit.difficulty': 'Difficulty Level',
|
|
126
|
-
'admin.questionBank.dialog.edit.skill': 'Skill',
|
|
127
|
-
'admin.questionBank.dialog.edit.unchangeable': '(Cannot be changed)',
|
|
128
|
-
'admin.questionBank.dialog.edit.required': 'Required',
|
|
129
|
-
'admin.questionBank.dialog.edit.cancel': 'Cancel',
|
|
130
|
-
'admin.questionBank.dialog.edit.saving': 'Saving...',
|
|
131
|
-
'admin.questionBank.dialog.edit.save': 'Save changes',
|
|
132
|
-
'admin.questionBank.dialog.edit.codeError': 'Please enter question code',
|
|
133
|
-
'admin.questionBank.dialog.edit.titleError': 'Please enter title',
|
|
134
|
-
// Question bank - Delete Dialog
|
|
135
|
-
'admin.questionBank.dialog.delete.title': 'Confirm Delete Question',
|
|
136
|
-
'admin.questionBank.dialog.delete.message': 'Are you sure you want to delete question',
|
|
137
|
-
'admin.questionBank.dialog.delete.warning': 'This action cannot be undone.',
|
|
138
|
-
'admin.questionBank.dialog.delete.cancel': 'Cancel',
|
|
139
|
-
'admin.questionBank.dialog.delete.deleting': 'Deleting...',
|
|
140
|
-
'admin.questionBank.dialog.delete.confirm': 'Delete question',
|
|
141
|
-
// Question bank - View Dialog
|
|
142
|
-
'admin.questionBank.dialog.view.title': 'Question Details',
|
|
143
|
-
'admin.questionBank.dialog.view.points': 'points',
|
|
144
|
-
'admin.questionBank.dialog.view.usage': 'Used {count} times',
|
|
145
|
-
'admin.questionBank.dialog.view.preview': 'Question Preview',
|
|
146
|
-
'admin.questionBank.dialog.view.explanation': 'Answer Explanation',
|
|
147
|
-
// Question bank - Create Page
|
|
148
|
-
'admin.questionBank.createPage.title': 'Create New Question',
|
|
149
|
-
'admin.questionBank.createPage.subtitle': 'Add question to the Bank for reuse in exam sets',
|
|
150
|
-
'admin.questionBank.createPage.breadcrumb.list': 'Question Bank',
|
|
151
|
-
'admin.questionBank.createPage.breadcrumb.create': 'Create New',
|
|
152
|
-
'admin.questionBank.createPage.infoTitle': 'Creating question type: {type}',
|
|
153
|
-
'admin.questionBank.createPage.infoDesc': 'Fill in the complete question information below. You can preview the question before saving.',
|
|
154
|
-
'admin.questionBank.createPage.loading': 'Loading...',
|
|
155
|
-
'admin.questionBank.createPage.back': 'Go back',
|
|
156
|
-
'admin.questionBank.createPage.preview': 'Preview',
|
|
157
|
-
'admin.questionBank.createPage.saving': 'Saving...',
|
|
158
|
-
'admin.questionBank.createPage.save': 'Save question',
|
|
159
|
-
'admin.questionBank.createPage.cancelTitle': 'Cancel question creation?',
|
|
160
|
-
'admin.questionBank.createPage.cancelMessage': 'You have unsaved changes. If you cancel, all information will be lost. Are you sure you want to cancel?',
|
|
161
|
-
'admin.questionBank.createPage.continueEditing': 'Continue editing',
|
|
162
|
-
'admin.questionBank.createPage.cancelAndExit': 'Cancel and exit',
|
|
163
|
-
'admin.questionBank.createPage.missingInfoDesc': 'Please fill in all question information',
|
|
164
|
-
'admin.questionBank.createPage.savedDesc': 'Saved question "{title}" to the bank',
|
|
165
|
-
'admin.questionBank.createPage.saveErrorDesc': 'Unable to save question. Please try again.',
|
|
166
|
-
'admin.questionBank.createPage.previewDesc': 'Preview feature is under development',
|
|
167
|
-
// Schedule management
|
|
168
|
-
'admin.schedule.update.success': 'Schedule updated successfully!',
|
|
169
|
-
'admin.schedule.delete.success': 'Deleted schedule {id}',
|
|
170
|
-
// Schedule page
|
|
171
|
-
'admin.schedules.title': 'Schedule Management',
|
|
172
|
-
'admin.schedules.subtitle': 'Schedule and manage exam times for contests',
|
|
173
|
-
'admin.schedules.viewCalendar': 'Calendar',
|
|
174
|
-
'admin.schedules.viewList': 'List',
|
|
175
|
-
// Schedule stats
|
|
176
|
-
'admin.schedules.stats.totalSchedules': 'Total Schedules',
|
|
177
|
-
'admin.schedules.stats.totalSchedulesDesc': 'All exam schedules',
|
|
178
|
-
'admin.schedules.stats.confirmed': 'Confirmed',
|
|
179
|
-
'admin.schedules.stats.confirmedDesc': 'Schedules ready',
|
|
180
|
-
'admin.schedules.stats.totalStudents': 'Total Students',
|
|
181
|
-
'admin.schedules.stats.totalStudentsDesc': 'Assigned to schedules',
|
|
182
|
-
// Schedule filters
|
|
183
|
-
'admin.schedules.filters.searchPlaceholder': 'Search schedules...',
|
|
184
|
-
'admin.schedules.filters.skill': 'Skill',
|
|
185
|
-
'admin.schedules.filters.allSkills': 'All skills',
|
|
186
|
-
'admin.schedules.filters.status': 'Status',
|
|
187
|
-
'admin.schedules.filters.allStatuses': 'All statuses',
|
|
188
|
-
'admin.schedules.filters.statusOpen': 'Open',
|
|
189
|
-
'admin.schedules.filters.statusLocked': 'Locked',
|
|
190
|
-
'admin.schedules.filters.clear': 'Clear filters',
|
|
191
|
-
// Schedule calendar
|
|
192
|
-
'admin.schedules.calendar.today': 'Today',
|
|
193
|
-
'admin.schedules.calendar.daySun': 'Sun',
|
|
194
|
-
'admin.schedules.calendar.dayMon': 'Mon',
|
|
195
|
-
'admin.schedules.calendar.dayTue': 'Tue',
|
|
196
|
-
'admin.schedules.calendar.dayWed': 'Wed',
|
|
197
|
-
'admin.schedules.calendar.dayThu': 'Thu',
|
|
198
|
-
'admin.schedules.calendar.dayFri': 'Fri',
|
|
199
|
-
'admin.schedules.calendar.daySat': 'Sat',
|
|
200
|
-
'admin.schedules.calendar.loading': 'Loading schedules...',
|
|
201
|
-
'admin.schedules.calendar.noLimit': 'No limit',
|
|
202
|
-
// Schedule list
|
|
203
|
-
'admin.schedules.list.title': 'Schedule List',
|
|
204
|
-
'admin.schedules.list.loading': 'Loading...',
|
|
205
|
-
'admin.schedules.list.loadingList': 'Loading schedule list...',
|
|
206
|
-
'admin.schedules.list.showing': 'Showing {current} / {total} schedules',
|
|
207
|
-
'admin.schedules.list.empty': 'No schedules found',
|
|
208
|
-
'admin.schedules.list.locked': 'Locked',
|
|
209
|
-
'admin.schedules.list.open': 'Open',
|
|
210
|
-
'admin.schedules.list.contest': 'Contest:',
|
|
211
|
-
'admin.schedules.list.exam': 'Exam:',
|
|
212
|
-
'admin.schedules.list.startTime': 'Start:',
|
|
213
|
-
'admin.schedules.list.endTime': 'End:',
|
|
214
|
-
'admin.schedules.list.noLimit': 'No limit',
|
|
215
|
-
'admin.schedules.list.locationUnknown': 'Not specified',
|
|
216
|
-
'admin.schedules.list.noSupervisor': 'Not assigned',
|
|
217
|
-
'admin.schedules.list.participants': '{count} participants',
|
|
218
|
-
'admin.schedules.list.page': 'Page {current} / {total}',
|
|
219
|
-
'admin.schedules.list.prev': 'Previous',
|
|
220
|
-
'admin.schedules.list.next': 'Next',
|
|
221
|
-
// Schedule dialogs (calendar & list view)
|
|
222
|
-
'admin.schedules.dialog.detailTitle': 'Schedule Details',
|
|
223
|
-
'admin.schedules.dialog.room': 'Exam Room',
|
|
224
|
-
'admin.schedules.dialog.contest': 'Contest',
|
|
225
|
-
'admin.schedules.dialog.exam': 'Exam',
|
|
226
|
-
'admin.schedules.dialog.startTime': 'Start Time',
|
|
227
|
-
'admin.schedules.dialog.endTime': 'End Time',
|
|
228
|
-
'admin.schedules.dialog.duration': 'Duration',
|
|
229
|
-
'admin.schedules.dialog.status': 'Status',
|
|
230
|
-
'admin.schedules.dialog.participantCount': 'Participants',
|
|
231
|
-
'admin.schedules.dialog.participants': '{count} participants',
|
|
232
|
-
'admin.schedules.dialog.notAssigned': 'Not assigned',
|
|
233
|
-
'admin.schedules.dialog.notSet': 'Not specified',
|
|
234
|
-
'admin.schedules.dialog.noLimit': 'No limit',
|
|
235
|
-
'admin.schedules.dialog.locked': 'Locked',
|
|
236
|
-
'admin.schedules.dialog.open': 'Open',
|
|
237
|
-
'admin.schedules.dialog.durationMinutes': '{duration} minutes',
|
|
238
|
-
'admin.schedules.dialog.location': 'Location',
|
|
239
|
-
'admin.schedules.dialog.supervisor': 'Supervisor',
|
|
240
|
-
'admin.schedules.dialog.noSupervisor': 'Not assigned',
|
|
241
|
-
// Schedule view dialog (ExamSchedule detail)
|
|
242
|
-
'admin.schedules.view.title': 'Schedule Details',
|
|
243
|
-
'admin.schedules.view.contest': 'Contest',
|
|
244
|
-
'admin.schedules.view.skill': 'Skill',
|
|
245
|
-
'admin.schedules.view.status': 'Status',
|
|
246
|
-
'admin.schedules.view.examDate': 'Exam Date',
|
|
247
|
-
'admin.schedules.view.startTime': 'Start Time',
|
|
248
|
-
'admin.schedules.view.endTime': 'End Time',
|
|
249
|
-
'admin.schedules.view.location': 'Location',
|
|
250
|
-
'admin.schedules.view.supervisor': 'Supervisor',
|
|
251
|
-
'admin.schedules.view.studentCount': 'Student Count',
|
|
252
|
-
'admin.schedules.view.duration': 'Duration',
|
|
253
|
-
'admin.schedules.view.durationMinutes': '{duration} minutes',
|
|
254
|
-
// Schedule edit dialog
|
|
255
|
-
'admin.schedules.edit.title': 'Edit Schedule',
|
|
256
|
-
'admin.schedules.edit.contest': 'Contest',
|
|
257
|
-
'admin.schedules.edit.skill': 'Skill',
|
|
258
|
-
'admin.schedules.edit.skillPlaceholder': 'Select skill',
|
|
259
|
-
'admin.schedules.edit.examDate': 'Exam Date',
|
|
260
|
-
'admin.schedules.edit.startTime': 'Start Time',
|
|
261
|
-
'admin.schedules.edit.endTime': 'End Time',
|
|
262
|
-
'admin.schedules.edit.room': 'Exam Room',
|
|
263
|
-
'admin.schedules.edit.roomPlaceholder': 'Select room',
|
|
264
|
-
'admin.schedules.edit.invigilator': 'Invigilator',
|
|
265
|
-
'admin.schedules.edit.invigilatorPlaceholder': 'Select invigilator',
|
|
266
|
-
'admin.schedules.edit.capacity': 'Capacity',
|
|
267
|
-
'admin.schedules.edit.status': 'Status',
|
|
268
|
-
'admin.schedules.edit.statusPlaceholder': 'Select status',
|
|
269
|
-
'admin.schedules.edit.location': 'Location',
|
|
270
|
-
'admin.schedules.edit.locationPlaceholder': 'Enter location (e.g., Floor 1, Building A)',
|
|
271
|
-
'admin.schedules.edit.notes': 'Notes',
|
|
272
|
-
'admin.schedules.edit.notesPlaceholder': 'Enter notes about the schedule (optional)',
|
|
273
|
-
'admin.schedules.edit.cancel': 'Cancel',
|
|
274
|
-
'admin.schedules.edit.save': 'Save Changes',
|
|
275
|
-
// Schedule delete dialog
|
|
276
|
-
'admin.schedules.delete.title': 'Confirm Delete Schedule',
|
|
277
|
-
'admin.schedules.delete.message': 'Are you sure you want to delete schedule',
|
|
278
|
-
'admin.schedules.delete.warning': 'This action cannot be undone.',
|
|
279
|
-
'admin.schedules.delete.cancel': 'Cancel',
|
|
280
|
-
'admin.schedules.delete.confirm': 'Delete Schedule',
|
|
281
|
-
// Schedule utils
|
|
282
|
-
'admin.schedules.utils.notSet': 'Not set',
|
|
283
|
-
'admin.schedules.utils.noLimit': 'No limit',
|
|
284
|
-
'admin.schedules.utils.statusDraft': 'Draft',
|
|
285
|
-
'admin.schedules.utils.statusConfirmed': 'Confirmed',
|
|
286
|
-
'admin.schedules.utils.statusInProgress': 'In Progress',
|
|
287
|
-
'admin.schedules.utils.statusCompleted': 'Completed',
|
|
288
|
-
'admin.schedules.utils.statusCancelled': 'Cancelled',
|
|
289
|
-
// Reports
|
|
290
|
-
'admin.report.exam.loadError': 'Unable to load exam report data',
|
|
291
|
-
'admin.report.exam.exportError': 'Unable to export report',
|
|
292
|
-
'admin.report.room.loadError': 'Unable to load room report data',
|
|
293
|
-
'admin.report.room.exportSuccess': 'Exported {format} report successfully',
|
|
294
|
-
'admin.report.room.exportError': 'Unable to export report',
|
|
295
|
-
'admin.report.branch.loadError': 'Unable to load branch report data',
|
|
296
|
-
'admin.report.branch.exportError': 'Unable to export report',
|
|
297
|
-
// User management extras
|
|
298
|
-
'admin.user.resetPassword.success': 'Password reset for {name}!',
|
|
299
|
-
'admin.user.resetPassword.error': 'An error occurred while resetting the password!',
|
|
300
|
-
'admin.user.lock.success': 'Account {name} has been locked',
|
|
301
|
-
'admin.user.unlock.success': 'Account {name} has been unlocked',
|
|
302
|
-
'admin.user.toggleStatus.error': 'An error occurred while changing account status!',
|
|
303
|
-
'admin.user.export.success': 'Excel file exported successfully!',
|
|
304
|
-
'admin.user.export.error': 'An error occurred while exporting the Excel file!',
|
|
305
|
-
'admin.user.syncEBM.success': 'EBM sync successful!',
|
|
306
|
-
'admin.user.syncEBM.error': 'An error occurred while syncing EBM!',
|
|
307
|
-
// Users page — page header
|
|
308
|
-
'admin.users.title': 'User Management',
|
|
309
|
-
'admin.users.subtitle': 'Manage Admin, Teacher and Student accounts',
|
|
310
|
-
// Users page — table
|
|
311
|
-
'admin.users.table.title': 'User List',
|
|
312
|
-
'admin.users.table.loading': 'Loading data...',
|
|
313
|
-
'admin.users.table.showing': 'Showing {count} / {total} users',
|
|
314
|
-
'admin.users.table.empty': 'No users found',
|
|
315
|
-
'admin.users.table.neverLoggedIn': 'Never logged in',
|
|
316
|
-
'admin.users.table.exportExcel': 'Export Excel',
|
|
317
|
-
'admin.users.table.syncEBM': 'Sync EBM',
|
|
318
|
-
'admin.users.table.addUser': 'Add User',
|
|
319
|
-
// Users page — columns
|
|
320
|
-
'admin.users.col.userInfo': 'USER INFO',
|
|
321
|
-
'admin.users.col.branch': 'BRANCH',
|
|
322
|
-
'admin.users.col.contact': 'CONTACT',
|
|
323
|
-
'admin.users.col.role': 'ROLE',
|
|
324
|
-
'admin.users.col.source': 'SOURCE',
|
|
325
|
-
'admin.users.col.status': 'STATUS',
|
|
326
|
-
'admin.users.col.lastLogin': 'LAST LOGIN',
|
|
327
|
-
'admin.users.col.actions': 'ACTIONS',
|
|
328
|
-
// Users page — filters
|
|
329
|
-
'admin.users.filter.searchPlaceholder': 'Search by email, username, phone...',
|
|
330
|
-
'admin.users.filter.allRoles': 'All roles',
|
|
331
|
-
'admin.users.filter.allStatuses': 'All statuses',
|
|
332
|
-
'admin.users.filter.active': 'Active',
|
|
333
|
-
'admin.users.filter.inactive': 'Inactive',
|
|
334
|
-
'admin.users.filter.clearFilters': 'Clear filters',
|
|
335
|
-
'admin.users.filter.searchLabel': 'Search:',
|
|
336
|
-
'admin.users.filter.roleLabel': 'Role:',
|
|
337
|
-
'admin.users.filter.statusLabel': 'Status:',
|
|
338
|
-
// Users page — role labels
|
|
339
|
-
'admin.users.role.systemAdmin': 'System Admin',
|
|
340
|
-
'admin.users.role.admin': 'Admin',
|
|
341
|
-
'admin.users.role.teacher': 'Teacher',
|
|
342
|
-
'admin.users.role.student': 'Student',
|
|
343
|
-
// Users page — row actions
|
|
344
|
-
'admin.users.action.view': 'View details',
|
|
345
|
-
'admin.users.action.viewDetail': 'View user detail page',
|
|
346
|
-
'admin.users.action.edit': 'Edit',
|
|
347
|
-
'admin.users.action.resetPassword': 'Reset password',
|
|
348
|
-
'admin.users.action.lock': 'Lock account',
|
|
349
|
-
'admin.users.action.unlock': 'Unlock account',
|
|
350
|
-
'admin.users.action.delete': 'Delete user',
|
|
351
|
-
// Users page — form fields (shared between Add & Edit)
|
|
352
|
-
'admin.users.field.branch': 'Branch',
|
|
353
|
-
'admin.users.field.branchPlaceholder': 'Search and select branch...',
|
|
354
|
-
'admin.users.field.fullName': 'Full name',
|
|
355
|
-
'admin.users.field.fullNamePlaceholder': 'Enter full name...',
|
|
356
|
-
'admin.users.field.email': 'Email',
|
|
357
|
-
'admin.users.field.emailPlaceholder': 'Enter email...',
|
|
358
|
-
'admin.users.field.phone': 'Phone number',
|
|
359
|
-
'admin.users.field.phonePlaceholder': 'Enter phone number...',
|
|
360
|
-
'admin.users.field.address': 'Address',
|
|
361
|
-
'admin.users.field.addressPlaceholder': 'Enter address...',
|
|
362
|
-
'admin.users.field.usernamePlaceholder': 'Enter username...',
|
|
363
|
-
'admin.users.field.usernameHint': 'Start with a letter, only letters, numbers and _ allowed',
|
|
364
|
-
'admin.users.field.password': 'Password',
|
|
365
|
-
'admin.users.field.passwordPlaceholder': 'Enter password...',
|
|
366
|
-
'admin.users.field.passwordHint': 'At least 8 characters including uppercase, lowercase, number and special character',
|
|
367
|
-
'admin.users.field.role': 'Role',
|
|
368
|
-
'admin.users.field.rolePlaceholder': 'Select role...',
|
|
369
|
-
'admin.users.field.activeStatus': 'Account status',
|
|
370
|
-
'admin.users.field.activeHint': 'Account will be active immediately after creation',
|
|
371
|
-
'admin.users.field.inactiveHint': 'Account will be locked, can be activated later',
|
|
372
|
-
'admin.users.field.activeStatusDesc': 'Account is active',
|
|
373
|
-
'admin.users.field.inactiveStatusDesc': 'Account is locked',
|
|
374
|
-
'admin.users.field.registrationSource': 'Registration source',
|
|
375
|
-
'admin.users.field.createdAt': 'Created at',
|
|
376
|
-
'admin.users.field.updatedAt': 'Last updated',
|
|
377
|
-
'admin.users.field.status': 'Status',
|
|
378
|
-
'admin.users.field.dateOfBirth': 'Date of birth',
|
|
379
|
-
'admin.users.field.dateOfBirthPlaceholder': 'Select date of birth...',
|
|
380
|
-
// Users page — add dialog
|
|
381
|
-
'admin.users.add.title': 'Add New User',
|
|
382
|
-
'admin.users.add.desc': 'Fill in the information to create a new user account',
|
|
383
|
-
'admin.users.add.submitting': 'Creating...',
|
|
384
|
-
'admin.users.add.submit': 'Add User',
|
|
385
|
-
// Users page — edit dialog
|
|
386
|
-
'admin.users.edit.title': 'Edit User',
|
|
387
|
-
'admin.users.edit.desc': 'Update user information: {name}',
|
|
388
|
-
'admin.users.edit.submitting': 'Updating...',
|
|
389
|
-
'admin.users.edit.submit': 'Update',
|
|
390
|
-
// Users page — delete dialog
|
|
391
|
-
'admin.users.delete.title': 'Confirm Delete User',
|
|
392
|
-
'admin.users.delete.desc': 'Are you sure you want to delete user {name}?',
|
|
393
|
-
'admin.users.delete.warning': 'This action cannot be undone.',
|
|
394
|
-
'admin.users.delete.confirm': 'Delete User',
|
|
395
|
-
// Users page — view dialog
|
|
396
|
-
'admin.users.view.title': 'User Information',
|
|
397
|
-
'admin.users.view.subtitle': 'Account details',
|
|
398
|
-
'admin.users.view.close': 'Close',
|
|
399
|
-
// Users page — reset password dialog
|
|
400
|
-
'admin.users.resetPassword.title': 'Reset Password',
|
|
401
|
-
'admin.users.resetPassword.desc': 'Enter a new password for user {name}',
|
|
402
|
-
'admin.users.resetPassword.label': 'New password',
|
|
403
|
-
'admin.users.resetPassword.placeholder': 'Enter new password...',
|
|
404
|
-
'admin.users.resetPassword.hint': 'Password should be at least 8 characters including uppercase, lowercase and numbers',
|
|
405
|
-
'admin.users.resetPassword.submit': 'Reset Password',
|
|
406
|
-
// Users page — lock dialog
|
|
407
|
-
'admin.users.lock.title': 'Lock Account',
|
|
408
|
-
'admin.users.lock.desc': 'Are you sure you want to lock the account {name}? The user will not be able to log in.',
|
|
409
|
-
'admin.users.lock.confirm': 'Lock Account',
|
|
410
|
-
// Users page — unlock dialog
|
|
411
|
-
'admin.users.unlock.title': 'Unlock Account',
|
|
412
|
-
'admin.users.unlock.desc': 'Are you sure you want to unlock the account {name}? The user will be able to log in.',
|
|
413
|
-
'admin.users.unlock.confirm': 'Unlock Account',
|
|
414
|
-
// Reports — UI labels
|
|
415
|
-
'admin.reports.title': 'Reports',
|
|
416
|
-
'admin.reports.subtitle': 'View overview and analyze exam results',
|
|
417
|
-
'admin.reports.viewDetail': 'View details →',
|
|
418
|
-
'admin.reports.overview.title': 'Overview Report',
|
|
419
|
-
'admin.reports.overview.desc': 'System-wide statistics',
|
|
420
|
-
'admin.reports.overview.content': 'View exam results overview, student numbers, average scores over time',
|
|
421
|
-
'admin.reports.class.title': 'Class Report',
|
|
422
|
-
'admin.reports.class.desc': 'Details by class',
|
|
423
|
-
'admin.reports.class.content': 'Analyze exam results, rankings and learning progress by class',
|
|
424
|
-
'admin.reports.branch.title': 'Branch Report',
|
|
425
|
-
'admin.reports.branch.desc': 'Compare between branches',
|
|
426
|
-
'admin.reports.branch.content': 'Compare performance and learning results between branches',
|
|
427
|
-
'admin.reports.exam.title': 'Exam Report',
|
|
428
|
-
'admin.reports.exam.desc': 'Statistics by exam',
|
|
429
|
-
'admin.reports.exam.content': 'Statistics on results, scores and pass rates by exam',
|
|
430
|
-
'admin.reports.room.title': 'Room Report',
|
|
431
|
-
'admin.reports.room.desc': 'Details by room',
|
|
432
|
-
'admin.reports.room.content': 'Statistics on exam results, scores, pass rates by room',
|
|
433
|
-
'admin.reports.competency.title': 'Student Competency Report',
|
|
434
|
-
'admin.reports.competency.desc': 'Skill analysis by student',
|
|
435
|
-
'admin.reports.competency.content': 'Analyze scores by 4 skills: Reading, Listening, Writing, Speaking per student',
|
|
436
|
-
// Reports — Room report page
|
|
437
|
-
'admin.reports.room.pageTitle': 'Room Report',
|
|
438
|
-
'admin.reports.room.pageSubtitle': 'Detailed statistics about exam rooms',
|
|
439
|
-
'admin.reports.room.export': 'Export report',
|
|
440
|
-
'admin.reports.room.exporting': 'Exporting...',
|
|
441
|
-
'admin.reports.room.exportExcel': 'Export Excel (.xlsx)',
|
|
442
|
-
'admin.reports.room.exportCsv': 'Export CSV (.csv)',
|
|
443
|
-
'admin.reports.room.viewFull': 'View full report',
|
|
444
|
-
'admin.reports.room.totalRooms': 'Total Rooms',
|
|
445
|
-
'admin.reports.room.totalStudents': 'Total Students',
|
|
446
|
-
'admin.reports.room.totalSubmitted': 'Submitted',
|
|
447
|
-
'admin.reports.room.avgScore': 'Avg Score',
|
|
448
|
-
'admin.reports.room.passRate': 'Pass Rate',
|
|
449
|
-
'admin.reports.room.avgDuration': 'Avg Duration',
|
|
450
|
-
'admin.reports.room.scoreDistribution': 'Score Distribution',
|
|
451
|
-
'admin.reports.room.topRooms': 'Top Scoring Rooms',
|
|
452
|
-
'admin.reports.room.noData': 'No data yet',
|
|
453
|
-
'admin.reports.room.excellent': 'Excellent (9-10)',
|
|
454
|
-
'admin.reports.room.good': 'Good (7-8.9)',
|
|
455
|
-
'admin.reports.room.average': 'Average (5-6.9)',
|
|
456
|
-
'admin.reports.room.poor': 'Poor (<5)',
|
|
457
|
-
'admin.reports.room.searchPlaceholder': 'Search rooms...',
|
|
458
|
-
'admin.reports.room.statusPlaceholder': 'Status',
|
|
459
|
-
'admin.reports.room.statusAll': 'All statuses',
|
|
460
|
-
'admin.reports.room.statusScheduled': 'Scheduled',
|
|
461
|
-
'admin.reports.room.statusInProgress': 'In Progress',
|
|
462
|
-
'admin.reports.room.statusCompleted': 'Completed',
|
|
463
|
-
'admin.reports.room.clearFilters': 'Clear filters',
|
|
464
|
-
'admin.reports.room.roomList': 'Room List',
|
|
465
|
-
'admin.reports.room.colRoom': 'Room',
|
|
466
|
-
'admin.reports.room.colContest': 'Contest',
|
|
467
|
-
'admin.reports.room.colStatus': 'Status',
|
|
468
|
-
'admin.reports.room.colStudents': 'Students',
|
|
469
|
-
'admin.reports.room.colAvgScore': 'Avg Score',
|
|
470
|
-
'admin.reports.room.colHighLow': 'High/Low',
|
|
471
|
-
'admin.reports.room.colPassRate': 'Pass Rate',
|
|
472
|
-
'admin.reports.room.colTeachers': 'Proctors',
|
|
473
|
-
'admin.reports.room.empty': 'No rooms found',
|
|
474
|
-
'admin.reports.room.loading': 'Loading data...',
|
|
475
|
-
'admin.reports.room.dialogTitle': 'Room Report',
|
|
476
|
-
'admin.reports.room.dialogDesc': 'Detailed exam results statistics by room',
|
|
477
|
-
// Reports — Common labels (shared across report dialogs)
|
|
478
|
-
'admin.reports.exporting': 'Exporting...',
|
|
479
|
-
'admin.reports.exportExcel': 'Export Excel',
|
|
480
|
-
'admin.reports.loading': 'Loading data...',
|
|
481
|
-
'admin.reports.close': 'Close',
|
|
482
|
-
'admin.reports.common.avgScore': 'Avg Score',
|
|
483
|
-
'admin.reports.common.passRate': 'Pass Rate',
|
|
484
|
-
'admin.reports.common.totalStudents': 'Total Students',
|
|
485
|
-
'admin.reports.common.students': 'Students',
|
|
486
|
-
'admin.reports.common.teachers': 'Teachers',
|
|
487
|
-
'admin.reports.common.classes': 'Classes',
|
|
488
|
-
// Reports — Stats Cards (main page)
|
|
489
|
-
'admin.reports.stats.totalExams': 'Total Exams',
|
|
490
|
-
'admin.reports.stats.totalStudents': 'Participants',
|
|
491
|
-
'admin.reports.stats.avgScore': 'Average Score',
|
|
492
|
-
'admin.reports.stats.passRate': 'Pass Rate',
|
|
493
|
-
'admin.reports.stats.vsLastMonth': 'vs last month',
|
|
494
|
-
// Reports — Overview dialog
|
|
495
|
-
'admin.reports.overview.dialogTitle': 'Overview Report',
|
|
496
|
-
'admin.reports.overview.dialogDesc': 'System-wide statistics for Ocean Edu',
|
|
497
|
-
'admin.reports.overview.totalExams': 'Total Exams',
|
|
498
|
-
'admin.reports.overview.totalStudents': 'Students',
|
|
499
|
-
'admin.reports.overview.avgScore': 'System Avg Score',
|
|
500
|
-
'admin.reports.overview.passRate': 'Pass Rate',
|
|
501
|
-
'admin.reports.overview.vsPrevPeriod': 'vs previous period',
|
|
502
|
-
'admin.reports.overview.questions': 'Questions',
|
|
503
|
-
'admin.reports.overview.classes': 'Classes',
|
|
504
|
-
'admin.reports.overview.examRooms': 'Exam Rooms',
|
|
505
|
-
'admin.reports.overview.activeContests': 'Active Contests',
|
|
506
|
-
'admin.reports.overview.examsByLevel': 'Statistics by Exam Level',
|
|
507
|
-
'admin.reports.overview.examsUnit': 'exams',
|
|
508
|
-
'admin.reports.overview.questionsByType': 'Question Type Distribution',
|
|
509
|
-
'admin.reports.overview.questionsUnit': 'questions',
|
|
510
|
-
'admin.reports.overview.recentActivity': 'Recent Activity',
|
|
511
|
-
'admin.reports.overview.minutesAgo': '{count} minutes ago',
|
|
512
|
-
'admin.reports.overview.hoursAgo': '{count} hours ago',
|
|
513
|
-
'admin.reports.overview.daysAgo': '{count} days ago',
|
|
514
|
-
// Reports — Class dialog
|
|
515
|
-
'admin.reports.class.dialogTitle': 'Class Report',
|
|
516
|
-
'admin.reports.class.dialogDesc': 'Learning performance statistics by class',
|
|
517
|
-
'admin.reports.class.gradeAll': 'All',
|
|
518
|
-
'admin.reports.class.totalClasses': 'Total Classes',
|
|
519
|
-
'admin.reports.class.totalStudents': 'Total Students',
|
|
520
|
-
'admin.reports.class.avgPassRate': 'Avg Pass Rate',
|
|
521
|
-
'admin.reports.class.classList': 'Class List',
|
|
522
|
-
'admin.reports.class.colClass': 'Class',
|
|
523
|
-
'admin.reports.class.colLevel': 'Level',
|
|
524
|
-
'admin.reports.class.colSize': 'Size',
|
|
525
|
-
'admin.reports.class.colAvgScore': 'Avg Score',
|
|
526
|
-
'admin.reports.class.colPassRate': 'Pass Rate',
|
|
527
|
-
'admin.reports.class.colTeacher': 'Teacher',
|
|
528
|
-
'admin.reports.class.topStudents': 'Top 5 Outstanding Students',
|
|
529
|
-
'admin.reports.class.totalExams': 'Exams',
|
|
530
|
-
'admin.reports.class.searchPlaceholder': 'Search by class name or code...',
|
|
531
|
-
// Reports — Branch dialog
|
|
532
|
-
'admin.reports.branch.dialogTitle': 'Branch Report',
|
|
533
|
-
'admin.reports.branch.dialogDesc': 'Compare performance between branches',
|
|
534
|
-
'admin.reports.branch.totalBranches': 'Total Branches',
|
|
535
|
-
'admin.reports.branch.totalStudents': 'Total Students',
|
|
536
|
-
'admin.reports.branch.totalClasses': 'Total Classes',
|
|
537
|
-
'admin.reports.branch.avgScore': 'Overall Avg Score',
|
|
538
|
-
'admin.reports.branch.comparison': 'Branch Comparison',
|
|
539
|
-
// Reports — Exam (contest) dialog
|
|
540
|
-
'admin.reports.exam.dialogTitle': 'Exam Report',
|
|
541
|
-
'admin.reports.exam.dialogDesc': 'Results statistics by contest',
|
|
542
|
-
'admin.reports.exam.statusDraft': 'Draft',
|
|
543
|
-
'admin.reports.exam.statusPublished': 'Published',
|
|
544
|
-
'admin.reports.exam.statusActive': 'In Progress',
|
|
545
|
-
'admin.reports.exam.statusCompleted': 'Completed',
|
|
546
|
-
'admin.reports.exam.totalContests': 'Total Contests',
|
|
547
|
-
'admin.reports.exam.totalStudents': 'Total Students',
|
|
548
|
-
'admin.reports.exam.avgScore': 'Avg Score',
|
|
549
|
-
'admin.reports.exam.passRate': 'Pass Rate',
|
|
550
|
-
'admin.reports.exam.contestList': 'Contest List',
|
|
551
|
-
'admin.reports.exam.code': 'Code: {code}',
|
|
552
|
-
'admin.reports.exam.noData': 'No data yet',
|
|
553
|
-
// Reports — Competency dialog
|
|
554
|
-
'admin.reports.competency.dialogTitle': 'Student Competency Report',
|
|
555
|
-
'admin.reports.competency.dialogDesc': 'Skill-based score analysis',
|
|
556
|
-
'admin.reports.competency.searchPlaceholder': 'Search by name or email...',
|
|
557
|
-
'admin.reports.competency.totalStudents': 'Total Students',
|
|
558
|
-
'admin.reports.competency.avgScore': 'Avg Score',
|
|
559
|
-
'admin.reports.competency.passRate': 'Pass Rate',
|
|
560
|
-
'admin.reports.competency.bestSkill': 'Best Skill',
|
|
561
|
-
'admin.reports.competency.skillDistribution': 'Score Distribution by Skill',
|
|
562
|
-
'admin.reports.competency.avgScoreTooltip': 'Avg Score',
|
|
563
|
-
'admin.reports.competency.studentList': 'Student List ({count})',
|
|
564
|
-
'admin.reports.competency.colName': 'Name',
|
|
565
|
-
'admin.reports.competency.colClass': 'Class',
|
|
566
|
-
'admin.reports.competency.colReading': 'Reading',
|
|
567
|
-
'admin.reports.competency.colListening': 'Listening',
|
|
568
|
-
'admin.reports.competency.colWriting': 'Writing',
|
|
569
|
-
'admin.reports.competency.colSpeaking': 'Speaking',
|
|
570
|
-
'admin.reports.competency.colTotal': 'Total',
|
|
571
|
-
'admin.reports.competency.colExams': 'Exams',
|
|
572
|
-
'admin.reports.competency.noData': 'No data',
|
|
573
|
-
'admin.reports.competency.page': 'Page {page} / {totalPages}',
|
|
574
|
-
'admin.reports.competency.prev': 'Previous',
|
|
575
|
-
'admin.reports.competency.next': 'Next',
|
|
576
|
-
'admin.reports.competency.reading': 'Reading',
|
|
577
|
-
'admin.reports.competency.listening': 'Listening',
|
|
578
|
-
'admin.reports.competency.writing': 'Writing',
|
|
579
|
-
'admin.reports.competency.speaking': 'Speaking',
|
|
580
|
-
// Reports — Competency full page (new)
|
|
581
|
-
'admin.reports.competency.pageTitle': 'Student Competency Report',
|
|
582
|
-
'admin.reports.competency.pageSubtitle': 'Score analysis by skill',
|
|
583
|
-
'admin.reports.competency.backToReports': 'Back to Reports',
|
|
584
|
-
'admin.reports.competency.export': 'Export Excel',
|
|
585
|
-
'admin.reports.competency.exporting': 'Exporting...',
|
|
586
|
-
'admin.reports.competency.atRisk': 'At-Risk Students',
|
|
587
|
-
'admin.reports.competency.atRiskDesc': 'Below 5.0',
|
|
588
|
-
'admin.reports.competency.radarTitle': 'Competency by Skill',
|
|
589
|
-
'admin.reports.competency.radarClassAvg': 'This Class',
|
|
590
|
-
'admin.reports.competency.radarSysAvg': 'System Average',
|
|
591
|
-
'admin.reports.competency.trendTitle': 'Score Trend Over Time',
|
|
592
|
-
'admin.reports.competency.trend3m': '3 Months',
|
|
593
|
-
'admin.reports.competency.trend6m': '6 Months',
|
|
594
|
-
'admin.reports.competency.trend12m': '12 Months',
|
|
595
|
-
'admin.reports.competency.skillBreakdownTitle': 'Skill Analysis',
|
|
596
|
-
'admin.reports.competency.strengthsTitle': 'Strengths',
|
|
597
|
-
'admin.reports.competency.weaknessesTitle': 'Weaknesses',
|
|
598
|
-
'admin.reports.competency.noStrengths': 'No data',
|
|
599
|
-
'admin.reports.competency.noWeaknesses': 'No data',
|
|
600
|
-
'admin.reports.competency.bandExcellent': 'Excellent',
|
|
601
|
-
'admin.reports.competency.bandGood': 'Good',
|
|
602
|
-
'admin.reports.competency.bandAverage': 'Average',
|
|
603
|
-
'admin.reports.competency.bandWeak': 'Weak',
|
|
604
|
-
'admin.reports.competency.colTrend': 'Trend',
|
|
605
|
-
'admin.reports.competency.colBand': 'Band',
|
|
606
|
-
'admin.reports.competency.filterAll': 'All',
|
|
607
|
-
'admin.reports.competency.filterWeak': 'Needs Support',
|
|
608
|
-
'admin.reports.competency.filterGood': 'Good - Excellent',
|
|
609
|
-
'admin.reports.competency.searchPlaceholder2': 'Find student...',
|
|
610
|
-
'admin.reports.competency.examRoomFilter.placeholder': 'All exam rooms',
|
|
611
|
-
'admin.reports.competency.examRoomFilter.searchPlaceholder': 'Search exam rooms...',
|
|
612
|
-
'admin.reports.competency.examRoomFilter.noRooms': 'No exam rooms found',
|
|
613
|
-
'admin.reports.competency.examRoomFilter.allRooms': 'All exam rooms',
|
|
614
|
-
// Reports — Period selector
|
|
615
|
-
'admin.reports.period.week': 'This week',
|
|
616
|
-
'admin.reports.period.month': 'This month',
|
|
617
|
-
'admin.reports.period.quarter': 'This quarter',
|
|
618
|
-
'admin.reports.period.year': 'This year',
|
|
619
|
-
'admin.reports.period.custom': 'Custom',
|
|
620
|
-
'admin.reports.period.fromDate': 'From date',
|
|
621
|
-
'admin.reports.period.toDate': 'To date',
|
|
622
|
-
// Dashboard
|
|
623
|
-
'admin.dashboard.title': 'Admin Dashboard',
|
|
624
|
-
'admin.dashboard.subtitle': 'Manage Ocean Edu online exam system',
|
|
625
|
-
'admin.dashboard.totalStudents': 'Total Students',
|
|
626
|
-
'admin.dashboard.totalStudents.monthly': '+{count} new students this month',
|
|
627
|
-
'admin.dashboard.totalStudents.growth': 'M{lastMonth} {action} {percent}% vs M{prevMonth}',
|
|
628
|
-
'admin.dashboard.totalExams': 'Exams',
|
|
629
|
-
'admin.dashboard.totalExams.weekly': '+{count} new exams this week',
|
|
630
|
-
'admin.dashboard.examRooms': 'Exam Rooms',
|
|
631
|
-
'admin.dashboard.examRooms.active': '{count} rooms active',
|
|
632
|
-
'admin.dashboard.teachers': 'Teachers',
|
|
633
|
-
'admin.dashboard.teachers.yearly': '+{count} new teachers this year',
|
|
634
|
-
'admin.dashboard.contests': 'Contests',
|
|
635
|
-
'admin.dashboard.contests.ongoing': '{count} ongoing',
|
|
636
|
-
'admin.dashboard.inProgressRooms': 'Rooms In Progress',
|
|
637
|
-
'admin.dashboard.inProgressRooms.status': 'In progress',
|
|
638
|
-
'admin.dashboard.studentsInExam': 'Students In Exam',
|
|
639
|
-
'admin.dashboard.studentsInExam.rooms': 'In {count} rooms',
|
|
640
|
-
'admin.dashboard.pendingGrading': 'Pending Grading',
|
|
641
|
-
'admin.dashboard.pendingGrading.action': 'Needs attention',
|
|
642
|
-
'admin.dashboard.userGrowth.title': 'User Growth',
|
|
643
|
-
'admin.dashboard.userGrowth.desc': 'Student and teacher count over the last 6 months',
|
|
644
|
-
'admin.dashboard.userGrowth.students': 'Students',
|
|
645
|
-
'admin.dashboard.userGrowth.teachers': 'Teachers',
|
|
646
|
-
'admin.dashboard.examStats.title': 'Exam Statistics',
|
|
647
|
-
'admin.dashboard.examStats.desc': 'Completed and pending exams by subject',
|
|
648
|
-
'admin.dashboard.examStats.completed': 'Completed',
|
|
649
|
-
'admin.dashboard.examStats.pending': 'Pending',
|
|
650
|
-
'admin.dashboard.recentActivity.title': 'Recent Activity',
|
|
651
|
-
'admin.dashboard.recentActivity.desc': 'Latest activities in the system',
|
|
652
|
-
'admin.dashboard.recentActivity.colActivity': 'Activity',
|
|
653
|
-
'admin.dashboard.recentActivity.colUser': 'User',
|
|
654
|
-
'admin.dashboard.recentActivity.colStatus': 'Status',
|
|
655
|
-
'admin.dashboard.recentActivity.colTime': 'Time',
|
|
656
|
-
'admin.dashboard.recentActivity.empty': 'No activities yet',
|
|
657
|
-
'admin.dashboard.growth.increase': 'increased',
|
|
658
|
-
'admin.dashboard.growth.decrease': 'decreased',
|
|
659
|
-
'admin.dashboard.growth.unchanged': 'unchanged',
|
|
660
|
-
'admin.dashboard.time.justNow': 'just now',
|
|
661
|
-
'admin.dashboard.time.minutesAgo': '{count} minutes ago',
|
|
662
|
-
'admin.dashboard.time.hoursAgo': '{count} hours ago',
|
|
663
|
-
'admin.dashboard.time.daysAgo': '{count} days ago',
|
|
664
|
-
'admin.dashboard.time.weeksAgo': '{count} weeks ago',
|
|
665
|
-
'admin.dashboard.time.monthsAgo': '{count} months ago',
|
|
666
|
-
// Branch management — toast messages
|
|
667
|
-
'admin.branch.create.success': 'Branch created successfully',
|
|
668
|
-
'admin.branch.create.successDesc': 'New branch created with {count} teachers. PLACEMENT TEST room has been automatically created.',
|
|
669
|
-
'admin.branch.create.successDescNoTeacher': 'New branch created. PLACEMENT TEST room has been automatically created.',
|
|
670
|
-
'admin.branch.update.success': 'Branch updated successfully',
|
|
671
|
-
'admin.branch.update.successDesc': 'Branch information updated ({count} teacher changes)',
|
|
672
|
-
'admin.branch.update.successDescNoChange': 'Branch information updated',
|
|
673
|
-
'admin.branch.delete.success': 'Branch deleted successfully',
|
|
674
|
-
'admin.branch.delete.successDesc': 'Branch {code} - {name} has been deleted',
|
|
675
|
-
'admin.branch.activate.success': 'Branch activated successfully',
|
|
676
|
-
'admin.branch.deactivate.success': 'Branch deactivated successfully',
|
|
677
|
-
'admin.branch.toggleStatus.successDesc': 'Branch {code} - {name} has been {status}',
|
|
678
|
-
'admin.branch.toggleStatus.activated': 'activated',
|
|
679
|
-
'admin.branch.toggleStatus.deactivated': 'deactivated',
|
|
680
|
-
// Branches page — page header & loading
|
|
681
|
-
'admin.branches.title': 'Branch Management',
|
|
682
|
-
'admin.branches.subtitle': 'Manage branch information in the system',
|
|
683
|
-
'admin.branches.loading': 'Loading data...',
|
|
684
|
-
// Branches page — stats cards
|
|
685
|
-
'admin.branches.stats.total': 'Total Branches',
|
|
686
|
-
'admin.branches.stats.active': 'Active',
|
|
687
|
-
'admin.branches.stats.inactive': 'Inactive',
|
|
688
|
-
'admin.branches.stats.distribution': 'Manager Distribution',
|
|
689
|
-
'admin.branches.stats.activeBranches': 'Active',
|
|
690
|
-
'admin.branches.stats.inactiveBranches': 'Inactive',
|
|
691
|
-
'admin.branches.stats.withManager': 'Has Manager',
|
|
692
|
-
'admin.branches.stats.withoutManager': 'No Manager',
|
|
693
|
-
'admin.branches.stats.branchUnit': 'branches',
|
|
694
|
-
// Branches page — table
|
|
695
|
-
'admin.branches.table.title': 'Branch List',
|
|
696
|
-
'admin.branches.table.showing': 'Showing {count} / {total} branches',
|
|
697
|
-
'admin.branches.table.addBranch': 'Add Branch',
|
|
698
|
-
'admin.branches.table.loading': 'Loading...',
|
|
699
|
-
'admin.branches.table.empty': 'No branches found',
|
|
700
|
-
'admin.branches.table.notUpdated': 'Not updated',
|
|
701
|
-
'admin.branches.table.notAssigned': 'Not assigned',
|
|
702
|
-
// Branches page — columns
|
|
703
|
-
'admin.branches.col.code': 'BRANCH CODE',
|
|
704
|
-
'admin.branches.col.name': 'BRANCH NAME',
|
|
705
|
-
'admin.branches.col.address': 'ADDRESS',
|
|
706
|
-
'admin.branches.col.contact': 'CONTACT',
|
|
707
|
-
'admin.branches.col.manager': 'MANAGER',
|
|
708
|
-
'admin.branches.col.status': 'STATUS',
|
|
709
|
-
'admin.branches.col.actions': 'ACTIONS',
|
|
710
|
-
// Branches page — filters
|
|
711
|
-
'admin.branches.filter.searchPlaceholder': 'Search by name or branch code',
|
|
712
|
-
'admin.branches.filter.statusPlaceholder': 'Status',
|
|
713
|
-
'admin.branches.filter.allStatuses': 'All statuses',
|
|
714
|
-
'admin.branches.filter.active': 'Active',
|
|
715
|
-
'admin.branches.filter.inactive': 'Inactive',
|
|
716
|
-
'admin.branches.filter.clearFilters': 'Clear filters',
|
|
717
|
-
'admin.branches.filter.searchLabel': 'Search:',
|
|
718
|
-
'admin.branches.filter.statusLabel': 'Status:',
|
|
719
|
-
// Branches page — status badges
|
|
720
|
-
'admin.branches.status.active': 'Active',
|
|
721
|
-
'admin.branches.status.activeDetail': 'Active',
|
|
722
|
-
'admin.branches.status.inactive': 'Inactive',
|
|
723
|
-
// Branches page — row actions
|
|
724
|
-
'admin.branches.action.view': 'View details',
|
|
725
|
-
'admin.branches.action.edit': 'Edit',
|
|
726
|
-
'admin.branches.action.delete': 'Delete',
|
|
727
|
-
// Branches page — form fields (shared between Add & Edit)
|
|
728
|
-
'admin.branches.field.basicInfo': 'Basic Information',
|
|
729
|
-
'admin.branches.field.code': 'Branch code',
|
|
730
|
-
'admin.branches.field.codePlaceholder': 'E.g.: CN-HN-01',
|
|
731
|
-
'admin.branches.field.name': 'Branch name',
|
|
732
|
-
'admin.branches.field.namePlaceholder': 'E.g.: Hanoi Branch',
|
|
733
|
-
'admin.branches.field.address': 'Address',
|
|
734
|
-
'admin.branches.field.addressPlaceholder': 'Enter branch address...',
|
|
735
|
-
'admin.branches.field.contactInfo': 'Contact Information',
|
|
736
|
-
'admin.branches.field.phone': 'Phone number',
|
|
737
|
-
'admin.branches.field.phonePlaceholder': 'E.g.: 0912345678',
|
|
738
|
-
'admin.branches.field.email': 'Email',
|
|
739
|
-
'admin.branches.field.emailPlaceholder': 'E.g.: branch@ocean.edu.vn',
|
|
740
|
-
'admin.branches.field.managerSection': 'Manager',
|
|
741
|
-
'admin.branches.field.selectManager': 'Select manager',
|
|
742
|
-
'admin.branches.field.selectManagerPlaceholder': 'Select manager...',
|
|
743
|
-
'admin.branches.field.managerHint': 'The manager will have administrative rights for this branch',
|
|
744
|
-
'admin.branches.field.statusSection': 'Status',
|
|
745
|
-
// Branches page — teacher selection
|
|
746
|
-
'admin.branches.teacher.title': 'Select Teachers',
|
|
747
|
-
'admin.branches.teacher.searchPlaceholder': 'Search teachers by name, email or phone number',
|
|
748
|
-
'admin.branches.teacher.colName': 'Full name',
|
|
749
|
-
'admin.branches.teacher.colEmail': 'Email',
|
|
750
|
-
'admin.branches.teacher.colPhone': 'Phone',
|
|
751
|
-
'admin.branches.teacher.notFound': 'No teachers found',
|
|
752
|
-
'admin.branches.teacher.empty': 'No teachers in the system',
|
|
753
|
-
'admin.branches.teacher.selected': 'Selected: {count} teachers',
|
|
754
|
-
'admin.branches.teacher.clearAll': 'Clear all',
|
|
755
|
-
// Branches page — add dialog
|
|
756
|
-
'admin.branches.add.title': 'Add New Branch',
|
|
757
|
-
'admin.branches.add.desc': 'Enter information for the new branch',
|
|
758
|
-
'admin.branches.add.activateLabel': 'Activate branch',
|
|
759
|
-
'admin.branches.add.activateDescActive': 'Branch will be active immediately after creation',
|
|
760
|
-
'admin.branches.add.activateDescInactive': 'Branch will be inactive after creation',
|
|
761
|
-
'admin.branches.add.submitting': 'Processing...',
|
|
762
|
-
'admin.branches.add.submit': 'Add Branch',
|
|
763
|
-
// Branches page — edit dialog
|
|
764
|
-
'admin.branches.edit.title': 'Edit Branch',
|
|
765
|
-
'admin.branches.edit.desc': 'Update information for branch: {name}',
|
|
766
|
-
'admin.branches.edit.statusLabel': 'Active status',
|
|
767
|
-
'admin.branches.edit.statusDescActive': 'Branch is currently active',
|
|
768
|
-
'admin.branches.edit.statusDescInactive': 'Branch is currently inactive',
|
|
769
|
-
'admin.branches.edit.submitting': 'Processing...',
|
|
770
|
-
'admin.branches.edit.submit': 'Update',
|
|
771
|
-
// Branches page — delete dialog
|
|
772
|
-
'admin.branches.delete.title': 'Confirm Delete Branch',
|
|
773
|
-
'admin.branches.delete.desc': 'Are you sure you want to delete this branch?',
|
|
774
|
-
'admin.branches.delete.warning': 'This action cannot be undone and will delete all data related to this branch.',
|
|
775
|
-
'admin.branches.delete.submitting': 'Processing...',
|
|
776
|
-
'admin.branches.delete.confirm': 'Delete Branch',
|
|
777
|
-
// Branches page — toggle status dialog
|
|
778
|
-
'admin.branches.toggleStatus.activateTitle': 'Activate Branch',
|
|
779
|
-
'admin.branches.toggleStatus.deactivateTitle': 'Deactivate Branch',
|
|
780
|
-
'admin.branches.toggleStatus.activateDesc': 'Are you sure you want to activate this branch?',
|
|
781
|
-
'admin.branches.toggleStatus.deactivateDesc': 'Are you sure you want to deactivate this branch?',
|
|
782
|
-
'admin.branches.toggleStatus.activateInfo': 'The branch will be activated and operate normally.',
|
|
783
|
-
'admin.branches.toggleStatus.deactivateInfo': 'The branch will be deactivated but data will be preserved.',
|
|
784
|
-
'admin.branches.toggleStatus.submitting': 'Processing...',
|
|
785
|
-
'admin.branches.toggleStatus.activate': 'Activate',
|
|
786
|
-
'admin.branches.toggleStatus.deactivate': 'Deactivate',
|
|
787
|
-
// Branches page — view dialog
|
|
788
|
-
'admin.branches.view.title': 'Branch Details: {name}',
|
|
789
|
-
'admin.branches.view.desc': 'View detailed branch information',
|
|
790
|
-
'admin.branches.view.basicInfo': 'Basic Information',
|
|
791
|
-
'admin.branches.view.codeLabel': 'Branch Code',
|
|
792
|
-
'admin.branches.view.nameLabel': 'Branch Name',
|
|
793
|
-
'admin.branches.view.statusLabel': 'Status',
|
|
794
|
-
'admin.branches.view.contactInfo': 'Contact Information',
|
|
795
|
-
'admin.branches.view.addressLabel': 'Address',
|
|
796
|
-
'admin.branches.view.phoneLabel': 'Phone Number',
|
|
797
|
-
'admin.branches.view.emailLabel': 'Email',
|
|
798
|
-
'admin.branches.view.notUpdated': 'Not updated',
|
|
799
|
-
'admin.branches.view.managerSection': 'Manager',
|
|
800
|
-
'admin.branches.view.noManager': 'No manager assigned',
|
|
801
|
-
'admin.branches.view.teacherSection': 'Teachers',
|
|
802
|
-
'admin.branches.view.noTeachers': 'No teachers assigned',
|
|
803
|
-
'admin.branches.view.moreTeachers': 'and {count} more teachers...',
|
|
804
|
-
'admin.branches.view.changeHistory': 'Change History',
|
|
805
|
-
'admin.branches.view.createdAt': 'Created',
|
|
806
|
-
'admin.branches.view.createdBy': 'by',
|
|
807
|
-
'admin.branches.view.noCreator': 'No creator information',
|
|
808
|
-
'admin.branches.view.updatedAt': 'Last Updated',
|
|
809
|
-
'admin.branches.view.noUpdater': 'No updater information',
|
|
810
|
-
'admin.branches.view.branchId': 'Branch ID',
|
|
811
|
-
// Class Rooms page — page header
|
|
812
|
-
// Class Rooms page — table
|
|
813
|
-
// Class Rooms page — filters
|
|
814
|
-
// Class Rooms page — columns
|
|
815
|
-
// Class Rooms page — status
|
|
816
|
-
// Class Rooms page — row actions
|
|
817
|
-
// Class Rooms page — add dialog
|
|
818
|
-
// Class Rooms page — edit dialog
|
|
819
|
-
// Class Rooms page — form fields
|
|
820
|
-
// Class Rooms page — view dialog
|
|
821
|
-
// Class Room — load errors
|
|
822
|
-
// Class Room — delete
|
|
823
|
-
// Class Room — students
|
|
824
|
-
// Class Room Exams dialog
|
|
825
|
-
// ─── Rooms page ──────────────────────────────────────────────────────────────
|
|
826
|
-
// Rooms page — page header
|
|
827
|
-
'admin.rooms.title': 'Exam Room Management',
|
|
828
|
-
'admin.rooms.subtitle': 'Create and manage exam rooms',
|
|
829
|
-
'admin.rooms.loading': 'Loading data...',
|
|
830
|
-
// Rooms page — stats cards
|
|
831
|
-
'admin.rooms.stats.totalRooms': 'Total Rooms',
|
|
832
|
-
'admin.rooms.stats.activeRooms': '{count} active rooms',
|
|
833
|
-
'admin.rooms.stats.students': 'Students',
|
|
834
|
-
'admin.rooms.stats.totalStudents': 'Total enrolled students',
|
|
835
|
-
'admin.rooms.stats.completed': 'Completed',
|
|
836
|
-
'admin.rooms.stats.completedRooms': 'Rooms completed',
|
|
837
|
-
'admin.rooms.stats.statusDistribution': 'Status distribution',
|
|
838
|
-
'admin.rooms.stats.ongoing': 'In progress',
|
|
839
|
-
'admin.rooms.stats.scheduled': 'Scheduled',
|
|
840
|
-
'admin.rooms.stats.roomUnit': 'rooms',
|
|
841
|
-
// Rooms page — table
|
|
842
|
-
'admin.rooms.table.title': 'Exam Room List',
|
|
843
|
-
'admin.rooms.table.showing': 'Showing {count} / {total} rooms',
|
|
844
|
-
'admin.rooms.table.addRoom': 'Create Room',
|
|
845
|
-
'admin.rooms.table.loading': 'Loading...',
|
|
846
|
-
'admin.rooms.table.empty': 'No exam rooms found',
|
|
847
|
-
'admin.rooms.table.notAssigned': 'Not assigned',
|
|
848
|
-
'admin.rooms.table.unlimited': 'Unlimited',
|
|
849
|
-
// Rooms page — columns
|
|
850
|
-
'admin.rooms.col.name': 'ROOM NAME',
|
|
851
|
-
'admin.rooms.col.code': 'ROOM CODE',
|
|
852
|
-
'admin.rooms.col.branch': 'BRANCH',
|
|
853
|
-
'admin.rooms.col.exam': 'EXAM & QUESTIONS',
|
|
854
|
-
'admin.rooms.col.time': 'TIME',
|
|
855
|
-
'admin.rooms.col.progress': 'PROGRESS',
|
|
856
|
-
'admin.rooms.col.lock': 'LOCK',
|
|
857
|
-
'admin.rooms.col.actions': 'ACTIONS',
|
|
858
|
-
// Rooms page — filters
|
|
859
|
-
'admin.rooms.filter.searchPlaceholder': 'Search by room name or room code',
|
|
860
|
-
'admin.rooms.filter.statusPlaceholder': 'Status',
|
|
861
|
-
'admin.rooms.filter.allStatuses': 'All statuses',
|
|
862
|
-
'admin.rooms.filter.branchPlaceholder': 'Branch',
|
|
863
|
-
'admin.rooms.filter.allBranches': 'All branches',
|
|
864
|
-
'admin.rooms.filter.clearFilters': 'Clear filters',
|
|
865
|
-
// Rooms page — status labels (table)
|
|
866
|
-
'admin.rooms.status.completed': 'Completed',
|
|
867
|
-
'admin.rooms.status.inProgress': 'In Progress',
|
|
868
|
-
'admin.rooms.status.scheduled': 'Scheduled',
|
|
869
|
-
// Rooms page — exam cell actions
|
|
870
|
-
'admin.rooms.exam.viewContent': 'View content',
|
|
871
|
-
'admin.rooms.exam.changeExam': 'Change exam',
|
|
872
|
-
'admin.rooms.exam.selectExam': '+ Select exam',
|
|
873
|
-
// Rooms page — row action titles
|
|
874
|
-
'admin.rooms.action.view': 'View details',
|
|
875
|
-
'admin.rooms.action.edit': 'Edit',
|
|
876
|
-
'admin.rooms.action.schedule': 'Edit schedule',
|
|
877
|
-
'admin.rooms.action.delete': 'Delete',
|
|
878
|
-
// Rooms page — toast messages (RoomsPageContainer)
|
|
879
|
-
'admin.rooms.toast.loadError': 'Failed to load data',
|
|
880
|
-
'admin.rooms.toast.loadRoomsError': 'Unable to load exam rooms. Please try again later.',
|
|
881
|
-
'admin.rooms.toast.loadTeachersError': 'Unable to load supervisors. Please try again later.',
|
|
882
|
-
'admin.rooms.toast.loadStudentsError': 'Unable to load students. Please try again later.',
|
|
883
|
-
'admin.rooms.toast.loadExamsError': 'Unable to load exams. Please try again later.',
|
|
884
|
-
'admin.rooms.toast.loadContestsError': 'Unable to load contests. Please try again later.',
|
|
885
|
-
'admin.rooms.toast.loadClassesError': 'Unable to load classes. Please try again later.',
|
|
886
|
-
'admin.rooms.toast.loadBranchesError': 'Unable to load branches. Please try again later.',
|
|
887
|
-
'admin.rooms.toast.cannotChangeExam': 'Cannot change exam',
|
|
888
|
-
'admin.rooms.toast.cannotChangeExamDesc': 'Rooms that have started or completed cannot have their exam changed',
|
|
889
|
-
'admin.rooms.toast.assignExamSuccess': 'Exam assigned successfully',
|
|
890
|
-
'admin.rooms.toast.assignExamSuccessDesc': 'Exam "{examName}" with {childCount} variants has been assigned to room {roomCode}',
|
|
891
|
-
'admin.rooms.toast.cannotRemoveExam': 'Cannot remove exam',
|
|
892
|
-
'admin.rooms.toast.cannotRemoveExamDesc': 'Rooms that have started or completed cannot have their exam removed',
|
|
893
|
-
'admin.rooms.toast.removeExamSuccess': 'Exam removed successfully',
|
|
894
|
-
'admin.rooms.toast.removeExamSuccessDesc': 'Exam has been removed from room {roomCode}',
|
|
895
|
-
'admin.rooms.toast.saveSettingsSuccess': 'Settings saved successfully',
|
|
896
|
-
'admin.rooms.toast.saveSettingsSuccessDesc': 'Your exam settings have been saved',
|
|
897
|
-
'admin.rooms.toast.updateScheduleSuccess': 'Schedule updated successfully',
|
|
898
|
-
'admin.rooms.toast.updateScheduleSuccessDesc': 'Schedule for room {roomCode} has been updated',
|
|
899
|
-
'admin.rooms.toast.updateScheduleError': 'Failed to update schedule',
|
|
900
|
-
'admin.rooms.toast.updateScheduleErrorDesc': 'Error updating schedule for room {roomCode}',
|
|
901
|
-
// Rooms page — AddRoomDialog
|
|
902
|
-
'admin.rooms.add.title': 'Add New Exam Room',
|
|
903
|
-
'admin.rooms.add.description': 'Enter information for the new exam room',
|
|
904
|
-
'admin.rooms.add.cancel': 'Cancel',
|
|
905
|
-
'admin.rooms.add.submit': 'Add Room',
|
|
906
|
-
'admin.rooms.add.success': 'Room created successfully',
|
|
907
|
-
'admin.rooms.add.successDesc': 'Exam room {code} has been created',
|
|
908
|
-
'admin.rooms.add.error': 'Failed to create room',
|
|
909
|
-
'admin.rooms.add.errorDesc': 'An error occurred while creating the exam room',
|
|
910
|
-
// Rooms page — EditRoomDialog
|
|
911
|
-
'admin.rooms.edit.title': 'Edit Room: {name}',
|
|
912
|
-
'admin.rooms.edit.description': 'Update exam room information',
|
|
913
|
-
'admin.rooms.edit.cancel': 'Cancel',
|
|
914
|
-
'admin.rooms.edit.saving': 'Saving...',
|
|
915
|
-
'admin.rooms.edit.submit': 'Save Changes',
|
|
916
|
-
'admin.rooms.edit.success': 'Room updated successfully',
|
|
917
|
-
'admin.rooms.edit.successDesc': 'Exam room {code} has been updated',
|
|
918
|
-
'admin.rooms.edit.error': 'Failed to update room',
|
|
919
|
-
'admin.rooms.edit.errorDesc': 'An error occurred while updating the exam room',
|
|
920
|
-
// Rooms page — DeleteRoomDialog
|
|
921
|
-
'admin.rooms.delete.title': 'Confirm Delete Room',
|
|
922
|
-
'admin.rooms.delete.description': 'Are you sure you want to delete room',
|
|
923
|
-
'admin.rooms.delete.warning': 'This action cannot be undone and will delete all related data.',
|
|
924
|
-
'admin.rooms.delete.cancel': 'Cancel',
|
|
925
|
-
'admin.rooms.delete.processing': 'Processing...',
|
|
926
|
-
'admin.rooms.delete.submit': 'Delete Room',
|
|
927
|
-
'admin.rooms.delete.success': 'Room deleted successfully',
|
|
928
|
-
'admin.rooms.delete.successDesc': 'Exam room {code} has been deleted',
|
|
929
|
-
'admin.rooms.delete.error': 'Failed to delete room',
|
|
930
|
-
'admin.rooms.delete.errorDesc': 'Unable to delete exam room. Please try again later.',
|
|
931
|
-
// Rooms page — ViewRoomDialog
|
|
932
|
-
'admin.rooms.view.title': 'Room Details: {name}',
|
|
933
|
-
'admin.rooms.view.close': 'Close',
|
|
934
|
-
'admin.rooms.view.locked': 'Locked',
|
|
935
|
-
'admin.rooms.view.unlocked': 'Unlocked',
|
|
936
|
-
'admin.rooms.view.undetermined': 'Not set',
|
|
937
|
-
'admin.rooms.unlimitedTime': 'Unlimited time',
|
|
938
|
-
'admin.rooms.view.stats.candidates': 'Candidates',
|
|
939
|
-
'admin.rooms.view.stats.supervisors': 'Supervisors',
|
|
940
|
-
'admin.rooms.view.stats.submitted': 'Submitted',
|
|
941
|
-
'admin.rooms.view.stats.submissionRate': 'Submission rate',
|
|
942
|
-
'admin.rooms.view.section.basicInfo': 'Basic Information',
|
|
943
|
-
'admin.rooms.view.section.time': 'Schedule',
|
|
944
|
-
'admin.rooms.view.section.exams': 'Exams',
|
|
945
|
-
'admin.rooms.view.section.supervisors': 'Supervisors',
|
|
946
|
-
'admin.rooms.view.section.classes': 'Classes',
|
|
947
|
-
'admin.rooms.view.section.assignedStudents': 'Assigned Students',
|
|
948
|
-
'admin.rooms.view.field.contest': 'Contest',
|
|
949
|
-
'admin.rooms.view.field.location': 'Location',
|
|
950
|
-
'admin.rooms.view.field.branch': 'Branch',
|
|
951
|
-
'admin.rooms.view.field.candidateSelection': 'Candidate selection',
|
|
952
|
-
'admin.rooms.view.field.description': 'Description',
|
|
953
|
-
'admin.rooms.view.field.start': 'Start',
|
|
954
|
-
'admin.rooms.view.field.end': 'End',
|
|
955
|
-
'admin.rooms.view.field.createdAt': 'Created at:',
|
|
956
|
-
'admin.rooms.view.field.updatedAt': 'Updated at:',
|
|
957
|
-
'admin.rooms.view.selectionType.all': 'All students',
|
|
958
|
-
'admin.rooms.view.selectionType.specific': 'Specific students',
|
|
959
|
-
'admin.rooms.view.locationNotSet': 'Not set',
|
|
960
|
-
'admin.rooms.view.noSupervisors': 'No supervisors assigned',
|
|
961
|
-
'admin.rooms.view.examOriginal': 'Original exam',
|
|
962
|
-
'admin.rooms.view.examVariants': 'Exam variants ({count})',
|
|
963
|
-
'admin.rooms.view.status.scheduled': 'Scheduled',
|
|
964
|
-
'admin.rooms.view.status.inProgress': 'In Progress',
|
|
965
|
-
'admin.rooms.view.status.completed': 'Completed',
|
|
966
|
-
'admin.rooms.view.type.contest': 'Contest',
|
|
967
|
-
'admin.rooms.view.type.practiceTest': 'Practice Test',
|
|
968
|
-
'admin.rooms.view.classCode': 'Code:',
|
|
969
|
-
'admin.rooms.view.classGrade': 'Grade:',
|
|
970
|
-
'admin.rooms.view.classStudents': '{count} students',
|
|
971
|
-
// Rooms page — LockRoomDialog
|
|
972
|
-
'admin.rooms.lock.titleLock': 'Lock exam room?',
|
|
973
|
-
'admin.rooms.lock.titleUnlock': 'Unlock exam room?',
|
|
974
|
-
'admin.rooms.lock.statusLocked': 'Locked',
|
|
975
|
-
'admin.rooms.lock.statusUnlocked': 'Unlocked',
|
|
976
|
-
'admin.rooms.lock.confirmUnlock': 'Are you sure you want to',
|
|
977
|
-
'admin.rooms.lock.unlock': 'unlock',
|
|
978
|
-
'admin.rooms.lock.lock': 'lock',
|
|
979
|
-
'admin.rooms.lock.confirmSuffix': 'this exam room?',
|
|
980
|
-
'admin.rooms.lock.unlockEffect': 'Students will be able to access and take the exam in this room.',
|
|
981
|
-
'admin.rooms.lock.lockEffect': 'Students will not be able to access or take the exam in this room until it is unlocked.',
|
|
982
|
-
'admin.rooms.lock.cancel': 'Cancel',
|
|
983
|
-
'admin.rooms.lock.processing': 'Processing...',
|
|
984
|
-
'admin.rooms.lock.submitLock': 'Lock Room',
|
|
985
|
-
'admin.rooms.lock.submitUnlock': 'Unlock',
|
|
986
|
-
'admin.rooms.lock.successLock': 'Room locked successfully',
|
|
987
|
-
'admin.rooms.lock.successUnlock': 'Room unlocked successfully',
|
|
988
|
-
'admin.rooms.lock.successDesc': 'Exam room {code} has been {action}',
|
|
989
|
-
'admin.rooms.lock.locked': 'locked',
|
|
990
|
-
'admin.rooms.lock.unlocked': 'unlocked',
|
|
991
|
-
'admin.rooms.lock.error': 'Failed to change lock status',
|
|
992
|
-
'admin.rooms.lock.errorDesc': 'Unable to change the lock status of the exam room. Please try again later.',
|
|
993
|
-
// Rooms page — RemoveExamDialog
|
|
994
|
-
'admin.rooms.removeExam.title': 'Remove Exam from Room',
|
|
995
|
-
'admin.rooms.removeExam.description': 'Are you sure you want to remove exam',
|
|
996
|
-
'admin.rooms.removeExam.fromRoom': 'from room',
|
|
997
|
-
'admin.rooms.removeExam.cannotRemove': 'Cannot remove exam from a room that has started or completed!',
|
|
998
|
-
'admin.rooms.removeExam.effect': 'The room will no longer have an assigned exam. You can select a new exam later.',
|
|
999
|
-
'admin.rooms.removeExam.cancel': 'Cancel',
|
|
1000
|
-
'admin.rooms.removeExam.submit': 'Remove Exam',
|
|
1001
|
-
// Rooms page — ScheduleRoomDialog
|
|
1002
|
-
'admin.rooms.schedule.title': 'Edit Schedule: {name}',
|
|
1003
|
-
'admin.rooms.schedule.description': 'Update the exam schedule for this room',
|
|
1004
|
-
'admin.rooms.schedule.contestInfo': 'Contest info: {name}',
|
|
1005
|
-
'admin.rooms.schedule.unlimitedContest': 'This contest has no time limit.',
|
|
1006
|
-
'admin.rooms.schedule.contestRange': 'From {start} to {end}',
|
|
1007
|
-
'admin.rooms.schedule.contestConstraint': 'Room schedule must fall within the contest time range',
|
|
1008
|
-
'admin.rooms.schedule.unlimitedBadge': 'Unlimited',
|
|
1009
|
-
'admin.rooms.schedule.unlimitedNote': 'This contest has no time limit. You do not need to set a schedule for this room.',
|
|
1010
|
-
'admin.rooms.schedule.startTime': 'Start time *',
|
|
1011
|
-
'admin.rooms.schedule.endTime': 'End time *',
|
|
1012
|
-
'admin.rooms.schedule.cancel': 'Cancel',
|
|
1013
|
-
'admin.rooms.schedule.save': 'Save Schedule',
|
|
1014
|
-
'admin.rooms.schedule.validation.startRequired': 'Please select a start time',
|
|
1015
|
-
'admin.rooms.schedule.validation.endRequired': 'Please select an end time',
|
|
1016
|
-
'admin.rooms.schedule.validation.endAfterStart': 'End time must be after start time',
|
|
1017
|
-
// Rooms page — SelectExamDialog
|
|
1018
|
-
'admin.rooms.selectExam.title': 'Select Exam for Room: {name}',
|
|
1019
|
-
'admin.rooms.selectExam.description': 'Select 1 parent exam and child exams (variants) to assign to this room',
|
|
1020
|
-
'admin.rooms.selectExam.parentCount': 'Parent Exam',
|
|
1021
|
-
'admin.rooms.selectExam.childCount': 'Child Exams',
|
|
1022
|
-
'admin.rooms.selectExam.noParentSelected': 'No parent exam selected',
|
|
1023
|
-
'admin.rooms.selectExam.noParentSelectedDesc': 'Please select a parent exam first',
|
|
1024
|
-
'admin.rooms.selectExam.childCode': 'Code: {code} • Variant #{variant}',
|
|
1025
|
-
'admin.rooms.selectExam.selectAll': 'Select all',
|
|
1026
|
-
'admin.rooms.selectExam.deselectAll': 'Deselect all',
|
|
1027
|
-
'admin.rooms.selectExam.noParentExams': 'No parent exams available',
|
|
1028
|
-
'admin.rooms.selectExam.selectedParent': 'Selected Parent Exam',
|
|
1029
|
-
'admin.rooms.selectExam.selectedChildren': 'Selected Child Exams ({count})',
|
|
1030
|
-
'admin.rooms.selectExam.cancel': 'Cancel',
|
|
1031
|
-
'admin.rooms.selectExam.confirm': 'Confirm',
|
|
1032
|
-
'admin.rooms.selectExam.childExams': '{count} variants',
|
|
1033
|
-
'admin.rooms.selectExam.warning.title': 'Insufficient data',
|
|
1034
|
-
'admin.rooms.selectExam.warning.desc': 'Please select a parent exam and at least one child exam',
|
|
1035
|
-
'admin.rooms.selectExam.clearTitle': 'Clear Selection?',
|
|
1036
|
-
'admin.rooms.selectExam.clearDesc': 'Are you sure you want to clear the parent exam and {count} child exams?',
|
|
1037
|
-
'admin.rooms.selectExam.clearCancel': 'Cancel',
|
|
1038
|
-
'admin.rooms.selectExam.clearConfirm': 'Clear',
|
|
1039
|
-
'admin.rooms.selectExam.dialogTitle': 'Select Exam',
|
|
1040
|
-
'admin.rooms.selectExam.dialogDescription': 'Select a parent exam and the corresponding child exams for your exam room',
|
|
1041
|
-
'admin.rooms.selectExam.searchPlaceholder': 'Search exams by name, code, subject...',
|
|
1042
|
-
'admin.rooms.selectExam.noParentSelectedInfo': 'Please select a parent exam before selecting child exams',
|
|
1043
|
-
'admin.rooms.selectExam.examCode': 'Code: {name}',
|
|
1044
|
-
'admin.rooms.selectExam.original': 'Original',
|
|
1045
|
-
'admin.rooms.selectExam.questions': '{count} questions',
|
|
1046
|
-
'admin.rooms.selectExam.minutes': '{count} min',
|
|
1047
|
-
'admin.rooms.selectExam.difficulty.easy': 'Easy',
|
|
1048
|
-
'admin.rooms.selectExam.difficulty.medium': 'Medium',
|
|
1049
|
-
'admin.rooms.selectExam.difficulty.hard': 'Hard',
|
|
1050
|
-
'admin.rooms.selectExam.emptySearch': 'No matching exams found',
|
|
1051
|
-
'admin.rooms.selectExam.emptyAll': 'No exams available',
|
|
1052
|
-
'admin.rooms.selectExam.emptySearchHint': 'Try searching with different keywords',
|
|
1053
|
-
'admin.rooms.selectExam.emptyAllHint': 'Create a new exam to get started',
|
|
1054
|
-
'admin.rooms.selectExam.clearSearch': 'Clear search',
|
|
1055
|
-
'admin.rooms.selectExam.selected': 'Selected',
|
|
1056
|
-
'admin.rooms.selectExam.selectedParentLabel': 'Parent Exam',
|
|
1057
|
-
// Rooms page — ChangeExamDialog
|
|
1058
|
-
'admin.rooms.changeExam.title': 'Change Exam for Room: {name}',
|
|
1059
|
-
'admin.rooms.changeExam.description': 'Select a new exam to replace the current one',
|
|
1060
|
-
'admin.rooms.changeExam.currentExam': 'Current exam',
|
|
1061
|
-
'admin.rooms.changeExam.currentExamHint': 'Select a new exam from the list below to replace it',
|
|
1062
|
-
'admin.rooms.changeExam.childCount': '({count} variants)',
|
|
1063
|
-
'admin.rooms.changeExam.newParent': 'New Parent Exam',
|
|
1064
|
-
'admin.rooms.changeExam.newParentSelected': 'Selected New Parent Exam',
|
|
1065
|
-
'admin.rooms.changeExam.currentBadge': 'Current',
|
|
1066
|
-
'admin.rooms.changeExam.cancel': 'Cancel',
|
|
1067
|
-
'admin.rooms.changeExam.submit': 'Change Exam',
|
|
1068
|
-
'admin.rooms.changeExam.confirmTitle': 'Confirm exam change?',
|
|
1069
|
-
'admin.rooms.changeExam.confirmDesc': 'Are you sure you want to change the exam for room {name}?',
|
|
1070
|
-
'admin.rooms.changeExam.confirmEffect': 'The new exam will replace the current one with {count} child exams.',
|
|
1071
|
-
'admin.rooms.changeExam.confirmCancel': 'Cancel',
|
|
1072
|
-
'admin.rooms.changeExam.confirmSubmit': 'Confirm Change',
|
|
1073
|
-
// Rooms page — EditWarningDialog
|
|
1074
|
-
'admin.rooms.editWarning.title': 'Edit Room Warning',
|
|
1075
|
-
'admin.rooms.editWarning.description': 'is currently',
|
|
1076
|
-
'admin.rooms.editWarning.status': 'In Progress',
|
|
1077
|
-
'admin.rooms.editWarning.effect': 'Editing may affect students currently taking the exam.',
|
|
1078
|
-
'admin.rooms.editWarning.confirm': 'Are you sure you want to continue editing?',
|
|
1079
|
-
'admin.rooms.editWarning.cancel': 'Cancel',
|
|
1080
|
-
'admin.rooms.editWarning.submit': 'Continue Editing',
|
|
1081
|
-
// Rooms page — ExamChangeWarningDialog
|
|
1082
|
-
'admin.rooms.examChangeWarning.title': 'Change Exam?',
|
|
1083
|
-
'admin.rooms.examChangeWarning.description': 'The exam was automatically selected from the chosen contest. Are you sure you want to change to a different exam?',
|
|
1084
|
-
'admin.rooms.examChangeWarning.cancel': 'Cancel',
|
|
1085
|
-
'admin.rooms.examChangeWarning.submit': 'Continue Changing',
|
|
1086
|
-
// Rooms page — ExamSettingsDialog
|
|
1087
|
-
'admin.rooms.settings.title': 'Exam Room Settings',
|
|
1088
|
-
'admin.rooms.settings.description': 'Default parameters for exams',
|
|
1089
|
-
'admin.rooms.settings.maxStudents': 'Max students per room',
|
|
1090
|
-
'admin.rooms.settings.defaultDuration': 'Default exam duration (minutes)',
|
|
1091
|
-
'admin.rooms.settings.edit': 'Edit',
|
|
1092
|
-
'admin.rooms.settings.cancel': 'Cancel',
|
|
1093
|
-
'admin.rooms.settings.save': 'Save Changes',
|
|
1094
|
-
// Rooms page — RoomFormFields
|
|
1095
|
-
'admin.rooms.form.branch': 'Branch',
|
|
1096
|
-
'admin.rooms.form.branchPlaceholder': 'Select branch...',
|
|
1097
|
-
'admin.rooms.form.branchReload': 'Reload',
|
|
1098
|
-
'admin.rooms.form.branchCreate': 'Create branch',
|
|
1099
|
-
'admin.rooms.form.branchEmpty': 'No branches available. Please create a branch first.',
|
|
1100
|
-
'admin.rooms.form.contest': 'Select contest',
|
|
1101
|
-
'admin.rooms.form.contestPlaceholder': 'Select contest...',
|
|
1102
|
-
'admin.rooms.form.contestReload': 'Reload',
|
|
1103
|
-
'admin.rooms.form.contestCreate': 'Create contest',
|
|
1104
|
-
'admin.rooms.form.contestEmpty': 'No contests available. Please create a contest first.',
|
|
1105
|
-
'admin.rooms.form.contestUnlimitedInfo': 'Contest has no time limit',
|
|
1106
|
-
'admin.rooms.form.contestUnlimitedStart': 'Starts from: {time}',
|
|
1107
|
-
'admin.rooms.form.contestUnlimitedHint': 'Start time is required, end time is optional',
|
|
1108
|
-
'admin.rooms.form.contestLimitedInfo': 'Contest time range',
|
|
1109
|
-
'admin.rooms.form.contestLimitedRange': 'From {start} to {end}',
|
|
1110
|
-
'admin.rooms.form.contestLimitedHint': 'Room schedule must fall within the contest time range',
|
|
1111
|
-
'admin.rooms.form.startTime': 'Start time',
|
|
1112
|
-
'admin.rooms.form.endTime': 'End time',
|
|
1113
|
-
'admin.rooms.form.endTimeOptional': '(optional)',
|
|
1114
|
-
'admin.rooms.form.endTimeUnlimitedHint': 'If not set, the room will have no time limit.',
|
|
1115
|
-
'admin.rooms.form.roomName': 'Room name',
|
|
1116
|
-
'admin.rooms.form.roomNamePlaceholder': 'Room A101',
|
|
1117
|
-
'admin.rooms.form.roomCode': 'Room code',
|
|
1118
|
-
'admin.rooms.form.roomCodePlaceholder': 'ROOM-A101',
|
|
1119
|
-
'admin.rooms.form.examSelection': 'Select exam',
|
|
1120
|
-
'admin.rooms.form.examPlaceholder': 'Select exam...',
|
|
1121
|
-
'admin.rooms.form.examDisabledHint': 'Please select a contest first to show matching exams',
|
|
1122
|
-
'admin.rooms.form.examSelectContestFirst': 'Please select a contest first',
|
|
1123
|
-
'admin.rooms.form.examNoMatchClassification': 'No exams match the classification of the selected contest',
|
|
1124
|
-
'admin.rooms.form.examSummaryParent': 'Parent Exam ({count})',
|
|
1125
|
-
'admin.rooms.form.examSummaryChild': 'Child Exams ({count})',
|
|
1126
|
-
'admin.rooms.form.examChildCode': 'Code: {name}',
|
|
1127
|
-
'admin.rooms.form.location': 'Location',
|
|
1128
|
-
'admin.rooms.form.locationPlaceholder': 'Floor 1, Building A',
|
|
1129
|
-
'admin.rooms.form.lockRoom': 'Lock room',
|
|
1130
|
-
'admin.rooms.form.lockHint': 'Students cannot enter the room when locked',
|
|
1131
|
-
'admin.rooms.form.supervisors': 'Select supervisors',
|
|
1132
|
-
'admin.rooms.form.supervisorPlaceholder': 'Select supervisors...',
|
|
1133
|
-
'admin.rooms.form.roomType': 'Room type',
|
|
1134
|
-
'admin.rooms.form.roomTypeContest': 'Contest',
|
|
1135
|
-
'admin.rooms.form.roomTypePractice': 'Practice Test',
|
|
1136
|
-
'admin.rooms.form.description': 'Description',
|
|
1137
|
-
'admin.rooms.form.descriptionPlaceholder': 'Detailed description of the exam room...',
|
|
1138
|
-
'admin.rooms.form.validation.branchRequired': 'Please select a branch',
|
|
1139
|
-
'admin.rooms.form.validation.contestRequired': 'Please select a contest',
|
|
1140
|
-
'admin.rooms.form.validation.examRequired': 'Please select an exam',
|
|
1141
|
-
'admin.rooms.form.validation.startRequired': 'Please select a start time',
|
|
1142
|
-
'admin.rooms.form.validation.startFuture': 'Start time must be greater than or equal to the current time',
|
|
1143
|
-
'admin.rooms.form.validation.endRequired': 'Please select an end time',
|
|
1144
|
-
'admin.rooms.form.validation.endAfterStart': 'End time must be after start time',
|
|
1145
|
-
'admin.rooms.form.validation.classRequired': 'Please select at least 1 class',
|
|
1146
|
-
'admin.rooms.form.validation.studentRequired': 'Please select at least 1 student',
|
|
1147
|
-
// Rooms page — StudentSelectionSection
|
|
1148
|
-
'admin.rooms.studentSelection.label': 'Participants',
|
|
1149
|
-
'admin.rooms.studentSelection.all': 'All participants',
|
|
1150
|
-
'admin.rooms.studentSelection.byClass': 'By class',
|
|
1151
|
-
'admin.rooms.studentSelection.byStudent': 'Specific students',
|
|
1152
|
-
'admin.rooms.studentSelection.selectClass': 'Select classes',
|
|
1153
|
-
'admin.rooms.studentSelection.classSearchPlaceholder': 'Search classes (name, code)...',
|
|
1154
|
-
'admin.rooms.studentSelection.gradeFilterPlaceholder': 'Filter by grade',
|
|
1155
|
-
'admin.rooms.studentSelection.allGrades': 'All grades',
|
|
1156
|
-
'admin.rooms.studentSelection.gradeItem': 'Grade {grade}',
|
|
1157
|
-
'admin.rooms.studentSelection.colClassName': 'Class name',
|
|
1158
|
-
'admin.rooms.studentSelection.colClassCode': 'Class code',
|
|
1159
|
-
'admin.rooms.studentSelection.colGrade': 'Grade',
|
|
1160
|
-
'admin.rooms.studentSelection.colStudentCount': 'Students',
|
|
1161
|
-
'admin.rooms.studentSelection.noClasses': 'No classes found',
|
|
1162
|
-
'admin.rooms.studentSelection.selectedClasses': 'Selected classes: {count}',
|
|
1163
|
-
'admin.rooms.studentSelection.clearAll': 'Clear all',
|
|
1164
|
-
'admin.rooms.studentSelection.selectStudent': 'Select students',
|
|
1165
|
-
'admin.rooms.studentSelection.studentSearchPlaceholder': 'Search students (name, username, email)...',
|
|
1166
|
-
'admin.rooms.studentSelection.classFilterPlaceholder': 'Filter by class',
|
|
1167
|
-
'admin.rooms.studentSelection.allClasses': 'All classes',
|
|
1168
|
-
'admin.rooms.studentSelection.colStudentId': 'Student ID',
|
|
1169
|
-
'admin.rooms.studentSelection.colName': 'Full name',
|
|
1170
|
-
'admin.rooms.studentSelection.colEmail': 'Email',
|
|
1171
|
-
'admin.rooms.studentSelection.colClass': 'Class',
|
|
1172
|
-
'admin.rooms.studentSelection.noStudents': 'No students found',
|
|
1173
|
-
'admin.rooms.studentSelection.selectedStudents': 'Selected students: {count}',
|
|
1174
|
-
'admin.rooms.studentSelection.noClass': 'No class',
|
|
1175
|
-
'admin.rooms.studentSelection.allParticipate': 'All students will be able to participate in this exam room.',
|
|
1176
|
-
'admin.rooms.studentSelection.summaryClasses': 'Selected classes:',
|
|
1177
|
-
'admin.rooms.studentSelection.noClassSelected': 'No class selected',
|
|
1178
|
-
'admin.rooms.studentSelection.summaryStudents': 'Selected students:',
|
|
1179
|
-
'admin.rooms.studentSelection.noStudentSelected': 'No students selected',
|
|
1180
|
-
'admin.rooms.studentSelection.classUnit': '{count} students',
|
|
1181
|
-
'admin.rooms.studentSelection.studentUnit': '{count} students',
|
|
1182
|
-
'admin.rooms.studentSelection.zeroClass': '0 classes',
|
|
1183
|
-
'admin.rooms.studentSelection.zeroStudent': '0 students',
|
|
1184
|
-
// Contests page — page header
|
|
1185
|
-
'admin.contests.title': 'Contest Management',
|
|
1186
|
-
'admin.contests.subtitle': 'Create and manage contests, view reports and rankings',
|
|
1187
|
-
'admin.contests.teacher.subtitle': 'View and manage contests, track student rankings',
|
|
1188
|
-
// Contests page — tabs
|
|
1189
|
-
'admin.contests.tab.rankings': 'Rankings & Statistics',
|
|
1190
|
-
'admin.contests.tab.management': 'Contest Management',
|
|
1191
|
-
// Contests page — stats cards
|
|
1192
|
-
'admin.contests.stats.total': 'Total Contests',
|
|
1193
|
-
'admin.contests.stats.totalCompleted': '{count} completed',
|
|
1194
|
-
'admin.contests.stats.upcoming': 'Upcoming Contest',
|
|
1195
|
-
'admin.contests.stats.upcomingDays': 'days left',
|
|
1196
|
-
'admin.contests.stats.totalParticipants': 'Total Participants',
|
|
1197
|
-
'admin.contests.stats.participated': 'participated',
|
|
1198
|
-
'admin.contests.stats.avgScore': 'System Avg Score',
|
|
1199
|
-
'admin.contests.stats.overContests': 'across {count} contests',
|
|
1200
|
-
// Contests page — contest list (rankings tab)
|
|
1201
|
-
'admin.contests.list.title': 'Contest List',
|
|
1202
|
-
'admin.contests.list.desc': 'View detailed statistics per contest',
|
|
1203
|
-
'admin.contests.list.loading': 'Loading...',
|
|
1204
|
-
'admin.contests.list.empty': 'No contests yet',
|
|
1205
|
-
'admin.contests.list.participants': 'Participants:',
|
|
1206
|
-
'admin.contests.list.avgScore': 'Avg Score:',
|
|
1207
|
-
'admin.contests.list.highest': 'Highest:',
|
|
1208
|
-
'admin.contests.list.lowest': 'Lowest:',
|
|
1209
|
-
'admin.contests.list.completionRate': 'Completion Rate:',
|
|
1210
|
-
'admin.contests.list.viewDetail': 'View details',
|
|
1211
|
-
// Contests page — leaderboards
|
|
1212
|
-
'admin.contests.ranking.latestTitle': 'Top students in latest contest',
|
|
1213
|
-
'admin.contests.ranking.latestNoContest': 'No contest yet',
|
|
1214
|
-
'admin.contests.ranking.allTimeTitle': 'Top students by total score',
|
|
1215
|
-
'admin.contests.ranking.allTimeDesc': 'Top 3 all-time outstanding students',
|
|
1216
|
-
'admin.contests.ranking.loading': 'Loading...',
|
|
1217
|
-
'admin.contests.ranking.noData': 'No data yet',
|
|
1218
|
-
'admin.contests.ranking.scoreLabel': 'pts',
|
|
1219
|
-
'admin.contests.ranking.totalScoreLabel': 'total pts',
|
|
1220
|
-
'admin.contests.ranking.contestsAvg': '{count} contests • Avg: {avg}',
|
|
1221
|
-
// Contests page — management tab
|
|
1222
|
-
'admin.contests.management.title': 'Contest List',
|
|
1223
|
-
'admin.contests.management.showing': 'Showing {count} / {total} contests',
|
|
1224
|
-
'admin.contests.management.addNew': 'Add New Contest',
|
|
1225
|
-
'admin.contests.management.loading': 'Loading data...',
|
|
1226
|
-
'admin.contests.management.emptyTitle': 'No contests yet',
|
|
1227
|
-
'admin.contests.management.emptyDesc': 'Click "Add New Contest" to create the first contest',
|
|
1228
|
-
// Contests page — filters
|
|
1229
|
-
'admin.contests.filter.title': 'Search Filters',
|
|
1230
|
-
'admin.contests.filter.desc': 'Filter and search contests by criteria',
|
|
1231
|
-
'admin.contests.filter.activeCount': '{count} filters applied',
|
|
1232
|
-
'admin.contests.filter.clearAll': 'Clear all',
|
|
1233
|
-
'admin.contests.filter.activeLabel': 'Filtering:',
|
|
1234
|
-
'admin.contests.filter.searchLabel': 'Search',
|
|
1235
|
-
'admin.contests.filter.searchPlaceholder': 'Enter contest name',
|
|
1236
|
-
'admin.contests.filter.statusLabel': 'Status',
|
|
1237
|
-
'admin.contests.filter.statusPlaceholder': 'Select status',
|
|
1238
|
-
'admin.contests.filter.timeTypeLabel': 'Contest Model',
|
|
1239
|
-
'admin.contests.filter.timeTypePlaceholder': 'Select contest model type',
|
|
1240
|
-
'admin.contests.filter.allStatuses': 'All statuses',
|
|
1241
|
-
'admin.contests.filter.allTimeTypes': 'All contest model types',
|
|
1242
|
-
'admin.contests.filter.visibilityLabel': 'Visibility',
|
|
1243
|
-
'admin.contests.filter.visibilityPlaceholder': 'Select visibility',
|
|
1244
|
-
'admin.contests.filter.allVisibilities': 'All visibilities',
|
|
1245
|
-
'admin.contests.filter.noEndDate': 'No end date',
|
|
1246
|
-
// Contests page — table headers
|
|
1247
|
-
'admin.contests.table.name': 'Contest Name',
|
|
1248
|
-
'admin.contests.table.classification': 'Classification',
|
|
1249
|
-
'admin.contests.table.timeType': 'Contest Model',
|
|
1250
|
-
'admin.contests.table.time': 'Time',
|
|
1251
|
-
'admin.contests.table.status': 'Status',
|
|
1252
|
-
'admin.contests.table.active': 'Active',
|
|
1253
|
-
'admin.contests.table.actions': 'Actions',
|
|
1254
|
-
'admin.contests.table.timeTo': 'to',
|
|
1255
|
-
// Contests page — status badges
|
|
1256
|
-
'admin.contests.status.upcoming': 'Upcoming',
|
|
1257
|
-
'admin.contests.status.inProgress': 'In Progress',
|
|
1258
|
-
'admin.contests.status.completed': 'Completed',
|
|
1259
|
-
// Contests page — time type badges
|
|
1260
|
-
'admin.contests.timeType.unlimited': 'Unlimited',
|
|
1261
|
-
'admin.contests.timeType.limited': 'Time Limited',
|
|
1262
|
-
// Contests page — active status badges
|
|
1263
|
-
'admin.contests.active.active': 'Active',
|
|
1264
|
-
'admin.contests.active.paused': 'Paused',
|
|
1265
|
-
// Contests page — visibility badges
|
|
1266
|
-
'admin.contests.visibility.public': 'Public',
|
|
1267
|
-
'admin.contests.visibility.internal': 'Internal',
|
|
1268
|
-
'admin.contests.visibility.private': 'Private',
|
|
1269
|
-
// Contests page — action buttons (title attributes)
|
|
1270
|
-
'admin.contests.action.viewDetail': 'View details',
|
|
1271
|
-
'admin.contests.action.edit': 'Edit',
|
|
1272
|
-
'admin.contests.action.delete': 'Delete',
|
|
1273
|
-
// Contests page — add dialog
|
|
1274
|
-
'admin.contests.add.title': 'Add New Contest',
|
|
1275
|
-
'admin.contests.add.desc': 'Enter information to create a new contest in the system',
|
|
1276
|
-
'admin.contests.add.submitting': 'Adding...',
|
|
1277
|
-
'admin.contests.add.submit': 'Add Contest',
|
|
1278
|
-
'admin.contests.add.cancel': 'Cancel',
|
|
1279
|
-
// Contests page — edit dialog
|
|
1280
|
-
'admin.contests.edit.title': 'Edit Contest',
|
|
1281
|
-
'admin.contests.edit.desc': 'Update contest information: {name}',
|
|
1282
|
-
'admin.contests.edit.submitting': 'Updating...',
|
|
1283
|
-
'admin.contests.edit.submit': 'Update',
|
|
1284
|
-
'admin.contests.edit.cancel': 'Cancel',
|
|
1285
|
-
// Contests page — delete dialog
|
|
1286
|
-
'admin.contests.delete.title': 'Delete Contest',
|
|
1287
|
-
'admin.contests.delete.cannotUndo': 'This action cannot be undone',
|
|
1288
|
-
'admin.contests.delete.participants': '{count} participants',
|
|
1289
|
-
'admin.contests.delete.rooms': '{count} rooms',
|
|
1290
|
-
'admin.contests.delete.warningTitle': 'Important Warning',
|
|
1291
|
-
'admin.contests.delete.warningRooms': 'All exam rooms will be deleted',
|
|
1292
|
-
'admin.contests.delete.warningData': 'Participant data will be deleted',
|
|
1293
|
-
'admin.contests.delete.warningResults': 'Exam results cannot be recovered',
|
|
1294
|
-
'admin.contests.delete.cancel': 'Cancel',
|
|
1295
|
-
'admin.contests.delete.submitting': 'Deleting...',
|
|
1296
|
-
'admin.contests.delete.confirm': 'Confirm Delete',
|
|
1297
|
-
// Contests page — class room selection dialog
|
|
1298
|
-
// Contests page — detail dialog
|
|
1299
|
-
'admin.contests.detail.title': 'Contest Details',
|
|
1300
|
-
'admin.contests.detail.desc': 'Detailed statistics and analysis of exam results',
|
|
1301
|
-
'admin.contests.detail.loading': 'Loading data...',
|
|
1302
|
-
'admin.contests.detail.statAvgScore': 'Avg Score',
|
|
1303
|
-
'admin.contests.detail.statParticipants': 'Participants',
|
|
1304
|
-
'admin.contests.detail.statCompletion': 'Completion',
|
|
1305
|
-
'admin.contests.detail.statAvgTime': 'Avg Min',
|
|
1306
|
-
'admin.contests.detail.top3Title': 'Top 3 Outstanding Students',
|
|
1307
|
-
'admin.contests.detail.noStudents': 'No student data yet',
|
|
1308
|
-
'admin.contests.detail.scoreDistTitle': 'Score Distribution',
|
|
1309
|
-
'admin.contests.detail.noScoreDist': 'No score distribution data yet',
|
|
1310
|
-
'admin.contests.detail.classAvgTitle': 'Avg Score by Class',
|
|
1311
|
-
'admin.contests.detail.noClassData': 'No class data yet',
|
|
1312
|
-
'admin.contests.detail.classStudentCount': '{count} students',
|
|
1313
|
-
'admin.contests.detail.avgTimeLabel': 'Avg Completion Time',
|
|
1314
|
-
'admin.contests.detail.fastestLabel': 'Fastest',
|
|
1315
|
-
'admin.contests.detail.slowestLabel': 'Slowest',
|
|
1316
|
-
'admin.contests.detail.minuteUnit': 'min',
|
|
1317
|
-
'admin.contests.detail.contestLabel': 'Contest',
|
|
1318
|
-
'admin.contests.detail.timeLabel': 'Time',
|
|
1319
|
-
'admin.contests.detail.unlimited': 'Unlimited',
|
|
1320
|
-
'admin.contests.detail.loadError': 'Unable to load statistics data. Please try again later.',
|
|
1321
|
-
// Contests page — student detail dialog
|
|
1322
|
-
'admin.contests.student.title': 'Student Profile: {name}',
|
|
1323
|
-
'admin.contests.student.desc': 'Participation history and detailed statistics',
|
|
1324
|
-
'admin.contests.student.loading': 'Loading data...',
|
|
1325
|
-
'admin.contests.student.noClass': 'No class assigned',
|
|
1326
|
-
'admin.contests.student.codeLabel': 'Code: {code}',
|
|
1327
|
-
'admin.contests.student.avgScoreLabel': 'Avg Score',
|
|
1328
|
-
'admin.contests.student.statTotalScore': 'Total Score',
|
|
1329
|
-
'admin.contests.student.statContests': 'Contests Joined',
|
|
1330
|
-
'admin.contests.student.statBestRank': 'Best Rank',
|
|
1331
|
-
'admin.contests.student.statHighest': 'Highest Score',
|
|
1332
|
-
'admin.contests.student.scoreRangeTitle': 'Score Range',
|
|
1333
|
-
'admin.contests.student.scoreHighest': 'Highest Score',
|
|
1334
|
-
'admin.contests.student.scoreAvg': 'Average Score',
|
|
1335
|
-
'admin.contests.student.scoreLowest': 'Lowest Score',
|
|
1336
|
-
'admin.contests.student.trendTitle': 'Score Trend',
|
|
1337
|
-
'admin.contests.student.noTrendData': 'No score data yet',
|
|
1338
|
-
'admin.contests.student.skillsTitle': 'Competency Analysis',
|
|
1339
|
-
'admin.contests.student.historyTitle': 'Contest Participation History',
|
|
1340
|
-
'admin.contests.student.historyScore': 'Score:',
|
|
1341
|
-
'admin.contests.student.historyRank': 'Rank:',
|
|
1342
|
-
'admin.contests.student.historyEmpty': 'No contest participation history',
|
|
1343
|
-
'admin.contests.student.awardsTitle': 'Awards & Achievements',
|
|
1344
|
-
'admin.contests.student.rank1': '🥇 1st',
|
|
1345
|
-
'admin.contests.student.rank2': '🥈 2nd',
|
|
1346
|
-
'admin.contests.student.rank3': '🥉 3rd',
|
|
1347
|
-
'admin.contests.student.rankN': '#{rank}',
|
|
1348
|
-
'admin.contests.student.loadError': 'Unable to load student data. Please try again later.',
|
|
1349
|
-
'admin.contests.student.scoreRadarName': 'Score',
|
|
1350
|
-
// Contests page — toast messages
|
|
1351
|
-
'admin.contests.toast.addSuccess': 'Success',
|
|
1352
|
-
'admin.contests.toast.addSuccessDesc': 'New contest added!',
|
|
1353
|
-
'admin.contests.toast.editSuccess': 'Success',
|
|
1354
|
-
'admin.contests.toast.editSuccessDesc': 'Contest updated!',
|
|
1355
|
-
'admin.contests.toast.deleteSuccess': 'Success',
|
|
1356
|
-
'admin.contests.toast.deleteSuccessDesc': 'Contest "{name}" deleted',
|
|
1357
|
-
// Contests page — shared form fields
|
|
1358
|
-
'admin.contests.form.nameLabel': 'Contest Name',
|
|
1359
|
-
'admin.contests.form.namePlaceholder': 'E.g.: English Talent 2025',
|
|
1360
|
-
'admin.contests.form.charCount': '{current}/{max} characters',
|
|
1361
|
-
'admin.contests.form.classificationLabel': 'Classification',
|
|
1362
|
-
'admin.contests.form.classificationPlaceholder': 'Select classification',
|
|
1363
|
-
'admin.contests.form.roomCreationLabel': 'Rooms by Class',
|
|
1364
|
-
'admin.contests.form.roomCreationAll': 'Create all classes',
|
|
1365
|
-
'admin.contests.form.roomCreationAllDesc': 'Automatically create exam rooms for all classes',
|
|
1366
|
-
'admin.contests.form.roomCreationSelected': 'Specify classes',
|
|
1367
|
-
'admin.contests.form.roomCreationSelectedDesc': 'Select classes to create exam rooms',
|
|
1368
|
-
'admin.contests.form.examLabel': 'Exam',
|
|
1369
|
-
'admin.contests.form.examSelected': '{parentCount} parent exam, {childCount} child exams',
|
|
1370
|
-
'admin.contests.form.examNone': 'No exam selected',
|
|
1371
|
-
'admin.contests.form.examSelectBtn': 'Select Exam',
|
|
1372
|
-
'admin.contests.form.examHint': 'Select the exam for this contest',
|
|
1373
|
-
'admin.contests.form.examError': 'Please select an exam for this contest',
|
|
1374
|
-
'admin.contests.form.examSelectClassificationFirst': 'Please select contest classification first',
|
|
1375
|
-
'admin.contests.form.examParentLabel': 'Parent Exam ({count})',
|
|
1376
|
-
'admin.contests.form.examChildLabel': 'Child Exams ({count})',
|
|
1377
|
-
'admin.contests.form.examChildCode': 'Code: {name}',
|
|
1378
|
-
'admin.contests.form.descriptionLabel': 'Description',
|
|
1379
|
-
'admin.contests.form.descriptionPlaceholder': 'Detailed description about the contest...',
|
|
1380
|
-
'admin.contests.form.timeTypeLabel': 'Contest Model',
|
|
1381
|
-
'admin.contests.form.timeTypeLimited': 'Time Limited',
|
|
1382
|
-
'admin.contests.form.timeTypeLimitedDesc': 'Has start and end time',
|
|
1383
|
-
'admin.contests.form.timeTypeUnlimited': 'Unlimited',
|
|
1384
|
-
'admin.contests.form.timeTypeUnlimitedDesc': 'Has start time only, no end time',
|
|
1385
|
-
'admin.contests.form.unlimitedInfo': 'Unlimited time contest',
|
|
1386
|
-
'admin.contests.form.unlimitedInfoDesc': 'Students can join the contest anytime after the start time. There is no end time.',
|
|
1387
|
-
'admin.contests.form.contestDuration': 'Contest duration',
|
|
1388
|
-
'admin.contests.form.startTime': 'Contest start time',
|
|
1389
|
-
'admin.contests.form.startDate': 'Start Date',
|
|
1390
|
-
'admin.contests.form.startHour': 'Start Time',
|
|
1391
|
-
'admin.contests.form.endDate': 'End Date',
|
|
1392
|
-
'admin.contests.form.endHour': 'End Time',
|
|
1393
|
-
'admin.contests.form.activeStatusLabel': 'Active Status',
|
|
1394
|
-
'admin.contests.form.activeStatusHintActive': 'Contest will be active immediately after creation',
|
|
1395
|
-
'admin.contests.form.activeStatusHintPaused': 'Contest will be paused, can be activated later',
|
|
1396
|
-
'admin.contests.form.activeStatusDescActive': 'Contest is currently active',
|
|
1397
|
-
'admin.contests.form.activeStatusDescPaused': 'Contest is currently paused',
|
|
1398
|
-
// Exams page (admin.exams.*)
|
|
1399
|
-
'admin.exams.title': 'Exam Management',
|
|
1400
|
-
'admin.exams.subtitle': 'Manage exams and create new questions from templates',
|
|
1401
|
-
'admin.exams.examFallbackName': 'Exam {id}',
|
|
1402
|
-
'admin.exams.uncategorized': 'Uncategorized',
|
|
1403
|
-
// Toast messages
|
|
1404
|
-
'admin.exams.toast.deleteSuccess': 'Exam deleted successfully!',
|
|
1405
|
-
'admin.exams.toast.deleteSuccessDesc': 'Deleted exam "{name}"',
|
|
1406
|
-
'admin.exams.toast.deleteFailed': 'Deletion failed',
|
|
1407
|
-
'admin.exams.toast.deleteError': 'An error occurred while deleting the exam. Please try again.',
|
|
1408
|
-
'admin.exams.toast.success': 'Success',
|
|
1409
|
-
'admin.exams.toast.copySuccess': 'Copied exam {id}',
|
|
1410
|
-
'admin.exams.toast.shuffleSuccess': 'Created {count} shuffled variants from exam {id}! Question order has been randomized.',
|
|
1411
|
-
// Error state
|
|
1412
|
-
'admin.exams.error.loadTitle': 'Unable to load exam list',
|
|
1413
|
-
'admin.exams.error.loadMessage': 'An error occurred while loading data. Please try again.',
|
|
1414
|
-
// Statistics
|
|
1415
|
-
'admin.exams.stats.totalExams': 'Total Exams',
|
|
1416
|
-
'admin.exams.stats.activeExams': '{count} exams active',
|
|
1417
|
-
'admin.exams.stats.rooms': 'Rooms',
|
|
1418
|
-
'admin.exams.stats.totalAssigned': 'Total assigned rooms',
|
|
1419
|
-
'admin.exams.stats.completed': 'Completed',
|
|
1420
|
-
'admin.exams.stats.studentsSubmitted': 'Students submitted',
|
|
1421
|
-
'admin.exams.stats.statusDistribution': 'Status Distribution',
|
|
1422
|
-
'admin.exams.stats.ready': 'Ready',
|
|
1423
|
-
'admin.exams.stats.notReady': 'Not Ready',
|
|
1424
|
-
'admin.exams.stats.activated': 'Activated',
|
|
1425
|
-
'admin.exams.stats.deactivated': 'Deactivated',
|
|
1426
|
-
'admin.exams.stats.examUnit': '{count} exams',
|
|
1427
|
-
// Table
|
|
1428
|
-
'admin.exams.table.title': 'Exam List',
|
|
1429
|
-
'admin.exams.table.showing': 'Showing {count} / {total} exams',
|
|
1430
|
-
'admin.exams.table.createExam': 'Create Exam',
|
|
1431
|
-
'admin.exams.table.loading': 'Loading data...',
|
|
1432
|
-
'admin.exams.table.empty': 'No exams found',
|
|
1433
|
-
'admin.exams.table.createdPrefix': 'Created:',
|
|
1434
|
-
'admin.exams.table.minutes': '{count} min',
|
|
1435
|
-
'admin.exams.table.questionCount': '{count}/{total} questions',
|
|
1436
|
-
'admin.exams.table.completed': 'Completed',
|
|
1437
|
-
'admin.exams.table.ready': 'Completed',
|
|
1438
|
-
'admin.exams.table.notReady': 'Incomplete',
|
|
1439
|
-
'admin.exams.table.activated': 'Activated',
|
|
1440
|
-
'admin.exams.table.deactivated': 'Deactivated',
|
|
1441
|
-
'admin.exams.table.cannotActivate': 'Exam is not ready, cannot activate',
|
|
1442
|
-
'admin.exams.table.editContent': 'Edit exam content',
|
|
1443
|
-
// Filters
|
|
1444
|
-
'admin.exams.filter.searchPlaceholder': 'Search by name, exam code...',
|
|
1445
|
-
'admin.exams.filter.level': 'Level',
|
|
1446
|
-
'admin.exams.filter.allLevels': 'All Levels',
|
|
1447
|
-
'admin.exams.filter.ready': 'Completed',
|
|
1448
|
-
'admin.exams.filter.allReady': 'All Completion',
|
|
1449
|
-
'admin.exams.filter.isReady': 'Completed',
|
|
1450
|
-
'admin.exams.filter.notReady': 'Incomplete',
|
|
1451
|
-
'admin.exams.filter.status': 'Status',
|
|
1452
|
-
'admin.exams.filter.allStatuses': 'All Statuses',
|
|
1453
|
-
'admin.exams.filter.activated': 'Activated',
|
|
1454
|
-
'admin.exams.filter.deactivated': 'Deactivated',
|
|
1455
|
-
'admin.exams.filter.clearFilters': 'Clear Filters',
|
|
1456
|
-
'admin.exams.filter.searchLabel': 'Search:',
|
|
1457
|
-
'admin.exams.filter.levelLabel': 'Level:',
|
|
1458
|
-
'admin.exams.filter.readyLabel': 'Completed:',
|
|
1459
|
-
'admin.exams.filter.statusLabel': 'Status:',
|
|
1460
|
-
// Table columns
|
|
1461
|
-
'admin.exams.col.code': 'Code',
|
|
1462
|
-
'admin.exams.col.name': 'Title',
|
|
1463
|
-
'admin.exams.col.level': 'Level',
|
|
1464
|
-
'admin.exams.col.difficulty': 'Difficulty',
|
|
1465
|
-
'admin.exams.col.duration': 'Duration',
|
|
1466
|
-
'admin.exams.col.questions': 'Questions',
|
|
1467
|
-
'admin.exams.col.assigned': 'Assigned',
|
|
1468
|
-
'admin.exams.col.ready': 'Completed',
|
|
1469
|
-
'admin.exams.col.status': 'Status',
|
|
1470
|
-
'admin.exams.col.actions': 'Actions',
|
|
1471
|
-
'admin.exams.col.classification': 'Classification',
|
|
1472
|
-
'admin.exams.col.creator': 'Creator',
|
|
1473
|
-
'admin.exams.col.createdAt': 'Created date',
|
|
1474
|
-
// Actions
|
|
1475
|
-
'admin.exams.action.view': 'View Details',
|
|
1476
|
-
'admin.exams.action.preview': 'Preview Exam',
|
|
1477
|
-
'admin.exams.action.edit': 'Edit',
|
|
1478
|
-
'admin.exams.action.copy': 'Copy',
|
|
1479
|
-
'admin.exams.action.shuffle': 'Create Shuffled Exam',
|
|
1480
|
-
'admin.exams.action.delete': 'Delete',
|
|
1481
|
-
// Difficulty labels
|
|
1482
|
-
'admin.exams.difficulty.easy': 'Easy',
|
|
1483
|
-
'admin.exams.difficulty.medium': 'Medium',
|
|
1484
|
-
'admin.exams.difficulty.hard': 'Hard',
|
|
1485
|
-
// Delete dialog
|
|
1486
|
-
'admin.exams.delete.title': 'Confirm Delete Exam',
|
|
1487
|
-
'admin.exams.delete.confirm': 'Are you sure you want to delete exam',
|
|
1488
|
-
'admin.exams.delete.warning': 'This action cannot be undone and will delete all related data.',
|
|
1489
|
-
'admin.exams.delete.cancel': 'Cancel',
|
|
1490
|
-
'admin.exams.delete.submit': 'Delete',
|
|
1491
|
-
// Duplicate dialog
|
|
1492
|
-
'admin.exams.duplicate.title': 'Copy Exam',
|
|
1493
|
-
'admin.exams.duplicate.subtitle': 'Create a complete copy',
|
|
1494
|
-
'admin.exams.duplicate.originalExam': 'Original Exam',
|
|
1495
|
-
'admin.exams.duplicate.copyIncludes': 'Copy will include',
|
|
1496
|
-
'admin.exams.duplicate.examInfo': 'Exam information',
|
|
1497
|
-
'admin.exams.duplicate.allSettings': 'All configurations and settings',
|
|
1498
|
-
'admin.exams.duplicate.questions': 'Questions',
|
|
1499
|
-
'admin.exams.duplicate.questionCount': '{count} questions',
|
|
1500
|
-
'admin.exams.duplicate.newName': 'New Name',
|
|
1501
|
-
'admin.exams.duplicate.newCode': 'New Code',
|
|
1502
|
-
'admin.exams.duplicate.draftNote': 'The copy will be created with status',
|
|
1503
|
-
'admin.exams.duplicate.draft': 'Draft',
|
|
1504
|
-
'admin.exams.duplicate.editableNote': 'and can be edited right after creation.',
|
|
1505
|
-
'admin.exams.duplicate.cancel': 'Cancel',
|
|
1506
|
-
'admin.exams.duplicate.copying': 'Copying...',
|
|
1507
|
-
'admin.exams.duplicate.submit': 'Create Copy',
|
|
1508
|
-
// View dialog
|
|
1509
|
-
'admin.exams.view.subject': 'Subject',
|
|
1510
|
-
'admin.exams.view.level': 'Level',
|
|
1511
|
-
'admin.exams.view.duration': 'Duration',
|
|
1512
|
-
'admin.exams.view.minutes': '{count} min',
|
|
1513
|
-
'admin.exams.view.questionCount': 'Question Count',
|
|
1514
|
-
'admin.exams.view.questions': '{count} questions',
|
|
1515
|
-
'admin.exams.view.totalPoints': 'Total Points',
|
|
1516
|
-
'admin.exams.view.points': '{count} pts',
|
|
1517
|
-
'admin.exams.view.difficulty': 'Difficulty',
|
|
1518
|
-
'admin.exams.view.description': 'Description',
|
|
1519
|
-
'admin.exams.view.close': 'Close',
|
|
1520
|
-
// Shuffle dialog
|
|
1521
|
-
'admin.exams.shuffle.title': 'Create Shuffled Exam Set',
|
|
1522
|
-
'admin.exams.shuffle.desc': 'Create multiple exam versions from {code} with randomly shuffled question order',
|
|
1523
|
-
'admin.exams.shuffle.questionCount': '{count} questions',
|
|
1524
|
-
'admin.exams.shuffle.minutes': '{count} min',
|
|
1525
|
-
'admin.exams.shuffle.points': '{count} pts',
|
|
1526
|
-
'admin.exams.shuffle.howItWorks': 'How it works',
|
|
1527
|
-
'admin.exams.shuffle.info1': 'Each variant contains the exact same set of questions as the original',
|
|
1528
|
-
'admin.exams.shuffle.info2': 'The order of Parts is preserved',
|
|
1529
|
-
'admin.exams.shuffle.info3': 'Questions within the same Part are randomly shuffled',
|
|
1530
|
-
'admin.exams.shuffle.info4': 'Variants are linked to the parent exam for management',
|
|
1531
|
-
'admin.exams.shuffle.countLabel': 'Number of variants to create',
|
|
1532
|
-
'admin.exams.shuffle.strategyLabel': 'Existing exam handling option',
|
|
1533
|
-
'admin.exams.shuffle.keepOld': 'Keep existing exams and add new ones',
|
|
1534
|
-
'admin.exams.shuffle.replaceAll': 'Create a completely new set',
|
|
1535
|
-
'admin.exams.shuffle.existingVariants': 'Existing exams ({count})',
|
|
1536
|
-
'admin.exams.shuffle.deleteAll': 'Delete all ({count})',
|
|
1537
|
-
'admin.exams.shuffle.loading': 'Loading...',
|
|
1538
|
-
'admin.exams.shuffle.noVariants': 'No shuffled exams yet',
|
|
1539
|
-
'admin.exams.shuffle.variantCode': 'Code: {name}',
|
|
1540
|
-
'admin.exams.shuffle.originalBadge': '📌 Original',
|
|
1541
|
-
'admin.exams.shuffle.originalNote': 'Original question order, cannot be deleted',
|
|
1542
|
-
'admin.exams.shuffle.preview': 'Preview',
|
|
1543
|
-
'admin.exams.shuffle.close': 'Close',
|
|
1544
|
-
'admin.exams.shuffle.creating': 'Creating...',
|
|
1545
|
-
'admin.exams.shuffle.createButton': 'Create {count} shuffled exams',
|
|
1546
|
-
'admin.exams.shuffle.confirmDeleteAllTitle': 'Delete all shuffled exams?',
|
|
1547
|
-
'admin.exams.shuffle.confirmDeleteAllDesc': 'Are you sure you want to delete all {count} shuffled exams? The original exam (Code: 000) will be kept. This action cannot be undone.',
|
|
1548
|
-
'admin.exams.shuffle.cancel': 'Cancel',
|
|
1549
|
-
'admin.exams.shuffle.deleteAllBtn': 'Delete All',
|
|
1550
|
-
'admin.exams.shuffle.confirmDeleteOneTitle': 'Delete this exam?',
|
|
1551
|
-
'admin.exams.shuffle.confirmDeleteOneDesc': 'Are you sure you want to delete this exam? This action cannot be undone.',
|
|
1552
|
-
'admin.exams.shuffle.deleteBtn': 'Delete',
|
|
1553
|
-
// Create exam page
|
|
1554
|
-
'admin.exams.create.title': 'Create New Exam',
|
|
1555
|
-
'admin.exams.create.step1': 'Step 1: Enter basic exam information',
|
|
1556
|
-
'admin.exams.create.success': 'Success',
|
|
1557
|
-
'admin.exams.create.successDesc': 'Saved exam "{name}". Redirecting to Template selection...',
|
|
1558
|
-
'admin.exams.create.incompleteInfo': 'Incomplete Information',
|
|
1559
|
-
'admin.exams.create.incompleteInfoDesc': 'Please fill in all required fields and check the information entered',
|
|
1560
|
-
'admin.exams.create.cancel': 'Cancel',
|
|
1561
|
-
'admin.exams.create.saving': 'Saving...',
|
|
1562
|
-
'admin.exams.create.saveAndContinue': 'Create exam and start editing content',
|
|
1563
|
-
'admin.exams.create.loading': 'Loading...',
|
|
1564
|
-
// Shared form labels
|
|
1565
|
-
'admin.exams.form.basicInfo': 'Basic Information',
|
|
1566
|
-
'admin.exams.form.requiredHint': 'Required fields are marked with (*)',
|
|
1567
|
-
'admin.exams.form.codeLabel': 'Exam Code',
|
|
1568
|
-
'admin.exams.form.codePlaceholder': 'Enter exam code...',
|
|
1569
|
-
'admin.exams.form.charCount': '{count}/{max} characters',
|
|
1570
|
-
'admin.exams.form.nameLabel': 'Exam Name',
|
|
1571
|
-
'admin.exams.form.namePlaceholder': 'Enter exam name...',
|
|
1572
|
-
'admin.exams.form.subject': 'Subject',
|
|
1573
|
-
'admin.exams.form.subjectPlaceholder': 'Select subject',
|
|
1574
|
-
'admin.exams.form.loading': 'Loading...',
|
|
1575
|
-
'admin.exams.form.level': 'Level',
|
|
1576
|
-
'admin.exams.form.levelPlaceholder': 'Select level',
|
|
1577
|
-
'admin.exams.form.difficulty': 'Difficulty',
|
|
1578
|
-
'admin.exams.form.difficultyPlaceholder': 'Select difficulty',
|
|
1579
|
-
'admin.exams.form.easy': 'Easy',
|
|
1580
|
-
'admin.exams.form.medium': 'Medium',
|
|
1581
|
-
'admin.exams.form.hard': 'Hard',
|
|
1582
|
-
'admin.exams.form.duration': 'Exam Duration (minutes)',
|
|
1583
|
-
'admin.exams.form.totalPoints': 'Total Points',
|
|
1584
|
-
'admin.exams.form.description': 'Description',
|
|
1585
|
-
'admin.exams.form.descriptionPlaceholder': 'Detailed description about the exam, objectives, target audience...',
|
|
1586
|
-
'admin.exams.form.classification': 'Exam Classification',
|
|
1587
|
-
'admin.exams.form.classificationPlaceholder': 'Select exam classification',
|
|
1588
|
-
// Edit exam page
|
|
1589
|
-
'admin.exams.edit.title': 'Edit Exam',
|
|
1590
|
-
'admin.exams.edit.subtitle': 'Update your exam information',
|
|
1591
|
-
'admin.exams.edit.loading': 'Loading exam information...',
|
|
1592
|
-
'admin.exams.edit.loadError': 'Unable to load exam information',
|
|
1593
|
-
'admin.exams.edit.loadErrorDesc': 'An error occurred while loading data. Please try again.',
|
|
1594
|
-
'admin.exams.edit.backToList': 'Back to list',
|
|
1595
|
-
'admin.exams.edit.success': 'Updated exam {name} successfully!',
|
|
1596
|
-
'admin.exams.edit.invalidInfo': 'Invalid Information',
|
|
1597
|
-
'admin.exams.edit.invalidInfoDesc': 'Please check the information fields',
|
|
1598
|
-
'admin.exams.edit.templateInfoTitle': 'Template Information (Cannot be changed)',
|
|
1599
|
-
'admin.exams.edit.templateInfoDesc': 'The exam template was selected when creating the exam and cannot be changed',
|
|
1600
|
-
'admin.exams.edit.templateName': 'Template Name:',
|
|
1601
|
-
'admin.exams.edit.templateParts': 'Parts:',
|
|
1602
|
-
'admin.exams.edit.templateQuestions': 'Questions:',
|
|
1603
|
-
'admin.exams.edit.noTemplate': 'No Template Selected',
|
|
1604
|
-
'admin.exams.edit.noTemplateDesc': 'You need to select a Template to complete the exam structure.',
|
|
1605
|
-
'admin.exams.edit.editQuestions': 'Edit Questions',
|
|
1606
|
-
'admin.exams.edit.back': 'Back',
|
|
1607
|
-
'admin.exams.edit.saving': 'Saving...',
|
|
1608
|
-
'admin.exams.edit.saveChanges': 'Save Changes',
|
|
1609
|
-
'admin.exams.edit.saveAndSelectTemplate': 'Save exam and continue to Template selection',
|
|
1610
|
-
'admin.exams.edit.saved': 'Exam saved',
|
|
1611
|
-
'admin.exams.edit.redirectToTemplate': 'Redirecting to Template selection...',
|
|
1612
|
-
'admin.exams.edit.loadingFallback': 'Loading...',
|
|
1613
|
-
// Select template page
|
|
1614
|
-
'admin.exams.template.exam': 'Exam',
|
|
1615
|
-
'admin.exams.template.examCode': 'Exam Code:',
|
|
1616
|
-
'admin.exams.template.step2': 'Step 2: Select Exam Template',
|
|
1617
|
-
'admin.exams.template.selectTemplate': 'Select Exam Template',
|
|
1618
|
-
'admin.exams.template.error': 'Error',
|
|
1619
|
-
'admin.exams.template.loadError': 'Unable to load exam information. Please try again.',
|
|
1620
|
-
'admin.exams.template.loading': 'Loading exam information...',
|
|
1621
|
-
'admin.exams.template.loadingFallback': 'Loading...',
|
|
1622
|
-
// Preview dialog
|
|
1623
|
-
'admin.exams.preview.title': 'Preview Exam: {name}',
|
|
1624
|
-
'admin.exams.preview.examInfo': 'Exam Information',
|
|
1625
|
-
'admin.exams.preview.duration': 'Duration:',
|
|
1626
|
-
'admin.exams.preview.questionCount': 'Questions:',
|
|
1627
|
-
'admin.exams.preview.totalPoints': 'Total Points:',
|
|
1628
|
-
'admin.exams.preview.progress': 'Progress',
|
|
1629
|
-
'admin.exams.preview.loading': 'Loading...',
|
|
1630
|
-
'admin.exams.preview.questionNavigation': 'Question Navigation',
|
|
1631
|
-
'admin.exams.preview.all': 'All',
|
|
1632
|
-
'admin.exams.preview.allQuestions': 'All {count} questions',
|
|
1633
|
-
'admin.exams.preview.partQuestions': 'Part {part}: {count} questions',
|
|
1634
|
-
'admin.exams.preview.collapse': 'Collapse',
|
|
1635
|
-
'admin.exams.preview.detail': 'Details',
|
|
1636
|
-
'admin.exams.preview.questionIndex': 'Question {index} / {total}',
|
|
1637
|
-
'admin.exams.preview.noQuestions': 'No questions yet',
|
|
1638
|
-
'admin.exams.preview.loadingQuestions': 'Loading questions...',
|
|
1639
|
-
'admin.exams.preview.retry': 'Retry',
|
|
1640
|
-
'admin.exams.preview.examNoQuestions': 'This exam has no questions yet.',
|
|
1641
|
-
'admin.exams.preview.prevQuestion': 'Previous Question',
|
|
1642
|
-
'admin.exams.preview.prev': 'Prev',
|
|
1643
|
-
'admin.exams.preview.nextQuestion': 'Next Question',
|
|
1644
|
-
'admin.exams.preview.next': 'Next',
|
|
1645
|
-
'admin.exams.preview.footerNote': 'This is a preview mode to check the layout and content of the exam.',
|
|
1646
|
-
'admin.exams.preview.close': 'Close',
|
|
1647
|
-
'admin.exams.preview.loadError': 'Unable to load questions. Please try again.',
|
|
1648
|
-
'admin.exams.preview.points': '{count} pts',
|
|
1649
|
-
'admin.exams.preview.questions': '{count} questions',
|
|
1650
|
-
'admin.exams.preview.unsupportedType': 'Question type not yet supported for preview:',
|
|
1651
|
-
'admin.exams.preview.lookAndChoose': 'Look at the picture and choose the correct answer',
|
|
1652
|
-
// Configure exam page
|
|
1653
|
-
'admin.exams.configure.error': 'Error',
|
|
1654
|
-
'admin.exams.configure.loadError': 'Unable to load exam information. Please try again.',
|
|
1655
|
-
'admin.exams.configure.missingInfo': 'Missing information',
|
|
1656
|
-
'admin.exams.configure.selectTemplateFirst': 'Please select a template first.',
|
|
1657
|
-
'admin.exams.configure.templateNotFound': 'Template information not found.',
|
|
1658
|
-
'admin.exams.configure.success': 'Success',
|
|
1659
|
-
'admin.exams.configure.successDesc': 'Template configuration saved. Redirecting to question creation page...',
|
|
1660
|
-
'admin.exams.configure.loading': 'Loading information...',
|
|
1661
|
-
'admin.exams.configure.noTemplate': 'Template information not found',
|
|
1662
|
-
'admin.exams.configure.backToTemplate': 'Back to template selection',
|
|
1663
|
-
'admin.exams.configure.saving': 'Saving configuration...',
|
|
1664
|
-
'admin.exams.configure.loadingFallback': 'Loading...',
|
|
1665
|
-
// Questions page
|
|
1666
|
-
'admin.exams.questions.missingTemplate': 'Missing template',
|
|
1667
|
-
'admin.exams.questions.missingTemplateDesc': 'Exam has no template assigned. Please select a template first.',
|
|
1668
|
-
'admin.exams.questions.error': 'Error',
|
|
1669
|
-
'admin.exams.questions.loadError': 'Unable to load exam information. Please try again.',
|
|
1670
|
-
'admin.exams.questions.loading': 'Loading exam information...',
|
|
1671
|
-
'admin.exams.questions.noTemplate': 'No template found for this exam',
|
|
1672
|
-
'admin.exams.questions.noTemplateDesc': 'Please select a template before creating questions',
|
|
1673
|
-
'admin.exams.questions.back': 'Back',
|
|
1674
|
-
'admin.exams.questions.createQuestions': 'Create Questions',
|
|
1675
|
-
'admin.exams.questions.step4': 'Step 4: Create and edit exam questions',
|
|
1676
|
-
'admin.exams.questions.createAndEditQuestions': 'Create and edit exam questions',
|
|
1677
|
-
'admin.exams.questions.loadingFallback': 'Loading...',
|
|
1678
|
-
'admin.exams.questions.guide.title': 'Question Creation Guide',
|
|
1679
|
-
'admin.exams.questions.guide.subtitle': '4 simple steps • Helpful tips • Save time',
|
|
1680
|
-
'admin.exams.questions.guide.step1Title': 'Follow the order',
|
|
1681
|
-
'admin.exams.questions.guide.step1Desc': 'Complete each question in order within each Part',
|
|
1682
|
-
'admin.exams.questions.guide.step1Tip': 'Move to the next Part after completing all questions in the current Part',
|
|
1683
|
-
'admin.exams.questions.guide.step2Title': 'Standardized template',
|
|
1684
|
-
'admin.exams.questions.guide.step2Desc': 'Each Part has a predefined question type based on the template standard',
|
|
1685
|
-
'admin.exams.questions.guide.step2Tip': 'No need to worry about format - the system will automatically format according to the standard',
|
|
1686
|
-
'admin.exams.questions.guide.step3Title': 'Safe storage',
|
|
1687
|
-
'admin.exams.questions.guide.step3Desc': 'Use "Save Question" to save each question',
|
|
1688
|
-
'admin.exams.questions.guide.step3Tip': 'Press "Save Exam" when done to save everything and publish',
|
|
1689
|
-
'admin.exams.questions.guide.step4Title': 'Question bank',
|
|
1690
|
-
'admin.exams.questions.guide.step4Desc': 'Check "Add to bank" to reuse',
|
|
1691
|
-
'admin.exams.questions.guide.step4Tip': 'Questions will be saved to the shared pool and can be used in other exams',
|
|
1692
|
-
'admin.exams.questions.guide.quickTips': 'Quick tips:',
|
|
1693
|
-
'admin.exams.questions.guide.tip1': 'Ctrl+S to quickly save the current question',
|
|
1694
|
-
'admin.exams.questions.guide.tip2': 'Data is auto-saved locally on change',
|
|
1695
|
-
'admin.exams.questions.guide.tip3': 'Preview questions with the "Preview" button',
|
|
1696
|
-
// Part question count editor
|
|
1697
|
-
'admin.exams.partEditor.skillListening': 'Listening',
|
|
1698
|
-
'admin.exams.partEditor.skillSpeaking': 'Speaking',
|
|
1699
|
-
'admin.exams.partEditor.skillReading': 'Reading',
|
|
1700
|
-
'admin.exams.partEditor.skillWriting': 'Writing',
|
|
1701
|
-
'admin.exams.partEditor.qtFillMissingWordsInGrid': 'Fill in missing letters',
|
|
1702
|
-
'admin.exams.partEditor.qtLookPictureFillBlankChooseAnswer': 'Look at picture, fill in the blank',
|
|
1703
|
-
'admin.exams.partEditor.qtLookPictureChooseCorrectAnswer': 'Look at picture, choose correct answer',
|
|
1704
|
-
'admin.exams.partEditor.qtLookPictureFillWordHint': 'Look at picture, fill word (with hint)',
|
|
1705
|
-
'admin.exams.partEditor.qtLabelThePicture': 'Label the picture',
|
|
1706
|
-
'admin.exams.partEditor.qtReadAndColorObjects': 'Read and color',
|
|
1707
|
-
'admin.exams.partEditor.qtMultipleChoice': 'Multiple choice',
|
|
1708
|
-
'admin.exams.partEditor.qtListening': 'Listening comprehension',
|
|
1709
|
-
'admin.exams.partEditor.qtReading': 'Reading comprehension',
|
|
1710
|
-
'admin.exams.partEditor.defaultBack': 'Back',
|
|
1711
|
-
'admin.exams.partEditor.defaultContinue': 'Save configuration and continue',
|
|
1712
|
-
'admin.exams.partEditor.defaultExamName': 'Configure Exam',
|
|
1713
|
-
'admin.exams.partEditor.step3': 'Step 3: Configure question count',
|
|
1714
|
-
'admin.exams.partEditor.templateLabel': 'Template:',
|
|
1715
|
-
'admin.exams.partEditor.totalQuestions': 'Total questions',
|
|
1716
|
-
'admin.exams.partEditor.changedFrom': 'Changed from {from} questions',
|
|
1717
|
-
'admin.exams.partEditor.keepDefault': 'Keeping default template settings',
|
|
1718
|
-
'admin.exams.partEditor.questionsUnit': 'questions',
|
|
1719
|
-
'admin.exams.partEditor.reset': 'Reset',
|
|
1720
|
-
'admin.exams.partEditor.defaultCount': 'Default: {count}',
|
|
1721
|
-
'admin.exams.partEditor.currentCount': 'Current: {count}',
|
|
1722
|
-
'admin.exams.partEditor.configParts': 'Configure Each Part',
|
|
1723
|
-
'admin.exams.partEditor.configPartsDesc': 'Customize the number of questions for each part. Grouped questions can adjust the number of groups and questions per group.',
|
|
1724
|
-
'admin.exams.partEditor.groupBadge': 'Question group',
|
|
1725
|
-
'admin.exams.partEditor.totalPartQuestions': 'Total questions',
|
|
1726
|
-
'admin.exams.partEditor.skillLabel': 'Skill',
|
|
1727
|
-
'admin.exams.partEditor.selectSkill': 'Select skill',
|
|
1728
|
-
'admin.exams.partEditor.defaultSkill': '(default: {skill})',
|
|
1729
|
-
'admin.exams.partEditor.audioFile': 'Audio file',
|
|
1730
|
-
'admin.exams.partEditor.audioPlaceholder': 'Select audio file for this part...',
|
|
1731
|
-
'admin.exams.partEditor.questionCount': 'Question count',
|
|
1732
|
-
'admin.exams.partEditor.groupCount': 'Number of groups',
|
|
1733
|
-
'admin.exams.partEditor.addOrRemoveGroup': 'Add or remove question groups',
|
|
1734
|
-
'admin.exams.partEditor.questionsPerGroup': 'Questions per group',
|
|
1735
|
-
'admin.exams.partEditor.group': 'Group {index}',
|
|
1736
|
-
'admin.exams.partEditor.defaultValue': '(default: {value})',
|
|
1737
|
-
'admin.exams.partEditor.unsavedChanges': '• Unsaved changes',
|
|
1738
|
-
'admin.exams.partEditor.readyToContinue': '✓ Ready to continue',
|
|
1739
|
-
'admin.exams.partEditor.saving': 'Saving...',
|
|
1740
|
-
// Settings
|
|
1741
|
-
'admin.settings.title': 'System Settings',
|
|
1742
|
-
'admin.settings.subtitle': 'Manage system configuration and parameters',
|
|
1743
|
-
'admin.settings.save.success': 'Saved',
|
|
1744
|
-
'admin.settings.save.successDesc': 'Settings have been saved!',
|
|
1745
|
-
// Settings — System Information
|
|
1746
|
-
'admin.settings.systemInfo.title': 'System Information',
|
|
1747
|
-
'admin.settings.systemInfo.desc': 'General system configuration',
|
|
1748
|
-
'admin.settings.systemInfo.edit': 'Edit',
|
|
1749
|
-
'admin.settings.systemInfo.cancel': 'Cancel',
|
|
1750
|
-
'admin.settings.systemInfo.save': 'Save Changes',
|
|
1751
|
-
'admin.settings.systemInfo.systemName': 'System Name',
|
|
1752
|
-
'admin.settings.systemInfo.systemEmail': 'System Email',
|
|
1753
|
-
'admin.settings.systemInfo.supportEmail': 'Support Email',
|
|
1754
|
-
// Settings — Notification
|
|
1755
|
-
'admin.settings.notification.title': 'Notification Settings',
|
|
1756
|
-
'admin.settings.notification.desc': 'Manage notification channels',
|
|
1757
|
-
'admin.settings.notification.email': 'Email Notifications',
|
|
1758
|
-
'admin.settings.notification.emailDesc': 'Send email notifications to students and teachers',
|
|
1759
|
-
'admin.settings.notification.sms': 'SMS Notifications',
|
|
1760
|
-
'admin.settings.notification.smsDesc': 'Send important SMS notifications',
|
|
1761
|
-
// Settings — EBM Integration
|
|
1762
|
-
'admin.settings.ebm.title': 'EBM Integration',
|
|
1763
|
-
'admin.settings.ebm.desc': 'Configure connection to EBM system',
|
|
1764
|
-
'admin.settings.ebm.testConnection': 'Test Connection',
|
|
1765
|
-
'admin.settings.ebm.syncNow': 'Sync Now',
|
|
1766
|
-
// Settings — System Status
|
|
1767
|
-
'admin.settings.status.title': 'System Status',
|
|
1768
|
-
'admin.settings.status.desc': 'System operation information',
|
|
1769
|
-
'admin.settings.status.operational': 'Operational',
|
|
1770
|
-
'admin.settings.status.connected': 'Connected',
|
|
1771
|
-
'admin.settings.status.active': 'Active',
|
|
1772
|
-
'admin.settings.status.paused': 'Paused',
|
|
1773
|
-
'admin.settings.status.lastBackup': 'Yesterday 23:00',
|
|
1774
|
-
// Test Participants (students/test-participants)
|
|
1775
|
-
'admin.testParticipants.title': 'Test Participants',
|
|
1776
|
-
'admin.testParticipants.subtitle': 'Track information and exam results of participants in the system',
|
|
1777
|
-
'admin.testParticipants.cardTitle': 'Test Participants List',
|
|
1778
|
-
'admin.testParticipants.cardDescription': 'Total {totalItems} participants found',
|
|
1779
|
-
'admin.testParticipants.clearFilters': 'Clear filters',
|
|
1780
|
-
'admin.testParticipants.filterHeader': 'Search filters',
|
|
1781
|
-
'admin.testParticipants.searchPlaceholder': 'Search by name, email or phone number...',
|
|
1782
|
-
'admin.testParticipants.branchLabel': 'Branch',
|
|
1783
|
-
'admin.testParticipants.allBranches': 'All branches',
|
|
1784
|
-
'admin.testParticipants.contestLabel': 'Contest',
|
|
1785
|
-
'admin.testParticipants.allContests': 'All contests',
|
|
1786
|
-
'admin.testParticipants.fromDate': 'From date',
|
|
1787
|
-
'admin.testParticipants.toDate': 'To date',
|
|
1788
|
-
'admin.testParticipants.col.participant': 'Participant',
|
|
1789
|
-
'admin.testParticipants.col.phone': 'Phone',
|
|
1790
|
-
'admin.testParticipants.col.dob': 'Date of Birth',
|
|
1791
|
-
'admin.testParticipants.col.branch': 'Branch',
|
|
1792
|
-
'admin.testParticipants.col.contest': 'Contest',
|
|
1793
|
-
'admin.testParticipants.col.exam': 'Exam',
|
|
1794
|
-
'admin.testParticipants.col.bestScore': 'Best Score',
|
|
1795
|
-
'admin.testParticipants.col.maxScore': 'Max Score',
|
|
1796
|
-
'admin.testParticipants.col.attemptCount': 'Attempts',
|
|
1797
|
-
'admin.testParticipants.col.lastAttempt': 'Last Attempt',
|
|
1798
|
-
'admin.testParticipants.col.actions': 'Actions',
|
|
1799
|
-
'admin.testParticipants.loading': 'Loading data...',
|
|
1800
|
-
'admin.testParticipants.empty.title': 'No data found',
|
|
1801
|
-
'admin.testParticipants.empty.withFilters': 'No results match the current filters. Please adjust your search criteria.',
|
|
1802
|
-
'admin.testParticipants.empty.noData': 'No participants have taken any exams yet.',
|
|
1803
|
-
'admin.testParticipants.viewDetail': 'View exam history details',
|
|
1804
|
-
'admin.testParticipants.detail': 'Details',
|
|
1805
|
-
// Test Participants - Dialog
|
|
1806
|
-
'admin.testParticipants.dialog.title': 'Exam History Details',
|
|
1807
|
-
'admin.testParticipants.dialog.description': 'Detailed information about exam results and attempt history of the participant',
|
|
1808
|
-
'admin.testParticipants.dialog.studentInfo': 'Participant Information',
|
|
1809
|
-
'admin.testParticipants.dialog.fullName': 'Full Name',
|
|
1810
|
-
'admin.testParticipants.dialog.email': 'Email Address',
|
|
1811
|
-
'admin.testParticipants.dialog.phone': 'Phone Number',
|
|
1812
|
-
'admin.testParticipants.dialog.dob': 'Date of Birth',
|
|
1813
|
-
'admin.testParticipants.dialog.branch': 'Branch',
|
|
1814
|
-
'admin.testParticipants.dialog.examInfo': 'Exam Information',
|
|
1815
|
-
'admin.testParticipants.dialog.contest': 'Contest',
|
|
1816
|
-
'admin.testParticipants.dialog.exam': 'Exam',
|
|
1817
|
-
'admin.testParticipants.dialog.lastAttempt': 'Last Attempt',
|
|
1818
|
-
'admin.testParticipants.dialog.bestScore': 'Best Score',
|
|
1819
|
-
'admin.testParticipants.dialog.passRate': 'Pass Rate',
|
|
1820
|
-
'admin.testParticipants.dialog.totalAttempts': 'Total Attempts',
|
|
1821
|
-
'admin.testParticipants.dialog.historyTitle': 'Attempt History',
|
|
1822
|
-
'admin.testParticipants.dialog.col.attempt': 'Attempt',
|
|
1823
|
-
'admin.testParticipants.dialog.col.score': 'Score',
|
|
1824
|
-
'admin.testParticipants.dialog.col.rate': 'Rate',
|
|
1825
|
-
'admin.testParticipants.dialog.col.status': 'Status',
|
|
1826
|
-
'admin.testParticipants.dialog.col.startTime': 'Start Time',
|
|
1827
|
-
'admin.testParticipants.dialog.col.submitTime': 'Submit Time',
|
|
1828
|
-
'admin.testParticipants.dialog.noAttempts': 'No attempt data available.',
|
|
1829
|
-
// Test Participants - Status badges
|
|
1830
|
-
'admin.testParticipants.status.inProgress': 'In Progress',
|
|
1831
|
-
'admin.testParticipants.status.submitted': 'Submitted',
|
|
1832
|
-
'admin.testParticipants.status.graded': 'Graded',
|
|
1833
|
-
'admin.testParticipants.status.published': 'Published',
|
|
1834
|
-
// Roles list page
|
|
1835
|
-
'admin.roles.title': 'Role Management',
|
|
1836
|
-
'admin.roles.subtitle': 'Manage roles and permissions in the system',
|
|
1837
|
-
'admin.roles.table.title': 'Role List',
|
|
1838
|
-
'admin.roles.table.showing': 'Showing {count} roles',
|
|
1839
|
-
'admin.roles.table.empty': 'No roles found',
|
|
1840
|
-
'admin.roles.table.loading': 'Loading...',
|
|
1841
|
-
'admin.roles.table.addRole': 'Create new role',
|
|
1842
|
-
'admin.roles.col.name': 'Role name',
|
|
1843
|
-
'admin.roles.col.slug': 'Slug',
|
|
1844
|
-
'admin.roles.col.level': 'Level',
|
|
1845
|
-
'admin.roles.col.permCount': 'Permissions',
|
|
1846
|
-
'admin.roles.col.type': 'Type',
|
|
1847
|
-
'admin.roles.col.actions': 'Actions',
|
|
1848
|
-
'admin.roles.filter.searchPlaceholder': 'Search by name or slug...',
|
|
1849
|
-
'admin.roles.filter.allLevels': 'All levels',
|
|
1850
|
-
'admin.roles.level.system': 'System',
|
|
1851
|
-
'admin.roles.level.branch': 'Branch',
|
|
1852
|
-
'admin.roles.type.system': 'System',
|
|
1853
|
-
'admin.roles.type.custom': 'Custom',
|
|
1854
|
-
// Create role
|
|
1855
|
-
'admin.role.create.title': 'Create new role',
|
|
1856
|
-
'admin.role.create.subtitle': 'Create a custom role for the system',
|
|
1857
|
-
'admin.role.create.success': 'Role created successfully',
|
|
1858
|
-
'admin.role.create.submit': 'Create role',
|
|
1859
|
-
'admin.role.create.submitting': 'Creating...',
|
|
1860
|
-
'admin.role.field.name': 'Role name',
|
|
1861
|
-
'admin.role.field.slug': 'Slug',
|
|
1862
|
-
'admin.role.field.slugHint': 'Lowercase letters, numbers, underscores and hyphens only',
|
|
1863
|
-
'admin.role.field.level': 'Level',
|
|
1864
|
-
'admin.role.field.description': 'Description',
|
|
1865
|
-
'admin.role.field.portalType': 'Belongs to portal',
|
|
1866
|
-
'admin.role.field.portalTypeHint': 'Select the portal this role will have access to',
|
|
1867
|
-
'admin.role.field.portal.admin': 'Admin Portal',
|
|
1868
|
-
'admin.role.field.portal.adminDesc': 'System, exam & user management',
|
|
1869
|
-
'admin.role.field.portal.teacher': 'Teacher Portal',
|
|
1870
|
-
'admin.role.field.portal.teacherDesc': 'Class management & grading',
|
|
1871
|
-
'admin.role.field.portal.student': 'Student Portal',
|
|
1872
|
-
'admin.role.field.portal.studentDesc': 'Online exams & results',
|
|
1873
|
-
// Delete role
|
|
1874
|
-
'admin.role.delete.title': 'Delete role',
|
|
1875
|
-
'admin.role.delete.desc': 'Are you sure you want to delete the role "{name}"? This action cannot be undone.',
|
|
1876
|
-
'admin.role.delete.confirm': 'Delete role',
|
|
1877
|
-
'admin.role.delete.success': 'Role "{name}" deleted',
|
|
1878
|
-
'admin.role.delete.cannotSystem': 'Cannot delete a system role',
|
|
1879
|
-
// Role detail
|
|
1880
|
-
'admin.role.backToList': 'Back to list',
|
|
1881
|
-
'admin.role.info.title': 'Role information',
|
|
1882
|
-
'admin.role.info.edit': 'Edit',
|
|
1883
|
-
'admin.role.info.save': 'Save',
|
|
1884
|
-
'admin.role.info.cancel': 'Cancel',
|
|
1885
|
-
'admin.role.update.success': 'Role updated successfully',
|
|
1886
|
-
// Permission editor
|
|
1887
|
-
'admin.role.permissions.title': 'Permissions',
|
|
1888
|
-
'admin.role.permissions.showing': '{selected}/{total} permissions selected',
|
|
1889
|
-
'admin.role.permissions.save': 'Save changes',
|
|
1890
|
-
'admin.role.permissions.saving': 'Saving...',
|
|
1891
|
-
'admin.role.permissions.saveSuccess': 'Permissions updated successfully',
|
|
1892
|
-
'admin.role.permissions.systemWarning': 'This is a system role. Permissions cannot be edited.',
|
|
1893
|
-
'admin.role.permissions.selectAll': 'Select all',
|
|
1894
|
-
'admin.role.permissions.unsavedChanges': '{count} unsaved changes',
|
|
1895
|
-
// User role assignment
|
|
1896
|
-
'admin.user.roles.title': 'Assigned roles',
|
|
1897
|
-
'admin.user.roles.assign': 'Assign role',
|
|
1898
|
-
'admin.user.roles.empty': 'No roles assigned yet',
|
|
1899
|
-
'admin.user.roles.col.role': 'Role',
|
|
1900
|
-
'admin.user.roles.col.branch': 'Branch',
|
|
1901
|
-
'admin.user.roles.col.assignedAt': 'Assigned date',
|
|
1902
|
-
'admin.user.roles.col.assignedBy': 'Assigned by',
|
|
1903
|
-
'admin.user.roles.col.actions': 'Actions',
|
|
1904
|
-
'admin.user.roles.sessionCacheInfo': 'Role changes will take effect after the user logs in again.',
|
|
1905
|
-
'admin.user.role.assign.title': 'Assign role',
|
|
1906
|
-
'admin.user.role.assign.desc': 'Select a role and branch to assign to the user',
|
|
1907
|
-
'admin.user.role.assign.roleLabel': 'Role',
|
|
1908
|
-
'admin.user.role.assign.rolePlaceholder': 'Select a role',
|
|
1909
|
-
'admin.user.role.assign.branchLabel': 'Branch',
|
|
1910
|
-
'admin.user.role.assign.branchPlaceholder': 'Select a branch',
|
|
1911
|
-
'admin.user.role.assign.submit': 'Assign role',
|
|
1912
|
-
'admin.user.role.assign.success': 'Role "{role}" assigned successfully',
|
|
1913
|
-
'admin.user.role.remove.title': 'Remove role',
|
|
1914
|
-
'admin.user.role.remove.desc': 'Are you sure you want to remove the role "{role}" from this user?',
|
|
1915
|
-
'admin.user.role.remove.confirm': 'Remove role',
|
|
1916
|
-
'admin.user.role.remove.success': 'Role "{role}" removed successfully',
|
|
1917
|
-
// Template management
|
|
1918
|
-
'admin.templates.title': 'Exam Template Management',
|
|
1919
|
-
'admin.templates.subtitle': 'View, import, export, and delete exam templates',
|
|
1920
|
-
'admin.templates.table.title': 'Template List',
|
|
1921
|
-
'admin.templates.searchPlaceholder': 'Search templates',
|
|
1922
|
-
'admin.templates.table.empty': 'No templates found',
|
|
1923
|
-
'admin.templates.table.loading': 'Loading templates...',
|
|
1924
|
-
'admin.templates.table.showing': 'Showing {count} templates',
|
|
1925
|
-
'admin.templates.col.title': 'Title',
|
|
1926
|
-
'admin.templates.col.subTitle': 'Subtitle',
|
|
1927
|
-
'admin.templates.col.examLevel': 'Level',
|
|
1928
|
-
'admin.templates.col.theme': 'Theme',
|
|
1929
|
-
'admin.templates.col.totalParts': 'Parts',
|
|
1930
|
-
'admin.templates.col.totalQuestions': 'Questions',
|
|
1931
|
-
'admin.templates.col.createdBy': 'Created By',
|
|
1932
|
-
'admin.templates.col.createdAt': 'Created',
|
|
1933
|
-
'admin.templates.col.updatedAt': 'Updated',
|
|
1934
|
-
'admin.templates.col.examCount': 'Exams',
|
|
1935
|
-
'admin.templates.col.actions': 'Actions',
|
|
1936
|
-
'admin.templates.filter.searchPlaceholder': 'Search by title...',
|
|
1937
|
-
'admin.templates.action.view': 'View details',
|
|
1938
|
-
'admin.templates.action.export': 'Export',
|
|
1939
|
-
'admin.templates.action.delete': 'Delete',
|
|
1940
|
-
'admin.templates.action.import': 'Import Template',
|
|
1941
|
-
'admin.templates.action.exporting': 'Exporting...',
|
|
1942
|
-
'admin.templates.export.success': 'Template exported successfully',
|
|
1943
|
-
'admin.templates.export.error': 'Failed to export template',
|
|
1944
|
-
'admin.templates.import.success': 'Template imported successfully',
|
|
1945
|
-
'admin.templates.import.error': 'Failed to import template',
|
|
1946
|
-
'admin.templates.import.invalidJson': 'Invalid JSON file. Please check the file format.',
|
|
1947
|
-
'admin.templates.import.invalidFile': 'Please select a valid .json file.',
|
|
1948
|
-
'admin.templates.import.invalidFormat': 'Invalid template format. The file must contain title and parts fields.',
|
|
1949
|
-
'admin.templates.import.parseError': 'Failed to parse JSON file. Please check the file content.',
|
|
1950
|
-
'admin.templates.import.readError': 'Failed to read file. Please try again.',
|
|
1951
|
-
'admin.templates.import.title': 'Import Template',
|
|
1952
|
-
'admin.templates.import.desc': 'Select a JSON file previously exported from the system. If a template with the same ID already exists, it will be replaced.',
|
|
1953
|
-
'admin.templates.import.selectFile': 'Select JSON file',
|
|
1954
|
-
'admin.templates.import.submit': 'Import',
|
|
1955
|
-
'admin.templates.import.submitting': 'Importing...',
|
|
1956
|
-
'admin.templates.delete.title': 'Delete Template',
|
|
1957
|
-
'admin.templates.delete.desc': 'Are you sure you want to delete the template "{title}"? This action cannot be undone.',
|
|
1958
|
-
'admin.templates.delete.confirm': 'Delete template',
|
|
1959
|
-
'admin.templates.delete.success': 'Template "{title}" deleted successfully',
|
|
1960
|
-
'admin.templates.detail.title': 'Template Details',
|
|
1961
|
-
'admin.templates.detail.back': 'Back to list',
|
|
1962
|
-
'admin.templates.detail.jsonView': 'JSON Content',
|
|
1963
|
-
'admin.templates.detail.info': 'General Information',
|
|
1964
|
-
'admin.templates.detail.parts': 'Parts ({count})',
|
|
1965
|
-
'admin.templates.detail.copyJson': 'Copy JSON',
|
|
1966
|
-
'admin.templates.detail.jsonCopied': 'JSON copied to clipboard',
|
|
1967
|
-
'admin.templates.create.title': 'Create Template',
|
|
1968
|
-
'admin.templates.create.desc': 'Fill in the template details below. Only the Parts field requires JSON input.',
|
|
1969
|
-
'admin.templates.create.placeholder': 'Paste JSON content here...\n\n{\n "title": "...",\n "examLevel": "...",\n "parts": [...]\n}',
|
|
1970
|
-
'admin.templates.create.submit': 'Create Template',
|
|
1971
|
-
'admin.templates.create.creating': 'Creating...',
|
|
1972
|
-
'admin.templates.create.success': 'Template created successfully',
|
|
1973
|
-
'admin.templates.create.emptyJson': 'Please paste JSON content.',
|
|
1974
|
-
'admin.templates.create.invalidFormat': 'Invalid template format. The JSON must contain title, examLevel and parts fields.',
|
|
1975
|
-
'admin.templates.create.parseError': 'Invalid JSON. Please check the content and try again.',
|
|
1976
|
-
'admin.templates.create.validJson': 'Valid JSON — ready to create',
|
|
1977
|
-
'admin.templates.action.create': 'Create Template',
|
|
1978
|
-
'admin.templates.action.edit': 'Edit',
|
|
1979
|
-
// Template form fields
|
|
1980
|
-
'admin.templates.form.titleLabel': 'Title',
|
|
1981
|
-
'admin.templates.form.titlePlaceholder': 'Enter template title...',
|
|
1982
|
-
'admin.templates.form.titleRequired': 'Title is required.',
|
|
1983
|
-
'admin.templates.form.subTitleLabel': 'Subtitle',
|
|
1984
|
-
'admin.templates.form.subTitlePlaceholder': 'Enter subtitle (optional)...',
|
|
1985
|
-
'admin.templates.form.descriptionLabel': 'Description',
|
|
1986
|
-
'admin.templates.form.descriptionPlaceholder': 'Enter description (optional)...',
|
|
1987
|
-
'admin.templates.form.examLevelLabel': 'Exam Level (CEFR)',
|
|
1988
|
-
'admin.templates.form.examLevelPlaceholder': 'Select exam level...',
|
|
1989
|
-
'admin.templates.form.totalQuestionsLabel': 'Total Questions',
|
|
1990
|
-
'admin.templates.form.totalPartsLabel': 'Total Parts',
|
|
1991
|
-
'admin.templates.form.partsLabel': 'Parts (JSON)',
|
|
1992
|
-
'admin.templates.form.partsPlaceholder': '[\n {\n "partNumber": 1,\n "title": "Part 1",\n "questionCount": 5,\n ...\n }\n]',
|
|
1993
|
-
'admin.templates.form.partsRequired': 'Parts JSON is required and must be a non-empty array.',
|
|
1994
|
-
'admin.templates.form.partsNotArray': 'Parts must be a JSON array.',
|
|
1995
|
-
'admin.templates.form.partsParseError': 'Invalid JSON. Please check the content.',
|
|
1996
|
-
'admin.templates.form.validJson': 'Valid JSON',
|
|
1997
|
-
'admin.templates.form.themeLabel': 'Theme',
|
|
1998
|
-
'admin.templates.form.themePlaceholder': 'Select theme...',
|
|
1999
|
-
'admin.templates.form.themeNone': 'None',
|
|
2000
|
-
// Template edit
|
|
2001
|
-
'admin.templates.edit.title': 'Edit Template',
|
|
2002
|
-
'admin.templates.edit.desc': 'Modify the template details below. Only the Parts field requires JSON input.',
|
|
2003
|
-
'admin.templates.edit.submit': 'Save Changes',
|
|
2004
|
-
'admin.templates.edit.saving': 'Saving...',
|
|
2005
|
-
'admin.templates.edit.success': 'Template updated successfully',
|
|
2006
|
-
'admin.templates.edit.loadError': 'Failed to load template data for editing',
|
|
2007
|
-
// ===== Bulk Exam Room Provisioning (System Admin) =====
|
|
2008
|
-
'bulkRooms.sidebar.label': 'Bulk Exam Rooms',
|
|
2009
|
-
'bulkRooms.page.title': 'Bulk Exam Room Provisioning',
|
|
2010
|
-
'bulkRooms.page.description': 'Create many exam rooms for a contest across multiple branches in a single operation.',
|
|
2011
|
-
'bulkRooms.actions.next': 'Next',
|
|
2012
|
-
'bulkRooms.actions.back': 'Back',
|
|
2013
|
-
'bulkRooms.actions.preview': 'Preview',
|
|
2014
|
-
'bulkRooms.actions.commit': 'Create rooms',
|
|
2015
|
-
'bulkRooms.actions.confirm': 'Confirm',
|
|
2016
|
-
'bulkRooms.actions.cancel': 'Cancel',
|
|
2017
|
-
'bulkRooms.actions.reset': 'Start over',
|
|
2018
|
-
'bulkRooms.actions.close': 'Close',
|
|
2019
|
-
'bulkRooms.steps.contest': 'Pick contest',
|
|
2020
|
-
'bulkRooms.steps.branches': 'Pick branches',
|
|
2021
|
-
'bulkRooms.steps.config': 'Configure',
|
|
2022
|
-
'bulkRooms.steps.preview': 'Preview',
|
|
2023
|
-
'bulkRooms.steps.commit': 'Create rooms',
|
|
2024
|
-
'bulkRooms.steps.indicator': 'Step {current} of {total}',
|
|
2025
|
-
'bulkRooms.contest.title': 'Pick a contest',
|
|
2026
|
-
'bulkRooms.contest.description': 'Choose the contest the new rooms will belong to.',
|
|
2027
|
-
'bulkRooms.contest.placeholder': 'Search contests by name...',
|
|
2028
|
-
'bulkRooms.contest.empty': 'No contests found.',
|
|
2029
|
-
'bulkRooms.contest.selected': 'Selected: {name}',
|
|
2030
|
-
'bulkRooms.branches.title': 'Pick branches',
|
|
2031
|
-
'bulkRooms.branches.description': 'Select one or more branches to provision rooms for.',
|
|
2032
|
-
'bulkRooms.branches.placeholder': 'Choose branches...',
|
|
2033
|
-
'bulkRooms.branches.empty': 'No branches available.',
|
|
2034
|
-
'bulkRooms.branches.selectedCount': '{count} branches selected',
|
|
2035
|
-
'bulkRooms.branches.sourceEbm': 'Branch list is loaded from the EBM system.',
|
|
2036
|
-
'bulkRooms.branches.selectAll': 'Select all branches',
|
|
2037
|
-
'bulkRooms.branches.selectedSummary': '{selected}/{total} branches selected',
|
|
2038
|
-
'bulkRooms.config.title': 'Per-branch configuration',
|
|
2039
|
-
'bulkRooms.config.description': 'Configure how rooms are generated for each selected branch.',
|
|
2040
|
-
'bulkRooms.config.mode.label': 'Provisioning mode',
|
|
2041
|
-
'bulkRooms.config.mode.AUTO_CLASS': 'Auto from classes',
|
|
2042
|
-
'bulkRooms.config.mode.MANUAL': 'Manual',
|
|
2043
|
-
'bulkRooms.config.mode.AUTO_CLASS.help': 'Generate one room per active class room of the branch.',
|
|
2044
|
-
'bulkRooms.config.mode.MANUAL.help': 'Define rooms and student codes manually.',
|
|
2045
|
-
'bulkRooms.config.onlyTeacher.label': 'Add branch teachers to the rooms',
|
|
2046
|
-
'bulkRooms.config.onlyTeacher.help': 'If checked, all teachers of the branch will be added. If unchecked, no teachers will be added.',
|
|
2047
|
-
'bulkRooms.config.nameFormat.label': 'Room name format',
|
|
2048
|
-
'bulkRooms.config.nameFormat.placeholder': '{branchCode} - {className}',
|
|
2049
|
-
'bulkRooms.config.codeFormat.label': 'Room code format (optional)',
|
|
2050
|
-
'bulkRooms.config.codeFormat.placeholder': '{branchCode}_ROOM_{index}',
|
|
2051
|
-
'bulkRooms.config.tokens.help': 'Supported tokens: {tokens}',
|
|
2052
|
-
'bulkRooms.config.classEbmIds.label': 'Class room ids (optional)',
|
|
2053
|
-
'bulkRooms.config.classEbmIds.placeholder': 'Comma-separated class room ids',
|
|
2054
|
-
'bulkRooms.config.classEbmIds.help': 'Leave empty to use all active class rooms of the branch.',
|
|
2055
|
-
'bulkRooms.config.rooms.title': 'Rooms (manual mode)',
|
|
2056
|
-
'bulkRooms.config.rooms.add': 'Add room',
|
|
2057
|
-
'bulkRooms.config.rooms.remove': 'Remove',
|
|
2058
|
-
'bulkRooms.config.rooms.empty': 'No rooms yet. Click "Add room" to start.',
|
|
2059
|
-
'bulkRooms.config.studentCodes.label': 'Student codes (optional, one per line)',
|
|
2060
|
-
'bulkRooms.config.studentCodes.placeholder': 'HS001\nHS002\n...',
|
|
2061
|
-
'bulkRooms.config.studentCodes.help': 'Missing users will be created on commit (default password = student code).',
|
|
2062
|
-
'bulkRooms.preview.title': 'Preview',
|
|
2063
|
-
'bulkRooms.preview.description': 'Review the planned rooms before confirming.',
|
|
2064
|
-
'bulkRooms.preview.loading': 'Building plan...',
|
|
2065
|
-
'bulkRooms.preview.error': 'Failed to build preview.',
|
|
2066
|
-
'bulkRooms.preview.requiresForm': 'Select contest, branches and complete config to enable preview.',
|
|
2067
|
-
'bulkRooms.preview.summary.totalRooms': 'Total rooms',
|
|
2068
|
-
'bulkRooms.preview.summary.totalStaff': 'Total staff',
|
|
2069
|
-
'bulkRooms.preview.summary.totalStudents': 'Total students',
|
|
2070
|
-
'bulkRooms.preview.summary.totalNewUsers': 'New users to create',
|
|
2071
|
-
'bulkRooms.preview.summary.totalNewStudents': 'New student accounts',
|
|
2072
|
-
'bulkRooms.preview.summary.totalNewTeachers': 'New teacher accounts',
|
|
2073
|
-
'bulkRooms.preview.table.branch': 'Branch',
|
|
2074
|
-
'bulkRooms.preview.table.room': 'Room name',
|
|
2075
|
-
'bulkRooms.preview.table.code': 'Room code',
|
|
2076
|
-
'bulkRooms.preview.table.staff': 'Staff',
|
|
2077
|
-
'bulkRooms.preview.table.students': 'Students',
|
|
2078
|
-
'bulkRooms.preview.table.newUsers': 'New users',
|
|
2079
|
-
'bulkRooms.preview.table.roomName': 'Room name',
|
|
2080
|
-
'bulkRooms.preview.table.roomCode': 'Room code',
|
|
2081
|
-
'bulkRooms.preview.table.staffCount': 'Staff',
|
|
2082
|
-
'bulkRooms.preview.table.studentCount': 'Students',
|
|
2083
|
-
'bulkRooms.preview.table.roomCount': '{count} rooms',
|
|
2084
|
-
'bulkRooms.preview.table.noRooms': 'No rooms for this branch.',
|
|
2085
|
-
'bulkRooms.preview.table.showMore': 'Show {count} more rooms',
|
|
2086
|
-
'bulkRooms.preview.table.collapse': 'Collapse',
|
|
2087
|
-
'bulkRooms.preview.empty': 'No rooms in the plan.',
|
|
2088
|
-
'bulkRooms.commit.dialog.title': 'Confirm bulk provisioning',
|
|
2089
|
-
'bulkRooms.commit.dialog.description': 'You are about to create {rooms} rooms and {users} new users. This action cannot be undone.',
|
|
2090
|
-
'bulkRooms.commit.dialog.warning': 'This will create rooms and users in the database and cannot be undone.',
|
|
2091
|
-
'bulkRooms.commit.dialog.confirmCheckbox': 'I have reviewed the preview and confirm creating these rooms.',
|
|
2092
|
-
'bulkRooms.commit.dialog.committing': 'Creating...',
|
|
2093
|
-
'bulkRooms.commit.success.title': 'Provisioning succeeded',
|
|
2094
|
-
'bulkRooms.commit.success.description': 'Created {rooms} rooms, {participants} participants and {users} new users.',
|
|
2095
|
-
'bulkRooms.commit.success.rooms': 'Rooms created',
|
|
2096
|
-
'bulkRooms.commit.success.participants': 'Participants',
|
|
2097
|
-
'bulkRooms.commit.success.users': 'New users',
|
|
2098
|
-
'bulkRooms.commit.error.title': 'Provisioning failed',
|
|
2099
|
-
'bulkRooms.commit.error.description': 'Some branches failed to provision. See error details below.',
|
|
2100
|
-
'bulkRooms.commit.error.list': 'Error list',
|
|
2101
|
-
'bulkRooms.commit.error.partial': '{count} branch(es) reported errors.',
|
|
2102
|
-
'bulkRooms.commit.error.branch': 'Branch {branchId} (EBM #{ebmBranchId}): {reason}',
|
|
2103
|
-
};
|
|
2104
|
-
export default admin;
|
|
2105
|
-
//# sourceMappingURL=admin.js.map
|
|
1
|
+
export default{"admin.user.create.success":"User created successfully!","admin.user.update.success":"User updated successfully!","admin.user.update.error":"An error occurred while updating the user!","admin.user.delete.success":"User deleted successfully!","admin.user.delete.error":"An error occurred while deleting the user!","admin.exam.create.error":"Unable to create exam. Please try again!","admin.exam.update.error":"Unable to update exam. Please try again!","admin.exam.delete.error":"Unable to delete exam. Please try again!","admin.exam.template.update.error":"Unable to update template. Please try again!","admin.exam.copy.success":"Exam copied successfully: {name} ({count} questions)","admin.exam.copy.error":"Unable to copy exam. Please try again!","admin.exam.toggle.activated":'Exam "{name}" activated!',"admin.exam.toggle.deactivated":'Exam "{name}" deactivated!',"admin.exam.toggle.error":"Unable to change exam status. Please try again!","admin.exam.variants.delete.success":"Successfully deleted {count} shuffled variants!","admin.exam.variants.delete.empty":"No shuffled variants to delete.","admin.exam.variants.delete.error":"Unable to delete shuffled variants. Please try again!","admin.question.batchCreate.partial":"Created {successCount}/{total} questions successfully. {errorCount} failed.","admin.question.batchCreate.itemError":"Question {index}: {error}","admin.question.batchCreate.error":"Error creating questions: {message}","admin.questionBank.update.success":"Question updated successfully!","admin.questionBank.update.error":"Unable to update question. Please try again!","admin.questionBank.delete.success":"Question deleted successfully!","admin.questionBank.delete.error":"Unable to delete question. Please try again!","admin.questionBank.create.missingInfo":"Missing information","admin.questionBank.create.success":"Success!","admin.questionBank.create.error":"Error","admin.questionBank.create.preview":"Preview","admin.questionBank.page.title":"Question Bank","admin.questionBank.page.subtitle":"Manage and organize questions for exams","admin.questionBank.btn.add":"Add question","admin.questionBank.fetch.error":"Error","admin.questionBank.fetch.errorDesc":"Unable to load question list","admin.questionBank.delete.successMsg":"Question deleted","admin.questionBank.delete.successDesc":"Deleted question {code}","admin.questionBank.delete.errorMsg":"Error","admin.questionBank.delete.errorDesc":"Unable to delete question","admin.questionBank.update.successMsg":"Updated","admin.questionBank.update.successDesc":"Updated question {code}!","admin.questionBank.update.errorMsg":"Error","admin.questionBank.update.errorDesc":"Unable to update question","admin.questionBank.create.successMsg":"Question created","admin.questionBank.create.successDesc":"Successfully created question {code}!","admin.questionBank.stats.totalQuestions":"Total Questions","admin.questionBank.stats.inBank":"In question bank","admin.questionBank.stats.totalUsage":"Usage Count","admin.questionBank.stats.inExams":"In exams","admin.questionBank.stats.avgPoints":"Avg Points","admin.questionBank.stats.avgScore":"Average score","admin.questionBank.stats.difficultyDistribution":"Difficulty Distribution","admin.questionBank.stats.questions":"questions","admin.questionBank.difficulty.easy":"Easy","admin.questionBank.difficulty.medium":"Medium","admin.questionBank.difficulty.hard":"Hard","admin.questionBank.table.title":"Question List","admin.questionBank.table.loading":"Loading...","admin.questionBank.table.showing":"Showing {count} / {total} questions","admin.questionBank.table.empty":"No questions found","admin.questionBank.table.loadingData":"Loading data...","admin.questionBank.table.created":"Created: {date}","admin.questionBank.table.pointsUnit":"pts","admin.questionBank.table.usageUnit":"times","admin.questionBank.filter.searchPlaceholder":"Search by content...","admin.questionBank.filter.typePlaceholder":"Question type","admin.questionBank.filter.typeAll":"All types","admin.questionBank.filter.difficultyPlaceholder":"Difficulty","admin.questionBank.filter.difficultyAll":"All difficulties","admin.questionBank.filter.skillPlaceholder":"Skill","admin.questionBank.filter.skillAll":"All skills","admin.questionBank.filter.clear":"Clear filters","admin.questionBank.col.code":"CODE","admin.questionBank.col.title":"Title","admin.questionBank.col.type":"TYPE","admin.questionBank.col.difficulty":"DIFFICULTY","admin.questionBank.col.skill":"SKILL","admin.questionBank.col.points":"POINTS","admin.questionBank.col.usage":"USAGE","admin.questionBank.col.actions":"ACTIONS","admin.questionBank.action.view":"View details","admin.questionBank.action.edit":"Edit","admin.questionBank.action.delete":"Delete","admin.questionBank.dialog.add.title":"Add New Question","admin.questionBank.dialog.add.section1":"Basic Information","admin.questionBank.dialog.add.section2":"Question Type","admin.questionBank.dialog.add.section3":"Question Content","admin.questionBank.dialog.add.code":"Question Code","admin.questionBank.dialog.add.codePlaceholder":"E.g.: QB001","admin.questionBank.dialog.add.titleLabel":"Title","admin.questionBank.dialog.add.titlePlaceholder":"Brief description of the question","admin.questionBank.dialog.add.difficulty":"Difficulty Level","admin.questionBank.dialog.add.skill":"Skill","admin.questionBank.dialog.add.typePlaceholder":"Select question type...","admin.questionBank.dialog.add.typeNoOptions":"No question types for {skill}","admin.questionBank.dialog.add.noTypeSelected":"No question type selected","admin.questionBank.dialog.add.selectTypeHint":"Please select a question type in step 2","admin.questionBank.dialog.add.required":"Required","admin.questionBank.dialog.add.cancel":"Cancel","admin.questionBank.dialog.add.saving":"Saving...","admin.questionBank.dialog.add.save":"Add question","admin.questionBank.dialog.add.codeError":"Please enter question code","admin.questionBank.dialog.add.titleError":"Please enter title","admin.questionBank.dialog.add.typeError":"Please select question type","admin.questionBank.dialog.edit.title":"Edit Question","admin.questionBank.dialog.edit.section1":"Basic Information","admin.questionBank.dialog.edit.section2":"Question Type","admin.questionBank.dialog.edit.section3":"Question Content","admin.questionBank.dialog.edit.code":"Question Code","admin.questionBank.dialog.edit.codePlaceholder":"Enter question code","admin.questionBank.dialog.edit.titleLabel":"Title","admin.questionBank.dialog.edit.titlePlaceholder":"Brief description of the question","admin.questionBank.dialog.edit.difficulty":"Difficulty Level","admin.questionBank.dialog.edit.skill":"Skill","admin.questionBank.dialog.edit.unchangeable":"(Cannot be changed)","admin.questionBank.dialog.edit.required":"Required","admin.questionBank.dialog.edit.cancel":"Cancel","admin.questionBank.dialog.edit.saving":"Saving...","admin.questionBank.dialog.edit.save":"Save changes","admin.questionBank.dialog.edit.codeError":"Please enter question code","admin.questionBank.dialog.edit.titleError":"Please enter title","admin.questionBank.dialog.delete.title":"Confirm Delete Question","admin.questionBank.dialog.delete.message":"Are you sure you want to delete question","admin.questionBank.dialog.delete.warning":"This action cannot be undone.","admin.questionBank.dialog.delete.cancel":"Cancel","admin.questionBank.dialog.delete.deleting":"Deleting...","admin.questionBank.dialog.delete.confirm":"Delete question","admin.questionBank.dialog.view.title":"Question Details","admin.questionBank.dialog.view.points":"points","admin.questionBank.dialog.view.usage":"Used {count} times","admin.questionBank.dialog.view.preview":"Question Preview","admin.questionBank.dialog.view.explanation":"Answer Explanation","admin.questionBank.createPage.title":"Create New Question","admin.questionBank.createPage.subtitle":"Add question to the Bank for reuse in exam sets","admin.questionBank.createPage.breadcrumb.list":"Question Bank","admin.questionBank.createPage.breadcrumb.create":"Create New","admin.questionBank.createPage.infoTitle":"Creating question type: {type}","admin.questionBank.createPage.infoDesc":"Fill in the complete question information below. You can preview the question before saving.","admin.questionBank.createPage.loading":"Loading...","admin.questionBank.createPage.back":"Go back","admin.questionBank.createPage.preview":"Preview","admin.questionBank.createPage.saving":"Saving...","admin.questionBank.createPage.save":"Save question","admin.questionBank.createPage.cancelTitle":"Cancel question creation?","admin.questionBank.createPage.cancelMessage":"You have unsaved changes. If you cancel, all information will be lost. Are you sure you want to cancel?","admin.questionBank.createPage.continueEditing":"Continue editing","admin.questionBank.createPage.cancelAndExit":"Cancel and exit","admin.questionBank.createPage.missingInfoDesc":"Please fill in all question information","admin.questionBank.createPage.savedDesc":'Saved question "{title}" to the bank',"admin.questionBank.createPage.saveErrorDesc":"Unable to save question. Please try again.","admin.questionBank.createPage.previewDesc":"Preview feature is under development","admin.schedule.update.success":"Schedule updated successfully!","admin.schedule.delete.success":"Deleted schedule {id}","admin.schedules.title":"Schedule Management","admin.schedules.subtitle":"Schedule and manage exam times for contests","admin.schedules.viewCalendar":"Calendar","admin.schedules.viewList":"List","admin.schedules.stats.totalSchedules":"Total Schedules","admin.schedules.stats.totalSchedulesDesc":"All exam schedules","admin.schedules.stats.confirmed":"Confirmed","admin.schedules.stats.confirmedDesc":"Schedules ready","admin.schedules.stats.totalStudents":"Total Students","admin.schedules.stats.totalStudentsDesc":"Assigned to schedules","admin.schedules.filters.searchPlaceholder":"Search schedules...","admin.schedules.filters.skill":"Skill","admin.schedules.filters.allSkills":"All skills","admin.schedules.filters.status":"Status","admin.schedules.filters.allStatuses":"All statuses","admin.schedules.filters.statusOpen":"Open","admin.schedules.filters.statusLocked":"Locked","admin.schedules.filters.clear":"Clear filters","admin.schedules.calendar.today":"Today","admin.schedules.calendar.daySun":"Sun","admin.schedules.calendar.dayMon":"Mon","admin.schedules.calendar.dayTue":"Tue","admin.schedules.calendar.dayWed":"Wed","admin.schedules.calendar.dayThu":"Thu","admin.schedules.calendar.dayFri":"Fri","admin.schedules.calendar.daySat":"Sat","admin.schedules.calendar.loading":"Loading schedules...","admin.schedules.calendar.noLimit":"No limit","admin.schedules.list.title":"Schedule List","admin.schedules.list.loading":"Loading...","admin.schedules.list.loadingList":"Loading schedule list...","admin.schedules.list.showing":"Showing {current} / {total} schedules","admin.schedules.list.empty":"No schedules found","admin.schedules.list.locked":"Locked","admin.schedules.list.open":"Open","admin.schedules.list.contest":"Contest:","admin.schedules.list.exam":"Exam:","admin.schedules.list.startTime":"Start:","admin.schedules.list.endTime":"End:","admin.schedules.list.noLimit":"No limit","admin.schedules.list.locationUnknown":"Not specified","admin.schedules.list.noSupervisor":"Not assigned","admin.schedules.list.participants":"{count} participants","admin.schedules.list.page":"Page {current} / {total}","admin.schedules.list.prev":"Previous","admin.schedules.list.next":"Next","admin.schedules.dialog.detailTitle":"Schedule Details","admin.schedules.dialog.room":"Exam Room","admin.schedules.dialog.contest":"Contest","admin.schedules.dialog.exam":"Exam","admin.schedules.dialog.startTime":"Start Time","admin.schedules.dialog.endTime":"End Time","admin.schedules.dialog.duration":"Duration","admin.schedules.dialog.status":"Status","admin.schedules.dialog.participantCount":"Participants","admin.schedules.dialog.participants":"{count} participants","admin.schedules.dialog.notAssigned":"Not assigned","admin.schedules.dialog.notSet":"Not specified","admin.schedules.dialog.noLimit":"No limit","admin.schedules.dialog.locked":"Locked","admin.schedules.dialog.open":"Open","admin.schedules.dialog.durationMinutes":"{duration} minutes","admin.schedules.dialog.location":"Location","admin.schedules.dialog.supervisor":"Supervisor","admin.schedules.dialog.noSupervisor":"Not assigned","admin.schedules.view.title":"Schedule Details","admin.schedules.view.contest":"Contest","admin.schedules.view.skill":"Skill","admin.schedules.view.status":"Status","admin.schedules.view.examDate":"Exam Date","admin.schedules.view.startTime":"Start Time","admin.schedules.view.endTime":"End Time","admin.schedules.view.location":"Location","admin.schedules.view.supervisor":"Supervisor","admin.schedules.view.studentCount":"Student Count","admin.schedules.view.duration":"Duration","admin.schedules.view.durationMinutes":"{duration} minutes","admin.schedules.edit.title":"Edit Schedule","admin.schedules.edit.contest":"Contest","admin.schedules.edit.skill":"Skill","admin.schedules.edit.skillPlaceholder":"Select skill","admin.schedules.edit.examDate":"Exam Date","admin.schedules.edit.startTime":"Start Time","admin.schedules.edit.endTime":"End Time","admin.schedules.edit.room":"Exam Room","admin.schedules.edit.roomPlaceholder":"Select room","admin.schedules.edit.invigilator":"Invigilator","admin.schedules.edit.invigilatorPlaceholder":"Select invigilator","admin.schedules.edit.capacity":"Capacity","admin.schedules.edit.status":"Status","admin.schedules.edit.statusPlaceholder":"Select status","admin.schedules.edit.location":"Location","admin.schedules.edit.locationPlaceholder":"Enter location (e.g., Floor 1, Building A)","admin.schedules.edit.notes":"Notes","admin.schedules.edit.notesPlaceholder":"Enter notes about the schedule (optional)","admin.schedules.edit.cancel":"Cancel","admin.schedules.edit.save":"Save Changes","admin.schedules.delete.title":"Confirm Delete Schedule","admin.schedules.delete.message":"Are you sure you want to delete schedule","admin.schedules.delete.warning":"This action cannot be undone.","admin.schedules.delete.cancel":"Cancel","admin.schedules.delete.confirm":"Delete Schedule","admin.schedules.utils.notSet":"Not set","admin.schedules.utils.noLimit":"No limit","admin.schedules.utils.statusDraft":"Draft","admin.schedules.utils.statusConfirmed":"Confirmed","admin.schedules.utils.statusInProgress":"In Progress","admin.schedules.utils.statusCompleted":"Completed","admin.schedules.utils.statusCancelled":"Cancelled","admin.report.exam.loadError":"Unable to load exam report data","admin.report.exam.exportError":"Unable to export report","admin.report.room.loadError":"Unable to load room report data","admin.report.room.exportSuccess":"Exported {format} report successfully","admin.report.room.exportError":"Unable to export report","admin.report.branch.loadError":"Unable to load branch report data","admin.report.branch.exportError":"Unable to export report","admin.user.resetPassword.success":"Password reset for {name}!","admin.user.resetPassword.error":"An error occurred while resetting the password!","admin.user.lock.success":"Account {name} has been locked","admin.user.unlock.success":"Account {name} has been unlocked","admin.user.toggleStatus.error":"An error occurred while changing account status!","admin.user.export.success":"Excel file exported successfully!","admin.user.export.error":"An error occurred while exporting the Excel file!","admin.user.syncEBM.success":"EBM sync successful!","admin.user.syncEBM.error":"An error occurred while syncing EBM!","admin.users.title":"User Management","admin.users.subtitle":"Manage Admin, Teacher and Student accounts","admin.users.table.title":"User List","admin.users.table.loading":"Loading data...","admin.users.table.showing":"Showing {count} / {total} users","admin.users.table.empty":"No users found","admin.users.table.neverLoggedIn":"Never logged in","admin.users.table.exportExcel":"Export Excel","admin.users.table.syncEBM":"Sync EBM","admin.users.table.addUser":"Add User","admin.users.col.userInfo":"USER INFO","admin.users.col.branch":"BRANCH","admin.users.col.contact":"CONTACT","admin.users.col.role":"ROLE","admin.users.col.source":"SOURCE","admin.users.col.status":"STATUS","admin.users.col.lastLogin":"LAST LOGIN","admin.users.col.actions":"ACTIONS","admin.users.filter.searchPlaceholder":"Search by email, username, phone...","admin.users.filter.allRoles":"All roles","admin.users.filter.allStatuses":"All statuses","admin.users.filter.active":"Active","admin.users.filter.inactive":"Inactive","admin.users.filter.clearFilters":"Clear filters","admin.users.filter.searchLabel":"Search:","admin.users.filter.roleLabel":"Role:","admin.users.filter.statusLabel":"Status:","admin.users.role.systemAdmin":"System Admin","admin.users.role.admin":"Admin","admin.users.role.teacher":"Teacher","admin.users.role.student":"Student","admin.users.action.view":"View details","admin.users.action.viewDetail":"View user detail page","admin.users.action.edit":"Edit","admin.users.action.resetPassword":"Reset password","admin.users.action.lock":"Lock account","admin.users.action.unlock":"Unlock account","admin.users.action.delete":"Delete user","admin.users.field.branch":"Branch","admin.users.field.branchPlaceholder":"Search and select branch...","admin.users.field.fullName":"Full name","admin.users.field.fullNamePlaceholder":"Enter full name...","admin.users.field.email":"Email","admin.users.field.emailPlaceholder":"Enter email...","admin.users.field.phone":"Phone number","admin.users.field.phonePlaceholder":"Enter phone number...","admin.users.field.address":"Address","admin.users.field.addressPlaceholder":"Enter address...","admin.users.field.usernamePlaceholder":"Enter username...","admin.users.field.usernameHint":"Start with a letter, only letters, numbers and _ allowed","admin.users.field.password":"Password","admin.users.field.passwordPlaceholder":"Enter password...","admin.users.field.passwordHint":"At least 8 characters including uppercase, lowercase, number and special character","admin.users.field.role":"Role","admin.users.field.rolePlaceholder":"Select role...","admin.users.field.activeStatus":"Account status","admin.users.field.activeHint":"Account will be active immediately after creation","admin.users.field.inactiveHint":"Account will be locked, can be activated later","admin.users.field.activeStatusDesc":"Account is active","admin.users.field.inactiveStatusDesc":"Account is locked","admin.users.field.registrationSource":"Registration source","admin.users.field.createdAt":"Created at","admin.users.field.updatedAt":"Last updated","admin.users.field.status":"Status","admin.users.field.dateOfBirth":"Date of birth","admin.users.field.dateOfBirthPlaceholder":"Select date of birth...","admin.users.add.title":"Add New User","admin.users.add.desc":"Fill in the information to create a new user account","admin.users.add.submitting":"Creating...","admin.users.add.submit":"Add User","admin.users.edit.title":"Edit User","admin.users.edit.desc":"Update user information: {name}","admin.users.edit.submitting":"Updating...","admin.users.edit.submit":"Update","admin.users.delete.title":"Confirm Delete User","admin.users.delete.desc":"Are you sure you want to delete user {name}?","admin.users.delete.warning":"This action cannot be undone.","admin.users.delete.confirm":"Delete User","admin.users.view.title":"User Information","admin.users.view.subtitle":"Account details","admin.users.view.close":"Close","admin.users.resetPassword.title":"Reset Password","admin.users.resetPassword.desc":"Enter a new password for user {name}","admin.users.resetPassword.label":"New password","admin.users.resetPassword.placeholder":"Enter new password...","admin.users.resetPassword.hint":"Password should be at least 8 characters including uppercase, lowercase and numbers","admin.users.resetPassword.submit":"Reset Password","admin.users.lock.title":"Lock Account","admin.users.lock.desc":"Are you sure you want to lock the account {name}? The user will not be able to log in.","admin.users.lock.confirm":"Lock Account","admin.users.unlock.title":"Unlock Account","admin.users.unlock.desc":"Are you sure you want to unlock the account {name}? The user will be able to log in.","admin.users.unlock.confirm":"Unlock Account","admin.reports.title":"Reports","admin.reports.subtitle":"View overview and analyze exam results","admin.reports.viewDetail":"View details →","admin.reports.overview.title":"Overview Report","admin.reports.overview.desc":"System-wide statistics","admin.reports.overview.content":"View exam results overview, student numbers, average scores over time","admin.reports.class.title":"Class Report","admin.reports.class.desc":"Details by class","admin.reports.class.content":"Analyze exam results, rankings and learning progress by class","admin.reports.branch.title":"Branch Report","admin.reports.branch.desc":"Compare between branches","admin.reports.branch.content":"Compare performance and learning results between branches","admin.reports.exam.title":"Exam Report","admin.reports.exam.desc":"Statistics by exam","admin.reports.exam.content":"Statistics on results, scores and pass rates by exam","admin.reports.room.title":"Room Report","admin.reports.room.desc":"Details by room","admin.reports.room.content":"Statistics on exam results, scores, pass rates by room","admin.reports.competency.title":"Student Competency Report","admin.reports.competency.desc":"Skill analysis by student","admin.reports.competency.content":"Analyze scores by 4 skills: Reading, Listening, Writing, Speaking per student","admin.reports.room.pageTitle":"Room Report","admin.reports.room.pageSubtitle":"Detailed statistics about exam rooms","admin.reports.room.export":"Export report","admin.reports.room.exporting":"Exporting...","admin.reports.room.exportExcel":"Export Excel (.xlsx)","admin.reports.room.exportCsv":"Export CSV (.csv)","admin.reports.room.viewFull":"View full report","admin.reports.room.totalRooms":"Total Rooms","admin.reports.room.totalStudents":"Total Students","admin.reports.room.totalSubmitted":"Submitted","admin.reports.room.avgScore":"Avg Score","admin.reports.room.passRate":"Pass Rate","admin.reports.room.avgDuration":"Avg Duration","admin.reports.room.scoreDistribution":"Score Distribution","admin.reports.room.topRooms":"Top Scoring Rooms","admin.reports.room.noData":"No data yet","admin.reports.room.excellent":"Excellent (9-10)","admin.reports.room.good":"Good (7-8.9)","admin.reports.room.average":"Average (5-6.9)","admin.reports.room.poor":"Poor (<5)","admin.reports.room.searchPlaceholder":"Search rooms...","admin.reports.room.statusPlaceholder":"Status","admin.reports.room.statusAll":"All statuses","admin.reports.room.statusScheduled":"Scheduled","admin.reports.room.statusInProgress":"In Progress","admin.reports.room.statusCompleted":"Completed","admin.reports.room.clearFilters":"Clear filters","admin.reports.room.roomList":"Room List","admin.reports.room.colRoom":"Room","admin.reports.room.colContest":"Contest","admin.reports.room.colStatus":"Status","admin.reports.room.colStudents":"Students","admin.reports.room.colAvgScore":"Avg Score","admin.reports.room.colHighLow":"High/Low","admin.reports.room.colPassRate":"Pass Rate","admin.reports.room.colTeachers":"Proctors","admin.reports.room.empty":"No rooms found","admin.reports.room.loading":"Loading data...","admin.reports.room.dialogTitle":"Room Report","admin.reports.room.dialogDesc":"Detailed exam results statistics by room","admin.reports.exporting":"Exporting...","admin.reports.exportExcel":"Export Excel","admin.reports.loading":"Loading data...","admin.reports.close":"Close","admin.reports.common.avgScore":"Avg Score","admin.reports.common.passRate":"Pass Rate","admin.reports.common.totalStudents":"Total Students","admin.reports.common.students":"Students","admin.reports.common.teachers":"Teachers","admin.reports.common.classes":"Classes","admin.reports.stats.totalExams":"Total Exams","admin.reports.stats.totalStudents":"Participants","admin.reports.stats.avgScore":"Average Score","admin.reports.stats.passRate":"Pass Rate","admin.reports.stats.vsLastMonth":"vs last month","admin.reports.overview.dialogTitle":"Overview Report","admin.reports.overview.dialogDesc":"System-wide statistics for Ocean Edu","admin.reports.overview.totalExams":"Total Exams","admin.reports.overview.totalStudents":"Students","admin.reports.overview.avgScore":"System Avg Score","admin.reports.overview.passRate":"Pass Rate","admin.reports.overview.vsPrevPeriod":"vs previous period","admin.reports.overview.questions":"Questions","admin.reports.overview.classes":"Classes","admin.reports.overview.examRooms":"Exam Rooms","admin.reports.overview.activeContests":"Active Contests","admin.reports.overview.examsByLevel":"Statistics by Exam Level","admin.reports.overview.examsUnit":"exams","admin.reports.overview.questionsByType":"Question Type Distribution","admin.reports.overview.questionsUnit":"questions","admin.reports.overview.recentActivity":"Recent Activity","admin.reports.overview.minutesAgo":"{count} minutes ago","admin.reports.overview.hoursAgo":"{count} hours ago","admin.reports.overview.daysAgo":"{count} days ago","admin.reports.class.dialogTitle":"Class Report","admin.reports.class.dialogDesc":"Learning performance statistics by class","admin.reports.class.gradeAll":"All","admin.reports.class.totalClasses":"Total Classes","admin.reports.class.totalStudents":"Total Students","admin.reports.class.avgPassRate":"Avg Pass Rate","admin.reports.class.classList":"Class List","admin.reports.class.colClass":"Class","admin.reports.class.colLevel":"Level","admin.reports.class.colSize":"Size","admin.reports.class.colAvgScore":"Avg Score","admin.reports.class.colPassRate":"Pass Rate","admin.reports.class.colTeacher":"Teacher","admin.reports.class.topStudents":"Top 5 Outstanding Students","admin.reports.class.totalExams":"Exams","admin.reports.class.searchPlaceholder":"Search by class name or code...","admin.reports.branch.dialogTitle":"Branch Report","admin.reports.branch.dialogDesc":"Compare performance between branches","admin.reports.branch.totalBranches":"Total Branches","admin.reports.branch.totalStudents":"Total Students","admin.reports.branch.totalClasses":"Total Classes","admin.reports.branch.avgScore":"Overall Avg Score","admin.reports.branch.comparison":"Branch Comparison","admin.reports.exam.dialogTitle":"Exam Report","admin.reports.exam.dialogDesc":"Results statistics by contest","admin.reports.exam.statusDraft":"Draft","admin.reports.exam.statusPublished":"Published","admin.reports.exam.statusActive":"In Progress","admin.reports.exam.statusCompleted":"Completed","admin.reports.exam.totalContests":"Total Contests","admin.reports.exam.totalStudents":"Total Students","admin.reports.exam.avgScore":"Avg Score","admin.reports.exam.passRate":"Pass Rate","admin.reports.exam.contestList":"Contest List","admin.reports.exam.code":"Code: {code}","admin.reports.exam.noData":"No data yet","admin.reports.competency.dialogTitle":"Student Competency Report","admin.reports.competency.dialogDesc":"Skill-based score analysis","admin.reports.competency.searchPlaceholder":"Search by name or email...","admin.reports.competency.totalStudents":"Total Students","admin.reports.competency.avgScore":"Avg Score","admin.reports.competency.passRate":"Pass Rate","admin.reports.competency.bestSkill":"Best Skill","admin.reports.competency.skillDistribution":"Score Distribution by Skill","admin.reports.competency.avgScoreTooltip":"Avg Score","admin.reports.competency.studentList":"Student List ({count})","admin.reports.competency.colName":"Name","admin.reports.competency.colClass":"Class","admin.reports.competency.colReading":"Reading","admin.reports.competency.colListening":"Listening","admin.reports.competency.colWriting":"Writing","admin.reports.competency.colSpeaking":"Speaking","admin.reports.competency.colTotal":"Total","admin.reports.competency.colExams":"Exams","admin.reports.competency.noData":"No data","admin.reports.competency.page":"Page {page} / {totalPages}","admin.reports.competency.prev":"Previous","admin.reports.competency.next":"Next","admin.reports.competency.reading":"Reading","admin.reports.competency.listening":"Listening","admin.reports.competency.writing":"Writing","admin.reports.competency.speaking":"Speaking","admin.reports.competency.pageTitle":"Student Competency Report","admin.reports.competency.pageSubtitle":"Score analysis by skill","admin.reports.competency.backToReports":"Back to Reports","admin.reports.competency.export":"Export Excel","admin.reports.competency.exporting":"Exporting...","admin.reports.competency.atRisk":"At-Risk Students","admin.reports.competency.atRiskDesc":"Below 5.0","admin.reports.competency.radarTitle":"Competency by Skill","admin.reports.competency.radarClassAvg":"This Class","admin.reports.competency.radarSysAvg":"System Average","admin.reports.competency.trendTitle":"Score Trend Over Time","admin.reports.competency.trend3m":"3 Months","admin.reports.competency.trend6m":"6 Months","admin.reports.competency.trend12m":"12 Months","admin.reports.competency.skillBreakdownTitle":"Skill Analysis","admin.reports.competency.strengthsTitle":"Strengths","admin.reports.competency.weaknessesTitle":"Weaknesses","admin.reports.competency.noStrengths":"No data","admin.reports.competency.noWeaknesses":"No data","admin.reports.competency.bandExcellent":"Excellent","admin.reports.competency.bandGood":"Good","admin.reports.competency.bandAverage":"Average","admin.reports.competency.bandWeak":"Weak","admin.reports.competency.colTrend":"Trend","admin.reports.competency.colBand":"Band","admin.reports.competency.filterAll":"All","admin.reports.competency.filterWeak":"Needs Support","admin.reports.competency.filterGood":"Good - Excellent","admin.reports.competency.searchPlaceholder2":"Find student...","admin.reports.competency.examRoomFilter.placeholder":"All exam rooms","admin.reports.competency.examRoomFilter.searchPlaceholder":"Search exam rooms...","admin.reports.competency.examRoomFilter.noRooms":"No exam rooms found","admin.reports.competency.examRoomFilter.allRooms":"All exam rooms","admin.reports.period.week":"This week","admin.reports.period.month":"This month","admin.reports.period.quarter":"This quarter","admin.reports.period.year":"This year","admin.reports.period.custom":"Custom","admin.reports.period.fromDate":"From date","admin.reports.period.toDate":"To date","admin.dashboard.title":"Admin Dashboard","admin.dashboard.subtitle":"Manage Ocean Edu online exam system","admin.dashboard.totalStudents":"Total Students","admin.dashboard.totalStudents.monthly":"+{count} new students this month","admin.dashboard.totalStudents.growth":"M{lastMonth} {action} {percent}% vs M{prevMonth}","admin.dashboard.totalExams":"Exams","admin.dashboard.totalExams.weekly":"+{count} new exams this week","admin.dashboard.examRooms":"Exam Rooms","admin.dashboard.examRooms.active":"{count} rooms active","admin.dashboard.teachers":"Teachers","admin.dashboard.teachers.yearly":"+{count} new teachers this year","admin.dashboard.contests":"Contests","admin.dashboard.contests.ongoing":"{count} ongoing","admin.dashboard.inProgressRooms":"Rooms In Progress","admin.dashboard.inProgressRooms.status":"In progress","admin.dashboard.studentsInExam":"Students In Exam","admin.dashboard.studentsInExam.rooms":"In {count} rooms","admin.dashboard.pendingGrading":"Pending Grading","admin.dashboard.pendingGrading.action":"Needs attention","admin.dashboard.userGrowth.title":"User Growth","admin.dashboard.userGrowth.desc":"Student and teacher count over the last 6 months","admin.dashboard.userGrowth.students":"Students","admin.dashboard.userGrowth.teachers":"Teachers","admin.dashboard.examStats.title":"Exam Statistics","admin.dashboard.examStats.desc":"Completed and pending exams by subject","admin.dashboard.examStats.completed":"Completed","admin.dashboard.examStats.pending":"Pending","admin.dashboard.recentActivity.title":"Recent Activity","admin.dashboard.recentActivity.desc":"Latest activities in the system","admin.dashboard.recentActivity.colActivity":"Activity","admin.dashboard.recentActivity.colUser":"User","admin.dashboard.recentActivity.colStatus":"Status","admin.dashboard.recentActivity.colTime":"Time","admin.dashboard.recentActivity.empty":"No activities yet","admin.dashboard.growth.increase":"increased","admin.dashboard.growth.decrease":"decreased","admin.dashboard.growth.unchanged":"unchanged","admin.dashboard.time.justNow":"just now","admin.dashboard.time.minutesAgo":"{count} minutes ago","admin.dashboard.time.hoursAgo":"{count} hours ago","admin.dashboard.time.daysAgo":"{count} days ago","admin.dashboard.time.weeksAgo":"{count} weeks ago","admin.dashboard.time.monthsAgo":"{count} months ago","admin.branch.create.success":"Branch created successfully","admin.branch.create.successDesc":"New branch created with {count} teachers. PLACEMENT TEST room has been automatically created.","admin.branch.create.successDescNoTeacher":"New branch created. PLACEMENT TEST room has been automatically created.","admin.branch.update.success":"Branch updated successfully","admin.branch.update.successDesc":"Branch information updated ({count} teacher changes)","admin.branch.update.successDescNoChange":"Branch information updated","admin.branch.delete.success":"Branch deleted successfully","admin.branch.delete.successDesc":"Branch {code} - {name} has been deleted","admin.branch.activate.success":"Branch activated successfully","admin.branch.deactivate.success":"Branch deactivated successfully","admin.branch.toggleStatus.successDesc":"Branch {code} - {name} has been {status}","admin.branch.toggleStatus.activated":"activated","admin.branch.toggleStatus.deactivated":"deactivated","admin.branches.title":"Branch Management","admin.branches.subtitle":"Manage branch information in the system","admin.branches.loading":"Loading data...","admin.branches.stats.total":"Total Branches","admin.branches.stats.active":"Active","admin.branches.stats.inactive":"Inactive","admin.branches.stats.distribution":"Manager Distribution","admin.branches.stats.activeBranches":"Active","admin.branches.stats.inactiveBranches":"Inactive","admin.branches.stats.withManager":"Has Manager","admin.branches.stats.withoutManager":"No Manager","admin.branches.stats.branchUnit":"branches","admin.branches.table.title":"Branch List","admin.branches.table.showing":"Showing {count} / {total} branches","admin.branches.table.addBranch":"Add Branch","admin.branches.table.loading":"Loading...","admin.branches.table.empty":"No branches found","admin.branches.table.notUpdated":"Not updated","admin.branches.table.notAssigned":"Not assigned","admin.branches.col.code":"BRANCH CODE","admin.branches.col.name":"BRANCH NAME","admin.branches.col.address":"ADDRESS","admin.branches.col.contact":"CONTACT","admin.branches.col.manager":"MANAGER","admin.branches.col.status":"STATUS","admin.branches.col.actions":"ACTIONS","admin.branches.filter.searchPlaceholder":"Search by name or branch code","admin.branches.filter.statusPlaceholder":"Status","admin.branches.filter.allStatuses":"All statuses","admin.branches.filter.active":"Active","admin.branches.filter.inactive":"Inactive","admin.branches.filter.clearFilters":"Clear filters","admin.branches.filter.searchLabel":"Search:","admin.branches.filter.statusLabel":"Status:","admin.branches.status.active":"Active","admin.branches.status.activeDetail":"Active","admin.branches.status.inactive":"Inactive","admin.branches.action.view":"View details","admin.branches.action.edit":"Edit","admin.branches.action.delete":"Delete","admin.branches.field.basicInfo":"Basic Information","admin.branches.field.code":"Branch code","admin.branches.field.codePlaceholder":"E.g.: CN-HN-01","admin.branches.field.name":"Branch name","admin.branches.field.namePlaceholder":"E.g.: Hanoi Branch","admin.branches.field.address":"Address","admin.branches.field.addressPlaceholder":"Enter branch address...","admin.branches.field.contactInfo":"Contact Information","admin.branches.field.phone":"Phone number","admin.branches.field.phonePlaceholder":"E.g.: 0912345678","admin.branches.field.email":"Email","admin.branches.field.emailPlaceholder":"E.g.: branch@ocean.edu.vn","admin.branches.field.managerSection":"Manager","admin.branches.field.selectManager":"Select manager","admin.branches.field.selectManagerPlaceholder":"Select manager...","admin.branches.field.managerHint":"The manager will have administrative rights for this branch","admin.branches.field.statusSection":"Status","admin.branches.teacher.title":"Select Teachers","admin.branches.teacher.searchPlaceholder":"Search teachers by name, email or phone number","admin.branches.teacher.colName":"Full name","admin.branches.teacher.colEmail":"Email","admin.branches.teacher.colPhone":"Phone","admin.branches.teacher.notFound":"No teachers found","admin.branches.teacher.empty":"No teachers in the system","admin.branches.teacher.selected":"Selected: {count} teachers","admin.branches.teacher.clearAll":"Clear all","admin.branches.add.title":"Add New Branch","admin.branches.add.desc":"Enter information for the new branch","admin.branches.add.activateLabel":"Activate branch","admin.branches.add.activateDescActive":"Branch will be active immediately after creation","admin.branches.add.activateDescInactive":"Branch will be inactive after creation","admin.branches.add.submitting":"Processing...","admin.branches.add.submit":"Add Branch","admin.branches.edit.title":"Edit Branch","admin.branches.edit.desc":"Update information for branch: {name}","admin.branches.edit.statusLabel":"Active status","admin.branches.edit.statusDescActive":"Branch is currently active","admin.branches.edit.statusDescInactive":"Branch is currently inactive","admin.branches.edit.submitting":"Processing...","admin.branches.edit.submit":"Update","admin.branches.delete.title":"Confirm Delete Branch","admin.branches.delete.desc":"Are you sure you want to delete this branch?","admin.branches.delete.warning":"This action cannot be undone and will delete all data related to this branch.","admin.branches.delete.submitting":"Processing...","admin.branches.delete.confirm":"Delete Branch","admin.branches.toggleStatus.activateTitle":"Activate Branch","admin.branches.toggleStatus.deactivateTitle":"Deactivate Branch","admin.branches.toggleStatus.activateDesc":"Are you sure you want to activate this branch?","admin.branches.toggleStatus.deactivateDesc":"Are you sure you want to deactivate this branch?","admin.branches.toggleStatus.activateInfo":"The branch will be activated and operate normally.","admin.branches.toggleStatus.deactivateInfo":"The branch will be deactivated but data will be preserved.","admin.branches.toggleStatus.submitting":"Processing...","admin.branches.toggleStatus.activate":"Activate","admin.branches.toggleStatus.deactivate":"Deactivate","admin.branches.view.title":"Branch Details: {name}","admin.branches.view.desc":"View detailed branch information","admin.branches.view.basicInfo":"Basic Information","admin.branches.view.codeLabel":"Branch Code","admin.branches.view.nameLabel":"Branch Name","admin.branches.view.statusLabel":"Status","admin.branches.view.contactInfo":"Contact Information","admin.branches.view.addressLabel":"Address","admin.branches.view.phoneLabel":"Phone Number","admin.branches.view.emailLabel":"Email","admin.branches.view.notUpdated":"Not updated","admin.branches.view.managerSection":"Manager","admin.branches.view.noManager":"No manager assigned","admin.branches.view.teacherSection":"Teachers","admin.branches.view.noTeachers":"No teachers assigned","admin.branches.view.moreTeachers":"and {count} more teachers...","admin.branches.view.changeHistory":"Change History","admin.branches.view.createdAt":"Created","admin.branches.view.createdBy":"by","admin.branches.view.noCreator":"No creator information","admin.branches.view.updatedAt":"Last Updated","admin.branches.view.noUpdater":"No updater information","admin.branches.view.branchId":"Branch ID","admin.rooms.title":"Exam Room Management","admin.rooms.subtitle":"Create and manage exam rooms","admin.rooms.loading":"Loading data...","admin.rooms.stats.totalRooms":"Total Rooms","admin.rooms.stats.activeRooms":"{count} active rooms","admin.rooms.stats.students":"Students","admin.rooms.stats.totalStudents":"Total enrolled students","admin.rooms.stats.completed":"Completed","admin.rooms.stats.completedRooms":"Rooms completed","admin.rooms.stats.statusDistribution":"Status distribution","admin.rooms.stats.ongoing":"In progress","admin.rooms.stats.scheduled":"Scheduled","admin.rooms.stats.roomUnit":"rooms","admin.rooms.table.title":"Exam Room List","admin.rooms.table.showing":"Showing {count} / {total} rooms","admin.rooms.table.addRoom":"Create Room","admin.rooms.table.loading":"Loading...","admin.rooms.table.empty":"No exam rooms found","admin.rooms.table.notAssigned":"Not assigned","admin.rooms.table.unlimited":"Unlimited","admin.rooms.col.name":"ROOM NAME","admin.rooms.col.code":"ROOM CODE","admin.rooms.col.branch":"BRANCH","admin.rooms.col.exam":"EXAM & QUESTIONS","admin.rooms.col.time":"TIME","admin.rooms.col.progress":"PROGRESS","admin.rooms.col.lock":"LOCK","admin.rooms.col.actions":"ACTIONS","admin.rooms.filter.searchPlaceholder":"Search by room name or room code","admin.rooms.filter.statusPlaceholder":"Status","admin.rooms.filter.allStatuses":"All statuses","admin.rooms.filter.branchPlaceholder":"Branch","admin.rooms.filter.allBranches":"All branches","admin.rooms.filter.clearFilters":"Clear filters","admin.rooms.status.completed":"Completed","admin.rooms.status.inProgress":"In Progress","admin.rooms.status.scheduled":"Scheduled","admin.rooms.exam.viewContent":"View content","admin.rooms.exam.changeExam":"Change exam","admin.rooms.exam.selectExam":"+ Select exam","admin.rooms.action.view":"View details","admin.rooms.action.edit":"Edit","admin.rooms.action.schedule":"Edit schedule","admin.rooms.action.delete":"Delete","admin.rooms.toast.loadError":"Failed to load data","admin.rooms.toast.loadRoomsError":"Unable to load exam rooms. Please try again later.","admin.rooms.toast.loadTeachersError":"Unable to load supervisors. Please try again later.","admin.rooms.toast.loadStudentsError":"Unable to load students. Please try again later.","admin.rooms.toast.loadExamsError":"Unable to load exams. Please try again later.","admin.rooms.toast.loadContestsError":"Unable to load contests. Please try again later.","admin.rooms.toast.loadClassesError":"Unable to load classes. Please try again later.","admin.rooms.toast.loadBranchesError":"Unable to load branches. Please try again later.","admin.rooms.toast.cannotChangeExam":"Cannot change exam","admin.rooms.toast.cannotChangeExamDesc":"Rooms that have started or completed cannot have their exam changed","admin.rooms.toast.assignExamSuccess":"Exam assigned successfully","admin.rooms.toast.assignExamSuccessDesc":'Exam "{examName}" with {childCount} variants has been assigned to room {roomCode}',"admin.rooms.toast.cannotRemoveExam":"Cannot remove exam","admin.rooms.toast.cannotRemoveExamDesc":"Rooms that have started or completed cannot have their exam removed","admin.rooms.toast.removeExamSuccess":"Exam removed successfully","admin.rooms.toast.removeExamSuccessDesc":"Exam has been removed from room {roomCode}","admin.rooms.toast.saveSettingsSuccess":"Settings saved successfully","admin.rooms.toast.saveSettingsSuccessDesc":"Your exam settings have been saved","admin.rooms.toast.updateScheduleSuccess":"Schedule updated successfully","admin.rooms.toast.updateScheduleSuccessDesc":"Schedule for room {roomCode} has been updated","admin.rooms.toast.updateScheduleError":"Failed to update schedule","admin.rooms.toast.updateScheduleErrorDesc":"Error updating schedule for room {roomCode}","admin.rooms.add.title":"Add New Exam Room","admin.rooms.add.description":"Enter information for the new exam room","admin.rooms.add.cancel":"Cancel","admin.rooms.add.submit":"Add Room","admin.rooms.add.success":"Room created successfully","admin.rooms.add.successDesc":"Exam room {code} has been created","admin.rooms.add.error":"Failed to create room","admin.rooms.add.errorDesc":"An error occurred while creating the exam room","admin.rooms.edit.title":"Edit Room: {name}","admin.rooms.edit.description":"Update exam room information","admin.rooms.edit.cancel":"Cancel","admin.rooms.edit.saving":"Saving...","admin.rooms.edit.submit":"Save Changes","admin.rooms.edit.success":"Room updated successfully","admin.rooms.edit.successDesc":"Exam room {code} has been updated","admin.rooms.edit.error":"Failed to update room","admin.rooms.edit.errorDesc":"An error occurred while updating the exam room","admin.rooms.delete.title":"Confirm Delete Room","admin.rooms.delete.description":"Are you sure you want to delete room","admin.rooms.delete.warning":"This action cannot be undone and will delete all related data.","admin.rooms.delete.cancel":"Cancel","admin.rooms.delete.processing":"Processing...","admin.rooms.delete.submit":"Delete Room","admin.rooms.delete.success":"Room deleted successfully","admin.rooms.delete.successDesc":"Exam room {code} has been deleted","admin.rooms.delete.error":"Failed to delete room","admin.rooms.delete.errorDesc":"Unable to delete exam room. Please try again later.","admin.rooms.view.title":"Room Details: {name}","admin.rooms.view.close":"Close","admin.rooms.view.locked":"Locked","admin.rooms.view.unlocked":"Unlocked","admin.rooms.view.undetermined":"Not set","admin.rooms.unlimitedTime":"Unlimited time","admin.rooms.view.stats.candidates":"Candidates","admin.rooms.view.stats.supervisors":"Supervisors","admin.rooms.view.stats.submitted":"Submitted","admin.rooms.view.stats.submissionRate":"Submission rate","admin.rooms.view.section.basicInfo":"Basic Information","admin.rooms.view.section.time":"Schedule","admin.rooms.view.section.exams":"Exams","admin.rooms.view.section.supervisors":"Supervisors","admin.rooms.view.section.classes":"Classes","admin.rooms.view.section.assignedStudents":"Assigned Students","admin.rooms.view.field.contest":"Contest","admin.rooms.view.field.location":"Location","admin.rooms.view.field.branch":"Branch","admin.rooms.view.field.candidateSelection":"Candidate selection","admin.rooms.view.field.description":"Description","admin.rooms.view.field.start":"Start","admin.rooms.view.field.end":"End","admin.rooms.view.field.createdAt":"Created at:","admin.rooms.view.field.updatedAt":"Updated at:","admin.rooms.view.selectionType.all":"All students","admin.rooms.view.selectionType.specific":"Specific students","admin.rooms.view.locationNotSet":"Not set","admin.rooms.view.noSupervisors":"No supervisors assigned","admin.rooms.view.examOriginal":"Original exam","admin.rooms.view.examVariants":"Exam variants ({count})","admin.rooms.view.status.scheduled":"Scheduled","admin.rooms.view.status.inProgress":"In Progress","admin.rooms.view.status.completed":"Completed","admin.rooms.view.type.contest":"Contest","admin.rooms.view.type.practiceTest":"Practice Test","admin.rooms.view.classCode":"Code:","admin.rooms.view.classGrade":"Grade:","admin.rooms.view.classStudents":"{count} students","admin.rooms.lock.titleLock":"Lock exam room?","admin.rooms.lock.titleUnlock":"Unlock exam room?","admin.rooms.lock.statusLocked":"Locked","admin.rooms.lock.statusUnlocked":"Unlocked","admin.rooms.lock.confirmUnlock":"Are you sure you want to","admin.rooms.lock.unlock":"unlock","admin.rooms.lock.lock":"lock","admin.rooms.lock.confirmSuffix":"this exam room?","admin.rooms.lock.unlockEffect":"Students will be able to access and take the exam in this room.","admin.rooms.lock.lockEffect":"Students will not be able to access or take the exam in this room until it is unlocked.","admin.rooms.lock.cancel":"Cancel","admin.rooms.lock.processing":"Processing...","admin.rooms.lock.submitLock":"Lock Room","admin.rooms.lock.submitUnlock":"Unlock","admin.rooms.lock.successLock":"Room locked successfully","admin.rooms.lock.successUnlock":"Room unlocked successfully","admin.rooms.lock.successDesc":"Exam room {code} has been {action}","admin.rooms.lock.locked":"locked","admin.rooms.lock.unlocked":"unlocked","admin.rooms.lock.error":"Failed to change lock status","admin.rooms.lock.errorDesc":"Unable to change the lock status of the exam room. Please try again later.","admin.rooms.removeExam.title":"Remove Exam from Room","admin.rooms.removeExam.description":"Are you sure you want to remove exam","admin.rooms.removeExam.fromRoom":"from room","admin.rooms.removeExam.cannotRemove":"Cannot remove exam from a room that has started or completed!","admin.rooms.removeExam.effect":"The room will no longer have an assigned exam. You can select a new exam later.","admin.rooms.removeExam.cancel":"Cancel","admin.rooms.removeExam.submit":"Remove Exam","admin.rooms.schedule.title":"Edit Schedule: {name}","admin.rooms.schedule.description":"Update the exam schedule for this room","admin.rooms.schedule.contestInfo":"Contest info: {name}","admin.rooms.schedule.unlimitedContest":"This contest has no time limit.","admin.rooms.schedule.contestRange":"From {start} to {end}","admin.rooms.schedule.contestConstraint":"Room schedule must fall within the contest time range","admin.rooms.schedule.unlimitedBadge":"Unlimited","admin.rooms.schedule.unlimitedNote":"This contest has no time limit. You do not need to set a schedule for this room.","admin.rooms.schedule.startTime":"Start time *","admin.rooms.schedule.endTime":"End time *","admin.rooms.schedule.cancel":"Cancel","admin.rooms.schedule.save":"Save Schedule","admin.rooms.schedule.validation.startRequired":"Please select a start time","admin.rooms.schedule.validation.endRequired":"Please select an end time","admin.rooms.schedule.validation.endAfterStart":"End time must be after start time","admin.rooms.selectExam.title":"Select Exam for Room: {name}","admin.rooms.selectExam.description":"Select 1 parent exam and child exams (variants) to assign to this room","admin.rooms.selectExam.parentCount":"Parent Exam","admin.rooms.selectExam.childCount":"Child Exams","admin.rooms.selectExam.noParentSelected":"No parent exam selected","admin.rooms.selectExam.noParentSelectedDesc":"Please select a parent exam first","admin.rooms.selectExam.childCode":"Code: {code} • Variant #{variant}","admin.rooms.selectExam.selectAll":"Select all","admin.rooms.selectExam.deselectAll":"Deselect all","admin.rooms.selectExam.noParentExams":"No parent exams available","admin.rooms.selectExam.selectedParent":"Selected Parent Exam","admin.rooms.selectExam.selectedChildren":"Selected Child Exams ({count})","admin.rooms.selectExam.cancel":"Cancel","admin.rooms.selectExam.confirm":"Confirm","admin.rooms.selectExam.childExams":"{count} variants","admin.rooms.selectExam.warning.title":"Insufficient data","admin.rooms.selectExam.warning.desc":"Please select a parent exam and at least one child exam","admin.rooms.selectExam.clearTitle":"Clear Selection?","admin.rooms.selectExam.clearDesc":"Are you sure you want to clear the parent exam and {count} child exams?","admin.rooms.selectExam.clearCancel":"Cancel","admin.rooms.selectExam.clearConfirm":"Clear","admin.rooms.selectExam.dialogTitle":"Select Exam","admin.rooms.selectExam.dialogDescription":"Select a parent exam and the corresponding child exams for your exam room","admin.rooms.selectExam.searchPlaceholder":"Search exams by name, code, subject...","admin.rooms.selectExam.noParentSelectedInfo":"Please select a parent exam before selecting child exams","admin.rooms.selectExam.examCode":"Code: {name}","admin.rooms.selectExam.original":"Original","admin.rooms.selectExam.questions":"{count} questions","admin.rooms.selectExam.minutes":"{count} min","admin.rooms.selectExam.difficulty.easy":"Easy","admin.rooms.selectExam.difficulty.medium":"Medium","admin.rooms.selectExam.difficulty.hard":"Hard","admin.rooms.selectExam.emptySearch":"No matching exams found","admin.rooms.selectExam.emptyAll":"No exams available","admin.rooms.selectExam.emptySearchHint":"Try searching with different keywords","admin.rooms.selectExam.emptyAllHint":"Create a new exam to get started","admin.rooms.selectExam.clearSearch":"Clear search","admin.rooms.selectExam.selected":"Selected","admin.rooms.selectExam.selectedParentLabel":"Parent Exam","admin.rooms.changeExam.title":"Change Exam for Room: {name}","admin.rooms.changeExam.description":"Select a new exam to replace the current one","admin.rooms.changeExam.currentExam":"Current exam","admin.rooms.changeExam.currentExamHint":"Select a new exam from the list below to replace it","admin.rooms.changeExam.childCount":"({count} variants)","admin.rooms.changeExam.newParent":"New Parent Exam","admin.rooms.changeExam.newParentSelected":"Selected New Parent Exam","admin.rooms.changeExam.currentBadge":"Current","admin.rooms.changeExam.cancel":"Cancel","admin.rooms.changeExam.submit":"Change Exam","admin.rooms.changeExam.confirmTitle":"Confirm exam change?","admin.rooms.changeExam.confirmDesc":"Are you sure you want to change the exam for room {name}?","admin.rooms.changeExam.confirmEffect":"The new exam will replace the current one with {count} child exams.","admin.rooms.changeExam.confirmCancel":"Cancel","admin.rooms.changeExam.confirmSubmit":"Confirm Change","admin.rooms.editWarning.title":"Edit Room Warning","admin.rooms.editWarning.description":"is currently","admin.rooms.editWarning.status":"In Progress","admin.rooms.editWarning.effect":"Editing may affect students currently taking the exam.","admin.rooms.editWarning.confirm":"Are you sure you want to continue editing?","admin.rooms.editWarning.cancel":"Cancel","admin.rooms.editWarning.submit":"Continue Editing","admin.rooms.examChangeWarning.title":"Change Exam?","admin.rooms.examChangeWarning.description":"The exam was automatically selected from the chosen contest. Are you sure you want to change to a different exam?","admin.rooms.examChangeWarning.cancel":"Cancel","admin.rooms.examChangeWarning.submit":"Continue Changing","admin.rooms.settings.title":"Exam Room Settings","admin.rooms.settings.description":"Default parameters for exams","admin.rooms.settings.maxStudents":"Max students per room","admin.rooms.settings.defaultDuration":"Default exam duration (minutes)","admin.rooms.settings.edit":"Edit","admin.rooms.settings.cancel":"Cancel","admin.rooms.settings.save":"Save Changes","admin.rooms.form.branch":"Branch","admin.rooms.form.branchPlaceholder":"Select branch...","admin.rooms.form.branchReload":"Reload","admin.rooms.form.branchCreate":"Create branch","admin.rooms.form.branchEmpty":"No branches available. Please create a branch first.","admin.rooms.form.contest":"Select contest","admin.rooms.form.contestPlaceholder":"Select contest...","admin.rooms.form.contestReload":"Reload","admin.rooms.form.contestCreate":"Create contest","admin.rooms.form.contestEmpty":"No contests available. Please create a contest first.","admin.rooms.form.contestUnlimitedInfo":"Contest has no time limit","admin.rooms.form.contestUnlimitedStart":"Starts from: {time}","admin.rooms.form.contestUnlimitedHint":"Start time is required, end time is optional","admin.rooms.form.contestLimitedInfo":"Contest time range","admin.rooms.form.contestLimitedRange":"From {start} to {end}","admin.rooms.form.contestLimitedHint":"Room schedule must fall within the contest time range","admin.rooms.form.startTime":"Start time","admin.rooms.form.endTime":"End time","admin.rooms.form.endTimeOptional":"(optional)","admin.rooms.form.endTimeUnlimitedHint":"If not set, the room will have no time limit.","admin.rooms.form.roomName":"Room name","admin.rooms.form.roomNamePlaceholder":"Room A101","admin.rooms.form.roomCode":"Room code","admin.rooms.form.roomCodePlaceholder":"ROOM-A101","admin.rooms.form.examSelection":"Select exam","admin.rooms.form.examPlaceholder":"Select exam...","admin.rooms.form.examDisabledHint":"Please select a contest first to show matching exams","admin.rooms.form.examSelectContestFirst":"Please select a contest first","admin.rooms.form.examNoMatchClassification":"No exams match the classification of the selected contest","admin.rooms.form.examSummaryParent":"Parent Exam ({count})","admin.rooms.form.examSummaryChild":"Child Exams ({count})","admin.rooms.form.examChildCode":"Code: {name}","admin.rooms.form.location":"Location","admin.rooms.form.locationPlaceholder":"Floor 1, Building A","admin.rooms.form.lockRoom":"Lock room","admin.rooms.form.lockHint":"Students cannot enter the room when locked","admin.rooms.form.supervisors":"Select supervisors","admin.rooms.form.supervisorPlaceholder":"Select supervisors...","admin.rooms.form.roomType":"Room type","admin.rooms.form.roomTypeContest":"Contest","admin.rooms.form.roomTypePractice":"Practice Test","admin.rooms.form.description":"Description","admin.rooms.form.descriptionPlaceholder":"Detailed description of the exam room...","admin.rooms.form.validation.branchRequired":"Please select a branch","admin.rooms.form.validation.contestRequired":"Please select a contest","admin.rooms.form.validation.examRequired":"Please select an exam","admin.rooms.form.validation.startRequired":"Please select a start time","admin.rooms.form.validation.startFuture":"Start time must be greater than or equal to the current time","admin.rooms.form.validation.endRequired":"Please select an end time","admin.rooms.form.validation.endAfterStart":"End time must be after start time","admin.rooms.form.validation.classRequired":"Please select at least 1 class","admin.rooms.form.validation.studentRequired":"Please select at least 1 student","admin.rooms.studentSelection.label":"Participants","admin.rooms.studentSelection.all":"All participants","admin.rooms.studentSelection.byClass":"By class","admin.rooms.studentSelection.byStudent":"Specific students","admin.rooms.studentSelection.selectClass":"Select classes","admin.rooms.studentSelection.classSearchPlaceholder":"Search classes (name, code)...","admin.rooms.studentSelection.gradeFilterPlaceholder":"Filter by grade","admin.rooms.studentSelection.allGrades":"All grades","admin.rooms.studentSelection.gradeItem":"Grade {grade}","admin.rooms.studentSelection.colClassName":"Class name","admin.rooms.studentSelection.colClassCode":"Class code","admin.rooms.studentSelection.colGrade":"Grade","admin.rooms.studentSelection.colStudentCount":"Students","admin.rooms.studentSelection.noClasses":"No classes found","admin.rooms.studentSelection.selectedClasses":"Selected classes: {count}","admin.rooms.studentSelection.clearAll":"Clear all","admin.rooms.studentSelection.selectStudent":"Select students","admin.rooms.studentSelection.studentSearchPlaceholder":"Search students (name, username, email)...","admin.rooms.studentSelection.classFilterPlaceholder":"Filter by class","admin.rooms.studentSelection.allClasses":"All classes","admin.rooms.studentSelection.colStudentId":"Student ID","admin.rooms.studentSelection.colName":"Full name","admin.rooms.studentSelection.colEmail":"Email","admin.rooms.studentSelection.colClass":"Class","admin.rooms.studentSelection.noStudents":"No students found","admin.rooms.studentSelection.selectedStudents":"Selected students: {count}","admin.rooms.studentSelection.noClass":"No class","admin.rooms.studentSelection.allParticipate":"All students will be able to participate in this exam room.","admin.rooms.studentSelection.summaryClasses":"Selected classes:","admin.rooms.studentSelection.noClassSelected":"No class selected","admin.rooms.studentSelection.summaryStudents":"Selected students:","admin.rooms.studentSelection.noStudentSelected":"No students selected","admin.rooms.studentSelection.classUnit":"{count} students","admin.rooms.studentSelection.studentUnit":"{count} students","admin.rooms.studentSelection.zeroClass":"0 classes","admin.rooms.studentSelection.zeroStudent":"0 students","admin.contests.title":"Contest Management","admin.contests.subtitle":"Create and manage contests, view reports and rankings","admin.contests.teacher.subtitle":"View and manage contests, track student rankings","admin.contests.tab.rankings":"Rankings & Statistics","admin.contests.tab.management":"Contest Management","admin.contests.stats.total":"Total Contests","admin.contests.stats.totalCompleted":"{count} completed","admin.contests.stats.upcoming":"Upcoming Contest","admin.contests.stats.upcomingDays":"days left","admin.contests.stats.totalParticipants":"Total Participants","admin.contests.stats.participated":"participated","admin.contests.stats.avgScore":"System Avg Score","admin.contests.stats.overContests":"across {count} contests","admin.contests.list.title":"Contest List","admin.contests.list.desc":"View detailed statistics per contest","admin.contests.list.loading":"Loading...","admin.contests.list.empty":"No contests yet","admin.contests.list.participants":"Participants:","admin.contests.list.avgScore":"Avg Score:","admin.contests.list.highest":"Highest:","admin.contests.list.lowest":"Lowest:","admin.contests.list.completionRate":"Completion Rate:","admin.contests.list.viewDetail":"View details","admin.contests.ranking.latestTitle":"Top students in latest contest","admin.contests.ranking.latestNoContest":"No contest yet","admin.contests.ranking.allTimeTitle":"Top students by total score","admin.contests.ranking.allTimeDesc":"Top 3 all-time outstanding students","admin.contests.ranking.loading":"Loading...","admin.contests.ranking.noData":"No data yet","admin.contests.ranking.scoreLabel":"pts","admin.contests.ranking.totalScoreLabel":"total pts","admin.contests.ranking.contestsAvg":"{count} contests • Avg: {avg}","admin.contests.management.title":"Contest List","admin.contests.management.showing":"Showing {count} / {total} contests","admin.contests.management.addNew":"Add New Contest","admin.contests.management.loading":"Loading data...","admin.contests.management.emptyTitle":"No contests yet","admin.contests.management.emptyDesc":'Click "Add New Contest" to create the first contest',"admin.contests.filter.title":"Search Filters","admin.contests.filter.desc":"Filter and search contests by criteria","admin.contests.filter.activeCount":"{count} filters applied","admin.contests.filter.clearAll":"Clear all","admin.contests.filter.activeLabel":"Filtering:","admin.contests.filter.searchLabel":"Search","admin.contests.filter.searchPlaceholder":"Enter contest name","admin.contests.filter.statusLabel":"Status","admin.contests.filter.statusPlaceholder":"Select status","admin.contests.filter.timeTypeLabel":"Contest Model","admin.contests.filter.timeTypePlaceholder":"Select contest model type","admin.contests.filter.allStatuses":"All statuses","admin.contests.filter.allTimeTypes":"All contest model types","admin.contests.filter.visibilityLabel":"Visibility","admin.contests.filter.visibilityPlaceholder":"Select visibility","admin.contests.filter.allVisibilities":"All visibilities","admin.contests.filter.noEndDate":"No end date","admin.contests.table.name":"Contest Name","admin.contests.table.classification":"Classification","admin.contests.table.timeType":"Contest Model","admin.contests.table.time":"Time","admin.contests.table.status":"Status","admin.contests.table.active":"Active","admin.contests.table.actions":"Actions","admin.contests.table.timeTo":"to","admin.contests.status.upcoming":"Upcoming","admin.contests.status.inProgress":"In Progress","admin.contests.status.completed":"Completed","admin.contests.timeType.unlimited":"Unlimited","admin.contests.timeType.limited":"Time Limited","admin.contests.active.active":"Active","admin.contests.active.paused":"Paused","admin.contests.visibility.public":"Public","admin.contests.visibility.internal":"Internal","admin.contests.visibility.private":"Private","admin.contests.action.viewDetail":"View details","admin.contests.action.edit":"Edit","admin.contests.action.delete":"Delete","admin.contests.add.title":"Add New Contest","admin.contests.add.desc":"Enter information to create a new contest in the system","admin.contests.add.submitting":"Adding...","admin.contests.add.submit":"Add Contest","admin.contests.add.cancel":"Cancel","admin.contests.edit.title":"Edit Contest","admin.contests.edit.desc":"Update contest information: {name}","admin.contests.edit.submitting":"Updating...","admin.contests.edit.submit":"Update","admin.contests.edit.cancel":"Cancel","admin.contests.delete.title":"Delete Contest","admin.contests.delete.cannotUndo":"This action cannot be undone","admin.contests.delete.participants":"{count} participants","admin.contests.delete.rooms":"{count} rooms","admin.contests.delete.warningTitle":"Important Warning","admin.contests.delete.warningRooms":"All exam rooms will be deleted","admin.contests.delete.warningData":"Participant data will be deleted","admin.contests.delete.warningResults":"Exam results cannot be recovered","admin.contests.delete.cancel":"Cancel","admin.contests.delete.submitting":"Deleting...","admin.contests.delete.confirm":"Confirm Delete","admin.contests.detail.title":"Contest Details","admin.contests.detail.desc":"Detailed statistics and analysis of exam results","admin.contests.detail.loading":"Loading data...","admin.contests.detail.statAvgScore":"Avg Score","admin.contests.detail.statParticipants":"Participants","admin.contests.detail.statCompletion":"Completion","admin.contests.detail.statAvgTime":"Avg Min","admin.contests.detail.top3Title":"Top 3 Outstanding Students","admin.contests.detail.noStudents":"No student data yet","admin.contests.detail.scoreDistTitle":"Score Distribution","admin.contests.detail.noScoreDist":"No score distribution data yet","admin.contests.detail.classAvgTitle":"Avg Score by Class","admin.contests.detail.noClassData":"No class data yet","admin.contests.detail.classStudentCount":"{count} students","admin.contests.detail.avgTimeLabel":"Avg Completion Time","admin.contests.detail.fastestLabel":"Fastest","admin.contests.detail.slowestLabel":"Slowest","admin.contests.detail.minuteUnit":"min","admin.contests.detail.contestLabel":"Contest","admin.contests.detail.timeLabel":"Time","admin.contests.detail.unlimited":"Unlimited","admin.contests.detail.loadError":"Unable to load statistics data. Please try again later.","admin.contests.student.title":"Student Profile: {name}","admin.contests.student.desc":"Participation history and detailed statistics","admin.contests.student.loading":"Loading data...","admin.contests.student.noClass":"No class assigned","admin.contests.student.codeLabel":"Code: {code}","admin.contests.student.avgScoreLabel":"Avg Score","admin.contests.student.statTotalScore":"Total Score","admin.contests.student.statContests":"Contests Joined","admin.contests.student.statBestRank":"Best Rank","admin.contests.student.statHighest":"Highest Score","admin.contests.student.scoreRangeTitle":"Score Range","admin.contests.student.scoreHighest":"Highest Score","admin.contests.student.scoreAvg":"Average Score","admin.contests.student.scoreLowest":"Lowest Score","admin.contests.student.trendTitle":"Score Trend","admin.contests.student.noTrendData":"No score data yet","admin.contests.student.skillsTitle":"Competency Analysis","admin.contests.student.historyTitle":"Contest Participation History","admin.contests.student.historyScore":"Score:","admin.contests.student.historyRank":"Rank:","admin.contests.student.historyEmpty":"No contest participation history","admin.contests.student.awardsTitle":"Awards & Achievements","admin.contests.student.rank1":"🥇 1st","admin.contests.student.rank2":"🥈 2nd","admin.contests.student.rank3":"🥉 3rd","admin.contests.student.rankN":"#{rank}","admin.contests.student.loadError":"Unable to load student data. Please try again later.","admin.contests.student.scoreRadarName":"Score","admin.contests.toast.addSuccess":"Success","admin.contests.toast.addSuccessDesc":"New contest added!","admin.contests.toast.editSuccess":"Success","admin.contests.toast.editSuccessDesc":"Contest updated!","admin.contests.toast.deleteSuccess":"Success","admin.contests.toast.deleteSuccessDesc":'Contest "{name}" deleted',"admin.contests.form.nameLabel":"Contest Name","admin.contests.form.namePlaceholder":"E.g.: English Talent 2025","admin.contests.form.charCount":"{current}/{max} characters","admin.contests.form.classificationLabel":"Classification","admin.contests.form.classificationPlaceholder":"Select classification","admin.contests.form.roomCreationLabel":"Rooms by Class","admin.contests.form.roomCreationAll":"Create all classes","admin.contests.form.roomCreationAllDesc":"Automatically create exam rooms for all classes","admin.contests.form.roomCreationSelected":"Specify classes","admin.contests.form.roomCreationSelectedDesc":"Select classes to create exam rooms","admin.contests.form.examLabel":"Exam","admin.contests.form.examSelected":"{parentCount} parent exam, {childCount} child exams","admin.contests.form.examNone":"No exam selected","admin.contests.form.examSelectBtn":"Select Exam","admin.contests.form.examHint":"Select the exam for this contest","admin.contests.form.examError":"Please select an exam for this contest","admin.contests.form.examSelectClassificationFirst":"Please select contest classification first","admin.contests.form.examParentLabel":"Parent Exam ({count})","admin.contests.form.examChildLabel":"Child Exams ({count})","admin.contests.form.examChildCode":"Code: {name}","admin.contests.form.descriptionLabel":"Description","admin.contests.form.descriptionPlaceholder":"Detailed description about the contest...","admin.contests.form.timeTypeLabel":"Contest Model","admin.contests.form.timeTypeLimited":"Time Limited","admin.contests.form.timeTypeLimitedDesc":"Has start and end time","admin.contests.form.timeTypeUnlimited":"Unlimited","admin.contests.form.timeTypeUnlimitedDesc":"Has start time only, no end time","admin.contests.form.unlimitedInfo":"Unlimited time contest","admin.contests.form.unlimitedInfoDesc":"Students can join the contest anytime after the start time. There is no end time.","admin.contests.form.contestDuration":"Contest duration","admin.contests.form.startTime":"Contest start time","admin.contests.form.startDate":"Start Date","admin.contests.form.startHour":"Start Time","admin.contests.form.endDate":"End Date","admin.contests.form.endHour":"End Time","admin.contests.form.activeStatusLabel":"Active Status","admin.contests.form.activeStatusHintActive":"Contest will be active immediately after creation","admin.contests.form.activeStatusHintPaused":"Contest will be paused, can be activated later","admin.contests.form.activeStatusDescActive":"Contest is currently active","admin.contests.form.activeStatusDescPaused":"Contest is currently paused","admin.exams.title":"Exam Management","admin.exams.subtitle":"Manage exams and create new questions from templates","admin.exams.examFallbackName":"Exam {id}","admin.exams.uncategorized":"Uncategorized","admin.exams.toast.deleteSuccess":"Exam deleted successfully!","admin.exams.toast.deleteSuccessDesc":'Deleted exam "{name}"',"admin.exams.toast.deleteFailed":"Deletion failed","admin.exams.toast.deleteError":"An error occurred while deleting the exam. Please try again.","admin.exams.toast.success":"Success","admin.exams.toast.copySuccess":"Copied exam {id}","admin.exams.toast.shuffleSuccess":"Created {count} shuffled variants from exam {id}! Question order has been randomized.","admin.exams.error.loadTitle":"Unable to load exam list","admin.exams.error.loadMessage":"An error occurred while loading data. Please try again.","admin.exams.stats.totalExams":"Total Exams","admin.exams.stats.activeExams":"{count} exams active","admin.exams.stats.rooms":"Rooms","admin.exams.stats.totalAssigned":"Total assigned rooms","admin.exams.stats.completed":"Completed","admin.exams.stats.studentsSubmitted":"Students submitted","admin.exams.stats.statusDistribution":"Status Distribution","admin.exams.stats.ready":"Ready","admin.exams.stats.notReady":"Not Ready","admin.exams.stats.activated":"Activated","admin.exams.stats.deactivated":"Deactivated","admin.exams.stats.examUnit":"{count} exams","admin.exams.table.title":"Exam List","admin.exams.table.showing":"Showing {count} / {total} exams","admin.exams.table.createExam":"Create Exam","admin.exams.table.loading":"Loading data...","admin.exams.table.empty":"No exams found","admin.exams.table.createdPrefix":"Created:","admin.exams.table.minutes":"{count} min","admin.exams.table.questionCount":"{count}/{total} questions","admin.exams.table.completed":"Completed","admin.exams.table.ready":"Completed","admin.exams.table.notReady":"Incomplete","admin.exams.table.activated":"Activated","admin.exams.table.deactivated":"Deactivated","admin.exams.table.cannotActivate":"Exam is not ready, cannot activate","admin.exams.table.editContent":"Edit exam content","admin.exams.filter.searchPlaceholder":"Search by name, exam code...","admin.exams.filter.level":"Level","admin.exams.filter.allLevels":"All Levels","admin.exams.filter.ready":"Completed","admin.exams.filter.allReady":"All Completion","admin.exams.filter.isReady":"Completed","admin.exams.filter.notReady":"Incomplete","admin.exams.filter.status":"Status","admin.exams.filter.allStatuses":"All Statuses","admin.exams.filter.activated":"Activated","admin.exams.filter.deactivated":"Deactivated","admin.exams.filter.clearFilters":"Clear Filters","admin.exams.filter.searchLabel":"Search:","admin.exams.filter.levelLabel":"Level:","admin.exams.filter.readyLabel":"Completed:","admin.exams.filter.statusLabel":"Status:","admin.exams.col.code":"Code","admin.exams.col.name":"Title","admin.exams.col.level":"Level","admin.exams.col.difficulty":"Difficulty","admin.exams.col.duration":"Duration","admin.exams.col.questions":"Questions","admin.exams.col.assigned":"Assigned","admin.exams.col.ready":"Completed","admin.exams.col.status":"Status","admin.exams.col.actions":"Actions","admin.exams.col.classification":"Classification","admin.exams.col.creator":"Creator","admin.exams.col.createdAt":"Created date","admin.exams.action.view":"View Details","admin.exams.action.preview":"Preview Exam","admin.exams.action.edit":"Edit","admin.exams.action.copy":"Copy","admin.exams.action.shuffle":"Create Shuffled Exam","admin.exams.action.delete":"Delete","admin.exams.difficulty.easy":"Easy","admin.exams.difficulty.medium":"Medium","admin.exams.difficulty.hard":"Hard","admin.exams.delete.title":"Confirm Delete Exam","admin.exams.delete.confirm":"Are you sure you want to delete exam","admin.exams.delete.warning":"This action cannot be undone and will delete all related data.","admin.exams.delete.cancel":"Cancel","admin.exams.delete.submit":"Delete","admin.exams.duplicate.title":"Copy Exam","admin.exams.duplicate.subtitle":"Create a complete copy","admin.exams.duplicate.originalExam":"Original Exam","admin.exams.duplicate.copyIncludes":"Copy will include","admin.exams.duplicate.examInfo":"Exam information","admin.exams.duplicate.allSettings":"All configurations and settings","admin.exams.duplicate.questions":"Questions","admin.exams.duplicate.questionCount":"{count} questions","admin.exams.duplicate.newName":"New Name","admin.exams.duplicate.newCode":"New Code","admin.exams.duplicate.draftNote":"The copy will be created with status","admin.exams.duplicate.draft":"Draft","admin.exams.duplicate.editableNote":"and can be edited right after creation.","admin.exams.duplicate.cancel":"Cancel","admin.exams.duplicate.copying":"Copying...","admin.exams.duplicate.submit":"Create Copy","admin.exams.view.subject":"Subject","admin.exams.view.level":"Level","admin.exams.view.duration":"Duration","admin.exams.view.minutes":"{count} min","admin.exams.view.questionCount":"Question Count","admin.exams.view.questions":"{count} questions","admin.exams.view.totalPoints":"Total Points","admin.exams.view.points":"{count} pts","admin.exams.view.difficulty":"Difficulty","admin.exams.view.description":"Description","admin.exams.view.close":"Close","admin.exams.shuffle.title":"Create Shuffled Exam Set","admin.exams.shuffle.desc":"Create multiple exam versions from {code} with randomly shuffled question order","admin.exams.shuffle.questionCount":"{count} questions","admin.exams.shuffle.minutes":"{count} min","admin.exams.shuffle.points":"{count} pts","admin.exams.shuffle.howItWorks":"How it works","admin.exams.shuffle.info1":"Each variant contains the exact same set of questions as the original","admin.exams.shuffle.info2":"The order of Parts is preserved","admin.exams.shuffle.info3":"Questions within the same Part are randomly shuffled","admin.exams.shuffle.info4":"Variants are linked to the parent exam for management","admin.exams.shuffle.countLabel":"Number of variants to create","admin.exams.shuffle.strategyLabel":"Existing exam handling option","admin.exams.shuffle.keepOld":"Keep existing exams and add new ones","admin.exams.shuffle.replaceAll":"Create a completely new set","admin.exams.shuffle.existingVariants":"Existing exams ({count})","admin.exams.shuffle.deleteAll":"Delete all ({count})","admin.exams.shuffle.loading":"Loading...","admin.exams.shuffle.noVariants":"No shuffled exams yet","admin.exams.shuffle.variantCode":"Code: {name}","admin.exams.shuffle.originalBadge":"📌 Original","admin.exams.shuffle.originalNote":"Original question order, cannot be deleted","admin.exams.shuffle.preview":"Preview","admin.exams.shuffle.close":"Close","admin.exams.shuffle.creating":"Creating...","admin.exams.shuffle.createButton":"Create {count} shuffled exams","admin.exams.shuffle.confirmDeleteAllTitle":"Delete all shuffled exams?","admin.exams.shuffle.confirmDeleteAllDesc":"Are you sure you want to delete all {count} shuffled exams? The original exam (Code: 000) will be kept. This action cannot be undone.","admin.exams.shuffle.cancel":"Cancel","admin.exams.shuffle.deleteAllBtn":"Delete All","admin.exams.shuffle.confirmDeleteOneTitle":"Delete this exam?","admin.exams.shuffle.confirmDeleteOneDesc":"Are you sure you want to delete this exam? This action cannot be undone.","admin.exams.shuffle.deleteBtn":"Delete","admin.exams.create.title":"Create New Exam","admin.exams.create.step1":"Step 1: Enter basic exam information","admin.exams.create.success":"Success","admin.exams.create.successDesc":'Saved exam "{name}". Redirecting to Template selection...',"admin.exams.create.incompleteInfo":"Incomplete Information","admin.exams.create.incompleteInfoDesc":"Please fill in all required fields and check the information entered","admin.exams.create.cancel":"Cancel","admin.exams.create.saving":"Saving...","admin.exams.create.saveAndContinue":"Create exam and start editing content","admin.exams.create.loading":"Loading...","admin.exams.form.basicInfo":"Basic Information","admin.exams.form.requiredHint":"Required fields are marked with (*)","admin.exams.form.codeLabel":"Exam Code","admin.exams.form.codePlaceholder":"Enter exam code...","admin.exams.form.charCount":"{count}/{max} characters","admin.exams.form.nameLabel":"Exam Name","admin.exams.form.namePlaceholder":"Enter exam name...","admin.exams.form.subject":"Subject","admin.exams.form.subjectPlaceholder":"Select subject","admin.exams.form.loading":"Loading...","admin.exams.form.level":"Level","admin.exams.form.levelPlaceholder":"Select level","admin.exams.form.difficulty":"Difficulty","admin.exams.form.difficultyPlaceholder":"Select difficulty","admin.exams.form.easy":"Easy","admin.exams.form.medium":"Medium","admin.exams.form.hard":"Hard","admin.exams.form.duration":"Exam Duration (minutes)","admin.exams.form.totalPoints":"Total Points","admin.exams.form.description":"Description","admin.exams.form.descriptionPlaceholder":"Detailed description about the exam, objectives, target audience...","admin.exams.form.classification":"Exam Classification","admin.exams.form.classificationPlaceholder":"Select exam classification","admin.exams.edit.title":"Edit Exam","admin.exams.edit.subtitle":"Update your exam information","admin.exams.edit.loading":"Loading exam information...","admin.exams.edit.loadError":"Unable to load exam information","admin.exams.edit.loadErrorDesc":"An error occurred while loading data. Please try again.","admin.exams.edit.backToList":"Back to list","admin.exams.edit.success":"Updated exam {name} successfully!","admin.exams.edit.invalidInfo":"Invalid Information","admin.exams.edit.invalidInfoDesc":"Please check the information fields","admin.exams.edit.templateInfoTitle":"Template Information (Cannot be changed)","admin.exams.edit.templateInfoDesc":"The exam template was selected when creating the exam and cannot be changed","admin.exams.edit.templateName":"Template Name:","admin.exams.edit.templateParts":"Parts:","admin.exams.edit.templateQuestions":"Questions:","admin.exams.edit.noTemplate":"No Template Selected","admin.exams.edit.noTemplateDesc":"You need to select a Template to complete the exam structure.","admin.exams.edit.editQuestions":"Edit Questions","admin.exams.edit.back":"Back","admin.exams.edit.saving":"Saving...","admin.exams.edit.saveChanges":"Save Changes","admin.exams.edit.saveAndSelectTemplate":"Save exam and continue to Template selection","admin.exams.edit.saved":"Exam saved","admin.exams.edit.redirectToTemplate":"Redirecting to Template selection...","admin.exams.edit.loadingFallback":"Loading...","admin.exams.template.exam":"Exam","admin.exams.template.examCode":"Exam Code:","admin.exams.template.step2":"Step 2: Select Exam Template","admin.exams.template.selectTemplate":"Select Exam Template","admin.exams.template.error":"Error","admin.exams.template.loadError":"Unable to load exam information. Please try again.","admin.exams.template.loading":"Loading exam information...","admin.exams.template.loadingFallback":"Loading...","admin.exams.preview.title":"Preview Exam: {name}","admin.exams.preview.examInfo":"Exam Information","admin.exams.preview.duration":"Duration:","admin.exams.preview.questionCount":"Questions:","admin.exams.preview.totalPoints":"Total Points:","admin.exams.preview.progress":"Progress","admin.exams.preview.loading":"Loading...","admin.exams.preview.questionNavigation":"Question Navigation","admin.exams.preview.all":"All","admin.exams.preview.allQuestions":"All {count} questions","admin.exams.preview.partQuestions":"Part {part}: {count} questions","admin.exams.preview.collapse":"Collapse","admin.exams.preview.detail":"Details","admin.exams.preview.questionIndex":"Question {index} / {total}","admin.exams.preview.noQuestions":"No questions yet","admin.exams.preview.loadingQuestions":"Loading questions...","admin.exams.preview.retry":"Retry","admin.exams.preview.examNoQuestions":"This exam has no questions yet.","admin.exams.preview.prevQuestion":"Previous Question","admin.exams.preview.prev":"Prev","admin.exams.preview.nextQuestion":"Next Question","admin.exams.preview.next":"Next","admin.exams.preview.footerNote":"This is a preview mode to check the layout and content of the exam.","admin.exams.preview.close":"Close","admin.exams.preview.loadError":"Unable to load questions. Please try again.","admin.exams.preview.points":"{count} pts","admin.exams.preview.questions":"{count} questions","admin.exams.preview.unsupportedType":"Question type not yet supported for preview:","admin.exams.preview.lookAndChoose":"Look at the picture and choose the correct answer","admin.exams.configure.error":"Error","admin.exams.configure.loadError":"Unable to load exam information. Please try again.","admin.exams.configure.missingInfo":"Missing information","admin.exams.configure.selectTemplateFirst":"Please select a template first.","admin.exams.configure.templateNotFound":"Template information not found.","admin.exams.configure.success":"Success","admin.exams.configure.successDesc":"Template configuration saved. Redirecting to question creation page...","admin.exams.configure.loading":"Loading information...","admin.exams.configure.noTemplate":"Template information not found","admin.exams.configure.backToTemplate":"Back to template selection","admin.exams.configure.saving":"Saving configuration...","admin.exams.configure.loadingFallback":"Loading...","admin.exams.questions.missingTemplate":"Missing template","admin.exams.questions.missingTemplateDesc":"Exam has no template assigned. Please select a template first.","admin.exams.questions.error":"Error","admin.exams.questions.loadError":"Unable to load exam information. Please try again.","admin.exams.questions.loading":"Loading exam information...","admin.exams.questions.noTemplate":"No template found for this exam","admin.exams.questions.noTemplateDesc":"Please select a template before creating questions","admin.exams.questions.back":"Back","admin.exams.questions.createQuestions":"Create Questions","admin.exams.questions.step4":"Step 4: Create and edit exam questions","admin.exams.questions.createAndEditQuestions":"Create and edit exam questions","admin.exams.questions.loadingFallback":"Loading...","admin.exams.questions.guide.title":"Question Creation Guide","admin.exams.questions.guide.subtitle":"4 simple steps • Helpful tips • Save time","admin.exams.questions.guide.step1Title":"Follow the order","admin.exams.questions.guide.step1Desc":"Complete each question in order within each Part","admin.exams.questions.guide.step1Tip":"Move to the next Part after completing all questions in the current Part","admin.exams.questions.guide.step2Title":"Standardized template","admin.exams.questions.guide.step2Desc":"Each Part has a predefined question type based on the template standard","admin.exams.questions.guide.step2Tip":"No need to worry about format - the system will automatically format according to the standard","admin.exams.questions.guide.step3Title":"Safe storage","admin.exams.questions.guide.step3Desc":'Use "Save Question" to save each question',"admin.exams.questions.guide.step3Tip":'Press "Save Exam" when done to save everything and publish',"admin.exams.questions.guide.step4Title":"Question bank","admin.exams.questions.guide.step4Desc":'Check "Add to bank" to reuse',"admin.exams.questions.guide.step4Tip":"Questions will be saved to the shared pool and can be used in other exams","admin.exams.questions.guide.quickTips":"Quick tips:","admin.exams.questions.guide.tip1":"Ctrl+S to quickly save the current question","admin.exams.questions.guide.tip2":"Data is auto-saved locally on change","admin.exams.questions.guide.tip3":'Preview questions with the "Preview" button',"admin.exams.partEditor.skillListening":"Listening","admin.exams.partEditor.skillSpeaking":"Speaking","admin.exams.partEditor.skillReading":"Reading","admin.exams.partEditor.skillWriting":"Writing","admin.exams.partEditor.qtFillMissingWordsInGrid":"Fill in missing letters","admin.exams.partEditor.qtLookPictureFillBlankChooseAnswer":"Look at picture, fill in the blank","admin.exams.partEditor.qtLookPictureChooseCorrectAnswer":"Look at picture, choose correct answer","admin.exams.partEditor.qtLookPictureFillWordHint":"Look at picture, fill word (with hint)","admin.exams.partEditor.qtLabelThePicture":"Label the picture","admin.exams.partEditor.qtReadAndColorObjects":"Read and color","admin.exams.partEditor.qtMultipleChoice":"Multiple choice","admin.exams.partEditor.qtListening":"Listening comprehension","admin.exams.partEditor.qtReading":"Reading comprehension","admin.exams.partEditor.defaultBack":"Back","admin.exams.partEditor.defaultContinue":"Save configuration and continue","admin.exams.partEditor.defaultExamName":"Configure Exam","admin.exams.partEditor.step3":"Step 3: Configure question count","admin.exams.partEditor.templateLabel":"Template:","admin.exams.partEditor.totalQuestions":"Total questions","admin.exams.partEditor.changedFrom":"Changed from {from} questions","admin.exams.partEditor.keepDefault":"Keeping default template settings","admin.exams.partEditor.questionsUnit":"questions","admin.exams.partEditor.reset":"Reset","admin.exams.partEditor.defaultCount":"Default: {count}","admin.exams.partEditor.currentCount":"Current: {count}","admin.exams.partEditor.configParts":"Configure Each Part","admin.exams.partEditor.configPartsDesc":"Customize the number of questions for each part. Grouped questions can adjust the number of groups and questions per group.","admin.exams.partEditor.groupBadge":"Question group","admin.exams.partEditor.totalPartQuestions":"Total questions","admin.exams.partEditor.skillLabel":"Skill","admin.exams.partEditor.selectSkill":"Select skill","admin.exams.partEditor.defaultSkill":"(default: {skill})","admin.exams.partEditor.audioFile":"Audio file","admin.exams.partEditor.audioPlaceholder":"Select audio file for this part...","admin.exams.partEditor.questionCount":"Question count","admin.exams.partEditor.groupCount":"Number of groups","admin.exams.partEditor.addOrRemoveGroup":"Add or remove question groups","admin.exams.partEditor.questionsPerGroup":"Questions per group","admin.exams.partEditor.group":"Group {index}","admin.exams.partEditor.defaultValue":"(default: {value})","admin.exams.partEditor.unsavedChanges":"• Unsaved changes","admin.exams.partEditor.readyToContinue":"✓ Ready to continue","admin.exams.partEditor.saving":"Saving...","admin.settings.title":"System Settings","admin.settings.subtitle":"Manage system configuration and parameters","admin.settings.save.success":"Saved","admin.settings.save.successDesc":"Settings have been saved!","admin.settings.systemInfo.title":"System Information","admin.settings.systemInfo.desc":"General system configuration","admin.settings.systemInfo.edit":"Edit","admin.settings.systemInfo.cancel":"Cancel","admin.settings.systemInfo.save":"Save Changes","admin.settings.systemInfo.systemName":"System Name","admin.settings.systemInfo.systemEmail":"System Email","admin.settings.systemInfo.supportEmail":"Support Email","admin.settings.notification.title":"Notification Settings","admin.settings.notification.desc":"Manage notification channels","admin.settings.notification.email":"Email Notifications","admin.settings.notification.emailDesc":"Send email notifications to students and teachers","admin.settings.notification.sms":"SMS Notifications","admin.settings.notification.smsDesc":"Send important SMS notifications","admin.settings.ebm.title":"EBM Integration","admin.settings.ebm.desc":"Configure connection to EBM system","admin.settings.ebm.testConnection":"Test Connection","admin.settings.ebm.syncNow":"Sync Now","admin.settings.status.title":"System Status","admin.settings.status.desc":"System operation information","admin.settings.status.operational":"Operational","admin.settings.status.connected":"Connected","admin.settings.status.active":"Active","admin.settings.status.paused":"Paused","admin.settings.status.lastBackup":"Yesterday 23:00","admin.testParticipants.title":"Test Participants","admin.testParticipants.subtitle":"Track information and exam results of participants in the system","admin.testParticipants.cardTitle":"Test Participants List","admin.testParticipants.cardDescription":"Total {totalItems} participants found","admin.testParticipants.clearFilters":"Clear filters","admin.testParticipants.filterHeader":"Search filters","admin.testParticipants.searchPlaceholder":"Search by name, email or phone number...","admin.testParticipants.branchLabel":"Branch","admin.testParticipants.allBranches":"All branches","admin.testParticipants.contestLabel":"Contest","admin.testParticipants.allContests":"All contests","admin.testParticipants.fromDate":"From date","admin.testParticipants.toDate":"To date","admin.testParticipants.col.participant":"Participant","admin.testParticipants.col.phone":"Phone","admin.testParticipants.col.dob":"Date of Birth","admin.testParticipants.col.branch":"Branch","admin.testParticipants.col.contest":"Contest","admin.testParticipants.col.exam":"Exam","admin.testParticipants.col.bestScore":"Best Score","admin.testParticipants.col.maxScore":"Max Score","admin.testParticipants.col.attemptCount":"Attempts","admin.testParticipants.col.lastAttempt":"Last Attempt","admin.testParticipants.col.actions":"Actions","admin.testParticipants.loading":"Loading data...","admin.testParticipants.empty.title":"No data found","admin.testParticipants.empty.withFilters":"No results match the current filters. Please adjust your search criteria.","admin.testParticipants.empty.noData":"No participants have taken any exams yet.","admin.testParticipants.viewDetail":"View exam history details","admin.testParticipants.detail":"Details","admin.testParticipants.dialog.title":"Exam History Details","admin.testParticipants.dialog.description":"Detailed information about exam results and attempt history of the participant","admin.testParticipants.dialog.studentInfo":"Participant Information","admin.testParticipants.dialog.fullName":"Full Name","admin.testParticipants.dialog.email":"Email Address","admin.testParticipants.dialog.phone":"Phone Number","admin.testParticipants.dialog.dob":"Date of Birth","admin.testParticipants.dialog.branch":"Branch","admin.testParticipants.dialog.examInfo":"Exam Information","admin.testParticipants.dialog.contest":"Contest","admin.testParticipants.dialog.exam":"Exam","admin.testParticipants.dialog.lastAttempt":"Last Attempt","admin.testParticipants.dialog.bestScore":"Best Score","admin.testParticipants.dialog.passRate":"Pass Rate","admin.testParticipants.dialog.totalAttempts":"Total Attempts","admin.testParticipants.dialog.historyTitle":"Attempt History","admin.testParticipants.dialog.col.attempt":"Attempt","admin.testParticipants.dialog.col.score":"Score","admin.testParticipants.dialog.col.rate":"Rate","admin.testParticipants.dialog.col.status":"Status","admin.testParticipants.dialog.col.startTime":"Start Time","admin.testParticipants.dialog.col.submitTime":"Submit Time","admin.testParticipants.dialog.noAttempts":"No attempt data available.","admin.testParticipants.status.inProgress":"In Progress","admin.testParticipants.status.submitted":"Submitted","admin.testParticipants.status.graded":"Graded","admin.testParticipants.status.published":"Published","admin.roles.title":"Role Management","admin.roles.subtitle":"Manage roles and permissions in the system","admin.roles.table.title":"Role List","admin.roles.table.showing":"Showing {count} roles","admin.roles.table.empty":"No roles found","admin.roles.table.loading":"Loading...","admin.roles.table.addRole":"Create new role","admin.roles.col.name":"Role name","admin.roles.col.slug":"Slug","admin.roles.col.level":"Level","admin.roles.col.permCount":"Permissions","admin.roles.col.type":"Type","admin.roles.col.actions":"Actions","admin.roles.filter.searchPlaceholder":"Search by name or slug...","admin.roles.filter.allLevels":"All levels","admin.roles.level.system":"System","admin.roles.level.branch":"Branch","admin.roles.type.system":"System","admin.roles.type.custom":"Custom","admin.role.create.title":"Create new role","admin.role.create.subtitle":"Create a custom role for the system","admin.role.create.success":"Role created successfully","admin.role.create.submit":"Create role","admin.role.create.submitting":"Creating...","admin.role.field.name":"Role name","admin.role.field.slug":"Slug","admin.role.field.slugHint":"Lowercase letters, numbers, underscores and hyphens only","admin.role.field.level":"Level","admin.role.field.description":"Description","admin.role.field.portalType":"Belongs to portal","admin.role.field.portalTypeHint":"Select the portal this role will have access to","admin.role.field.portal.admin":"Admin Portal","admin.role.field.portal.adminDesc":"System, exam & user management","admin.role.field.portal.teacher":"Teacher Portal","admin.role.field.portal.teacherDesc":"Class management & grading","admin.role.field.portal.student":"Student Portal","admin.role.field.portal.studentDesc":"Online exams & results","admin.role.delete.title":"Delete role","admin.role.delete.desc":'Are you sure you want to delete the role "{name}"? This action cannot be undone.',"admin.role.delete.confirm":"Delete role","admin.role.delete.success":'Role "{name}" deleted',"admin.role.delete.cannotSystem":"Cannot delete a system role","admin.role.backToList":"Back to list","admin.role.info.title":"Role information","admin.role.info.edit":"Edit","admin.role.info.save":"Save","admin.role.info.cancel":"Cancel","admin.role.update.success":"Role updated successfully","admin.role.permissions.title":"Permissions","admin.role.permissions.showing":"{selected}/{total} permissions selected","admin.role.permissions.save":"Save changes","admin.role.permissions.saving":"Saving...","admin.role.permissions.saveSuccess":"Permissions updated successfully","admin.role.permissions.systemWarning":"This is a system role. Permissions cannot be edited.","admin.role.permissions.selectAll":"Select all","admin.role.permissions.unsavedChanges":"{count} unsaved changes","admin.user.roles.title":"Assigned roles","admin.user.roles.assign":"Assign role","admin.user.roles.empty":"No roles assigned yet","admin.user.roles.col.role":"Role","admin.user.roles.col.branch":"Branch","admin.user.roles.col.assignedAt":"Assigned date","admin.user.roles.col.assignedBy":"Assigned by","admin.user.roles.col.actions":"Actions","admin.user.roles.sessionCacheInfo":"Role changes will take effect after the user logs in again.","admin.user.role.assign.title":"Assign role","admin.user.role.assign.desc":"Select a role and branch to assign to the user","admin.user.role.assign.roleLabel":"Role","admin.user.role.assign.rolePlaceholder":"Select a role","admin.user.role.assign.branchLabel":"Branch","admin.user.role.assign.branchPlaceholder":"Select a branch","admin.user.role.assign.submit":"Assign role","admin.user.role.assign.success":'Role "{role}" assigned successfully',"admin.user.role.remove.title":"Remove role","admin.user.role.remove.desc":'Are you sure you want to remove the role "{role}" from this user?',"admin.user.role.remove.confirm":"Remove role","admin.user.role.remove.success":'Role "{role}" removed successfully',"admin.templates.title":"Exam Template Management","admin.templates.subtitle":"View, import, export, and delete exam templates","admin.templates.table.title":"Template List","admin.templates.searchPlaceholder":"Search templates","admin.templates.table.empty":"No templates found","admin.templates.table.loading":"Loading templates...","admin.templates.table.showing":"Showing {count} templates","admin.templates.col.title":"Title","admin.templates.col.subTitle":"Subtitle","admin.templates.col.examLevel":"Level","admin.templates.col.theme":"Theme","admin.templates.col.totalParts":"Parts","admin.templates.col.totalQuestions":"Questions","admin.templates.col.createdBy":"Created By","admin.templates.col.createdAt":"Created","admin.templates.col.updatedAt":"Updated","admin.templates.col.examCount":"Exams","admin.templates.col.actions":"Actions","admin.templates.filter.searchPlaceholder":"Search by title...","admin.templates.action.view":"View details","admin.templates.action.export":"Export","admin.templates.action.delete":"Delete","admin.templates.action.import":"Import Template","admin.templates.action.exporting":"Exporting...","admin.templates.export.success":"Template exported successfully","admin.templates.export.error":"Failed to export template","admin.templates.import.success":"Template imported successfully","admin.templates.import.error":"Failed to import template","admin.templates.import.invalidJson":"Invalid JSON file. Please check the file format.","admin.templates.import.invalidFile":"Please select a valid .json file.","admin.templates.import.invalidFormat":"Invalid template format. The file must contain title and parts fields.","admin.templates.import.parseError":"Failed to parse JSON file. Please check the file content.","admin.templates.import.readError":"Failed to read file. Please try again.","admin.templates.import.title":"Import Template","admin.templates.import.desc":"Select a JSON file previously exported from the system. If a template with the same ID already exists, it will be replaced.","admin.templates.import.selectFile":"Select JSON file","admin.templates.import.submit":"Import","admin.templates.import.submitting":"Importing...","admin.templates.delete.title":"Delete Template","admin.templates.delete.desc":'Are you sure you want to delete the template "{title}"? This action cannot be undone.',"admin.templates.delete.confirm":"Delete template","admin.templates.delete.success":'Template "{title}" deleted successfully',"admin.templates.detail.title":"Template Details","admin.templates.detail.back":"Back to list","admin.templates.detail.jsonView":"JSON Content","admin.templates.detail.info":"General Information","admin.templates.detail.parts":"Parts ({count})","admin.templates.detail.copyJson":"Copy JSON","admin.templates.detail.jsonCopied":"JSON copied to clipboard","admin.templates.create.title":"Create Template","admin.templates.create.desc":"Fill in the template details below. Only the Parts field requires JSON input.","admin.templates.create.placeholder":'Paste JSON content here...\n\n{\n "title": "...",\n "examLevel": "...",\n "parts": [...]\n}',"admin.templates.create.submit":"Create Template","admin.templates.create.creating":"Creating...","admin.templates.create.success":"Template created successfully","admin.templates.create.emptyJson":"Please paste JSON content.","admin.templates.create.invalidFormat":"Invalid template format. The JSON must contain title, examLevel and parts fields.","admin.templates.create.parseError":"Invalid JSON. Please check the content and try again.","admin.templates.create.validJson":"Valid JSON — ready to create","admin.templates.action.create":"Create Template","admin.templates.action.edit":"Edit","admin.templates.form.titleLabel":"Title","admin.templates.form.titlePlaceholder":"Enter template title...","admin.templates.form.titleRequired":"Title is required.","admin.templates.form.subTitleLabel":"Subtitle","admin.templates.form.subTitlePlaceholder":"Enter subtitle (optional)...","admin.templates.form.descriptionLabel":"Description","admin.templates.form.descriptionPlaceholder":"Enter description (optional)...","admin.templates.form.examLevelLabel":"Exam Level (CEFR)","admin.templates.form.examLevelPlaceholder":"Select exam level...","admin.templates.form.totalQuestionsLabel":"Total Questions","admin.templates.form.totalPartsLabel":"Total Parts","admin.templates.form.partsLabel":"Parts (JSON)","admin.templates.form.partsPlaceholder":'[\n {\n "partNumber": 1,\n "title": "Part 1",\n "questionCount": 5,\n ...\n }\n]',"admin.templates.form.partsRequired":"Parts JSON is required and must be a non-empty array.","admin.templates.form.partsNotArray":"Parts must be a JSON array.","admin.templates.form.partsParseError":"Invalid JSON. Please check the content.","admin.templates.form.validJson":"Valid JSON","admin.templates.form.themeLabel":"Theme","admin.templates.form.themePlaceholder":"Select theme...","admin.templates.form.themeNone":"None","admin.templates.edit.title":"Edit Template","admin.templates.edit.desc":"Modify the template details below. Only the Parts field requires JSON input.","admin.templates.edit.submit":"Save Changes","admin.templates.edit.saving":"Saving...","admin.templates.edit.success":"Template updated successfully","admin.templates.edit.loadError":"Failed to load template data for editing","bulkRooms.sidebar.label":"Bulk Exam Rooms","bulkRooms.page.title":"Bulk Exam Room Provisioning","bulkRooms.page.description":"Create many exam rooms for a contest across multiple branches in a single operation.","bulkRooms.actions.next":"Next","bulkRooms.actions.back":"Back","bulkRooms.actions.preview":"Preview","bulkRooms.actions.commit":"Create rooms","bulkRooms.actions.confirm":"Confirm","bulkRooms.actions.cancel":"Cancel","bulkRooms.actions.reset":"Start over","bulkRooms.actions.close":"Close","bulkRooms.steps.contest":"Pick contest","bulkRooms.steps.branches":"Pick branches","bulkRooms.steps.config":"Configure","bulkRooms.steps.preview":"Preview","bulkRooms.steps.commit":"Create rooms","bulkRooms.steps.indicator":"Step {current} of {total}","bulkRooms.contest.title":"Pick a contest","bulkRooms.contest.description":"Choose the contest the new rooms will belong to.","bulkRooms.contest.placeholder":"Search contests by name...","bulkRooms.contest.empty":"No contests found.","bulkRooms.contest.selected":"Selected: {name}","bulkRooms.branches.title":"Pick branches","bulkRooms.branches.description":"Select one or more branches to provision rooms for.","bulkRooms.branches.placeholder":"Choose branches...","bulkRooms.branches.empty":"No branches available.","bulkRooms.branches.selectedCount":"{count} branches selected","bulkRooms.branches.sourceEbm":"Branch list is loaded from the EBM system.","bulkRooms.branches.selectAll":"Select all branches","bulkRooms.branches.selectedSummary":"{selected}/{total} branches selected","bulkRooms.config.title":"Per-branch configuration","bulkRooms.config.description":"Configure how rooms are generated for each selected branch.","bulkRooms.config.mode.label":"Provisioning mode","bulkRooms.config.mode.AUTO_CLASS":"Auto from classes","bulkRooms.config.mode.MANUAL":"Manual","bulkRooms.config.mode.AUTO_CLASS.help":"Generate one room per active class room of the branch.","bulkRooms.config.mode.MANUAL.help":"Define rooms and student codes manually.","bulkRooms.config.onlyTeacher.label":"Add branch teachers to the rooms","bulkRooms.config.onlyTeacher.help":"If checked, all teachers of the branch will be added. If unchecked, no teachers will be added.","bulkRooms.config.nameFormat.label":"Room name format","bulkRooms.config.nameFormat.placeholder":"{branchCode} - {className}","bulkRooms.config.codeFormat.label":"Room code format (optional)","bulkRooms.config.codeFormat.placeholder":"{branchCode}_ROOM_{index}","bulkRooms.config.tokens.help":"Supported tokens: {tokens}","bulkRooms.config.classEbmIds.label":"Class room ids (optional)","bulkRooms.config.classEbmIds.placeholder":"Comma-separated class room ids","bulkRooms.config.classEbmIds.help":"Leave empty to use all active class rooms of the branch.","bulkRooms.config.rooms.title":"Rooms (manual mode)","bulkRooms.config.rooms.add":"Add room","bulkRooms.config.rooms.remove":"Remove","bulkRooms.config.rooms.empty":'No rooms yet. Click "Add room" to start.',"bulkRooms.config.studentCodes.label":"Student codes (optional, one per line)","bulkRooms.config.studentCodes.placeholder":"HS001\nHS002\n...","bulkRooms.config.studentCodes.help":"Missing users will be created on commit (default password = student code).","bulkRooms.preview.title":"Preview","bulkRooms.preview.description":"Review the planned rooms before confirming.","bulkRooms.preview.loading":"Building plan...","bulkRooms.preview.error":"Failed to build preview.","bulkRooms.preview.requiresForm":"Select contest, branches and complete config to enable preview.","bulkRooms.preview.summary.totalRooms":"Total rooms","bulkRooms.preview.summary.totalStaff":"Total staff","bulkRooms.preview.summary.totalStudents":"Total students","bulkRooms.preview.summary.totalNewUsers":"New users to create","bulkRooms.preview.summary.totalNewStudents":"New student accounts","bulkRooms.preview.summary.totalNewTeachers":"New teacher accounts","bulkRooms.preview.table.branch":"Branch","bulkRooms.preview.table.room":"Room name","bulkRooms.preview.table.code":"Room code","bulkRooms.preview.table.staff":"Staff","bulkRooms.preview.table.students":"Students","bulkRooms.preview.table.newUsers":"New users","bulkRooms.preview.table.roomName":"Room name","bulkRooms.preview.table.roomCode":"Room code","bulkRooms.preview.table.staffCount":"Staff","bulkRooms.preview.table.studentCount":"Students","bulkRooms.preview.table.roomCount":"{count} rooms","bulkRooms.preview.table.noRooms":"No rooms for this branch.","bulkRooms.preview.table.showMore":"Show {count} more rooms","bulkRooms.preview.table.collapse":"Collapse","bulkRooms.preview.empty":"No rooms in the plan.","bulkRooms.commit.dialog.title":"Confirm bulk provisioning","bulkRooms.commit.dialog.description":"You are about to create {rooms} rooms and {users} new users. This action cannot be undone.","bulkRooms.commit.dialog.warning":"This will create rooms and users in the database and cannot be undone.","bulkRooms.commit.dialog.confirmCheckbox":"I have reviewed the preview and confirm creating these rooms.","bulkRooms.commit.dialog.committing":"Creating...","bulkRooms.commit.success.title":"Provisioning succeeded","bulkRooms.commit.success.description":"Created {rooms} rooms, {participants} participants and {users} new users.","bulkRooms.commit.success.rooms":"Rooms created","bulkRooms.commit.success.participants":"Participants","bulkRooms.commit.success.users":"New users","bulkRooms.commit.error.title":"Provisioning failed","bulkRooms.commit.error.description":"Some branches failed to provision. See error details below.","bulkRooms.commit.error.list":"Error list","bulkRooms.commit.error.partial":"{count} branch(es) reported errors.","bulkRooms.commit.error.branch":"Branch {branchId} (EBM #{ebmBranchId}): {reason}"};
|