Пример #1
0
        private static void CopyInTransUnit(SliceInfo sliceInfo, object transUnit)
        {
            var transUnitID = ((XmlElement)transUnit).Attributes["id"].Value;

            if (sliceInfo.Segments.All(seg => seg.Key != transUnitID))
            {
                return;
            }

            var segDefs = ((XmlElement)transUnit).GetElementsByTagName("sdl:seg-defs");

            foreach (var segDef in segDefs.OfType <XmlElement>())
            {
                var segments = segDef.GetElementsByTagName("sdl:seg");
                foreach (var segment in segments.OfType <XmlElement>())
                {
                    var segmentId = segment.Attributes["id"].Value;
                    if (!sliceInfo.Segments.Any(seg => seg.Key == transUnitID && seg.Value.Contains(segmentId)))
                    {
                        continue;
                    }

                    segment.RemoveAllAttributes();
                    segment.SetAttribute("id", segmentId);
                    segment.SetAttribute("origin", "source");
                }
            }
            var target    = ((XmlElement)transUnit).ChildNodes.OfType <XmlElement>().FirstOrDefault(t => t.Name == "target");
            var segSource = ((XmlElement)transUnit).ChildNodes.OfType <XmlElement>().FirstOrDefault(t => t.Name == "seg-source");

            if (target != null && segSource != null)
            {
                var currentTransUnitSliceInfo = sliceInfo.Segments.FirstOrDefault(seg => seg.Key == transUnitID);

                if (currentTransUnitSliceInfo.Value != null)
                {
                    foreach (var segmentId in currentTransUnitSliceInfo.Value)
                    {
                        var sourceSegment = segSource.GetElementsByTagName("mrk").OfType <XmlElement>().FirstOrDefault(seg => seg.GetAttribute("mid") == segmentId);
                        var targetSegment = target.GetElementsByTagName("mrk").OfType <XmlElement>().FirstOrDefault(seg => seg.GetAttribute("mid") == segmentId);

                        if (sourceSegment != null && targetSegment != null)
                        {
                            targetSegment.InnerXml = sourceSegment.InnerXml;
                        }
                    }
                }
            }
        }
Пример #2
0
        private static void ClearInTransUnit(SliceInfo sliceInfo, object transUnit)
        {
            String transUnitID = String.Empty;

            transUnitID = ((XmlElement)transUnit).Attributes["id"].Value;

            if (sliceInfo.Segments.All(seg => seg.Key != transUnitID))
            {
                return;
            }

            XmlNodeList segDefs = ((XmlElement)transUnit).GetElementsByTagName("sdl:seg-defs");

            foreach (var segDef in segDefs.OfType <XmlElement>())
            {
                XmlNodeList segments = ((XmlElement)segDef).GetElementsByTagName("sdl:seg");
                foreach (XmlElement segment in segments.OfType <XmlElement>())
                {
                    String SegmentId = String.Empty;
                    SegmentId = segment.Attributes["id"].Value;

                    if (
                        !sliceInfo.Segments.Any(
                            seg => seg.Key == transUnitID && seg.Value.Contains(SegmentId)))
                    {
                        continue;
                    }

                    segment.RemoveAllAttributes();
                    segment.RemoveAll();
                    segment.SetAttribute("id", SegmentId);
                }
                segments = null;
            }
            segDefs = null;
            KeyValuePair <String, List <String> > currentTransUnit =
                sliceInfo.Segments.FirstOrDefault(seg => seg.Key == transUnitID);

            XmlNodeList target = ((XmlElement)transUnit).GetElementsByTagName("target");

            if (target.Count > 0)
            {
                ClearAllChildsInnerText((XmlElement)target[0], currentTransUnit.Value);
            }
            target = null;
        }
Пример #3
0
        private static void ClearInTransUnit(SliceInfo sliceInfo, object transUnit)
        {
            var transUnitID = ((XmlElement)transUnit).Attributes["id"].Value;

            if (sliceInfo.Segments.All(seg => seg.Key != transUnitID))
            {
                return;
            }

            var segDefs = ((XmlElement)transUnit).GetElementsByTagName("sdl:seg-defs");

            foreach (var segDef in segDefs.OfType <XmlElement>())
            {
                var segments = segDef.GetElementsByTagName("sdl:seg");
                foreach (var segment in segments.OfType <XmlElement>())
                {
                    var segmentId = segment.Attributes["id"].Value;

                    if (!sliceInfo.Segments.Any(seg => seg.Key == transUnitID && seg.Value.Contains(segmentId)))
                    {
                        continue;
                    }

                    segment.RemoveAllAttributes();
                    segment.RemoveAll();
                    segment.SetAttribute("id", segmentId);
                }
            }
            var currentTransUnit = sliceInfo.Segments.FirstOrDefault(seg => seg.Key == transUnitID);

            var target = ((XmlElement)transUnit).GetElementsByTagName("target");

            if (target.Count > 0)
            {
                ClearAllChildsInnerText((XmlElement)target[0], currentTransUnit.Value);
            }
        }
