CultureDisplayNameSubstitutes

CultureDisplayNameSubstitutes

#Overview

name: CultureDisplayNameSubstitutes

The value of this variable can be defined or overridden in .ini config files. 5 .ini config files referencing this setting variable.

It is referenced in 2 C++ source files.

#Summary

#Setting Variables

#References In INI files

Location: <Workspace>/Engine/Config/BaseEngine.ini:1539, section: [Internationalization]

Location: <Workspace>/Engine/Config/BaseEngine.ini:1540, section: [Internationalization]

Location: <Workspace>/Engine/Config/BaseEngine.ini:1541, section: [Internationalization]

Location: <Workspace>/Engine/Config/BaseEngine.ini:1542, section: [Internationalization]

Location: <Workspace>/Engine/Config/BaseEngine.ini:1543, section: [Internationalization]

#References in C++ code

#Callsites

This variable is referenced in the following C++ source code:

#Loc: <Workspace>/Engine/Source/Runtime/Core/Private/Internationalization/Culture.cpp:20

Scope (from outer to inner):

file
function     void ApplyCultureDisplayNameSubstitutes

Source code excerpt:

	};

	static TArray<FDisplayNameSubstitute> CultureDisplayNameSubstitutes;

	// Conditionally load the required config data
	{
		static bool bHasInitializedCultureDisplayNameSubstitutes = false;
		if (!bHasInitializedCultureDisplayNameSubstitutes && GConfig && GConfig->IsReadyForUse())
		{

#Loc: <Workspace>/Engine/Source/Runtime/Core/Private/Internationalization/Culture.cpp:34

Scope (from outer to inner):

file
function     void ApplyCultureDisplayNameSubstitutes

Source code excerpt:

				const bool ShouldLoadGame = FApp::IsGame();

				GConfig->GetArray(TEXT("Internationalization"), TEXT("CultureDisplayNameSubstitutes"), CultureDisplayNameSubstitutesStrArray, GEngineIni);

				if (ShouldLoadEditor)
				{
					TArray<FString> EditorArray;
					GConfig->GetArray(TEXT("Internationalization"), TEXT("CultureDisplayNameSubstitutes"), EditorArray, GEditorIni);
					CultureDisplayNameSubstitutesStrArray.Append(MoveTemp(EditorArray));
				}

				if (ShouldLoadGame)
				{
					TArray<FString> GameArray;
					GConfig->GetArray(TEXT("Internationalization"), TEXT("CultureDisplayNameSubstitutes"), GameArray, GGameIni);
					CultureDisplayNameSubstitutesStrArray.Append(MoveTemp(GameArray));
				}
			}

			// Each substitute should be a semi-colon separated set of data: [Culture;]Old;New
			CultureDisplayNameSubstitutes.Reserve(CultureDisplayNameSubstitutesStrArray.Num());
			for (const FString& CultureDisplayNameSubstituteStr : CultureDisplayNameSubstitutesStrArray)
			{
				TArray<FString> DisplayFragments;
				CultureDisplayNameSubstituteStr.ParseIntoArray(DisplayFragments, TEXT(";"));

				if (DisplayFragments.Num() == 2)
				{
					CultureDisplayNameSubstitutes.Add(FDisplayNameSubstitute{ FString(), MoveTemp(DisplayFragments[0]), MoveTemp(DisplayFragments[1]) });
				}
				else if (DisplayFragments.Num() == 3)
				{
					CultureDisplayNameSubstitutes.Add(FDisplayNameSubstitute{ MoveTemp(DisplayFragments[0]), MoveTemp(DisplayFragments[1]), MoveTemp(DisplayFragments[2]) });
				}
			}

			// Sort by culture name length, so that more specific cultures get first refusal at a replacement
			CultureDisplayNameSubstitutes.StableSort([](const FDisplayNameSubstitute& InOne, const FDisplayNameSubstitute& InTwo)
			{
				return InOne.Culture.Len() > InTwo.Culture.Len();
			});
		}
	}

	for (const FDisplayNameSubstitute& CultureDisplayNameSubstitute : CultureDisplayNameSubstitutes)
	{
		const bool bValidForCulture = CultureDisplayNameSubstitute.Culture.IsEmpty() || InPrioritizedCultureNames.Contains(CultureDisplayNameSubstitute.Culture);
		if (bValidForCulture)
		{
			InOutDisplayName.ReplaceInline(*CultureDisplayNameSubstitute.OldString, *CultureDisplayNameSubstitute.NewString, ESearchCase::CaseSensitive);
		}