You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
Merging //UE4/Main/Engine/... to //UE4/Dev-Mobile
#rb None [CL 4749281 by Jack Porter in Dev-Mobile branch]
This commit is contained in:
@@ -18,10 +18,13 @@ bool FTextLocalizationResourceGenerator::GenerateLocMeta(const FLocTextHelper& I
|
||||
return true;
|
||||
}
|
||||
|
||||
bool FTextLocalizationResourceGenerator::GenerateLocRes(const FLocTextHelper& InLocTextHelper, const FString& InCultureToGenerate, const bool bSkipSourceCheck, const FTextLocalizationResourceId& InLocResID, FTextLocalizationResource& OutLocRes)
|
||||
bool FTextLocalizationResourceGenerator::GenerateLocRes(const FLocTextHelper& InLocTextHelper, const FString& InCultureToGenerate, const bool bSkipSourceCheck, const FTextKey& InLocResID, FTextLocalizationResource& OutLocRes, const int32 InPriority)
|
||||
{
|
||||
const bool bIsNativeCulture = InCultureToGenerate == InLocTextHelper.GetNativeCulture();
|
||||
FCulturePtr Culture = FInternationalization::Get().GetCulture(InCultureToGenerate);
|
||||
|
||||
// Add each manifest entry to the LocRes file
|
||||
InLocTextHelper.EnumerateSourceTexts([&InLocTextHelper, &InCultureToGenerate, &bSkipSourceCheck, &InLocResID, &OutLocRes](TSharedRef<FManifestEntry> InManifestEntry) -> bool
|
||||
InLocTextHelper.EnumerateSourceTexts([&InLocTextHelper, &InCultureToGenerate, &bSkipSourceCheck, &InLocResID, &OutLocRes, InPriority, bIsNativeCulture, Culture](TSharedRef<FManifestEntry> InManifestEntry) -> bool
|
||||
{
|
||||
// For each context, we may need to create a different or even multiple LocRes entries.
|
||||
for (const FManifestContext& Context : InManifestEntry->Contexts)
|
||||
@@ -30,15 +33,35 @@ bool FTextLocalizationResourceGenerator::GenerateLocRes(const FLocTextHelper& In
|
||||
FLocItem TranslationText;
|
||||
InLocTextHelper.GetRuntimeText(InCultureToGenerate, InManifestEntry->Namespace, Context.Key, Context.KeyMetadataObj, ELocTextExportSourceMethod::NativeText, InManifestEntry->Source, TranslationText, bSkipSourceCheck);
|
||||
|
||||
// Add this entry to the LocRes
|
||||
OutLocRes.AddEntry(InManifestEntry->Namespace.GetString(), Context.Key.GetString(), InManifestEntry->Source.Text, TranslationText.Text, InLocResID);
|
||||
// Is this entry considered translated? Native entries are always translated
|
||||
const bool bIsTranslated = bIsNativeCulture || !InManifestEntry->Source.IsExactMatch(TranslationText);
|
||||
if (bIsTranslated)
|
||||
{
|
||||
// Validate translations that look like they could be format patterns
|
||||
if (Culture && TranslationText.Text.Contains(TEXT("{"), ESearchCase::CaseSensitive))
|
||||
{
|
||||
const FTextFormat FmtPattern = FTextFormat::FromString(TranslationText.Text);
|
||||
|
||||
TArray<FString> ValidationErrors;
|
||||
if (!FmtPattern.ValidatePattern(Culture, ValidationErrors))
|
||||
{
|
||||
FString Message = FString::Printf(TEXT("Format pattern '%s' (%s,%s) generated the following validation errors for '%s':"), *TranslationText.Text, *InManifestEntry->Namespace.GetString(), *Context.Key.GetString(), *InCultureToGenerate);
|
||||
for (const FString& ValidationError : ValidationErrors)
|
||||
{
|
||||
Message += FString::Printf(TEXT("\n - %s"), *ValidationError);
|
||||
}
|
||||
UE_LOG(LogTextLocalizationResourceGenerator, Warning, TEXT("%s"), *FLocTextHelper::SanitizeLogOutput(Message));
|
||||
}
|
||||
}
|
||||
|
||||
// Add this entry to the LocRes
|
||||
OutLocRes.AddEntry(InManifestEntry->Namespace.GetString(), Context.Key.GetString(), InManifestEntry->Source.Text, TranslationText.Text, InPriority, InLocResID);
|
||||
}
|
||||
}
|
||||
|
||||
return true; // continue enumeration
|
||||
}, true);
|
||||
|
||||
OutLocRes.DetectAndLogConflicts();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -142,20 +165,21 @@ bool FTextLocalizationResourceGenerator::GenerateLocResAndUpdateLiveEntriesFromC
|
||||
}
|
||||
}
|
||||
|
||||
TArray<TSharedPtr<FTextLocalizationResource>> TextLocalizationResources;
|
||||
for (const FString& CultureName : CulturesToGenerate)
|
||||
FTextLocalizationResource TextLocalizationResource;
|
||||
for (int32 CultureIndex = 0; CultureIndex < CulturesToGenerate.Num(); ++CultureIndex)
|
||||
{
|
||||
const FString& CultureName = CulturesToGenerate[CultureIndex];
|
||||
|
||||
const FString CulturePath = DestinationPath / CultureName;
|
||||
const FString ResourceFilePath = FPaths::ConvertRelativePathToFull(CulturePath / ResourceName);
|
||||
|
||||
TSharedPtr<FTextLocalizationResource>& LocRes = TextLocalizationResources.Add_GetRef(MakeShared<FTextLocalizationResource>());
|
||||
if (!GenerateLocRes(LocTextHelper, CultureName, bSkipSourceCheck, FTextLocalizationResourceId(ResourceFilePath), *LocRes))
|
||||
if (!GenerateLocRes(LocTextHelper, CultureName, bSkipSourceCheck, FTextKey(ResourceFilePath), TextLocalizationResource, CultureIndex))
|
||||
{
|
||||
UE_LOG(LogTextLocalizationResourceGenerator, Error, TEXT("Failed to generate localization resource for culture '%s'."), *CultureName);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
FTextLocalizationManager::Get().UpdateFromLocalizationResources(TextLocalizationResources);
|
||||
FTextLocalizationManager::Get().UpdateFromLocalizationResource(TextLocalizationResource);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user