/// <summary>
        /// Gets the contents of a document as a serialized string.
        /// </summary>
        /// <param name="document">The document whose contents to get.</param>
        /// <param name="indentChars">Characters to use to indent the serialized document for readability.</param>
        /// <returns>The string representation of the serialized document.</returns>
        public static string GetDocumentContents(XliffDocument document, string indentChars)
        {
            using (MemoryStream stream = new MemoryStream())
            {
                StreamReader reader;
                XliffWriter  writer;

                if (indentChars == null)
                {
                    writer = new XliffWriter();
                }
                else
                {
                    XliffWriterSettings settings;

                    settings             = new XliffWriterSettings();
                    settings.Indent      = true;
                    settings.IndentChars = (indentChars == string.Empty) ? "  " : indentChars;

                    writer = new XliffWriter(settings);
                }

                writer.Serialize(stream, document);

                stream.Seek(0, SeekOrigin.Begin);
                reader = new StreamReader(stream);

                return(reader.ReadToEnd());
            }
        }
        public XliffDocument ExecuteExtraction(XliffDocument document)
        {
            var units = document.CollapseChildren <Unit>();

            foreach (var unit in units)
            {
                var originalData = new OriginalData();
                foreach (var resource in unit.Resources)
                {
                    var segment = resource as Segment;
                    if (segment != null)
                    {
                        var cdata = segment.Source.Text[0] as CDataTag;
                        if (cdata == null)
                        {
                            continue;
                        }
                        var html = cdata.Text;
                        var inlineCodeExtraction = html.ConvertHtmlTagsInInLineCodes();
                        foreach (var data in inlineCodeExtraction.OriginalData)
                        {
                            originalData.AddData(data.Value, data.Key);
                        }
                        segment.Source.Text.Clear();
                        segment.Source.Text.AddAll(inlineCodeExtraction.Text);
                    }
                }
                if (originalData.HasData)
                {
                    unit.OriginalData = originalData;
                }
            }
            return(document);
        }
        public void TargetWithPhGetConvertedToCDataWithBrHtmlTag()
        {
            var xliff = @"<?xml version=""1.0"" encoding=""utf-8""?>
<xliff srcLang=""en-GB"" version=""2.0"" trgLang=""it-IT"" xmlns=""urn:oasis:names:tc:xliff:document:2.0"">
    <file id=""f1"">
        <unit id=""u1"">
            <segment>
                <source>Hello <ph id=""1"" subType=""xlf:lb"" type=""fmt""/>World!</source>
                <target>Hello <ph id=""1"" subType=""xlf:lb"" type=""fmt""/>World!</target>
            </segment>
        </unit>
    </file>
</xliff>";

            XliffDocument document         = LoadXliff(xliff);
            var           inlineprocessing = new InlineCodeProcessing();

            var newDocument = inlineprocessing.ExecuteMerge(document);

            Assert.AreEqual(1, newDocument.Files[0].Containers.Count);
            var unit = newDocument.Files[0].Containers[0] as Unit;

            Assert.AreEqual(1, unit.CollapseChildren <Target>()[0].Text.Count);
            var segment = unit.CollapseChildren <Target>()[0].Text[0] as CDataTag;

            Assert.IsNotNull(segment);
            Assert.AreEqual("Hello <br/>World!", segment.Text);
        }
Exemple #4
0
        /// <summary>
        /// Demonstrates how to validate a document on write and display the data where the validation error occurred.
        /// </summary>
        /// <param name="document">The document to validate.</param>
        /// <param name="file">The path to write the document to.</param>
        public static void ViewValidations(XliffDocument document, string file)
        {
            using (IO.FileStream stream = new IO.FileStream(file, IO.FileMode.Create, IO.FileAccess.Write))
            {
                XliffWriter writer;

                writer = new XliffWriter();

                try
                {
                    writer.Serialize(stream, document);
                }
                catch (ValidationException e)
                {
                    Console.WriteLine("ValidationException Details:");
                    if (e.Data != null)
                    {
                        foreach (object key in e.Data.Keys)
                        {
                            Console.WriteLine("  '{0}': '{1}'", key, e.Data[key]);
                        }
                    }
                }
            }
        }
        public void SingleParagraphCDataWithoutFormattigIsLeftUntouched()
        {
            var xliff = @"<?xml version=""1.0"" encoding=""utf-8""?>
<xliff srcLang=""en-GB"" version=""2.0"" xmlns=""urn:oasis:names:tc:xliff:document:2.0"">
    <file id=""f1"">
        <unit id=""u1"">
            <segment>
                <source><![CDATA[Hello World!]]></source>
            </segment>
        </unit>
    </file>
</xliff>";

            XliffDocument document         = LoadXliff(xliff);
            var           inlineprocessing = new InlineCodeProcessing();

            var newDocument = inlineprocessing.ExecuteExtraction(document);

            Assert.AreEqual(1, newDocument.Files[0].Containers.Count);
            var unit = newDocument.Files[0].Containers[0] as Unit;

            Assert.IsNull(unit.OriginalData);

            Assert.AreEqual(1, unit.CollapseChildren <Source>()[0].Text.Count);
            var segment = unit.CollapseChildren <Source>()[0].Text[0] as PlainText;

            Assert.IsNotNull(segment);
            Assert.AreEqual("Hello World!", segment.Text);
        }
        public void SingleHtmlParagraphUnitIsWrappedIntoGroup()
        {
            var xliff = @"<?xml version=""1.0"" encoding=""utf-8""?>
<xliff srcLang=""en-GB"" version=""2.0"" xmlns=""urn:oasis:names:tc:xliff:document:2.0"">
    <file id=""f1"">
        <unit id=""u1"" name=""body"">
            <segment>
                <source><![CDATA[<p>Hello Word!</p>]]></source>
            </segment>
        </unit>
    </file>
</xliff>";

            XliffDocument document = LoadXliff(xliff);
            var           splitter = new ParagraphSplitter(_htmlParser);

            var newDocument = splitter.ExecuteExtraction(document);

            Assert.AreEqual(1, newDocument.Files[0].Containers.Count);
            var group = newDocument.Files[0].Containers[0] as Group;

            Assert.IsNotNull(group);
            Assert.AreEqual("body", group.Name);

            Assert.AreEqual(1, group.Containers.Count);
            var unit = group.Containers[0] as Unit;

            Assert.AreEqual("html:p", unit.Type);
            Assert.AreEqual("Hello Word!", unit.Resources[0].Source.Text[0].ToString());
        }
