Multiple Languages in Storyline

I'm trying to setup a multiple language ability in a storyline project. (I've imported slides from a current PPT tha I want to add this functionality to).

Not sure if the screen shots will work for you. I've added the 3 buttons and some code behind those, but the issue is that once I click on a button the choice is over and what I want is to be able to click on any button at any time throughout the presentation.

So, my initial code is there in the trigger area. I just need to understand better how this all works. Thanks.

35 Replies
Jeanette Brooks

Hi Marta, just to clarify - are you wanting learners to be able to toggle between different versions of the narration at any time during the course? You can definitely do that with layers; however, if a learner gets part of the way through the slide and then clicks on a different language, that new language's narration will begin playing from the beginning. This means that if you have objects on your slide that appear or disappear at specific times during the narration, toggling between different languages mid-slide could cause the sync'ing to appear off.

If you haven't (and don't need to) sync audio with animations, using the button+layer approach as you've shown will work well. Some recommendations:

  • I would probably create a separate layer for each language, rather than putting English on the base layer. To me that just feels easier to organize. 
  • You would need to add the same buttons on each slide as you've done in the screenshot above, and apply the same triggers so that learners can toggle while on any slide.
  • You'd also need to add some triggers at the beginning of each slide, to tell Storyline which version of audio to play, depending on the learner's language choice. The triggers would look something like this: 
Marta Merlino-Calvert

I think that the issue of having English on the base layer is my problem. I can't seem to make it go back to English after clicking one of the other button. So, I'll add another language layer for English and give that a try. We are going to have Spanish narration (probably) so I'll get back to you on the syncing issue if I run into that. I'm thinking that if they click on a language mid-slide I'd want to start the slide completely new so that they hear the translation from the beginning. That might fix any syncing issue I have. I haven't thought it all out yet. I'm not sure what we're going to do for Chinese. That's a whole other problem.

Thanks for looking at the code and I'll let you know if I have other problems.

Jeanette Brooks

Hey Marta, here's a super-simple example. It has just 2 slides, each with 3 layers for the 3 different languages. Once you select a language, it stays selected for the next slide unless you change it. Open the file in Storyline & preview it, and you'll see what I mean. Hope it helps!

Michelle  Kay

Jeanette - I'm also working on a course that will allow users to toggle between English and Spanish.  How does this work when I have a slide that already contains layers.  For example, the slide has two graphics, and when the user clicks on each graphic it shows a layer with additional content.

Also, I set up the buttons based on your example and it isn't working....not sure why.  Can you help? 

M. Bosscher

Here’s the idea I had.

-          Slide 1. Create a text variable “Language” and set it equal to “English”.

-          Slide 1. Create two buttons, ENGLISH and SPANISH. Set a trigger on each one to change the LANGUAGE variable to either English or Spanish.

-          On every slide/layer with audio you create two identical triggers with different conditions. One Condition for language == Spanish, one for variable = English.

-          Then you import each wave file (Spanish/English) to the slide/layer/button.

You could also do this for all the text on the screen by creating two states for each text box, one spanish - one english.  Then use the same language variable to set the state to the right language.

Brett Rockwood

I like that idea of using states with variables. Lots of cool things you can do there.

This thread got me wondering about Translation function for text items in a course with no audio. Does anyone know if it's possible to use this function but have it be layer specific? So, for example if you designed your course to use a layer for each of four languages, English, German, French and Japanese, can you export the English layer and have translators create versions in the other three languages and then import those translations back into the single SL file on their separate layers? I don't think this will work but haven't tried it.

Anybody have any thoughts on this?

Brett Rockwood

Pretty cool. Theoretically you could do the whole course in multiple languages using states rather than layers. I can see how that might simplify complicated layer structures but not having to duplicate them all for each language. I wonder if it's more work to use states... No matter, it's great to have a few options.

Jeanette Brooks

Hi Michelle!

The language toggle wasn't working on slide 1.1 for a couple reasons:

  • There was no trigger on either the English or Espanol button to cause a slide layer to be revealed. 
  • Also, the variables you had in your sample were actually text variables. They need to be true/false variables. So unfortunately you'd need to delete the original ones and re-create them, and choose True/False for the "Type" field on the variable window as shown below. Then go through the triggers and edit them to refer to the new variables.   

Regarding the other question about how to get the right layer to be revealed... the way I'd do it is create a separate layer for Spanish and English, and then create 2 conditional triggers for each clickable object. One trigger would cause the Spanish layer to reveal, and another would cause the English to reveal. Check out the attached modified file and see if that gives you the behavior you want.

Jeanette Brooks

Hey Michelle, re: close captioning, you might be interested in checking out Steve Flowers' idea here. You could perhaps create a different object for each language, and have users choose at the beginning which language they want to display. Collect that info and store it in a true/false variable, and then have a trigger on each slide which evaluates the true/false variable to determine whether to display the SPN or ENG text.

Travis Smith

So I have been playing with this a bit. However, I have come to a cross-roads, which may be a bug (or several) in Articulate Storyline??

In Bilingual.v1.story...

I adopted one of the examples above to switch languages using a keyboard stroke. This works well (I only did this on one slide as a proof of concept).

Player Trigger to Change Variable: Fail

Then I wanted to switch languages with a Player Trigger (via Player > Features); however, you cannot change the variable that way. It's not available as an option. Bummer!

Player Trigger to Lightbox Slide: Semi-Success

So I then used a lightbox slide for the trigger, which does effectively change the variable in my lightbox slide setup. However, it doesn't change the current slide even though I have a trigger that says change the state of x when variable changes (which I believe to be because the Timeline has ended). You can watch the variable change; however, the states on the current slide do not change. Logically speaking this is probably because the lightbox slide is in effect; however, this is not the expected user experience.

