diff --git a/mc_backend/tests.py b/mc_backend/tests.py index 4a149ea9fc3cdc1f73b57c07920f57acb0b699d7..7df1f40258fde06954aba92855b8820cc3e54dfd 100644 --- a/mc_backend/tests.py +++ b/mc_backend/tests.py @@ -358,7 +358,7 @@ class McTestCase(unittest.TestCase): DatabaseService.commit() response = Mocks.app_dict[self.class_name].client.post( TestingConfig.SERVER_URI_H5P, headers=Mocks.headers_form_data, data=hf.to_dict()) - self.assertEqual(len(response.get_data()), 1940145) + self.assertEqual(len(response.get_data()), 1963607) with patch.object(mcserver.app.api.h5pAPI, "get_text_field_content", return_value=""): response = Mocks.app_dict[self.class_name].client.post( TestingConfig.SERVER_URI_H5P, headers=Mocks.headers_form_data, data=hf.to_dict()) diff --git a/mc_frontend/README.md b/mc_frontend/README.md index 13a57883ee7a07a0042032aa48725858c92a5364..73acd0930233cb83d7ca8fddd52ac502e009d198 100644 --- a/mc_frontend/README.md +++ b/mc_frontend/README.md @@ -2,7 +2,7 @@ 1. Clone the repo: `git clone https://scm.cms.hu-berlin.de/callidus/machina-callida.git` 2. Move to the newly created folder: `cd machina-callida/mc_frontend` 3. Run `npm install` -4. Run `npm install -g @angular/cli` (you may need `sudo`). +4. Run `npm install -g @angular/cli` (you may need `sudo`). Optional: Install the Ionic CLI for additional command-line utilities: `npm i -g @ionic/cli`. 5. Check that the Angular command line interface is installed by running `ng --version`. It should print the version of the Angular CLI. 6. Run `npm start`. If you already ran `npm install` and the CLI still complains about missing dependencies, install them one by one using `npm install DEPENDENCY_NAME`. diff --git a/mc_frontend/src/app/app-routing.module.ts b/mc_frontend/src/app/app-routing.module.ts index 304b844afeef2cde091866be96f2aa9d03bfba1f..11ef370a310bddb0da46672a96b432e422c37615 100644 --- a/mc_frontend/src/app/app-routing.module.ts +++ b/mc_frontend/src/app/app-routing.module.ts @@ -30,6 +30,10 @@ export const routes: Routes = [ path: 'embed', loadChildren: () => import('./embed/embed.module').then( m => m.EmbedPageModule) }, + { + path: 'sequences', + loadChildren: () => import('./sequences/sequences.module').then( m => m.SequencesPageModule) + }, diff --git a/mc_frontend/src/app/app.component.spec.ts b/mc_frontend/src/app/app.component.spec.ts index d8679f5b9730cddc3d4937453f3d035c30a9b54f..0a9a0cb1d1034851fc41b04ec3a760c59a8a03f5 100644 --- a/mc_frontend/src/app/app.component.spec.ts +++ b/mc_frontend/src/app/app.component.spec.ts @@ -25,6 +25,7 @@ import {LoadChildrenCallback, Route} from '@angular/router'; import configMC from '../configMC'; import {SemanticsPageModule} from './semantics/semantics.module'; import {EmbedPageModule} from './embed/embed.module'; +import {SequencesPageModule} from './sequences/sequences.module'; describe('AppComponent', () => { let statusBarSpy, splashScreenSpy, platformReadySpy, fixture: ComponentFixture<AppComponent>, @@ -105,8 +106,9 @@ describe('AppComponent', () => { }); it('should test routing', (done) => { - const urls: string[] = [configMC.pageUrlEmbed.slice(1), configMC.pageUrlSemantics.slice(1)]; - const modules: any[] = [EmbedPageModule, SemanticsPageModule]; + const urls: string[] = [configMC.pageUrlEmbed.slice(1), configMC.pageUrlSemantics.slice(1), + configMC.pageUrlSequences.slice(1)]; + const modules: any[] = [EmbedPageModule, SemanticsPageModule, SequencesPageModule]; let doneCount = 0; new Promise(resolve => { urls.forEach((url, index) => { diff --git a/mc_frontend/src/app/corpus.service.spec.ts b/mc_frontend/src/app/corpus.service.spec.ts index 9b7597d7bf7081d6f573630a134371502052ac10..f9864274b59d7a731903ac39a2f8f8dc5aae55be 100644 --- a/mc_frontend/src/app/corpus.service.spec.ts +++ b/mc_frontend/src/app/corpus.service.spec.ts @@ -74,7 +74,7 @@ describe('CorpusService', () => { corpusService.checkAnnisResponse().then(() => { }, () => { expect(corpusService.annisResponse).toBeFalsy(); - helperService.applicationState.next(new ApplicationState()); + helperService.applicationState.next(new ApplicationState({mostRecentSetup: new TextData()})); corpusService.checkAnnisResponse().then(() => { }, () => { expect(corpusService.annisResponse).toBeFalsy(); diff --git a/mc_frontend/src/app/corpus.service.ts b/mc_frontend/src/app/corpus.service.ts index 633eee619d6cd593856a942666abc1865d7d9e0c..48b52639c777225a3e6fd505a56a89a8aadd80eb 100644 --- a/mc_frontend/src/app/corpus.service.ts +++ b/mc_frontend/src/app/corpus.service.ts @@ -122,15 +122,11 @@ export class CorpusService { return resolve(); } this.helperService.applicationState.pipe(take(1)).subscribe((state: ApplicationState) => { - if (state.mostRecentSetup) { - this.annisResponse = state.mostRecentSetup.annisResponse; - this.currentAuthor = state.mostRecentSetup.currentAuthor; - this.currentUrn = state.mostRecentSetup.currentUrn; - this.currentCorpusCache = state.mostRecentSetup.currentCorpus; - return resolve(); - } else { - return reject(); - } + this.annisResponse = state.mostRecentSetup.annisResponse; + this.currentAuthor = state.mostRecentSetup.currentAuthor; + this.currentUrn = state.mostRecentSetup.currentUrn; + this.currentCorpusCache = state.mostRecentSetup.currentCorpus; + return this.annisResponse ? resolve() : reject(); }, () => { return reject(); }); diff --git a/mc_frontend/src/app/embed/embed.page.spec.ts b/mc_frontend/src/app/embed/embed.page.spec.ts index a5f560c06bead3f896fbfae5a97c1d7919f94939..4a6881d72a12ab66a1edf210a49257f729ffe1fb 100644 --- a/mc_frontend/src/app/embed/embed.page.spec.ts +++ b/mc_frontend/src/app/embed/embed.page.spec.ts @@ -31,7 +31,7 @@ describe('EmbedPage', () => { beforeEach(() => { fixture = TestBed.createComponent(EmbedPage); embedPage = fixture.componentInstance; - loadExerciseSpy = spyOn(embedPage, 'loadExercise').and.returnValue(Promise.resolve()); + loadExerciseSpy = spyOn(embedPage.exerciseService, 'loadExerciseFromQueryParams').and.returnValue(Promise.resolve()); fixture.detectChanges(); }); @@ -46,10 +46,12 @@ describe('EmbedPage', () => { it('should load an exercise', (done) => { loadExerciseSpy.and.callThrough(); - const loadH5Pspy: Spy = spyOn(embedPage.exerciseService, 'loadH5P').and.returnValue(Promise.resolve()); - embedPage.loadExercise().then(() => { + const loadH5Pspy: Spy = spyOn(embedPage.exerciseService, 'loadExercise').and.returnValue(Promise.resolve()); + embedPage.exerciseService.loadExerciseFromQueryParams(embedPage.activatedRoute).then(() => { + expect(loadH5Pspy).toHaveBeenCalledTimes(1); loadH5Pspy.and.callFake(() => Promise.reject()); - embedPage.loadExercise().then(() => {}, () => { + embedPage.exerciseService.loadExerciseFromQueryParams(embedPage.activatedRoute).then(() => { + }, () => { expect(loadH5Pspy).toHaveBeenCalledTimes(2); done(); }); diff --git a/mc_frontend/src/app/embed/embed.page.ts b/mc_frontend/src/app/embed/embed.page.ts index 98fc40480e03410e7bd272e194f4cb0a369e33c6..db5670dc9641aefd0f3618580e437b87eda6e01e 100644 --- a/mc_frontend/src/app/embed/embed.page.ts +++ b/mc_frontend/src/app/embed/embed.page.ts @@ -1,7 +1,6 @@ import {Component, OnInit} from '@angular/core'; import {ActivatedRoute} from '@angular/router'; import {ExerciseService} from '../exercise.service'; -import {ExerciseParams} from '../models/exerciseParams'; @Component({ selector: 'app-embed', @@ -14,21 +13,9 @@ export class EmbedPage implements OnInit { public exerciseService: ExerciseService) { } - loadExercise(): Promise<void> { - return new Promise<void>((resolve, reject) => { - this.activatedRoute.queryParams.subscribe((params: ExerciseParams) => { - this.exerciseService.loadH5P(params.eid).then(() => { - return resolve(); - }, () => { - return reject(); - }); - }); - }); - } - ngOnInit(): Promise<void> { return new Promise<void>((resolve, reject) => { - this.loadExercise().then(() => { + this.exerciseService.loadExerciseFromQueryParams(this.activatedRoute).then(() => { return resolve(); }, () => { return reject(); diff --git a/mc_frontend/src/app/exercise.service.spec.ts b/mc_frontend/src/app/exercise.service.spec.ts index bfa74e6b5139adf5045238e4b2954b30c2c3a93b..e44cb3d782e4ca69d88aa12ab8d887749e7bde85 100644 --- a/mc_frontend/src/app/exercise.service.spec.ts +++ b/mc_frontend/src/app/exercise.service.spec.ts @@ -8,11 +8,13 @@ import {TranslateTestingModule} from './translate-testing/translate-testing.modu import {ExercisePart} from './models/exercisePart'; import MockMC from './models/mockMC'; import {ApplicationState} from './models/applicationState'; -import {AnnisResponse, ExerciseTypePath} from '../../openapi'; -import {ExerciseType, MoodleExerciseType} from './models/enum'; +import {AnnisResponse, ExerciseTypePath, Solution} from '../../openapi'; +import {ExerciseType, LanguageShortcut, MoodleExerciseType} from './models/enum'; import {ExerciseParams} from './models/exerciseParams'; import configMC from '../configMC'; import Spy = jasmine.Spy; +import {ActivatedRoute} from '@angular/router'; +import {of} from 'rxjs'; declare var H5PStandalone: any; @@ -76,21 +78,26 @@ describe('ExerciseService', () => { const postSpy: Spy = spyOn(exerciseService.helperService, 'makePostRequest').and.callFake(() => Promise.resolve(new Blob())); const downloadSpy: Spy = spyOn(exerciseService, 'downloadBlobAsFile'); exerciseService.corpusService.annisResponse = {exercise_id: ''}; - exerciseService.corpusService.currentSolutions = exerciseService.corpusService.annisResponse.solutions = [{ - target: { - token_id: 1, - sentence_id: 1 - } - }]; exerciseService.corpusService.exercise.type = ExerciseType.markWords; + exerciseService.currentExerciseLanguage = LanguageShortcut.English; exerciseService.downloadH5Pexercise().then(() => { expect(downloadSpy).toHaveBeenCalledTimes(1); - postSpy.and.callFake(() => Promise.reject()); - exerciseService.corpusService.exercise.type = ExerciseType.cloze; + exerciseService.corpusService.currentSolutions = + exerciseService.corpusService.annisResponse.solutions = [{ + target: { + token_id: 1, + sentence_id: 1 + } + }]; exerciseService.downloadH5Pexercise().then(() => { - }, () => { - expect(downloadSpy).toHaveBeenCalledTimes(1); - done(); + expect(downloadSpy).toHaveBeenCalledTimes(2); + postSpy.and.callFake(() => Promise.reject()); + exerciseService.corpusService.exercise.type = ExerciseType.cloze; + exerciseService.downloadH5Pexercise().then(() => { + }, () => { + expect(downloadSpy).toHaveBeenCalledTimes(2); + done(); + }); }); }); }); @@ -107,49 +114,77 @@ describe('ExerciseService', () => { expect(nodeList.length).toBe(1); }); + it('should get solution indices', () => { + const solution: Solution = {target: {sentence_id: 1, token_id: 1}}; + exerciseService.corpusService.annisResponse = {solutions: [solution]}; + const result: string = exerciseService.getSolutionIndices([solution]); + expect(result).toContain('0'); + }); + it('should initialize H5P', (done) => { let h5pCalled = false; spyOn(exerciseService, 'createH5Pstandalone').and.callFake(() => new Promise(resolve => { h5pCalled = true; return resolve(); })); - exerciseService.initH5P('', false).then(() => { + exerciseService.initH5P('', '', false).then(() => { expect(h5pCalled).toBe(true); done(); }); }); it('should load an exercise', (done) => { - const ar: AnnisResponse = {exercise_type: MoodleExerciseType.cloze.toString()}; - const getSpy: Spy = spyOn(exerciseService.helperService, 'makeGetRequest').and.returnValue(Promise.resolve(ar)); const initSpy: Spy = spyOn(exerciseService, 'initH5P').and.returnValue(Promise.resolve()); - exerciseService.helperService.applicationState.next( - exerciseService.helperService.deepCopy(MockMC.applicationState) as ApplicationState); - let ep: ExerciseParams = {eid: 'eid'}; - exerciseService.loadExercise(ep).then(() => { - expect(initSpy).toHaveBeenCalledTimes(1); - getSpy.and.callFake(() => Promise.reject()); + exerciseService.loadExercise({}).then(() => { + }, () => { + expect(initSpy).toHaveBeenCalledTimes(0); + const ar: AnnisResponse = {exercise_type: MoodleExerciseType.cloze.toString()}; + const getSpy: Spy = spyOn(exerciseService.helperService, 'makeGetRequest').and.returnValue(Promise.resolve(ar)); + exerciseService.helperService.applicationState.next( + exerciseService.helperService.deepCopy(MockMC.applicationState) as ApplicationState); + let ep: ExerciseParams = {eid: 'eid'}; exerciseService.loadExercise(ep).then(() => { - }, () => { expect(initSpy).toHaveBeenCalledTimes(1); - ep = {file: '', type: ''}; + getSpy.and.callFake(() => Promise.reject()); exerciseService.loadExercise(ep).then(() => { - ep = {file: '', type: ExerciseTypePath.VocList}; + }, () => { + expect(initSpy).toHaveBeenCalledTimes(1); + ep = {file: '', type: '', language: LanguageShortcut.English, showActions: true}; exerciseService.loadExercise(ep).then(() => { - expect(initSpy).toHaveBeenCalledTimes(3); - done(); + ep = {file: '', type: ExerciseTypePath.VocList}; + exerciseService.loadExercise(ep).then(() => { + expect(initSpy).toHaveBeenCalledTimes(3); + done(); + }); }); }); }); }); }); + it('should load an exercise from query params', (done) => { + const loadSpy: Spy = spyOn(exerciseService, 'loadExercise').and.returnValue(Promise.resolve()); + const activatedRoute: ActivatedRoute = {queryParams: of({})} as ActivatedRoute; + exerciseService.loadExerciseFromQueryParams(activatedRoute).then(() => { + loadSpy.and.callFake(() => Promise.reject()); + exerciseService.loadExerciseFromQueryParams(activatedRoute).then(() => {}, () => { + expect(loadSpy).toHaveBeenCalledTimes(2); + done(); + }); + }); + }); + it('should load H5P', (done) => { const initSpy: Spy = spyOn(exerciseService, 'initH5P').and.returnValue(Promise.resolve()); exerciseService.corpusService.exercise.type = ExerciseType.markWords; exerciseService.loadH5P('').then(() => { expect(initSpy).toHaveBeenCalledTimes(1); - done(); + exerciseService.excludeOOV = true; + exerciseService.corpusService.currentSolutions = []; + exerciseService.loadH5P('').then(() => { + expect(initSpy).toHaveBeenCalledTimes(2); + done(); + }); }); }); @@ -214,6 +249,12 @@ describe('ExerciseService', () => { .withArgs(exerciseService.embedTextAreaString).and.returnValue(textarea); getSpy.withArgs(exerciseService.embedSizeInputString, true).and.returnValue(inputs); exerciseService.corpusService.annisResponse = {exercise_type: MoodleExerciseType.cloze.toString()}; + exerciseService.currentExerciseParams = {eid: ''}; + exerciseService.updateEmbedUrl(); + expect(textarea.innerHTML).toBeTruthy(); + textarea.innerHTML = ''; + expect(textarea.innerHTML).toBeFalsy(); + exerciseService.currentExerciseParams = {eid: 'eid'}; exerciseService.updateEmbedUrl(); expect(textarea.innerHTML).toBeTruthy(); }); diff --git a/mc_frontend/src/app/exercise.service.ts b/mc_frontend/src/app/exercise.service.ts index f04085f0765f8139d9d388e8cbc87057f54c8e97..8b8710679213716c3951c27d178cc1fbf9d9ca57 100644 --- a/mc_frontend/src/app/exercise.service.ts +++ b/mc_frontend/src/app/exercise.service.ts @@ -3,9 +3,9 @@ import {Injectable} from '@angular/core'; import configMC from '../configMC'; import {HelperService} from './helper.service'; import {ExercisePart} from './models/exercisePart'; -import {EventMC, ExerciseType, MoodleExerciseType} from './models/enum'; +import {EventMC, ExerciseType, LanguageShortcut, MoodleExerciseType} from './models/enum'; import {HttpClient, HttpParams} from '@angular/common/http'; -import {AnnisResponse, ExerciseTypePath, H5PForm} from '../../openapi'; +import {AnnisResponse, ExerciseTypePath, H5PForm, Solution} from '../../openapi'; import {take} from 'rxjs/operators'; import {ApplicationState} from './models/applicationState'; import {ToastController} from '@ionic/angular'; @@ -14,6 +14,7 @@ import {TranslateService} from '@ngx-translate/core'; import {Storage} from '@ionic/storage'; import {ExerciseParams} from './models/exerciseParams'; import {DisplayOptions, Options} from './models/h5pStandalone'; +import {ActivatedRoute} from '@angular/router'; declare var H5PStandalone: any; @@ -38,9 +39,12 @@ export class ExerciseService { ''; } + public currentExerciseLanguage: string | LanguageShortcut; public currentExerciseName: string; + public currentExerciseParams: ExerciseParams; public currentExercisePartIndex: number; public currentExerciseParts: ExercisePart[] = []; + public currentExerciseTypePath: ExerciseTypePath; public displayOptions: DisplayOptions = { // Customise the look of the H5P frame: true, copyright: true, @@ -56,7 +60,9 @@ export class ExerciseService { public excludeOOV = false; public h5pContainerString = '.h5p-container'; public h5pIframeString = '.h5p-iframe'; + public h5pPathLocal = 'assets/h5p'; public kwicGraphs: string; + public nonH5Pstring = 'nonH5P'; public options: Options = { frameCss: 'assets/h5p-standalone-master/dist/styles/h5p.css', frameJs: 'assets/h5p-standalone-master/dist/frame.bundle.js', @@ -108,15 +114,12 @@ export class ExerciseService { downloadH5Pexercise(): Promise<void> { return new Promise<void>((resolve, reject) => { const url = `${configMC.backendBaseUrl}${configMC.backendApiH5pPath}`; - const indices: number[] = this.corpusService.currentSolutions.map( - x => this.corpusService.annisResponse.solutions.indexOf(x)); - const exerciseTypePath: ExerciseTypePath = - this.corpusService.exercise.type === ExerciseType.markWords ? - ExerciseTypePath.MarkWords : ExerciseTypePath.DragText; + const indices: number[] = this.corpusService.currentSolutions ? this.corpusService.currentSolutions.map( + x => this.corpusService.annisResponse.solutions.indexOf(x)) : []; const h5pForm: H5PForm = { eid: this.corpusService.annisResponse.exercise_id, - exercise_type_path: exerciseTypePath, - lang: this.translateService.currentLang, + exercise_type_path: this.currentExerciseTypePath, + lang: this.currentExerciseLanguage.toString(), solution_indices: indices }; const formData: FormData = new FormData(); @@ -125,7 +128,7 @@ export class ExerciseService { const errorMsg: string = HelperService.generalErrorAlertMessage; this.helperService.makePostRequest(this.http, this.toastCtrl, url, formData, errorMsg, options) .then((result: Blob) => { - const fileName = exerciseTypePath + '.h5p'; + const fileName = this.currentExerciseTypePath + '.h5p'; this.downloadBlobAsFile(result, fileName); return resolve(); }, () => { @@ -147,10 +150,18 @@ export class ExerciseService { return document.querySelector(this.h5pIframeString); } - initH5P(exerciseTypePath: string, showActions: boolean = true): Promise<void> { + getSolutionIndices(solutions: Solution[]): string { + const indices: string[] = + solutions.map(x => this.corpusService.annisResponse.solutions.indexOf(x).toString()); + return '&solution_indices=' + indices.join(','); + } + + initH5P(exerciseTypePath: ExerciseTypePath | string, url: string, showActions: boolean = true): Promise<void> { return new Promise((resolve) => { + this.setH5Purl(url); + this.currentExerciseTypePath = exerciseTypePath as ExerciseTypePath; const el: HTMLDivElement = document.querySelector(this.h5pContainerString); - const h5pLocation = 'assets/h5p/' + exerciseTypePath; + const h5pLocation = this.h5pPathLocal + '/' + exerciseTypePath; const displayOptions: DisplayOptions = this.helperService.deepCopy(this.displayOptions); if (!showActions) { displayOptions.embed = false; @@ -169,6 +180,12 @@ export class ExerciseService { loadExercise(params: ExerciseParams): Promise<void> { return new Promise<void>((resolve, reject) => { + if (!Object.keys(params).length) { + return reject(); + } + this.currentExerciseLanguage = params.language ? + params.language.toString() : this.translateService.currentLang; + this.currentExerciseParams = params; if (params.eid) { const url: string = configMC.backendBaseUrl + configMC.backendApiExercisePath; const httpParams: HttpParams = new HttpParams().set('eid', params.eid); @@ -186,29 +203,38 @@ export class ExerciseService { return reject(); }); } else { - const exerciseType: string = params.type; - const exerciseTypePath: string = exerciseType === ExerciseTypePath.VocList ? - ExerciseTypePath.FillBlanks : exerciseType; - const file: string = params.file; - const lang: string = this.translateService.currentLang; - this.storage.set(configMC.localStorageKeyH5P, - this.helperService.baseUrl + '/assets/h5p/' + exerciseType + '/content/' + file + '_' + lang + '.json') - .then(); - this.initH5P(exerciseTypePath).then(() => { + let etp: ExerciseTypePath = params.type as ExerciseTypePath; + etp = etp === ExerciseTypePath.VocList ? ExerciseTypePath.FillBlanks : etp; + const url = `${this.helperService.baseUrl}/${this.h5pPathLocal}/${etp}/content/${params.author}/` + + `${params.file}_${this.currentExerciseLanguage}.json`; + this.initH5P(etp, url, params.showActions ? params.showActions : true) + .then(() => { + return resolve(); + }); + } + }); + } + + loadExerciseFromQueryParams(activatedRoute: ActivatedRoute) { + return new Promise<void>((resolve, reject) => { + activatedRoute.queryParams.subscribe((params: ExerciseParams) => { + this.loadExercise(params).then(() => { return resolve(); + }, () => { + return reject(); }); - } + }); }); } loadH5P(eid: string): Promise<void> { + const solutionIndicesString: string = this.excludeOOV ? this.getSolutionIndices(this.corpusService.currentSolutions) : ''; // this will be called via GET request from the h5p standalone javascript library const url: string = `${configMC.backendBaseUrl}${configMC.backendApiH5pPath}` + - `?eid=${eid}&lang=${this.translateService.currentLang}`; - this.setH5Purl(url); - const exerciseTypePath: string = this.corpusService.exercise.type === ExerciseType.markWords ? + `?eid=${eid}&lang=${this.translateService.currentLang}${solutionIndicesString}`; + const etp: ExerciseTypePath = this.corpusService.exercise.type === ExerciseType.markWords ? ExerciseTypePath.MarkWords : ExerciseTypePath.DragText; - return this.initH5P(exerciseTypePath); + return this.initH5P(etp, url); } setH5PdownloadEventHandler(): void { @@ -252,12 +278,22 @@ export class ExerciseService { updateEmbedUrl(): void { const embedTextarea: HTMLTextAreaElement = this.getH5Pelements(this.embedTextAreaString); const baseUrl: string = configMC.frontendBaseUrl + configMC.pageUrlEmbed; - const eid: string = this.corpusService.annisResponse.exercise_id; + const params: string[] = []; + if (this.currentExerciseParams.eid) { + params.push('eid=' + this.currentExerciseParams.eid); + } else { + params.push('author=' + this.currentExerciseParams.author); + params.push('file=' + this.currentExerciseParams.file); + params.push('language=' + this.currentExerciseParams.language); + params.push('type=' + this.currentExerciseParams.type); + } const inputs: NodeListOf<HTMLInputElement> = this.getH5Pelements(this.embedSizeInputString, true); const width: string = inputs[0].value; const height: string = inputs[1].value; embedTextarea.innerHTML = - `<iframe src="${baseUrl}?eid=${eid}" width="${width}px" height="${height}px" allowfullscreen="allowfullscreen"></iframe> -<script src="https://h5p.org/sites/all/modules/h5p/library/js/h5p-resizer.js" charset="UTF-8"></script>`; + `<iframe src="${baseUrl}?${params.join('&')}" width="${width}px" ` + + `height="${height}px" allowfullscreen="allowfullscreen"></iframe>` + + `<script src="https://h5p.org/sites/all/modules/h5p/library/js/h5p-resizer.js" ` + + `charset="UTF-8"></script>`; } } diff --git a/mc_frontend/src/app/exercise/exercise.page.html b/mc_frontend/src/app/exercise/exercise.page.html index 7234210b272b93a0d29b833aa4f4ffbd57371818..92372445408400db14fab110f00e56e931f8e8cb 100644 --- a/mc_frontend/src/app/exercise/exercise.page.html +++ b/mc_frontend/src/app/exercise/exercise.page.html @@ -18,5 +18,12 @@ </ion-header> <ion-content> + <ion-grid *ngIf="!helperService.openRequests.length && !exerciseLoadedSuccess"> + <ion-row> + <ion-col> + <h2>{{ 'NO_EXERCISES_FOUND' | translate }}</h2> + </ion-col> + </ion-row> + </ion-grid> <div class="h5p-container"></div> </ion-content> diff --git a/mc_frontend/src/app/exercise/exercise.page.spec.ts b/mc_frontend/src/app/exercise/exercise.page.spec.ts index 85a1d4ec7b7d47559f0bbb8a825ea3026faf31b2..cdfab565f1377a081a6f780334aa53489c434ec3 100644 --- a/mc_frontend/src/app/exercise/exercise.page.spec.ts +++ b/mc_frontend/src/app/exercise/exercise.page.spec.ts @@ -48,17 +48,20 @@ describe('ExercisePage', () => { expect(loadExerciseSpy).toHaveBeenCalledTimes(2); checkSpy.and.callFake(() => Promise.reject()); exercisePage.ngOnInit().then(() => { - expect(loadExerciseSpy).toHaveBeenCalledTimes(2); - done(); + expect(loadExerciseSpy).toHaveBeenCalledTimes(3); + checkSpy.and.callFake(() => Promise.reject()); + exercisePage.ngOnInit().then(() => { + expect(loadExerciseSpy).toHaveBeenCalledTimes(4); + done(); + }); }); }); }); it('should load an exercise', (done) => { - loadExerciseSpy.and.returnValue(Promise.resolve()); - exercisePage.initExercise().then(() => { + exercisePage.exerciseService.loadExerciseFromQueryParams(exercisePage.activatedRoute).then(() => { loadExerciseSpy.and.callFake(() => Promise.reject()); - exercisePage.initExercise().then(() => { + exercisePage.exerciseService.loadExerciseFromQueryParams(exercisePage.activatedRoute).then(() => { }, () => { expect(loadExerciseSpy).toHaveBeenCalledTimes(3); done(); diff --git a/mc_frontend/src/app/exercise/exercise.page.ts b/mc_frontend/src/app/exercise/exercise.page.ts index fa2ad85423dfcc191c41cf7417d412fc25141e7d..0d7fc02f65f3e39beb130407ecb006d4a74b8459 100644 --- a/mc_frontend/src/app/exercise/exercise.page.ts +++ b/mc_frontend/src/app/exercise/exercise.page.ts @@ -2,7 +2,6 @@ import {Component, OnInit} from '@angular/core'; import {ActivatedRoute} from '@angular/router'; import {ExerciseService} from 'src/app/exercise.service'; -import {ExerciseParams} from '../models/exerciseParams'; import {CorpusService} from '../corpus.service'; import {HelperService} from '../helper.service'; import {NavController} from '@ionic/angular'; @@ -13,6 +12,7 @@ import {NavController} from '@ionic/angular'; styleUrls: ['./exercise.page.scss'], }) export class ExercisePage implements OnInit { + exerciseLoadedSuccess = false; constructor(public activatedRoute: ActivatedRoute, public exerciseService: ExerciseService, @@ -21,28 +21,15 @@ export class ExercisePage implements OnInit { public navCtrl: NavController) { } - initExercise(): Promise<void> { - return new Promise<void>((resolve, reject) => { - this.activatedRoute.queryParams.subscribe((params: ExerciseParams) => { - this.exerciseService.loadExercise(params).then(() => { - return resolve(); - }, () => { - return reject(); - }); - }); - }); - } - ngOnInit(): Promise<void> { return new Promise<void>((resolve) => { - this.corpusService.checkAnnisResponse().then(() => { - this.initExercise().then(() => { + this.corpusService.checkAnnisResponse().finally(() => { + this.exerciseService.loadExerciseFromQueryParams(this.activatedRoute).then(() => { + this.exerciseLoadedSuccess = true; return resolve(); }, () => { return resolve(); }); - }, () => { - return resolve(); }); }); } diff --git a/mc_frontend/src/app/helper.service.spec.ts b/mc_frontend/src/app/helper.service.spec.ts index 960644e5262f6e9bf483dffd584124ef450e3064..765c02f1a960c7ee43419d0cd64e818398d0f2e3 100644 --- a/mc_frontend/src/app/helper.service.spec.ts +++ b/mc_frontend/src/app/helper.service.spec.ts @@ -102,9 +102,9 @@ describe('HelperService', () => { it('should go to a specific page', (done) => { function checkNavigation(pageUrls: string[], navController: NavController, navSpy: Spy): Promise<void> { return new Promise<void>(resolve => { - range(0, pageUrls.length).forEach(async (idx: number) => { - await helperService.goToPage(navController, pageUrls[idx]); - expect(navSpy).toHaveBeenCalledWith(pageUrls[idx]); + pageUrls.forEach(async (pageUrl: string) => { + await helperService.goToPage(navController, pageUrl, {}); + expect(navSpy).toHaveBeenCalledWith(pageUrl, {}); }); return resolve(); }); diff --git a/mc_frontend/src/app/helper.service.ts b/mc_frontend/src/app/helper.service.ts index 444014b7b69a65ace5f2aade451a71baa47b0a51..d20b0eceb40e6bebfe3e5ee91311f76cbe60f46a 100644 --- a/mc_frontend/src/app/helper.service.ts +++ b/mc_frontend/src/app/helper.service.ts @@ -4,7 +4,7 @@ import {Injectable} from '@angular/core'; import {NavController, ToastController} from '@ionic/angular'; import {ApplicationState} from 'src/app/models/applicationState'; import {TranslateHttpLoader} from '@ngx-translate/http-loader'; -import {CaseValue, DependencyValue, PartOfSpeechValue} from 'src/app/models/enum'; +import {CaseValue, DependencyValue, LanguageShortcut, PartOfSpeechValue} from 'src/app/models/enum'; import {TranslateService} from '@ngx-translate/core'; import {Storage} from '@ionic/storage'; import {Language} from 'src/app/models/language'; @@ -13,6 +13,7 @@ import {TextData} from './models/textData'; import configMC from '../configMC'; import EventRegistry from './models/eventRegistry'; import {UpdateInfo} from './models/updateInfo'; +import {NavigationOptions} from '@ionic/angular/providers/nav-controller'; declare var H5P: any; // dirty hack to prevent H5P access errors after resize events @@ -92,8 +93,8 @@ export class HelperService { public isDevMode = ['localhost'].indexOf(window.location.hostname) > -1; // set this to "false" for simulated production mode public isVocabularyCheck = false; public languages: Language[] = [ - new Language({name: 'English', shortcut: 'en'}), - new Language({name: 'Deutsch', shortcut: 'de'})]; + new Language({name: 'English', shortcut: LanguageShortcut.English}), + new Language({name: 'Deutsch', shortcut: LanguageShortcut.German})]; public openRequests: string[] = []; public partOfSpeechMap: { [rawValue: string]: PartOfSpeechValue } = { ADJ: PartOfSpeechValue.adjective, @@ -210,8 +211,8 @@ export class HelperService { return navCtrl.navigateRoot(configMC.pageUrlHome); } - goToPage(navCtrl: NavController, pageUrl: string): Promise<boolean> { - return navCtrl.navigateForward(pageUrl); + goToPage(navCtrl: NavController, pageUrl: string, options?: NavigationOptions): Promise<boolean> { + return navCtrl.navigateForward(pageUrl, options); } goToShowTextPage(navCtrl: NavController, isVocabularyCheck: boolean = false): Promise<boolean> { @@ -239,12 +240,14 @@ export class HelperService { this.storage.get(configMC.localStorageKeyApplicationState).then((jsonString: string) => { this.applicationStateCache = new ApplicationState({ currentSetup: new TextData(), - exerciseList: [] + exerciseList: [], + mostRecentSetup: new TextData() }); if (jsonString) { const jsonObject: any = this.updateAnnisResponse(jsonString); const state: ApplicationState = jsonObject as ApplicationState; state.exerciseList = state.exerciseList ? state.exerciseList : []; + state.mostRecentSetup = state.mostRecentSetup ? state.mostRecentSetup : new TextData(); this.applicationStateCache = state; } this.applicationState.next(this.applicationStateCache); @@ -267,7 +270,8 @@ export class HelperService { initLanguage(): void { // dirty hack to wait for the translateService intializing setTimeout(() => { - this.currentLanguage = this.languages.find(x => x.shortcut === this.translate.currentLang); + this.currentLanguage = this.languages.find( + x => x.shortcut.toString() === this.translate.currentLang); this.loadTranslations(this.translate); }); } diff --git a/mc_frontend/src/app/home/home.page.html b/mc_frontend/src/app/home/home.page.html index 3156cd5f604eaf80f89ca1cd9d9cbfccfc1923a0..bc0204f8b7df7cdb1d99e3109bcc7b674ac99329 100644 --- a/mc_frontend/src/app/home/home.page.html +++ b/mc_frontend/src/app/home/home.page.html @@ -73,15 +73,14 @@ <div class="card"> <img src="assets/imgs/results_testmode.webp" alt="Ergebnisübersicht des Testmoduls" style="padding: 0.5em 0.25em 0 0.25em;"> - <h1>{{ 'TEST' | translate }}</h1> + <h1>{{ 'SEQUENCES' | translate }}</h1> <p> - {{'TEXT_WORK' | translate }}<br> - {{'EXERCISES' | translate }}<br> - {{'UNIT_TEST_TITLE' | translate }}<br> - {{'UNIT_EVALUATION_TITLE' | translate }} + {{'TEST' | translate }}<br> + ... </p> <p> - <ion-button (click)="helperService.goToTestPage(navCtrl)">{{ 'CONTINUE' | translate }} + <ion-button (click)="helperService.goToPage(navCtrl, configMC.pageUrlSequences)"> + {{ 'CONTINUE' | translate }} </ion-button> </p> </div> diff --git a/mc_frontend/src/app/models/enum.ts b/mc_frontend/src/app/models/enum.ts index e9ccaaff698f9729c9de7032595e8e4d8dccef7e..adff231c533afa9294e082cf59908ac5a82b124f 100644 --- a/mc_frontend/src/app/models/enum.ts +++ b/mc_frontend/src/app/models/enum.ts @@ -95,6 +95,11 @@ export enum EventMC { xAPI = 'xAPI' as any, } +export enum ExerciseAuthor { + callidus = 'callidus' as any, + potsdam = 'potsdam' as any +} + export enum ExerciseType { cloze = 'cloze' as any, kwic = 'kwic' as any, @@ -116,6 +121,11 @@ export enum InstructionsTranslation { matching = 'INSTRUCTIONS_MATCHING' as any, } +export enum LanguageShortcut { + German = 'de' as any, + English = 'en' as any +} + export enum MoodleExerciseType { cloze = 'ddwtos' as any, kwic = 'kwic' as any, diff --git a/mc_frontend/src/app/models/exerciseParams.ts b/mc_frontend/src/app/models/exerciseParams.ts index 3d34ba371f1a7d72c65c51cf1bf54977b6e20cad..6a3d554097302e5197210f59e4d3d19abcafdd91 100644 --- a/mc_frontend/src/app/models/exerciseParams.ts +++ b/mc_frontend/src/app/models/exerciseParams.ts @@ -1,5 +1,11 @@ +import {ExerciseAuthor, LanguageShortcut} from './enum'; +import {ExerciseTypePath} from '../../../openapi'; + export interface ExerciseParams { + author?: ExerciseAuthor; eid?: string; file?: string; - type?: string; + language?: LanguageShortcut; + showActions?: boolean; + type?: ExerciseTypePath | string; } diff --git a/mc_frontend/src/app/models/language.ts b/mc_frontend/src/app/models/language.ts index 491758dc87febe9a5fbc11e317334c00ede7f080..c51f20756e28a45cb4a08e330ee5e6fd4fb495ea 100644 --- a/mc_frontend/src/app/models/language.ts +++ b/mc_frontend/src/app/models/language.ts @@ -1,6 +1,9 @@ +import {LanguageShortcut} from './enum'; + export class Language { public name: string; - public shortcut: string; + public shortcut: LanguageShortcut; + constructor(init?: Partial<Language>) { Object.assign(this, init); } diff --git a/mc_frontend/src/app/preview/preview.page.spec.ts b/mc_frontend/src/app/preview/preview.page.spec.ts index f503984a5afd18c6a47a7dac76f9a449ce4a2952..e96b72e86ec503e37b42580cea74d30d27fddbf5 100644 --- a/mc_frontend/src/app/preview/preview.page.spec.ts +++ b/mc_frontend/src/app/preview/preview.page.spec.ts @@ -154,6 +154,20 @@ describe('PreviewPage', () => { expect(previewPage.corpusService.currentSolutions[2]).toBe(solutions[0]); }); + it('should select the link', (done) => { + previewPage.showShareLink = true; + previewPage.corpusService.annisResponse = {solutions: []}; + fixture.detectChanges(); + const ta: HTMLTextAreaElement = document.querySelector(previewPage.inputSelector); + let wasSelected = false; + ta.onselect = (ev: Event) => { + wasSelected = true; + expect(wasSelected).toBeTrue(); + done(); + }; + previewPage.selectLink(); + }); + it('should send data', (done) => { const requestSpy: Spy = spyOn(previewPage.helperService, 'makePostRequest').and.returnValue(Promise.resolve()); const consoleSpy: Spy = spyOn(console, 'log'); diff --git a/mc_frontend/src/app/preview/preview.page.ts b/mc_frontend/src/app/preview/preview.page.ts index eb426a787d8ea01bfd02497162c742cd6d42967f..79062b7c0c0c877bac8ae7d77119431b05c368bf 100644 --- a/mc_frontend/src/app/preview/preview.page.ts +++ b/mc_frontend/src/app/preview/preview.page.ts @@ -48,22 +48,8 @@ export class PreviewPage implements AfterContentInit, OnDestroy, OnInit { this.helperService.showToast(this.toastCtrl, this.corpusService.shareLinkCopiedString, 'middle').then(); } - getSolutionIndices(solutions: Solution[]): string { - const indices: string[] = - solutions.map(x => this.corpusService.annisResponse.solutions.indexOf(x).toString()); - return '&solution_indices=' + indices.join(','); - } - initH5P(): void { - const solutionIndicesString: string = this.exerciseService.excludeOOV ? - this.getSolutionIndices(this.corpusService.currentSolutions) : ''; - // this will be called via GET request from the h5p standalone javascript library - const url: string = `${configMC.backendBaseUrl + configMC.backendApiH5pPath}` + - `?eid=${this.corpusService.annisResponse.exercise_id}&lang=${this.translateService.currentLang + solutionIndicesString}`; - this.exerciseService.setH5Purl(url); - const exerciseTypePath: string = this.corpusService.exercise.type === ExerciseType.markWords ? - ExerciseTypePath.MarkWords : ExerciseTypePath.DragText; - this.exerciseService.initH5P(exerciseTypePath).then(); + this.exerciseService.loadExercise({eid: this.corpusService.annisResponse.exercise_id}).then(); this.updateFileUrl(); } @@ -170,7 +156,8 @@ export class PreviewPage implements AfterContentInit, OnDestroy, OnInit { this.urlBase = configMC.backendBaseUrl + configMC.backendApiFilePath + '?id=' + fileId + fileTypeBase; this.solutionIndicesString = ''; if (this.exerciseService.excludeOOV) { - this.solutionIndicesString = this.getSolutionIndices(this.corpusService.currentSolutions); + this.solutionIndicesString = this.exerciseService.getSolutionIndices( + this.corpusService.currentSolutions); } } } diff --git a/mc_frontend/src/app/sequences/sequences-routing.module.ts b/mc_frontend/src/app/sequences/sequences-routing.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..5ac8041363c1a8d05b2d0cb4602b297a1134951b --- /dev/null +++ b/mc_frontend/src/app/sequences/sequences-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { SequencesPage } from './sequences.page'; + +const routes: Routes = [ + { + path: '', + component: SequencesPage + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class SequencesPageRoutingModule {} diff --git a/mc_frontend/src/app/sequences/sequences.module.ts b/mc_frontend/src/app/sequences/sequences.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..7a5e69c01dda23b6f2b2fa9314bdab695143d731 --- /dev/null +++ b/mc_frontend/src/app/sequences/sequences.module.ts @@ -0,0 +1,23 @@ +import {NgModule} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {FormsModule} from '@angular/forms'; + +import {IonicModule} from '@ionic/angular'; + +import {SequencesPageRoutingModule} from './sequences-routing.module'; + +import {SequencesPage} from './sequences.page'; +import {TranslateModule} from '@ngx-translate/core'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + SequencesPageRoutingModule, + TranslateModule.forChild() + ], + declarations: [SequencesPage] +}) +export class SequencesPageModule { +} diff --git a/mc_frontend/src/app/sequences/sequences.page.html b/mc_frontend/src/app/sequences/sequences.page.html new file mode 100644 index 0000000000000000000000000000000000000000..cec6c409e59cb5179733c9a390c15633b06c2b8c --- /dev/null +++ b/mc_frontend/src/app/sequences/sequences.page.html @@ -0,0 +1,80 @@ +<ion-header> + <ion-toolbar> + <ion-buttons slot="start"> + <div class="home-logo"> + <a (click)="helperService.goToHomePage(navCtrl)"> + <img src="assets/imgs/logo.png" width="32px" height="32px" alt="CALLIDUS Logo"> + </a> + </div> + </ion-buttons> + <ion-spinner *ngIf="helperService.openRequests.length"></ion-spinner> + <ion-title>{{ 'SEQUENCES' | translate }}</ion-title> + <ion-buttons slot="end"> + <ion-menu-button autoHide="false"> + <ion-icon name="menu"></ion-icon> + </ion-menu-button> + </ion-buttons> + </ion-toolbar> +</ion-header> + +<ion-content> + <ion-grid> + <ion-row style="border: 2px solid darkgrey"> + <ion-col> + <ion-grid> + <ion-row> + <ion-col> + <h1>{{ 'SEQUENCES_POTSDAM' | translate }}</h1> + </ion-col> + </ion-row> + <ion-row> + <ion-col> + <ion-button + (click)="helperService.goToPage(navCtrl, configMC.pageUrlExercise, {queryParams: exerciseParams})"> + {{ 'CONTINUE' | translate }} + </ion-button> + </ion-col> + </ion-row> + </ion-grid> + </ion-col> + </ion-row> + <ion-row style="border: 2px solid darkgrey"> + <ion-col> + <ion-grid> + <ion-row> + <ion-col> + <h1>{{ 'TEST' | translate }}</h1> + </ion-col> + </ion-row> + <ion-row> + <ion-col> + {{'TEXT_WORK' | translate }} + </ion-col> + </ion-row> + <ion-row> + <ion-col> + {{'EXERCISES' | translate }} + </ion-col> + </ion-row> + <ion-row> + <ion-col> + {{'UNIT_TEST_TITLE' | translate }} + </ion-col> + </ion-row> + <ion-row> + <ion-col> + {{'UNIT_EVALUATION_TITLE' | translate }} + </ion-col> + </ion-row> + <ion-row> + <ion-col> + <ion-button (click)="helperService.goToTestPage(navCtrl)"> + {{ 'CONTINUE' | translate }} + </ion-button> + </ion-col> + </ion-row> + </ion-grid> + </ion-col> + </ion-row> + </ion-grid> +</ion-content> diff --git a/mc_frontend/src/app/sequences/sequences.page.scss b/mc_frontend/src/app/sequences/sequences.page.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/mc_frontend/src/app/sequences/sequences.page.spec.ts b/mc_frontend/src/app/sequences/sequences.page.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..51bda6a0a6de8142e4613c0dbb83b9b24ea651b7 --- /dev/null +++ b/mc_frontend/src/app/sequences/sequences.page.spec.ts @@ -0,0 +1,34 @@ +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; +import {IonicModule} from '@ionic/angular'; + +import {SequencesPage} from './sequences.page'; +import {HttpClientModule} from '@angular/common/http'; +import {IonicStorageModule} from '@ionic/storage'; +import {TranslateTestingModule} from '../translate-testing/translate-testing.module'; +import {RouterModule} from '@angular/router'; + +describe('SequencesPage', () => { + let component: SequencesPage; + let fixture: ComponentFixture<SequencesPage>; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [SequencesPage], + imports: [ + HttpClientModule, + IonicModule.forRoot(), + IonicStorageModule.forRoot(), + RouterModule.forRoot([]), + TranslateTestingModule, + ] + }).compileComponents().then(); + + fixture = TestBed.createComponent(SequencesPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/mc_frontend/src/app/sequences/sequences.page.ts b/mc_frontend/src/app/sequences/sequences.page.ts new file mode 100644 index 0000000000000000000000000000000000000000..48305ea7c26fd54a992823463e192c0be6f4f92b --- /dev/null +++ b/mc_frontend/src/app/sequences/sequences.page.ts @@ -0,0 +1,31 @@ +import {Component, OnInit} from '@angular/core'; +import {HelperService} from '../helper.service'; +import {NavController} from '@ionic/angular'; +import configMC from '../../configMC'; +import {ExerciseParams} from '../models/exerciseParams'; +import {ExerciseAuthor, ExerciseType, LanguageShortcut} from '../models/enum'; +import {ExerciseTypePath} from '../../../openapi'; +import {Language} from '../models/language'; + +@Component({ + selector: 'app-sequences', + templateUrl: './sequences.page.html', + styleUrls: ['./sequences.page.scss'], +}) +export class SequencesPage implements OnInit { + configMC = configMC; + exerciseParams: ExerciseParams = { + author: ExerciseAuthor.potsdam, + file: '1', + language: LanguageShortcut.German, + type: ExerciseTypePath.FillBlanks + }; + + constructor(public helperService: HelperService, + public navCtrl: NavController) { + } + + ngOnInit() { + } + +} diff --git a/mc_frontend/src/app/test/test.page.html b/mc_frontend/src/app/test/test.page.html index b4a833bc407cfde6389ba0c4cee75aed760e96fd..54beb5ca081e1ac72331664a6353e8a5e9b80c42 100644 --- a/mc_frontend/src/app/test/test.page.html +++ b/mc_frontend/src/app/test/test.page.html @@ -52,7 +52,7 @@ <ion-progress-bar value="{{progressBarValue}}"></ion-progress-bar> </ion-col> </ion-row> - <ion-row *ngIf="!exerciseService.currentExerciseName.startsWith(nonH5Pstring)"> + <ion-row *ngIf="!exerciseService.currentExerciseName.startsWith(exerciseService.nonH5Pstring)"> <ion-col> {{ 'TEST_MODULE_EXERCISE_ID' | translate }}: #{{ exerciseService.currentExerciseIndex + 1 }} </ion-col> @@ -102,7 +102,7 @@ </ion-row> <ion-row *ngIf="(!isTestMode || currentState == TestModuleState.showSolutions) && - !exerciseService.currentExerciseName.startsWith(nonH5Pstring)"> + !exerciseService.currentExerciseName.startsWith(exerciseService.nonH5Pstring)"> <ion-button (click)="continueToNextExercise(isTestMode)"> {{ 'BUTTON_CONTINUE' | translate}} </ion-button> diff --git a/mc_frontend/src/app/test/test.page.spec.ts b/mc_frontend/src/app/test/test.page.spec.ts index 5c251a1635bb6b5725218169fe3ee6d50ae363f7..7eecbef96d85fcf9a623e8f398009c7b030fb313 100644 --- a/mc_frontend/src/app/test/test.page.spec.ts +++ b/mc_frontend/src/app/test/test.page.spec.ts @@ -240,7 +240,7 @@ describe('TestPage', () => { const inputEventSpy: Spy = spyOn(testPage, 'setInputEventHandler'); const solutionsEventSpy: Spy = spyOn(testPage, 'handleSolutionsEvent'); testPage.currentState = TestModuleState.inProgress; - const domChangedEvent: any = {data: {library: testPage.fillBlanksString}}; + const domChangedEvent: any = {data: {library: ExerciseTypePath.FillBlanks}}; testPage.helperService.events.trigger(EventMC.h5pCreated, domChangedEvent); expect(inputEventSpy).toHaveBeenCalledTimes(1); testPage.currentState = TestModuleState.showSolutions; @@ -275,27 +275,32 @@ describe('TestPage', () => { const previousExercises: number[] = testPage.exerciseService.currentExerciseParts.slice(0, targetExercisePartIndex) .map(x => x.exercises.length); testPage.exerciseService.currentExerciseIndex = previousExercises.reduce((a, b) => a + b); - testPage.helperService.events.on(EventMC.h5pCreated, async (event: any) => { + testPage.helperService.events.on(EventMC.h5pCreated, (event: any) => { expect(event.data.library).toBe(ExerciseTypePath.FillBlanks); testPage.helperService.events.off(EventMC.h5pCreated); - testPage.vocService.currentTestResults[2] = new TestResultMC({ - statement: new StatementBase({ - context: new Context({ - contextActivities: new ContextActivities({category: [new Activity({id: testPage.h5pDragTextString})]}) + const loadSpy: Spy = spyOn(testPage.exerciseService, 'loadExercise').and.callFake(() => Promise.reject()); + testPage.showNextExercise(testPage.exerciseService.currentExerciseIndex).then(() => { + }, async () => { + expect(loadSpy).toHaveBeenCalledTimes(1); + testPage.vocService.currentTestResults[2] = new TestResultMC({ + statement: new StatementBase({ + context: new Context({ + contextActivities: new ContextActivities({category: [new Activity({id: testPage.h5pDragTextString})]}) + }) }) - }) + }); + testPage.exerciseService.currentExerciseIndex = 2; + const iframe: HTMLIFrameElement = MockMC.addIframe(testPage.exerciseService.h5pIframeString); + fixture.detectChanges(); + await testPage.showNextExercise(2, true); + expect(hideButtonSpy).toHaveBeenCalledTimes(1); + testPage.exerciseService.currentExerciseName = testPage.exerciseService.nonH5Pstring; + await testPage.showNextExercise(testPage.exerciseService.currentExerciseParts + [testPage.exerciseService.currentExerciseParts.length - 1].startIndex); + expect(resultsSpy).toHaveBeenCalledTimes(1); + iframe.parentElement.removeChild(iframe); + done(); }); - testPage.exerciseService.currentExerciseIndex = 2; - const iframe: HTMLIFrameElement = MockMC.addIframe(testPage.exerciseService.h5pIframeString); - fixture.detectChanges(); - await testPage.showNextExercise(2, true); - expect(hideButtonSpy).toHaveBeenCalledTimes(1); - testPage.exerciseService.currentExerciseName = testPage.nonH5Pstring; - await testPage.showNextExercise(testPage.exerciseService.currentExerciseParts - [testPage.exerciseService.currentExerciseParts.length - 1].startIndex); - expect(resultsSpy).toHaveBeenCalledTimes(1); - iframe.parentElement.removeChild(iframe); - done(); }); spyOn(testPage.exerciseService, 'createH5Pstandalone').and.returnValue(Promise.resolve()); testPage.showNextExercise(testPage.exerciseService.currentExerciseIndex).then(); diff --git a/mc_frontend/src/app/test/test.page.ts b/mc_frontend/src/app/test/test.page.ts index f8ef94854c98ae1b3a63e89eb0772cac3fa7e529..fa19f6c456bba94a80dd0ed27d236dd19c6cc253 100644 --- a/mc_frontend/src/app/test/test.page.ts +++ b/mc_frontend/src/app/test/test.page.ts @@ -5,7 +5,7 @@ import {HelperService} from '../helper.service'; import {XAPIevent} from 'src/app/models/xAPIevent'; import {TranslateService} from '@ngx-translate/core'; import {VocabularyService} from 'src/app/vocabulary.service'; -import {EventMC, TestModuleState, TestType} from 'src/app/models/enum'; +import {EventMC, ExerciseAuthor, TestModuleState, TestType} from 'src/app/models/enum'; import {ConfirmCancelPage} from 'src/app/confirm-cancel/confirm-cancel.page'; import {ExercisePart} from 'src/app/models/exercisePart'; import Activity from 'src/app/models/xAPI/Activity'; @@ -33,52 +33,70 @@ export class TestPage implements OnDestroy, OnInit { public availableExerciseParts: ExercisePart[] = [new ExercisePart({ startIndex: 0, durationSeconds: 0, - exercises: ['nonH5P_1'] + exercises: [`${this.exerciseService.nonH5Pstring}_1`] }), new ExercisePart({ /** pretest */ startIndex: 0, durationSeconds: 240, - exercises: ['fill_blanks_6', 'fill_blanks_1', 'multi_choice_5', 'multi_choice_6', - 'multi_choice_7', 'multi_choice_8', 'fill_blanks_2', 'fill_blanks_7', - 'fill_blanks_4', 'multi_choice_18', 'multi_choice_9'] + exercises: [`${ExerciseTypePath.FillBlanks}_6`, `${ExerciseTypePath.FillBlanks}_1`, + `${ExerciseTypePath.MultiChoice}_5`, `${ExerciseTypePath.MultiChoice}_6`, + `${ExerciseTypePath.MultiChoice}_7`, `${ExerciseTypePath.MultiChoice}_8`, + `${ExerciseTypePath.FillBlanks}_2`, `${ExerciseTypePath.FillBlanks}_7`, + `${ExerciseTypePath.FillBlanks}_4`, `${ExerciseTypePath.MultiChoice}_18`, + `${ExerciseTypePath.MultiChoice}_9`] }), new ExercisePart({ /** comprehension exercise */ startIndex: 0, durationSeconds: 1080, - exercises: ['mark_words_1', 'fill_blanks_11', 'fill_blanks_12', 'fill_blanks_13', - 'fill_blanks_14', 'fill_blanks_16', 'fill_blanks_15', 'multi_choice_24'] + exercises: ['mark_words_1', `${ExerciseTypePath.FillBlanks}_11`, `${ExerciseTypePath.FillBlanks}_12`, + `${ExerciseTypePath.FillBlanks}_13`, `${ExerciseTypePath.FillBlanks}_14`, + `${ExerciseTypePath.FillBlanks}_16`, `${ExerciseTypePath.FillBlanks}_15`, + `${ExerciseTypePath.MultiChoice}_24`] }), new ExercisePart({ /** cloze text exercise */ startIndex: 0, durationSeconds: 720, - exercises: ['drag_text_1', 'drag_text_2', 'drag_text_3', 'drag_text_4', 'drag_text_6', 'drag_text_5'] + exercises: [`${ExerciseTypePath.DragText}_1`, `${ExerciseTypePath.DragText}_2`, + `${ExerciseTypePath.DragText}_3`, `${ExerciseTypePath.DragText}_4`, + `${ExerciseTypePath.DragText}_6`, `${ExerciseTypePath.DragText}_5`] }), new ExercisePart({ /** pair association exercise */ startIndex: 0, durationSeconds: 720, - exercises: HelperService.shuffle(['voc_list_2', 'voc_list_6', 'voc_list_10', - 'voc_list_11', 'voc_list_12', 'voc_list_16', - 'voc_list_17', 'voc_list_18', 'voc_list_27', - 'voc_list_29', 'voc_list_30', 'voc_list_31', 'voc_list_34', - 'voc_list_42', 'voc_list_43', 'voc_list_49', 'voc_list_52', - 'voc_list_53', 'voc_list_54', 'voc_list_56', 'voc_list_61', 'voc_list_62', - 'voc_list_65', 'voc_list_66', 'voc_list_67', 'voc_list_70', - 'voc_list_72', 'voc_list_84', 'voc_list_85', 'voc_list_86', - 'voc_list_87', 'voc_list_88', 'voc_list_89', 'voc_list_90', 'voc_list_91']) + exercises: HelperService.shuffle([`${ExerciseTypePath.VocList}_2`, `${ExerciseTypePath.VocList}_6`, + `${ExerciseTypePath.VocList}_10`, `${ExerciseTypePath.VocList}_11`, + `${ExerciseTypePath.VocList}_12`, `${ExerciseTypePath.VocList}_16`, + `${ExerciseTypePath.VocList}_17`, `${ExerciseTypePath.VocList}_18`, + `${ExerciseTypePath.VocList}_27`, `${ExerciseTypePath.VocList}_29`, + `${ExerciseTypePath.VocList}_30`, `${ExerciseTypePath.VocList}_31`, + `${ExerciseTypePath.VocList}_34`, `${ExerciseTypePath.VocList}_42`, + `${ExerciseTypePath.VocList}_43`, `${ExerciseTypePath.VocList}_49`, + `${ExerciseTypePath.VocList}_52`, `${ExerciseTypePath.VocList}_53`, + `${ExerciseTypePath.VocList}_54`, `${ExerciseTypePath.VocList}_56`, + `${ExerciseTypePath.VocList}_61`, `${ExerciseTypePath.VocList}_62`, + `${ExerciseTypePath.VocList}_65`, `${ExerciseTypePath.VocList}_66`, + `${ExerciseTypePath.VocList}_67`, `${ExerciseTypePath.VocList}_70`, + `${ExerciseTypePath.VocList}_72`, `${ExerciseTypePath.VocList}_84`, + `${ExerciseTypePath.VocList}_85`, `${ExerciseTypePath.VocList}_86`, + `${ExerciseTypePath.VocList}_87`, `${ExerciseTypePath.VocList}_88`, + `${ExerciseTypePath.VocList}_89`, `${ExerciseTypePath.VocList}_90`, + `${ExerciseTypePath.VocList}_91`]) }), new ExercisePart({ /** posttest */ startIndex: 0, durationSeconds: 240, - exercises: ['fill_blanks_6', 'fill_blanks_1', 'multi_choice_5', 'multi_choice_6', - 'multi_choice_7', 'multi_choice_8', 'fill_blanks_2', 'fill_blanks_7', - 'fill_blanks_4', 'multi_choice_18', 'multi_choice_9'] - }), new ExercisePart({exercises: ['nonH5P_2'], startIndex: 0})]; + exercises: [`${ExerciseTypePath.FillBlanks}_6`, `${ExerciseTypePath.FillBlanks}_1`, + `${ExerciseTypePath.MultiChoice}_5`, `${ExerciseTypePath.MultiChoice}_6`, + `${ExerciseTypePath.MultiChoice}_7`, `${ExerciseTypePath.MultiChoice}_8`, + `${ExerciseTypePath.FillBlanks}_2`, `${ExerciseTypePath.FillBlanks}_7`, + `${ExerciseTypePath.FillBlanks}_4`, `${ExerciseTypePath.MultiChoice}_18`, + `${ExerciseTypePath.MultiChoice}_9`] + }), new ExercisePart({exercises: [`${this.exerciseService.nonH5Pstring}_2`], startIndex: 0})]; public configMC = configMC; public countDownDateTime: number; public currentState: TestModuleState = TestModuleState.inProgress; public didTimeRunOut = false; public exerciseIndices: number[]; - public fillBlanksString = 'fill_blanks'; public finishExerciseTimeout = 200; public h5pAnswerClassString = '.h5p-answer'; public h5pBlanksString = 'H5P.Blanks'; @@ -93,7 +111,6 @@ export class TestPage implements OnDestroy, OnInit { public hideClassString = 'hide'; public isTestMode: boolean; public knownCount: [number, number]; - public nonH5Pstring = 'nonH5P'; public progressBarValue: number; public results: [number, number][]; public resultsBaseIndex: number; @@ -393,7 +410,7 @@ export class TestPage implements OnDestroy, OnInit { } }); this.helperService.events.on(EventMC.h5pCreated, (event: any) => { - if (this.currentState === TestModuleState.inProgress && event.data.library === this.fillBlanksString) { + if (this.currentState === TestModuleState.inProgress && event.data.library === ExerciseTypePath.FillBlanks) { this.setInputEventHandler(); } else if (this.currentState === TestModuleState.showSolutions) { this.handleSolutionsEvent(); @@ -421,13 +438,13 @@ export class TestPage implements OnDestroy, OnInit { } showNextExercise(newIndex: number, review: boolean = false): Promise<void> { - return new Promise<void>(resolve => { + return new Promise<void>((resolve, reject) => { this.adjustTimer(newIndex, review); const currentExercisePart: ExercisePart = this.exerciseService.currentExerciseParts [this.exerciseService.currentExercisePartIndex]; const maxProgress: number = currentExercisePart.exercises.length; this.progressBarValue = (newIndex - currentExercisePart.startIndex) / maxProgress; - if (this.exerciseService.currentExerciseName.startsWith(this.nonH5Pstring)) { + if (this.exerciseService.currentExerciseName.startsWith(this.exerciseService.nonH5Pstring)) { document.querySelector(this.h5pRowIDstring).classList.add(this.hideClassString); if (newIndex === this.exerciseService.currentExerciseParts[this.exerciseService.currentExerciseParts.length - 1].startIndex) { @@ -451,15 +468,20 @@ export class TestPage implements OnDestroy, OnInit { return resolve(); } } - const fileName: string = this.exerciseService.currentExerciseName.split('_').slice(-1) + '_' + - this.translate.currentLang + '.json'; + const fileName: string = this.exerciseService.currentExerciseName.split('_').slice(-1)[0]; let exerciseType = this.exerciseService.currentExerciseName.split('_').slice(0, 2).join('_'); - this.exerciseService.setH5Purl(this.helperService.baseUrl + '/assets/h5p/' + exerciseType + '/content/' + fileName); - if (exerciseType.startsWith(ExerciseTypePath.VocList)) { - exerciseType = ExerciseTypePath.FillBlanks; - } - this.exerciseService.initH5P(exerciseType, false).then(() => { + this.exerciseService.loadExercise({ + showActions: false, + author: ExerciseAuthor.callidus, + file: fileName, + type: exerciseType + }).then(() => { + if (exerciseType.startsWith(ExerciseTypePath.VocList)) { + exerciseType = ExerciseTypePath.FillBlanks; + } return resolve(); + }, () => { + return reject(); }); }); } diff --git a/mc_frontend/src/assets/h5p/drag_text/content/1-3_de.json b/mc_frontend/src/assets/h5p/drag_text/content/callidus/1-3_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/drag_text/content/1-3_de.json rename to mc_frontend/src/assets/h5p/drag_text/content/callidus/1-3_de.json diff --git a/mc_frontend/src/assets/h5p/drag_text/content/1-3_en.json b/mc_frontend/src/assets/h5p/drag_text/content/callidus/1-3_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/drag_text/content/1-3_en.json rename to mc_frontend/src/assets/h5p/drag_text/content/callidus/1-3_en.json diff --git a/mc_frontend/src/assets/h5p/drag_text/content/1_de.json b/mc_frontend/src/assets/h5p/drag_text/content/callidus/1_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/drag_text/content/1_de.json rename to mc_frontend/src/assets/h5p/drag_text/content/callidus/1_de.json diff --git a/mc_frontend/src/assets/h5p/drag_text/content/1_en.json b/mc_frontend/src/assets/h5p/drag_text/content/callidus/1_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/drag_text/content/1_en.json rename to mc_frontend/src/assets/h5p/drag_text/content/callidus/1_en.json diff --git a/mc_frontend/src/assets/h5p/drag_text/content/2_de.json b/mc_frontend/src/assets/h5p/drag_text/content/callidus/2_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/drag_text/content/2_de.json rename to mc_frontend/src/assets/h5p/drag_text/content/callidus/2_de.json diff --git a/mc_frontend/src/assets/h5p/drag_text/content/2_en.json b/mc_frontend/src/assets/h5p/drag_text/content/callidus/2_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/drag_text/content/2_en.json rename to mc_frontend/src/assets/h5p/drag_text/content/callidus/2_en.json diff --git a/mc_frontend/src/assets/h5p/drag_text/content/3_de.json b/mc_frontend/src/assets/h5p/drag_text/content/callidus/3_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/drag_text/content/3_de.json rename to mc_frontend/src/assets/h5p/drag_text/content/callidus/3_de.json diff --git a/mc_frontend/src/assets/h5p/drag_text/content/3_en.json b/mc_frontend/src/assets/h5p/drag_text/content/callidus/3_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/drag_text/content/3_en.json rename to mc_frontend/src/assets/h5p/drag_text/content/callidus/3_en.json diff --git a/mc_frontend/src/assets/h5p/drag_text/content/4_de.json b/mc_frontend/src/assets/h5p/drag_text/content/callidus/4_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/drag_text/content/4_de.json rename to mc_frontend/src/assets/h5p/drag_text/content/callidus/4_de.json diff --git a/mc_frontend/src/assets/h5p/drag_text/content/4_en.json b/mc_frontend/src/assets/h5p/drag_text/content/callidus/4_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/drag_text/content/4_en.json rename to mc_frontend/src/assets/h5p/drag_text/content/callidus/4_en.json diff --git a/mc_frontend/src/assets/h5p/drag_text/content/5_de.json b/mc_frontend/src/assets/h5p/drag_text/content/callidus/5_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/drag_text/content/5_de.json rename to mc_frontend/src/assets/h5p/drag_text/content/callidus/5_de.json diff --git a/mc_frontend/src/assets/h5p/drag_text/content/5_en.json b/mc_frontend/src/assets/h5p/drag_text/content/callidus/5_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/drag_text/content/5_en.json rename to mc_frontend/src/assets/h5p/drag_text/content/callidus/5_en.json diff --git a/mc_frontend/src/assets/h5p/drag_text/content/6_de.json b/mc_frontend/src/assets/h5p/drag_text/content/callidus/6_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/drag_text/content/6_de.json rename to mc_frontend/src/assets/h5p/drag_text/content/callidus/6_de.json diff --git a/mc_frontend/src/assets/h5p/drag_text/content/6_en.json b/mc_frontend/src/assets/h5p/drag_text/content/callidus/6_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/drag_text/content/6_en.json rename to mc_frontend/src/assets/h5p/drag_text/content/callidus/6_en.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/es.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/es.json deleted file mode 100644 index fca34f5f20b967f24750077a4787b13760f6ff96..0000000000000000000000000000000000000000 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/es.json +++ /dev/null @@ -1,195 +0,0 @@ -{ - "semantics": [ - { - "label": "Media", - "fields": [ - { - "label": "Tipo", - "description": "Optional media to display above the question." - } - ] - }, - { - "label": "Descripción de la tarea", - "default": "Rellenar las palabras que faltan", - "description": "Una guÃa que dice al usuario cómo responder a esta tarea." - }, - { - "label": "Bloques de texto", - "entity": "bloque de texto", - "field": { - "label": "LÃnea de texto", - "placeholder": "Oslo es la capital de *Noruega*.", - "description": "", - "important": { - "description": "<ul><li>Se añaden espacios en blanco con un asterisco (*) delante y detrás de la palabra/frase correcta.</li> <li>Respuestas alternativas se separan con una barra diagonal (/).</li> <li>Puede agregar un texto de consejo, mediante dos puntos (:) delante del texto consejo.</li></ul>", - "example": "H5P content may be edited using a *browser/web-browser:Something you use every day*." - } - } - }, - { - "label": "Overall Feedback", - "fields": [ - { - "widgets": [ - { - "label": "Default" - } - ], - "label": "Define custom feedback for any score range", - "description": "Click the \"Add range\" button to add as many ranges as you need. Example: 0-20% Bad score, 21-91% Average Score, 91-100% Great Score!", - "entity": "range", - "field": { - "fields": [ - { - "label": "Score Range" - }, - {}, - { - "label": "Feedback for defined score range", - "placeholder": "Fill in the feedback" - } - ] - } - } - ] - }, - { - "label": "Texto para el botón de \"Mostrar soluciones\"", - "default": "Mostrar solución" - }, - { - "label": "Texto para el botón de \"Reintentar\"", - "default": "Retry" - }, - { - "label": "Text for \"Check\" button", - "default": "Check" - }, - { - "label": "Text for \"Not filled out\" message", - "default": "Please fill in all blanks to view solution" - }, - { - "label": "Text for \"':ans' is correct\" message", - "default": "':ans' is correct" - }, - { - "label": "Text for \"':ans' is wrong\" message", - "default": "':ans' is wrong" - }, - { - "label": "Text for \"Answered correctly\" message", - "default": "Answered correctly" - }, - { - "label": "Text for \"Answered incorrectly\" message", - "default": "Answered incorrectly" - }, - { - "label": "Assistive technology label for solution", - "default": "Correct answer:" - }, - { - "label": "Assistive technology label for input field", - "description": "Use @num and @total to replace current cloze number and total cloze number", - "default": "Blank input @num of @total" - }, - { - "label": "Assistive technology label for saying an input has a tip tied to it", - "default": "Tip available" - }, - { - "label": "Tip icon label", - "default": "Tip" - }, - { - "label": "Behavioural settings.", - "description": "These options will let you control how the task behaves.", - "fields": [ - { - "label": "Enable \"Retry\"" - }, - { - "label": "Enable \"Show solution\" button" - }, - { - "label": "Enable \"Check\" button" - }, - { - "label": "Automatically check answers after input" - }, - { - "label": "Case sensitive", - "description": "Makes sure the user input has to be exactly the same as the answer." - }, - { - "label": "Require all fields to be answered before the solution can be viewed" - }, - { - "label": "Put input fields on separate lines" - }, - { - "label": "Disable image zooming for question image" - }, - { - "label": "Show confirmation dialog on \"Check\"", - "description": "This options is not compatible with the \"Automatically check answers after input\" option" - }, - { - "label": "Show confirmation dialog on \"Retry\"" - }, - { - "label": "Accept minor spelling errors", - "description": "If activated, an answer will also count as correct with minor spelling errors (3-9 characters: 1 spelling error, more than 9 characters: 2 spelling errors)" - } - ] - }, - { - "label": "Check confirmation dialog", - "fields": [ - { - "label": "Header text", - "default": "Finish ?" - }, - { - "label": "Body text", - "default": "Are you sure you wish to finish ?" - }, - { - "label": "Cancel button label", - "default": "Cancel" - }, - { - "label": "Confirm button label", - "default": "Finish" - } - ] - }, - { - "label": "Retry confirmation dialog", - "fields": [ - { - "label": "Header text", - "default": "Retry ?" - }, - { - "label": "Body text", - "default": "Are you sure you wish to retry ?" - }, - { - "label": "Cancel button label", - "default": "Cancel" - }, - { - "label": "Confirm button label", - "default": "Confirm" - } - ] - }, - { - "label": "Textual representation of the score bar for those using a readspeaker", - "default": "You got :num out of :total points" - } - ] -} diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/pl.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/pl.json deleted file mode 100644 index eeb1c37342dd564b925a3bd02275843d79e8792a..0000000000000000000000000000000000000000 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/pl.json +++ /dev/null @@ -1,195 +0,0 @@ -{ - "semantics": [ - { - "label": "Media", - "fields": [ - { - "label": "Type", - "description": "Optional media to display above the question." - } - ] - }, - { - "label": "Task description", - "default": "Fill in the missing words", - "description": "A guide telling the user how to answer this task." - }, - { - "label": "Text blocks", - "entity": "text block", - "field": { - "label": "Line of text", - "placeholder": "Oslo is the capital of *Norway*.", - "description": "", - "important": { - "description": "<ul><li>Blanks are added with an asterisk (*) in front and behind the correct word/phrase.</li><li>Alternative answers are separated with a forward slash (/).</li><li>You may add a textual tip, using a colon (:) in front of the tip.</li></ul>", - "example": "H5P content may be edited using a *browser/web-browser:Something you use every day*." - } - } - }, - { - "label": "Overall Feedback", - "fields": [ - { - "widgets": [ - { - "label": "Default" - } - ], - "label": "Define custom feedback for any score range", - "description": "Click the \"Add range\" button to add as many ranges as you need. Example: 0-20% Bad score, 21-91% Average Score, 91-100% Great Score!", - "entity": "range", - "field": { - "fields": [ - { - "label": "Score Range" - }, - {}, - { - "label": "Feedback for defined score range", - "placeholder": "Fill in the feedback" - } - ] - } - } - ] - }, - { - "label": "Text for \"Show solutions\" button", - "default": "Show solution" - }, - { - "label": "Text for \"Retry\" button", - "default": "Retry" - }, - { - "label": "Text for \"Check\" button", - "default": "Check" - }, - { - "label": "Text for \"Not filled out\" message", - "default": "Please fill in all blanks to view solution" - }, - { - "label": "Text for \"':ans' is correct\" message", - "default": "':ans' is correct" - }, - { - "label": "Text for \"':ans' is wrong\" message", - "default": "':ans' is wrong" - }, - { - "label": "Text for \"Answered correctly\" message", - "default": "Answered correctly" - }, - { - "label": "Text for \"Answered incorrectly\" message", - "default": "Answered incorrectly" - }, - { - "label": "Assistive technology label for solution", - "default": "Correct answer:" - }, - { - "label": "Assistive technology label for input field", - "description": "Use @num and @total to replace current cloze number and total cloze number", - "default": "Blank input @num of @total" - }, - { - "label": "Assistive technology label for saying an input has a tip tied to it", - "default": "Tip available" - }, - { - "label": "Tip icon label", - "default": "Tip" - }, - { - "label": "Behavioural settings.", - "description": "These options will let you control how the task behaves.", - "fields": [ - { - "label": "Enable \"Retry\"" - }, - { - "label": "Enable \"Show solution\" button" - }, - { - "label": "Enable \"Check\" button" - }, - { - "label": "Automatically check answers after input" - }, - { - "label": "Case sensitive", - "description": "Makes sure the user input has to be exactly the same as the answer." - }, - { - "label": "Require all fields to be answered before the solution can be viewed" - }, - { - "label": "Put input fields on separate lines" - }, - { - "label": "Disable image zooming for question image" - }, - { - "label": "Show confirmation dialog on \"Check\"", - "description": "This options is not compatible with the \"Automatically check answers after input\" option" - }, - { - "label": "Show confirmation dialog on \"Retry\"" - }, - { - "label": "Accept minor spelling errors", - "description": "If activated, an answer will also count as correct with minor spelling errors (3-9 characters: 1 spelling error, more than 9 characters: 2 spelling errors)" - } - ] - }, - { - "label": "Check confirmation dialog", - "fields": [ - { - "label": "Header text", - "default": "Finish ?" - }, - { - "label": "Body text", - "default": "Are you sure you wish to finish ?" - }, - { - "label": "Cancel button label", - "default": "Cancel" - }, - { - "label": "Confirm button label", - "default": "Finish" - } - ] - }, - { - "label": "Retry confirmation dialog", - "fields": [ - { - "label": "Header text", - "default": "Retry ?" - }, - { - "label": "Body text", - "default": "Are you sure you wish to retry ?" - }, - { - "label": "Cancel button label", - "default": "Cancel" - }, - { - "label": "Confirm button label", - "default": "Confirm" - } - ] - }, - { - "label": "Textual representation of the score bar for those using a readspeaker", - "default": "You got :num out of :total points" - } - ] -} diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/ru.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/ru.json deleted file mode 100644 index eeb1c37342dd564b925a3bd02275843d79e8792a..0000000000000000000000000000000000000000 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/ru.json +++ /dev/null @@ -1,195 +0,0 @@ -{ - "semantics": [ - { - "label": "Media", - "fields": [ - { - "label": "Type", - "description": "Optional media to display above the question." - } - ] - }, - { - "label": "Task description", - "default": "Fill in the missing words", - "description": "A guide telling the user how to answer this task." - }, - { - "label": "Text blocks", - "entity": "text block", - "field": { - "label": "Line of text", - "placeholder": "Oslo is the capital of *Norway*.", - "description": "", - "important": { - "description": "<ul><li>Blanks are added with an asterisk (*) in front and behind the correct word/phrase.</li><li>Alternative answers are separated with a forward slash (/).</li><li>You may add a textual tip, using a colon (:) in front of the tip.</li></ul>", - "example": "H5P content may be edited using a *browser/web-browser:Something you use every day*." - } - } - }, - { - "label": "Overall Feedback", - "fields": [ - { - "widgets": [ - { - "label": "Default" - } - ], - "label": "Define custom feedback for any score range", - "description": "Click the \"Add range\" button to add as many ranges as you need. Example: 0-20% Bad score, 21-91% Average Score, 91-100% Great Score!", - "entity": "range", - "field": { - "fields": [ - { - "label": "Score Range" - }, - {}, - { - "label": "Feedback for defined score range", - "placeholder": "Fill in the feedback" - } - ] - } - } - ] - }, - { - "label": "Text for \"Show solutions\" button", - "default": "Show solution" - }, - { - "label": "Text for \"Retry\" button", - "default": "Retry" - }, - { - "label": "Text for \"Check\" button", - "default": "Check" - }, - { - "label": "Text for \"Not filled out\" message", - "default": "Please fill in all blanks to view solution" - }, - { - "label": "Text for \"':ans' is correct\" message", - "default": "':ans' is correct" - }, - { - "label": "Text for \"':ans' is wrong\" message", - "default": "':ans' is wrong" - }, - { - "label": "Text for \"Answered correctly\" message", - "default": "Answered correctly" - }, - { - "label": "Text for \"Answered incorrectly\" message", - "default": "Answered incorrectly" - }, - { - "label": "Assistive technology label for solution", - "default": "Correct answer:" - }, - { - "label": "Assistive technology label for input field", - "description": "Use @num and @total to replace current cloze number and total cloze number", - "default": "Blank input @num of @total" - }, - { - "label": "Assistive technology label for saying an input has a tip tied to it", - "default": "Tip available" - }, - { - "label": "Tip icon label", - "default": "Tip" - }, - { - "label": "Behavioural settings.", - "description": "These options will let you control how the task behaves.", - "fields": [ - { - "label": "Enable \"Retry\"" - }, - { - "label": "Enable \"Show solution\" button" - }, - { - "label": "Enable \"Check\" button" - }, - { - "label": "Automatically check answers after input" - }, - { - "label": "Case sensitive", - "description": "Makes sure the user input has to be exactly the same as the answer." - }, - { - "label": "Require all fields to be answered before the solution can be viewed" - }, - { - "label": "Put input fields on separate lines" - }, - { - "label": "Disable image zooming for question image" - }, - { - "label": "Show confirmation dialog on \"Check\"", - "description": "This options is not compatible with the \"Automatically check answers after input\" option" - }, - { - "label": "Show confirmation dialog on \"Retry\"" - }, - { - "label": "Accept minor spelling errors", - "description": "If activated, an answer will also count as correct with minor spelling errors (3-9 characters: 1 spelling error, more than 9 characters: 2 spelling errors)" - } - ] - }, - { - "label": "Check confirmation dialog", - "fields": [ - { - "label": "Header text", - "default": "Finish ?" - }, - { - "label": "Body text", - "default": "Are you sure you wish to finish ?" - }, - { - "label": "Cancel button label", - "default": "Cancel" - }, - { - "label": "Confirm button label", - "default": "Finish" - } - ] - }, - { - "label": "Retry confirmation dialog", - "fields": [ - { - "label": "Header text", - "default": "Retry ?" - }, - { - "label": "Body text", - "default": "Are you sure you wish to retry ?" - }, - { - "label": "Cancel button label", - "default": "Cancel" - }, - { - "label": "Confirm button label", - "default": "Confirm" - } - ] - }, - { - "label": "Textual representation of the score bar for those using a readspeaker", - "default": "You got :num out of :total points" - } - ] -} diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/css/blanks.css b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/css/blanks.css similarity index 89% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/css/blanks.css rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/css/blanks.css index ec908c203c46be8791ec19aced7e439fc1758368..476eb6fdfc76463eb20bd6c7669962a82bfb2016 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/css/blanks.css +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/css/blanks.css @@ -39,9 +39,15 @@ border: 1px solid #9dd8bb; color: #255c41; } +/* Showing solution */ .h5p-blanks .h5p-correct-answer { color: #255c41; font-weight: bold; + border: 1px #255c41 dashed; + background-color: #d4f6e6; + padding: 0.15em; + border-radius: 0.25em; + margin-left: .5em; } .h5p-blanks .h5p-correct:after { position: absolute; @@ -96,3 +102,9 @@ .h5p-blanks .has-tip.h5p-wrong .h5p-text-input { padding-right: 3.5em; } +.h5p-blanks .hidden-but-read { + position: absolute; + height: 0; + width: 0; + overflow: hidden; +} diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/icon.svg b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/icon.svg similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/icon.svg rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/icon.svg diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/js/blanks.js b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/js/blanks.js similarity index 87% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/js/blanks.js rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/js/blanks.js index c123d05f9289a45105381052639957cd13f16779..13f14aade21bef0865ef86622dc91f78d0e7a423 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/js/blanks.js +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/js/blanks.js @@ -9,6 +9,10 @@ H5P.Blanks = (function ($, Question) { var STATE_SHOWING_SOLUTION = 'showing-solution'; var STATE_FINISHED = 'finished'; + const XAPI_ALTERNATIVE_EXTENSION = 'https://h5p.org/x-api/alternatives'; + const XAPI_CASE_SENSITIVITY = 'https://h5p.org/x-api/case-sensitivity'; + const XAPI_REPORTING_VERSION_EXTENSION = 'https://h5p.org/x-api/h5p-reporting-version'; + /** * @typedef {Object} Params * Parameters/configuration object for Blanks @@ -77,9 +81,12 @@ H5P.Blanks = (function ($, Question) { caseSensitive: true, showSolutionsRequiresInput: true, autoCheck: false, - separateLines: false, - disableImageZooming: false - } + separateLines: false + }, + a11yCheck: 'Check the answers. The responses will be marked as correct, incorrect, or unanswered.', + a11yShowSolution: 'Show the solution. The task will be marked with its correct solution.', + a11yRetry: 'Retry the task. Reset all responses and start the task over again.', + a11yHeader: 'Checking mode', }, params); // Delete empty questions @@ -125,13 +132,14 @@ H5P.Blanks = (function ($, Question) { // Check for task media var media = self.params.media; - if (media && media.library) { + if (media && media.type && media.type.library) { + media = media.type; var type = media.library.split(' ')[0]; if (type === 'H5P.Image') { if (media.params.file) { // Register task image self.setImage(media.params.file.path, { - disableImageZooming: self.params.behaviour.disableImageZooming, + disableImageZooming: self.params.media.disableImageZooming || false, alt: media.params.alt, title: media.params.title }); @@ -145,11 +153,14 @@ H5P.Blanks = (function ($, Question) { } } + // Using instructions as label for our text groups + const labelId = 'h5p-blanks-instructions-' + Blanks.idCounter; + // Register task introduction text - self.setIntroduction(self.params.text); + self.setIntroduction('<div id="' + labelId + '">' + self.params.text + '</div>'); // Register task content area - self.setContent(self.createQuestions(), { + self.setContent(self.createQuestions(labelId), { 'class': self.params.behaviour.separateLines ? 'h5p-separate-lines' : '' }); @@ -171,11 +182,11 @@ H5P.Blanks = (function ($, Question) { // select find container to attach dialogs to var $container; - if($containerParents.length !== 0) { + if ($containerParents.length !== 0) { // use parent highest up if any $container = $containerParents.last(); } - else if($content.length !== 0){ + else if ($content.length !== 0) { $container = $content; } else { @@ -185,11 +196,17 @@ H5P.Blanks = (function ($, Question) { if (!self.params.behaviour.autoCheck && this.params.behaviour.enableCheckButton) { // Check answer button self.addButton('check-answer', self.params.checkAnswer, function () { + // Move focus to top of content + self.a11yHeader.innerHTML = self.params.a11yHeader; + self.a11yHeader.focus(); + self.toggleButtonVisibility(STATE_CHECKING); self.markResults(); self.showEvaluation(); self.triggerAnswered(); - }, true, {}, { + }, true, { + 'aria-label': self.params.a11yCheck, + }, { confirmationDialog: { enable: self.params.behaviour.confirmCheckDialog, l10n: self.params.confirmCheck, @@ -202,14 +219,19 @@ H5P.Blanks = (function ($, Question) { // Show solution button self.addButton('show-solution', self.params.showSolutions, function () { self.showCorrectAnswers(false); - }, self.params.behaviour.enableSolutionsButton); + }, self.params.behaviour.enableSolutionsButton, { + 'aria-label': self.params.a11yShowSolution, + }); // Try again button if (self.params.behaviour.enableRetry === true) { self.addButton('try-again', self.params.tryAgain, function () { + self.a11yHeader.innerHTML = ''; self.resetTask(); self.$questions.filter(':first').find('input:first').focus(); - }, true, {}, { + }, true, { + 'aria-label': self.params.a11yRetry, + }, { confirmationDialog: { enable: self.params.behaviour.confirmRetryDialog, l10n: self.params.confirmRetry, @@ -262,7 +284,7 @@ H5P.Blanks = (function ($, Question) { /** * Create questitons html for DOM */ - Blanks.prototype.createQuestions = function () { + Blanks.prototype.createQuestions = function (labelId) { var self = this; var html = ''; @@ -288,12 +310,17 @@ H5P.Blanks = (function ($, Question) { return cloze; }); - html += '<div>' + question + '</div>'; + html += '<div role="group" aria-labelledby="' + labelId + '">' + question + '</div>'; } self.hasClozes = clozeNumber > 0; this.$questions = $(html); + self.a11yHeader = document.createElement('div'); + self.a11yHeader.classList.add('hidden-but-read'); + self.a11yHeader.tabIndex = -1; + self.$questions[0].insertBefore(self.a11yHeader, this.$questions[0].childNodes[0] || null); + // Set input fields. this.$questions.find('input').each(function (i) { var afterCheck; @@ -383,7 +410,7 @@ H5P.Blanks = (function ($, Question) { var rightPadPx = fontSize * rightPadEm; var static_min_pad = 0.5 * fontSize; - setTimeout(function(){ + setTimeout(function () { var tmp = $('<div>', { 'text': $input.val() }); @@ -591,7 +618,7 @@ H5P.Blanks = (function ($, Question) { /** * Trigger xAPI answered event */ - Blanks.prototype.triggerAnswered = function() { + Blanks.prototype.triggerAnswered = function () { this.answered = true; var xAPIEvent = this.createXAPIEventTemplate('answered'); this.addQuestionToXAPI(xAPIEvent); @@ -625,48 +652,51 @@ H5P.Blanks = (function ($, Question) { }; definition.type = 'http://adlnet.gov/expapi/activities/cmi.interaction'; definition.interactionType = 'fill-in'; - definition.correctResponsesPattern = ['{case_matters=' + this.params.behaviour.caseSensitive + '}']; - var firstCorrectResponse = true; + + const clozeSolutions = []; + let crp = ''; // xAPI forces us to create solution patterns for all possible solution combinations for (var i = 0; i < this.params.questions.length; i++) { - var question = this.handleBlanks(this.params.questions[i], function(solution) { - // Store new patterns for each extra alternative answer - var newPatterns = []; - for (var j = 0; j < definition.correctResponsesPattern.length; j++) { - if (!firstCorrectResponse) { - definition.correctResponsesPattern[j] += '[,]'; - } - var prefix = definition.correctResponsesPattern[j]; - for (var k = 0; k < solution.solutions.length; k++) { - if (k === 0) { - // This is the first possible answr, just add it to the pattern - definition.correctResponsesPattern[j] += solution.solutions[k]; - } - else { - // This is an alternative possible answer, we need to create a new permutation - newPatterns.push(prefix + solution.solutions[k]); - } - } - } - // Add any new permutations to the list of response patterns - definition.correctResponsesPattern = definition.correctResponsesPattern.concat(newPatterns); + var question = this.handleBlanks(this.params.questions[i], function (solution) { + // Collect all solution combinations for the H5P Alternative extension + clozeSolutions.push(solution.solutions); - firstCorrectResponse = false; + // Create a basic response pattern out of the first alternative for each blanks field + crp += (!crp ? '' : '[,]') + solution.solutions[0]; // We replace the solutions in the question with a "blank" return '__________'; }); definition.description['en-US'] += question; } + + // Set the basic response pattern (not supporting multiple alternatives for blanks) + definition.correctResponsesPattern = [ + '{case_matters=' + this.params.behaviour.caseSensitive + '}' + crp, + ]; + + // Add the H5P Alternative extension which provides all the combinations of different answers + // Reporting software will need to support this extension for alternatives to work. + definition.extensions = definition.extensions || {}; + definition.extensions[XAPI_CASE_SENSITIVITY] = this.params.behaviour.caseSensitive; + definition.extensions[XAPI_ALTERNATIVE_EXTENSION] = clozeSolutions; + return definition; }; /** * Add the question itselt to the definition part of an xAPIEvent */ - Blanks.prototype.addQuestionToXAPI = function(xAPIEvent) { + Blanks.prototype.addQuestionToXAPI = function (xAPIEvent) { var definition = xAPIEvent.getVerifiedStatementValue(['object', 'definition']); - $.extend(definition, this.getxAPIDefinition()); + $.extend(true, definition, this.getxAPIDefinition()); + + // Set reporting module version if alternative extension is used + if (this.hasAlternatives) { + const context = xAPIEvent.getVerifiedStatementValue(['context']); + context.extensions = context.extensions || {}; + context.extensions[XAPI_REPORTING_VERSION_EXTENSION] = '1.1.0'; + } }; /** @@ -692,6 +722,7 @@ H5P.Blanks = (function ($, Question) { // Split up alternatives var solutions = solution.split('/'); + this.hasAlternatives = this.hasAlternatives || solutions.length > 1; // Trim solutions for (var i = 0; i < solutions.length; i++) { @@ -788,7 +819,7 @@ H5P.Blanks = (function ($, Question) { return correct; }; - Blanks.prototype.getTitle = function() { + Blanks.prototype.getTitle = function () { return H5P.createTitle((this.contentData.metadata && this.contentData.metadata.title) ? this.contentData.metadata.title : 'Fill In'); }; @@ -866,7 +897,8 @@ H5P.Blanks = (function ($, Question) { if (self.params.behaviour.autoCheck) { if (cloze.filledOut()) { cloze.checkAnswer(); - } else { + } + else { hasAllClozesFilled = false; } } @@ -886,5 +918,7 @@ H5P.Blanks = (function ($, Question) { this.$questions.find('input').attr('disabled', true); }; + Blanks.idCounter = 0; + return Blanks; })(H5P.jQuery, H5P.Question); diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/js/cloze.js b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/js/cloze.js similarity index 99% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/js/cloze.js rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/js/cloze.js index c3a6da688d64797a572317999b75242044821801..122bba435266096a47999db00a7c0655525d2a8b 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/js/cloze.js +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/js/cloze.js @@ -201,7 +201,7 @@ */ this.toString = function () { var extra = defaultUserAnswer ? ' value="' + defaultUserAnswer + '"' : ''; - var result = '<span class="h5p-input-wrapper"><input type="text" class="h5p-text-input" autocomplete="off" autocapitalize="off"' + extra + '></span>'; + var result = '<span class="h5p-input-wrapper"><input type="text" class="h5p-text-input" autocomplete="off" autocapitalize="off" spellcheck="false"' + extra + '></span>'; self.length = result.length; return result; }; diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/af.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/af.json similarity index 88% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/af.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/af.json index eeb1c37342dd564b925a3bd02275843d79e8792a..21166c6516afcf51bf40327ec0687d410e076a7c 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/af.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/af.json @@ -6,6 +6,9 @@ { "label": "Type", "description": "Optional media to display above the question." + }, + { + "label": "Disable image zooming" } ] }, @@ -129,9 +132,6 @@ { "label": "Put input fields on separate lines" }, - { - "label": "Disable image zooming for question image" - }, { "label": "Show confirmation dialog on \"Check\"", "description": "This options is not compatible with the \"Automatically check answers after input\" option" @@ -190,6 +190,22 @@ { "label": "Textual representation of the score bar for those using a readspeaker", "default": "You got :num out of :total points" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" } ] -} +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/ar.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/ar.json similarity index 91% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/ar.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/ar.json index a310ea168ed39ee362daef10bddf4ffaca636689..e58011d6daa845ab012ea491314efdbe57819e2b 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/ar.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/ar.json @@ -6,6 +6,9 @@ { "label": "النوع", "description": "وسائط اختيارية لعرضها Ùوق السؤال." + }, + { + "label": "تعطيل تكبير الصورة لصورة السؤال" } ] }, @@ -129,9 +132,6 @@ { "label": "ضع ØÙ‚ول الإدخال على أسطر Ù…Ù†ÙØµÙ„Ø©" }, - { - "label": "تعطيل تكبير الصورة لصورة السؤال" - }, { "label": "إظهار مربع ØÙˆØ§Ø± التأكيد على \"تØÙ‚Ù‚ \" ", "description": "هذه الخيارات غير متواÙقة مع الخيار 'التØÙ‚Ù‚ التلقائي من الإجابات بعد الإدخال '." @@ -190,6 +190,22 @@ { "label": "تمثيل نصي لشريط النتيجة لأولئك الذين يستخدمون تقنية تØÙˆÙŠÙ„ النص الى كلام ", "default": "You got :num out of :total points" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" } ] -} +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/bg.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/bg.json new file mode 100644 index 0000000000000000000000000000000000000000..1ab3799d15112984d34b897f755ca63b309e47d2 --- /dev/null +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/bg.json @@ -0,0 +1,211 @@ +{ + "semantics": [ + { + "label": "МедиÑ", + "fields": [ + { + "label": "Тип", + "description": "Ðезадължителна медиÑ, коÑто да Ñе показва над въпроÑа." + }, + { + "label": "Деактивиране мащабирането на изображениÑ" + } + ] + }, + { + "label": "ОпиÑание на задачата", + "default": "Попълнете липÑващите думи", + "description": "РъководÑтво, което указва на Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ ÐºÐ°Ðº да отговори на тази задача." + }, + { + "label": "ТекÑтови блокове", + "entity": "текÑтов блок", + "field": { + "label": "Ред от текÑта", + "placeholder": "ОÑло е Ñтолицата на *ÐорвегиÑ*.", + "description": "", + "important": { + "description": "<ul><li>Празните полета Ñе добавÑÑ‚ като Ñе поÑÐ²Ð°Ð²Ñ Ð·Ð½Ð°Ðº (*) пред и Ñлед думата или фразата, коÑто трÑбва да Ñе изпише в Ñ‚ÑÑ… по коректен начин. </li><li>Ðлтернативните отговори Ñе разделÑÑ‚ Ñ Ð½Ð°ÐºÐ»Ð¾Ð½ÐµÐ½Ð° черта (/).</li><li>Можете да добавите текÑтови Ñъвети, като Ñложите двоеточие (:) отпред.</li></ul>", + "example": "Съдържанието на H5P може да Ñе редактира Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰Ñ‚Ð° на * браузър/уеб браузър:нещо, което използвате вÑеки ден *." + } + } + }, + { + "label": "Обща обратна връзка", + "fields": [ + { + "widgets": [ + { + "label": "По подразбиране" + } + ], + "label": "Определете перÑонализирани отзиви за вÑеки диапазон от резултати", + "description": "Кликнете върху бутона \"ДобавÑне на диапазон\", за да добавите толкова диапазони, от колкото имате нужда. Пример: 0-20% Лош резултат, 21-91% Среден резултат, 91-100% Отлично! ", + "entity": "диапазон", + "field": { + "fields": [ + { + "label": "Обхват на резултата" + }, + {}, + { + "label": "Обратна връзка за определен диапазон от резултати", + "placeholder": "Попълнете обратна връзка" + } + ] + } + } + ] + }, + { + "label": "ТекÑÑ‚ за бутона \"Показване на решението\"", + "default": "Покажи Ð²ÐµÑ€Ð½Ð¸Ñ Ð¾Ñ‚Ð³Ð¾Ð²Ð¾Ñ€" + }, + { + "label": "ТекÑÑ‚ за бутона \"Опитай пак\"", + "default": "Опитай пак" + }, + { + "label": "ТекÑÑ‚ за бутона \"Провери\"", + "default": "Провери" + }, + { + "label": "ТекÑÑ‚ за Ñъобщението \"Ðе е попълнено\"", + "default": "МолÑ, попълнете най-напред празните полета, за да можете да проверите отговора" + }, + { + "label": "ТекÑÑ‚ за Ñъобщението \"':ans' е правилно\"", + "default": "':ans' е правилно" + }, + { + "label": "ТекÑÑ‚ за Ñъобщението \"':ans' е грешно\"", + "default": "':ans' е грешно" + }, + { + "label": "ТекÑÑ‚ за Ñъобщенето\"Правилен отговор\"", + "default": "Правилен отговор" + }, + { + "label": "ТекÑÑ‚ за Ñъобщението \"Грешен отговор\"", + "default": "Грешен отговор" + }, + { + "label": "Помощен етикет за решение", + "default": "Верен отговор:" + }, + { + "label": "Помощен етикет на за поле за въвеждане на текÑÑ‚", + "description": "Използвайте @num и @total, за да замените Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð±Ñ€Ð¾Ð¹ и Ð¾Ð±Ñ‰Ð¸Ñ Ð±Ñ€Ð¾Ð¹ полета за въвеждане", + "default": "Празно поле за въвеждане на текÑÑ‚ @num от @total" + }, + { + "label": "Помощен етикет, който казва, че полето има Ñвързана Ñ Ð½ÐµÐ³Ð¾ подÑказка", + "default": "Тук има подÑказка" + }, + { + "label": "Етикет за подÑказка", + "default": "ПодÑказка" + }, + { + "label": "ÐаÑтройки на поведението на задачата", + "description": "Тези опции ще ви позволÑÑ‚ да контролирате поведението на задачата.", + "fields": [ + { + "label": "Разрешаване на бутон \"Опитай пак\"" + }, + { + "label": "Разрешаване на бутон \"Покажи решението\"" + }, + { + "label": "Разрешаване на бутон \"Провери\"" + }, + { + "label": "Ðвтоматична проверка на отговорите Ñлед въвеждане" + }, + { + "label": "Различаване на главни от малки букви", + "description": "ИзиÑква Ñе напиÑаното да бъде идентично ÑÑŠÑ Ð·Ð°Ð´Ð°Ð´ÐµÐ½Ð¾Ñ‚Ð¾ от ваÑ." + }, + { + "label": "ИзиÑква Ñе да Ñе отговори на вÑички полета, преди решението да може да бъде разгледано" + }, + { + "label": "ПоÑтавете полетата за въвеждане на отделни редове" + }, + { + "label": "Показване на диалогов прозорец за потвърждение при кликване на бутон \"Провери\"", + "description": "Тази Ð¾Ð¿Ñ†Ð¸Ñ Ð½Ðµ е ÑъвмеÑтима Ñ Ð¾Ð¿Ñ†Ð¸Ñта за автоматична проверка на отговорите Ñлед въвеждане." + }, + { + "label": "Показване на диалогов прозорец за потвърждение при кликване на бутон \"Опитай пак\"" + }, + { + "label": "Приемане на малки правопиÑни грешки", + "description": "Ðко е активирано, отговорът ще бъде приеман за верен и Ñ Ð¼Ð°Ð»ÐºÐ¾ правопиÑни грешки ( от 3-9 знака: 1 правопиÑна грешка, за повече от 9 знака: 2 правопиÑни грешки)" + } + ] + }, + { + "label": "Етикет на бутона за потвърждаване", + "fields": [ + { + "label": "ТекÑÑ‚ в заглавката", + "default": "Приключване?" + }, + { + "label": "ОÑновен текÑÑ‚", + "default": "Сигурни ли Ñте, че иÑкате да приключите?" + }, + { + "label": "Етикет на бутона за отказ", + "default": "Отказ" + }, + { + "label": "Етикет на бутона за потвърждаване", + "default": "Приключване на опита" + } + ] + }, + { + "label": "Повторен диалогов прозорец за потвърждение", + "fields": [ + { + "label": "ТекÑÑ‚ в заглавката", + "default": "Повторен опит?" + }, + { + "label": "ОÑновен текÑÑ‚", + "default": "Сигурни ли Ñте, че иÑкате да опитате пак?" + }, + { + "label": "Етикет на бутона за отказ", + "default": "Отказ" + }, + { + "label": "Етикет на бутона за потвърждаване", + "default": "Да" + } + ] + }, + { + "label": "ТекÑтово предÑтавÑне на лентата Ñ Ñ€ÐµÐ·ÑƒÐ»Ñ‚Ð°Ñ‚Ð¸", + "default": "Вие получихте :num от общо :total точки" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" + } + ] +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/bs.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/bs.json similarity index 74% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/bs.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/bs.json index 1f56b98a07269d1d1a6d45de3575e64716e58703..cb56b43e9f314f1800f3ac5b5fd38ada862ed9f7 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/bs.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/bs.json @@ -6,6 +6,9 @@ { "label": "Tip", "description": "Opcionalni mediji koji mogu biti prikazani iznad zadatka." + }, + { + "label": "Deaktivirati zumiranje slike" } ] }, @@ -33,21 +36,21 @@ { "widgets": [ { - "label": "Default" + "label": "Standardno" } ], - "label": "Define custom feedback for any score range", - "description": "Click the \"Add range\" button to add as many ranges as you need. Example: 0-20% Bad score, 21-91% Average Score, 91-100% Great Score!", - "entity": "range", + "label": "Definiraj standardnu pvratnu informaciju za bilo koji raspon rezultata", + "description": "Klikni na dugme \"Dodaj raspon\" i dodaj raspona rezultata koliko je potrebno. Primjer: 0-20% LoÅ¡e, 21-91% Dobro, 91-100% OdliÄno!", + "entity": "raspon", "field": { "fields": [ { - "label": "Score Range" + "label": "Raspon za rezultat" }, {}, { - "label": "Feedback for defined score range", - "placeholder": "Fill in the feedback" + "label": "Povratna informacija za definirani raspon rezultata", + "placeholder": "Popuni povratnu informaciju" } ] } @@ -91,8 +94,8 @@ "default": "TaÄan odgovor:" }, { - "label": "Text für technische Hilfsmittel für das Eingabefeld", - "description": "Benutze @num und @total um die aktuelle Nummer der Lücke und die Gesamtzahl der Lücken einzufügen", + "label": "Tekst za tehniÄka sredstva za polje za unos", + "description": "Koristi @num i @total kako bi aktuelni broj praznina popunio", "default": "Praznina @num od @total" }, { @@ -100,7 +103,7 @@ "default": "Savjet dostupan" }, { - "label": "Beschriftung für das Tipp-Icon", + "label": "Oznaka za dugme savjet", "default": "Savjet" }, { @@ -108,13 +111,13 @@ "description": "Diese Optionen kontrollieren, wie sich die Aufgabe verhält.", "fields": [ { - "label": "Omogući \"Ponovi\" dugme" + "label": "Omogući dugme \"Ponovi\"" }, { - "label": "Omogući \"Prikaži rjeÅ¡enje\" dugme" + "label": "Omogući dugme \"Prikaži rjeÅ¡enje\"" }, { - "label": "Enable \"Check\" button" + "label": "Omogući dugme \"Provjeri\"" }, { "label": "Odgovore nakon unoÅ¡enja automatski provjeri" @@ -127,10 +130,7 @@ "label": "Sve praznine moraju biti popunjene kako bi se vidjelo rjeÅ¡enje zadatka." }, { - "label": "Setze die Lücken jeweils in eine eigene Zeile" - }, - { - "label": "Deaktivirati zumiranje slike." + "label": "Staviti sve praznine u jednu liniju" }, { "label": "Prikazati dijalog potvrde nakon klika na dugme \"Provjeri\"", @@ -189,7 +189,23 @@ }, { "label": "Textual representation of the score bar for those using a readspeaker", - "default": "You got :num out of :total points" + "default": "Postigli ste :num od :total bodova" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" } ] -} +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/ca.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/ca.json similarity index 88% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/ca.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/ca.json index 6675fabd3d7bfc351ae1caa69636239a04ec4a95..e2c3b34cb51f6ac2560920aff3b9268652d84490 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/ca.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/ca.json @@ -6,6 +6,9 @@ { "label": "Tipus", "description": "Recursos opcionals per mostrar al damunt de la pregunta." + }, + { + "label": "Disable image zooming" } ] }, @@ -129,9 +132,6 @@ { "label": "Put input fields on separate lines" }, - { - "label": "Disable image zooming for question image" - }, { "label": "Show confirmation dialog on \"Check\"", "description": "This options is not compatible with the \"Automatically check answers after input\" option" @@ -190,6 +190,22 @@ { "label": "Textual representation of the score bar for those using a readspeaker", "default": "You got :num out of :total points" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" } ] -} +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/cs.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/cs.json new file mode 100644 index 0000000000000000000000000000000000000000..0c682de6bca871edd37a3382fdda8307481a410c --- /dev/null +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/cs.json @@ -0,0 +1,211 @@ +{ + "semantics": [ + { + "label": "Média", + "fields": [ + { + "label": "Typ", + "description": "Volitelná média k zobrazenà nad otázkou." + }, + { + "label": "Zakázat zvÄ›tÅ¡enà obrázzu" + } + ] + }, + { + "label": "Popis úlohy", + "default": "Doplňte chybÄ›jÃcà slova", + "description": "Průvodce, který uživateli Å™ekne, jak na tuto úlohu odpovÄ›dÄ›t." + }, + { + "label": "Textové bloky", + "entity": "textové bloky", + "field": { + "label": "Řádek textu", + "placeholder": "Oslo je hlavnÃm mÄ›stem *Norska*.", + "description": "", + "important": { + "description": "<ul><li>Mezery jsou pÅ™idány s hvÄ›zdiÄkou (*) pÅ™ed a za správným slovem/frázÃ.</li><li>Alternativnà odpovÄ›di jsou oddÄ›leny lomÃtkem (/).</li><li>Můžete pÅ™idat textovou nápovÄ›du pomocà dvojteÄky (:) pÅ™ed nápovÄ›dou.</li></ul>", + "example": "Obsah H5P lze upravovat pomocà *prohlÞeÄe/webového prohlÞeÄe: NÄ›co, co použÃváte každý den*." + } + } + }, + { + "label": "Celková zpÄ›tná vazba", + "fields": [ + { + "widgets": [ + { + "label": "VýchozÃ" + } + ], + "label": "Definujte vlastnà zpÄ›tnou vazbu pro jakýkoli rozsah skóre", + "description": "KliknÄ›te na tlaÄÃtko \"Add range\" pro pÅ™idánà tolika rozsahů, kolik potÅ™ebujete. NapÅ™Ãklad: 0-20% Å¡patný výsledek, 21-91% průmÄ›rný výsledek, 91-100% výborný výsledek!", + "entity": "rozsah", + "field": { + "fields": [ + { + "label": "Rozsah skóre" + }, + {}, + { + "label": "ZpÄ›tná vazba pro definovaný rozsah skóre", + "placeholder": "Vyplňte ve zpÄ›tné vazbÄ›" + } + ] + } + } + ] + }, + { + "label": "Popis tlaÄÃtka \"Zobrazit Å™eÅ¡enÃ\" ", + "default": "Zobrazit Å™eÅ¡enÃ" + }, + { + "label": "Popis tlaÄÃtka \"Opakovat\" ", + "default": "Opakovat" + }, + { + "label": "Popis tlaÄÃtka \"Zkontrolovat\" ", + "default": "Zkontrolovat" + }, + { + "label": "Text pro zprávu \"NevyplnÄ›no\" ", + "default": "Pro zobrazenà řeÅ¡enà vyplňte prosÃm vÅ¡echny mezery" + }, + { + "label": "Text pro zprávu \"':ans' je správnÄ›\" ", + "default": "':ans' je správnÄ›" + }, + { + "label": "Text pro zprávu \"':ans' je chybnÄ›\" ", + "default": "':ans' je chybnÄ›" + }, + { + "label": "Text pro zprávu \"OdpovÄ›Ä je správnÄ›\" ", + "default": "OdpovÄ›Ä je správnÄ›" + }, + { + "label": "Text pro zprávu \"OdpovÄ›Ä je chybnÄ›\" ", + "default": "OdpovÄ›Ä je chybnÄ›" + }, + { + "label": "Popisek pomocné technologie pro Å™eÅ¡enÃ", + "default": "Správná odpovÄ›Ä:" + }, + { + "label": "Popisek pomocné technologie pro vstupnà pole", + "description": "Použijte @num a @total k nahrazenà aktuálnÃho poÄtu doplnÄ›nà a celkového poÄtu doplnÄ›nà v úloze", + "default": "Prázdný vstup @num ze @total" + }, + { + "label": "Popisek pomocné technologie pro vyslovenà vstupu, ke kterému je nápovÄ›da", + "default": "NápovÄ›da k dispozici" + }, + { + "label": "Popisek ikony nápovÄ›dy", + "default": "NápovÄ›da" + }, + { + "label": "Nastavenà chovánÃ.", + "description": "Tyto možnosti vám umožnà řÃdit, jak se bude úloha chovat.", + "fields": [ + { + "label": "Povolit tlaÄÃtko \"Opakovat\"" + }, + { + "label": "Povolit tlaÄÃtko \"Zobrazit Å™eÅ¡enÃ\"" + }, + { + "label": "EPovolit tlaÄÃtko \"Zkontrolovat\" " + }, + { + "label": "Po zadánà automaticky zkontrolovat odpovÄ›di " + }, + { + "label": "Rozeznává velká a malá pÃsmena", + "description": "Zajišťuje, že vstup uživatele musà být pÅ™esnÄ› stejný jako odpovÄ›Ä." + }, + { + "label": "PÅ™ed zobrazenÃm Å™eÅ¡enà je tÅ™eba odpovÄ›dÄ›t na vÅ¡echna pole" + }, + { + "label": "Vložte vstupnà pole na samostatné řádky" + }, + { + "label": "Zobrazit potvrzovacà dialog \"Zkontrolovat\"", + "description": "Tato volba nenà kompatibilnà s volbou \"Po zadánà automaticky zkontrolovat odpovÄ›di\" " + }, + { + "label": "Zobrazit potvrzovacà dialog \"Opakovat\"" + }, + { + "label": "PÅ™ijmout malé pravopisné chyby", + "description": "Je-li aktivováno, odpovÄ›Ä se také poÄÃtá jako správná s drobnými pravopisnými chybami (3-9 znaků: 1 pravopisná chyba, vÃce než 9 znaků: 2 pravopisné chyby)" + } + ] + }, + { + "label": "Potvrzovacà dialog kontroly", + "fields": [ + { + "label": "Text záhlavÃ", + "default": "UkonÄit ?" + }, + { + "label": "TÄ›lo textu", + "default": "Opravdu chcete ukonÄit ?" + }, + { + "label": "Popis tlaÄÃtka zruÅ¡enÃ", + "default": "ZruÅ¡it" + }, + { + "label": "Popis potvrzovacÃho tlaÄÃtka", + "default": "Konec" + } + ] + }, + { + "label": "Dialog pro potvrzenà opakovánÃ", + "fields": [ + { + "label": "Text záhlavÃ", + "default": "Opakovat ?" + }, + { + "label": "TÄ›lo textu", + "default": "Opravdu chcete akci opakovat ?" + }, + { + "label": "Popis tlaÄÃtka zruÅ¡enÃ", + "default": "ZruÅ¡it" + }, + { + "label": "opis potvrzovacÃho tlaÄÃtka", + "default": "Potvrdit" + } + ] + }, + { + "label": "Textové znázornÄ›nà výsledkové liÅ¡ty pro ty, kteřà použÃvajà Ätecà zaÅ™ÃzenÃ", + "default": "ZÃskal jste :num z :total bodů" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" + } + ] +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/da.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/da.json similarity index 88% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/da.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/da.json index eeb1c37342dd564b925a3bd02275843d79e8792a..21166c6516afcf51bf40327ec0687d410e076a7c 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/da.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/da.json @@ -6,6 +6,9 @@ { "label": "Type", "description": "Optional media to display above the question." + }, + { + "label": "Disable image zooming" } ] }, @@ -129,9 +132,6 @@ { "label": "Put input fields on separate lines" }, - { - "label": "Disable image zooming for question image" - }, { "label": "Show confirmation dialog on \"Check\"", "description": "This options is not compatible with the \"Automatically check answers after input\" option" @@ -190,6 +190,22 @@ { "label": "Textual representation of the score bar for those using a readspeaker", "default": "You got :num out of :total points" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" } ] -} +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/de.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/de.json similarity index 59% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/de.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/de.json index dbef866201e309c45849d6b93b4561e45b3ec92f..1806e46138411b50344b1a8f6987d9517f93b9cf 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/de.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/de.json @@ -5,35 +5,38 @@ "fields": [ { "label": "Typ", - "description": "Optionale Medien, die über der Frage angezeigt werden können." + "description": "Medium, das wahlweise oberhalb der Aufgabe angezeigt wird." + }, + { + "label": "Bildzoom deaktivieren" } ] }, { "label": "Aufgabenbeschreibung", "default": "Trage die fehlenden Wörter ein.", - "description": "Eine Anleitung, die dem Nutzer sagt, wie die Aufgabe beantwortet werden kann." + "description": "Eine Anleitung, die dem Nutzer mitteilt, wie die Aufgabe beantwortet werden kann." }, { "label": "Textblöcke", - "entity": "textblock", + "entity": "Textblock", "field": { "label": "Textzeile", "placeholder": "Berlin ist die Hauptstadt von *Deutschland*.", "description": "", "important": { - "description": "<ul><li>Lücken werden mit einem Sternchen (*) vor und hinter dem richtigen Wort festgelegt.</li><li>Alternative Antworten können jeweils mit einem Schrägstrich (/) angefügt werden.</li><li>Du kannst einen Tipp mit einem Doppelpunkt (:) davor angeben.</li></ul>", + "description": "<ul><li>Lücken werden mit einem Sternchen (*) vor und hinter dem richtigen Wort markiert.</li><li>Alternative Antworten können jeweils mit einem Schrägstrich (/) angefügt werden.</li><li>Du kannst einen Tipp mit einem Doppelpunkt (:) davor hinzufügen.</li></ul>", "example": "H5P-Inhalte können mit einem *Browser/Web-Browser:Etwas, das du jeden Tag nutzt* betrachtet werden." } } }, { - "label": "Allgemeine Rückmeldung", + "label": "Gesamtrückmeldung", "fields": [ { "widgets": [ { - "label": "Vorgabe" + "label": "Eingabemaske" } ], "label": "Lege Rückmeldungen für einzelne Punktebereiche fest", @@ -46,7 +49,7 @@ }, {}, { - "label": "Rückmeldung für festgelegte Punktebereiche", + "label": "Rückmeldung für jeweiligen Punktebereich", "placeholder": "Trage die Rückmeldung ein" } ] @@ -55,82 +58,79 @@ ] }, { - "label": "Beschriftung für den \"Lösung anzeigen\"-Button", + "label": "Beschriftung des \"Lösung anzeigen\"-Buttons", "default": "Lösung anzeigen" }, { - "label": "Beschriftung für den \"Wiederholen\"-Button", + "label": "Beschriftung des \"Wiederholen\"-Buttons", "default": "Wiederholen" }, { - "label": "Beschriftung für den \"Überprüfen\"-Button", + "label": "Beschriftung des \"Überprüfen\"-Buttons", "default": "Überprüfen" }, { - "label": "Text für die \"Nicht ausgefüllt\"-Nachricht", - "default": "Bitte fülle alle Lücken aus, um die Lösung zu sehen" + "label": "Text der \"Nicht ausgefüllt\"-Nachricht", + "default": "Bitte fülle alle Lücken aus, um die Lösung ansehen zu können" }, { - "label": "Text für die \"':ans' ist korrekt\"-Nachricht", + "label": "Text der \"... ist korrekt\"-Nachricht (:ans als Platzhalter für die Antwort der Lernenden verwenden)", "default": "':ans' ist korrekt" }, { - "label": "Text für die \"':ans' ist falsch\"-Nachricht", + "label": "Text der \"... ist falsch\"-Nachricht (:ans als Platzhalter für die Antwort der Lernenden verwenden)", "default": "':ans' ist falsch" }, { - "label": "Text für die \"Korrekt beantwortet\"-Nachricht", + "label": "Text der \"Korrekt beantwortet\"-Nachricht", "default": "Korrekt beantwortet" }, { - "label": "Text für \"Falsch beantwortet\"-Nachricht", + "label": "Text der \"Falsch beantwortet\"-Nachricht", "default": "Falsch beantwortet" }, { - "label": "Text für technische Hilfsmittel für die Lösung", + "label": "Beschriftung der Lösung für Vorlesewerkzeuge (Barrierefreiheit)", "default": "Korrekte Antwort:" }, { - "label": "Text für technische Hilfsmittel für das Eingabefeld", + "label": "Beschriftung des Eingabefelds für Vorlesewerkzeuge (Barrierefreiheit)", "description": "Benutze @num und @total um die aktuelle Nummer der Lücke und die Gesamtzahl der Lücken einzufügen", "default": "Lücke @num von @total" }, { - "label": "Text für technische Hilfsmittel, der darauf hinweist, dass ein Tipp verfügbar ist", + "label": "Text für Vorlesewerkzeuge (Barrierefreiheit), der darauf hinweist, dass ein Tipp verfügbar ist", "default": "Tipp verfügbar" }, { - "label": "Beschriftung für das Tipp-Icon", + "label": "Beschriftung des Tipp-Symbols", "default": "Tipp" }, { - "label": "Verhaltenseinstellungen.", + "label": "Verhaltenseinstellungen", "description": "Diese Optionen kontrollieren, wie sich die Aufgabe verhält.", "fields": [ { "label": "\"Wiederholen\" zulassen" }, { - "label": "\"Lösung anzeigen\"-Button anzeigen" + "label": "\"Lösung anzeigen\" ermöglichen" }, { - "label": "Enable \"Check\" button" + "label": "\"Überprüfen\"-Button anzeigen" }, { "label": "Antworten nach Eingabe automatisch prüfen" }, { "label": "Auf Groß-/Kleinschreibung achten", - "description": "Stellt sicher, dass die Lösung exakt der Vorgabe entsprechen muss." + "description": "Stellt sicher, dass die Lösung exakt der Vorgabe entspricht." }, { "label": "Alle Lücken müssen ausgefüllt sein, bevor die Lösung angesehen werden kann." }, { - "label": "Setze die Lücken jeweils in eine eigene Zeile" - }, - { - "label": "Bilderzoom für Bilder zu Fragen deaktivieren." + "label": "Setzt die Lücken jeweils in eine eigene Zeile" }, { "label": "Bestätigungsdialog beim Klicken auf \"Überprüfen\" anzeigen", @@ -146,10 +146,10 @@ ] }, { - "label": "Bestätigungsdialog beim Prüfen", + "label": "Bestätigungsdialog beim Überprüfen", "fields": [ { - "label": "Text der Titelzeile", + "label": "Text der Überschrift", "default": "Beenden?" }, { @@ -170,7 +170,7 @@ "label": "Bestätigungsdialog beim Wiederholen", "fields": [ { - "label": "Text der Titelzeile", + "label": "Text der Überschrift", "default": "Wiederholen?" }, { @@ -188,8 +188,24 @@ ] }, { - "label": "Textliche Repräsentation der Punkteleiste für diejenigen, die Readspeaker benutzen", + "label": "Anzeigetext der Punkteleiste für Vorlesewerkzeuge (Barrierefreiheit)", "default": "Du hast :num von :total Punkten erreicht." + }, + { + "label": "Beschreibung des \"Überprüfen\"-Buttons (für Hilfsmittel zur Barrierefreiheit)", + "default": "Die Antworten überprüfen. Die Eingaben werden als richtig, falsch oder unbeantwortet markiert." + }, + { + "label": "Beschreibung des \"Lösung anzeigen\"-Buttons (für Hilfsmittel zur Barrierefreiheit)", + "default": "Die Lösung anzeigen. Die richtigen Lösungen werden in der Aufgabe angezeigt." + }, + { + "label": "Beschreibung des \"Wiederholen\"-Buttons (für Hilfsmittel zur Barrierefreiheit)", + "default": "Die Aufgabe wiederholen. Alle Eingaben werden zurückgesetzt und die Aufgabe wird erneut gestartet." + }, + { + "label": "Beschreibung zu Beginn der Aufgabe, nachdem der \"Überprüfen\"-Button geklickt wurde (für Hilfsmittel zur Barrierefreiheit)", + "default": "Überprüfen-Modus aktiv" } ] } diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/el.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/el.json new file mode 100644 index 0000000000000000000000000000000000000000..5a9289db4b892a9045ff6bc7ef46df0ed0be69fe --- /dev/null +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/el.json @@ -0,0 +1,211 @@ +{ + "semantics": [ + { + "label": "Στοιχεία πολυμÎσων", + "fields": [ + { + "label": "ΤÏπος", + "description": "Î Ïοσθήκη στοιχείου πολυμÎσων Ï€Ïος εμφάνιση πάνω από την εÏώτηση (Ï€ÏοαιÏετικό)." + }, + { + "label": "ΑπενεÏγοποίηση της επιλογής zoom για την εικόνα της εÏώτησης" + } + ] + }, + { + "label": "ΠεÏιγÏαφή άσκησης", + "default": "ΣυμπληÏώστε τα κενά με τις λÎξεις που λείπουν", + "description": "Οδηγίες Ï€Ïος τον χÏήστη για τη συμπλήÏωση της άσκησης." + }, + { + "label": "Πλαίσιο κειμÎνου", + "entity": "πλαισιου κειμενου", + "field": { + "label": "ΓÏαμμή κειμÎνου", + "placeholder": "Το Όσλο είναι η Ï€ÏωτεÏουσα της *ÎοÏβηγίας*.", + "description": "", + "important": { + "description": "<ul><li>Î ÏοσθÎστε κενά χÏησιμοποιώντας κάθε φοÏά Îναν αστεÏίσκο (*) Ï€Ïιν και μετά τη σωστή λÎξη/φÏάση.</li><li>ΔιαχωÏίστε τις εναλλακτικÎÏ‚ απαντήσεις με πλάγια παÏλα (/).</li><li>ΜποÏείτε να οÏίσετε επεξηγηματικό κείμενο Ï€ÏοσθÎτοντας μία άνω και κάτω τελεία (:) Ï€Ïιν την επεξήγηση.</li></ul>", + "example": "ΜποÏεί να γίνει επεξεÏγασία των αντικειμÎνων του e-me content με τη χÏήση ενός *φυλλομετÏητή: Κάτι που χÏησιμοποιείτε κάθε μÎÏα*." + } + } + }, + { + "label": "Συνολική ανατÏοφοδότηση", + "fields": [ + { + "widgets": [ + { + "label": "Βασικό" + } + ], + "label": "ΧαÏακτηÏισμός κάθε κλίμακας βαθμολογίας", + "description": "Κάντε κλικ στο κουμπί \"Î Ïοσθήκη κλίμακας\" για να Ï€ÏοσθÎσετε όσες κλίμακες ή διαβαθμίσεις επιθυμείτε. ΠαÏάδειγμα: 0-20% Χαμηλή βαθμολογία, 21-91% ΜÎÏ„Ïια βαθμολογία, 91-100% ΕξαιÏετική βαθμολογία!", + "entity": "κλιμακας", + "field": { + "fields": [ + { + "label": "Βαθμολογία" + }, + {}, + { + "label": "ΧαÏακτηÏισμός", + "placeholder": "ΣυμπληÏώστε τον χαÏακτηÏισμό" + } + ] + } + } + ] + }, + { + "label": "ΕτικÎτα ÎºÎ¿Ï…Î¼Ï€Î¹Î¿Ï ÎµÎ¼Ï†Î¬Î½Î¹ÏƒÎ·Ï‚ λÏσης", + "default": "ΛÏση" + }, + { + "label": "ΕτικÎτα ÎºÎ¿Ï…Î¼Ï€Î¹Î¿Ï Î½Îας Ï€Ïοσπάθειας", + "default": "Επανάληψη" + }, + { + "label": "ΕτικÎτα ÎºÎ¿Ï…Î¼Ï€Î¹Î¿Ï ÎµÎ»Îγχου απάντησης", + "default": "Έλεγχος" + }, + { + "label": "Κείμενο μηνÏματος μη συμπλήÏωσης κενοÏ", + "default": "ΠαÏακαλώ συμπλήÏωσε όλα τα κενά για να δεις τις σωστÎÏ‚ απαντήσεις" + }, + { + "label": "Κείμενο μηνÏματος σωστής απάντησης", + "default": "Η απάντηση ':ans' είναι σωστή" + }, + { + "label": "Κείμενο μηνÏματος λάθος απάντησης", + "default": "Η απάντηση ':ans' είναι λάθος" + }, + { + "label": "Κείμενο μηνÏματος \"Απαντήθηκε σωστά\"", + "default": "Απαντήθηκε σωστά" + }, + { + "label": "Κείμενο μηνÏματος \"Απαντήθηκε λάθος\"", + "default": "Απαντήθηκε λάθος" + }, + { + "label": "ΕτικÎτα σωστής απάντησης για υποστηÏικτικÎÏ‚ τεχνολογίες", + "default": "Σωστή απάντηση:" + }, + { + "label": "ΕτικÎτα πεδίου εισαγωγής κειμÎνου για υποστηÏικτικÎÏ‚ τεχνολογίες", + "description": "ΧÏησιμοποιήστε το @num και το @total για να αντικαταστήσετε τον Ï„ÏÎχοντα αÏιθμό κενών και τον συνολικό αÏιθμό κενών", + "default": "@num κενά από @total" + }, + { + "label": "ΕτικÎτα για υποστηÏικτικÎÏ‚ τεχνολογίες που ενημεÏώνει για την ÏπαÏξη διαθÎσιμου ÎµÏ€ÎµÎ¾Î·Î³Î·Î¼Î±Ï„Î¹ÎºÎ¿Ï ÎºÎµÎ¹Î¼Îνου", + "default": "Επεξήγηση διαθÎσιμη" + }, + { + "label": "ΕτικÎτα εικονιδίου επεξήγησης", + "default": "Επεξήγηση" + }, + { + "label": "Ρυθμίσεις άσκησης", + "description": "ΑυτÎÏ‚ οι Ïυθμίσεις σας επιτÏÎπουν να καθοÏίσετε τον Ï„Ïόπο λειτουÏγίας της άσκησης.", + "fields": [ + { + "label": "ΕνεÏγοποίηση ÎºÎ¿Ï…Î¼Ï€Î¹Î¿Ï \"Επανάληψη\"" + }, + { + "label": "ΕνεÏγοποίηση ÎºÎ¿Ï…Î¼Ï€Î¹Î¿Ï \"ΛÏση\"" + }, + { + "label": "ΕνεÏγοποίηση ÎºÎ¿Ï…Î¼Ï€Î¹Î¿Ï \"Έλεγχος\"" + }, + { + "label": "Αυτόματος Îλεγχος απαντήσεων μετά τη συμπλήÏωση" + }, + { + "label": "ΔιάκÏιση πεζών - κεφαλαίων", + "description": "Το κείμενο που εισάγει ο χÏήστης Ï€ÏÎπει να είναι ακÏιβώς το ίδιο (πεζά - κεφαλαία) με την απάντηση." + }, + { + "label": "Απαιτείται η συμπλήÏωση όλων των πεδίων Ï€Ïιν την εμφάνιση της σωστής απάντησης" + }, + { + "label": "ΤοποθÎτηση πεδίων Ï€Ïος συμπλήÏωση σε χωÏιστÎÏ‚ γÏαμμÎÏ‚ " + }, + { + "label": "Εμφάνιση παÏαθÏÏου επιβεβαίωσης κατά τον \"Έλεγχο\"", + "description": "Αυτή η επιλογή δεν είναι συμβατή με την επιλογή \"Αυτόματος Îλεγχος απαντήσεων μετά τη συμπλήÏωση\"" + }, + { + "label": "Εμφάνιση παÏαθÏÏου επιβεβαίωσης κατά την \"Επανάληψη\"" + }, + { + "label": "ΠαÏάβλεψη μικÏής σημασίας οÏθογÏαφικών λαθών", + "description": "Αν ενεÏγοποιηθεί, μια απάντηση θα ληφθεί ως σωστή ακόμη κι αν Îχει μικÏής σημασίας οÏθογÏαφικά λάθη" + } + ] + }, + { + "label": "ΠαÏάθυÏο επιβεβαίωσης", + "fields": [ + { + "label": "Κείμενο επικεφαλίδας", + "default": "ΟλοκλήÏωση άσκησης" + }, + { + "label": "ΚυÏίως κείμενο", + "default": "Είσαι σίγουÏος ότι θÎλεις να ολοκληÏώσεις την άσκηση;" + }, + { + "label": "ΕτικÎτα ÎºÎ¿Ï…Î¼Ï€Î¹Î¿Ï Î±ÎºÏÏωσης", + "default": "Όχι" + }, + { + "label": "ΕτικÎτα ÎºÎ¿Ï…Î¼Ï€Î¹Î¿Ï ÎµÏ€Î¹Î²ÎµÎ²Î±Î¯Ï‰ÏƒÎ·Ï‚", + "default": "Îαι" + } + ] + }, + { + "label": "ΠαÏάθυÏο επιβεβαίωσης", + "fields": [ + { + "label": "Κείμενο επικεφαλίδας", + "default": "Επανάληψη" + }, + { + "label": "ΚυÏίως κείμενο", + "default": "Είσαι σίγουÏος ότι θÎλεις να Ï€Ïοσπαθήσεις ξανά;" + }, + { + "label": "ΕτικÎτα ÎºÎ¿Ï…Î¼Ï€Î¹Î¿Ï Î±ÎºÏÏωσης", + "default": "Όχι" + }, + { + "label": "ΕτικÎτα ÎºÎ¿Ï…Î¼Ï€Î¹Î¿Ï ÎµÏ€Î¹Î²ÎµÎ²Î±Î¯Ï‰ÏƒÎ·Ï‚", + "default": "Îαι" + } + ] + }, + { + "label": "Κειμενική απόδοση της μπάÏας βαθμολογίας για όσους χÏησιμοποιοÏν ακουστική υποβοήθηση", + "default": "Έχεις :num από :total βαθμοÏÏ‚" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" + } + ] +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/es-mx.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/es-mx.json new file mode 100644 index 0000000000000000000000000000000000000000..66a03566dc0fadd4d723390e9e827f88c84f65d7 --- /dev/null +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/es-mx.json @@ -0,0 +1,211 @@ +{ + "semantics": [ + { + "label": "Medio", + "fields": [ + { + "label": "Tipo", + "description": "Medio opcional a mostrar arriba de la pregunta." + }, + { + "label": "Desabilitar Zoom de imagen" + } + ] + }, + { + "label": "Descripción de la tarea", + "default": "Rellenar las palabras que faltan", + "description": "Una guÃa que dice al usuario cómo responder a esta tarea." + }, + { + "label": "Bloques de texto", + "entity": "bloque de texto", + "field": { + "label": "LÃnea de texto", + "placeholder": "Oslo es la capital de *Noruega*.", + "description": "", + "important": { + "description": "<ul><li>Se añaden espacios en blanco con un asterisco (*) delante y detrás de la palabra/frase correcta.</li> <li>Respuestas alternativas se separan con una barra diagonal (/).</li> <li>Puede agregar un texto de consejo, mediante dos puntos (:) delante del texto consejo.</li></ul>", + "example": "El contenido H5P puede ser editado usando un *browser/web-browser:Algo que Usted usa todos los dÃas*." + } + } + }, + { + "label": "Retroalimentación global", + "fields": [ + { + "widgets": [ + { + "label": "Predeterminado" + } + ], + "label": "Definir retroalimentación personalizada para cualquier rango de puntaje", + "description": "Hacer cic en el botón de \"Añadir rango\" para añadir cuantos rangos necesite. Ejemplo: 0-20% Mal puntaje, 21-91% Puntaje promedio, 91-100% ¡MagnÃfico Puntaje!", + "entity": "rango", + "field": { + "fields": [ + { + "label": "Rango de Puntaje" + }, + {}, + { + "label": "Retroalimentación para rango de puntaje definido", + "placeholder": "Complete la retroalimentación" + } + ] + } + } + ] + }, + { + "label": "Texto para el botón de \"Mostrar soluciones\"", + "default": "Mostrar solución" + }, + { + "label": "Texto para el botón de \"Reintentar\"", + "default": "Reintentar" + }, + { + "label": "Texto para botón para \"Revisar\" ", + "default": "revisar" + }, + { + "label": "Texto para mensaje de \"No contestado\" ", + "default": "Por favor llene todos los espacios para ver la solución" + }, + { + "label": "Texto para mensaje de \"':ans' es correcto\" ", + "default": "':ans' es correcto" + }, + { + "label": "Texto para mensaje de \"':ans' es incorrecto\" ", + "default": "':ans' es incorrecto" + }, + { + "label": "Texto para mensaje de \"Contestado correctamente\" ", + "default": "Contestado correctamente" + }, + { + "label": "Texto para mensaje de \"Contestado incorrectamente\" ", + "default": "Contestado incorrectamente" + }, + { + "label": "Etiqueta para tecnologÃa asistiva para Solución", + "default": "Respuesta correcta:" + }, + { + "label": "Etiqueta para tecnologÃa asistiva para campo de ingreso", + "description": "Use @num y @total para remplazar número cloze actual y número cloze total", + "default": "VacÃo ingreso @num de @total" + }, + { + "label": "Etiqueta para tecnologÃa asistiva para decir que una entrada tiene una pista asociada a ella", + "default": "Pista disponible" + }, + { + "label": "etiqueta de Ãcono de pista", + "default": "Pista" + }, + { + "label": "Configuraciones de comportamiento.", + "description": "Estas opciones le permitirán controlar como se comporta el trabajo.", + "fields": [ + { + "label": "Habilitar \"Reintentar\"" + }, + { + "label": "Habilitar botón para \"Mostrar solución\" " + }, + { + "label": "Habilitar botón \"Revisar\" " + }, + { + "label": "Automáticamente revisar respuestas después de ingresadas" + }, + { + "label": "MAYÚSCULAS/minúsculas si importan", + "description": "Asegurar que la entrada del usuario tenga que ser exactamente la misma que la respuesta." + }, + { + "label": "Requerir que todos los campos sean contestados antes que que pueda ser vista la solución" + }, + { + "label": "Poner campos de entrada en lÃneas separadas" + }, + { + "label": "Mostrar diálogo de confirmación en \"Revisar\"", + "description": "Esta opción no es compatible con la opción para \"Revisar respuestas automáticamente después de ingresadas\" " + }, + { + "label": "Mostrar diálogo de confirmación en \"Reintentar\"" + }, + { + "label": "Aceptar errores tipográficos menores", + "description": "Si se activa, una respuesta también contará como correcta con errores tipográficos menores (3-9 caracteres: 1 error tipográfico, más de 9 caracteres: 2 errores tipográficos)" + } + ] + }, + { + "label": "Diálogo de confirmación para Revisar", + "fields": [ + { + "label": "Texto del encabezado", + "default": "¿ Terminar ?" + }, + { + "label": "Texto del cuerpo", + "default": "¿Está seguro que desea terminar ?" + }, + { + "label": "Etiqueta botón Cancelar", + "default": "Cancelar" + }, + { + "label": "Etiqueta botón Confirmar", + "default": "Terminar" + } + ] + }, + { + "label": "Diálogo de confirmación Reintentar", + "fields": [ + { + "label": "Texto del encabezado", + "default": "¿ Reintentar ?" + }, + { + "label": "Texto del cuerpo", + "default": "¿ Está seguro de querer Reintentar ?" + }, + { + "label": "Etiqueta botón Cancelar", + "default": "Cancelar" + }, + { + "label": "Etiqueta botón Confirmar", + "default": "Confirmar" + } + ] + }, + { + "label": "Representación textual de la barra de puntaje para aquellos que usan un Lector de voz", + "default": "Usted obtuvo :num de un total de :total puntos" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" + } + ] +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/es.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/es.json new file mode 100644 index 0000000000000000000000000000000000000000..51e0acebc995621c6ddeabd3819e02ec84fcbebb --- /dev/null +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/es.json @@ -0,0 +1,211 @@ +{ + "semantics": [ + { + "label": "Medio", + "fields": [ + { + "label": "Tipo", + "description": "Medio opcional a mostrar arriba de la pregunta." + }, + { + "label": "Desabilitar Zoom de imagen" + } + ] + }, + { + "label": "Descripción de la tarea", + "default": "Rellenar las palabras que faltan", + "description": "Una guÃa que dice al usuario cómo responder a esta tarea." + }, + { + "label": "Bloques de texto", + "entity": "bloque de texto", + "field": { + "label": "LÃnea de texto", + "placeholder": "Oslo es la capital de *Noruega*.", + "description": "", + "important": { + "description": "<ul><li>Se añaden espacios en blanco con un asterisco (*) delante y detrás de la palabra/frase correcta.</li> <li>Respuestas alternativas se separan con una barra diagonal (/).</li> <li>Puede agregar un texto de consejo, mediante dos puntos (:) delante del texto consejo.</li></ul>", + "example": "El contenido H5P puede ser editado usando un *browser/web-browser:Algo que Usted usa todos los dÃas*." + } + } + }, + { + "label": "Realimentación global", + "fields": [ + { + "widgets": [ + { + "label": "Predeterminado" + } + ], + "label": "Definir realimentación personalizada para cualquier rango de puntaje", + "description": "Hacer cic en el botón de \"Añadir rango\" para añadir cuantos rangos necesite. Ejemplo: 0-20% Mal puntaje, 21-91% Puntaje promedio, 91-100% ¡MagnÃfico Puntaje!", + "entity": "rango", + "field": { + "fields": [ + { + "label": "Rango de Puntaje" + }, + {}, + { + "label": "Realimentación para rango de puntaje definido", + "placeholder": "Complete la realimentación" + } + ] + } + } + ] + }, + { + "label": "Texto para el botón de \"Mostrar soluciones\"", + "default": "Mostrar solución" + }, + { + "label": "Texto para el botón de \"Reintentar\"", + "default": "Reintentar" + }, + { + "label": "Texto para botón para \"Revisar\" ", + "default": "revisar" + }, + { + "label": "Texto para mensaje de \"No contestado\" ", + "default": "Por favor llene todos los espacios para ver la solución" + }, + { + "label": "Texto para mensaje de \"':ans' es correcto\" ", + "default": "':ans' es correcto" + }, + { + "label": "Texto para mensaje de \"':ans' es incorrecto\" ", + "default": "':ans' es incorrecto" + }, + { + "label": "Texto para mensaje de \"Contestado correctamente\" ", + "default": "Contestado correctamente" + }, + { + "label": "Texto para mensaje de \"Contestado incorrectamente\" ", + "default": "Contestado incorrectamente" + }, + { + "label": "Etiqueta para tecnologÃa asistiva para Solución", + "default": "Respuesta correcta:" + }, + { + "label": "Etiqueta para tecnologÃa asistiva para campo de ingreso", + "description": "Use @num y @total para remplazar número cloze actual y número cloze total", + "default": "VacÃo ingreso @num de @total" + }, + { + "label": "Etiqueta para tecnologÃa asistiva para decir que una entrada tiene una pista asociada a ella", + "default": "Pista disponible" + }, + { + "label": "etiqueta de Ãcono de pista", + "default": "Pista" + }, + { + "label": "Configuraciones de comportamiento.", + "description": "Estas opciones le permitirán controlar como se comporta el trabajo.", + "fields": [ + { + "label": "Habilitar \"Reintentar\"" + }, + { + "label": "Habilitar botón para \"Mostrar solución\" " + }, + { + "label": "Habilitar botón \"Revisar\" " + }, + { + "label": "Automáticamente revisar respuestas después de ingresadas" + }, + { + "label": "MAYÚSCULAS/minúsculas si importan", + "description": "Asegurar que la entrada del usuario tenga que ser exactamente la misma que la respuesta." + }, + { + "label": "Requerir que todos los campos sean contestados antes que que pueda ser vista la solución" + }, + { + "label": "Poner campos de entrada en lÃneas separadas" + }, + { + "label": "Mostrar diálogo de confirmación en \"Revisar\"", + "description": "Esta opción no es compatible con la opción para \"Revisar respuestas automáticamente después de ingresadas\" " + }, + { + "label": "Mostrar diálogo de confirmación en \"Reintentar\"" + }, + { + "label": "Aceptar errores tipográficos menores", + "description": "Si se activa, una respuesta también contará como correcta con errores tipográficos menores (3-9 caracteres: 1 error tipográfico, más de 9 caracteres: 2 errores tipográficos)" + } + ] + }, + { + "label": "Diálogo de confirmación para Revisar", + "fields": [ + { + "label": "Texto del encabezado", + "default": "¿ Terminar ?" + }, + { + "label": "Texto del cuerpo", + "default": "¿Está seguro que desea terminar ?" + }, + { + "label": "Etiqueta botón Cancelar", + "default": "Cancelar" + }, + { + "label": "Etiqueta botón Confirmar", + "default": "Terminar" + } + ] + }, + { + "label": "Diálogo de confirmación Reintentar", + "fields": [ + { + "label": "Texto del encabezado", + "default": "¿ Reintentar ?" + }, + { + "label": "Texto del cuerpo", + "default": "¿ Está seguro de querer Reintentar ?" + }, + { + "label": "Etiqueta botón Cancelar", + "default": "Cancelar" + }, + { + "label": "Etiqueta botón Confirmar", + "default": "Confirmar" + } + ] + }, + { + "label": "Representación textual de la barra de puntaje para aquellos que usan un Lector de voz", + "default": "Usted obtuvo :num de un total de :total puntos" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" + } + ] +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/et.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/et.json new file mode 100644 index 0000000000000000000000000000000000000000..40186e2f52ddf0f1aacd3526208849026c92f85a --- /dev/null +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/et.json @@ -0,0 +1,211 @@ +{ + "semantics": [ + { + "label": "Meedia", + "fields": [ + { + "label": "Tüüp", + "description": "Pilt või video küsimuse juures kuvamiseks (ei ole kohustuslik)." + }, + { + "label": "Keela pildi suurendamine" + } + ] + }, + { + "label": "Ülesande kirjeldus", + "default": "Sisesta puuduvad sõnad", + "description": "Ülesande vastamist kirjeldav juhis kasutajale." + }, + { + "label": "Tekstiväljad", + "entity": "tekstiväli", + "field": { + "label": "Tekstirida", + "placeholder": "Oslo on *Norway* pealinn.", + "description": "", + "important": { + "description": "<ul><li>Tühjad kohad märgitakse tärni (*) lisamisega korrektse sõna või fraasi ette ja taha.</li><li>Alternatiivsed vastused eraldatakse kaldkriipsuga (/).</li><li>Tekstivihje lisamiseks kasuta koolonit (:) vihje ees.</li></ul>", + "example": "H5P sisu töötlemiseks sobib *brauser/veebibrauser:Midagi, mida kasutad iga päev*." + } + } + }, + { + "label": "Üldine tagasiside", + "fields": [ + { + "widgets": [ + { + "label": "Vaikimisi" + } + ], + "label": "Määratle kohandatud tagasiside igale punktisumma vahemikule", + "description": "Kliki \"Lisa vahemik\" nupule, et lisada vajalik arv vahemikke. Näiteks: 0-20% Halb tulemus, 21-91% Keskmine tulemus, 91-100% Suurepärane tulemus!", + "entity": "vahemik", + "field": { + "fields": [ + { + "label": "Punktisumma vahemik" + }, + {}, + { + "label": "Tagasiside määratletud punktisumma vahemikule", + "placeholder": "Sisesta tagasiside" + } + ] + } + } + ] + }, + { + "label": "Nupu \"Näita lahendusi\" tekst", + "default": "Näita lahendusi" + }, + { + "label": "Nupu \"Proovi uuesti\" tekst", + "default": "Proovi uuesti" + }, + { + "label": "Nupu \"Kontrolli\" tekst", + "default": "Kontrolli" + }, + { + "label": "Teate \"Ei ole täidetud\" tekst", + "default": "Lahenduse vaatamiseks täida palun kõik tühjad väljad" + }, + { + "label": "Teate \"':ans' on õige\" tekst", + "default": "':ans' on õige" + }, + { + "label": "Teate \"':ans' on õige\" tekst", + "default": "':ans' on õige" + }, + { + "label": "Teate \"Õigesti vastatud\" tekst", + "default": "Õigesti vastatud" + }, + { + "label": "Text for \"Valesti vastatud\" message", + "default": "Valesti vastatud" + }, + { + "label": "Assisteeriva tehnoloogia silt lahendusele", + "default": "Õige vastus:" + }, + { + "label": "Assisteeriva tehnoloogia silt sisestusväljale", + "description": "Kasuta @num ja @total, et asendada jooksev cloze arv ja cloze arvude summa", + "default": "Tühi sisend @num / @total" + }, + { + "label": "Assisteeriva tehnoloogia silt, mis ütleb, et vastusele on vihje", + "default": "Saadaval on vihje" + }, + { + "label": "Vihjeikooni silt", + "default": "Vihje" + }, + { + "label": "Ülesande seadistused.", + "description": "Nende seadistustega juhid ülesande toimimist.", + "fields": [ + { + "label": "Luba \"Proovi uuesti\" nupp" + }, + { + "label": "Luba \"Näit lahendus\" nupp" + }, + { + "label": "Luba \"Kontrolli\" nupp" + }, + { + "label": "Kontrolli vastused peale sisestamist automaatselt" + }, + { + "label": "Tõstutundlik", + "description": "Nõuab kasutajalt täpselt sama väike-suurtähtede kasutust nagu on vastuses." + }, + { + "label": "Nõuab lahenduse nägemiseks eelnevat kõikide väljade vastamist." + }, + { + "label": "Aseta sisendväljad eraldi ridadele" + }, + { + "label": "Näita kinnitusdialoogi \"Kontrolli\" nupule vajutamisel", + "description": "Seda seadistust ei saa kasutada koos \"Kontrolli vastused peale sisestamist automaatselt\" valikuga" + }, + { + "label": "Näita kinnitusdialoogi \"Proovi uuesti\" nupule vajutamisel" + }, + { + "label": "Luba vähesed kirjavead", + "description": "Seadistuse kasutamisel loetakse õigeks ka kirjavigu sisaldav vastus (3-9 tähemärki: 1 kirjaviga, rohkem, kui 9 tähemärki: 2 kirjaviga)" + } + ] + }, + { + "label": "Kontrolli nupu kinnitusdialoog", + "fields": [ + { + "label": "Pealkiri", + "default": "Valmis?" + }, + { + "label": "Dialoogi tekst", + "default": "Oled kindel, et soovid kontrollida?" + }, + { + "label": "Tühista nupu silt", + "default": "Ei" + }, + { + "label": "Kinnita nupu silt", + "default": "Jah" + } + ] + }, + { + "label": "Proovi uuesti nupu kinnitusdialoog", + "fields": [ + { + "label": "Pealkiri", + "default": "Kas proovid uuesti?" + }, + { + "label": "Dialoogi tekst", + "default": "Oled kindel, et soovid uuesti proovida?" + }, + { + "label": "Tühista nupu silt", + "default": "Ei" + }, + { + "label": "Kinnita nupu silt", + "default": "Jah" + } + ] + }, + { + "label": "Punktisumma esitamine tekstilisel kujul neile, kes kasutavad tekstilugerit", + "default": "Sa said :num punkti. Maksimaalne punktisumma oli :total punkti" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" + } + ] +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/eu.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/eu.json similarity index 88% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/eu.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/eu.json index 10df76122ab7129d6a63b79ebc1a5a8bc05ee441..b797ddef93a3b5bdbd64d1d5dc02168bb1ffe8f7 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/eu.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/eu.json @@ -6,6 +6,9 @@ { "label": "Mota", "description": "Galderaren azpiko aukerako multimedia." + }, + { + "label": "Desgaitu irudiaren zooma" } ] }, @@ -31,7 +34,7 @@ "label": "Feedback orokorra", "fields": [ { - "trepetak": [ + "widgets": [ { "label": "Lehenetsia" } @@ -129,9 +132,6 @@ { "label": "Jarri eremuen sarrerak lerro bereizietan" }, - { - "label": "Desgaitu irudiaren zooma erantzunaren irudian" - }, { "label": "Erakutsi egiaztatze dialogoa \"Egiaztatu\"", "description": "Aukera hau ez da bateragarria \"Egiaztatu automatikoki erantzunak sartu ondoren\" aukerarekin" @@ -190,6 +190,22 @@ { "label": "Puntuazio barraren testu adierazpena irakurgailua erabiltzen dutenentzat", "default": "Lortu duzu :num / :total puntu" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" } ] -} +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/fi.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/fi.json similarity index 89% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/fi.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/fi.json index 6bf63974beea103a5f3d330f9dd5bfbde95f46aa..188996d9571bfd60ed78929b39d817ce12aa7978 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/fi.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/fi.json @@ -6,6 +6,9 @@ { "label": "Tyyppi", "description": "Valinnainen kuva tai video, joka näkyy kysymyksen yläpuolella." + }, + { + "label": "Estä kysymykseen liitetyn kuvan suurentaminen" } ] }, @@ -129,9 +132,6 @@ { "label": "Järjestä vastauskentät eri riveille" }, - { - "label": "Estä kysymykseen liitetyn kuvan suurentaminen" - }, { "label": "Näytä varmistusdialogi, kun käyttäjä klikkaa \"Tarkista\"", "description": "Tämä valinta ei toimi yhdessä \"Tarkista vastaukset automaattisesti\" valinnan kanssa" @@ -190,6 +190,22 @@ { "label": "Textual representation of the score bar for those using a readspeaker", "default": "You got :num out of :total points" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" } ] -} +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/fr.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/fr.json similarity index 87% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/fr.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/fr.json index 45b6ee8d408dae0fdee861164ba711820453556f..2ca307c607c0a70af57d16cae5a0216fbe52e405 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/fr.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/fr.json @@ -1,11 +1,14 @@ { "semantics": [ { - "label": "Fichier média", + "label": "Média", "fields": [ { - "label": "Type de média", - "description": "Fichier média à afficher en option au-dessus de la question." + "label": "Type", + "description": "Média à afficher au-dessus de la question (facultatif)." + }, + { + "label": "Désactiver l'agrandissement de l'image" } ] }, @@ -129,9 +132,6 @@ { "label": "Afficher les blancs sur des lignes séparées." }, - { - "label": "Désactiver l'agrandissement de l'image de la question." - }, { "label": "Afficher la fenêtre de confirmation pour \"Vérifier\"", "description": "Cette option n'est pas compatible avec l'option \"Vérifier les réponses instantanément dès la saisie.\"" @@ -190,6 +190,22 @@ { "label": "Représentation textuelle du panneau du score pour les utilisateurs d'outils de synthèse vocale (comme ReadSpeaker)", "default": "Vous avez obtenu :num points sur un total de :points" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" } ] -} +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/et.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/he.json similarity index 68% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/et.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/he.json index d782508a1b21c5f1855ec4ee36a09618bf044e99..d107bf7f1a806772b865b09dcc8a25f844ff96fa 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/et.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/he.json @@ -1,25 +1,28 @@ { "semantics": [ { - "label": "Pilt või video", + "label": "מדיה", "fields": [ { - "label": "Tüüp", - "description": "Pilt või video, mida kuvatakse küsimuse juures (mittekohustuslik element)." + "label": "סוג", + "description": "× ×™×ª×Ÿ להוסיף ×ª×ž×•× ×” ×שר תוצג מעל הש×לה." + }, + { + "label": "ביטול ×”×פשרות להגדלת ×ª×ž×•× ×”" } ] }, { - "label": "Task description", - "default": "Fill in the missing words", - "description": "A guide telling the user how to answer this task." + "label": "תי×ור תוכן", + "default": "מילוי ×”×ž×™×œ×™× ×”×—×¡×¨×•×ª", + "description": "מדריך המסביר למשתמש כיצד ×œ×¢× ×•×ª על המשימה." }, { - "label": "Text blocks", - "entity": "text block", + "label": "משבצות תוכן", + "entity": "משבצת תוכן", "field": { - "label": "Line of text", - "placeholder": "Oslo is the capital of *Norway*.", + "label": "שורה של טקסט", + "placeholder": "×וסלו ×”×™× ×‘×™×¨×ª *× ×•×¨×•×•×’×™×”*.", "description": "", "important": { "description": "<ul><li>Blanks are added with an asterisk (*) in front and behind the correct word/phrase.</li><li>Alternative answers are separated with a forward slash (/).</li><li>You may add a textual tip, using a colon (:) in front of the tip.</li></ul>", @@ -28,26 +31,26 @@ } }, { - "label": "Overall Feedback", + "label": "משוב כללי", "fields": [ { "widgets": [ { - "label": "Default" + "label": "בררת מחדל" } ], - "label": "Define custom feedback for any score range", - "description": "Click the \"Add range\" button to add as many ranges as you need. Example: 0-20% Bad score, 21-91% Average Score, 91-100% Great Score!", - "entity": "range", + "label": "הגדרת משוב מות×× ×ישית לכל טווח × ×§×•×“×•×ª שהו×", + "description": "לחצו על כפתור \"הוספת טווח\" להוספת ×˜×•×•×—×™× ×œ×¤×™ הצורך. לדוגמה: 0-20% × ×™×§×•×“ גרוע, 21-91% × ×™×§×•×“ ממוצע, 91-100% × ×™×§×•×“ מצוין!", + "entity": "תחו×", "field": { "fields": [ { - "label": "Score Range" + "label": "×ª×—×•× ×¦×™×•× ×™×" }, {}, { - "label": "Feedback for defined score range", - "placeholder": "Fill in the feedback" + "label": "משוב לטווח × ×™×§×•×“ מוגדר", + "placeholder": "מל×ו ×ת המשוב" } ] } @@ -129,9 +132,6 @@ { "label": "Put input fields on separate lines" }, - { - "label": "Disable image zooming for question image" - }, { "label": "Show confirmation dialog on \"Check\"", "description": "This options is not compatible with the \"Automatically check answers after input\" option" @@ -158,11 +158,11 @@ }, { "label": "Cancel button label", - "default": "Cancel" + "default": "ביטול" }, { "label": "Confirm button label", - "default": "Finish" + "default": "סיו×" } ] }, @@ -171,7 +171,7 @@ "fields": [ { "label": "Header text", - "default": "Retry ?" + "default": "× ×™×¡×™×•×Ÿ חוזר ?" }, { "label": "Body text", @@ -179,17 +179,33 @@ }, { "label": "Cancel button label", - "default": "Cancel" + "default": "ביטול" }, { "label": "Confirm button label", - "default": "Confirm" + "default": "×ישור" } ] }, { "label": "Textual representation of the score bar for those using a readspeaker", "default": "You got :num out of :total points" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" } ] } diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/hu.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/hu.json similarity index 88% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/hu.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/hu.json index eeb1c37342dd564b925a3bd02275843d79e8792a..21166c6516afcf51bf40327ec0687d410e076a7c 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/hu.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/hu.json @@ -6,6 +6,9 @@ { "label": "Type", "description": "Optional media to display above the question." + }, + { + "label": "Disable image zooming" } ] }, @@ -129,9 +132,6 @@ { "label": "Put input fields on separate lines" }, - { - "label": "Disable image zooming for question image" - }, { "label": "Show confirmation dialog on \"Check\"", "description": "This options is not compatible with the \"Automatically check answers after input\" option" @@ -190,6 +190,22 @@ { "label": "Textual representation of the score bar for those using a readspeaker", "default": "You got :num out of :total points" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" } ] -} +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/it.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/it.json similarity index 68% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/it.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/it.json index 59db202ef07a87a6bf98fc781cb27c5494b87d5d..6f34a74b6dd3cf05fda2c2c471e6217d20278948 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/it.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/it.json @@ -5,13 +5,16 @@ "fields": [ { "label": "Tipo", - "description": "Media opzionale da mostrare sopra la domanda." + "description": "Media facoltativo da mostrare sopra la domanda" + }, + { + "label": "Disabilita lo zoom dell'immagine" } ] }, { "label": "Descrizione attività ", - "default": "Riempire con le parole mancanti", + "default": "Riempi con le parole mancanti", "description": "Una guida che dice all'utente come rispondere a questo compito." }, { @@ -19,11 +22,11 @@ "entity": "Blocco di testo", "field": { "label": "Linea di testo", - "placeholder": "Oslo è la capitale della * Norvegia *.", + "placeholder": "Oslo è la capitale della *Norvegia*.", "description": "", "important": { - "description": "<ul><li>Gli spazi vuoti sono aggiunti con un asterisco (*) all'inizio e alla fine della parola/frase corretta.</li> <li>Le risposte alternative sono separate da una barra (/).</li> <li>Si può aggiungere un testo di suggerimento facendolo precedere da due punti (:).</li></ul>", - "example": "H5P content may be edited using a *browser/web-browser:Something you use every day*." + "description": "<ul><li>Gli spazi vuoti sono aggiunti con un asterisco (*) all'inizio e alla fine della frase corretta.</li> <li>Le risposte alternative sono separate da una barra (/).</li> <li>Si può aggiungere un testo di suggerimento facendolo precedere da due punti (:).</li></ul>", + "example": "I contenuti H5P possono essere editati usando un *browser/browser web:Qualcosa che usi ogni giorno*." } } }, @@ -37,7 +40,7 @@ } ], "label": "Definisci un feedback personalizzato per ogni intervallo di punteggio", - "description": "Click the \"Add range\" button to add as many ranges as you need. Example: 0-20% Bad score, 21-91% Average Score, 91-100% Great Score!", + "description": "Clicca sul pulsante \"Aggiungi intervallo\" per aggiungere gli intervalli che ti servono. Per esempio: 0-20%, Punteggio scarso; 21-90%, Punteggio medio; 91-100% Punteggio ottimo!", "entity": "Intervallo", "field": { "fields": [ @@ -71,16 +74,16 @@ "default": "Per favore, riempi tutti gli spazi vuoti per vedere la soluzione" }, { - "label": "Testo del messaggio \"': ans' è corretto\"", + "label": "Il testo del messaggio \"': ans' è corretto\"", "default": "': ans' è corretto" }, { - "label": "Testo del messaggio \"': ans' è sbagliato\"", + "label": "Il testo del messaggio \"': ans' è sbagliato\"", "default": "': ans' è sbagliato" }, { "label": "Testo del messaggio \"Hai risposto correttamente\"", - "default": "Ha risposto correttamente" + "default": "Hai risposto correttamente" }, { "label": "Testo del messaggio \"Hai risposto in modo non corretto\"", @@ -104,8 +107,8 @@ "default": "Suggerimento" }, { - "label": "Impostazioni di esecuzione.", - "description": "Queste opzioni ti consentono di controllare l'andamento del compito.", + "label": "Impostazioni di esecuzione", + "description": "Queste opzioni ti consentono di controllare l'andamento del compito", "fields": [ { "label": "Attiva \"Riprova\"" @@ -114,14 +117,14 @@ "label": "Attiva il pulsante \"Mostra soluzioni\"" }, { - "label": "Enable \"Check\" button" + "label": "Attiva il pulsante \"Verifica\"" }, { "label": "Controlla automaticamente le risposte dopo l'immissione" }, { "label": "Riconosce maiuscole e minuscole", - "description": "Assicurati che i caratteri inseriti dall'utente siano esattamente gli stessi della risposta." + "description": "Assicurati che i caratteri inseriti dall'utente siano esattamente gli stessi della risposta" }, { "label": "Richiedi che tutti i campi siano completati prima di mostrare la soluzione" @@ -129,9 +132,6 @@ { "label": "Inserire campi di input in righe separate" }, - { - "label": "Disabilita lo zoom dell'immagine su immagini-domanda" - }, { "label": "Mostra la finestra di dialogo di conferma su \"Verifica\"", "description": "Questa scelta non è compatibile con l'opzione \"Controlla automaticamente le risposte dopo l'immissione\"" @@ -140,8 +140,8 @@ "label": "Mostra la finestra di dialogo di conferma su \"Riprova\"" }, { - "label": "Accetta errori minori di ortografia", - "description": "Se attivo, una risposta sarà conteggiata come corretta nonostante errori minori di ortografia (da 3 a 9 caratteri: 1 errore; più di 9 characters: 2 errori)" + "label": "Accetta piccoli errori di ortografia", + "description": "Se attivo, una risposta sarà conteggiata come corretta nonostante piccoli errori di ortografia (da 3 a 9 caratteri: 1 errore; più di 9 caratteri: 2 errori)" } ] }, @@ -150,11 +150,11 @@ "fields": [ { "label": "Testo dell'intestazione", - "default": "Finito?" + "default": "Terminato?" }, { - "label": "Testo del corpo", - "default": "Sei sicuro di voler finire?" + "label": "Corpo del testo", + "default": "Sei sicuro di voler terminare?" }, { "label": "Etichetta del pulsante Annulla", @@ -162,7 +162,7 @@ }, { "label": "Etichetta del pulsante di conferma", - "default": "Finito" + "default": "Terminato" } ] }, @@ -174,7 +174,7 @@ "default": "Vuoi riprovare?" }, { - "label": "Testo del corpo", + "label": "Corpo del testo", "default": "Sei sicuro di voler riprovare?" }, { @@ -188,8 +188,24 @@ ] }, { - "label": "Textual representation of the score bar for those using a readspeaker", - "default": "You got :num out of :total points" + "label": "Rappresentazione testuale sulla barra del punteggio per chi usa un lettore vocale", + "default": "Il tuo punteggio è :num di :total" + }, + { + "label": "Descrizione delle tecnologie assistive per il pulsante \"Verifica\"", + "default": "Verifica" + }, + { + "label": "Descrizione delle tecnologie assistive per il pulsante \"Mostra soluzione\"", + "default": "Mostra soluzione" + }, + { + "label": "Descrizione delle tecnologie assistive per il pulsante \"Riprova\"", + "default": "Riprova" + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" } ] } diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/ja.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/ja.json similarity index 89% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/ja.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/ja.json index ef022f777f1ebb21678e3dd0431bc3a8337c2e6b..ddb9df4a1634add1893a90114f357a1ca0e1ac5a 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/ja.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/ja.json @@ -6,6 +6,9 @@ { "label": "タイプ", "description": "è¨å•ã®ä¸Šã«è¡¨ç¤ºã™ã‚‹ã‚ªãƒ—ションã®ãƒ¡ãƒ‡ã‚£ã‚¢ã€‚" + }, + { + "label": "Disable image zooming" } ] }, @@ -129,9 +132,6 @@ { "label": "Put input fields on separate lines" }, - { - "label": "Disable image zooming for question image" - }, { "label": "Show confirmation dialog on \"Check\"", "description": "This options is not compatible with the \"Automatically check answers after input\" option" @@ -190,6 +190,22 @@ { "label": "Textual representation of the score bar for those using a readspeaker", "default": "You got :num out of :total points" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" } ] -} +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/el.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/km.json similarity index 67% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/el.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/km.json index eeb1c37342dd564b925a3bd02275843d79e8792a..512cb3ad726d8d3564ec6d1d0de43ef76c5edb1b 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/el.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/km.json @@ -6,12 +6,15 @@ { "label": "Type", "description": "Optional media to display above the question." + }, + { + "label": "Disable image zooming" } ] }, { "label": "Task description", - "default": "Fill in the missing words", + "default": "បញ្ចូលពាក្យážáŸ’រឹមážáŸ’រូវក្នុងចន្លោះ", "description": "A guide telling the user how to answer this task." }, { @@ -56,52 +59,52 @@ }, { "label": "Text for \"Show solutions\" button", - "default": "Show solution" + "default": "បង្ហាញចម្លើយážáŸ’រឹមážáŸ’រូវ" }, { "label": "Text for \"Retry\" button", - "default": "Retry" + "default": "សាកម្ážáž„ទៀáž" }, { "label": "Text for \"Check\" button", - "default": "Check" + "default": "ពិនិážáŸ’យចម្លើយ" }, { "label": "Text for \"Not filled out\" message", - "default": "Please fill in all blanks to view solution" + "default": "សូមបំពáŸáž‰áž…ន្លោះទាំងអស់ដើម្បីមើលចម្លើយážáŸ’រឹមážáŸ’រូវ" }, { "label": "Text for \"':ans' is correct\" message", - "default": "':ans' is correct" + "default": "':ans' គឺážáŸ’រឹមážáŸ’រូវ" }, { "label": "Text for \"':ans' is wrong\" message", - "default": "':ans' is wrong" + "default": "':ans' គឺមិនážáŸ’រឹមážáŸ’រូវ" }, { "label": "Text for \"Answered correctly\" message", - "default": "Answered correctly" + "default": "បានឆ្លើយážáŸ’រឹមážáŸ’រូវ" }, { "label": "Text for \"Answered incorrectly\" message", - "default": "Answered incorrectly" + "default": "បានឆ្លើយមិនážáŸ’រឹមážáŸ’រូវ" }, { "label": "Assistive technology label for solution", - "default": "Correct answer:" + "default": "ចម្លើយážáŸ’រឹមážáŸ’រូវ:" }, { "label": "Assistive technology label for input field", "description": "Use @num and @total to replace current cloze number and total cloze number", - "default": "Blank input @num of @total" + "default": "ចន្លោះទី @num ចំណោម @total" }, { "label": "Assistive technology label for saying an input has a tip tied to it", - "default": "Tip available" + "default": "មានគន្លឹះ" }, { "label": "Tip icon label", - "default": "Tip" + "default": "គន្លឹះ" }, { "label": "Behavioural settings.", @@ -129,9 +132,6 @@ { "label": "Put input fields on separate lines" }, - { - "label": "Disable image zooming for question image" - }, { "label": "Show confirmation dialog on \"Check\"", "description": "This options is not compatible with the \"Automatically check answers after input\" option" @@ -150,19 +150,19 @@ "fields": [ { "label": "Header text", - "default": "Finish ?" + "default": "បញ្ចប់ ?" }, { "label": "Body text", - "default": "Are you sure you wish to finish ?" + "default": "ážáž¾áž¢áŸ’នកពិážáž‡áž¶áž…ង់បញ្ចប់មែនទ០?" }, { "label": "Cancel button label", - "default": "Cancel" + "default": "បោះបង់" }, { "label": "Confirm button label", - "default": "Finish" + "default": "បញ្ចប់" } ] }, @@ -171,25 +171,41 @@ "fields": [ { "label": "Header text", - "default": "Retry ?" + "default": "សាកម្ážáž„ទៀហ?" }, { "label": "Body text", - "default": "Are you sure you wish to retry ?" + "default": "ážáž¾áž¢áŸ’នកពិážáž‡áž¶áž…ង់សាកម្ážáž„ទៀážáž˜áŸ‚នទ០?" }, { "label": "Cancel button label", - "default": "Cancel" + "default": "បោះបង់" }, { "label": "Confirm button label", - "default": "Confirm" + "default": "យល់ព្រម" } ] }, { "label": "Textual representation of the score bar for those using a readspeaker", - "default": "You got :num out of :total points" + "default": "អ្នកទទួលបានពិន្ទុ :num លើ :total" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" } ] -} +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/ko.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/ko.json new file mode 100644 index 0000000000000000000000000000000000000000..695b92c7e08a19f7ebcce246e9f8c810a2d38645 --- /dev/null +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/ko.json @@ -0,0 +1,211 @@ +{ + "semantics": [ + { + "label": "미디어", + "fields": [ + { + "label": "ìœ í˜•", + "description": "(ì„ íƒì‚¬í•) 질문 ìœ„ì— í‘œì‹œí• ë¯¸ë””ì–´." + }, + { + "label": "ì´ë¯¸ì§€ 확대/축소 사용 안 함" + } + ] + }, + { + "label": "ê³¼ì œ 설명", + "default": "누ë½ëœ 단어 ìž…ë ¥", + "description": "사용ìžì—게 ì´ ê³¼ì œì— ëŒ€í•œ 답변 ë°©ë²•ì„ ì•Œë ¤ì£¼ëŠ” 안내서." + }, + { + "label": "í…스트 블ë¡", + "entity": "í…스트 블ë¡", + "field": { + "label": "í…스트 줄", + "placeholder": "*노르웨ì´*ì˜ ìˆ˜ë„는 오슬로ì´ë‹¤.", + "description": "", + "important": { + "description": "<ul><li>빈 ì¹¸ì€ ì •í™•í•œ 단어/구문 ì•žë’¤ì— ë³„í‘œ(*)로 추가ëœë‹¤. </li><li>가능한 다른 ë‹µë³€ì€ ìŠ¬ëž˜ì‹œ(/)로 구분한다.</li><li>íŒ ì•žì— ì½œë¡ (:)ì„ ì‚¬ìš©í•˜ì—¬ í…스트 íŒì„ ì¶”ê°€í• ìˆ˜ 있다.</li></ul>", + "example": "H5P 컨í…ì¸ ëŠ” *브ë¼ìš°ì €/웹브ë¼ìš°ì €:ë§¤ì¼ ì‚¬ìš©í•˜ëŠ” 것*ì„ ì‚¬ìš©í•˜ì—¬ íŽ¸ì§‘í• ìˆ˜ 있ìŒ." + } + } + }, + { + "label": "ì „ë°˜ì ì¸ í”¼ë“œë°±", + "fields": [ + { + "widgets": [ + { + "label": "기본값" + } + ], + "label": "ì 수 ë²”ìœ„ì— ëŒ€í•œ ì‚¬ìš©ìž í”¼ë“œë°± ì •ì˜", + "description": "\"Add range\" ë²„íŠ¼ì„ í´ë¦í•˜ì—¬ 필요한 ë§Œí¼ ë²”ìœ„ë¥¼ 추가하ì‹ì‹œì˜¤. 예: 0-20% ë‚®ì€ ì 수, 21-91% í‰ê· ì 수, 91-100% ë†’ì€ ì 수!", + "entity": "범위", + "field": { + "fields": [ + { + "label": "ì 수 범위" + }, + {}, + { + "label": "ì •ì˜ëœ ì 수 ë²”ìœ„ì— ëŒ€í•œ 피드백", + "placeholder": "피드백 작성" + } + ] + } + } + ] + }, + { + "label": "\"Show solutions\" (해답 보기) 버튼", + "default": "해답 보기" + }, + { + "label": "\"Retry\" (재시ë„) ë²„íŠ¼ì— ëŒ€í•œ í…스트", + "default": "재시ë„" + }, + { + "label": "\"Check\" (ì²´í¬) ë²„íŠ¼ì— ëŒ€í•œ í…스트", + "default": "ì²´í¬" + }, + { + "label": "\"Not filled out\" (빈 칸 완성 안ë¨) ë©”ì‹œì§€ì— ëŒ€í•œ í…스트", + "default": "í•´ë‹µì„ ë³´ë ¤ë©´ ë¹ˆì¹¸ì„ ëª¨ë‘ ìž…ë ¥í•˜ì‹ì‹œì˜¤" + }, + { + "label": "\"':ans' is correct\" (ì •ë‹µ) ë©”ì‹œì§€ì— ëŒ€í•œ í…스트", + "default": "':ans' (답)ì´ ì˜³ìŠµë‹ˆë‹¤." + }, + { + "label": "\"':ans' is wrong\" (오답) ë©”ì‹œì§€ì— ëŒ€í•œ í…스트", + "default": "':ans' ì€ ìž˜ëª»ëœ ë‹µìž…ë‹ˆë‹¤." + }, + { + "label": "\"Answered correctly\" (올바른 답)ì— ëŒ€í•œ 메시지 í…스트", + "default": "올바르게 답했습니다." + }, + { + "label": "\"Answered incorrectly\" (오답) ë©”ì‹œì§€ì— ëŒ€í•œ í…스트", + "default": "틀린 답입니다." + }, + { + "label": "í•´ë‹µì— ëŒ€í•œ ë³´ì¡° ê¸°ìˆ ë¼ë²¨", + "default": "ì •ë‹µ:" + }, + { + "label": "ìž…ë ¥ í•„ë“œì— ëŒ€í•œ ë³´ì¡° ê¸°ìˆ ë¼ë²¨", + "description": "@num 와 @total 를 사용하여 ì´ ë¹ˆì¹¸ 번호과 현재 빈칸 번호를 대체합니다.", + "default": "ì´ @total 중 @num 빈칸 ìž…ë ¥" + }, + { + "label": "ìž…ë ¥ê³¼ ê´€ë ¨ëœ íŒì´ ìžˆë‹¤ê³ ë§í•˜ëŠ” ë³´ì¡° ê¸°ìˆ ë¼ë²¨", + "default": "íŒ ì´ìš©ê°€ëŠ¥í•¨" + }, + { + "label": "íŒ ì•„ì´ì½˜ ë ˆì´ë¸”", + "default": "íŒ" + }, + { + "label": "학습 í–‰ë™ ê´€ë ¨ ì„¤ì •.", + "description": "ì´ ì˜µì…˜ì„ ì‚¬ìš©í•˜ë©´ 학습 ê³¼ì •ì„ ì œì–´í• ìˆ˜ 있다.", + "fields": [ + { + "label": "\"Retry\" (재시ë„) 버튼 활성화" + }, + { + "label": "\"Show solution\" (해답 ë³´ì´ê¸°) 버튼 활성화" + }, + { + "label": "\"Check\" (ì²´í¬) 버튼 활성화" + }, + { + "label": "ìž…ë ¥ 후 ìžë™ìœ¼ë¡œ 답변 확ì¸" + }, + { + "label": "ëŒ€ì†Œë¬¸ìž êµ¬ë¶„", + "description": "ì‚¬ìš©ìž ìž…ë ¥ì´ ë‹µë³€ê³¼ ì •í™•ížˆ 같아야 í•¨ì„ í™•ì¸." + }, + { + "label": "í•´ë‹µì„ ë³´ê¸° ì „ì— ëª¨ë“ ì˜ì—ì— ì‘답하ë„ë¡ ìš”êµ¬" + }, + { + "label": "ìž…ë ¥ 필드를 별ë„ì˜ ì¤„ì— ë†“ìœ¼ì‹ì‹œì˜¤" + }, + { + "label": "\"Check\"ì— í™•ì¸ ëŒ€í™”ìƒìž 표시", + "description": "ì´ ì˜µì…˜ì€ \"Automatically check answers after input\" (ìž…ë ¥ 후 ìžë™ 답 ì²´í¬) 옵션과 호환ë˜ì§€ 않ìŒ" + }, + { + "label": "\"Retry\"ì— í™•ì¸ ëŒ€í™” ìƒìž 표시" + }, + { + "label": "사소한 ì² ìž ì˜¤ë¥˜ 허용", + "description": "í™œì„±í™”ëœ ê²½ìš°, ëŒ€ë‹µì€ ì‚¬ì†Œí•œ ì² ìž ì˜¤ë¥˜(3-9ìž: ì² ìž ì˜¤ë¥˜ 1ìž, 9ìž ì´ìƒ: ì² ìž ì˜¤ë¥˜ 2ìž)와 함께 올바른 것으로 간주ëœë‹¤." + } + ] + }, + { + "label": "í™•ì¸ ëŒ€í™” ì°½ ì²´í¬", + "fields": [ + { + "label": "ë¨¸ë¦¿ë§ í…스트", + "default": "완료?" + }, + { + "label": "본문 í…스트", + "default": "ì •ë§ ëë‚´ì‹œê² ìŠµë‹ˆê¹Œ?" + }, + { + "label": "취소 버튼 ë ˆì´ë¸”", + "default": "취소" + }, + { + "label": "í™•ì¸ ë²„íŠ¼ ë ˆì´ë¸”", + "default": "완료" + } + ] + }, + { + "label": "ìž¬ì‹œë„ í™•ì¸ ì°½", + "fields": [ + { + "label": "ë¨¸ë¦¿ë§ í…스트", + "default": "재시ë„?" + }, + { + "label": "본문 í…스트", + "default": "다시 시ë„í•˜ì‹œê² ìŠµë‹ˆê¹Œ?" + }, + { + "label": "취소 버튼 ë ˆì´ë¸”", + "default": "취소" + }, + { + "label": "í™•ì¸ ë²„íŠ¼ ë ˆì´ë¸”", + "default": "확ì¸" + } + ] + }, + { + "label": "ìžë™ 문장 ì½ì–´ì£¼ê¸°ë¥¼ 사용하는 ì‚¬ëžŒë“¤ì„ ìœ„í•œ ì 수 ë§‰ëŒ€ì˜ í…스트 표현", + "default": "ì´ì :total 중 :num íšë“하였습니다." + }, + { + "label": "\"Check\" ë²„íŠ¼ì— ëŒ€í•œ ë³´ì¡° ê¸°ìˆ ì„¤ëª…", + "default": "ì •ë‹µì„ í™•ì¸í•˜ì„¸ìš”. ë‹µë³€ì€ ì •ë‹µ, 오답, í˜¹ì€ ë¯¸ë‹µë³€ìœ¼ë¡œ 표기ë 것입니다." + }, + { + "label": "\"Show Solution\" ë²„íŠ¼ì— ëŒ€í•œ ë³´ì¡° ê¸°ìˆ ì„¤ëª…", + "default": "해답 표시. 올바른 í•´ë‹µì´ í‘œê¸°ë 것입니다." + }, + { + "label": "\"Retry\" ë²„íŠ¼ì— ëŒ€í•œ ë³´ì¡° ê¸°ìˆ ì„¤ëª…", + "default": "재시ë„하세요. ëª¨ë“ ë‹µë³€ì„ ì´ˆê¸°í™”í•˜ê³ ë‹¤ì‹œ 시ë„하세요." + }, + { + "label": "ê³¼ì œ ì‹œìž‘ì— ëŒ€í•œ ë³´ì¡° ê¸°ìˆ ì„¤ëª…", + "default": "í™•ì¸ ëª¨ë“œ" + } + ] +} diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/nb.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/nb.json similarity index 88% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/nb.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/nb.json index 5e8c1a867a446fb7a269b9a34096b0f527570131..ef8392e38973d8abaf3dc6b73aa022fd080455b3 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/nb.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/nb.json @@ -6,6 +6,9 @@ { "label": "Type", "description": "Et valgfritt multimediaelement som skal vises over spørsmÃ¥let." + }, + { + "label": "SlÃ¥ av bilde zooming" } ] }, @@ -129,9 +132,6 @@ { "label": "Sett inntastingsfelt pÃ¥ egne linjer" }, - { - "label": "SlÃ¥ av bilde zooming." - }, { "label": "SlÃ¥ pÃ¥ bruker-bekreftelse for \"Fasit\"", "description": "Denne innstillingen er ikke forenbar med \"Gi tilbakemelding med en gang brukeren har avgitt svar\" alternativet." @@ -150,7 +150,7 @@ "fields": [ { "label": "Tittel", - "default": "Feridg ?" + "default": "Ferdig ?" }, { "label": "Tekst", @@ -190,6 +190,22 @@ { "label": "Textual representation of the score bar for those using a readspeaker", "default": "You got :num out of :total points" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" } ] -} +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/nl.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/nl.json similarity index 90% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/nl.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/nl.json index f58e1b2c1865339d002b20dda687ab06d23e2ff5..230b7ab6bb0cee92cff8fc345cfdfe98d8b0af33 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/nl.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/nl.json @@ -6,6 +6,9 @@ { "label": "Type", "description": "Optionele media, die boven de vragen worden getoond" + }, + { + "label": "Deactiveer het zoomen van de afbeelding tijdens het tonen van de opgave" } ] }, @@ -129,9 +132,6 @@ { "label": "Zet de invoervelden op afzonderlijke regels" }, - { - "label": "Deactiveer het zoomen van de afbeelding tijdens het tonen van de opgave" - }, { "label": "Toon bevestigingsvenster bij \"Controleer\"", "description": "Deze optie is niet verenigbaar met de \"Controleer automatisch de antwoorden na invoer\" optie" @@ -190,6 +190,22 @@ { "label": "Tekstuele weergave van de scorebalk voor diegenen die gebruik maken van een readspeaker", "default": "Je hebt :num van de :total punten" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" } ] -} +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/nn.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/nn.json similarity index 86% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/nn.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/nn.json index 8e9c7ad747a0fbc8c1aa3884d13bc1ac7072375a..72c9dfe0de6d3184e432327f1262a031d3353f74 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/nn.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/nn.json @@ -6,6 +6,9 @@ { "label": "Type", "description": "Eit valfritt multimediaelement som sjÃ¥ast over spørsmÃ¥let." + }, + { + "label": "SlÃ¥ av bilete zooming" } ] }, @@ -97,7 +100,7 @@ }, { "label": "Merkelapp for Ã¥ fortelle at et inntastingsfelt har et tips knyttet til seg", - "default": "Tips tilgjengelig" + "default": "Tips tilgjengeleg" }, { "label": "Merkelapp for tips ikon", @@ -117,7 +120,7 @@ "label": "Enable \"Check\" button" }, { - "label": "Gi tilbakemelding med en gang brukeren har avgitt svar" + "label": "Gi tilbakemelding med ein gong brukaren har svart" }, { "label": "Skil mellom store og smÃ¥ bokstavar", @@ -129,9 +132,6 @@ { "label": "Sett inntastingsfelt pÃ¥ egne linjer" }, - { - "label": "SlÃ¥ av bilete zooming." - }, { "label": "SlÃ¥ pÃ¥ bruker-bekreftelse for \"Fasit\"", "description": "Denne innstillingen er ikke forenbar med \"Gi tilbakemelding med en gang brukeren har avgitt svar\" alternativet." @@ -150,7 +150,7 @@ "fields": [ { "label": "Tittel", - "default": "Feridg ?" + "default": "Ferdig ?" }, { "label": "Tekst", @@ -190,6 +190,22 @@ { "label": "Textual representation of the score bar for those using a readspeaker", "default": "You got :num out of :total points" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" } ] -} +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/pl.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/pl.json new file mode 100644 index 0000000000000000000000000000000000000000..a0a1a3fb5864f322c38507035c427ee36b2324a2 --- /dev/null +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/pl.json @@ -0,0 +1,211 @@ +{ + "semantics": [ + { + "label": "Media", + "fields": [ + { + "label": "Typ", + "description": "Obraz do wyÅ›wietlenia nad pytaniem (opcjonalny)." + }, + { + "label": "Zablokuj powiÄ™kszanie obrazu" + } + ] + }, + { + "label": "WstÄ™p", + "default": "UzupeÅ‚nij brakujÄ…ce wyrażenia", + "description": "ObjaÅ›nienie dla użytkownika, co należy zrobić w zadaniu." + }, + { + "label": "Fragmenty zadania", + "entity": "fragment", + "field": { + "label": "Fragment zadania", + "placeholder": "StolicÄ… Polski jest *Warszawa*.", + "description": "", + "important": { + "description": "<ul><li>Pola do wypeÅ‚nienia wstawia siÄ™ wpisujÄ…c gwiazdkÄ™ (*) na poczÄ…tku i na koÅ„cu poprawnej odpowiedzi.</li><li>Alternatywne poprawne odpowiedzi należy rozdzielić ukoÅ›nikiem (/).</li><li>WewnÄ…trz pola można również dodać podpowiedź, poprzedzonÄ… dwukropkiem (:).</li></ul>", + "example": "Zasób H5P można edytować w *przeglÄ…darce/przeglÄ…darka:Aplikacja, której używasz codziennie*." + } + } + }, + { + "label": "Podsumowanie odpowiedzi", + "fields": [ + { + "widgets": [ + { + "label": "DomyÅ›lne" + } + ], + "label": "OkreÅ›l wÅ‚asne kryteria oceny dla wybranych zakresów poprawnych odpowiedzi", + "description": "KlikajÄ…c przycisk \"Dodaj zakres\" możesz dodać tyle zakresów, ile potrzebujesz. PrzykÅ‚ad: 0-20% SÅ‚aby wynik, 21-91% PrzeciÄ™tny wynik, 91-100% Bardzo dobry wynik!", + "entity": "zakres", + "field": { + "fields": [ + { + "label": "Zakres" + }, + {}, + { + "label": "Komunikat dla danego zakresu", + "placeholder": "Wprowadź komunikat" + } + ] + } + } + ] + }, + { + "label": "Etykieta przycisku pokazywania poprawnej odpowiedzi", + "default": "Pokaż odpowiedź" + }, + { + "label": "Etykieta przycisku ponowienia próby odpowiedzi", + "default": "Powtórz" + }, + { + "label": "Etykieta przycisku sprawdzania odpowiedzi", + "default": "Sprawdź" + }, + { + "label": "Komunikat o niewypeÅ‚nionych polach", + "default": "WypeÅ‚nij wszystkie pola, zanim zobaczysz rozwiÄ…zanie." + }, + { + "label": "Komunikat o poprawnej odpowiedzi", + "default": "':ans' to poprawna odpowiedź" + }, + { + "label": "Komunikat o błędnej odpowiedzi", + "default": "':ans' to błędna odpowiedź" + }, + { + "label": "Komunikat o liczbie poprawnych odpowiedzi", + "default": "Poprawne odpowiedzi" + }, + { + "label": "Komunikat o liczbie błędnych odpowiedzi", + "default": "Błędne odpowiedzi" + }, + { + "label": "Opis pola poprawnej odpowiedzi dla czytników ekranu", + "default": "Poprawna odpowiedź:" + }, + { + "label": "Opis pola wprowadzania dla czytników ekranu", + "description": "Wstaw @num oraz @total jako numer aktualnego pola wprowadzania i liczbÄ™ wszystkich pól wprowadzania", + "default": "Pole wprowadzania @num z @total" + }, + { + "label": "Informacja o dostÄ™pnoÅ›ci podpowiedzi dla czytników ekranu", + "default": "DostÄ™pna podpowiedź" + }, + { + "label": "Etykieta ikony podpowiedzi", + "default": "Podpowiedź" + }, + { + "label": "Ustawienia zachowania", + "description": "Te opcje pozwalajÄ… okreÅ›lić, jak ma przebiegać zadanie.", + "fields": [ + { + "label": "WyÅ›wietl przycisk \"Powtórz\"" + }, + { + "label": "WyÅ›wietl przycisk \"Pokaż odpowiedź\"" + }, + { + "label": "WyÅ›wietl przycisk \"Sprawdź\"" + }, + { + "label": "Automatycznie sprawdzaj wynik po wpisaniu" + }, + { + "label": "UwzglÄ™dniaj wielkość liter", + "description": "JeÅ›li włączysz tÄ™ opcjÄ™, odpowiedź bÄ™dzie musiaÅ‚a być wpisana identycznie ze wzorem." + }, + { + "label": "Wymagaj wypeÅ‚nienia wszystkich pól przed pokazaniem odpowiedzi" + }, + { + "label": "Poszczególne pola wprowadzania w osobnych liniach" + }, + { + "label": "Żądaj potwierdzenia akcji \"Sprawdź\"", + "description": "Ta opcja nie może być włączona razem z opcjÄ… \"Automatycznie sprawdzaj wynik po wpisaniu\"" + }, + { + "label": "Żądaj potwierdzenia akcji \"Powtórz\"" + }, + { + "label": "Akceptuj literówki", + "description": "Włączenie tej opcji spowoduje zaliczanie odpowiedzi minimalnie różniÄ…cych siÄ™ od wzoru (3-9 znaków: 1 literówka, wiÄ™cej niż 9 znaków: 2 literówki)" + } + ] + }, + { + "label": "Żądanie sprawdzenia wyniku", + "fields": [ + { + "label": "Nagłówek", + "default": "Sprawdzić?" + }, + { + "label": "Treść", + "default": "Czy na pewno sprawdzić swoje odpowiedzi i zakoÅ„czyć to zadanie?" + }, + { + "label": "Etykieta przycisku anulowania", + "default": "Anuluj" + }, + { + "label": "Etykieta przycisku potwierdzenia", + "default": "Sprawdź" + } + ] + }, + { + "label": "Żądanie powtórzenia testu", + "fields": [ + { + "label": "Nagłówek", + "default": "Powtórzyć?" + }, + { + "label": "Treść", + "default": "Czy na pewno chcesz powtórzyć to zadanie?" + }, + { + "label": "Etykieta przycisku anulowania", + "default": "Anuluj" + }, + { + "label": "Etykieta przycisku potwierdzenia", + "default": "Powtórz" + } + ] + }, + { + "label": "Tekstowy odpowiednik paska wyniku dla czytników ekranu", + "default": "Masz :num z :total punktów" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" + } + ] +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/pt-br.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/pt-br.json similarity index 90% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/pt-br.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/pt-br.json index 02f9cb685f720df84971a1b686bb1f53c46f51a5..cea1f80c119242ef9058f0803d7d872c2736c486 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/pt-br.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/pt-br.json @@ -6,6 +6,9 @@ { "label": "Tipo", "description": "MÃdia opcional exibida acima da questão." + }, + { + "label": "Desativar zoom para imagem da questão" } ] }, @@ -129,9 +132,6 @@ { "label": "Colocar campos preenchÃveis em linhas diferentes" }, - { - "label": "Desativar zoom para imagem da questão" - }, { "label": "Exibir diálogo de confirmação em \"Verificar resposta\"", "description": "Estas opções não são compatÃveis com a opção \"Verificar resposta automaticamente após o preenchimento\"" @@ -190,6 +190,22 @@ { "label": "Representação textual da barra de pontuação para aqueles que usam leitores de tela", "default": "Você marcou :num de :total pontos" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" } ] -} +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/pt.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/pt.json similarity index 90% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/pt.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/pt.json index 38b6050bb936c2bb6d2dd3cf6e133d871b20976d..3ffb4251e6a9ad17d01cf412a764510ade8838a6 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/pt.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/pt.json @@ -6,6 +6,9 @@ { "label": "Tipo", "description": "Conteúdo multimédia opcional para mostrar acima da questão." + }, + { + "label": "Desativar ampliação de imagem para a imagem associada à questão" } ] }, @@ -129,9 +132,6 @@ { "label": "Coloque os campos de texto em linhas separadas" }, - { - "label": "Desativar ampliação de imagem para a imagem associada à questão" - }, { "label": "Mostrar caixa de diálogo de confirmação quando clicar em \"Verificar\"", "description": "Estas opções não são compatÃveis com a opção \"Verificar automaticamente as respostas após a introdução\"" @@ -190,6 +190,22 @@ { "label": "Representação textual da barra de resultados para utilizadores de leitor de ecrã", "default": "Conseguiu :num pontos de um total de :total" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" } ] -} +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/ro.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/ro.json similarity index 88% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/ro.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/ro.json index eeb1c37342dd564b925a3bd02275843d79e8792a..21166c6516afcf51bf40327ec0687d410e076a7c 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/ro.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/ro.json @@ -6,6 +6,9 @@ { "label": "Type", "description": "Optional media to display above the question." + }, + { + "label": "Disable image zooming" } ] }, @@ -129,9 +132,6 @@ { "label": "Put input fields on separate lines" }, - { - "label": "Disable image zooming for question image" - }, { "label": "Show confirmation dialog on \"Check\"", "description": "This options is not compatible with the \"Automatically check answers after input\" option" @@ -190,6 +190,22 @@ { "label": "Textual representation of the score bar for those using a readspeaker", "default": "You got :num out of :total points" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" } ] -} +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/ru.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/ru.json new file mode 100644 index 0000000000000000000000000000000000000000..10cd18be75b4f6d9ba9f2ee5a037ddbd401ae4a4 --- /dev/null +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/ru.json @@ -0,0 +1,211 @@ +{ + "semantics": [ + { + "label": "Медиа", + "fields": [ + { + "label": "Тип", + "description": "Дополнительное медиа Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð½Ð°Ð´ вопроÑом." + }, + { + "label": "Отключить изменение маÑштаба изображениÑ" + } + ] + }, + { + "label": "ОпиÑание задачи", + "default": "Заполните пропущенные Ñлова", + "description": "РуководÑтво, раÑÑказывающее пользователю, как ответить на Ñто задание." + }, + { + "label": "ТекÑтовые блоки", + "entity": "текÑтовый блок", + "field": { + "label": "Строка текÑта", + "placeholder": "Oslo is the capital of *Norway*.", + "description": "", + "important": { + "description": "<ul><li>ÐŸÐ¾Ð»Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÑÑŽÑ‚ÑÑ Ñо звездочкой (*) Ñпереди и позади правильного Ñлова/фразы.</li><li>Дополнительные варианты ответов отделÑÑŽÑ‚ÑÑ ÐºÐ¾Ñой чертой (/).</li><li>Ð’Ñ‹ можете добавить текÑтовую подÑказку, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸Ðµ (:) перед подÑказкой.</li></ul>", + "example": "H5P content may be edited using a *browser/web-browser:Something you use every day*." + } + } + }, + { + "label": "Общий отзыв", + "fields": [ + { + "widgets": [ + { + "label": "По умолчанию" + } + ], + "label": "Определение пользовательÑких отзывов Ð´Ð»Ñ Ð»ÑŽÐ±Ð¾Ð³Ð¾ диапазона оценок", + "description": "Ðажмите на кнопку \"Добавить диапазон\" чтобы добавить Ñтолько диапазонов, Ñколько вам нужно. Ðапример: 0-20% ÐŸÐ»Ð¾Ñ…Ð°Ñ Ð¾Ñ†ÐµÐ½ÐºÐ°, 21-91% СреднÑÑ Ð¾Ñ†ÐµÐ½ÐºÐ°, 91-100% ÐžÑ‚Ð»Ð¸Ñ‡Ð½Ð°Ñ Ð¾Ñ†ÐµÐ½ÐºÐ°!", + "entity": "диапазон", + "field": { + "fields": [ + { + "label": "Диапазон оценок" + }, + {}, + { + "label": "ÐžÐ±Ñ€Ð°Ñ‚Ð½Ð°Ñ ÑвÑзь Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð½Ð¾Ð³Ð¾ диапазона оценок", + "placeholder": "Заполните отзыв" + } + ] + } + } + ] + }, + { + "label": "ТекÑÑ‚ Ð´Ð»Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ \"Показать решениÑ\"", + "default": "Показать решениÑ" + }, + { + "label": "ТекÑÑ‚ Ð´Ð»Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ \"Повторить\"", + "default": "Повторить" + }, + { + "label": "ТекÑÑ‚ Ð´Ð»Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ \"Проверить\"", + "default": "Проверить" + }, + { + "label": "ТекÑÑ‚ Ð´Ð»Ñ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ \"Ðе заполнено\"", + "default": "ПожалуйÑта, заполните вÑе Ð¿Ð¾Ð»Ñ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра решениÑ" + }, + { + "label": "ТекÑÑ‚ Ð´Ð»Ñ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ \"':ans' правильный\"", + "default": "':ans' правильный" + }, + { + "label": "ТекÑÑ‚ Ð´Ð»Ñ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ \"':ans' неправильный\"", + "default": "':ans' неправильный" + }, + { + "label": "ТекÑÑ‚ Ð´Ð»Ñ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ \"Ответили правильно\" message", + "default": "Ответили правильно" + }, + { + "label": "ТекÑÑ‚ Ð´Ð»Ñ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ \"Ответили неправильно\" message", + "default": "Ответили неправильно" + }, + { + "label": "Ð’ÑÐ¿Ð¾Ð¼Ð¾Ð³Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð½Ð°Ð´Ð¿Ð¸ÑÑŒ Ð´Ð»Ñ Ñ€ÐµÑˆÐµÐ½Ð¸Ñ", + "default": "Правильный ответ:" + }, + { + "label": "Ð’ÑÐ¿Ð¾Ð¼Ð¾Ð³Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð½Ð°Ð´Ð¿Ð¸ÑÑŒ Ð´Ð»Ñ Ð¿Ð¾Ð»Ñ Ð²Ð²Ð¾Ð´Ð°", + "description": "ИÑпользуйте @num и @total чтобы заменить текущий номер пропуÑка и общее количеÑтво пропуÑков", + "default": "Заполнено пропуÑков @num из @total" + }, + { + "label": "Assistive technology label for saying an input has a tip tied to it", + "default": "ДоÑтупна подÑказка" + }, + { + "label": "ÐадпиÑÑŒ иконки подÑказки", + "default": "ПодÑказка" + }, + { + "label": "ÐаÑтройки поведениÑ.", + "description": "Ðти параметры позволÑÑ‚ вам контролировать поведение заданиÑ.", + "fields": [ + { + "label": "Включить кнопку \"Повторить\"" + }, + { + "label": "Включить кнопку \"Показать решение\"" + }, + { + "label": "Включить кнопку \"Проверить\"" + }, + { + "label": "ÐвтоматичеÑки проверÑть ответы поÑле ввода" + }, + { + "label": "С учетом региÑтра", + "description": "УбедитеÑÑŒ, что пользовательÑкий ввод должен быть точно таким же, как и ответ." + }, + { + "label": "Требовать заполнить вÑе полÑ, прежде чем можно будет поÑмотреть решение" + }, + { + "label": "Помещать Ð¿Ð¾Ð»Ñ Ð²Ð²Ð¾Ð´Ð° в отдельные Ñтроки" + }, + { + "label": "Показать диалог Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð½Ð° \"Проверить\"", + "description": "Ðти параметры не ÑовмеÑтимы Ñ Ð¾Ð¿Ñ†Ð¸ÐµÐ¹ \"ÐвтоматичеÑки проверÑть ответы поÑле ввода\"" + }, + { + "label": "Показать диалог Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð½Ð° \"Повторить\"" + }, + { + "label": "ПозволÑть незначительные орфографичеÑкие ошибки", + "description": "ЕÑли активирован, ответ также будет ÑчитатьÑÑ Ð¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ Ñ Ð½ÐµÐ·Ð½Ð°Ñ‡Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¼Ð¸ орфографичеÑкими ошибками (3-9 знаков: 1 орфографичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°, более 9 знаков: 2 орфографичеÑкие ошибки)" + } + ] + }, + { + "label": "Диалог Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸", + "fields": [ + { + "label": "ТекÑÑ‚ заголовка", + "default": "Завершить ?" + }, + { + "label": "ОÑновной текÑÑ‚", + "default": "Ð’Ñ‹ уверены, что хотите завершить ?" + }, + { + "label": "ÐадпиÑÑŒ кнопки отмены", + "default": "Отменить" + }, + { + "label": "ÐадпиÑÑŒ кнопки подтверждениÑ", + "default": "Завершить" + } + ] + }, + { + "label": "Диалог Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð°", + "fields": [ + { + "label": "ТекÑÑ‚ заголовка", + "default": "Повторить ?" + }, + { + "label": "ОÑновной текÑÑ‚", + "default": "Ð’Ñ‹ уверены, что хотите повторить ?" + }, + { + "label": "ÐадпиÑÑŒ кнопки отмены", + "default": "Отменить" + }, + { + "label": "ÐадпиÑÑŒ кнопки подтверждениÑ", + "default": "Подтвердить" + } + ] + }, + { + "label": "ТекÑтовое предÑтавление шкалы очков Ð´Ð»Ñ Ñ‚ÐµÑ…, кто иÑпользует озвучку текÑта", + "default": "Ð’Ñ‹ получили :num из :total баллов" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" + } + ] +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/sl.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/sl.json new file mode 100644 index 0000000000000000000000000000000000000000..64a093248870f042b5234bc3a34a6f2585e8bf01 --- /dev/null +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/sl.json @@ -0,0 +1,211 @@ +{ + "semantics": [ + { + "label": "Mediji", + "fields": [ + { + "label": "Tip", + "description": "Neobvezna nastavitev dodatnega medija za prikaz nad vpraÅ¡anjem." + }, + { + "label": "OnemogoÄi poveÄavo slike" + } + ] + }, + { + "label": "Navodilo udeležencem", + "default": "Vnesi manjkajoÄe besede", + "description": "Opis reÅ¡evanja zadane naloge." + }, + { + "label": "Odstavek z besedilom", + "entity": "odstavek", + "field": { + "label": "Besedilo naloge", + "placeholder": "Oslo je glavno mesto *NorveÅ¡ke*.", + "description": "", + "important": { + "description": "<ul><li>Prazno polje se oznaÄi z zvezdico (*) pred in za besedo/besedno zvezo.</li><li>Nadomestni odgovor se loÄi s poÅ¡evnico (/).</li><li>Namig za udeležence se od odgovora loÄi z dvopiÄjem (:).</li></ul>", + "example": "Za brskanje po spletu lahko uporabimo *brskalnik/spletni brskalnik:TakÅ¡en program je na primer Chrome*." + } + } + }, + { + "label": "SploÅ¡na povratna informacija", + "fields": [ + { + "widgets": [ + { + "label": "Privzeto" + } + ], + "label": "DoloÄi loÄeno povratno informacijo za vsak razpon rezultatov", + "description": "Kliknite gumb \"Dodaj razpon\" za dodajanje dodatnih razponov. Primer: 0-20 % Slab rezultat, 21-91 % PovpreÄen rezultat, 91-100 % OdliÄen rezultat!", + "entity": "razpon", + "field": { + "fields": [ + { + "label": "Razpon rezultatov" + }, + {}, + { + "label": "Povratna informacija za definiran razpon rezultatov", + "placeholder": "Vnesite povratno informacijo" + } + ] + } + } + ] + }, + { + "label": "Besedilo za gumb \"Prikaži reÅ¡itev\"", + "default": "Prikaži reÅ¡itev" + }, + { + "label": "Besedilo za gumb \"Poskusi ponovno\"", + "default": "Poskusi ponovno" + }, + { + "label": "Besedilo za gumb \"Preveri\"", + "default": "Preveri" + }, + { + "label": "Besedilo za manjkajoÄ odgovor", + "default": "Pred ogledom reÅ¡itve je potrebno izpolniti vsa prazna polja" + }, + { + "label": "Besedilo za sporoÄilo \"... je pravilen\" (:ans je spremenljivka)", + "default": "':ans' je pravilen" + }, + { + "label": "Besedilo za sporoÄilo \"... ni pravilen\" (:ans je spremenljivka)", + "default": "':ans' ni pravilen" + }, + { + "label": "Besedilo za pravilni odgovor", + "default": "Pravilno!" + }, + { + "label": "Besedilo za nepravilni odgovor", + "default": "Nepravilno!" + }, + { + "label": "Besedilo, ki ga bralnik zaslona uporabi za izražanje reÅ¡itev naloge", + "default": "Pravilni odgovori:" + }, + { + "label": "Besedilo, ki ga bralnik zaslona uporabi za vnosno polje", + "description": "Spremenljivki za oznako vnosnih polj sta @num in @total.", + "default": "Vnosno polje @num od @total" + }, + { + "label": "Besedilo, ki ga bralnik zaslona uporabi za izražanje dosegljivosti namiga", + "default": "Namig je na voljo" + }, + { + "label": "Besedilo za ikono namiga", + "default": "Namig" + }, + { + "label": "Nastavitve interakcije", + "description": "Nastavitve omogoÄajo nadzor nad interakcijo aktivnosti za udeležence.", + "fields": [ + { + "label": "OmogoÄi gumb \"Poskusi ponovno\"" + }, + { + "label": "OmogoÄi gumb \"Prikaži reÅ¡itev\"" + }, + { + "label": "OmogoÄi gumb \"Preveri\"" + }, + { + "label": "Sprotno preverjaj vnesene odgovore" + }, + { + "label": "LoÄi velike/male Ärke", + "description": "Razlikuje med zapisom v velikih ali malih tiskanih Ärkah." + }, + { + "label": "Pred ogledom reÅ¡itve zahtevaj vse odgovore" + }, + { + "label": "Vnosna polja zapiÅ¡i v loÄenih vrsticah" + }, + { + "label": "Pred zakljuÄkom aktivnosti zahtevaj potrditev", + "description": "Možnost se izkljuÄuje z izbiro \"Sprotno preverjaj vnesene odgovore\"." + }, + { + "label": "Pred ponovitvijo aktivnosti zahtevaj potrditev" + }, + { + "label": "Toleriraj manjÅ¡e napake", + "description": "Nastavitev tolerance in upoÅ¡tevanje pravilnosti odgovora kljub manjÅ¡im napakam (npr. 1 napaÄen znak v besedah med 3 do 9 znaki, 2 napaÄna znaka v besedah dolgih nad 9 znakov)." + } + ] + }, + { + "label": "Pogovorno okno pred oddajo odgovora", + "fields": [ + { + "label": "Naslov", + "default": "ZakljuÄi?" + }, + { + "label": "Besedilo telesa pogovornega okna", + "default": "Ste prepriÄani, da želite zakljuÄiti?" + }, + { + "label": "Besedilo gumba PrekliÄi", + "default": "PrekliÄi" + }, + { + "label": "Besedilo gumba Potrdi", + "default": "Potrdi" + } + ] + }, + { + "label": "Pogovorno okno pred ponovitvijo aktivnosti", + "fields": [ + { + "label": "Naslov", + "default": "Poskusi ponovno?" + }, + { + "label": "Besedilo telesa pogovornega okna", + "default": "Ste prepriÄani, da želite poskusiti ponovno?" + }, + { + "label": "Besedilo gumba PrekliÄi", + "default": "PrekliÄi" + }, + { + "label": "Besedilo gumba Potrdi", + "default": "Potrdi" + } + ] + }, + { + "label": "Besedilo, ki ga bralnik zaslona uporabi za izražanje napredka", + "default": "Napredek :num od :total" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" + } + ] +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/ko.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/sma.json similarity index 88% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/ko.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/sma.json index eeb1c37342dd564b925a3bd02275843d79e8792a..21166c6516afcf51bf40327ec0687d410e076a7c 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/ko.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/sma.json @@ -6,6 +6,9 @@ { "label": "Type", "description": "Optional media to display above the question." + }, + { + "label": "Disable image zooming" } ] }, @@ -129,9 +132,6 @@ { "label": "Put input fields on separate lines" }, - { - "label": "Disable image zooming for question image" - }, { "label": "Show confirmation dialog on \"Check\"", "description": "This options is not compatible with the \"Automatically check answers after input\" option" @@ -190,6 +190,22 @@ { "label": "Textual representation of the score bar for those using a readspeaker", "default": "You got :num out of :total points" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" } ] -} +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/cs.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/sme.json similarity index 88% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/cs.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/sme.json index eeb1c37342dd564b925a3bd02275843d79e8792a..21166c6516afcf51bf40327ec0687d410e076a7c 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/cs.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/sme.json @@ -6,6 +6,9 @@ { "label": "Type", "description": "Optional media to display above the question." + }, + { + "label": "Disable image zooming" } ] }, @@ -129,9 +132,6 @@ { "label": "Put input fields on separate lines" }, - { - "label": "Disable image zooming for question image" - }, { "label": "Show confirmation dialog on \"Check\"", "description": "This options is not compatible with the \"Automatically check answers after input\" option" @@ -190,6 +190,22 @@ { "label": "Textual representation of the score bar for those using a readspeaker", "default": "You got :num out of :total points" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" } ] -} +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/he.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/smj.json similarity index 88% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/he.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/smj.json index eeb1c37342dd564b925a3bd02275843d79e8792a..21166c6516afcf51bf40327ec0687d410e076a7c 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/he.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/smj.json @@ -6,6 +6,9 @@ { "label": "Type", "description": "Optional media to display above the question." + }, + { + "label": "Disable image zooming" } ] }, @@ -129,9 +132,6 @@ { "label": "Put input fields on separate lines" }, - { - "label": "Disable image zooming for question image" - }, { "label": "Show confirmation dialog on \"Check\"", "description": "This options is not compatible with the \"Automatically check answers after input\" option" @@ -190,6 +190,22 @@ { "label": "Textual representation of the score bar for those using a readspeaker", "default": "You got :num out of :total points" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" } ] -} +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/sr.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/sr.json similarity index 88% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/sr.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/sr.json index eeb1c37342dd564b925a3bd02275843d79e8792a..21166c6516afcf51bf40327ec0687d410e076a7c 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/sr.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/sr.json @@ -6,6 +6,9 @@ { "label": "Type", "description": "Optional media to display above the question." + }, + { + "label": "Disable image zooming" } ] }, @@ -129,9 +132,6 @@ { "label": "Put input fields on separate lines" }, - { - "label": "Disable image zooming for question image" - }, { "label": "Show confirmation dialog on \"Check\"", "description": "This options is not compatible with the \"Automatically check answers after input\" option" @@ -190,6 +190,22 @@ { "label": "Textual representation of the score bar for those using a readspeaker", "default": "You got :num out of :total points" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" } ] -} +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/sv.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/sv.json similarity index 88% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/sv.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/sv.json index eeb1c37342dd564b925a3bd02275843d79e8792a..21166c6516afcf51bf40327ec0687d410e076a7c 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/sv.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/sv.json @@ -6,6 +6,9 @@ { "label": "Type", "description": "Optional media to display above the question." + }, + { + "label": "Disable image zooming" } ] }, @@ -129,9 +132,6 @@ { "label": "Put input fields on separate lines" }, - { - "label": "Disable image zooming for question image" - }, { "label": "Show confirmation dialog on \"Check\"", "description": "This options is not compatible with the \"Automatically check answers after input\" option" @@ -190,6 +190,22 @@ { "label": "Textual representation of the score bar for those using a readspeaker", "default": "You got :num out of :total points" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" } ] -} +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/tr.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/tr.json similarity index 88% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/tr.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/tr.json index 080af71cb8bf76d806264bda4c3345e8a5ea2e39..8442cd5dcf18f0079c967350df8c879d5d52a1a1 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/tr.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/tr.json @@ -6,6 +6,9 @@ { "label": "Yazınız", "description": "Soru üzerinde görüntülenecek isteÄŸe baÄŸlı ortam." + }, + { + "label": "Disable image zooming" } ] }, @@ -129,9 +132,6 @@ { "label": "Put input fields on separate lines" }, - { - "label": "Disable image zooming for question image" - }, { "label": "Show confirmation dialog on \"Check\"", "description": "This options is not compatible with the \"Automatically check answers after input\" option" @@ -190,6 +190,22 @@ { "label": "Textual representation of the score bar for those using a readspeaker", "default": "You got :num out of :total points" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" } ] -} +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/uk.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/uk.json new file mode 100644 index 0000000000000000000000000000000000000000..f1affe96c64b0bfced496a20a567b7dabb955d3e --- /dev/null +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/uk.json @@ -0,0 +1,211 @@ +{ + "semantics": [ + { + "label": "Медіа", + "fields": [ + { + "label": "Тип", + "description": "Додаткове медіа Ð´Ð»Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ð°Ð´ завданнÑм." + }, + { + "label": "Відключити зміну маштабу зображеннÑ" + } + ] + }, + { + "label": "ÐžÐ¿Ð¸Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ", + "default": "Заповніть пропущені Ñлова", + "description": "ІнÑÑ‚Ñ€ÑƒÐºÑ†Ñ–Ñ Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувача Ñк відповіÑти на це завданнÑ." + }, + { + "label": "ТекÑтові блоки", + "entity": "текÑтовий блок", + "field": { + "label": "Ð Ñдок текÑту", + "placeholder": "Київ ÑÑ‚Ð¾Ð»Ð¸Ñ†Ñ *України*.", + "description": "", + "important": { + "description": "<ul><li>ПропуÑки добавлÑютьÑÑ Ñ–Ð· ззірочкою (*) Ñпереду та ззаду правильного Ñлова/фрази.</li><li>Додаткові варіанти відповідей відділÑютьÑÑ ÐºÐ¾Ñою риÑкою (/).</li><li>Ви можете добавити текÑтову підказку, викориÑтовуючи двокрапку (:) перед підказкою.</li></ul>", + "example": "ВміÑÑ‚ H5P можна редагувати за допомогою *браузера/веб-браузера: те, що ви викориÑтовуєте щоднÑ*." + } + } + }, + { + "label": "Загальний відгук", + "fields": [ + { + "widgets": [ + { + "label": "По умовчанню" + } + ], + "label": "Ð’Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувацьких відгуків Ð´Ð»Ñ Ð±ÑƒÐ´ÑŒ Ñкого діапазону оцінок", + "description": "ÐатиÑніть на кнопку \"Добавити діапазон\" щоб добавити Ñтільки діапазонів, Ñкільки вам потрібно. Ðаприклад: 0-20% Погана оцінка, 21-91% Ð¡ÐµÑ€ÐµÐ´Ð½Ñ Ð¾Ñ†Ñ–Ð½ÐºÐ°, 91-100% Відмінна оцінка!", + "entity": "діапазон", + "field": { + "fields": [ + { + "label": "Діапазон оцінок" + }, + {}, + { + "label": "Зворотній зв'Ñзок Ð´Ð»Ñ Ð¿ÐµÐ²Ð½Ð¾Ð³Ð¾ діапазону оцінок", + "placeholder": "Заповніть відгук" + } + ] + } + } + ] + }, + { + "label": "ТекÑÑ‚ Ð´Ð»Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ \"Показати відповідь\"", + "default": "Показати відповіді" + }, + { + "label": "ТекÑÑ‚ Ð´Ð»Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ \"Повторити\"", + "default": "Повторити" + }, + { + "label": "ТекÑÑ‚ Ð´Ð»Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ \"Перевірити\"", + "default": "Перевірити" + }, + { + "label": "ТекÑÑ‚ Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ \"Ðе заповнено\"", + "default": "Будь лаÑка, заповни вÑÑ– Ð¿Ð¾Ð»Ñ Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду відповіді" + }, + { + "label": "ТекÑÑ‚ Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ \"':ans' правильний\"", + "default": "':ans' правильний" + }, + { + "label": "ТекÑÑ‚ Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ \"':ans' неправильний\"", + "default": "':ans' неправильний" + }, + { + "label": "ТекÑÑ‚ Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ \"Відповіли правильно\" message", + "default": "Відповіли правильно" + }, + { + "label": "ТекÑÑ‚ Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ \"Відповіли неправильно\" message", + "default": "Відповіли неправильно" + }, + { + "label": "Допоміжний Ð½Ð°Ð´Ð¿Ð¸Ñ Ð´Ð»Ñ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ñ–", + "default": "Правильна відповідь:" + }, + { + "label": "Допоміжний Ð½Ð°Ð´Ð¿Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ð»Ñ Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ", + "description": "ВикориÑтовуйте @num Ñ– @total щоб замінити поточний номер пропуÑку Ñ– загальну кількіÑть пропуÑків", + "default": "Заповнено пропуÑків @num із @total" + }, + { + "label": "Значок допоміжної технології Ð´Ð»Ñ Ð²Ð¸Ð¼Ð¾Ð²Ð¸ введеннÑ", + "default": "ДоÑтупна підказка" + }, + { + "label": "ÐÐ°Ð´Ð¿Ð¸Ñ Ð·Ð½Ð°Ñ‡ÐºÐ° підказки", + "default": "Підказка" + }, + { + "label": "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ð²ÐµÐ´Ñ–Ð½ÐºÐ¸.", + "description": "Ці параметри дозволÑÑ‚ вам контролювати поведінку завданнÑ.", + "fields": [ + { + "label": "Увімкнути кнопку \"Повторити\"" + }, + { + "label": "Увімкнути кнопку \"Показати відповідь\"" + }, + { + "label": "Увімкнути кнопку \"Перевірити\"" + }, + { + "label": "Ðвтоматично перевірÑти відповіді піÑÐ»Ñ Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ" + }, + { + "label": "С врахуваннÑм регіÑтру", + "description": "ВпевнітьÑÑ, що введене кориÑтувачем має бути точно таким, Ñк Ñ– відповідь." + }, + { + "label": "Вимагати заповнити вÑÑ– полÑ, перед тим, Ñк можна буде переглÑнути відповідь" + }, + { + "label": "Розміщувати Ð¿Ð¾Ð»Ñ Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð² окремі Ñ€Ñдки" + }, + { + "label": "Показати діалог Ð¿Ñ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ Ð½Ð° \"Перевірити\"", + "description": "Цей параметр не ÑуміÑний з опцією \"Ðвтоматично перевірÑти відповіді піÑÐ»Ñ Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ\"" + }, + { + "label": "Показати діалог Ð¿Ñ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ Ð½Ð° \"Повторити\"" + }, + { + "label": "ДозволÑди незначні орфографічні помилки", + "description": "Якщо активовано, відповідь також буде рахуватиÑÑ Ð¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾ÑŽ з незначними орфографічними помилками (3-9 знаків: 1 орфографічна помилка, білльше 9 знаків: 2 орфографічні помилки)" + } + ] + }, + { + "label": "Діалог Ð¿Ñ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ¸", + "fields": [ + { + "label": "ТекÑÑ‚ заголовку", + "default": "Завершити?" + }, + { + "label": "ОÑновний текÑÑ‚", + "default": "Ви впевнені, що хочете завершити?" + }, + { + "label": "ÐÐ°Ð´Ð¿Ð¸Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ відміни", + "default": "Відмінити" + }, + { + "label": "ÐÐ°Ð´Ð¿Ð¸Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ підтвердженнÑ", + "default": "Завершити" + } + ] + }, + { + "label": "Діалог Ð¿Ñ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð½Ñ", + "fields": [ + { + "label": "ТекÑÑ‚ заголовку", + "default": "Повторити?" + }, + { + "label": "ОÑновний текÑÑ‚", + "default": "Ви впевнені, що хочете повторити?" + }, + { + "label": "ÐÐ°Ð´Ð¿Ð¸Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ відміни", + "default": "Відмінити" + }, + { + "label": "ÐÐ°Ð´Ð¿Ð¸Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ підтвердженнÑ", + "default": "Підтвердити" + } + ] + }, + { + "label": "ТекÑтове предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ ÑˆÐºÐ°Ð»Ð¸ балів Ð´Ð»Ñ Ñ‚Ð¸Ñ…, хто викориÑтовує озвучку текÑту", + "default": "Ви отримали :num із :total балів" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" + } + ] +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/vi.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/vi.json similarity index 88% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/vi.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/vi.json index eeb1c37342dd564b925a3bd02275843d79e8792a..21166c6516afcf51bf40327ec0687d410e076a7c 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/language/vi.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/vi.json @@ -6,6 +6,9 @@ { "label": "Type", "description": "Optional media to display above the question." + }, + { + "label": "Disable image zooming" } ] }, @@ -129,9 +132,6 @@ { "label": "Put input fields on separate lines" }, - { - "label": "Disable image zooming for question image" - }, { "label": "Show confirmation dialog on \"Check\"", "description": "This options is not compatible with the \"Automatically check answers after input\" option" @@ -190,6 +190,22 @@ { "label": "Textual representation of the score bar for those using a readspeaker", "default": "You got :num out of :total points" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" } ] -} +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/zh-hans.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/zh-hans.json new file mode 100644 index 0000000000000000000000000000000000000000..d4f98cd53a4543e435f11235b15be5379de8dcb2 --- /dev/null +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/language/zh-hans.json @@ -0,0 +1,211 @@ +{ + "semantics": [ + { + "label": "媒体", + "fields": [ + { + "label": "类型", + "description": "用于显示该问题的å¯é€‰åª’体." + }, + { + "label": "ç¦æ¢å›¾ç‰‡ç¼©æ”¾" + } + ] + }, + { + "label": "任务æè¿°", + "default": "填入缺少的è¯è¯", + "description": "ç”¨æˆ·å¦‚ä½•å›žç”æ¤ä»»åŠ¡çš„å‚考." + }, + { + "label": "æ–‡å—å—", + "entity": "æ–‡å—å—", + "field": { + "label": "一行文å—", + "placeholder": "è¯·åœ¨ç©ºæ ¼å¡«å…¥æ£ç¡®ç”案 2+3=*4* ", + "description": "", + "important": { + "description": "<ul><li>ç©ºæ ¼å†…éœ€è¦å¡«å…¥æ£ç¡®ç”案 ,æ£ç¡®ç”案用星å·*æ‹¬èµ·æ¥ .</li><li>å¤‡é€‰ç”æ¡ˆç”¨/分隔.</li><li>ä½ å¯ä»¥åŠ ä¸€ä¸ªæ–‡å—æç¤ºï¼Œåœ¨æç¤ºå‰åŠ å†’å· : å³å¯.</li></ul>", + "example": "如果 |A| = 3 , 那么 A= *3/-3:æœ‰ä¸¤ä¸ªç”æ¡ˆå•Šï¼*. 也就是填3或者-3都算对" + } + } + }, + { + "label": "所有评价", + "fields": [ + { + "widgets": [ + { + "label": "默认" + } + ], + "label": "为任何æˆç»©è‡ªå®šä¹‰è¯„ä»·", + "description": "点击 \"æ·»åŠ æˆç»©æ¡£æ¬¡\" å¢žåŠ æ¡£æ¬¡. 例如: 0-20% å·®, 21-91% ä¸ç‰, 91-100% 优!", + "entity": "档次", + "field": { + "fields": [ + { + "label": "æˆç»©æ¡£æ¬¡" + }, + {}, + { + "label": "指定æˆç»©æ¡£æ¬¡çš„评价", + "placeholder": "填写评价" + } + ] + } + } + ] + }, + { + "label": " \"æ˜¾ç¤ºç”æ¡ˆ\" 按钮文å—", + "default": "æ˜¾ç¤ºç”æ¡ˆ" + }, + { + "label": "\"é‡è¯•\" 按钮文å—", + "default": "é‡è¯•" + }, + { + "label": " \"æ ¸å¯¹ç”æ¡ˆ\" 按钮文å—", + "default": "æ ¸å¯¹ç”æ¡ˆ" + }, + { + "label": "\"未填空\" æ¶ˆæ¯æ–‡å—", + "default": "è¯·å®Œæˆæ‰€æœ‰å¡«ç©ºåŽæŸ¥çœ‹ç”案" + }, + { + "label": "\"':ans' is correct\" æ¶ˆæ¯æ–‡å—", + "default": "':ans' 是对的" + }, + { + "label": "\"':ans' is wrong\" æ¶ˆæ¯æ–‡å—", + "default": "':ans' 是错的" + }, + { + "label": "\"å›žç”æ£ç¡®\" æ¶ˆæ¯æ–‡å—", + "default": "å›žç”æ£ç¡®" + }, + { + "label": "\"回ç”错误\" æ¶ˆæ¯æ–‡å—", + "default": "回ç”错误" + }, + { + "label": "è¾…åŠ©å›žç”æ ‡ç¾", + "default": "æ£ç¡®ç”案:" + }, + { + "label": "è¾…åŠ©è¾“å…¥æ ‡ç¾", + "description": "使用 @num å’Œ @total æ¥æ›¿ä»£å½“å‰å¡«ç©ºæ•°å’Œæ€»å¡«ç©ºæ•°", + "default": "未填空@num 总数 @total" + }, + { + "label": "è¾“å…¥æ¡†æœ‰æ ‡ç¾è¾…助æç¤º", + "default": "有æç¤º" + }, + { + "label": "æç¤ºå›¾æ ‡æ ‡ç¾", + "default": "æç¤º" + }, + { + "label": "行为设置", + "description": "ä»»åŠ¡åŠ¨ä½œå‚æ•°", + "fields": [ + { + "label": "å¯ç”¨ \"é‡è¯•\"" + }, + { + "label": "å¯ç”¨ \"æ˜¾ç¤ºç”æ¡ˆ\" 按钮" + }, + { + "label": "å¯ç”¨ \"æ ¸å¯¹ç”æ¡ˆ\" 按钮" + }, + { + "label": "输入完æˆåŽè‡ªåŠ¨æ ¸å¯¹ç”æ¡ˆ" + }, + { + "label": "大å°å†™æ•感", + "description": "ç¡®ä¿è¾“å…¥å’Œç”æ¡ˆå®Œå…¨åŒ¹é…,注æ„大å°å†™æ•感." + }, + { + "label": "æ‚¨å¿…é¡»å›žç”æ‰€æœ‰é—®é¢˜æ‰èƒ½æŸ¥çœ‹ç”案" + }, + { + "label": "在ä¸åŒè¡Œè¾“å…¥" + }, + { + "label": "点击 \"æ ¸å¯¹ç”æ¡ˆ\"æ—¶æ˜¾ç¤ºç¡®è®¤å¯¹è¯æ¡†", + "description": "æ¤é€‰é¡¹æ— 法和 \"输入完æˆåŽè‡ªåŠ¨æ ¸å¯¹ç”æ¡ˆ\" åŒæ—¶ä½¿ç”¨" + }, + { + "label": " 点击\"é‡è¯•\" æ—¶æ˜¾ç¤ºç¡®è®¤å¯¹è¯æ¡†" + }, + { + "label": "å…许细微的拼写错误", + "description": "如本选项激活, 如果有细微的拼写错误也认为是æ£ç¡®ç”案 (3-9 å—æ¯: 1 个拼写错误, 超过9ä¸ªå—æ¯: 2个拼写错误)ï¼Œä¼°è®¡ä¸æ–‡ä¸è¡Œ" + } + ] + }, + { + "label": "æ ¸å¯¹ç”æ¡ˆå¯¹è¯æ¡†", + "fields": [ + { + "label": "æ ‡é¢˜æ–‡å—", + "default": "å®Œæˆ ?" + }, + { + "label": "内容文å—", + "default": "ä½ ç¡®å®šå…¨éƒ¨å®Œæˆäº†?" + }, + { + "label": "å–æ¶ˆæŒ‰é’®æ–‡å—", + "default": "å–æ¶ˆ" + }, + { + "label": "确认按钮文å—", + "default": "确认" + } + ] + }, + { + "label": "é‡è¯•å¯¹è¯æ¡†", + "fields": [ + { + "label": "æ ‡é¢˜æ–‡å—", + "default": "é‡è¯• ?" + }, + { + "label": "内容文å—", + "default": "ä½ è¦é‡æ¥ä¸€æ¬¡å—?" + }, + { + "label": "å–æ¶ˆæŒ‰é’®æ–‡å—", + "default": "å–æ¶ˆ" + }, + { + "label": "确认按钮文å—", + "default": "确认" + } + ] + }, + { + "label": "使用讲读器的æˆç»©æ æ–‡å—", + "default": "ä½ å¾—åˆ°äº† :num 分,总分为 :total 分" + }, + { + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered." + }, + { + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution." + }, + { + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again." + }, + { + "label": "Assistive technology description for starting task", + "default": "Checking mode" + } + ] +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/library.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/library.json similarity index 87% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/library.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/library.json index b0daac7cf39a9853a7e7f032536caae06d07c926..9356015cd5df350b6d582b1704658f007585a654 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/library.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/library.json @@ -3,8 +3,8 @@ "description": "Test your users with fill in the blanks tasks(Cloze tests).", "machineName": "H5P.Blanks", "majorVersion": 1, - "minorVersion": 11, - "patchVersion": 3, + "minorVersion": 12, + "patchVersion": 8, "runnable": 1, "license": "MIT", "author": "Joubel", @@ -55,6 +55,11 @@ "machineName": "H5PEditor.RangeList", "majorVersion": 1, "minorVersion": 0 + }, + { + "machineName": "H5PEditor.ShowWhen", + "majorVersion": 1, + "minorVersion": 0 } ] -} +} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/presave.js b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/presave.js similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/presave.js rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/presave.js diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/semantics.json b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/semantics.json similarity index 88% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/semantics.json rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/semantics.json index 8eb70dcb3dab2f7ab952ba25508ca063a9e6bb40..e5a08d9589a269b4c9f848391144435b7210defe 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/semantics.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/semantics.json @@ -15,6 +15,23 @@ ], "optional": true, "description": "Optional media to display above the question." + }, + { + "name": "disableImageZooming", + "type": "boolean", + "label": "Disable image zooming", + "importance": "low", + "default": false, + "optional": true, + "widget": "showWhen", + "showWhen": { + "rules": [ + { + "field": "type", + "equals": "H5P.Image 1.1" + } + ] + } } ] }, @@ -36,7 +53,9 @@ "ol", "h2", "h3", - "hr" + "hr", + "pre", + "code" ] }, { @@ -64,7 +83,8 @@ "strong", "em", "del", - "u" + "u", + "code" ] } }, @@ -298,14 +318,6 @@ "default": false, "optional": true }, - { - "label": "Disable image zooming for question image", - "importance": "low", - "name": "disableImageZooming", - "type": "boolean", - "default": false, - "optional": true - }, { "label": "Show confirmation dialog on \"Check\"", "importance": "low", @@ -358,7 +370,8 @@ "strong", "em", "del", - "u" + "u", + "code" ] }, { @@ -403,7 +416,8 @@ "strong", "em", "del", - "u" + "u", + "code" ] }, { @@ -429,5 +443,37 @@ "default": "You got :num out of :total points", "importance": "low", "common": true + }, + { + "name": "a11yCheck", + "type": "text", + "label": "Assistive technology description for \"Check\" button", + "default": "Check the answers. The responses will be marked as correct, incorrect, or unanswered.", + "importance": "low", + "common": true + }, + { + "name": "a11yShowSolution", + "type": "text", + "label": "Assistive technology description for \"Show Solution\" button", + "default": "Show the solution. The task will be marked with its correct solution.", + "importance": "low", + "common": true + }, + { + "name": "a11yRetry", + "type": "text", + "label": "Assistive technology description for \"Retry\" button", + "default": "Retry the task. Reset all responses and start the task over again.", + "importance": "low", + "common": true + }, + { + "name": "a11yCheckingModeHeader", + "type": "text", + "label": "Assistive technology description for starting task", + "default": "Checking mode", + "importance": "low", + "common": true } ] diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/upgrades.js b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/upgrades.js similarity index 78% rename from mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/upgrades.js rename to mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/upgrades.js index 8666fbb1cc5a03d902551f1df36e638270b6cd1d..bf3ea18e60aaefaf62dcfcc9d537f40892181bf6 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.11/upgrades.js +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5P.Blanks-1.12/upgrades.js @@ -95,6 +95,29 @@ H5PUpgrades['H5P.Blanks'] = (function () { extras.metadata.title = parameters.text.replace(/<[^>]*>?/g, ''); } finished(null, parameters, extras); + }, + /* + * Upgrades content parameters to support Blanks 1.9 + * + * Move disableImageZooming from behaviour to media + * + * @param {object} parameters + * @param {function} finished + */ + 12: function (parameters, finished) { + // If image has been used, move it down in the hierarchy and add disableImageZooming + if (parameters && parameters.media) { + parameters.media = { + type: parameters.media, + disableImageZooming: (parameters.behaviour && parameters.behaviour.disableImageZooming) ? parameters.behaviour.disableImageZooming : false + }; + } + + // Delete old disableImageZooming + if (parameters && parameters.behaviour) { + delete parameters.behaviour.disableImageZooming; + } + finished(null, parameters); } } }; diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5PEditor.ShowWhen-1.0/h5p-show-when.css b/mc_frontend/src/assets/h5p/fill_blanks/H5PEditor.ShowWhen-1.0/h5p-show-when.css new file mode 100644 index 0000000000000000000000000000000000000000..c998b6e7ff79762ebab5215ac1fa663f9be28c32 --- /dev/null +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5PEditor.ShowWhen-1.0/h5p-show-when.css @@ -0,0 +1,3 @@ +.h5p-editor-widget-show-when.hidden { + display: none; +} diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5PEditor.ShowWhen-1.0/h5p-show-when.js b/mc_frontend/src/assets/h5p/fill_blanks/H5PEditor.ShowWhen-1.0/h5p-show-when.js new file mode 100644 index 0000000000000000000000000000000000000000..4a0c32c22d5628e33ba349ae0935d6cac2de0ebf --- /dev/null +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5PEditor.ShowWhen-1.0/h5p-show-when.js @@ -0,0 +1,153 @@ +H5PEditor.ShowWhen = (function ($) { + + // Handler for the 'select' semantics type + function SelectHandler(field, equals) { + this.satisfied = function () { + return (equals.indexOf(field.value) !== -1); + }; + } + + // Handler for the 'library' semantics type + function LibraryHandler(field, equals) { + this.satisfied = function () { + var value; + if (field.currentLibrary !== undefined) { + value = field.currentLibrary.split(' ')[0]; + } + return (equals.indexOf(value) !== -1); + }; + } + + function BooleanHandler(field, equals) { + this.satisfied = function () { + return field.value === equals; + }; + } + + // Factory method for creating handlers + // "library", "select" and "boolean" semantics types supported so far + function createFieldHandler(field, equals) { + if (field.field.type === 'library') { + return new LibraryHandler(field, equals); + } + else if (field.field.type === 'select') { + return new SelectHandler(field, equals); + } + else if (field.field.type === 'boolean') { + return new BooleanHandler(field, equals); + } + } + + // Handling rules + function RuleHandler(type) { + var TYPE_AND = 'and'; + var TYPE_OR = 'or'; + var handlers = []; + + type = type || TYPE_OR; + + this.add = function (handler) { + handlers.push(handler); + }; + + // Check if rules are satisfied + this.rulesSatisfied = function () { + for (var i = 0; i < handlers.length; i++) { + // check if rule was hit + var ruleHit = handlers[i].satisfied(); + + if (ruleHit && type === TYPE_OR) { + return true; + } + else if (type === TYPE_AND && !ruleHit) { + return false; + } + } + + return false; + }; + } + + // Main widget class constructor + function ShowWhen(parent, field, params, setValue) { + var self = this; + + self.field = field; + // Outsource readies + self.passReadies = true; + self.value = params; + + // Create the wrapper: + var $wrapper = $('<div>', { + 'class': 'field h5p-editor-widget-show-when' + }); + var showing = false; + var config = self.field.showWhen; + + if (config === undefined) { + throw new Error('You need to set the showWhen property in semantics.json when using the showWhen widget'); + } + + var ruleHandler = new RuleHandler(config.type); + + for (var i = 0; i < config.rules.length; i++) { + var rule = config.rules[i]; + var targetField = H5PEditor.findField(rule.field, parent); + var handler = createFieldHandler(targetField, rule.equals); + + if (handler !== undefined) { + ruleHandler.add(handler); + H5PEditor.followField(parent, rule.field, config.detach ? function () { + if (showing != ruleHandler.rulesSatisfied()) { + showing = !showing; + if (showing) { + $wrapper.appendTo(self.$container); + } + else { + $wrapper.detach(); + } + } + } : function () { + showing = ruleHandler.rulesSatisfied(); + $wrapper.toggleClass('hidden', !showing); + }); + } + } + + // Create the real field: + var widgetName = config.widget || field.type; + var fieldInstance = new H5PEditor.widgets[widgetName](parent, field, params, setValue); + fieldInstance.appendTo($wrapper); + + /** + * Add myself to the DOM + * + * @public + * @param {H5P.jQuery} $container + */ + self.appendTo = function ($container) { + if (!config.detach) { + $wrapper.appendTo($container); + } + self.$container = $container; + }; + + /** + * Validate + * + * @public + * @return {boolean} + */ + self.validate = function () { + // Only validate if field is shown! + return showing ? fieldInstance.validate() : true; + }; + + self.remove = function () {}; + } + + return ShowWhen; +})(H5PEditor.$); + +// Register widget +H5PEditor.widgets.showWhen = H5PEditor.ShowWhen; diff --git a/mc_frontend/src/assets/h5p/fill_blanks/H5PEditor.ShowWhen-1.0/library.json b/mc_frontend/src/assets/h5p/fill_blanks/H5PEditor.ShowWhen-1.0/library.json new file mode 100644 index 0000000000000000000000000000000000000000..b0afef45da0dcf7efbd2f1b2b6b5b6b383d81da5 --- /dev/null +++ b/mc_frontend/src/assets/h5p/fill_blanks/H5PEditor.ShowWhen-1.0/library.json @@ -0,0 +1,20 @@ +{ + "machineName": "H5PEditor.ShowWhen", + "title": "Toggle visibility of a field based on rules", + "license": "MIT", + "author": "fnoks", + "majorVersion": 1, + "minorVersion": 0, + "patchVersion": 5, + "runnable": 0, + "preloadedJs": [ + { + "path": "h5p-show-when.js" + } + ], + "preloadedCss": [ + { + "path": "h5p-show-when.css" + } + ] +} diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/10_de.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/10_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/10_de.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/10_de.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/10_en.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/10_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/10_en.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/10_en.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/11_de.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/11_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/11_de.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/11_de.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/11_en.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/11_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/11_en.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/11_en.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/12_de.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/12_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/12_de.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/12_de.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/12_en.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/12_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/12_en.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/12_en.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/13_de.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/13_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/13_de.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/13_de.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/13_en.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/13_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/13_en.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/13_en.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/14_de.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/14_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/14_de.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/14_de.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/14_en.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/14_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/14_en.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/14_en.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/15_de.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/15_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/15_de.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/15_de.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/15_en.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/15_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/15_en.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/15_en.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/16_de.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/16_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/16_de.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/16_de.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/16_en.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/16_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/16_en.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/16_en.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/1_de.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/1_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/1_de.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/1_de.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/1_en.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/1_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/1_en.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/1_en.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/2_de.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/2_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/2_de.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/2_de.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/2_en.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/2_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/2_en.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/2_en.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/3_de.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/3_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/3_de.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/3_de.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/3_en.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/3_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/3_en.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/3_en.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/4_de.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/4_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/4_de.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/4_de.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/4_en.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/4_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/4_en.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/4_en.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/5_de.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/5_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/5_de.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/5_de.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/5_en.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/5_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/5_en.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/5_en.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/6_de.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/6_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/6_de.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/6_de.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/6_en.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/6_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/6_en.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/6_en.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/7_de.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/7_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/7_de.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/7_de.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/7_en.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/7_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/7_en.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/7_en.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/8_de.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/8_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/8_de.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/8_de.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/8_en.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/8_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/8_en.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/8_en.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/9_de.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/9_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/9_de.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/9_de.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/9_en.json b/mc_frontend/src/assets/h5p/fill_blanks/content/callidus/9_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/fill_blanks/content/9_en.json rename to mc_frontend/src/assets/h5p/fill_blanks/content/callidus/9_en.json diff --git a/mc_frontend/src/assets/h5p/fill_blanks/content/potsdam/1_de.json b/mc_frontend/src/assets/h5p/fill_blanks/content/potsdam/1_de.json new file mode 100644 index 0000000000000000000000000000000000000000..02808c5c3d34a02d4455154759a4dd17f70dfa66 --- /dev/null +++ b/mc_frontend/src/assets/h5p/fill_blanks/content/potsdam/1_de.json @@ -0,0 +1 @@ +{"media":{"disableImageZooming":false},"text":"<p><strong>Tragen Sie die jeweils korrekte \u00dcbersetzung ein! <\/strong><\/p>\n\n<p><em><u>Hinweis:<\/u> Aus technischen Gr\u00fcnden k\u00f6nnen nur die jeweiligen auf dem Methodenblatt angef\u00fchrten \u00dcbersetzungen als richtig gewertet werden. Nur eine \u00dcbersetzungsvariante pro L\u00fccke ist zul\u00e4ssig. <\/em><\/p>\n","overallFeedback":[{"from":0,"to":100}],"showSolutions":"L\u00f6sung anzeigen","tryAgain":"Wiederholen","checkAnswer":"\u00dcberpr\u00fcfen","notFilledOut":"Bitte f\u00fclle alle L\u00fccken aus, um die L\u00f6sung ansehen zu k\u00f6nnen","answerIsCorrect":"':ans' ist korrekt","answerIsWrong":"':ans' ist falsch","answeredCorrectly":"Korrekt beantwortet","answeredIncorrectly":"Falsch beantwortet","solutionLabel":"Korrekte Antwort:","inputLabel":"L\u00fccke @num von @total","inputHasTipLabel":"Tipp verf\u00fcgbar","tipLabel":"Tipp","behaviour":{"enableRetry":true,"enableSolutionsButton":false,"enableCheckButton":true,"autoCheck":false,"caseSensitive":false,"showSolutionsRequiresInput":false,"separateLines":true,"confirmCheckDialog":false,"confirmRetryDialog":false,"acceptSpellingErrors":false},"scoreBarLabel":"Du hast :num von :total Punkten erreicht.","confirmCheck":{"header":"Beenden?","body":"Ganz sicher beenden?","cancelLabel":"Abbrechen","confirmLabel":"Beenden"},"confirmRetry":{"header":"Wiederholen?","body":"Ganz sicher wiederholen?","cancelLabel":"Abbrechen","confirmLabel":"Best\u00e4tigen"},"questions":["<p>aedificium *Geb\u00e4ude*<\/p>\n\n<p>animus *Sinn\/Gem\u00fct\/Verstand\/innere Haltung*<\/p>\n\n<p>rogare *fragen\/bitten*<\/p>\n\n<p>mirus *seltsam\/wunderlich\/wunderbar*<\/p>\n\n<p>appropinquare *sich n\u00e4hern*<\/p>\n\n<p>quando *wann?\/wann*<\/p>\n\n<p>nonnulli *einige*<\/p>\n\n<p>perantiquus *sehr alt\/uralt*<\/p>\n\n<p>administrare *verwalten\/lenken*<\/p>\n\n<p>satis *genug\/ausreichend*<\/p>\n\n<p>dubitare *z\u00f6gern*<\/p>\n\n<p>explicare *erkl\u00e4ren\/erl\u00e4utern*<\/p>\n\n<p>debere *sollen\/m\u00fcssen\/verdanken\/schulden*<\/p>\n\n<p>velut *wie\/wie zum Beispiel\/ wie z. B.*<\/p>\n\n<p>deinde *sodann\/darauf\/damals*<\/p>\n\n<p>consultare *sich beraten\/beratschlagen*<\/p>\n\n<p>visitare *besuchen*<\/p>\n\n<p>laetus *froh\/fr\u00f6hlich*<\/p>\n\n<p>magnificus *gro\u00dfartig\/pr\u00e4chtig*<\/p>\n\n<p>nonne *denn nicht\/etwa nicht*<\/p>\n"]} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/fill_blanks/h5p.json b/mc_frontend/src/assets/h5p/fill_blanks/h5p.json index 8213f62f46b0ebe50916d0e0f147146e14ff977a..6859d676013abb0e227f3708295fde27f20201fd 100644 --- a/mc_frontend/src/assets/h5p/fill_blanks/h5p.json +++ b/mc_frontend/src/assets/h5p/fill_blanks/h5p.json @@ -1,61 +1 @@ -{ - "title": "Fill in the Blanks", - "language": "und", - "mainLibrary": "H5P.Blanks", - "embedTypes": [ - "div" - ], - "license": "U", - "preloadedDependencies": [ - { - "machineName": "H5P.ConfirmationDialog", - "majorVersion": "1", - "minorVersion": "0" - }, - { - "machineName": "H5P.Blanks", - "majorVersion": "1", - "minorVersion": "11" - }, - { - "machineName": "FontAwesome", - "majorVersion": "4", - "minorVersion": "5" - }, - { - "machineName": "H5P.JoubelUI", - "majorVersion": "1", - "minorVersion": "3" - }, - { - "machineName": "H5P.Transition", - "majorVersion": "1", - "minorVersion": "0" - }, - { - "machineName": "Drop", - "majorVersion": "1", - "minorVersion": "0" - }, - { - "machineName": "Tether", - "majorVersion": "1", - "minorVersion": "0" - }, - { - "machineName": "H5P.FontIcons", - "majorVersion": "1", - "minorVersion": "0" - }, - { - "machineName": "H5P.Question", - "majorVersion": "1", - "minorVersion": "4" - }, - { - "machineName": "H5P.TextUtilities", - "majorVersion": "1", - "minorVersion": "3" - } - ] -} +{"title":"Test: Listen-Lernen","language":"und","mainLibrary":"H5P.Blanks","embedTypes":["div"],"license":"U","defaultLanguage":"de","preloadedDependencies":[{"machineName":"H5P.Blanks","majorVersion":"1","minorVersion":"12"},{"machineName":"FontAwesome","majorVersion":"4","minorVersion":"5"},{"machineName":"H5P.Question","majorVersion":"1","minorVersion":"4"},{"machineName":"H5P.JoubelUI","majorVersion":"1","minorVersion":"3"},{"machineName":"H5P.Transition","majorVersion":"1","minorVersion":"0"},{"machineName":"Drop","majorVersion":"1","minorVersion":"0"},{"machineName":"Tether","majorVersion":"1","minorVersion":"0"},{"machineName":"H5P.FontIcons","majorVersion":"1","minorVersion":"0"},{"machineName":"H5P.TextUtilities","majorVersion":"1","minorVersion":"3"}]} \ No newline at end of file diff --git a/mc_frontend/src/assets/h5p/mark_words/content/1_de.json b/mc_frontend/src/assets/h5p/mark_words/content/callidus/1_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/mark_words/content/1_de.json rename to mc_frontend/src/assets/h5p/mark_words/content/callidus/1_de.json diff --git a/mc_frontend/src/assets/h5p/mark_words/content/1_en.json b/mc_frontend/src/assets/h5p/mark_words/content/callidus/1_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/mark_words/content/1_en.json rename to mc_frontend/src/assets/h5p/mark_words/content/callidus/1_en.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/10_de.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/10_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/10_de.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/10_de.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/10_en.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/10_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/10_en.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/10_en.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/11_de.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/11_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/11_de.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/11_de.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/11_en.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/11_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/11_en.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/11_en.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/12_de.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/12_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/12_de.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/12_de.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/12_en.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/12_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/12_en.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/12_en.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/13_de.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/13_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/13_de.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/13_de.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/13_en.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/13_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/13_en.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/13_en.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/14_de.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/14_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/14_de.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/14_de.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/14_en.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/14_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/14_en.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/14_en.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/15_de.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/15_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/15_de.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/15_de.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/15_en.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/15_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/15_en.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/15_en.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/16_de.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/16_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/16_de.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/16_de.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/16_en.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/16_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/16_en.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/16_en.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/17_de.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/17_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/17_de.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/17_de.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/17_en.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/17_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/17_en.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/17_en.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/18_de.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/18_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/18_de.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/18_de.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/18_en.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/18_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/18_en.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/18_en.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/19_en.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/19_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/19_en.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/19_en.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/1_de.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/1_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/1_de.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/1_de.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/1_en.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/1_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/1_en.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/1_en.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/20_de.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/20_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/20_de.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/20_de.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/20_en.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/20_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/20_en.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/20_en.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/21_de.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/21_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/21_de.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/21_de.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/21_en.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/21_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/21_en.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/21_en.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/22_de.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/22_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/22_de.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/22_de.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/22_en.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/22_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/22_en.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/22_en.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/23_de.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/23_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/23_de.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/23_de.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/23_en.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/23_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/23_en.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/23_en.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/24_de.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/24_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/24_de.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/24_de.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/24_en.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/24_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/24_en.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/24_en.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/2_de.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/2_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/2_de.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/2_de.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/2_en.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/2_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/2_en.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/2_en.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/3_de.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/3_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/3_de.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/3_de.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/3_en.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/3_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/3_en.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/3_en.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/4_de.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/4_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/4_de.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/4_de.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/4_en.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/4_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/4_en.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/4_en.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/5_de.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/5_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/5_de.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/5_de.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/5_en.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/5_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/5_en.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/5_en.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/6_de.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/6_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/6_de.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/6_de.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/6_en.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/6_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/6_en.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/6_en.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/7_de.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/7_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/7_de.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/7_de.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/7_en.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/7_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/7_en.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/7_en.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/8_de.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/8_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/8_de.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/8_de.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/8_en.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/8_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/8_en.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/8_en.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/9_de.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/9_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/9_de.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/9_de.json diff --git a/mc_frontend/src/assets/h5p/multi_choice/content/9_en.json b/mc_frontend/src/assets/h5p/multi_choice/content/callidus/9_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/multi_choice/content/9_en.json rename to mc_frontend/src/assets/h5p/multi_choice/content/callidus/9_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/10_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/10_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/10_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/10_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/10_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/10_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/10_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/10_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/11_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/11_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/11_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/11_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/11_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/11_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/11_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/11_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/12_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/12_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/12_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/12_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/12_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/12_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/12_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/12_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/16_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/16_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/16_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/16_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/16_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/16_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/16_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/16_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/17_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/17_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/17_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/17_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/17_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/17_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/17_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/17_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/18_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/18_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/18_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/18_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/18_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/18_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/18_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/18_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/1_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/1_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/1_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/1_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/1_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/1_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/1_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/1_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/20_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/20_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/20_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/20_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/20_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/20_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/20_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/20_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/21_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/21_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/21_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/21_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/21_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/21_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/21_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/21_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/22_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/22_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/22_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/22_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/22_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/22_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/22_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/22_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/23_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/23_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/23_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/23_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/23_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/23_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/23_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/23_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/24_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/24_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/24_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/24_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/24_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/24_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/24_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/24_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/25_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/25_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/25_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/25_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/25_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/25_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/25_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/25_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/26_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/26_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/26_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/26_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/26_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/26_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/26_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/26_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/27_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/27_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/27_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/27_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/27_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/27_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/27_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/27_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/28_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/28_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/28_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/28_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/28_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/28_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/28_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/28_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/29_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/29_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/29_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/29_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/29_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/29_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/29_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/29_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/2_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/2_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/2_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/2_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/2_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/2_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/2_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/2_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/30_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/30_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/30_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/30_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/30_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/30_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/30_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/30_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/31_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/31_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/31_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/31_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/31_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/31_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/31_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/31_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/32_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/32_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/32_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/32_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/32_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/32_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/32_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/32_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/33_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/33_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/33_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/33_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/33_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/33_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/33_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/33_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/34_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/34_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/34_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/34_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/34_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/34_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/34_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/34_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/35_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/35_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/35_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/35_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/35_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/35_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/35_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/35_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/36_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/36_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/36_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/36_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/36_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/36_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/36_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/36_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/37_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/37_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/37_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/37_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/37_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/37_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/37_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/37_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/38_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/38_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/38_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/38_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/38_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/38_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/38_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/38_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/39_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/39_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/39_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/39_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/39_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/39_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/39_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/39_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/3_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/3_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/3_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/3_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/3_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/3_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/3_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/3_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/40_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/40_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/40_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/40_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/40_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/40_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/40_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/40_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/41_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/41_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/41_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/41_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/41_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/41_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/41_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/41_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/42_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/42_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/42_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/42_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/42_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/42_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/42_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/42_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/43_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/43_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/43_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/43_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/43_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/43_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/43_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/43_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/44_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/44_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/44_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/44_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/44_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/44_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/44_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/44_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/45_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/45_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/45_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/45_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/45_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/45_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/45_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/45_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/46_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/46_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/46_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/46_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/46_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/46_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/46_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/46_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/47_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/47_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/47_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/47_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/47_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/47_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/47_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/47_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/48_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/48_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/48_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/48_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/48_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/48_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/48_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/48_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/49_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/49_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/49_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/49_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/49_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/49_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/49_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/49_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/4_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/4_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/4_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/4_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/4_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/4_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/4_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/4_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/50_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/50_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/50_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/50_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/50_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/50_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/50_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/50_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/51_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/51_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/51_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/51_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/51_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/51_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/51_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/51_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/52_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/52_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/52_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/52_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/52_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/52_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/52_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/52_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/53_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/53_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/53_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/53_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/53_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/53_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/53_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/53_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/54_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/54_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/54_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/54_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/54_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/54_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/54_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/54_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/55_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/55_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/55_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/55_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/55_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/55_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/55_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/55_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/56_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/56_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/56_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/56_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/56_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/56_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/56_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/56_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/57_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/57_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/57_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/57_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/57_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/57_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/57_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/57_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/58_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/58_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/58_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/58_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/58_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/58_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/58_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/58_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/59_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/59_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/59_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/59_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/59_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/59_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/59_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/59_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/5_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/5_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/5_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/5_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/5_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/5_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/5_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/5_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/60_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/60_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/60_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/60_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/60_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/60_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/60_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/60_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/61_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/61_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/61_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/61_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/61_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/61_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/61_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/61_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/62_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/62_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/62_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/62_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/62_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/62_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/62_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/62_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/63_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/63_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/63_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/63_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/63_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/63_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/63_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/63_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/64_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/64_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/64_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/64_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/64_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/64_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/64_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/64_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/65_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/65_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/65_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/65_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/65_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/65_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/65_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/65_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/66_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/66_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/66_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/66_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/66_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/66_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/66_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/66_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/67_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/67_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/67_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/67_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/67_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/67_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/67_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/67_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/68_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/68_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/68_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/68_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/68_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/68_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/68_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/68_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/69_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/69_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/69_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/69_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/69_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/69_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/69_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/69_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/6_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/6_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/6_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/6_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/6_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/6_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/6_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/6_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/70_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/70_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/70_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/70_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/70_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/70_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/70_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/70_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/71_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/71_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/71_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/71_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/71_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/71_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/71_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/71_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/72_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/72_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/72_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/72_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/72_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/72_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/72_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/72_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/73_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/73_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/73_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/73_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/73_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/73_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/73_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/73_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/74_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/74_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/74_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/74_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/74_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/74_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/74_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/74_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/75_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/75_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/75_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/75_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/75_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/75_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/75_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/75_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/76_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/76_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/76_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/76_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/76_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/76_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/76_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/76_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/77_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/77_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/77_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/77_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/77_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/77_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/77_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/77_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/78_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/78_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/78_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/78_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/78_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/78_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/78_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/78_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/79_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/79_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/79_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/79_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/79_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/79_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/79_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/79_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/7_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/7_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/7_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/7_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/7_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/7_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/7_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/7_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/80_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/80_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/80_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/80_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/80_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/80_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/80_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/80_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/81_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/81_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/81_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/81_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/81_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/81_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/81_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/81_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/82_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/82_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/82_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/82_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/82_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/82_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/82_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/82_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/83_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/83_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/83_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/83_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/83_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/83_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/83_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/83_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/84_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/84_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/84_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/84_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/84_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/84_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/84_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/84_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/85_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/85_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/85_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/85_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/85_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/85_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/85_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/85_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/86_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/86_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/86_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/86_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/86_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/86_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/86_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/86_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/87_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/87_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/87_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/87_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/87_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/87_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/87_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/87_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/88_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/88_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/88_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/88_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/88_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/88_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/88_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/88_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/89_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/89_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/89_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/89_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/89_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/89_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/89_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/89_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/8_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/8_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/8_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/8_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/8_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/8_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/8_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/8_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/90_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/90_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/90_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/90_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/90_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/90_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/90_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/90_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/91_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/91_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/91_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/91_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/91_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/91_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/91_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/91_en.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/9_de.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/9_de.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/9_de.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/9_de.json diff --git a/mc_frontend/src/assets/h5p/voc_list/content/9_en.json b/mc_frontend/src/assets/h5p/voc_list/content/callidus/9_en.json similarity index 100% rename from mc_frontend/src/assets/h5p/voc_list/content/9_en.json rename to mc_frontend/src/assets/h5p/voc_list/content/callidus/9_en.json diff --git a/mc_frontend/src/assets/i18n/de.json b/mc_frontend/src/assets/i18n/de.json index 455bcd613e4a471524ca127b7ed2fed2ef3841c6..eaf09abe257097cb38e08d642747aba3a5d6f0b5 100644 --- a/mc_frontend/src/assets/i18n/de.json +++ b/mc_frontend/src/assets/i18n/de.json @@ -287,6 +287,8 @@ "SEARCH": "Suche", "SEARCH_REGEX_MISSING": "Bitte Suchanfrage eingeben...", "SEMANTICS": "Semantik", + "SEQUENCES": "Übungssequenzen", + "SEQUENCES_POTSDAM": "Sequenzen der Uni Potsdam", "SHARE": "Teilen", "SHOW_TEXT": "Text anzeigen", "SHOW_TEXT_TITLE": "Ausgewählte Textpassage", diff --git a/mc_frontend/src/assets/i18n/en.json b/mc_frontend/src/assets/i18n/en.json index 925c289cab41e1fff290622d523975b834b4b0c8..6b32f07c19e29ab87ee8d7704609fde9a56abc7b 100644 --- a/mc_frontend/src/assets/i18n/en.json +++ b/mc_frontend/src/assets/i18n/en.json @@ -287,6 +287,8 @@ "SEARCH": "Search", "SEARCH_REGEX_MISSING": "Please provide search query...", "SEMANTICS": "Semantics", + "SEQUENCES": "Exercise Sequences", + "SEQUENCES_POTSDAM": "Sequences by Potsdam University", "SHARE": "Share", "SHOW_TEXT": "Show text", "SHOW_TEXT_TITLE": "Selected Text", diff --git a/mc_frontend/src/configMC.ts b/mc_frontend/src/configMC.ts index df09def754c37a0b9eaca84d760be9ce24f573bf..99728e09f8c6227712f373c32d6d8df0ad817dd3 100644 --- a/mc_frontend/src/configMC.ts +++ b/mc_frontend/src/configMC.ts @@ -33,6 +33,7 @@ export default { pageUrlDocSoftware: '/doc-software', pageUrlDocVocUnit: '/doc-voc-unit', pageUrlEmbed: '/embed', + pageUrlExercise: '/exercise', pageUrlExerciseList: '/exercise-list', pageUrlExerciseParameters: '/exercise-parameters', pageUrlHome: '/home', @@ -41,6 +42,7 @@ export default { pageUrlKwic: '/kwic', pageUrlPreview: '/preview', pageUrlRanking: '/ranking', + pageUrlSequences: '/sequences', pageUrlShowText: '/show-text', pageUrlSemantics: '/semantics', pageUrlSources: '/sources',