Silent crash coming from localization related to startup parameters/OpenXR

In our Unreal Projects (reproducible on both 5.5 and 5.6), we have 2 ways of changing languages:

-Through in game menu

-Through command line arguments passed at startup

#1 is working correctly without any issues, even if we switch to French, because by this stage, all plugins/systems/subsystems are already loaded and initialized.

#2 is being problematic, but only with French.

The issue is that passing -Culture=fr-FR at startup causes the engine wide localization to switch during engine startup too. This is fine for all systems except for the OpenXR Plugin.

(Path: 5.5.3\Engine\Plugins\Runtime\OpenXR\Source\OpenXRInput\Private\OpenXRInput.cpp)

When OpenXR Actions are being created, their names are also localized, and for whatever reason, the localized names of some actions in French contain a : in them, which I suspect breaks the parser, causing some ensures to be triggered, and causing all XR Action types equivalant to XR_ACTION_TYPE_BOOLEAN_INPUT to essentially break, consistently throwing silent/handled exceptions. Thus no boolean action like a button press works.

[Image Removed]

Following are some screenshots of actions and their localized names:

Swedish

[Image Removed]

German

[Image Removed]

English

[Image Removed]

French (where the problem happens)

[Image Removed]

Note: attachment contains log and crashdump

[Attachment Removed]

Hello,

Looking into the logs you provided I’m seeing two likely configuration issues:

First is the following line, which suggests that you are trying to use the ‘legacy’ input system rather than the EnhancedInput system. We are only supporting the EnhancedInput system with OpenXR, and it is also generally just better.

[2025.10.23-08.20.26:737][ 0]LogHMD: Warning: No UPlayerMappableInputConfig provided in the OpenXR Input project settings, action bindings will not be visible to the OpenXR runtime. Action/Axis mappings from the Input configuration are deprecated for XR in favor of Enhanced Input.

Second is I think the specific problem:

[2025.10.23-08.20.27:447][ 0]LogOutputDevice: Error: Ensure condition failed: ((Result) >= 0) [File:C:\wkspaces\UnrealEngine\Engine\Plugins\Runtime\OpenXR\Source\OpenXRInput\Private\OpenXRInput.cpp] [Line: 134] 
 
[2025.10.23-08.20.27:447][ 0]LogOutputDevice: Error: OpenXR call failed with result XR_ERROR_LOCALIZED_NAME_DUPLICATED

Which is saying that openxr has rejected an identical localized “Action Description”. This may be a consequence of using the legacy input system or it may not. With EnhancedInput we do an extra check for duplicated localized names and generate a unique name in order to issue a warning rather than allow OpenXR to fail (localization will not function correctly for that action until it’s Action Description is fixed, of course).

[Attachment Removed]

Enhanced Input documentation:

https://dev.epicgames.com/documentation/en\-us/unreal\-engine/enhanced\-input\-in\-unreal\-engine

[Attachment Removed]

Hmm the french specificity though.

Perhaps two of your localized action descriptions are identical in french and this is what is failing?

[Attachment Removed]

Ah, so while we have special code to avoid duplicated action descriptions with openxr that does NOT check for duplicated localized action descriptions. Only the “unlocalized” version of the string is checked.

[Attachment Removed]