Exemple #7
0
        public void MergerCreatesABundleWithTwoDocsIfXliffHastwoFiles()
        {
            var xliff = @"<?xml version=""1.0"" encoding=""utf-8""?>
                <xliff srcLang=""en-US"" trgLang=""it-IT"" version=""2.0"" xmlns=""urn:oasis:names:tc:xliff:document:2.0"">
                  <file id=""f1"">
                    <unit id=""u1"" name=""title"">
                      <segment>
                        <source>content</source>
                        <target>contenuto tradotto</target>
                      </segment>
                    </unit>
                  </file>
                  <file id=""f2"">
                    <unit id=""u2"" name=""title"">
                      <segment>
                        <source>content</source>
                        <target>contenuto tradotto</target>
                      </segment>
                    </unit>
                  </file>
                </xliff>";


            XliffDocument   doc    = Merger.Read(xliff);
            IMergerToSource merger = new MergerToBundle();

            merger.Merge(doc);

            var bundle = merger.Output as Bundle;

            Assert.AreEqual(2, bundle.Documents.Count);
        }
Exemple #8
0
        public static void WhiteSpaces()
        {
            string data = "<xliff srcLang='en' version='2.0' xmlns='urn:oasis:names:tc:xliff:document:2.0'>"
                          + "<file id='f1'><unit id='u1'>"
                          + "<segment><source>Sentence 1.</source></segment>"
                          + "<ignorable><source> </source></ignorable>"
                          + "<segment><source>Sentence 2.</source></segment>"
                          + "</unit></file></xliff>";

            using (IO.MemoryStream ms = new IO.MemoryStream(Encoding.UTF8.GetBytes(data)))
            {
                XliffReader   reader = new XliffReader();
                XliffDocument doc    = reader.Deserialize(ms);
                foreach (XliffElement e in doc.CollapseChildren <XliffElement>())
                {
                    Console.WriteLine("Type: " + e.GetType().ToString());
                    if (e is PlainText)
                    {
                        PlainText pt = (PlainText)e;
                        Console.WriteLine("Content: '" + pt.Text + "'");
                    }
                }
            }
            Console.ReadKey();
        }
Exemple #9
0
        public void ParentAttachedList_GetEnumerator()
        {
            IEnumerator <XliffDocument> enumerator;
            XliffDocument item;

            //
            // Test with empty list.
            //

            enumerator = this._list.GetEnumerator();
            Assert.IsNotNull(enumerator, "Enumerator is null.");
            Assert.IsFalse(enumerator.MoveNext(), "Enumerator should be empty.");

            //
            // Test with multiple items.
            //

            item = new XliffDocument();
            this._list.Add(item);
            item = new XliffDocument();
            this._list.Add(item);
            enumerator = this._list.GetEnumerator();
            Assert.IsNotNull(enumerator, "Enumerator is null.");
            Assert.IsTrue(enumerator.MoveNext(), "Enumerator should not be empty.");
            Assert.IsTrue(enumerator.MoveNext(), "Enumerator should not be empty.");
            Assert.AreSame(item, enumerator.Current, "Enumerator item is incorrect.");
            Assert.IsFalse(enumerator.MoveNext(), "Enumerator should be empty.");
        }
