A configurable SCORM 1.2 package for supporting multiple SCO's in different languages.
- Clone or download this repo to a new folder. The included package folder is what you're most interested in, as this will form the basis of your multi-language SCO.
- Add all extracted SCO packages into the "package/scos" folder.
- Update the configuration.
- Update the root IMS manifest in the package folder.
- Zip the package folder from its root and import it into a SCORM 1.2 conformant LMS.
All of the configuration exists in a single file, and must be updated before the wrapper will function as expected. This file contains several comments, all of which are included below as well.
Many of the options will only need to be updated when first introducing this wrapper into your LMS environment. From then on, you will more than likely use those same settings.
"/conf/conf.js"
In order to keep language data separate between SCOs, set a unique identifier for this package. You may use the same value as found in the manifest its root "identifier" attribue. However, some may find the manifest's identifier is still not unique across disparate manifests. If this is the case for you, use some other convention.
COURSE_ID: "MANIFEST_001",
Each SCO should be named simiarly with the same prefix, followed by a "_[LANGUAGE]" suffix, denoting the language of the SCO. This will be used when launching the SCO, in conjunction with the "lang" values included in the "SCOS" list for each language.
SCO_ROOT_FOLDER: "My_Awesome_Training_Module",
Based on the example above, the multi-lang-sco utility will assume the following folder exists for English:
"My_Awesome_Training_Module_English"
Configuration for the SCOs existing in this package. For each language, a folder should exist, containing the SCO for that language. Both the foldername and language should be specified for each. All SCOs must reside inside the root "scos" folder. English is stored automatically as the default to speed up UX. Note: The foldername must not include the preceding "scos/".
SCOS: [
{ lang: "English", label: "English" },
{ lang: "Dutch", label: "Netherlands (Dutch)" },
{ lang: "French", label: "Français (French)" },
{ lang: "German", label: "Deutsch (German)" },
{ lang: "Spanish", label: "Español (Spanish)" },
{ lang: "Chinese", label: "简体中文 (Simplified Chinese)" }
],
The title of the course to display at the top of the selector.
COURSE_TITLE: "Multi-Language SCO Title",
Directions text to display, prompting the learner to make a selection before they may proceed.
DIRECTIONS: "Please select the language in which you would like to view the course.",
Text to display once a language selection has been made. The placeholder "%s" will be replaced with the language string.
SELECTED_TEXT: "%s language has been selected.",
Text to display in the button a learner will use to launch/view the course in the selected language.
LAUNCH_COURSE_TEXT: "Launch Course",
Within each of the SCOs, there should be a HTML file that will be used to launch the SCO upon language selection. Because it is assumed that all of these SCOs have been developed using the same content creation tool, this should be the same across all SCOs.
SCO_LAUNCH_FILE: "index_lms_html5.html",
For first-time viewing by an end-user. This will be the default selected language within the UI when no previous language has been selected during a previous session.
DEFAULT_LANGUAGE: "English",
Because it can take time for the user to select their language, they may hit the 20-second timeout threshold allowed by the SCORM specification.
AUTO_INITIALIZE: true,
If, for some reason, the selected SCO does not call LMSFinish before this window closes, automatically attempt to call LMSFinish. This call will not be made if the SCO has already been terminated.
AUTO_TERMINATE: true,
The wrapper supports persisting language selection in either the learner's SCORM data record (via cmi.suspend_data), or the learner's client-side/browser storage (via localStorage). If the "suspend_data"
option causes issues within an LMS environment, or with specific SCOs, use "local_storage"
.
Note: If "local_storage"
is used, a learner's language selection will not carry over to sessions on different machines or within different browsers.
Options: "suspend_data" or "local_storage"
PERSISTENCE_TYPE: "suspend_data",
If the Persistence Type (above) has been set to "suspend_data"
, you can set the delimeter, which separates the language string from the "real" suspend_data value, which the SCO utilizes. If the tool uses the default value of "~~"
, then change this to something else.
SUSPEND_DATA_DELIMITER: "~~",
For controlling all debugging to the browser console.
ENABLE_CONSOLE: true,
Show error page when SCORM API cannot be found.
ENABLE_ERROR_PAGE: false
By default, a basic IMS manifest (imsmanifest.xml
) is provided, and must be either updated or replaced by one of the manifests in the SCOs being used with the wrapper. The IMS manifest must exist in the root of the wrapper package, and must be representative of every SCO included.
It is recommended that the manifest located in the default language's SCO folder be used. For instance, if the default language is "English", copy the manifest file from the "/scos/[SCO_ROOT_FOLDER]_English"
folder.
Just as in every other SCORM PIF (package), you must ensure the imsmanifest.xml
is at the root of the wrapper, along with its controlling .xsd files. The contents of the root folder must be zipped to create an importable package.
Note: Some LMS environments attempt to import multiple manifests located in any subfolders within the package. Should your LMS fail on import due to this, simply remove the imsmanifest.xml
from each of the SCOs within the "/scos" folder and re-zip the package.
Sean K. Friese - https://github.com/skfriese