Forum Discussion
Building Multiple Language Versions in One Course?
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!
Thanks,
Eric
- SteveFlowersCommunity Member
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:
Awesome example, Steve. Thanks a lot for sharing.
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.
- bethgrella-88b4Community Member
I'd like to see that!
- JuliePochikCommunity Member
Hi Tom, I am trying to find your demo on this. I need to build one storyline file with multiple languages and am not quite sure if this is the right thing to do or to build multiple storyline files. I know how to create the trigger and then branch, but then you have the assessment issue as well. Can you please send me a link where I can figure out the best way to do this is please....
Here is a video that shows the basic idea. I doesn't work for all possible use cases, but is viable with some forethought.
- HillaryRobin916Community Member
Can you explain how you use the translation tool to just change one language via states? My use of export/import changes all text in the file to that language, not just states for a specific language. So I am not fully understanding how you are using this feature to change only certain elements? Can you give any further explanation on this maybe I am missing something?
- BrettRockwoodCommunity Member
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.
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.
- NicoleMueller-5Community Member
Hi Tom,
thanks for the input, I just implemented your approach successfully.
I have a question regarding the translations to 17 languages. Is there (your solution was publishes quite some time ago) a possibility to export and import the text in "states" for translations of several languages? I tried it out with the "normal" translation feature but this is not possible for several languages.
Thanks for your support,
Nicole
- JenniferRitterCommunity Member
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:
- Create a trigger to "Execute Javascript"
- Use the desired Javascript (see the 3 scripts below) and replace INSERT HERE with the text you want to display on the button.
- Set the trigger to fire when "Timeline starts"
- 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.
- 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.
- Right click "imsmanifest.xml" and "Open with" Notepad or a similar program. Do not use Word.
- Find href="index_lms.html" and change it to href="index_lms_html5.html"
- 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.
- JoeWilsonCommunity Member
I have tried them every which way and I have not been able to get these javascript to function in Storyline 360. Has anyone else run into this issue? Or if someone knows if these tricks actually work in storyline 360?
- wdzCommunity Member
Hi Joe. Same objective here. Were you able to make this work?
- JoeWilsonCommunity Member
Has anyone been able to make this work in Storyline 360?
- MarkLentzCommunity Member
Jennifer, thanks for this simple javascript method -- we are doing a 3-language course in Storyline 360, Classic Player, HTML5, but I can't get this method to work. Are you still using it?
Ideally we'd like to use the same method to change the course title, and most ideally of all would be to just do it once, when the user selects their language, than doing it at the start of every page.
I know I can instead use one of the other methods proposed in this thread, but this way would be the most efficient...
- KatyJoyCommunity Member
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.
- KathleenCairns-Community Member
I see that you can change the player to different languages, but can you convert the text to different languages when you publish?
Hi Kathleen,
Slide text would need to be translated by your or another individual - but you can use the Import/Export translation features to replace slide content easier.
- JenniferRitterCommunity Member
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.
Hi Lee,
I haven't seen anything similar to that with Storyline or Studio using those type of translation capabilities, so I'll be curious what the community is able to share here.