// // Load from Archive // private static void FillNamespaceFromArchieve(InternalFormat document, string Culture, string parentNamespaceName, UnrealNamespace <UnrealArchive> sourceArchieve) { // find namespace string resultNamespaceName = InternalNamespace.MakeName(parentNamespaceName, sourceArchieve.Namespace); InternalNamespace resultNamespace = null; foreach (var ns in document.Namespaces) { if (ns.Name == resultNamespaceName) { resultNamespace = ns; break; } } if (resultNamespace == null) { throw new FormatException("Can't find namespace for parent: '" + parentNamespaceName + "' and source '" + sourceArchieve.Namespace + "'"); } // fill namespace from childs if (sourceArchieve.Children != null) { foreach (var child in sourceArchieve.Children) { InternalText text = new InternalText(); InternalRecord record = resultNamespace[child.Key]; text.Culture = Culture; if (record.Source != child.Source.Text) { text.Text = ""; } else { text.Text = child.Translation.Text; } record.Translations.Add(text); } } // recursively repeat for all Subnamespaces if (sourceArchieve.Subnamespaces != null) { foreach (var subnamespace in sourceArchieve.Subnamespaces) { FillNamespaceFromArchieve(document, Culture, resultNamespaceName, subnamespace); } } }
// // Load from Manifest // private static void AppendNamespaceFromManifest(InternalFormat document, string parentNamespaceName, UnrealNamespace <UnrealManifest> sourceNamespace) { InternalNamespace resultNamespace = new InternalNamespace(); // generate namespace name resultNamespace.Name = InternalNamespace.MakeName(parentNamespaceName, sourceNamespace.Namespace); // fill from all Childrens records resultNamespace.Children = new List <InternalRecord>(); if (sourceNamespace.Children != null) { foreach (var child in sourceNamespace.Children) { foreach (var key in child.Keys) { InternalRecord record = new InternalRecord(); record.Source = child.Source.Text; record.Key = key.Key; record.Translations = new List <InternalText>(); record.Path = key.Path; resultNamespace.Children.Add(record); } } } // add this namespace to List document.Namespaces.Add(resultNamespace); // recursive add all subnamespaces if (sourceNamespace.Subnamespaces != null) { foreach (var subnamespace in sourceNamespace.Subnamespaces) { AppendNamespaceFromManifest(document, resultNamespace.Name, subnamespace); } } }