localization strategy and variables

I have Update 6: 1407.2208

Part of our localization strategy is as follows, a simple version:

Create a course in Storyline with English content English.story

Make a copy of that .story file; English-copy.story and rename it Spanish.story

Export all text, localize to Spanish, import localized text

Now we have two files: English.story with English content, and Spanish.story with Spanish content

Make a copy of English.story; English-copy.story and rename it MultiLanguage.story

Next, copy the scene with the Spanish screens from Spanish.story into MultiLanguage.story

(We need to have multiple languages in one .story file)

Here’s my problem:

When I localize Spanish.story I also rename all the variables so I have Spanish-specific variables; I need each language to have its own set of variables in the multi-language course.

When I copy the scene with my Spanish slides from Spanish.story into MultiLanguage.story, it not only doesn’t copy in the renamed variables, the Spanish slides are using the original English variables.

Why is this happening? How do I get the Spanish variables to come over with it?

Please watch this video demonstrating: http://screencast.com/t/zVpCos7z

English.story is attached.

Thanks for you help,


42 Replies
Matthew Bibby
Steve Flowers

If it's medium, you might be able to use another element like the cmi.core.lesson_location to store which language was first selected and automatically forward to the right spot when they restore. I don't believe this element is being used by Storyline but I could be wrong.

Steve, thanks for sharing this - it comes very close to being a perfect solution for a project I'm working on. 

I have a number of role based scenarios (that are structurally quite different) that I want to combine into one package - however as the learner is likely to complete more than one of these scenarios the resume behaviour is problematic.

At the moment, everything works fine when I complete one scenario, but when I open a second one I'll get the 'Do you want to resume prompt?' which if accepted - will result in Storyline hanging as it can't find the correct slide to resume on.

Can you please expand on how I could use something like cmi.core.lesson_location to help resolve this if you have a moment? Thanks mate.

Matthew Bibby
Ashley S

when I test my SCO launcher index_lms.html I get this error:


An error has occurred:

Error - unable to acquire LMS API, content may not play properly and results may not be recorded. Please contact technical support. 

Press 'OK' to view debug information to send to technical support.

Does it look like I'm doing something blatantly wrong? Or is that just because I'm trying to test it locally? Loading it into an LMS might still work?

Ashley, that error occurs when you open SCORM content outside of an LMS. I know you've probably figured that out by now, but I thought I'd mention it here in case it helps someone else. 


Robert Stewart

I'm using Storyline 2 and publishing as SCORM 2004 3rd audition.

The files names have changed since your last post.
Which files do I put on the root? (image of  files below)

scorm 2004


I'm using a custom index_lms.html
That has a logo and two jpg images buttons (French and English)

In your example you used just links.
Can I add an image folder on the root or do I need to add any extra images or folders to the manifest?

Root folders:

Steve Flowers

Hey Robert - 

What goes into your manifest will depend on the LMS. Some are really sticky about the manifest matching the contents. Most are not, since it really doesn't matter all that much. Manifests aren't being used as they were originally intended.

You'll want to make sure all of your SCORM description files are at the root. These should get it. Just copy those out to the root. You can make your folders contain your entire SCORM structure from your separate publishes. The key is that your manifest points to your "link" file so that the LMS launches this to start.

You can place images and image directories (pretty much anything else you want) at the root and construct your launch file to look or operate however you want. When you click to link into your alternate SCO folders, the SCORM API will initialize.

Again, you shouldn't need to add everything into the manifest file. But if you run into problems where the LMS isn't loading all of the files, you'll know pretty quickly. This is a super-hacky way to build isolated alternates. But it does work as long as folks consistently launch the same language. The bonus is you get one set of reports for completion and don't need to run for separate courses.

Julie B.

Hello all,

I know this thread is quite old here...BUT I am very interested in better solutions than what was discussed here a year ago..

I mean we face the exact same situation more and more: more and more courses developped in  11 languages...we wish the learner to have the choice in following the translated versions...but only complete one...

The LMS has not been a solution in our case ....

So we have developed this "post-publishing surgery file" , described in the previous discussion of your thread...and it works fine...:

>the learner enters a "Select your language" menu interface...

