Forum Discussion
Switch languages from within Rise 360 course using Articulate Localization
Thank you SuperSCORM for the feedback.
Here is a summary of how the tool works and the rationale behind it, along with a sample localized course. Hope this helps.
The problem
In a multi-language Rise course published with Articulate Localization, the learner chooses a language on first launch and that choice is saved in the LMS. Rise’s standard multi-language LMS package offers no built-in way to change the language selection later. The only option (until today) is for an admin to reset the learner’s progress, which is inconvenient for both learners and admins.
The tool's rationale
The tool addresses this limitation by combining individual language exports into a single SCO with a language selector dropdown that is always available.
The tool relies on courses being localized using Articulate Localization and then exported from Rise as separate LMS packages for each language.
These exports share a common course structure and matching lesson IDs, with language-specific content stored in localization tables.
Selecting a language changes how the shared course content is displayed. Because lesson IDs remain consistent across translations, bookmarks and progress continue to refer to the same lessons. Saved quiz results are retained when the learner switches languages. Learners can also resume on another device when the LMS returns the saved language, bookmark and progress for the same learner and attempt.
How the tool merges the packages
The tool uses one language export as the base, retaining its Rise player, course structure, SCORM driver and tracking configuration, including completion percentage, reporting mode and quiz tracking.
It then decodes runtime-data.js and combines the localization tables for the individual languages, including translations, interface labels and language metadata.
Media files are copied or reused. Filename conflicts are resolved by comparing file contents, and affected translation references are updated.
The tool adds a language selector to the launch page (and persists throughout the course on either the upper right corner or upper left corner of the page). When a suffix is specified, the tool appends it to the manifest identifier to distinguish the merged package.
How language and progress are saved
When the learner selects a language, the language bar that the tool inserted sends a message to the Rise player to change the displayed locale and, provided the LMS interface is ready, calls RiseLMSInterface.setLocale() to update the LMS-bound learner data.
In both SCORM 1.2 and SCORM 2004, cmi.suspend_data holds the selected locale and detailed course progress.
SCORM 1.2 stores the lesson bookmark in cmi.core.lesson_location, while SCORM 2004 uses cmi.location. The runtime also writes the language preference to cmi.student_preference.language in SCORM 1.2 or cmi.learner_preference.language in SCORM 2004. However, to my understanding and based on several tests, Rise restores its selected locale from the suspend data, rather than relying on that separate preference field.
The runtime serializes and compresses the suspend data. The driver requests persistence to the LMS with LMSCommit() in SCORM 1.2 and Commit() in SCORM 2004.
At normal exit, the driver commits before calling LMSFinish() (SCORM 1.2) or Terminate() (SCORM 2004) and reports an exit type through cmi.core.exit or cmi.exit. By default, once the course is complete, the Articulate driver switches from a “suspend” exit to a normal exit, which some LMSs treat as closing the attempt, so later changes are not kept.
To keep bookmarks and language changes resumable after completion, the tool sets scope.EXIT_SUSPEND_IF_COMPLETED = true in scormdriver/driverOptions.js, so the driver continues to report a suspend exit. The course’s save and commit mechanisms are unchanged, and the setting does not alter completion status or override an LMS that locks completed attempts. To restore the original Rise behavior, remove that line from scormdriver/driverOptions.js, and recreate the ZIP with imsmanifest.xml at the top level.
How a session resumes on another device
Rise’s LMS interface retrieves the saved suspend data and bookmark through the SCORM driver. The bookmark is stored in cmi.core.lesson_location for SCORM 1.2 or cmi.location for SCORM 2004. The Rise player then opens the bookmarked lesson, applies the saved locale and restores the saved progress.
The state comes from the LMS, so the new device does not need the previous device’s browser storage. The course resumes on any device in the last selected language and at the bookmarked lesson, provided the LMS preserves and returns the same learner’s attempt data.
A sample localized course
Here is a sample localized course (one version for SCORM 1.2, and another version for SCORM 2004, 4th edition) that you can use to test (as a learner) the resume behavior across multiple devices for the same learner and attempt.
I am using SCORM Cloud (www.scormcloud.com). The languages are English, French and Arabic, demonstrating both left-to-right and right-to-left languages. The course also includes a localized voiceover, a localized image and a quiz.
SCORM 1.2:
SCORM 2004, 4th edition:
For this course, tracking is set in Rise to “Quiz result” and reporting to “Passed/Failed”.
To test across devices, launch the course from the same invitation launch link and using the same email, so that sessions use the same registration.
Let me know if you have any questions or comments.