24 static TWeakObjectPtr<UArticyLocalizerSystem> ArticyLocalizerSystem;
25 if (ArticyLocalizerSystem.IsValid())
27 return ArticyLocalizerSystem.Get();
30 UClass* ParentClass = UArticyLocalizerSystem::StaticClass();
33 for (TObjectIterator<UClass> It; It; ++It)
37 if (Class->IsChildOf(ParentClass) && Class != ParentClass)
40 UArticyLocalizerSystem* NewLocalizerSystem = NewObject<UArticyLocalizerSystem>(GetTransientPackage(), Class);
43 ArticyLocalizerSystem = NewLocalizerSystem;
45 return ArticyLocalizerSystem.Get();
53 virtual void Reload() {};
55 inline FText ResolveText(UObject* Outer,
const FText* SourceText)
57 return UArticyTextExtension::Get()->Resolve(Outer, SourceText);
60 inline FText LocalizeString(UObject* Outer,
const FText& Key,
bool ResolveTextExtension =
true,
const FText* BackupText =
nullptr)
67 const FText MissingEntry = FText::FromString(
"<MISSING STRING TABLE ENTRY>");
70 FText SourceString = Key;
73 TOptional<FString> TableName = FTextInspector::GetNamespace(Key);
74 if (!TableName.IsSet())
76 TableName = TEXT(
"ARTICY");
80 FStringTableConstPtr TablePtr = FStringTableRegistry::Get().FindStringTable(FName(TableName.GetValue()));
81 if (TablePtr.IsValid())
84 const FStringTable* Table = TablePtr.Get();
85 FStringTableEntryConstPtr EntryPtr = Table->FindEntry(FTextKey(Key.ToString()));
86 if (EntryPtr.IsValid())
88 const FStringTableEntry* TableEntry = EntryPtr.Get();
89 SourceString = FText::FromString(TableEntry->GetSourceString());
93 if (!SourceString.IsEmpty() && !SourceString.EqualTo(MissingEntry) && !SourceString.EqualTo(Key))
95 if (ResolveTextExtension)
97 return ResolveText(Outer, &SourceString);
99 return FText(SourceString);
103 if (ResolveTextExtension && !Key.ToString().EndsWith(
".PreviewText"))
105 return ResolveText(Outer, &Key);
118 bool bDataLoaded =
false;
119 bool bListenerSet =
false;