bool FInternationalizationArchive::AddEntry(const FString& Namespace, const FString& Key, const FLocItem& Source, const FLocItem& Translation, const TSharedPtr<FLocMetadataObject> KeyMetadataObj, const bool bOptional) { if (Key.IsEmpty()) { return false; } TSharedPtr<FArchiveEntry> ExistingEntry = FindEntryByKey(Namespace, Key, KeyMetadataObj); if (ExistingEntry.IsValid() && ExistingEntry->Source == Source) { return (ExistingEntry->Translation == Translation); } TSharedRef<FArchiveEntry> NewEntry = MakeShareable(new FArchiveEntry(Namespace, Key, Source, Translation, KeyMetadataObj, bOptional)); if (ExistingEntry.IsValid()) { UpdateEntry(ExistingEntry.ToSharedRef(), NewEntry); } else { EntriesBySourceText.Add(Source.Text, NewEntry); EntriesByKey.Add(Key, NewEntry); } return true; }
void FConflictReportInfo::AddConflict(const FString& Namespace, const FString& Key, const TSharedPtr<FLocMetadataObject> KeyMetadata, const FLocItem& Source, const FString& SourceLocation ) { TSharedPtr< FLocConflict > ExistingEntry = FindEntryByKey( Namespace, Key, KeyMetadata ); if( !ExistingEntry.IsValid() ) { TSharedRef< FLocConflict > NewEntry = MakeShareable( new FLocConflict( Namespace, Key, KeyMetadata ) ); EntriesByKey.Add( Key, NewEntry ); ExistingEntry = NewEntry; } ExistingEntry->Add( Source, SourceLocation.ReplaceCharWithEscapedChar() ); }
bool FInternationalizationArchive::SetTranslation(const FString& Namespace, const FString& Key, const FLocItem& Source, const FLocItem& Translation, const TSharedPtr<FLocMetadataObject> KeyMetadataObj) { TSharedPtr<FArchiveEntry> Entry = FindEntryByKey(Namespace, Key, KeyMetadataObj); if (Entry.IsValid()) { if (Entry->Source != Source) { UpdateEntry(Entry.ToSharedRef(), MakeShareable(new FArchiveEntry(Namespace, Key, Source, Translation, KeyMetadataObj, Entry->bIsOptional))); } else { Entry->Translation = Translation; } return true; } return false; }