PortableObjectName

PortableObjectName

#Overview

name: PortableObjectName

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

It is referenced in 4 C++ source files. Also referenced in 1 C# build file meaning it may affect the build system logic.

#Summary

#Usage in the C++ source code

The purpose of PortableObjectName is to specify the filename for the Portable Object (PO) format file used in the localization process of Unreal Engine 5. This setting variable is primarily used in the internationalization and localization systems of the engine.

Based on the callsites, the Localization module and the TranslationEditor module rely on this setting variable. It’s used in configuration scripts for importing and exporting localization data, as well as in user-generated content localization.

The value of this variable is typically set in configuration files or through the Unreal Engine editor interface. In the code, it’s often added to a configuration section using the key “PortableObjectName”.

This variable interacts with other localization-related variables such as ManifestName and ArchiveName, which are used to specify the names of other files in the localization process.

Developers must be aware that this variable is crucial for the correct naming and identification of PO files in the localization workflow. Incorrect naming could lead to issues in the localization process.

Best practices when using this variable include:

  1. Using consistent naming conventions across projects.
  2. Ensuring the specified filename ends with the “.po” extension.
  3. Using unique names for different targets or plugins to avoid conflicts.
  4. Considering using programmatic naming (as seen in the UserGeneratedContentLocalization namespace) for dynamically generated content.

When working with this variable, developers should also be familiar with the overall localization workflow in Unreal Engine 5 to understand how the PO files fit into the bigger picture of internationalization and localization.

#Setting Variables

#References In INI files

<Workspace>/Engine/Config/Localization/Category.ini:7, section: [CommonSettings]
<Workspace>/Engine/Config/Localization/Editor.ini:7, section: [CommonSettings]
<Workspace>/Engine/Config/Localization/EditorTutorials.ini:12, section: [CommonSettings]
<Workspace>/Engine/Config/Localization/Engine.ini:6, section: [CommonSettings]
<Workspace>/Engine/Config/Localization/Keywords.ini:6, section: [CommonSettings]
<Workspace>/Engine/Config/Localization/PortableObjectExport.ini:17, section: [GatherTextStep0]
<Workspace>/Engine/Config/Localization/PortableObjectExport.ini:25, section: [GatherTextStep1]
<Workspace>/Engine/Config/Localization/PortableObjectExport.ini:33, section: [GatherTextStep2]
<Workspace>/Engine/Config/Localization/PortableObjectExport.ini:41, section: [GatherTextStep3]
<Workspace>/Engine/Config/Localization/PortableObjectExport.ini:49, section: [GatherTextStep4]
<Workspace>/Engine/Config/Localization/PortableObjectImport.ini:17, section: [GatherTextStep0]
<Workspace>/Engine/Config/Localization/PortableObjectImport.ini:25, section: [GatherTextStep1]
<Workspace>/Engine/Config/Localization/PortableObjectImport.ini:33, section: [GatherTextStep2]
<Workspace>/Engine/Config/Localization/PortableObjectImport.ini:41, section: [GatherTextStep3]
<Workspace>/Engine/Config/Localization/PortableObjectImport.ini:49, section: [GatherTextStep4]
<Workspace>/Engine/Config/Localization/PropertyNames.ini:7, section: [CommonSettings]
<Workspace>/Engine/Config/Localization/ToolTips.ini:7, section: [CommonSettings]
<Workspace>/Engine/Plugins/Online/Android/OnlineSubsystemGooglePlay/Config/Localization/OnlineSubsystemGooglePlay.ini:6, section: [CommonSettings]
<Workspace>/Engine/Plugins/Online/IOS/OnlineSubsystemIOS/Config/Localization/OnlineSubsystemIOS.ini:6, section: [CommonSettings]
<Workspace>/Engine/Plugins/Online/OnlineFramework/Config/Localization/OnlineFramework.ini:6, section: [CommonSettings]
<Workspace>/Engine/Plugins/Online/OnlineSubsystem/Config/Localization/OnlineSubsystem.ini:6, section: [CommonSettings]
<Workspace>/Engine/Plugins/Online/OnlineSubsystemAmazon/Config/Localization/OnlineSubsystemAmazon.ini:6, section: [CommonSettings]
<Workspace>/Engine/Plugins/Online/OnlineSubsystemFacebook/Config/Localization/OnlineSubsystemFacebook.ini:6, section: [CommonSettings]
<Workspace>/Engine/Plugins/Online/OnlineSubsystemOculus/Config/Localization/OnlineSubsystemOculus.ini:6, section: [CommonSettings]
<Workspace>/Engine/Plugins/Online/OnlineSubsystemSteam/Config/Localization/OnlineSubsystemSteam.ini:6, section: [CommonSettings]
<Workspace>/Engine/Plugins/Online/OnlineSubsystemUtils/Config/Localization/OnlineSubsystemUtils.ini:6, section: [CommonSettings]
<Workspace>/Engine/Plugins/Runtime/HTTPChunkInstaller/Config/Localization/HTTPChunkInstaller.ini:6, section: [CommonSettings]
<Workspace>/Projects/Lyra/Config/Localization/EngineOverrides_Export.ini:23, section: [CommonSettings]
<Workspace>/Projects/Lyra/Config/Localization/EngineOverrides_Import.ini:23, section: [CommonSettings]
<Workspace>/Projects/Lyra/Config/Localization/Game_Export.ini:23, section: [CommonSettings]
<Workspace>/Projects/Lyra/Config/Localization/Game_Import.ini:23, section: [CommonSettings]