However, if I add a trigger for the when the Timeline ends, this works well after the Timeline has ended. However, again, this is not the expected user experience. And I didn't test this with audio, which probably would be a nightmare. There is no intrinisic method to grab the current time of the Seekbar to enable the new audio. However, you can add a Trigger that will Jump to Itself if the language variable changes (which works well with keyboard strokes for changing the language). This will fix the Audio issues. However, the current slide issues remain.

For future slides this works well even though the current slide has issues. What would be nice would be the ability to reset the timeline of the current slide as an action, similiar to restart course.

Player Trigger to Change Object(s) State(s): Minor Success (or Fail or Useless)

I thought about making a Spanish/English Player Button-Triggers that would change the states of the various items to their associated Spanish state if clicked; however, a user can only have one action per Player Trigger. So this would not work entirely with multiple items with multiple states.

However, if you have all your text in one object and just want to change that, my example works fine (for one slide!). So I thought, "Great! I can set custom features for each slide." However, the custom features do not include custom features. It only includes the Built-in Articulate Features (Menu, Glossary, Notes, Seekbar, Resources, and Notes). Even if this did work, that would be a lot of custom features to manage! So this really won't work.

IMHO, this (Player Features Triggers) shouldn't be set to change objects; instead, it should change layers. Here's why. If, in Player > Features > Edit Trigger, you select it to change objects on Slide 1.2, then move to begin working on Slide 1.3 and go to Player > Features > Edit Trigger, On Object and To State are empty obviously because those objects are not on that slide. So logically one could think, like I did, that this could take multiple triggers, a different trigger on each slide. However, this is not the case. So this failed.

Player Trigger to Jump to Slide: Success!

This is what the file did when I first got it from above. So I reverted back and added a bookmark variable to track the slide numbers. This was by far the most successful option.

Please see attachment to see if you can improve. Personally I like the lightbox option if it worked. Maybe someone from Articulate can take a look.

Jeanette Brooks

Hi Travis,

So just to clarify, are you basically just exploring various ways to let the learner toggle the language at any point within the course? And it sounds to me like you're wishing there was a way to incorporate the toggle directly onto the player - is that correct? Unfortunately, as you discovered, currently it's not possible to adjust the value of a variable via a trigger attached to a player tab. However, what if you did something like the example I've attached below. Preview the story file and see if it gives you the behavior you're looking for.

In this example, I drew a rectangle at the top of my slide master and made it the exact same color as my player, so that it would look like it's actually part of the player. Then I added 2 buttons (as a button set) on top of the black rectangle, and I created triggers on the slide master which allow the learner to toggle the language. 

On the actual content slides, each language-specific item has 4 triggers assigned to it. The first 2 triggers change the object to the appropriate state at the beginning of the slide timeline, based on whatever "Language" variable happens to be when the learner arrives at the slide. The second 2 triggers change the state at any time the "Language" variable changes, which enables the user to switch language in the middle of the slide timeline (since it sounds like that's what you wanted to achieve). 

Michael Grady


This is a GREAT thread!  I'd like to have an expanded discussion on Brett's comment about importing multiple languages.  I just accomplished a quick trial for three languages.  This may have been the long way to get to the end result, but it worked.

I created a master version, and then utilized the Translation>Export feature.  I saved that file and then used Google Translate for the three different languages saving out a new document for each language.

Then I opened a new SL window to create a new project; I copied the original project scenes from the first SL window (master version) into the new project, and then utilized the Translation>Import feature.  I then saved the new project.  I did this for each language translation.

Once the new projects were in the languages that I wanted, I copied and pasted the scenes into my master version.  In the master version I set up the opening scene for user to select which language they would prefer.  The flag images are linked to the scene with the corresponding language.

I'd like to hear any and all feedback, especially if there's an easier way to accomplish this.

John Cooper

Truly useful thread - thanks.  This has saved me a lot of time exploring the options associated with multiple language versions of e-learning courses where the language is selected by the learner fro within the course.

 I can see that, by using (a) layers or (b) object states or (c) different scenes for each language how this would work for situations where I wanted, say, two languages in a single course.  My question is though - what about the Player customisation??

Normally, when we develop multiple language versions of our e-learning we use the excellent translate functions in Storyline and create separate courses for each language.  The user then selects the language by choosing the correct language course from whatever LMS they are using.  However, in addition to translating the text on the screens and buttons, we also set the local language settings in the Payer so that any error messages generated by the Storyline player are displayed in the correct language.

I'm presuming there is no way to dynamically select the Player language settings having decided what language you want?  Or am I missing the point?

Brett Rockwood

John, from what I understand it's not possible to change the player language within a single course. This is something that I've inquired about as well and at least in this version it isn't possible. It's really too bad as that is an important consideration when doing multi-language courses.

I suggest you put in a feature request and hopefully it's something that can be addressed in an update.

Corey Klein

Hi Guys,

Somewhat related question... 

I'm working with an internal group at my company that would like me to create three very basic courses for them.  The courses will be basic in that they aren't going to have narration, closed captioning, an assessment at the end, or even much animation.  More info sharing (PowerPoint style) that the user will go thru at their own pace. 

The issue is that they want the each course to be in 7 languages (English, Spanish, French, Portuguese, German, Chinese, and Russian).  Once we nail down the English content, they are going to provide me with translated materials to use. 

Do you envision any issues, especially with languages that have unique characters (e.g., Chinese and Russian)?  What about the typical buttons and functions (e.g., Next, Previous, Table of Contents, etc)?  Any other challenges that I should be aware of?  Thanks for your guidance.