Building Multiple Language Versions in One Course?

Jun 06, 2012

I'm wondering if anyone has any good ideas on how to build a course that delivers the content in multiple languages. 

I have a client that wants to build one course and deliver it to their global workforce (with one or two additional languages in addition to English). Is it just as simple as building a button(s) on the intro screen that will allow learners to choose their language? This would then branch to the language version of their choice.

My only concern is that the couse would become too large in file size.

Any other ideas would be appreciated!



57 Replies
Gerry Wasiluk

Hi, Eric!

That would be one way.

You could also probably have the three versions of the course text (one for language) on the same slide. Depending on which language the learner choose, you'd only show one set of the text on the slide (through use of variables).  This might be unwieldy for some so separate paths might be easier.

Eric Seber

Hi Gerry,

Thanks for the variable idea! Hadn't thought of it. At least it's another option and I'd have to learn more. I wanted to make sure that I did some research before I told the client that it is something that can be done!

I'll let you know what the end result is if they decide to have the courses built.

Thanks again,


Katy Joy

We had a the same question arise.  We have one course that has to be delivered in 9 languages.  We ended up making the English course very interactive and then translated that same course into separate courses.  It would be nice to be able to choose the language in the beginning of the course and then have all of the text appear in that language throughout the course.  Any ideas as to how to make the "Choose your Language" button set all text for slides after it to that chosen language? The course would be too large to duplicate into 9 languages in one file.

Deborah Munitz

So I am very interested in this topic and wish articulate had chimed in on this. This thread is pretty old. Did anyone work out a solution? I would love to see an example or get more information on how to use variables to allow for different text. 

I was also thinking it might be useful to just have it in english with different voiceovers. My goal is to deliver just in the US but to make it friendlier for those who struggle with english.

Brett Rockwood

We've done some of these and have usually just set triggers at the beginning to choose your language which takes you to the scene in the proper language. It works pretty well and is simple enough to do though you could have some pretty large file sizes especially if you are using many images.

I've toyed around with Gary's idea using variables on an opening chose your language screen and then having the timeline read the variable for each slide to show the proper layer. That only seems to work if your structure is fairly simple, i.e. you don't have a lot of layers being triggered by buttons or other interactions.

Another way using variable is to create states for every text item/caption/title, etc., one state for each language on every slide. So you would have an English state for each item, a Spanish state, a Japanese state, etc. And then at the start of the timeline for each slide you'd have it read the language variable and then change the state of each text item to that state. Seems like a lot of work but could be done. I did it once to create a single, multi-language quiz and I think it worked out OK.

Tom Kuhlmann

I built a demo at a conference once where I created a default shape that had states for each language. I added triggers to the shape to change state based on the language variable.

Then whenever I wanted to add something to the slide, I duplicated the shape. This copied the triggers. Then I added my content.

I could export the word doc and then add my localized content where needed. And everything was a lot easier. I didn't have to build a bunch of versions. I just had to add my translation to the pre-established states.

This takes some forethought, but once you have it built, it works well. I'll do a quick tutorial to show how it works.

Steve Flowers

Scale is a consideration. Smaller modules with few alternate languages might be perfectly manageable in a single Storyline file. In my experience, the easiest way to handle larger courses is to:

1) Build in a primary language. course-english.story

2) Use translation tools to build alternate packages. course-spanish.story, course-russian.story, course-german.story

3) Publish each course out to a separate SCORM module. Copy each module into a folder that clearly indicates the language.

4) Assemble them all into one SCO by creating a manifest (you could simply copy the manifest files from your primary publish) and pointing this manifest to launch an index.html file that links to a specific language. The LMS will launch this "Menu" and then the participant will receive a payload of the Storyline file in the selected language.

There are a couple of advantages to this. First, it's actually a little easier to manage. You're working and publishing X number of separate simpler files than one monster. Second, it's less wasteful in bandwidth. Since it only loads a single published output instead of all of the languages. Plus each language can have a localized interface. This is described a bit here:

Tom Kuhlmann

Here's a quick demo hopefully it makes sense. The main point is that you create a starter object with a state for each language. That object has a trigger for each language to change to the appropriate state. 

When you duplicate the object, the triggers get duplicated, too. You can save this as a localized starter slide in your templates.

Jennifer Ritter

Thanks to everyone for all of the great ideas and processes on this thread!

I'm building a similar course (one SCO with more than one language option, using the one scene per language approach) and I'm trying to figure out if there's a way to get the button labels in the player to be the appropriate language within each scene.

I know this hasn't been a feature in the past but was wondering if maybe it's an option now.

Jennifer Ritter

So, it turns out that there is a way to use Javascript to have the Back, Next, and Submit buttons in the player change their text labels on a screen-by-screen basis. This allows those button to be localized in a multi-language, single SCO course. It's pretty easy to do, though as I understand it it may only work in HTML5, not Flash.

On whatever slide/screen you want to change the player's button labels:

  1. Create a trigger to "Execute Javascript"
  2. Use the desired Javascript (see the 3 scripts below) and replace INSERT HERE with the text you want to display on the button.
  3. Set the trigger to fire when "Timeline starts"
  4. Repeat this process on whatever screens you want to change the player's button text on. Copying and pasting the triggers saves a lot of time.
  5. AFTER you publish the project there is one more thing you need to do to ensure that the course opens in HTML5. Open the published course folder.
  6. Right click "imsmanifest.xml" and "Open with" Notepad or a similar program. Do not use Word.
  7. Find href="index_lms.html" and change it to href="index_lms_html5.html"
  8. Save the change. (File > Save)

Javascript for changing the Previous button's label:

di_y=document.getElementsByClassName("label prev"); // Find the elements
for(var i = 0; i < di_y.length; i++){
di_y[i].innerText="INSERT HERE"; // Change the content

Javascript for changing the Next button's label:

di_x=document.getElementsByClassName("label next"); // Find the elements
for(var i = 0; i < di_x.length; i++){
di_x[i].innerText="INSERT HERE"; // Change the content

Javascript for changing the Submit button's label:

di_z=document.getElementsByClassName("label submit"); // Find the elements
for(var i = 0; i < di_z.length; i++){
di_z[i].innerText="INSERT HERE"; // Change the content

I've attached an image of what the Javascript looks like for a screen where the Next and Back button labels have been changed to "SIG" and "ANT" respectively.

Christie Pollick

Thanks so much for the update and for the detailed info you've shared, Jennifer! 

And I just wanted to note for others who may not be aware, unfortunately, we are not able to provide support for JavaScript coding. Luckily, we have lots of community members who are happy to help!

And for those who'd like to review it, here is a sheet on JavaScript Best Practices. :)

Walter Davis

Steve Flowers, I really like the idea of separating by language. Do you have a sample manifest file? Also has anyone out there had the course show the correct language based on the user language in the LMS. I have asked this to our LMS vendor who simply said they support access to everything that SCORM allows. Any thoughts? having a single published package in our system greatly reduces admin effort.

James White

There are many translation tools that can be used in the industry to handle the translation of Articulate Storyline content. In our experience, the challenges are not as much in the translation as in building the final product in all the required languages. Please read for more info about the 7 common mistakes and challenges faced when translating/localizing eLearning content by non-experienced teams.