>the learner can chose one language,

>or exit, it loops to the menu and he can select another one...

> and the tracking is done on one course completed

...It works well....except that :

1- it works on PC but does not work on our LMS mobile app as it does  not loop back to the menu....??

2- and ...we manage more and more developments and they all have to go through this post-publishing delicate surgery operation... :( , it is too difficult and teckky for every Training developers to manage this intervetion....so in the end: Do you happen to have discovered or developed any easier tool that would provide this "surgery"? Did anyone found any easier way? 


Steve Flowers

Hi, Julie - 

Multi-language in a single package pokes at the edges of the use cases for which the tool is designed. Most tools have trouble with this type of configuration. There are some options, depending on how your packages are built. Does your localization extend to images, video, or audio?

I've recently tackled a couple of projects with this workflow:

  • Publish a single storyline file containing text blocks containing variable references.
  • Build an Excel file with column headers that correspond to Storyline variables. 
  • Use a VBA script to generate a JSON data file with all of the variable contents.
  • Build a Javascript trigger to dynamically load the JSON data into the Storyline file on cue. 
  • In my case, also make copies of the Storyline publish, create new folders, automatically edit the imsmanifest file, copy in a few dependencies, and automatically zip the contents of the newly generated file into a named Zip / SCO package. 

I'm able to generate 100 individual SCORM packages, each with a custom title and "variable payload" through the automated script in less time than it takes Storyline to publish the origin file. It's possible to go quite a few directions with this kind of an automation and run-time load method. 

Arystian Inglot

Hi Lauren!

Thank you for your reply :) I didn't know about that, but I think it works when I have one lesson.
I have six separate courses/lessons. I group them to one using multiscorm package. I want to prepare one HTML page with links to the lessons. The course should have 100% of completion after complete all six lessons. Is it possible? I will be grateful for every tip.

Lauren Connelly

Hello Arystian!

Since creating a multiscorm package isn't supported in Storyline 360, I'd recommend using your Learning Management System to create this.

For example, publish all of your courses separately. Next, look into the settings of your LMS and see if there's a way to create a learning path. From here, you could create a custom report that tracks the learning path. 

Which LMS are you using? I'm sure we have community members who have created something similar!

Sofie Verschueren


I'm quite new with Articulate and am still exploring a lot of ways to create E-learnings in the best way. In this moment I'm looking for information to create the same E-learning (SCORM format) in different languages, but in 1 SCORM package. So that I can upload the SCORM package once into our system and so that the users only need to choose their language in the beginning of the course. I already read a lot of different approaches and posts, but as I'm not that familiar with Javascript, html and the posts are from a few years ago. I was hoping that someone could help me now and tell me the best way to create this course (in basic steps please :D as I'm not an IT expert). 

What I understood from all different posts and articles: You have 3 ways to create an E-learning in different languages: 

  • With layers -> less interactivity
  • Multiple scenes -> but then you can only include 1 quiz? (in 1 language)? 
  • States & triggers -> less interactivity

We do have a test at the end of each E-learning that should also be translated in each language... and we use a lot of interactions. So what I understand from this post and others. There is a 4th way to create such an E-learning?

  • Namely to create 4 same E-learnings (let's say 1 in Spanish, the other one in English, one in Italian and one in German). Each has a different SCORM package and zip file, but you can then insert them all into one SCORM package and zip it so that the course can be uploaded into the system? Or am I mistaken?

If this is possible: Could someone please explain the steps I would need to take? Do I need to create a new file? (Sorry if this is already mentioned here. I've read all posts, but not always easy to understand being an Articulate and IT rookie.) 

Don't know if it helps, but I have inserted the content of a zip file of an E-learning in the attachment. This is just from a course in English.  

Thank you! 



I have the same question as Sofie.  I am new to Storyline 360 and now exploring ways to package multiple language courses into one single SCORM.

I have 7 languages and managed to build the project following this thread, using the branching method and built a custom menu for navigation.

However I would like to explore the possibility to use the built-in course player menu, only the selected language shows up in the course player while other language player menus were hided. 

Would creating a multiscorm package using menifest  able to do that?