Exemple #10
0
        public void DefaultValue_File()
        {
            File          file;
            XliffDocument document;

            file           = new File("id");
            document       = new XliffDocument();
            document.Space = Preservation.Preserve;
            document.Files.Add(file);

            Assert.IsTrue(file.CanResegment, "CanResegment is incorrect.");
            Assert.AreEqual(0, file.Containers.Count, "Containers count is incorrect.");
            Assert.IsFalse(file.HasNotes, "HasNotes is incorrect.");
            Assert.AreEqual("id", file.Id, "Id is incorrect.");
            Assert.AreEqual(0, file.Notes.Count, "Notes count is incorrect.");
            Assert.IsNull(file.Original, "Original is incorrect.");
            Assert.IsNull(file.Skeleton, "Skeleton is incorrect.");
            Assert.AreEqual(ContentDirectionality.Auto,
                            file.SourceDirectionality,
                            "SourceDirectionality is incorrect.");
            Assert.AreEqual(Preservation.Preserve, file.Space, "Space is incorrect");
            Assert.AreEqual(ContentDirectionality.Auto,
                            file.TargetDirectionality,
                            "TargetDirectionality is incorrect.");
            Assert.IsTrue(file.Translate, "Translate is incorrect.");
        }
        public void SingleParagraphPlainTextUnitIsLeftUntouched()
        {
            var xliff = @"<?xml version=""1.0"" encoding=""utf-8""?>
<xliff srcLang=""en-GB"" version=""2.0"" trgLang=""it-IT"" xmlns=""urn:oasis:names:tc:xliff:document:2.0"">
    <file id=""f1"">
        <unit id=""u1"">
            <segment>
                <source>Hello World!</source>
                <target>Hello World!</target>
            </segment>
        </unit>
    </file>
</xliff>";

            XliffDocument document         = LoadXliff(xliff);
            var           inlineprocessing = new InlineCodeProcessing();

            var newDocument = inlineprocessing.ExecuteMerge(document);

            Assert.AreEqual(1, newDocument.Files[0].Containers.Count);
            var unit = newDocument.Files[0].Containers[0] as Unit;

            Assert.AreEqual(1, unit.CollapseChildren <Target>()[0].Text.Count);
            var segment = unit.CollapseChildren <Target>()[0].Text[0] as PlainText;

            Assert.IsNotNull(segment);
            Assert.AreEqual("Hello World!", segment.Text);
        }
        public void DefaultValue_File()
        {
            File file;
            XliffDocument document;

            file = new File("id");
            document = new XliffDocument();
            document.Space = Preservation.Preserve;
            document.Files.Add(file);

            Assert.IsTrue(file.CanResegment, "CanResegment is incorrect.");
            Assert.AreEqual(0, file.Containers.Count, "Containers count is incorrect.");
            Assert.IsFalse(file.HasNotes, "HasNotes is incorrect.");
            Assert.AreEqual("id", file.Id, "Id is incorrect.");
            Assert.AreEqual(0, file.Notes.Count, "Notes count is incorrect.");
            Assert.IsNull(file.Original, "Original is incorrect.");
            Assert.IsNull(file.Skeleton, "Skeleton is incorrect.");
            Assert.AreEqual(ContentDirectionality.Auto,
                            file.SourceDirectionality,
                            "SourceDirectionality is incorrect.");
            Assert.AreEqual(Preservation.Preserve, file.Space, "Space is incorrect");
            Assert.AreEqual(ContentDirectionality.Auto,
                            file.TargetDirectionality,
                            "TargetDirectionality is incorrect.");
            Assert.IsTrue(file.Translate, "Translate is incorrect.");
        }
        public void SingleParagraphHtmlUnitIsWrappedInP()
        {
            var xliff = @"<?xml version=""1.0"" encoding=""utf-8""?>
<xliff srcLang=""en-GB"" trgLang=""it-IT"" version=""2.0"" xmlns=""urn:oasis:names:tc:xliff:document:2.0"">
    <file id=""f1"">
        <group id=""u1-g"" name=""original"">
            <unit id=""u1-1"" name=""p"">
                <segment>
                    <source>Hello Word!</source>
                    <target>Hello Word!</target>
                </segment>
            </unit>
        </group>
    </file>
</xliff>";

            XliffDocument document = LoadXliff(xliff);
            var           splitter = new ParagraphSplitter();

            var newDocument = splitter.ExecuteMerge(document);

            Assert.AreEqual(1, newDocument.Files[0].Containers.Count);
            var unit = newDocument.Files[0].Containers[0] as Unit;

            Assert.IsNotNull(unit);

            Assert.AreEqual("u1", unit.Id);
            Assert.AreEqual("original", unit.Name);

            Assert.AreEqual(1, unit.Resources[0].Target.Text.Count);
            var text = unit.Resources[0].Target.Text[0] as CDataTag;

            Assert.IsNotNull(text);
            Assert.AreEqual("<p>Hello Word!</p>", text.Text);
        }
        private XliffDocument Extract(Bundle xliff, string sourceLanguage, string targetLanguage)
        {
            var document = new XliffDocument(sourceLanguage);

            document.TargetLanguage = targetLanguage;

            var idCounter = new IdCounter();

            foreach (var doc in xliff.Documents)
            {
                var fileId    = "f" + (idCounter.GetNextFileId());
                var xliffFile = new File(fileId);
                xliffFile.Original = doc.SourceIdentifier;

                if (doc.Attributes.Count > 0)
                {
                    xliffFile.Metadata = doc.Attributes.ToXliffMetadata();
                }

                foreach (var container in doc.Containers)
                {
                    var xliffContainer = container.ToXliff(idCounter);
                    xliffFile.Containers.Add(xliffContainer);
                }

                document.Files.Add(xliffFile);
            }
            return(document);
        }
