Пример #1
0
        /// <summary>
        /// Extracts a single TransPair from a trans-unit element.
        /// </summary>
        /// <param name="tu">A trans-unit element.</param>
        /// <returns>A TransPair.</returns>
        protected virtual XliffTransPair ExtractSinglePair(XElement tu)
        {
            var source = tu.Element(X + "source");
            var target = tu.Element(X + "target");
            var pair   = new XliffTransPair()
            {
                Serial     = IsInterSegment(tu) ? -1 : 1,
                Id         = (string)tu.Attribute("id"),
                Source     = GetInline(source) ?? InlineString.Empty,
                Target     = GetInline(target) ?? InlineString.Empty,
                SourceLang = GetLang(source) ?? SourceLang,
                TargetLang = GetLang(target) ?? TargetLang,
            };

            MatchTags(pair.Source, pair.Target);
            pair.AddNotes(GetNotes(tu));
            AddTuAttrProps(pair, tu);
            AddContextProps(pair, tu);
            if (source != null)
            {
                AddSourceAttrProps(pair, source);
            }
            if (target != null)
            {
                AddTargetAttrProps(pair, target);
            }
            return(pair);
        }
Пример #2
0
        protected virtual XliffTransPair ExtractSinglePair(XElement tu)
        {
            var source = tu.Element(X + "source");
            var target = tu.Element(X + "target");
            var pair   = new XliffTransPair()
            {
                Serial     = ((string)tu.Attribute("translate") == "no") ? -1 : 1,
                Id         = (string)tu.Attribute("id"),
                Source     = GetInline(source) ?? InlineString.Empty,
                Target     = GetInline(target) ?? InlineString.Empty,
                SourceLang = GetLang(source) ?? SourceLang,
                TargetLang = GetLang(target) ?? TargetLang,
            };

            MatchTags(pair.Source, pair.Target);
            pair.AddNotes(GetNotes(tu));
            foreach (var attr in tu.Attributes().Where(a => a.Name != "id"))
            {
                AddProp(pair, attr.Name.LocalName, attr.Value);
            }
            foreach (var context in tu.Elements(X + "context-group").Elements(X + "context"))
            {
                AddProp(pair, "context/" + ((string)context.Attribute("context-type") ?? ""), (string)context ?? "");
            }
            return(pair);
        }
Пример #3
0
        protected virtual XliffTransPair ExtractSegmentedPair(SegmentData src, SegmentData tgt, string slang, string tlang, IEnumerable <string> notes)
        {
            var selem = src.Element;
            var telem = tgt.Element;

            var pair = new XliffTransPair()
            {
                Serial     = (selem != null) || (telem != null) ? 1 : -1,
                Id         = (string)selem?.Attribute("mid") ?? (string)telem?.Attribute("mid") ?? "*",
                Source     = GetInline(selem) ?? src.InlineString ?? InlineString.Empty,
                Target     = GetInline(telem) ?? tgt.InlineString ?? InlineString.Empty,
                SourceLang = slang,
                TargetLang = tlang,
            };

            MatchTags(pair.Source, pair.Target);
            pair.AddNotes(notes);
            return(pair);
        }
Пример #4
0
        protected virtual XliffTransPair ExtractSingleAltPair(XElement alt)
        {
            var source =
                alt.Element(X + "seg-source") ??
                alt.Element(X + "source") ??
                alt.Parent.Element(X + "seg-source") ??
                alt.Parent.Element(X + "source");
            var target = alt.Element(X + "target");
            var pair   = new XliffTransPair()
            {
                Id         = (string)alt.Parent.Attribute("id"),
                Source     = GetInline(source) ?? InlineString.Empty,
                Target     = GetInline(target) ?? InlineString.Empty,
                SourceLang = GetLang(source) ?? SourceLang,
                TargetLang = GetLang(target) ?? TargetLang,
            };

            AddProp(pair, "origin", (string)alt.Attribute("origin"));
            MatchTags(pair.Source, pair.Target);
            pair.AddNotes(GetNotes(alt));
            return(pair);
        }