FileNameFilters

FileNameFilters

#Overview

name: FileNameFilters

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

It is referenced in 3 C++ source files.

#Summary

#Usage in the C++ source code

The purpose of FileNameFilters is to specify which file types should be included when gathering text for localization in Unreal Engine 5. It is primarily used in the localization system to define the file patterns that should be considered during the text gathering process.

This setting variable is relied upon by the Localization module and the UnrealEd module, specifically in the context of text gathering for localization purposes. It is used in the GatherTextFromSource commandlet and in generating localization configuration files.

The value of this variable is typically set in configuration files or programmatically when generating localization configurations. It can be set multiple times to include different file patterns.

FileNameFilters interacts with other localization-related variables such as SearchDirectoryPaths, which specifies the directories to search for files matching the FileNameFilters.

Developers must be aware that:

  1. FileNameFilters uses wildcard patterns (e.g., “.h”, “.cpp”).
  2. It replaced the deprecated SourceFileSearchFilters, so older projects might still use the deprecated version.
  3. Empty FileNameFilters will result in a warning and may cause the text gathering process to fail.

Best practices when using this variable include:

  1. Specifying all relevant file extensions for your project’s localization needs.
  2. Ensuring that the filters are unique to avoid redundant processing.
  3. Using it in conjunction with appropriate SearchDirectoryPaths to effectively scope the text gathering process.
  4. Regularly reviewing and updating the filters to match any changes in your project’s file structure or naming conventions.
  5. Migrating from SourceFileSearchFilters to FileNameFilters if working on an older project.

#Setting Variables

#References In INI files

<Workspace>/Engine/Config/Localization/Editor.ini:34, section: [GatherTextStep0]
<Workspace>/Engine/Config/Localization/Editor.ini:35, section: [GatherTextStep0]
<Workspace>/Engine/Config/Localization/Editor.ini:36, section: [GatherTextStep0]
<Workspace>/Engine/Config/Localization/Editor.ini:37, section: [GatherTextStep0]
<Workspace>/Engine/Config/Localization/Editor.ini:38, section: [GatherTextStep0]
<Workspace>/Engine/Config/Localization/Engine.ini:39, section: [GatherTextStep0]
<Workspace>/Engine/Config/Localization/Engine.ini:40, section: [GatherTextStep0]
<Workspace>/Engine/Config/Localization/Engine.ini:41, section: [GatherTextStep0]
<Workspace>/Engine/Config/Localization/Engine.ini:42, section: [GatherTextStep0]
<Workspace>/Engine/Config/Localization/Engine.ini:43, section: [GatherTextStep0]
<Workspace>/Engine/Config/Localization/Engine.ini:44, section: [GatherTextStep0]
<Workspace>/Engine/Plugins/Online/Android/OnlineSubsystemGooglePlay/Config/Localization/OnlineSubsystemGooglePlay.ini:27, section: [GatherTextStep0]
<Workspace>/Engine/Plugins/Online/Android/OnlineSubsystemGooglePlay/Config/Localization/OnlineSubsystemGooglePlay.ini:28, section: [GatherTextStep0]
<Workspace>/Engine/Plugins/Online/Android/OnlineSubsystemGooglePlay/Config/Localization/OnlineSubsystemGooglePlay.ini:29, section: [GatherTextStep0]
<Workspace>/Engine/Plugins/Online/Android/OnlineSubsystemGooglePlay/Config/Localization/OnlineSubsystemGooglePlay.ini:30, section: [GatherTextStep0]
<Workspace>/Engine/Plugins/Online/Android/OnlineSubsystemGooglePlay/Config/Localization/OnlineSubsystemGooglePlay.ini:31, section: [GatherTextStep0]
<Workspace>/Engine/Plugins/Online/Android/OnlineSubsystemGooglePlay/Config/Localization/OnlineSubsystemGooglePlay.ini:32, section: [GatherTextStep0]
<Workspace>/Engine/Plugins/Online/IOS/OnlineSubsystemIOS/Config/Localization/OnlineSubsystemIOS.ini:27, section: [GatherTextStep0]
<Workspace>/Engine/Plugins/Online/IOS/OnlineSubsystemIOS/Config/Localization/OnlineSubsystemIOS.ini:28, section: [GatherTextStep0]
<Workspace>/Engine/Plugins/Online/IOS/OnlineSubsystemIOS/Config/Localization/OnlineSubsystemIOS.ini:29, section: [GatherTextStep0]
<Workspace>/Engine/Plugins/Online/IOS/OnlineSubsystemIOS/Config/Localization/OnlineSubsystemIOS.ini:30, section: [GatherTextStep0]
<Workspace>/Engine/Plugins/Online/IOS/OnlineSubsystemIOS/Config/Localization/OnlineSubsystemIOS.ini:31, section: [GatherTextStep0]
<Workspace>/Engine/Plugins/Online/IOS/OnlineSubsystemIOS/Config/Localization/OnlineSubsystemIOS.ini:32, section: [GatherTextStep0]
<Workspace>/Engine/Plugins/Online/OnlineFramework/Config/Localization/OnlineFramework.ini:27, section: [GatherTextStep0]
<Workspace>/Engine/Plugins/Online/OnlineFramework/Config/Localization/OnlineFramework.ini:28, section: [GatherTextStep0]
<Workspace>/Engine/Plugins/Online/OnlineFramework/Config/Localization/OnlineFramework.ini:29, section: [GatherTextStep0]
<Workspace>/Engine/Plugins/Online/OnlineFramework/Config/Localization/OnlineFramework.ini:30, section: [GatherTextStep0]
<Workspace>/Engine/Plugins/Online/OnlineFramework/Config/Localization/OnlineFramework.ini:31, section: [GatherTextStep0]
<Workspace>/Engine/Plugins/Online/OnlineFramework/Config/Localization/OnlineFramework.ini:32, section: [GatherTextStep0]
<Workspace>/Engine/Plugins/Online/OnlineSubsystem/Config/Localization/OnlineSubsystem.ini:27, section: [GatherTextStep0]
<Workspace>/Engine/Plugins/Online/OnlineSubsystem/Config/Localization/OnlineSubsystem.ini:28, section: [GatherTextStep0]