Exemple #15
0
        public void ParentAttachedList_RemoveAt()
        {
            XliffDocument item1;
            XliffDocument item2;

            //
            // Test with empty list.
            //

            try
            {
                this._list.RemoveAt(0);
                Assert.Fail("Expected ArgumentOutOfRangeException to be thrown.");
            }
            catch (ArgumentOutOfRangeException)
            {
            }

            //
            // Test with negative value.
            //

            item1 = new XliffDocument();
            this._list.Add(item1);

            try
            {
                this._list.RemoveAt(-1);
                Assert.Fail("Expected ArgumentOutOfRangeException to be thrown.");
            }
            catch (ArgumentOutOfRangeException)
            {
            }

            //
            // Test with invalid index.
            //

            try
            {
                this._list.RemoveAt(this._list.Count);
                Assert.Fail("Expected ArgumentOutOfRangeException to be thrown.");
            }
            catch (ArgumentOutOfRangeException)
            {
            }

            //
            // Test with valid index.
            //

            item2 = new XliffDocument();
            this._list.Add(item2);
            this._list.RemoveAt(0);
            Assert.AreEqual(1, this._list.Count, "Count is incorrect.");
            Assert.AreSame(this._list[0], item2, "List was incorrectly modified.");
            Assert.IsNull(item1.Parent, "Parent was not reset.");
            Assert.IsNotNull(item2.Parent, "Parent was reset incorrectly.");
        }
        public void ClassAttributeInsideNestedHtmlElementIsStoredInXliff()
        {
            var xliff = @"<?xml version=""1.0"" encoding=""utf-8""?>
<xliff srcLang=""en-GB"" version=""2.0"" xmlns=""urn:oasis:names:tc:xliff:document:2.0"">
    <file id=""f1"">
        <unit id=""u1"" name=""original"">
            <segment>
                <source><![CDATA[<ul><li class=""even"">Hello Word1!</li></ul>]]></source>
            </segment>
        </unit>
    </file>
</xliff>";

            XliffDocument document = LoadXliff(xliff);

            var splitter = new ParagraphSplitter(_htmlParser);

            var newDocument = splitter.ExecuteExtraction(document);

            Assert.AreEqual(1, newDocument.Files[0].Containers.Count);
            var group = newDocument.Files[0].Containers[0] as Group;

            Assert.IsNotNull(group, "Didn't get a Group, but a {0}", newDocument.Files[0].Containers[0].GetType().Name);
            Assert.AreEqual("u1-g", group.Id);

            Assert.AreEqual("original", group.Name);
            Assert.AreEqual(1, group.Containers.Count);

            var ulGroup = group.Containers[0] as Group;

            Assert.AreEqual("html:ul", ulGroup.Type);
            Assert.AreEqual(1, ulGroup.Containers.Count);
            Assert.IsNull(ulGroup.Metadata);

            var unit1     = ulGroup.Containers[0] as Unit;
            var textUnit1 = unit1.Resources[0].Source.Text[0].ToString();

            Assert.AreEqual("html:li", unit1.Type);
            Assert.AreEqual("Hello Word1!", textUnit1);

            if (!_htmlParser.SupportsAttributes)
            {
                return;
            }

            Assert.IsNotNull(unit1.Metadata);
            Assert.AreEqual(1, unit1.Metadata.Groups.Count);

            var originalAttributesGroup = unit1.Metadata.Groups[0];

            Assert.AreEqual("originalAttributes", originalAttributesGroup.Id);
            Assert.AreEqual(1, originalAttributesGroup.Containers.Count);

            var classAttribute = originalAttributesGroup.Containers[0] as Meta;

            Assert.AreEqual("class", classAttribute.Type);
            Assert.AreEqual("even", classAttribute.NonTranslatableText);
        }
Exemple #17
0
 public Bundle Merge(XliffDocument document)
 {
     foreach (var step in ProcessingSteps)
     {
         document = step.ExecuteMerge(document);
     }
     SourceMerger.Merge(document);
     return(SourceMerger.Output);
 }
        internal ExportResult Export(ICollection <LocalizationResource> resources, CultureInfo fromLanguage, CultureInfo toLanguage)
        {
            if (resources == null)
            {
                throw new ArgumentNullException(nameof(resources));
            }
            if (fromLanguage == null)
            {
                throw new ArgumentNullException(nameof(fromLanguage));
            }
            if (toLanguage == null)
            {
                throw new ArgumentNullException(nameof(toLanguage));
            }

            var doc = new XliffDocument(fromLanguage.Name)
            {
                TargetLanguage = toLanguage.Name
            };

            var file = new File("f1");

            doc.Files.Add(file);

            var unit = new Unit("u1");

            file.Containers.Add(unit);

            foreach (var resource in resources)
            {
                var segment = new Segment(XmlConvert.EncodeNmToken(resource.ResourceKey))
                {
                    Source = new Source(),
                    Target = new Target()
                };

                segment.Source.Text.Add(new CDataTag(resource.Translations.ByLanguage(fromLanguage.Name, false)));
                segment.Target.Text.Add(new CDataTag(resource.Translations.ByLanguage(toLanguage.Name, false)));

                unit.Resources.Add(segment);
            }

            var dest = new MemoryStream();

            var settings = new XliffWriterSettings();

            settings.Validators.Clear();

            var writer = new XliffWriter(settings);

            writer.Serialize(dest, doc);
            dest.Position = 0;

            var reader = new StreamReader(dest);

            return(new ExportResult(reader.ReadToEnd(), "application/x-xliff+xml", $"{fromLanguage.Name}-{toLanguage.Name}-{DateTime.UtcNow:yyyyMMdd}.xliff"));
        }
Exemple #19
0
 public void Merge(XliffDocument xliff)
 {
     Output         = new Bundle();
     TargetLanguage = xliff.TargetLanguage;
     foreach (var file in xliff.Files)
     {
         Output.Documents.Add(Document.FromXliff(file));
     }
 }