Пример #4
0
        public static void CopyFile(SliceInfo sliceInfo, SDLXLIFFSliceOrChange form)
        {
            try
            {
                String      file = sliceInfo.File;
                XmlDocument xDoc = new XmlDocument();
                xDoc.PreserveWhitespace = true;
                xDoc.Load(file);

                String xmlEncoding = "utf-8";
                try
                {
                    if (xDoc.FirstChild.NodeType == XmlNodeType.XmlDeclaration)
                    {
                        // Get the encoding declaration.
                        XmlDeclaration decl = (XmlDeclaration)xDoc.FirstChild;
                        xmlEncoding = decl.Encoding;
                    }
                }
                catch (Exception ex)
                {
                    logger.Error(ex.Message, ex);
                }
                XmlNodeList fileList = xDoc.DocumentElement.GetElementsByTagName("file");
                foreach (XmlElement fileElement in fileList.OfType <XmlElement>())
                {
                    XmlElement  bodyElement   = (XmlElement)(fileElement.GetElementsByTagName("body")[0]);
                    XmlNodeList groupElements = bodyElement.GetElementsByTagName("group");

                    foreach (var groupElement in groupElements.OfType <XmlElement>())
                    {
                        //look in segments
                        XmlNodeList transUnits = ((XmlElement)groupElement).GetElementsByTagName("trans-unit");
                        foreach (var transUnit in transUnits.OfType <XmlElement>())
                        {
                            CopyInTransUnit(sliceInfo, transUnit);
                        }
                        transUnits = null;
                    }

                    //look in segments
                    XmlNodeList transUnitsInBody = ((XmlElement)bodyElement).ChildNodes; //.GetElementsByTagName("trans-unit");
                    foreach (var transUnit in transUnitsInBody.OfType <XmlElement>())
                    {
                        if (((XmlNode)transUnit).Name != "trans-unit")
                        {
                            continue;
                        }
                        CopyInTransUnit(sliceInfo, transUnit);
                    }
                    transUnitsInBody = null;
                    bodyElement      = null;
                    groupElements    = null;
                }
                fileList = null;

                Encoding encoding = new UTF8Encoding();
                if (!String.IsNullOrEmpty(xmlEncoding))
                {
                    encoding = Encoding.GetEncoding(xmlEncoding);
                }
                using (var writer = new XmlTextWriter(file, encoding))
                {
                    //writer.Formatting = Formatting.None;
                    xDoc.Save(writer);
                }
                xDoc = null;
                form.StepProcess("Source segments from file: " + Path.GetFileName(sliceInfo.File) + " are copied.");
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message, ex);
            }
        }
Пример #5
0
        public static void CopyFile(SliceInfo sliceInfo, SDLXLIFFSliceOrChange form)
        {
            try
            {
                var file = sliceInfo.File;
                var xDoc = new XmlDocument {
                    PreserveWhitespace = true
                };
                xDoc.Load(file);

                var xmlEncoding = "utf-8";

                if (xDoc.FirstChild.NodeType == XmlNodeType.XmlDeclaration)
                {
                    // Get the encoding declaration.
                    var decl = (XmlDeclaration)xDoc.FirstChild;
                    xmlEncoding = decl.Encoding;
                }

                var fileList = xDoc.DocumentElement?.GetElementsByTagName("file");
                if (fileList != null)
                {
                    foreach (var fileElement in fileList.OfType <XmlElement>())
                    {
                        var bodyElement   = (XmlElement)(fileElement.GetElementsByTagName("body")[0]);
                        var groupElements = bodyElement.GetElementsByTagName("group");

                        foreach (var groupElement in groupElements.OfType <XmlElement>())
                        {
                            //look in segments
                            var transUnits = groupElement.GetElementsByTagName("trans-unit");
                            foreach (var transUnit in transUnits.OfType <XmlElement>())
                            {
                                CopyInTransUnit(sliceInfo, transUnit);
                            }
                        }

                        //look in segments
                        var transUnitsInBody = bodyElement.ChildNodes;
                        foreach (var transUnit in transUnitsInBody.OfType <XmlElement>())
                        {
                            if (transUnit.Name != "trans-unit")
                            {
                                continue;
                            }
                            CopyInTransUnit(sliceInfo, transUnit);
                        }
                    }
                }

                Encoding encoding = new UTF8Encoding();
                if (!string.IsNullOrEmpty(xmlEncoding))
                {
                    encoding = Encoding.GetEncoding(xmlEncoding);
                }
                using (var writer = new XmlTextWriter(file, encoding))
                {
                    xDoc.Save(writer);
                }
                form.StepProcess("Source segments from file: " + Path.GetFileName(sliceInfo.File) + " are copied.");
            }
            catch (Exception ex)
            {
                _logger.Error($"{MethodBase.GetCurrentMethod().Name} \n {ex}");
            }
        }