UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
TextLocalizationManager.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "Containers/Array.h"
9#include "Containers/Map.h"
10#include "Containers/Set.h"
12#include "CoreTypes.h"
13#include "Delegates/Delegate.h"
14#include "HAL/CriticalSection.h"
19#include "Misc/Crc.h"
20#include "Misc/EnumClassFlags.h"
21#include "Templates/Function.h"
23
24#include <atomic>
25
28class IPakFile;
29struct FLogCategoryBase;
31
33{
34 None = 0,
35 Engine = 1<<0,
36 Game = 1<<1,
37};
39
42{
47
48private:
49
51 struct FDisplayStringEntry
52 {
53 FTextConstDisplayStringRef DisplayString;
54#if WITH_EDITORONLY_DATA
55 FTextKey LocResID;
56#endif
57 int32 LocalizationTargetPathId = INDEX_NONE;
58 uint32 SourceStringHash;
59
61 : DisplayString(InDisplayString)
62#if WITH_EDITORONLY_DATA
63 , LocResID(InLocResID)
64#endif
65 , LocalizationTargetPathId(InLocalizationTargetPathId)
66 , SourceStringHash(InSourceStringHash)
67 {
68 }
69 };
70
73
74 struct FDisplayStringsForLocalizationTarget
75 {
79 FString LocalizationTargetPath;
80
86 TSet<FTextId> TextIds;
87
92 bool bIsMounted = false;
93 };
94
95 struct FDisplayStringsByLocalizationTargetId
96 {
97 public:
98 FDisplayStringsForLocalizationTarget& FindOrAdd(FStringView InLocalizationTargetPath, int32* OutLocalizationTargetPathId = nullptr);
99 FDisplayStringsForLocalizationTarget* Find(const int32 InLocalizationTargetPathId);
100 void TrackTextId(const int32 InCurrentLocalizationPathId, const int32 InNewLocalizationPathId, const FTextId& InTextId);
101
102 private:
104 TMap<FStringView, int32> LocalizationTargetPathsToIds;
105 };
106
107private:
108 std::atomic<ETextLocalizationManagerInitializedFlags> InitializedFlags{ ETextLocalizationManagerInitializedFlags::None };
109
110 bool IsInitialized() const
111 {
112 return InitializedFlags != ETextLocalizationManagerInitializedFlags::None;
113 }
114
115 mutable FRWLock DisplayStringTableRW;
116 FDisplayStringLookupTable DisplayStringLookupTable;
117 FDisplayStringsByLocalizationTargetId DisplayStringsByLocalizationTargetId;
118
119 mutable FRWLock TextRevisionRW;
120 TMap<FTextId, uint16> LocalTextRevisions;
121 uint16 TextRevisionCounter;
122
123#if WITH_EDITOR
127#endif
128
130 friend class FLazySingleton;
131
132public:
133
136
139 static CORE_API void TearDown();
140
142
143 CORE_API void DumpMemoryInfo() const;
145
146#if ENABLE_LOC_TESTING
151private:
152 void DumpLiveTableImpl(const FString* NamespaceFilter, const FString* KeyFilter, const FString* DisplayStringFilter, TFunctionRef<void(const FTextId& Id, const FTextConstDisplayStringRef& DisplayString)> Callback) const;
153public:
154 CORE_API void DumpLiveTable(const FString* NamespaceFilter = nullptr, const FString* KeyFilter = nullptr, const FString* DisplayStringFilter = nullptr, const FLogCategoryBase* CategoryOverride = nullptr) const;
155 CORE_API void DumpLiveTable(const FString& OutputFilename, const FString* NamespaceFilter = nullptr, const FString* KeyFilter = nullptr, const FString* DisplayStringFilter = nullptr) const;
156 CORE_API void AddOrUpdateDisplayStringInLiveTable(const FString& Namespace, const FString& Key, const FString& DisplayString, const FString* const SourceStringPtr = nullptr);
157#endif
158
162 CORE_API FString GetRequestedLanguageName() const;
163
167 CORE_API FString GetRequestedLocaleName() const;
168
174
179
185
190
196
201 CORE_API FTextConstDisplayStringPtr FindDisplayString(const FTextKey& Namespace, const FTextKey& Key, const FString* const SourceStringPtr = nullptr) const;
202
211 CORE_API FTextConstDisplayStringPtr GetDisplayString(const FTextKey& Namespace, const FTextKey& Key, const FString* const SourceStringPtr) const;
212
213#if WITH_EDITORONLY_DATA
215 CORE_API bool GetLocResID(const FTextKey& Namespace, const FTextKey& Key, FString& OutLocResId) const;
216#endif
217
221
234
241
246 CORE_API void RefreshResources(TUniqueFunction<void()>&& Notification = nullptr);
247
254
261
267
274
280
281#if WITH_EDITOR
287
293
299
304
311
318
323
328
333
337 CORE_API bool IsLocalizationLocked() const;
338#endif
339
344
348
349private:
351 void OnPakFileMounted(const IPakFile& PakFile);
352
354 void OnCultureChanged();
355
357 void LoadLocalizationResourcesForCulture_Sync(TArrayView<const TSharedPtr<ILocalizedTextSource>> AvailableTextSources, const FString& CultureName, const ELocalizationLoadFlags LocLoadFlags);
358 void LoadLocalizationResourcesForCulture_Async(const FString& CultureName, const ELocalizationLoadFlags LocLoadFlags, TUniqueFunction<void()>&& Notification);
359
361 void LoadLocalizationResourcesForPrioritizedCultures_Sync(TArrayView<const TSharedPtr<ILocalizedTextSource>> AvailableTextSources, TArrayView<const FString> PrioritizedCultureNames, const ELocalizationLoadFlags LocLoadFlags);
362 void LoadLocalizationResourcesForPrioritizedCultures_Async(TArrayView<const FString> PrioritizedCultureNames, const ELocalizationLoadFlags LocLoadFlags);
363
365 void LoadLocalizationTargetsForPrioritizedCultures_Sync(TArrayView<const TSharedPtr<ILocalizedTextSource>> AvailableTextSources, TArrayView<const FString> LocalizationTargetPaths, TArrayView<const FString> PrioritizedCultureNames, const ELocalizationLoadFlags LocLoadFlags);
366 void LoadLocalizationTargetsForPrioritizedCultures_Async(TArrayView<const FString> LocalizationTargetPaths, TArrayView<const FString> PrioritizedCultureNames, const ELocalizationLoadFlags LocLoadFlags, TUniqueFunction<void()>&& Notification);
367
369 void LoadChunkedLocalizationResources_Sync(TArrayView<const TSharedPtr<ILocalizedTextSource>> AvailableTextSources, const int32 ChunkId, const FString& PakFilename);
370 void LoadChunkedLocalizationResources_Async(const int32 ChunkId, const FString& PakFilename);
371
373 void QueueAsyncTask(TUniqueFunction<void()>&& Task);
374
375 struct FUpdateLiveTableOptions
376 {
377 FUpdateLiveTableOptions()
378 {
379 }
380
381 bool bDirtyTextRevision = true;
382 bool bReplaceExisting = true;
383 };
384
386 void UpdateLiveTable(FTextLocalizationResource&& TextLocalizationResource, const FUpdateLiveTableOptions& UpdateOptions = FUpdateLiveTableOptions());
387
389 void DirtyLocalRevisionForTextId(const FTextId& InTextId);
390
392 FTextConstDisplayStringPtr FindDisplayString_Internal(const FTextId& TextId, const FString& SourceString) const;
393
395 void DirtyTextRevision();
396
398 TArray<TSharedPtr<ILocalizedTextSource>> LocalizedTextSources;
399
402
404 TSharedPtr<class FPolyglotTextSource> PolyglotTextSource;
405
407 FGraphEventRef AsyncLocalizationTask;
408};
@ INDEX_NONE
Definition CoreMiscDefines.h:150
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_EVENT(OwningType, EventName)
Definition DelegateCombinations.h:32
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
ELocalizedTextSourceCategory
Definition LocalizedTextSourceTypes.h:19
ELocalizationLoadFlags
Definition LocalizedTextSourceTypes.h:42
ETextLocalizationManagerInitializedFlags
Definition TextLocalizationManager.h:33
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Engine.Build.cs:7
Definition LazySingleton.h:9
Definition TextKey.h:163
Definition TextKey.h:75
Definition TextLocalizationManager.h:42
CORE_API void HandleLocalizationTargetsUnmounted(TArrayView< const FString > LocalizationTargetPaths, TUniqueFunction< void()> &&Notification=nullptr)
Definition TextLocalizationManager.cpp:1301
CORE_API bool ShouldForceLoadGameLocalization() const
Definition TextLocalizationManager.cpp:1878
CORE_API void RefreshResources(TUniqueFunction< void()> &&Notification=nullptr)
Definition TextLocalizationManager.cpp:1223
FTextRevisionChangedEvent OnTextRevisionChangedEvent
Definition TextLocalizationManager.h:347
friend CORE_API void InitEngineTextLocalization()
Definition TextLocalizationManager.cpp:507
CORE_API void NotifyWhenAsyncTasksCompleted(TUniqueFunction< void()> &&Notification)
Definition TextLocalizationManager.cpp:1211
CORE_API FString GetRequestedLanguageName() const
Definition TextLocalizationManager.cpp:854
CORE_API FTextConstDisplayStringPtr GetDisplayString(const FTextKey &Namespace, const FTextKey &Key, const FString *const SourceStringPtr) const
Definition TextLocalizationManager.cpp:1072
UE_NONCOPYABLE(FTextLocalizationManager)
friend CORE_API void BeginPreInitTextLocalization()
Definition TextLocalizationManager.cpp:483
CORE_API ~FTextLocalizationManager()
Definition TextLocalizationManager.cpp:711
static CORE_API FTextLocalizationManager & Get()
Definition TextLocalizationManager.cpp:666
static CORE_API void TearDown()
Definition TextLocalizationManager.cpp:671
friend CORE_API void BeginInitTextLocalization()
Definition TextLocalizationManager.cpp:494
CORE_API uint16 GetTextRevision() const
Definition TextLocalizationManager.cpp:1149
CORE_API TArray< FString > GetLocalizedCultureNames(const ELocalizationLoadFlags InLoadFlags) const
Definition TextLocalizationManager.cpp:879
CORE_API FString GetRequestedLocaleName() const
Definition TextLocalizationManager.cpp:860
CORE_API void GetTextRevisions(const FTextId &InTextId, uint16 &OutGlobalTextRevision, uint16 &OutLocalTextRevision) const
Definition TextLocalizationManager.cpp:1169
CORE_API void CompactDataStructures()
Definition TextLocalizationManager.cpp:728
CORE_API void UpdateFromLocalizationResource(const FString &LocalizationResourceFilePath)
Definition TextLocalizationManager.cpp:1184
CORE_API void HandleLocalizationTargetsMounted(TArrayView< const FString > LocalizationTargetPaths, TUniqueFunction< void()> &&Notification=nullptr)
Definition TextLocalizationManager.cpp:1235
static CORE_API bool IsDisplayStringSupportEnabled()
Definition TextLocalizationManager.cpp:680
CORE_API void WaitForAsyncTasks()
Definition TextLocalizationManager.cpp:1196
CORE_API FTextConstDisplayStringPtr FindDisplayString(const FTextKey &Namespace, const FTextKey &Key, const FString *const SourceStringPtr=nullptr) const
Definition TextLocalizationManager.cpp:1049
CORE_API void DumpMemoryInfo() const
Definition TextLocalizationManager.cpp:716
CORE_API uint16 GetLocalRevisionForTextId(const FTextId &InTextId) const
Definition TextLocalizationManager.cpp:1155
CORE_API void RegisterPolyglotTextData(const FPolyglotTextData &InPolyglotTextData, const bool InAddDisplayString=true)
Definition TextLocalizationManager.cpp:923
CORE_API int32 GetLocalizationTargetPathId(FStringView InLocalizationTargetPath)
Definition TextLocalizationManager.cpp:900
friend CORE_API void InitGameTextLocalization()
Definition TextLocalizationManager.cpp:561
CORE_API FString GetNativeCultureName(const ELocalizedTextSourceCategory InCategory) const
Definition TextLocalizationManager.cpp:866
CORE_API void RegisterTextSource(const TSharedRef< ILocalizedTextSource > &InLocalizedTextSource, const bool InRefreshResources=true)
Definition TextLocalizationManager.cpp:909
Definition TextLocalizationResource.h:56
Definition ILocalizedTextSource.h:19
Definition GenericPlatformFile.h:1020
Definition PakFile.Build.cs:6
Definition ArrayView.h:139
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Definition FunctionFwd.h:19
Definition CriticalSection.h:14
Definition LogCategory.h:21
Definition PolyglotTextData.h:17