Exemple #20
0
        /// <summary>
        /// Demonstrates how to write an XLIFF document to a file.
        /// </summary>
        /// <param name="document">The document to write.</param>
        /// <param name="file">The path to write the document to.</param>
        public static void WriteDocument(XliffDocument document, string file)
        {
            using (IO.FileStream stream = new IO.FileStream(file, IO.FileMode.Create, IO.FileAccess.Write))
            {
                XliffWriter writer;

                writer = new XliffWriter();
                writer.Serialize(stream, document);
            }
        }
Exemple #21
0
        public void MergerGetsTargetLanguage()
        {
            IMergerToSource merger = new MergerToBundle();
            XliffDocument   doc    = new XliffDocument("en-US");

            doc.TargetLanguage = "it-IT";
            merger.Merge(doc);

            Assert.AreEqual("it-IT", merger.TargetLanguage);
        }
        public void UnorderedListWithoutFormattingPlusParagraphIsTransformedIntoGroupWithManyUnits()
        {
            var xliff = @"<?xml version=""1.0"" encoding=""utf-8""?>
<xliff srcLang=""en-GB"" version=""2.0"" xmlns=""urn:oasis:names:tc:xliff:document:2.0"">
    <file id=""f1"">
        <unit id=""u1"">
            <segment>
                <source><![CDATA[<p>Hello World!</p><ul><li>Hello Word1!</li><li>Hello Word2!</li><li>Hello Word3!</li></ul>]]></source>
            </segment>
        </unit>
    </file>
</xliff>";

            XliffDocument document = LoadXliff(xliff);

            var splitter = new ParagraphSplitter(_htmlParser);

            var newDocument = splitter.ExecuteExtraction(document);

            Assert.AreEqual(1, newDocument.Files[0].Containers.Count);
            var group = newDocument.Files[0].Containers[0] as Group;

            Assert.IsNotNull(group);
            Assert.AreEqual("u1-g", group.Id);

            Assert.AreEqual(2, group.Containers.Count);

            var pUnit     = group.Containers[0] as Unit;
            var pUnitText = pUnit.Resources[0].Source.Text[0].ToString();

            Assert.AreEqual("html:p", pUnit.Type);
            Assert.AreEqual("Hello World!", pUnitText);

            var ulGroup = group.Containers[1] as Group;

            Assert.AreEqual("html:ul", ulGroup.Type);

            var unit1     = ulGroup.Containers[0] as Unit;
            var textUnit1 = unit1.Resources[0].Source.Text[0].ToString();

            Assert.AreEqual("html:li", unit1.Type);
            Assert.AreEqual("Hello Word1!", textUnit1);

            var unit2     = ulGroup.Containers[1] as Unit;
            var textUnit2 = unit2.Resources[0].Source.Text[0].ToString();

            Assert.AreEqual("html:li", unit2.Type);
            Assert.AreEqual("Hello Word2!", textUnit2);

            var unit3     = ulGroup.Containers[2] as Unit;
            var textUnit3 = unit3.Resources[0].Source.Text[0].ToString();

            Assert.AreEqual("html:li", unit3.Type);
            Assert.AreEqual("Hello Word3!", textUnit3);
        }
Exemple #23
0
        public XliffDocument ExecuteExtraction(XliffDocument document)
        {
            var units = document.CollapseChildren <Unit>();

            foreach (var unit in units)
            {
                SplitUnitAndIterate(unit);
            }

            return(document);
        }
Exemple #24
0
        public void MergerCreatesABundle()
        {
            IMergerToSource merger = new MergerToBundle();
            XliffDocument   doc    = new XliffDocument("en-US");

            merger.Merge(doc);

            var bundle = merger.Output;

            Assert.IsNotNull(bundle);
        }
Exemple #25
0
        public void MergerCreatesABundle()
        {
            XliffDocument   doc    = SetupXliffFile();
            IMergerToSource merger = new MergerToBundle();

            merger.Merge(doc);

            var bundle = merger.Output as Bundle;

            Assert.IsNotNull(bundle);
        }
Exemple #26
0
        public void MergerCreatesBundleWithCorrectOriginal()
        {
            XliffDocument   doc    = SetupXliffFile();
            IMergerToSource merger = new MergerToBundle();

            merger.Merge(doc);

            var bundle = merger.Output as Bundle;

            Assert.AreEqual("cmsId", bundle.Documents[0].SourceIdentifier);
        }
