Description

FindTextInLocalizationTable can't find a translation to an entry when the translation is the same as the looked up key because FTextLocalizationManager::DisplayStringLookupTable don't keep entries that have the same values on both languages. This behavior is not how it previously worked and might lead to unexpected/hard to track bugs, as described by the licensee.

Steps to Reproduce

Please refer to the licensee's repro project.
Steps to Reproduce:
-Start PIE session in English
-Observe, that the first two author-at-source texts are correctly displayed in the upper left corner (Ok, Abort)
-Observe, that the second pair of text, referencing the first two via FindFText are also correct (Ok, Abort)
-Set "German" as game preview language in settings
-Start a Standalone Session
-Observe, that the first two author-at-source texts are correctly displayed in German (Ok, Abbrechen)
-Observe, that in the second pair of text, only "Abbrechen" is displayed, which differs from the English source, while "Ok" (which equals the English source) is empty

Callstack

Call Stack:
> UnrealEditor-Core.dll!FTextLocalizationManager::FindDisplayString(const FTextKey & Namespace, const FTextKey & Key, const FString * const SourceStringPtr) Line 902 C++
UnrealEditor-Core.dll!FText::FindText(const FTextKey & Namespace, const FTextKey & Key, FText & OutText, const FString * const SourceString) Line 814 C++
UnrealEditor-Engine.dll!UKismetTextLibrary::FindTextInLocalizationTable(const FString & Namespace, const FString & Key, FText & OutText, const FString & SourceString) Line 150 C++
UnrealEditor-Engine.dll!UKismetTextLibrary::execFindTextInLocalizationTable(UObject * Context, FFrame & Stack, void * const Z_Param__Result) Line 2242 C++
UnrealEditor-CoreUObject.dll!UObject::execCallMathFunction(UObject * Context, FFrame & Stack, void * const Z_Param__Result) Line 1075 C++
[Inline Frame] UnrealEditor-CoreUObject.dll!FFrame::Step(UObject *) Line 478 C++
UnrealEditor-CoreUObject.dll!UObject::execLetBool(UObject * Context, FFrame & Stack, void * const Z_Param__Result) Line 2977 C++
[Inline Frame] UnrealEditor-CoreUObject.dll!FFrame::Step(UObject *) Line 478 C++
UnrealEditor-CoreUObject.dll!ProcessLocalScriptFunction(UObject * Context, FFrame & Stack, void * const Z_Param__Result) Line 1206 C++
UnrealEditor-CoreUObject.dll!UObject::ProcessInternal(UObject * Context, FFrame & Stack, void * const Z_Param__Result) Line 1304 C++
UnrealEditor-CoreUObject.dll!UFunction::Invoke(UObject * Obj, FFrame & Stack, void * const Z_Param__Result) Line 6847 C++
UnrealEditor-CoreUObject.dll!UObject::ProcessEvent(UFunction * Function, void * Parms) Line 2144 C++
UnrealEditor-Engine.dll!FLatentActionManager::TickLatentActionForObject(float DeltaTime, TMultiMap<int,FPendingLatentAction *,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<int,FPendingLatentAction *,1>> & ObjectActionList, UObject * InObject) Line 318 C++
UnrealEditor-Engine.dll!FLatentActionManager::ProcessLatentActions(UObject * InObject, float DeltaTime) Line 236 C++
UnrealEditor-Engine.dll!UWorld::Tick(ELevelTick TickType, float DeltaSeconds) Line 1544 C++
UnrealEditor-Engine.dll!UGameEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 1785 C++
UnrealEditor-Win64-DebugGame.exe!FEngineLoop::Tick() Line 5921 C++
[Inline Frame] UnrealEditor-Win64-DebugGame.exe!EngineTick() Line 61 C++
UnrealEditor-Win64-DebugGame.exe!GuardedMain(const wchar_t * CmdLine) Line 180 C++
UnrealEditor-Win64-DebugGame.exe!GuardedMainWrapper(const wchar_t * CmdLine) Line 118 C++
UnrealEditor-Win64-DebugGame.exe!LaunchWindowsStartup(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char *

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-224740 in the post.

0
Login to Vote

Unresolved
CreatedSep 18, 2024
UpdatedSep 19, 2024
View Jira Issue