Add language to sdltb File with the sdl sdk in multiterm

Dear All

I would like to programmatically add a language to an existing multiterm sdltb file. I cannot find anything related to this in the "MultiTerm Desktop SDK.chm".

Many thanks 

Marco

Parents
  • Hi ,

    Can you please try following solution provided by ?

            private void AddLng(Termbase termbase, string name, string code)

            {

                string defXml = termbase.Definition._Definition;

                string newXml = InsertLanguage(defXml, name, code);

     

                TerminologyConnectorCOM tc = (TerminologyConnectorCOM)termbase._TermbaseConnector;

                tc.TermbaseUpdateDefinition(termbase._TermbaseAPIName, newXml);

                termbase.Reorganise();

            } 

     

            private string InsertLanguage(string defXml, string name, string code)

            {

                XmlDocument doc = new XmlDocument();

                doc.LoadXml(defXml);

     

                XmlNode node = doc.SelectSingleNode("/Output/Object/Languages");

                string newContent = $"<ItemLocale>{code}</ItemLocale><ItemText>{name}</ItemText><IsTargetOnly>false</IsTargetOnly>";

                node.InnerXml += newContent;

     

                node = doc.SelectSingleNode("//ElementType[@name='languageGrp']/ElementType[@name='language']/AttributeType[@type='languages']");

                node.Attributes["values"].Value += $"|{name}";

     

                node = doc.SelectSingleNode("//ElementType[@name='languageGrp']/ElementType[@name='language']/AttributeType[@type='locales']");

                node.Attributes["values"].Value += $"|{code}";

     

                node = doc.SelectSingleNode("//EmptyEntry/conceptGrp");

                node.InnerXml += $"<languageGrp><language type=\"{name}\" lang=\"{code}\" /><termGrp><term/></termGrp></languageGrp>";

     

                node = doc.SelectSingleNode("//DummyEntry/conceptGrp");

                node.InnerXml += $"<languageGrp><language type=\"{name}\" lang=\"{code}\" /><termGrp><term>This is a term.</term></termGrp><termGrp><term>This is a synonym.</term></termGrp></languageGrp>";

     

                node = doc.SelectSingleNode("//FullEntry/conceptGrp");

                node.InnerXml += $"<languageGrp><language type=\"{name}\" lang=\"{code}\" /><termGrp><term>This is a term.</term></termGrp><termGrp><term>This is a synonym.</term></termGrp></languageGrp>";

     

                node = doc.SelectSingleNode("//FullEntry/conceptGrp");

                return doc.OuterXml;

            }

    Kind regards,

    Andrea Ghisa

Reply
  • Hi ,

    Can you please try following solution provided by ?

            private void AddLng(Termbase termbase, string name, string code)

            {

                string defXml = termbase.Definition._Definition;

                string newXml = InsertLanguage(defXml, name, code);

     

                TerminologyConnectorCOM tc = (TerminologyConnectorCOM)termbase._TermbaseConnector;

                tc.TermbaseUpdateDefinition(termbase._TermbaseAPIName, newXml);

                termbase.Reorganise();

            } 

     

            private string InsertLanguage(string defXml, string name, string code)

            {

                XmlDocument doc = new XmlDocument();

                doc.LoadXml(defXml);

     

                XmlNode node = doc.SelectSingleNode("/Output/Object/Languages");

                string newContent = $"<ItemLocale>{code}</ItemLocale><ItemText>{name}</ItemText><IsTargetOnly>false</IsTargetOnly>";

                node.InnerXml += newContent;

     

                node = doc.SelectSingleNode("//ElementType[@name='languageGrp']/ElementType[@name='language']/AttributeType[@type='languages']");

                node.Attributes["values"].Value += $"|{name}";

     

                node = doc.SelectSingleNode("//ElementType[@name='languageGrp']/ElementType[@name='language']/AttributeType[@type='locales']");

                node.Attributes["values"].Value += $"|{code}";

     

                node = doc.SelectSingleNode("//EmptyEntry/conceptGrp");

                node.InnerXml += $"<languageGrp><language type=\"{name}\" lang=\"{code}\" /><termGrp><term/></termGrp></languageGrp>";

     

                node = doc.SelectSingleNode("//DummyEntry/conceptGrp");

                node.InnerXml += $"<languageGrp><language type=\"{name}\" lang=\"{code}\" /><termGrp><term>This is a term.</term></termGrp><termGrp><term>This is a synonym.</term></termGrp></languageGrp>";

     

                node = doc.SelectSingleNode("//FullEntry/conceptGrp");

                node.InnerXml += $"<languageGrp><language type=\"{name}\" lang=\"{code}\" /><termGrp><term>This is a term.</term></termGrp><termGrp><term>This is a synonym.</term></termGrp></languageGrp>";

     

                node = doc.SelectSingleNode("//FullEntry/conceptGrp");

                return doc.OuterXml;

            }

    Kind regards,

    Andrea Ghisa

Children
No Data