fcad-core-dragon 2.1.1 → 2.2.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.editorconfig +7 -7
- package/.gitlab-ci.yml +106 -0
- package/.prettierrc +11 -11
- package/.vscode/extensions.json +8 -8
- package/.vscode/settings.json +16 -16
- package/CHANGELOG +529 -520
- package/README.md +57 -57
- package/artifacts/playwright-report/index.html +85 -0
- package/documentation/.vitepress/config.js +114 -114
- package/documentation/api-examples.md +49 -49
- package/documentation/composants/app-base-button.md +58 -58
- package/documentation/composants/app-base-error-display.md +59 -59
- package/documentation/composants/app-base-popover.md +68 -68
- package/documentation/composants/app-comp-audio.md +75 -75
- package/documentation/composants/app-comp-branch-buttons.md +111 -111
- package/documentation/composants/app-comp-button-progress.md +53 -53
- package/documentation/composants/app-comp-carousel.md +53 -53
- package/documentation/composants/app-comp-container.md +53 -53
- package/documentation/composants/app-comp-input-checkbox-next.md +42 -42
- package/documentation/composants/app-comp-input-dropdown-next.md +34 -34
- package/documentation/composants/app-comp-input-radio-next.md +39 -39
- package/documentation/composants/app-comp-input-text-next.md +35 -35
- package/documentation/composants/app-comp-input-text-table-next.md +34 -34
- package/documentation/composants/app-comp-input-text-to-fill-dropdown-next.md +53 -53
- package/documentation/composants/app-comp-input-text-to-fill-next.md +31 -31
- package/documentation/composants/app-comp-jauge.md +31 -31
- package/documentation/composants/app-comp-menu-item.md +55 -55
- package/documentation/composants/app-comp-menu.md +29 -29
- package/documentation/composants/app-comp-navigation.md +41 -41
- package/documentation/composants/app-comp-note-call.md +53 -53
- package/documentation/composants/app-comp-note-credit.md +53 -53
- package/documentation/composants/app-comp-play-bar-next.md +53 -53
- package/documentation/composants/app-comp-pop-up-next.md +93 -93
- package/documentation/composants/app-comp-quiz-next.md +235 -235
- package/documentation/composants/app-comp-quiz-recall.md +53 -53
- package/documentation/composants/app-comp-svg-next.md +53 -53
- package/documentation/composants/app-comp-table-of-content.md +50 -50
- package/documentation/composants/app-comp-video-player.md +82 -82
- package/documentation/composants.md +46 -46
- package/documentation/composants_critiques/ModelPageComposant.md +53 -53
- package/documentation/composants_critiques/app-base-module.md +43 -43
- package/documentation/composants_critiques/app-base-page.md +48 -48
- package/documentation/composants_critiques/app-base.md +311 -311
- package/documentation/composants_critiques/main.md +15 -15
- package/documentation/demarrage.md +50 -50
- package/documentation/deploiement.md +57 -57
- package/documentation/index.md +33 -33
- package/documentation/markdown-examples.md +85 -85
- package/documentation/public/vite.svg +14 -14
- package/documentation/public/vuejs.svg +1 -1
- package/documentation/public/vuetify.svg +5 -5
- package/eslint.config.js +60 -60
- package/package.json +69 -59
- package/playwright/index.html +12 -0
- package/playwright/index.js +21 -0
- package/playwright-ct.config.js +95 -0
- package/src/$locales/en.json +157 -157
- package/src/$locales/fr.json +120 -120
- package/src/assets/data/onboardingMessages.json +47 -47
- package/src/components/AppBase.vue +1171 -1169
- package/src/components/AppBaseButton.vue +90 -95
- package/src/components/AppBaseErrorDisplay.vue +438 -438
- package/src/components/AppBaseFlipCard.vue +84 -84
- package/src/components/AppBaseModule.vue +1639 -1634
- package/src/components/AppBasePage.vue +862 -866
- package/src/components/AppBasePopover.vue +41 -41
- package/src/components/AppBaseSkeleton.vue +66 -66
- package/src/components/AppCompAudio.vue +261 -256
- package/src/components/AppCompBranchButtons.vue +508 -508
- package/src/components/AppCompButtonProgress.vue +137 -132
- package/src/components/AppCompCarousel.vue +342 -336
- package/src/components/AppCompContainer.vue +29 -29
- package/src/components/AppCompInputCheckBoxNx.vue +326 -323
- package/src/components/AppCompInputDropdownNx.vue +302 -299
- package/src/components/AppCompInputRadioNx.vue +288 -284
- package/src/components/AppCompInputTextNx.vue +154 -153
- package/src/components/AppCompInputTextTableNx.vue +205 -202
- package/src/components/AppCompInputTextToFillDropdownNx.vue +341 -340
- package/src/components/AppCompInputTextToFillNx.vue +293 -313
- package/src/components/AppCompJauge.vue +81 -81
- package/src/components/AppCompMenu.vue +6 -1
- package/src/components/AppCompMenuItem.vue +246 -240
- package/src/components/AppCompNavigation.vue +977 -972
- package/src/components/AppCompNoteCall.vue +167 -161
- package/src/components/AppCompNoteCredit.vue +496 -491
- package/src/components/AppCompPlayBarNext.vue +2288 -2288
- package/src/components/AppCompPopUpNext.vue +508 -504
- package/src/components/AppCompQuizNext.vue +515 -510
- package/src/components/AppCompQuizRecall.vue +365 -350
- package/src/components/AppCompSVGNext.vue +346 -346
- package/src/components/AppCompSettingsMenu.vue +177 -172
- package/src/components/AppCompTableOfContent.vue +433 -427
- package/src/components/AppCompVideoPlayer.vue +378 -377
- package/src/components/AppCompViewDisplay.vue +6 -6
- package/src/components/BaseModule.vue +55 -55
- package/src/composables/useIdleDetector.js +56 -56
- package/src/composables/useQuiz.js +89 -89
- package/src/composables/useTimer.js +172 -172
- package/src/directives/nvdaFix.js +53 -53
- package/src/externalComps/ModuleView.vue +22 -22
- package/src/externalComps/SummaryView.vue +91 -91
- package/src/main.js +506 -476
- package/src/module/stores/appStore.js +960 -947
- package/src/module/xapi/ADL.js +520 -520
- package/src/module/xapi/Crypto/Hasher.js +241 -241
- package/src/module/xapi/Crypto/WordArray.js +278 -278
- package/src/module/xapi/Crypto/algorithms/BufferedBlockAlgorithm.js +103 -103
- package/src/module/xapi/Crypto/algorithms/C_algo.js +315 -315
- package/src/module/xapi/Crypto/algorithms/HMAC.js +9 -9
- package/src/module/xapi/Crypto/algorithms/SHA1.js +9 -9
- package/src/module/xapi/Crypto/encoders/Base.js +105 -105
- package/src/module/xapi/Crypto/encoders/Base64.js +99 -99
- package/src/module/xapi/Crypto/encoders/Hex.js +61 -61
- package/src/module/xapi/Crypto/encoders/Latin1.js +61 -61
- package/src/module/xapi/Crypto/encoders/Utf8.js +45 -45
- package/src/module/xapi/Crypto/index.js +53 -53
- package/src/module/xapi/Statement/activity.js +47 -47
- package/src/module/xapi/Statement/agent.js +55 -55
- package/src/module/xapi/Statement/group.js +26 -26
- package/src/module/xapi/Statement/index.js +259 -259
- package/src/module/xapi/Statement/statement.js +253 -253
- package/src/module/xapi/Statement/statementRef.js +23 -23
- package/src/module/xapi/Statement/substatement.js +22 -22
- package/src/module/xapi/Statement/verb.js +36 -36
- package/src/module/xapi/activitytypes.js +17 -17
- package/src/module/xapi/launch.js +157 -157
- package/src/module/xapi/utils.js +167 -167
- package/src/module/xapi/verbs.js +294 -294
- package/src/module/xapi/wrapper.js +1895 -1895
- package/src/module/xapi/xapiStatement.js +444 -444
- package/src/plugins/analytics.js +34 -34
- package/src/plugins/bus.js +12 -8
- package/src/plugins/gsap.js +17 -17
- package/src/plugins/helper.js +355 -358
- package/src/plugins/i18n.js +29 -26
- package/src/plugins/idb.js +227 -227
- package/src/plugins/save.js +37 -37
- package/src/plugins/scorm.js +287 -287
- package/src/plugins/xapi.js +11 -11
- package/src/public/index.html +33 -33
- package/src/router/index.js +57 -57
- package/src/router/routes.js +312 -312
- package/src/shared/generalfuncs.js +344 -344
- package/src/shared/validators.js +1018 -1018
- package/tests/component/AppBaseButton.spec.js +53 -0
- package/tests/component/pinia.spec.js +24 -0
- package/{src/components/tests__ → tests/unit}/AppBaseButton.spec.js +53 -53
- package/tests/unit/AppCompAudio.spec.js +134 -0
- package/tests/unit/AppCompCarousel.spec.js +54 -0
- package/tests/unit/AppCompInputCheckBoxNx.spec.js +59 -0
- package/tests/unit/AppCompInputDropdownNx.spec.js +51 -0
- package/tests/unit/AppCompInputRadioNx.spec.js +59 -0
- package/tests/unit/AppCompInputTextNx.spec.js +44 -0
- package/tests/unit/AppCompInputTextTableNx.spec.js +77 -0
- package/tests/unit/AppCompInputTextToFillDropdownNx.spec.js +60 -0
- package/tests/unit/AppCompInputTextToFillNx.spec.js +45 -0
- package/tests/unit/AppCompNoteCredit.spec.js +58 -0
- package/tests/unit/AppCompQuizNext.spec.js +112 -0
- package/tests/unit/AppCompVideoPlayer.spec.js +169 -0
- package/tests/unit/useQuiz.spec.js +72 -0
- package/{src/components/tests__ → tests/unit}/useTimer.spec.js +91 -91
- package/vitest.config.js +42 -19
- package/vitest.setup.js +96 -0
- package/src/components/AppBaseButton.test.js +0 -21
package/package.json
CHANGED
|
@@ -1,59 +1,69 @@
|
|
|
1
|
-
{
|
|
2
|
-
"
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
"
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
"
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
"
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
"
|
|
58
|
-
|
|
59
|
-
|
|
1
|
+
{
|
|
2
|
+
"browserslist": [
|
|
3
|
+
"> 1%",
|
|
4
|
+
"last 2 versions",
|
|
5
|
+
"not dead"
|
|
6
|
+
],
|
|
7
|
+
"config": {
|
|
8
|
+
"projname": ""
|
|
9
|
+
},
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"axios": "^1.6.8",
|
|
12
|
+
"gsap": "^3.12.5",
|
|
13
|
+
"idb": "^8.0.0",
|
|
14
|
+
"mobile-detect": "^1.4.5",
|
|
15
|
+
"pinia": "^3.0.3",
|
|
16
|
+
"tiny-emitter": "^2.1.0",
|
|
17
|
+
"vue-safe-teleport": "^0.1.2"
|
|
18
|
+
},
|
|
19
|
+
"devDependencies": {
|
|
20
|
+
"@eslint/js": "^9.38.0",
|
|
21
|
+
"@pinia/testing": "^1.0.3",
|
|
22
|
+
"@playwright/experimental-ct-vue": "^1.56.1",
|
|
23
|
+
"@playwright/test": "^1.56.1",
|
|
24
|
+
"@types/node": "^24.10.0",
|
|
25
|
+
"@vitejs/plugin-vue": "^6.0.1",
|
|
26
|
+
"@vitest/coverage-v8": "^4.0.15",
|
|
27
|
+
"@vue/eslint-config-prettier": "^10.2.0",
|
|
28
|
+
"@vue/test-utils": "^2.4.6",
|
|
29
|
+
"eslint": "^9.38.0",
|
|
30
|
+
"eslint-plugin-cypress": "^5.1.0",
|
|
31
|
+
"eslint-plugin-vue": "~10.3.0",
|
|
32
|
+
"globals": "^16.4.0",
|
|
33
|
+
"happy-dom": "^20.0.10",
|
|
34
|
+
"jsdom": "^25.0.1",
|
|
35
|
+
"nodemon": "^3.1.0",
|
|
36
|
+
"prettier": "^3.6.2",
|
|
37
|
+
"sass-embedded": "^1.91.0",
|
|
38
|
+
"vitepress": "^1.6.3",
|
|
39
|
+
"vitest": "^4.0.15",
|
|
40
|
+
"vue-i18n": "^11.1.12",
|
|
41
|
+
"vue-router": "^4.4.5",
|
|
42
|
+
"vuetify": "^3.10.10"
|
|
43
|
+
},
|
|
44
|
+
"engines": {
|
|
45
|
+
"node": ">0.11.9"
|
|
46
|
+
},
|
|
47
|
+
"main": "./src/main.js",
|
|
48
|
+
"name": "fcad-core-dragon",
|
|
49
|
+
"private": false,
|
|
50
|
+
"scripts": {
|
|
51
|
+
"build": "vite build",
|
|
52
|
+
"dev": "vite",
|
|
53
|
+
"docs:build": "vitepress build documentation",
|
|
54
|
+
"docs:dev": "vitepress dev documentation",
|
|
55
|
+
"docs:preview": "vitepress preview documentation",
|
|
56
|
+
"format": "prettier --write src/",
|
|
57
|
+
"lintfix": "eslint --fix src",
|
|
58
|
+
"lintreport": "eslint ./src",
|
|
59
|
+
"preview": "vite preview",
|
|
60
|
+
"reset": "rm -rf ./node_modules package-lock.json .cache dist && npm i && npm run watch",
|
|
61
|
+
"test-ct": "playwright test -c playwright-ct.config.js",
|
|
62
|
+
"test:unit": "vitest",
|
|
63
|
+
"test:unit:coverage": "vitest --coverage",
|
|
64
|
+
"vue": "vue",
|
|
65
|
+
"watch": "nodemon -e js,vue,html,json -x yalc publish --push"
|
|
66
|
+
},
|
|
67
|
+
"type": "module",
|
|
68
|
+
"version": "2.2.0-beta.1"
|
|
69
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>Testing Page</title>
|
|
7
|
+
</head>
|
|
8
|
+
<body>
|
|
9
|
+
<div id="root"></div>
|
|
10
|
+
<script type="module" src="./index.js"></script>
|
|
11
|
+
</body>
|
|
12
|
+
</html>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Import styles, initialize component theme here.
|
|
2
|
+
//import '../src/sass/main.scss'
|
|
3
|
+
import { beforeMount } from '@playwright/experimental-ct-vue/hooks'
|
|
4
|
+
import { createTestingPinia } from '@pinia/testing'
|
|
5
|
+
// import { StoreState } from 'pinia'
|
|
6
|
+
// import { useAppStore } from '../src/module/stores/appStore.js'
|
|
7
|
+
|
|
8
|
+
beforeMount(async ({ hooksConfig }) => {
|
|
9
|
+
createTestingPinia({
|
|
10
|
+
initialState: hooksConfig?.store,
|
|
11
|
+
/**
|
|
12
|
+
* Use HTTP intercepting to mock API calls instead:
|
|
13
|
+
* https://playwright.dev/docs/mock#mock-api-requests
|
|
14
|
+
*/
|
|
15
|
+
stubActions: false,
|
|
16
|
+
createSpy(args) {
|
|
17
|
+
console.log('spy', args)
|
|
18
|
+
return () => console.log('spy-returns')
|
|
19
|
+
}
|
|
20
|
+
})
|
|
21
|
+
})
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
import { defineConfig, devices } from '@playwright/experimental-ct-vue'
|
|
3
|
+
import { mergeConfig } from 'vite'
|
|
4
|
+
import vue from '@vitejs/plugin-vue'
|
|
5
|
+
import path from 'path'
|
|
6
|
+
import fs from 'fs'
|
|
7
|
+
import { pathToFileURL } from 'url'
|
|
8
|
+
import { fileURLToPath } from 'url'
|
|
9
|
+
|
|
10
|
+
const __filename = fileURLToPath(import.meta.url)
|
|
11
|
+
const __dirname = path.dirname(__filename)
|
|
12
|
+
|
|
13
|
+
//===================================================
|
|
14
|
+
// Load base Vite config
|
|
15
|
+
const viteConfigPath = process.env.VITE_CONFIG_PATH
|
|
16
|
+
? path.resolve(process.env.VITE_CONFIG_PATH)
|
|
17
|
+
: path.resolve(
|
|
18
|
+
path.dirname(import.meta.url.replace('file:///', '')),
|
|
19
|
+
'vite.config.js'
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
// if (!fs.existsSync(viteConfigPath)) {
|
|
23
|
+
// throw new Error(`vite.config.js introuvable à ${viteConfigPath}`)
|
|
24
|
+
// }
|
|
25
|
+
|
|
26
|
+
const viteConfig = !fs.existsSync(viteConfigPath)
|
|
27
|
+
? {}
|
|
28
|
+
: (await import(pathToFileURL(viteConfigPath).href)).default
|
|
29
|
+
//===================================================
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @see https://playwright.dev/docs/test-configuration
|
|
33
|
+
*/
|
|
34
|
+
export default defineConfig({
|
|
35
|
+
testDir: './tests/component',
|
|
36
|
+
testMatch: ['**/*.spec.js'],
|
|
37
|
+
/* The base directory, relative to the config file, for snapshot files created with toMatchSnapshot and toHaveScreenshot. */
|
|
38
|
+
snapshotDir: './__snapshots__',
|
|
39
|
+
/* Maximum time one test can run for. */
|
|
40
|
+
timeout: 30 * 1000,
|
|
41
|
+
/* Run tests in files in parallel */
|
|
42
|
+
fullyParallel: true,
|
|
43
|
+
/* Fail the build on CI if you accidentally left test.only in the source code. */
|
|
44
|
+
forbidOnly: !!process.env.CI,
|
|
45
|
+
/* Retry on CI only */
|
|
46
|
+
retries: process.env.CI ? 2 : 0,
|
|
47
|
+
/* Opt out of parallel tests on CI. */
|
|
48
|
+
workers: process.env.CI ? 1 : undefined,
|
|
49
|
+
/* Reporter to use. See https://playwright.dev/docs/test-reporters */
|
|
50
|
+
reporter: [
|
|
51
|
+
['line'],
|
|
52
|
+
['junit', { outputFile: 'results.xml' }],
|
|
53
|
+
['html', { outputFolder: 'playwright-report', open: 'never' }]
|
|
54
|
+
],
|
|
55
|
+
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
|
|
56
|
+
use: {
|
|
57
|
+
/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
|
|
58
|
+
trace: 'on-first-retry',
|
|
59
|
+
|
|
60
|
+
/* Port to use for Playwright component endpoint. */
|
|
61
|
+
ctPort: 3100,
|
|
62
|
+
headless: true
|
|
63
|
+
},
|
|
64
|
+
ctViteConfig: {
|
|
65
|
+
plugins: [vue()],
|
|
66
|
+
optimizeDeps: { include: ['vue', 'pinia', 'vue-router'] },
|
|
67
|
+
resolve: {
|
|
68
|
+
alias: {
|
|
69
|
+
'@': path.resolve(__dirname, './src')
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
expect: {
|
|
74
|
+
/**
|
|
75
|
+
* Maximum time expect() should wait for the condition to be met.
|
|
76
|
+
* For example in `await expect(locator).toHaveText();`
|
|
77
|
+
*/
|
|
78
|
+
timeout: 10000
|
|
79
|
+
},
|
|
80
|
+
/* Configure projects for major browsers */
|
|
81
|
+
projects: [
|
|
82
|
+
{
|
|
83
|
+
name: 'chromium',
|
|
84
|
+
use: { ...devices['Desktop Chrome'] }
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
name: 'firefox',
|
|
88
|
+
use: { ...devices['Desktop Firefox'] }
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
name: 'webkit',
|
|
92
|
+
use: { ...devices['Desktop Safari'] }
|
|
93
|
+
}
|
|
94
|
+
]
|
|
95
|
+
})
|
package/src/$locales/en.json
CHANGED
|
@@ -1,157 +1,157 @@
|
|
|
1
|
-
{
|
|
2
|
-
"button": {
|
|
3
|
-
"carousel_next": "Next",
|
|
4
|
-
"carousel_prev": "Previous",
|
|
5
|
-
"full_screen_on": "Full-screen",
|
|
6
|
-
"full_screen_off": "Exit full-screen",
|
|
7
|
-
"go_to_next_page": "Go to the next page",
|
|
8
|
-
"go_to_previous_page": "Go to the previous page",
|
|
9
|
-
"go_to_first_page": "Go to the first page",
|
|
10
|
-
"go_to_lesson": "Go to the next lesson",
|
|
11
|
-
"go_to_menu": "Go to the lesson contents page",
|
|
12
|
-
"info": "Info",
|
|
13
|
-
"menu": "Start",
|
|
14
|
-
"menu_item": {
|
|
15
|
-
"end": "Pick up where I left off",
|
|
16
|
-
"start": "Start the lesson"
|
|
17
|
-
},
|
|
18
|
-
"mute": "Mute",
|
|
19
|
-
"next": "Next",
|
|
20
|
-
"next_activity": "Go to the next activity",
|
|
21
|
-
"pause": "Pause",
|
|
22
|
-
"play": "Play",
|
|
23
|
-
"previous": "Previous",
|
|
24
|
-
"quiz_verify": "Check",
|
|
25
|
-
"replay": "Replay",
|
|
26
|
-
"save": "Save",
|
|
27
|
-
"subtitle_off": "Hide subtitles",
|
|
28
|
-
"subtitle_on": "Display subtitles",
|
|
29
|
-
"submit": "Check",
|
|
30
|
-
"toc": "Progression",
|
|
31
|
-
"toc_title": "Show activity contents",
|
|
32
|
-
"transcript_off": "Hide transcript",
|
|
33
|
-
"transcript_on": "Show transcript",
|
|
34
|
-
"unmute": "Unmute",
|
|
35
|
-
"volume": "Volume",
|
|
36
|
-
"closePopUp": "Close"
|
|
37
|
-
},
|
|
38
|
-
"instruction": {
|
|
39
|
-
"branch": "Click on the item to find additional information.",
|
|
40
|
-
"bif": "Select the path you wish to discover.",
|
|
41
|
-
"choix_mult": "Select one or more options, then check your answer.",
|
|
42
|
-
"choix_mult_no_validation": "Select one or more options, then confirm your answer.",
|
|
43
|
-
"choix_unique": "Select your answer, then check it.",
|
|
44
|
-
"choix_unique_no_validation": "Select an option, then confirm your answer.",
|
|
45
|
-
"click_show": "Click on the item to find additional information.",
|
|
46
|
-
"dropdown": "Match the correct answers to the corresponding statements, then check your answers.",
|
|
47
|
-
"dropdown_no_validation": "Match an answer to each statement, then confirm your answers.",
|
|
48
|
-
"pop_over": "Hover over the item to display the information.",
|
|
49
|
-
"reponse_ouverte": "Write your answer and save it.",
|
|
50
|
-
"reponse_ouverte_no_validation": "Write your answer and save it.",
|
|
51
|
-
"texte_tableau": {
|
|
52
|
-
"multi": "Write your answers, then check them.",
|
|
53
|
-
"single": "Write your answer, then check it."
|
|
54
|
-
},
|
|
55
|
-
"texte_tableau_no_validation": {
|
|
56
|
-
"multi": "Write your answers, then save them.",
|
|
57
|
-
"single": "Write your answer and save it."
|
|
58
|
-
},
|
|
59
|
-
"texte_troue": {
|
|
60
|
-
"multi": "Write your answers, then check them.",
|
|
61
|
-
"single": "Write your answer, then check it."
|
|
62
|
-
},
|
|
63
|
-
"texte_troue_no_validation": {
|
|
64
|
-
"multi": "Write your answers, then save them.",
|
|
65
|
-
"single": "Write your answer and save it."
|
|
66
|
-
},
|
|
67
|
-
"texte_troue_select": {
|
|
68
|
-
"multi": "Select some options, then check your answers.",
|
|
69
|
-
"single": "Select an option, then check your answer."
|
|
70
|
-
},
|
|
71
|
-
"texte_troue_select_no_validation": {
|
|
72
|
-
"multi": "Select some options, then save them.",
|
|
73
|
-
"single": "Select an option, and save it."
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
|
-
"label": {
|
|
77
|
-
"side_panel": "side panel",
|
|
78
|
-
"timer": "estimated time",
|
|
79
|
-
"info_long": "Display notes and references",
|
|
80
|
-
"note_reference": "???"
|
|
81
|
-
},
|
|
82
|
-
"message": {
|
|
83
|
-
"err_download_file": "The file download has failed.",
|
|
84
|
-
"dropdown_list": "Dropdown list",
|
|
85
|
-
"first_option_dropdown": "Choose an option",
|
|
86
|
-
"no_attempts": "You have no more attempts.",
|
|
87
|
-
"loading_state_msg": "Loading. Please wait...",
|
|
88
|
-
"progress_card": "Progress status:",
|
|
89
|
-
"recall_done": "You have answered the question :",
|
|
90
|
-
"recall_undone": "You have not answered the question.",
|
|
91
|
-
"skip_content": "Skip to the main content."
|
|
92
|
-
},
|
|
93
|
-
"popup": {
|
|
94
|
-
"text_what_to_do": "What do you wish to do?"
|
|
95
|
-
},
|
|
96
|
-
"text": {
|
|
97
|
-
"activity": "Activity",
|
|
98
|
-
"activity_title": "My activities",
|
|
99
|
-
"activity_progress": "Progress status:",
|
|
100
|
-
"carousel": "Carousel",
|
|
101
|
-
"conclusion": "Conclusion to the Lesson",
|
|
102
|
-
"complete": "Completed",
|
|
103
|
-
"error": "error",
|
|
104
|
-
"introduction": "Introduction to the Lesson",
|
|
105
|
-
"lesson": "Lesson",
|
|
106
|
-
"quiz": "Words to complete the sentence",
|
|
107
|
-
"place_holder": {
|
|
108
|
-
"for_lesson_title": "Title of this lesson",
|
|
109
|
-
"for_textarea": "Write here.",
|
|
110
|
-
"for_title_btn_progress": "Click to discover the content"
|
|
111
|
-
},
|
|
112
|
-
"of": "of",
|
|
113
|
-
"slide": "Slide",
|
|
114
|
-
"title_note": "Note(s)",
|
|
115
|
-
"title_credit": "Credit(s)",
|
|
116
|
-
"err_credit": "Le texte de la page ne comporte pas d’appel de note correspondant à cette note-ci. Un appel de note doit être ajouté.",
|
|
117
|
-
"title_link_bas": "Go back to the text",
|
|
118
|
-
"title_link_call": "Go to the footnote",
|
|
119
|
-
"toc": "Show activity contents",
|
|
120
|
-
"title_content_view": "Contents",
|
|
121
|
-
"transcript": "Transcript"
|
|
122
|
-
},
|
|
123
|
-
"user_settings": {
|
|
124
|
-
"autoplay": "Automatic playback of multimedia content",
|
|
125
|
-
"close": "Close this window",
|
|
126
|
-
"onboarding": "Turn on the guided tour",
|
|
127
|
-
"subtitles": "Always show subtitles when playing multimedia content",
|
|
128
|
-
"title": "Settings"
|
|
129
|
-
},
|
|
130
|
-
"quizState": {
|
|
131
|
-
"goodAnswer": "Good answer",
|
|
132
|
-
"badAnswer": "Wrong answer",
|
|
133
|
-
"neutralAnswer": "Neutral answer",
|
|
134
|
-
"answers": "Answer choices",
|
|
135
|
-
"radioFieldset": "Select one answer from the following",
|
|
136
|
-
"checkboxFieldset": "Select one or more answers from the following",
|
|
137
|
-
"options": "options",
|
|
138
|
-
"textTableFieldset1": "Fill the",
|
|
139
|
-
"textTableFieldset2": "following text fields",
|
|
140
|
-
"dropdownFieldsetSingle": "Select an answer in the following dropdown list",
|
|
141
|
-
"dropdownFieldsetMulti1": "Select an answer in the",
|
|
142
|
-
"dropdownFieldsetMulti2": "following dropdown lists",
|
|
143
|
-
"textToFillFieldset1": "In the following text, fill the",
|
|
144
|
-
"textToFillFieldset2": "text fields",
|
|
145
|
-
"textToFillDropdownFieldset1": "In the following text, Select an answer in the",
|
|
146
|
-
"textToFillDropdownFieldset2": "text fields"
|
|
147
|
-
},
|
|
148
|
-
"a11y_sr": {
|
|
149
|
-
"time": {
|
|
150
|
-
"hours": "hour | hours",
|
|
151
|
-
"minute": "minute | minutes",
|
|
152
|
-
"second": "second |seconds"
|
|
153
|
-
},
|
|
154
|
-
"seek_slider": "Seek slider",
|
|
155
|
-
"range_expression": "at %x of %y."
|
|
156
|
-
}
|
|
157
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"button": {
|
|
3
|
+
"carousel_next": "Next",
|
|
4
|
+
"carousel_prev": "Previous",
|
|
5
|
+
"full_screen_on": "Full-screen",
|
|
6
|
+
"full_screen_off": "Exit full-screen",
|
|
7
|
+
"go_to_next_page": "Go to the next page",
|
|
8
|
+
"go_to_previous_page": "Go to the previous page",
|
|
9
|
+
"go_to_first_page": "Go to the first page",
|
|
10
|
+
"go_to_lesson": "Go to the next lesson",
|
|
11
|
+
"go_to_menu": "Go to the lesson contents page",
|
|
12
|
+
"info": "Info",
|
|
13
|
+
"menu": "Start",
|
|
14
|
+
"menu_item": {
|
|
15
|
+
"end": "Pick up where I left off",
|
|
16
|
+
"start": "Start the lesson"
|
|
17
|
+
},
|
|
18
|
+
"mute": "Mute",
|
|
19
|
+
"next": "Next",
|
|
20
|
+
"next_activity": "Go to the next activity",
|
|
21
|
+
"pause": "Pause",
|
|
22
|
+
"play": "Play",
|
|
23
|
+
"previous": "Previous",
|
|
24
|
+
"quiz_verify": "Check",
|
|
25
|
+
"replay": "Replay",
|
|
26
|
+
"save": "Save",
|
|
27
|
+
"subtitle_off": "Hide subtitles",
|
|
28
|
+
"subtitle_on": "Display subtitles",
|
|
29
|
+
"submit": "Check",
|
|
30
|
+
"toc": "Progression",
|
|
31
|
+
"toc_title": "Show activity contents",
|
|
32
|
+
"transcript_off": "Hide transcript",
|
|
33
|
+
"transcript_on": "Show transcript",
|
|
34
|
+
"unmute": "Unmute",
|
|
35
|
+
"volume": "Volume",
|
|
36
|
+
"closePopUp": "Close"
|
|
37
|
+
},
|
|
38
|
+
"instruction": {
|
|
39
|
+
"branch": "Click on the item to find additional information.",
|
|
40
|
+
"bif": "Select the path you wish to discover.",
|
|
41
|
+
"choix_mult": "Select one or more options, then check your answer.",
|
|
42
|
+
"choix_mult_no_validation": "Select one or more options, then confirm your answer.",
|
|
43
|
+
"choix_unique": "Select your answer, then check it.",
|
|
44
|
+
"choix_unique_no_validation": "Select an option, then confirm your answer.",
|
|
45
|
+
"click_show": "Click on the item to find additional information.",
|
|
46
|
+
"dropdown": "Match the correct answers to the corresponding statements, then check your answers.",
|
|
47
|
+
"dropdown_no_validation": "Match an answer to each statement, then confirm your answers.",
|
|
48
|
+
"pop_over": "Hover over the item to display the information.",
|
|
49
|
+
"reponse_ouverte": "Write your answer and save it.",
|
|
50
|
+
"reponse_ouverte_no_validation": "Write your answer and save it.",
|
|
51
|
+
"texte_tableau": {
|
|
52
|
+
"multi": "Write your answers, then check them.",
|
|
53
|
+
"single": "Write your answer, then check it."
|
|
54
|
+
},
|
|
55
|
+
"texte_tableau_no_validation": {
|
|
56
|
+
"multi": "Write your answers, then save them.",
|
|
57
|
+
"single": "Write your answer and save it."
|
|
58
|
+
},
|
|
59
|
+
"texte_troue": {
|
|
60
|
+
"multi": "Write your answers, then check them.",
|
|
61
|
+
"single": "Write your answer, then check it."
|
|
62
|
+
},
|
|
63
|
+
"texte_troue_no_validation": {
|
|
64
|
+
"multi": "Write your answers, then save them.",
|
|
65
|
+
"single": "Write your answer and save it."
|
|
66
|
+
},
|
|
67
|
+
"texte_troue_select": {
|
|
68
|
+
"multi": "Select some options, then check your answers.",
|
|
69
|
+
"single": "Select an option, then check your answer."
|
|
70
|
+
},
|
|
71
|
+
"texte_troue_select_no_validation": {
|
|
72
|
+
"multi": "Select some options, then save them.",
|
|
73
|
+
"single": "Select an option, and save it."
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"label": {
|
|
77
|
+
"side_panel": "side panel",
|
|
78
|
+
"timer": "estimated time",
|
|
79
|
+
"info_long": "Display notes and references",
|
|
80
|
+
"note_reference": "???"
|
|
81
|
+
},
|
|
82
|
+
"message": {
|
|
83
|
+
"err_download_file": "The file download has failed.",
|
|
84
|
+
"dropdown_list": "Dropdown list",
|
|
85
|
+
"first_option_dropdown": "Choose an option",
|
|
86
|
+
"no_attempts": "You have no more attempts.",
|
|
87
|
+
"loading_state_msg": "Loading. Please wait...",
|
|
88
|
+
"progress_card": "Progress status:",
|
|
89
|
+
"recall_done": "You have answered the question :",
|
|
90
|
+
"recall_undone": "You have not answered the question.",
|
|
91
|
+
"skip_content": "Skip to the main content."
|
|
92
|
+
},
|
|
93
|
+
"popup": {
|
|
94
|
+
"text_what_to_do": "What do you wish to do?"
|
|
95
|
+
},
|
|
96
|
+
"text": {
|
|
97
|
+
"activity": "Activity",
|
|
98
|
+
"activity_title": "My activities",
|
|
99
|
+
"activity_progress": "Progress status:",
|
|
100
|
+
"carousel": "Carousel",
|
|
101
|
+
"conclusion": "Conclusion to the Lesson",
|
|
102
|
+
"complete": "Completed",
|
|
103
|
+
"error": "error",
|
|
104
|
+
"introduction": "Introduction to the Lesson",
|
|
105
|
+
"lesson": "Lesson",
|
|
106
|
+
"quiz": "Words to complete the sentence",
|
|
107
|
+
"place_holder": {
|
|
108
|
+
"for_lesson_title": "Title of this lesson",
|
|
109
|
+
"for_textarea": "Write here.",
|
|
110
|
+
"for_title_btn_progress": "Click to discover the content"
|
|
111
|
+
},
|
|
112
|
+
"of": "of",
|
|
113
|
+
"slide": "Slide",
|
|
114
|
+
"title_note": "Note(s)",
|
|
115
|
+
"title_credit": "Credit(s)",
|
|
116
|
+
"err_credit": "Le texte de la page ne comporte pas d’appel de note correspondant à cette note-ci. Un appel de note doit être ajouté.",
|
|
117
|
+
"title_link_bas": "Go back to the text",
|
|
118
|
+
"title_link_call": "Go to the footnote",
|
|
119
|
+
"toc": "Show activity contents",
|
|
120
|
+
"title_content_view": "Contents",
|
|
121
|
+
"transcript": "Transcript"
|
|
122
|
+
},
|
|
123
|
+
"user_settings": {
|
|
124
|
+
"autoplay": "Automatic playback of multimedia content",
|
|
125
|
+
"close": "Close this window",
|
|
126
|
+
"onboarding": "Turn on the guided tour",
|
|
127
|
+
"subtitles": "Always show subtitles when playing multimedia content",
|
|
128
|
+
"title": "Settings"
|
|
129
|
+
},
|
|
130
|
+
"quizState": {
|
|
131
|
+
"goodAnswer": "Good answer",
|
|
132
|
+
"badAnswer": "Wrong answer",
|
|
133
|
+
"neutralAnswer": "Neutral answer",
|
|
134
|
+
"answers": "Answer choices",
|
|
135
|
+
"radioFieldset": "Select one answer from the following",
|
|
136
|
+
"checkboxFieldset": "Select one or more answers from the following",
|
|
137
|
+
"options": "options",
|
|
138
|
+
"textTableFieldset1": "Fill the",
|
|
139
|
+
"textTableFieldset2": "following text fields",
|
|
140
|
+
"dropdownFieldsetSingle": "Select an answer in the following dropdown list",
|
|
141
|
+
"dropdownFieldsetMulti1": "Select an answer in the",
|
|
142
|
+
"dropdownFieldsetMulti2": "following dropdown lists",
|
|
143
|
+
"textToFillFieldset1": "In the following text, fill the",
|
|
144
|
+
"textToFillFieldset2": "text fields",
|
|
145
|
+
"textToFillDropdownFieldset1": "In the following text, Select an answer in the",
|
|
146
|
+
"textToFillDropdownFieldset2": "text fields"
|
|
147
|
+
},
|
|
148
|
+
"a11y_sr": {
|
|
149
|
+
"time": {
|
|
150
|
+
"hours": "hour | hours",
|
|
151
|
+
"minute": "minute | minutes",
|
|
152
|
+
"second": "second |seconds"
|
|
153
|
+
},
|
|
154
|
+
"seek_slider": "Seek slider",
|
|
155
|
+
"range_expression": "at %x of %y."
|
|
156
|
+
}
|
|
157
|
+
}
|