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
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
Hi Marco Holzer,
Can you please try following solution provided by Gerhard Kordmann?
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
Hi Marco Holzer,
Can you please try following solution provided by Gerhard Kordmann?
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