Iâve tested the project you sent me and Iâve managed to find the issue. The good news is that it was already fixed by the changes made for 4.12, and the fix for 4.11 is small (also shelved in CL# 3101518).
In FAsyncPackage::CreateLinker
, the following:
FString PackageFileName;
if (Desc.NameToLoad == NAME_None ||
(!GetConvertedDynamicPackageNameToTypeName().Contains(Desc.Name) &&
!FPackageName::DoesPackageExist(Desc.NameToLoad.ToString(), Desc.Guid.IsValid() ? &Desc.Guid : nullptr, &PackageFileName)))
{
UE_LOG(LogStreaming, Error, TEXT("Couldn't find file for package %s requested by async loading code."), *Desc.Name.ToString());
bLoadHasFailed = true;
return EAsyncPackageState::TimeOut;
}
Needs to be replaced with this:
FString NativePackageFileName;
FString LocalizedPackageFileName;
if (Desc.NameToLoad == NAME_None ||
(!GetConvertedDynamicPackageNameToTypeName().Contains(Desc.Name) &&
!FPackageName::DoesPackageExistWithLocalization(Desc.NameToLoad.ToString(), Desc.Guid.IsValid() ? &Desc.Guid : nullptr, &NativePackageFileName, &LocalizedPackageFileName)))
{
UE_LOG(LogStreaming, Error, TEXT("Couldn't find file for package %s requested by async loading code."), *Desc.Name.ToString());
bLoadHasFailed = true;
return EAsyncPackageState::TimeOut;
}
// If we are the editor, we must have a native package. If we are the game, we must have a localized package or a native package.
FString PackageFileName;
if (GIsEditor)
{
PackageFileName = NativePackageFileName;
}
else
{
PackageFileName = (LocalizedPackageFileName.Len() > 0) ? LocalizedPackageFileName : NativePackageFileName;
}
Based on this, and the lack of Content Browser integration, it seems that the released version of 4.11 didnât quite have full localized package support. I donât know whether youâre planning to upgrade past 4.11, but Iâd recommend at least 4.12 for fully functional localized package support, as although the above fix will solve your redirection issue, it doesnât do anything to solve the other culture hierarchy issues I mentioned before.
As an aside, the GetLocalizedSound function in your LocalizedAudio blueprint is quite odd. I appreciate it may have just been you testing, but you shouldnât need to branch on a culture like that; youâd just use a fixed asset name and then use package localization to handle the redirection.