This document discusses localization features in UE4. It covers the basic text and asset localization processes, including gathering text, translating, packaging, and switching languages at runtime. It also covers specific localization features like fonts, subtitles, and media subtitles. The localization dashboard, translation picker, string tables, and localization preview tools are also introduced.
5. #UE4DD | @UNREALENGINE
Assets needing localization
● Text
● Content
● Font
● Asset
● Texture
● Voice,Sound
● Movie, Media
● Cutscene, Sequencer
● Animation
6. #UE4DD | @UNREALENGINE
Localization of the game
● Localize the game
● Goal :Release to many regions
● How :Implementation to many regions
● Localize the game made using UE4
● How do we localize using UE4?
● Asset :management, sharing
● Efficiency :workflow, implementation
● Effect :memory, performance
Focus of this slide
7. #UE4DD | @UNREALENGINE
Localize?
Localization (L10N)
● Localization is the process of adapting internationalized
software for a specific region or language by translating
text and adding locale specific components.
Internationalization (I18N)
● Internationalization is the process of designing a software
application so that it can be adapted to various languages
and regions without engineering changes.
12. #UE4DD | @UNREALENGINE
Text Localization Process
Gather
Source
Text
Package
Switch
Language
Translate
Source
Text
Editor (en) Package game (ja)
13. #UE4DD | @UNREALENGINE
Text Localization Process
Gather
Source
Text
Package
Switch
Language
Translate
Source
Text
Gather source text
from asset what we’d
like to localize.
OPTIONS
QUIT
14. #UE4DD | @UNREALENGINE
Text Localization Process
Gather
Source
Text
Package
Switch
Language
Translate
Source
Text
Make translation text
with reference to
gathered text.
OPTIONS
QUIT
オプション
終了
15. #UE4DD | @UNREALENGINE
Text Localization Process
Gather
Source
Text
Package
Switch
Lauguage
Translate
Source
Text
Make package game
including translation
text.
Package
OPTIONS
QUIT
オプション
終了
16. #UE4DD | @UNREALENGINE
Text Localization Process
Gather
Source
Text
Package
Switch
Language
Translate
Source
Text
Display text depending
on required language.
Package
OPTIONS
QUIT
オプション
終了
17. #UE4DD | @UNREALENGINE
Text Localization Process
Gather
Source
Text
Package
Switch
Language
Translate
Source
Text
Package
OPTIONS
QUIT
オプション
終了
Package
OPTIONS
QUIT
オプション
終了
OPTIONS
QUIT
オプション
終了
OPTIONS
QUIT
Localization Dashboard
23. #UE4DD | @UNREALENGINE
● Using FormatText for loacalization
● Blackbox
”Discard <Item Name>”
● Number
“Got <Number> Items”
● Numeric
“1Hit”, ”2Hits”, etc...
● Unit
“USD”, ”yard”, etc...
Displaying text
24. #UE4DD | @UNREALENGINE
There {NumCats}|plural(one=is,other=are) {NumCats} {NumCats}|plural(one=cat,other=cats)
one=”is”, other=”are” number one=”cat”, other=”cats”
Plural Forms (en)
25. #UE4DD | @UNREALENGINE
There is 1 cat
There are 2 cats
(en)
Input translation text with
Localization Dashboard
1匹の猫がいる
2匹の猫がいる
(ja)
Plural Forms (en→ja)
26. #UE4DD | @UNREALENGINE
Auto formatting text
Text is converted for the culture original format
automatically.
1) Number:12345.67
● ja : 12,345.67 ⇒ Grouping = ”,” , Decimal = ”.”
● de : 12.345,67 ⇒ Grouping = ”.” , Decimal = ”,”
● fr : 12 345,67 ⇒ Grouping = ” ” , Decimal = ”,”
2) Date:2020年10月31日
● ja : 2019/10/31 ⇒ yyyy/mm/dd
● en : Oct 31, 2019 ⇒ mm/dd/yyyy
● fr : 31 oct. 2019 ⇒ dd-mm-yyyy
27. #UE4DD | @UNREALENGINE
Language Plural Rules
http://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html
28. #UE4DD | @UNREALENGINE
Text Localization Process
Gather
Source
Text
Package
Switch
Language
Translate
Source
Text
Package
OPTIONS
QUIT
オプション
終了
Package
OPTIONS
QUIT
オプション
終了
OPTIONS
QUIT
オプション
終了
OPTIONS
QUIT
Localization Dashboard .ini file/Console Command
29. #UE4DD | @UNREALENGINE
Setting current language of text
● Startup game
● Launch argument
● Configuration (.ini)
● System Language (OS)
● Runtime
● Console Command
● Call culture switching function
31. #UE4DD | @UNREALENGINE
Switch content display language
Culture
Language
Locale
Asset Group
Texts and Assets
Format display (Number/Date/Time)
Specific Assets and Classes
Text
32. #UE4DD | @UNREALENGINE
Switch culture
● Accoding to set many priority rules, there are several
ways to specify the language of the game at launch
game
● Priority (Top is highest)
● “-culture” value with launch argument
● ”culture” value on xxxGame.ini
● ”culture” value on xxxEngine.ini
● System Language (OS)
33. #UE4DD | @UNREALENGINE
Text Localization Process
Gather
Source
Text
Package
Switch
Language
Translate
Source
Text
Display in editor in English
→ Display package in Japanese
36. #UE4DD | @UNREALENGINE
Asset Localization Process
Package
Switch
Language
Placed
Asset
Editor (en) Package game (ja)
37. #UE4DD | @UNREALENGINE
Asset Localization Process
Package
Switch
Language
Placed
Asset
Placed target asset in
specified path.
Img (en)
Img (ja)
38. #UE4DD | @UNREALENGINE
Asset Localization Process
Package
Switch
Language
Placed
Asset
Make package game
including translation
text.
Package
Img (en)
Img (ja)
39. #UE4DD | @UNREALENGINE
Asset Localization Process
Package
Switch
Language
Placed
Asset
Package
Img (en)
Img (ja)
Display text depending
on required language.
44. #UE4DD | @UNREALENGINE
Setting current language of asset
● Startup game
● Launch argument
● Configuration (.ini)
● System Language (OS)
● Runtime
● Console Command
● Call culture switching function
Same as the text
46. #UE4DD | @UNREALENGINE
Switch content display language
Culture
Language
Locale
Asset Group
Texts and Assets
Format display (Number/Date/Time)
Specific Assets and Classes
Asset
47. #UE4DD | @UNREALENGINE
Switching Asset Group
● Group assets and reuse them across languages
● Case where only some assets are used in different languages.
● The text display is “ja”, but some of Audio wants to use “en”.
● Setting on xxxGame.ini and xxxEngine.ini
48. #UE4DD | @UNREALENGINE
Asset Group
● Not using Asset Group
If we are setting the current culture is ja,
all texts and assets are displayed in ja
Text (ja) Asset (ja)
49. #UE4DD | @UNREALENGINE
Asset Group
Audio (it)
Sound Wave
Sound Cue
● Using Asset Group
Text (ja)
Other
Asset (ja)
If we’re grouping ”Sound Wave” and ”Sound Cue” during the current culture is in ja,
”Sound Wave” and ”Sound Cue” are using in it language’s assets.
Class
Asset Group
50. #UE4DD | @UNREALENGINE
● Setting the class to be linked to Asset Group
● Setting the language to which Asset Group is applied
Switching Asset Group
If the above settings are made,
Sound Wave and Sound Cue use “en” assets from startup.
51. #UE4DD | @UNREALENGINE
Asset Localization Process
Package
Switch
Language
Placed
Asset
Display in editor in English
→ Display package in Japanese
54. #UE4DD | @UNREALENGINE
Localization for Font asset
● What about text localization?
● Want to change the font by language...
● Want to change the font size by language...
● How do we localize font asset?
● Use Asset Localization
● Use Sub Culture, and Sub Font Family
55. #UE4DD | @UNREALENGINE
Apply Font Localization (1)
● Apply fonts by language with Asset Localization
Font (common)
Font (th)Font (ja)
56. #UE4DD | @UNREALENGINE
Apply Font Localization (2)
● Use SubCulture and SubFont with Font Asset
Font
(common) Font Face
Fallback Font Family
Font Face
Sub Font Family
(ja)
Font Face
Sub Font Family
(th)
Font Face
Default Font Family
59. #UE4DD | @UNREALENGINE
Subtitle and Voice localization
● Build dialogue system using dialogue assets
This message is
a subtitle test.
https://docs.unrealengine.com/en-US/Engine/Audio/Dialogue/index.html
60. #UE4DD | @UNREALENGINE
Subtitle and Voice localization
● Dialogue System (for each sentence)
● Dialogue Wave :Dialogue Data
● Dialogue Voice :Talker Data
● Sound Wave :Voice Sound
Dialogue Wave Dialogue Voice
63. #UE4DD | @UNREALENGINE
Localization for subtitle of Media framework
● Switch media player subtitles by language
● Unreleased Features
● If you want to use then, need to modify the engine code.
● It’s necessary to add subtitle data playback process.
64. #UE4DD | @UNREALENGINE
● Subtitle data
● Editable on editor
● Crate assets by language
● Capable of importing .srt file
Basic Overlays
Localized Overlays
Subtitles table
Basic Overlays
Subtitle data (ja)
Basic Overlays
Subtitle data (en)
65. #UE4DD | @UNREALENGINE
● Assets that manage subtitles by language
● Set Basic Overlays for each language
Localized Overlays
Localized Overlays
Subtitles table
Basic Overlays
Subtitle data (ja)
Basic Overlays
Subtitle data (en)
67. #UE4DD | @UNREALENGINE
Subtitle Data
Project
Engine
Widget
Playback media
Subtitle
Manager
Control subtitles
Subtitle Player
Playback subtitles
Localized
Overlays
Sutitiles for localization
Basic Overlays
Subtitle data (ja)
Basic Overlays
Subtitle data (en)
Basic Overlays
Subtitle data (fr)
Overlay and related classes
72. #UE4DD | @UNREALENGINE
Localization Preview
● Feature to preview Localization Text on UMG Designer
● Not compatiable with Localization Asset
73. #UE4DD | @UNREALENGINE
Preview text updates after switching language
Localization Preview
Comparison of localization preview
Update text
(en→ja)
Applu preview
74. #UE4DD | @UNREALENGINE
Localization Preview
● Preview Game Language (Editor Preference)
● If Preview language is selected, it’s affected as default
Affect from Editor Preferences
75. #UE4DD | @UNREALENGINE
Localization Preview
● Need to localize the text before using this feature.
localizing text... can select preview languages
76. #UE4DD | @UNREALENGINE
Translation Picker
● Feature to extract text localization info from editor
● Can edit localization text without accesing dashboard
77. #UE4DD | @UNREALENGINE
Translation Picker
● Enable picker
● Enable Translation Picker in Editor Preferences (Experimental)
● Show picker window
● From Window or select icon in translation editor
82. #UE4DD | @UNREALENGINE
Project Settings
● The settings are required when Packaging
● Localizations to Package
● Languages for Cook/Stage/Package
● Internationalization Support
● Language set for internationalized data
83. #UE4DD | @UNREALENGINE
Project Settings
● Localizations to Packages
● Settings that specify the language to be localized
● When not selected, it doesn’t include localization asset to package
Select from localized languages...Select target languages manually...
84. #UE4DD | @UNREALENGINE
Project Settings
● How to specifiy a language for each platform
● Override language specification in xxxGame.ini
● Following example, only “en” and “ja” assets and texts are
included when Packaging
85. #UE4DD | @UNREALENGINE
● Internationalization Support
● Select preset including target language from the list
Project Settings
Preset Languages Size (MB)
English English ~1.77
EFIGS English, French, Italian, German, Spanish ~2.38
EFIGSCJK English, French, Italian, German, Spanish, Chinese, Korean, Japanese ~5.99
CJK Chinese, Korean, Japanese ~5.16
All All Languages ~15.3
Language Preset
86. #UE4DD | @UNREALENGINE
In a nutshell
● UE4 has basic features for localization
● It’s better to use your own system or workflow
(depending on requirements)
● Consider localization plans early
90. #UE4DD | @UNREALENGINE
Localization Dashboard
● Text Localization feature
● Gather text from assets and source code
● Export translated text and share it
● Manage and edit translated texts in languages
● Manage localization progress of translated texts
● Supporting Text Localization feature
● Can work with third-party provider service
● Can be linked with source control
● Can preview translated text and preview font
● Can check text conflicts
91. #UE4DD | @UNREALENGINE
Localization Dashboard
● Pros
● Localization is completed in UE4 Editor
● Immediate confirmation after editing localized text
● Gather text over a wide range including source meta
● Cons
● If edit source text, affects all languages content
● Experimental features (but can be used)
94. #UE4DD | @UNREALENGINE
Text localize quick start flow
① Add localization language
② Set target assets
③ Gather text
④Input translate text
⑤ Compile translated text
⑥ Update word count
101. #UE4DD | @UNREALENGINE
Localization Dashboard - Localization Service
Localization Service Provider
Localization Service Provider Select active service provider when using a specific localization.
Source Control
Enable Source Control If source control and service provider are available, connect to
source control during localization operations automatically.
Enable Auto Submit If source control and service providers are available, allow auto
submit during localization operations.
103. #UE4DD | @UNREALENGINE
● Localization Target
● Classified by localization category
● Game Targets
For project code/asset
● Engine Targets
For engine code/asset
Localization Target
104. #UE4DD | @UNREALENGINE
Localization Dashboard - Localization Target
Target
Name Specified for localization target.
Conflict Status Show conflict status of localize text.
Loading Policy Specified loading conditions for localized text of plugin and DLC.
108. #UE4DD | @UNREALENGINE
Localization Target (Conflict Status)
Conflict Status Description
Clear Clear state of gather unique to all text.
Conflicts Present It’s necessary to resolve conflict text.
Unknown State before key match check.
Update conflict status by gather text.
Check and correct from ✖ button whether there is a conflict or not
110. #UE4DD | @UNREALENGINE
Gather Text
● Target of gathering text from content
(code/files/assets)
● Gather from Text Files
Text file (.cpp/.h/.ini )
● Gather from Packages
Asset (.uasset/.umap)
● Gather from Meta Data
Meta tag of UPROPERTY
111. #UE4DD | @UNREALENGINE
Localization Dashboard - Gather Text
Gather Text
Target Dependencies Text present in these targets will not be duplicated in this target.
Additional Manifest Dependencies Text present in these manifests will not be duplicated in this
target.
Required Module Names The names of modules which must be loaded when gathering text.
Use to gather from packages or metadata sourced from a module
that isn't the primary game module.
113. #UE4DD | @UNREALENGINE
Localization Dashboard - Gather Text
Gather Text
Search Directories The paths of directories to be searched recursively for text files,
specified relative to the project's root, which may be parsed for
text to gather.
Exclude Path Wildcards Text files whose paths match these wildcard patterns will be
excluded from gathering.
File Extensions Text files whose names match these wildcard patterns may be
parsed for text to gather.
Should Gather from Editor Only Data If enabled, data that is specified as editor-only may be processed
for gathering.
115. #UE4DD | @UNREALENGINE
Localization Dashboard - Gather Text
Gather Text
Include Path Wildcards Packages whose paths match these wildcard patterns, specified
relative to the project's root, may be processed for gathering.
Exclude Path Wildcards Packages whose paths match these wildcard patterns will be
excluded from gathering.
File Extensions Packages whose names match these wildcard patterns may be
processed for text to gather.
Collections Packages in these collections may be processed for gathering.
Should Gather from Editor Only Data If enabled, data that is specified as editor-only may be processed
for gathering.
Skip Gather Cache Should we ignore the cached text in the package header and
perform a full package load instead?
117. #UE4DD | @UNREALENGINE
Localization Dashboard - Gather Text
Gather Text
Include Path Wildcards Packages whose paths match these wildcard patterns, specified
relative to the project's root, may be processed for gathering.
Exclude Path Wildcards Packages whose paths match these wildcard patterns will be
excluded from gathering.
Should Gather from Editor Only Data If enabled, data that is specified as editor-only may be processed
for gathering.
118. #UE4DD | @UNREALENGINE
Localization Dashboard - Gather Text
Gather Text
Key Specifications Specifications for how to gather text from specific metadata keys.
Meta Data Key The metadata key for which values will be gathered as text.
Text Namespace The localization namespace in which the gathered text will be output.
Text Key Pattern The pattern which will be formatted to form the localization key for
the metadata value gathered as text.
121. #UE4DD | @UNREALENGINE
Localization Dashboard
Export Text
Collapse Mode How should we collapse down text when exporting to PO?
Should Persist Comments on Export Should user comments in existing PO files be persisted after
export? Useful if using a third party service that stores
editor/translator notes in the PO format's comment fields.
Should Add Source Locations as Comments Should source locations be added to PO file entries as
comments? Useful if a third party service doesn't expose PO
file reference comments, which typically store the source
location.
122. #UE4DD | @UNREALENGINE
Localization Dashboard
Compile Text
Skip Source Check Should we skip the source check when compiling
translations? This will allow translations whose source no
longer matches the active source to still be used by the
game at runtime.
Validate Format Patterns Should we validate that format patterns are valid for the
culture being compiled (eg, detect invalid plural rules or
broken syntax).
Validate Safe Whitespace Should we validate that text doesn't contain any unsafe
whitespace (leading or trailing whitespace) that could get
lost during the translation process.
123. #UE4DD | @UNREALENGINE
Localization Dashboard
Import Dialogue
Raw Audio Path Path to the folder to import the audio from. This folder is
expected to contain culture sub-folders, which in turn
contain the raw WAV files to import.
Imported Dialogue Folder Folder in which to create the generated sound waves. This is
relative to the root of the L10N culture folder (or the root
content folder if importing native dialogue as source
dialogue).
Import Native as Source Should the dialogue for the native culture be imported as if
it were source audio? If false, the native culture dialogue
will be imported as localized data for the native culture.
129. #UE4DD | @UNREALENGINE
Localization Dashbord (Gather Text)
Gather Text Gather text info from asset and source code
Import Text Import localized text file (.po)
Export Text Export localized text file (.po)
Import Script Import dialogue script file (.csv)
Export Script Export dialogue script file (.csv)
Import Dialogue Import Sound Wave and Dialogue Wave assets
Count Word Update translated text count and affect in word count
Compile Text Compile translated text and update text data
131. #UE4DD | @UNREALENGINE
.ini file (Engine.ini)
Internationalization
Culture Language that displays all contents from application launching.
Language Language that displays texts/assets from application launching.
Locale Language that displays format-text from application launching.
132. #UE4DD | @UNREALENGINE
.ini file (Engine.ini)
Internationalization
CultureMappings It can be replaced with another language.
EnabledCultures Only languages specified in configuration can be used.
DisabledCultures All languages specified in configuration can’t be used.
PreviewGameLaguage Select preview language in PIE or standalone launching.
LockLocalization Disable localization and lock text editing (editor only).
133. #UE4DD | @UNREALENGINE
.ini file (Game.ini)
Internationalization
Culture Language that displays all contents from application launching.
Language Language that displays texts/assets from application launching.
Locale Language that displays format-text from application launching.
134. #UE4DD | @UNREALENGINE
.ini file (Game.ini)
Internationalization
CultureMappings It can be replaced with another language.
EnabledCultures Only languages specified in configuration can be used.
DisabledCultures All languages specified in configuration can’t be used.
LockLocalization Disable localization and lock text editing (editor only).
135. #UE4DD | @UNREALENGINE
.ini file (EditorSettings.ini)
Internationalization
Culture Language that displays all contents from application launching.
Language Language that displays texts/assets from application launching.
Locale Language that displays format-text from application launching.
136. #UE4DD | @UNREALENGINE
.ini file (EditorSettings.ini)
Internationalization
ShouldUseLocalizedNumericInput Display numerical values such as property in Editor Language.
ShouldUseLocalizedPropertyNames Display Property name in Editor Language.
ShouldUseLocalizedNodeAndPinNames Display Blueprint Node and Blueprint Node Pin name in Editor
Language.
DisplayTimezone Affects the initial time zone value when using DataTime type.