Exemple #27
0
        public void MergerCreatesABundleWithOneDocIfXliffHasOneFile()
        {
            XliffDocument   doc    = SetupXliffFile();
            IMergerToSource merger = new MergerToBundle();

            merger.Merge(doc);

            var bundle = merger.Output as Bundle;

            Assert.AreEqual(1, bundle.Documents.Count);
        }
        //Move to actual XliffReader
        private static XliffDocument LoadXliff(string xliff)
        {
            XliffDocument document = null;

            using (Stream stream = GenerateStreamFromString(xliff))
            {
                var reader = new XliffReader();
                document = reader.Deserialize(stream);
            }

            return(document);
        }
        public void NestedUnitIsTransformedIntoGroupWithManyUnits()
        {
            var xliff = @"<?xml version=""1.0"" encoding=""utf-8""?>
<xliff srcLang=""en-GB"" version=""2.0"" xmlns=""urn:oasis:names:tc:xliff:document:2.0"">
    <file id=""f1"">
        <group id=""g1"" name=""originalGroup"">
            <unit id=""u1"" name=""originalUnit"">
                <segment>
                    <source><![CDATA[<p>Hello Word nested!</p><p>Hello Word2!</p>]]></source>
                </segment>
            </unit>
        </group>
        <unit id=""u2"">
            <segment>
                <source><![CDATA[<p>Hello Word!</p>]]></source>
            </segment>
        </unit>
    </file>
</xliff>";

            XliffDocument document = LoadXliff(xliff);

            var splitter = new ParagraphSplitter(_htmlParser);

            var newDocument = splitter.ExecuteExtraction(document);

            Assert.AreEqual(2, newDocument.Files[0].Containers.Count);
            var group = newDocument.Files[0].Containers[0] as Group;

            Assert.IsNotNull(group);
            Assert.AreEqual("g1", group.Id);
            Assert.AreEqual("originalGroup", group.Name);

            Assert.AreEqual(1, group.Containers.Count);

            var nestedGroup = group.Containers[0] as Group;

            Assert.IsNotNull(nestedGroup);
            Assert.AreEqual("originalUnit", nestedGroup.Name);
            Assert.AreEqual(2, nestedGroup.Containers.Count);

            var unit1     = nestedGroup.Containers[0] as Unit;
            var textUnit1 = unit1.Resources[0].Source.Text[0].ToString();

            Assert.AreEqual("html:p", unit1.Type);
            Assert.AreEqual("Hello Word nested!", textUnit1);

            var unit2     = nestedGroup.Containers[1] as Unit;
            var textUnit2 = unit2.Resources[0].Source.Text[0].ToString();

            Assert.AreEqual("html:p", unit2.Type);
            Assert.AreEqual("Hello Word2!", textUnit2);
        }
        public void DefaultValue_Document()
        {
            XliffDocument document;

            document = new XliffDocument("en-us");
            Assert.AreEqual(0, document.Files.Count, "Files count is incorrect.");
            Assert.IsNull(document.Id, "Id is incorrect.");
            Assert.AreEqual("en-us", document.SourceLanguage, "SourceLanguage is incorrect.");
            Assert.AreEqual(Preservation.Default, document.Space, "Space is incorrect.");
            Assert.IsNull(document.TargetLanguage, "TargetLanguage is incorrect.");
            Assert.AreEqual("2.0", document.Version, "Version is incorrect.");
        }
Exemple #31
0
        public XliffDocument Extract(Bundle sourceDocument, string sourceLanguage, string targetLanguage)
        {
            SourceExtractor.Input = sourceDocument;
            XliffDocument document = SourceExtractor.Extract(sourceLanguage, targetLanguage);

            foreach (var step in ProcessingSteps)
            {
                document = step.ExecuteExtraction(document);
            }

            return(document);
        }
