UUserDefinedEnum contains an array of FTexts which are supposed to be used as localized display names, however these are populated from the underlying UEnum type using the meta-data on the object. This means that the display names themselves aren't stable, and in addition to this preventing them being properly localized, also causes issues for deterministic cooking.
We should instead have this array default to the value of the enum entry name, but allow the user to change this via a text field in the enum editor. UUserDefinedEnum::GetEnumText should not call the UEnum version, nor should UUserDefinedEnum::PostLoad do anything to ensure these display names exist... basically, we need to kill FEnumEditorUtils::EnsureAllDisplayNamesExist being called by anything other than the enum editor itself.
We could also consider making DisplayNames a TMap of FName -> FText, now that both UHT and the localization gather support map properties.
Internal issue. No observable change.
There's no existing public thread on this issue, so head over to AnswerHub just mention UE-26274 in the post.