From 67759090d1a61505c9659f4f51f42e82f3fcc4a5 Mon Sep 17 00:00:00 2001 From: Atlas Dostal Date: Wed, 3 Nov 2021 19:21:42 -0700 Subject: [PATCH 1/3] Stronger validation for UE5 --- .../Private/BYGLocalizationSettings.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Source/BYGLocalization/Private/BYGLocalizationSettings.cpp b/Source/BYGLocalization/Private/BYGLocalizationSettings.cpp index 82238cc..b73d4ae 100644 --- a/Source/BYGLocalization/Private/BYGLocalizationSettings.cpp +++ b/Source/BYGLocalization/Private/BYGLocalizationSettings.cpp @@ -33,6 +33,18 @@ bool UBYGLocalizationSettings::Validate() bAnyChanges = true; } + if ( PrimaryLocalizationDirectory.Path.StartsWith( TEXT( "/" ) ) ) + { + PrimaryLocalizationDirectory.Path = PrimaryLocalizationDirectory.Path.RightChop( 1 ); + bAnyChanges = true; + } + + if ( PrimaryLocalizationDirectory.Path.StartsWith( TEXT( "Game/" ) ) ) + { + PrimaryLocalizationDirectory.Path = PrimaryLocalizationDirectory.Path.RightChop( 5 ); + bAnyChanges = true; + } + if ( bUpdateLocsWithCommandLineFlag && CommandLineFlag.IsEmpty() ) { CommandLineFlag = "UpdateLoc"; @@ -57,6 +69,7 @@ void UBYGLocalizationSettings::PostEditChangeProperty( struct FPropertyChangedEv || ( PropertyChangedEvent.GetPropertyName() == GET_MEMBER_NAME_CHECKED( UBYGLocalizationSettings, AllowedExtensions ) ) ) { + Validate(); FBYGLocalizationModule::Get().ReloadLocalizations(); } From 21388e3f0aa3ec74e2915fee73adefc55efab7d9 Mon Sep 17 00:00:00 2001 From: Atlas Dostal Date: Wed, 3 Nov 2021 19:23:38 -0700 Subject: [PATCH 2/3] Remove some unused parameters and fix path logic --- Source/BYGLocalization/Private/BYGLocalization.cpp | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/Source/BYGLocalization/Private/BYGLocalization.cpp b/Source/BYGLocalization/Private/BYGLocalization.cpp index 5f65b54..7bb74ef 100644 --- a/Source/BYGLocalization/Private/BYGLocalization.cpp +++ b/Source/BYGLocalization/Private/BYGLocalization.cpp @@ -52,12 +52,9 @@ TArray UBYGLocalization::GetAllLocalizationFiles() const for ( const FDirectoryPath& Path : Paths ) { IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile(); - // Directory Path will probably be /Game/Somethingd - FString LocalizationDirPath = Path.Path.Replace( TEXT( "/Game" ), *FPaths::ProjectContentDir() ); - FPaths::RemoveDuplicateSlashes( LocalizationDirPath ); - bool bFound = false; - TArray LocalFiles; - PlatformFile.IterateDirectoryRecursively( *LocalizationDirPath, [&bFound, &PlatformFile, &Files, &Settings]( const TCHAR* InFilenameOrDirectory, const bool bIsDir ) -> bool + // Directory Path will probably be /Localization + FString LocalizationDirPath = *FPaths::ProjectContentDir() / Path.Path; + PlatformFile.IterateDirectoryRecursively( *LocalizationDirPath, [&Files, &Settings]( const TCHAR* InFilenameOrDirectory, const bool bIsDir ) -> bool { // Find all .txt/.csv files in a dir if ( !bIsDir ) @@ -68,7 +65,6 @@ TArray UBYGLocalization::GetAllLocalizationFiles() const && ( Settings->FilenameSuffix.IsEmpty() || BaseName.EndsWith( Settings->FilenameSuffix ) ) ) { FString NewPath = InFilenameOrDirectory; - FPaths::RemoveDuplicateSlashes( NewPath ); FPaths::MakePathRelativeTo( NewPath, *FPaths::ProjectContentDir() ); Files.Add( NewPath ); } @@ -76,7 +72,6 @@ TArray UBYGLocalization::GetAllLocalizationFiles() const // return true to continue searching return true; } ); - Files.Append( LocalFiles ); } return Files; From 9f6880a4a7c81b9423620051755ffbb37db33201 Mon Sep 17 00:00:00 2001 From: Atlas Dostal Date: Wed, 3 Nov 2021 19:29:42 -0700 Subject: [PATCH 3/3] Remove slashes in default path --- Source/BYGLocalization/Private/BYGLocalizationSettings.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/BYGLocalization/Private/BYGLocalizationSettings.cpp b/Source/BYGLocalization/Private/BYGLocalizationSettings.cpp index b73d4ae..9bbea2c 100644 --- a/Source/BYGLocalization/Private/BYGLocalizationSettings.cpp +++ b/Source/BYGLocalization/Private/BYGLocalizationSettings.cpp @@ -6,7 +6,7 @@ UBYGLocalizationSettings::UBYGLocalizationSettings( const FObjectInitializer& ObjectInitializer ) { - PrimaryLocalizationDirectory.Path = "/Localization/"; + PrimaryLocalizationDirectory.Path = "Localization"; }