... omitting 47 locations ...

#References in C++ code

#Callsites

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

#Loc: <Workspace>/Engine/Source/Developer/Localization/Private/LocalizationConfigurationScript.cpp:349

Scope (from outer to inner):

file
namespace    LocalizationConfigurationScript
function     FLocalizationConfigurationScript GenerateGatherTextConfigFile

Source code excerpt:

			for (const auto& FileExtension : Target->Settings.GatherFromTextFiles.FileExtensions)
			{
				ConfigSection.Add( TEXT("FileNameFilters"), FString::Printf( TEXT("*.%s"), *FileExtension.Pattern) );
			}

			ConfigSection.Add( TEXT("ShouldGatherFromEditorOnlyData"), Target->Settings.GatherFromTextFiles.ShouldGatherFromEditorOnlyData ? TEXT("true") : TEXT("false") );
			
			Script.AddGatherTextStep(GatherTextStepIndex++, MoveTemp(ConfigSection));
		}

#Loc: <Workspace>/Engine/Source/Developer/Localization/Private/UserGeneratedContentLocalization.cpp:294

Scope (from outer to inner):

file
namespace    UserGeneratedContentLocalization
function     bool ExportLocalization

Source code excerpt:

					ConfigSection.Add(TEXT("CommandletClass"), TEXT("GatherTextFromSource"));

					ConfigSection.Add(TEXT("FileNameFilters"), TEXT("*.h"));
					ConfigSection.Add(TEXT("FileNameFilters"), TEXT("*.cpp"));
					ConfigSection.Add(TEXT("FileNameFilters"), TEXT("*.inl"));
					ConfigSection.Add(TEXT("FileNameFilters"), TEXT("*.ini"));

					for (const FString& SearchDirectoryPath : SearchDirectoryPaths)
					{
						ConfigSection.Add(TEXT("SearchDirectoryPaths"), SearchDirectoryPath);
					}
					

#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Commandlets/GatherTextFromSourceCommandlet.cpp:121

Scope (from outer to inner):

file
function     int32 UGatherTextFromSourceCommandlet::Main

Source code excerpt:

	}

	// FileNameFilters
	TArray<FString> FileNameFilters;
	GetStringArrayFromConfig(*SectionName, TEXT("FileNameFilters"), FileNameFilters, GatherTextConfigPath);

	// SourceFileSearchFilters (DEPRECATED)
	{
		TArray<FString> SourceFileSearchFilters;
		GetStringArrayFromConfig(*SectionName, TEXT("SourceFileSearchFilters"), SourceFileSearchFilters, GatherTextConfigPath);
		if (SourceFileSearchFilters.Num())
		{
			FileNameFilters.Append(SourceFileSearchFilters);
			UE_LOG(LogGatherTextFromSourceCommandlet, Warning, TEXT("SourceFileSearchFilters detected in section %s. SourceFileSearchFilters is deprecated, please use FileNameFilters."), *SectionName);
		}
	}

	if (FileNameFilters.Num() == 0)
	{
		UE_LOG(LogGatherTextFromSourceCommandlet, Warning, TEXT("No source filters in section %s"), *SectionName);
		return 0;
	}

	//Ensure all filters are unique.
	TArray<FString> UniqueSourceFileSearchFilters;
	for (const FString& SourceFileSearchFilter : FileNameFilters)
	{
		UniqueSourceFileSearchFilters.AddUnique(SourceFileSearchFilter);
	}

	// Build the final set of include/exclude paths to scan.
	TArray<FString> IncludePathFilters;