... omitting 1 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:584

Scope (from outer to inner):

file
namespace    LocalizationConfigurationScript
function     FLocalizationConfigurationScript GenerateImportTextConfigFile

Source code excerpt:

				POFileName = GetDefaultPOFileName( Target );
			}
			ConfigSection.Add( TEXT("PortableObjectName"), POFileName );
			
			Script.AddCommonSettings(MoveTemp(ConfigSection));
		}

		// GatherTextStep0 - InternationalizationExport
		{

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

Scope (from outer to inner):

file
namespace    LocalizationConfigurationScript
function     FLocalizationConfigurationScript GenerateExportTextConfigFile

Source code excerpt:

				POFileName = GetDefaultPOFileName(Target);
			}
			ConfigSection.Add( TEXT("PortableObjectName"), POFileName );
			
			Script.AddCommonSettings(MoveTemp(ConfigSection));
		}

		// GatherTextStep0 - InternationalizationExport
		{

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

Scope (from outer to inner):

file
namespace    UserGeneratedContentLocalization
function     bool ExportLocalization

Source code excerpt:

				ConfigSection.Add(TEXT("ManifestName"), FString::Printf(TEXT("%s.manifest"), *Plugin->GetName()));
				ConfigSection.Add(TEXT("ArchiveName"), FString::Printf(TEXT("%s.archive"), *Plugin->GetName()));
				ConfigSection.Add(TEXT("PortableObjectName"), FString::Printf(TEXT("%s.po"), *Plugin->GetName()));

				ConfigSection.Add(TEXT("GatheredSourceBasePath"), FPaths::ConvertRelativePathToFull(Plugin->GetBaseDir()));

				ConfigSection.Add(TEXT("CopyrightNotice"), ExportOptions.CopyrightNotice);

				ConfigSection.Add(TEXT("NativeCulture"), ExportOptions.UGCLocDescriptor.NativeCulture);

#Loc: <Workspace>/Engine/Source/Editor/TranslationEditor/Private/InternationalizationExportSettings.h:33

Scope (from outer to inner):

file
class        class UInternationalizationExportSettings : public UObject

Source code excerpt:

	/** Filename for the Portable Object format file */
	UPROPERTY(Category = GatherTextStep, EditAnywhere, config)
	FString PortableObjectName;

	/** Name of the manifest file */
	UPROPERTY(Category = GatherTextStep, EditAnywhere, config)
	FString ManifestName;

	/** Name of the archive file */

#References in C# build files

This variable is referenced in the following C# build files:

Location: <Workspace>/Engine/Source/Programs/AutomationTool/Scripts/Localisation.Automation.cs:1019


		string PortableObjectName;
		if (!LocalizationConfig.GetString("CommonSettings", "PortableObjectName", out PortableObjectName))
		{
			throw new AutomationException("Failed to find a required config key! Section: 'CommonSettings', Key: 'PortableObjectName', File: '{0}'", LocalizationConfigFile);
		}

		string NativeCulture;
		if (!LocalizationConfig.GetString("CommonSettings", "NativeCulture", out NativeCulture))