Localization Pipeline in Unreal

ADX’s authoring tool comes with useful features to manage localization. Assets with prefix and/or suffix are supported, multi-lingual Cues are set automatically, and even Tracks can be language-dependent…

As we will see in this post, when using ADX with Unreal, you can easily create a pipeline to switch the assets automatically to the right language.

Preparing the ACB

For a comprehensive guide on how to manage dialogue with Atom Craft, check our previous post. In short, here are the steps to export a multi-lingual ACB from AtomCraft.

  • First add the languages you need in the Project Tree under the Language Settings folder.
  • Once they are configured, select a WorkUnit and right-click on the Material Root Folder. Select Create a folder for Localization. Atom Craft will automatically create a dedicated hierarchy to manage the localized assets.
  • Drag & drop your assets in their respective folders.
  • Then, create your dialogue Cues.

01 Atom Craft Loc Setup

With your Cues ready you can build your ACB files:

  • Right-click on the CueSheet containing your dialogue Cues.
  • Click on Build Atom CueSheet Binary.
  • In the build window, select the language for which you want to build.
  • Once the build completed, you will have one ACB for each language.

02 Build ACB

Localization in Unreal Engine

You can now open your Unreal project. The first thing is to setup our languages for the localization.

  • Open the Localization Dashboard via the Window menu.
  • Scroll to the bottom of the dashboard and, in the Cultures section, click on Add New Culture.
  • Add the same languages than in your AtomCraft project.
  • Finally, click on Compile Text to update the list of languages internally.

03 Loc Dashboard

With our languages ready, it is time to import the ACB.

  • In the Content browser, create a folder for your audio assets.
  • Import the localized ACB that will be used for your reference language (e.g., English) and create the assets for the corresponding Cues.
  • Right-click on your ACB asset, select Asset Localization, Create Localized Asset, English.
  • Repeat the last operation for each language.

04 Asset Loc

You will notice that this creates a new folder hierarchy under Content/L10N/ with subfolders for each language, each mirroring the organization of your audio assets.

05 L10N Folder

  • In the last folder of this hierarchy, you will find your ACB file, which was copied during the process.
  • Delete this ACB file for every language, as it is unnecessary.

The purpose of the workflow above is to create all the appropriate folders, but you could also create them manually.

  • Now you can drag and drop each of your localized ACB files in their respective folders to create the localized assets.

06 Localized Assets

From this point on, when using Cue assets and Cue Sheet assets, you must use the assets created in the audio asset folder you originally created (which only contains your reference language assets). When an asset is loaded, the appropriate localised version will be loaded according to the language setting. Note that if you were to accidentally use the assets in the L10N folder directly, the language of the asset would not change when switching between languages.

Finally, in Unreal, to change the language setting you can:

  • Use the Set Current Culture node in Blueprints.
  • Or call the SetCurrentCulture function in C++.

The assets loaded after this operation will be the localized asset corresponding to the language specified earlier.

Here is an example in Blueprint, where clicking on a button sets our language, and reloads the current level:

07 BP


Note that one limitation of this system is that it will not change assets already loaded, and it will only change the language when running a packaged game.

The advantage of this pipeline is that it works automatically out-of-the-box. However if it is too restrictive for your needs, it will be relatively easy to build a custom solution since Atom Craft exports individual ACB in each language.

Leave a Reply

Your email address will not be published. Required fields are marked *