Exemplo n.º 1
0
        public XDocument CombineXliffs(List <XDocument> xliffDocs)
        {
            var result = XDocument.Parse("<?xml version='1.0' encoding='utf-8'?><eticPOSList/>");

            // The source element has a link element within its text; getting its Nodes preserves this link
            var citeSourceParts = xliffDocs.First().XPathSelectElement("/xliff/file/body")
                                  .Element(XliffUtils.SilNamespace + Source).Nodes().Select(n => n.ToString());
            var citeSourceElt = XElement.Parse($"<source>{string.Join("", citeSourceParts)}</source>");

            result.Root.Add(citeSourceElt);

            AddItems(result.Root, xliffDocs.ToDictionary(
                         xDoc => NormalizeLocales.Normalize(xDoc.XPathSelectElement("/xliff/file").Attribute("target-language")?.Value ?? WsEn),
                         xDoc => xDoc.XPathSelectElement("/xliff/file/body")));

            return(result);
        }
Exemplo n.º 2
0
        internal static void ConvertXliffToLists(XDocument xliffList, XElement listsElement)
        {
            var fileElement    = xliffList.XPathSelectElement("/xliff/file");
            var targetLanguage = fileElement.Attribute("target-language")?.Value;

            if (string.IsNullOrEmpty(targetLanguage))
            {
                throw new ArgumentException("Missing target tanguage.");
            }
            targetLanguage = NormalizeLocales.Normalize(targetLanguage);

            var groupElements = xliffList.XPathSelectElements("/xliff/file/body/group").ToDictionary(elt => elt.Attribute("id").Value);

            foreach (var listInfo in ListToXliffMap)
            {
                if (groupElements.TryGetValue($"{listInfo.Owner}_{listInfo.Field}", out var group))
                {
                    ConvertGroupToList(group, listInfo, targetLanguage, listsElement);
                }
            }
        }