Exemple #32
0
        public void DefaultValue_Document()
        {
            XliffDocument document;

            document = new XliffDocument("en-us");
            Assert.AreEqual(0, document.Files.Count, "Files count is incorrect.");
            Assert.IsNull(document.Id, "Id is incorrect.");
            Assert.AreEqual("en-us", document.SourceLanguage, "SourceLanguage is incorrect.");
            Assert.AreEqual(Preservation.Default, document.Space, "Space is incorrect.");
            Assert.IsNull(document.TargetLanguage, "TargetLanguage is incorrect.");
            Assert.AreEqual("2.0", document.Version, "Version is incorrect.");
        }
        public void XliffElement_CollapseChildrenWithScope()
        {
            IExtensible extensible;
            CustomExtension extension1;
            CustomExtension extension2;
            CustomElement1 element1;
            CustomElement2 element2;
            List<XliffElement> elementList;
            List<Source> sourceList;
            PlainText text;
            Segment segment;
            Source source;
            StandaloneCode code;
            Unit unit;
            XliffDocument document;

            code = new StandaloneCode();
            text = new PlainText();
            segment = new Segment();
            segment.Source = new Source();
            segment.Source.Text.Add(text);
            segment.Source.Text.Add(code);

            unit = new Unit();
            unit.Resources.Add(segment);

            document = new XliffDocument();
            document.Files.Add(new File());
            document.Files[0].Containers.Add(unit);

            extensible = document.Files[0];

            extension1 = new CustomExtension("namespace");
            element1 = new CustomElement1("pre1", "namespace");
            extension1.AddChild(new ElementInfo(new XmlNameInfo("localname"), element1));
            extensible.Extensions.Add(extension1);

            extension2 = new CustomExtension("namespace");
            element2 = new CustomElement2("pre1", "namespace");
            extension2.AddChild(new ElementInfo(new XmlNameInfo("localname"), element2));
            source = new Source();
            extension2.AddChild(new ElementInfo(new XmlNameInfo("localname"), source));
            extensible.Extensions.Add(extension2);

            Console.WriteLine("Test with none.");
            elementList = document.CollapseChildren<XliffElement>(CollapseScope.None);
            Assert.AreEqual(0, elementList.Count, "Element count is incorrect.");

            Console.WriteLine("Test with current element.");
            elementList = document.CollapseChildren<XliffElement>(CollapseScope.CurrentElement);
            Assert.AreEqual(1, elementList.Count, "Element count is incorrect.");
            Assert.IsTrue(elementList.Contains(document), "Document not found in list");

            Console.WriteLine("Test with default.");
            elementList = document.CollapseChildren<XliffElement>(CollapseScope.Default);
            Assert.AreEqual(6, elementList.Count, "Element count is incorrect.");
            Assert.IsTrue(elementList.Contains(code), "StandaloneCode not found in list");
            Assert.IsFalse(elementList.Contains(document), "Document not found in list");
            Assert.IsTrue(elementList.Contains(document.Files[0]), "File not found in list");
            Assert.IsTrue(elementList.Contains(segment), "Segment not found in list");
            Assert.IsTrue(elementList.Contains(segment.Source), "Source not found in list");
            Assert.IsTrue(elementList.Contains(text), "PlainText not found in list");
            Assert.IsTrue(elementList.Contains(unit), "Unit not found in list");

            Console.WriteLine("Test with default with current element.");
            elementList = document.CollapseChildren<XliffElement>(CollapseScope.Default | CollapseScope.CurrentElement);
            Assert.AreEqual(7, elementList.Count, "Element count is incorrect.");
            Assert.IsTrue(elementList.Contains(document), "Document not found in list");
            Assert.IsTrue(elementList.Contains(code), "StandaloneCode not found in list");
            Assert.IsTrue(elementList.Contains(document.Files[0]), "File not found in list");
            Assert.IsTrue(elementList.Contains(segment), "Segment not found in list");
            Assert.IsTrue(elementList.Contains(segment.Source), "Source not found in list");
            Assert.IsTrue(elementList.Contains(text), "PlainText not found in list");
            Assert.IsTrue(elementList.Contains(unit), "Unit not found in list");

            elementList = document.CollapseChildren<XliffElement>(CollapseScope.Extensions | CollapseScope.CoreElements | CollapseScope.AllDescendants);
            Assert.AreEqual(9, elementList.Count, "Element count is incorrect.");
            Assert.IsTrue(elementList.Contains(code), "StandaloneCode not found in list");
            Assert.IsTrue(elementList.Contains(document.Files[0]), "File not found in list");
            Assert.IsTrue(elementList.Contains(segment), "Segment not found in list");
            Assert.IsTrue(elementList.Contains(segment.Source), "Source not found in list");
            Assert.IsTrue(elementList.Contains(text), "PlainText not found in list");
            Assert.IsTrue(elementList.Contains(unit), "Unit not found in list");
            Assert.IsTrue(elementList.Contains(source), "Source not found in list");
            Assert.IsTrue(elementList.Contains(element1), "Element1 not found in list");
            Assert.IsTrue(elementList.Contains(element2), "Element2 not found in list");

            sourceList = document.CollapseChildren<Source>(CollapseScope.Extensions | CollapseScope.CoreElements | CollapseScope.AllDescendants);
            Assert.AreEqual(2, sourceList.Count, "Element count is incorrect.");
            Assert.IsTrue(sourceList.Contains(segment.Source), "Source not found in list");
            Assert.IsTrue(sourceList.Contains(source), "Source not found in list");

            elementList = document.CollapseChildren<XliffElement>(CollapseScope.All);
            Assert.AreEqual(10, elementList.Count, "Element count is incorrect.");
            Assert.IsTrue(elementList.Contains(document), "Document not found in list");
            Assert.IsTrue(elementList.Contains(code), "StandaloneCode not found in list");
            Assert.IsTrue(elementList.Contains(document.Files[0]), "File not found in list");
            Assert.IsTrue(elementList.Contains(segment), "Segment not found in list");
            Assert.IsTrue(elementList.Contains(segment.Source), "Source not found in list");
            Assert.IsTrue(elementList.Contains(text), "PlainText not found in list");
            Assert.IsTrue(elementList.Contains(unit), "Unit not found in list");
            Assert.IsTrue(elementList.Contains(source), "Source not found in list");
            Assert.IsTrue(elementList.Contains(element1), "Element1 not found in list");
            Assert.IsTrue(elementList.Contains(element2), "Element2 not found in list");

            sourceList = document.CollapseChildren<Source>(CollapseScope.All);
            Assert.AreEqual(2, sourceList.Count, "Element count is incorrect.");
            Assert.IsTrue(sourceList.Contains(source), "Source not found in list");
            Assert.IsTrue(sourceList.Contains(segment.Source), "Source not found in list");

            Console.WriteLine("Test with extensions with core elements for Source.");
            sourceList = document.CollapseChildren<Source>(CollapseScope.Extensions | CollapseScope.AllDescendants);
            Assert.AreEqual(1, sourceList.Count, "Element count is incorrect.");
            Assert.IsTrue(sourceList.Contains(source), "Source not found in list");

            Console.WriteLine("Test with extensions without core elements.");
            elementList = document.CollapseChildren<XliffElement>(CollapseScope.Extensions | CollapseScope.AllDescendants);
            Assert.AreEqual(3, elementList.Count, "Element count is incorrect.");
            Assert.IsTrue(elementList.Contains(element1), "Element1 not found in list");
            Assert.IsTrue(elementList.Contains(element2), "Element2 not found in list");
            Assert.IsTrue(elementList.Contains(source), "Source not found in list");

            elementList = document.CollapseChildren<XliffElement>(CollapseScope.TopLevelDescendants);
            Assert.AreEqual(0, elementList.Count, "Element count is incorrect.");

            elementList = document.CollapseChildren<XliffElement>(CollapseScope.TopLevelDescendants | CollapseScope.CoreElements);
            Assert.AreEqual(1, elementList.Count, "Element count is incorrect.");
            Assert.IsTrue(elementList.Contains(document.Files[0]), "File not found in list");
        }
        public void XliffElement_SelectorPath()
        {
            MarkedSpan span;
            Group group;
            Unit unit;
            Segment segment;
            XliffDocument document;

            span = new MarkedSpan("mrk1");

            segment = new Segment();
            segment.Source = new Source();
            segment.Source.Text.Add(span);

            unit = new Unit("u1");
            unit.Resources.Add(segment);

            group = new Group("g1");
            group.Containers.Add(unit);

            document = new XliffDocument();
            document.Files.Add(new File("f1"));
            document.Files[0].Containers.Add(group);

            Console.WriteLine("Test for document.");
            Assert.AreEqual("#", document.SelectorPath, "SelectorPath is incorrect.");

            Console.WriteLine("Test for file.");
            Assert.AreEqual("#/f=f1", document.Files[0].SelectorPath, "SelectorPath is incorrect.");

            Console.WriteLine("Test for group.");
            Assert.AreEqual("#/f=f1/g=g1", group.SelectorPath, "SelectorPath is incorrect.");

            Console.WriteLine("Test for unit.");
            Assert.AreEqual("#/f=f1/g=g1/u=u1", unit.SelectorPath, "SelectorPath is incorrect.");
        }
        public void XliffElement_SelectorPath_Target()
        {
            MarkedSpan span;
            Group group;
            Unit unit;
            Segment segment;
            XliffDocument document;

            span = new MarkedSpan("mrk1");

            segment = new Segment();
            segment.Target = new Target();
            segment.Target.Text.Add(span);

            unit = new Unit("u1");
            unit.Resources.Add(segment);

            group = new Group("g1");
            group.Containers.Add(unit);

            document = new XliffDocument();
            document.Files.Add(new File("f1"));
            document.Files[0].Containers.Add(group);

            Console.WriteLine("Test with segment without Id.");
            Assert.AreEqual("#/f=f1/g=g1/u=u1/t=mrk1", span.SelectorPath, "SelectorPath is incorrect.");

            Console.WriteLine("Test with all items with Id.");
            segment.Id = "s1";
            Assert.AreEqual("#/f=f1/g=g1/u=u1/t=mrk1", span.SelectorPath, "SelectorPath is incorrect.");

            Console.WriteLine("Test with tag without Id.");
            span.Id = null;
            Assert.AreEqual("#/f=f1/g=g1/u=u1/s1", span.SelectorPath, "SelectorPath is incorrect.");

            Console.WriteLine("Test with tag and segment without Id.");
            segment.Id = null;
            span.Id = null;
            Assert.AreEqual("#/f=f1/g=g1/u=u1", span.SelectorPath, "SelectorPath is incorrect.");
        }
        public void XliffElement_CollapseChildren()
        {
            List<PlainText> textList;
            List<ResourceStringContent> tagList;
            List<Source> sourceList;
            List<Target> targetList;
            List<XliffElement> elementList;
            PlainText text;
            Segment segment;
            StandaloneCode code;
            Unit unit;
            XliffDocument document;

            code = new StandaloneCode();
            text = new PlainText();
            segment = new Segment();
            segment.Source = new Source();
            segment.Source.Text.Add(text);
            segment.Source.Text.Add(code);

            unit = new Unit();
            unit.Resources.Add(segment);

            document = new XliffDocument();
            document.Files.Add(new File());
            document.Files[0].Containers.Add(unit);

            elementList = document.CollapseChildren<XliffElement>();
            Assert.AreEqual(6, elementList.Count, "Element count is incorrect.");
            Assert.IsTrue(elementList.Contains(code), "StandaloneCode not found in list");
            Assert.IsFalse(elementList.Contains(document), "Document not found in list");
            Assert.IsTrue(elementList.Contains(document.Files[0]), "File not found in list");
            Assert.IsTrue(elementList.Contains(segment), "Segment not found in list");
            Assert.IsTrue(elementList.Contains(segment.Source), "Source not found in list");
            Assert.IsTrue(elementList.Contains(text), "PlainText not found in list");
            Assert.IsTrue(elementList.Contains(unit), "Unit not found in list");

            sourceList = document.CollapseChildren<Source>();
            Assert.AreEqual(1, sourceList.Count, "Element count is incorrect.");
            Assert.IsTrue(sourceList.Contains(segment.Source), "Source not found in list");

            tagList = document.CollapseChildren<ResourceStringContent>();
            Assert.AreEqual(2, tagList.Count, "Element count is incorrect.");
            Assert.IsTrue(tagList.Contains(code), "StandaloneCode not found in list");
            Assert.IsTrue(tagList.Contains(text), "PlainText not found in list");

            targetList = document.CollapseChildren<Target>();
            Assert.AreEqual(0, targetList.Count, "Element count is incorrect.");

            textList = document.CollapseChildren<PlainText>();
            Assert.AreEqual(1, textList.Count, "Element count is incorrect.");
            Assert.IsTrue(textList.Contains(text), "PlainText not found in list");
        }
 public void TestInitialize()
 {
     this._element = new XliffDocument("source");
     this._provider = this._element;
 }