Exemplo n.º 1
0
        public void EnrichedXliff()
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("<?xml version=\"1.0\" encoding=\"utf-8\" ?>");
            sb.Append(
                "<xliff xmlns=\"urn:oasis:names:tc:xliff:document:2.0\" srcLang=\"en\" trgLang=\"fr\" version=\"2.0\">");
            sb.Append("<file id=\"f1\"><unit id=\"1\"><segment id=\"s1\"><source>");
            sb.Append("<mrk id=\"freme-7\" ref=\"http://freme-project.eu/#char=3,10\" type=\"term\">Text</mrk>");
            sb.Append(
                " in <sc dataRef=\"d1\" id=\"sc1\"/><mrk id=\"freme-8\" ref=\"http://freme-project.eu/#char=16,20\" type=\"term\">");
            sb.Append("bold</mrk> <sc dataRef=\"d2\" id=\"sc2\"/>");
            sb.Append(
                "      and<ec dataRef=\"d3\" startRef=\"sc1\"/> <mrk id=\"freme-9\" ref=\"http://freme-project.eu/#char=46,53\" type=\"term\">");
            sb.Append("italics</mrk><ec dataRef=\"d4\" startRef=\"sc2\"/>.");
            sb.Append(
                "</source><target>Text in <sc dataRef=\"d1\" id=\"sc1\"/>bold <sc dataRef=\"d2\" id=\"sc2\"/>\r\n     and<ec dataRef=\"d3\" startRef=\"sc1\"/> italics<ec dataRef=\"d4\" startRef=\"sc2\"/>.\r\n     </target>");
            sb.Append("</segment></unit></file></xliff>");

            JliffBuilder  builder = new JliffBuilder("en", "fr");
            TextReader    tr      = new StringReader(sb.ToString());
            Xliff20Filter filter  = new Xliff20Filter();

            filter.XlfFileEvent      += builder.File;
            filter.XlfUnitEvent      += builder.Unit;
            filter.XlfGroupEvent     += builder.Group;
            filter.XlfSegmentEvent   += builder.Segment;
            filter.XlfSourceEvent    += builder.Source;
            filter.XlfTargetEvent    += builder.Target;
            filter.XlfIgnorableEvent += builder.Ignorable;
            filter.XlfPhElementEvent += builder.PhElement;
            filter.XlfSkeletonEvent  += builder.Skeleton;
            filter.XlfTextEvent      += builder.Text;
            filter.XlfSmElementEvent += builder.SmElement;
            filter.XlfEmElementEvent += builder.EmElement;
            filter.XlfScElementEvent += builder.ScElement;
            filter.XlfEcElementEvent += builder.EcElement;
            filter.Filter(tr);
            builder.Serialize("ModelTest.json");
            JsonSchema schema  = JsonSchema.Parse(schemaDef);
            var        obGraph = JObject.FromObject(builder.Jliff);

            Assert.IsTrue(obGraph.IsValid(schema));
            Unit unit = builder.Jliff.Files[0].Subfiles[0] as Unit;

            Assert.IsNotNull(unit);
            Segment segment = unit.Subunits[0] as Segment;

            Assert.IsNotNull(segment);
            SmElement smElement = segment.Source[11] as SmElement;

            Assert.IsNotNull(smElement);
            Assert.AreEqual("freme-9", smElement.Id);
            Assert.AreEqual("term", smElement.Type);
        }
Exemplo n.º 2
0
        public void RoundtripExample4()
        {
            var u1 = new Unit("u1");

            var te1 = new TextElement("Press the ");
            var te2 = new SmElement("m1");
            var te3 = new TextElement("TAB key");
            var te4 = new EmElement();
            var te5 = new TextElement(".");

            var te6  = new TextElement("Drücken Sie die ");
            var te7  = new SmElement("m2");
            var te8  = new TextElement("TAB-TASTE");
            var te9  = new EcElement();
            var te10 = new TextElement(".");

            var s1 = new Segment();

            s1.Source.Add(te1);
            s1.Source.Add(te2);
            s1.Source.Add(te3);
            s1.Source.Add(te4);
            s1.Source.Add(te5);
            s1.Target.Add(te6);
            s1.Target.Add(te7);
            s1.Target.Add(te8);
            s1.Target.Add(te9);
            s1.Target.Add(te10);

            var unit1 = new Unit("u1");

            unit1.Subunits.Add(s1);

            var gloss = new GlossaryEntry();
            var def   = new Definition();

            def.Source       = "publicTermbase";
            def.Text         = "A keyboard key that is traditionally used to insert tab characters into a document.";
            gloss.Definition = def;


            var t1 = new Translation("1", "myTermbase", "Tabstopptaste");
            var t2 = new Translation("2", "myTermbase", "TAB-TASTE");

            gloss.Translations.Add(t1);
            gloss.Translations.Add(t2);

            unit1.Glossary.Add(gloss);

            var model = new JliffDocument("en", "de");

            model.Files.Add(new Localization.Jliff.Graph.File("f1"));
            model.Files[0].Subfiles = new List <ISubfile>
            {
                unit1
            };

            var dllPath    = Assembly.GetAssembly(typeof(ModelTests)).Location;
            var dllName    = Assembly.GetAssembly(typeof(ModelTests)).GetName().Name;
            var outputPath = dllPath.Replace(dllName + ".dll", "");


            Converter.Serialize(Path.Combine(outputPath, "example4.json"), model);

            Converter.Deserialize(new FileInfo(Path.Combine(outputPath, "example4.json")));

            JsonSchema schema  = JsonSchema.Parse(schemaDef);
            var        obGraph = JObject.FromObject(model);

            Assert.IsTrue(obGraph.IsValid(schema));
        }