Retrieving termbase indexes

Hi everyone

The SDL Project Automation API documentation website provides a short introduction into how to add termbases to a project. However, the example uses predefined index names and language names. While I know how to retrieve a translation memory's language, I am unaware as to how to retrieve all indexes of a given termbase. "Termbase" and "LocalTermbase" do not provide an awful lot of operations to this respect.

Thanks fo any feedback and best regards
Pascal

  • Try this code

    public void AddTermbase(FileBasedProject project, string termbaseFileName)

            {

                #region "TbConfig"

                TermbaseConfiguration termbaseConfig = project.GetTermbaseConfiguration();

                #endregion

                #region "AddTb"

                Termbase tb = new LocalTermbase(termbaseFileName);

                termbaseConfig.Termbases.Add(tb);

                #endregion

                #region "TermRecOptions"

                TermRecognitionOptions options = termbaseConfig.TermRecognitionOptions;

                options.MinimumMatchValue = 50;

                options.SearchDepth = 200;

                options.ShowWithNoAvailableTranslation = true;

                options.SearchOrder = TermbaseSearchOrder.Hierarchical;

                #endregion

                #region "ProjectLanguagesAndTbIndexes"

                Sdl.MultiTerm.TMO.Interop.Application oMt = new Sdl.MultiTerm.TMO.Interop.Application();

                TermbaseRepository oLocalRep = oMt.LocalRepository;

                oLocalRep.Connect("", "");

                oLocalRep.Termbases.Add(termbaseFileName, Path.GetFileName(termbaseFileName), Path.GetFileName(termbaseFileName));

                foreach (Sdl.MultiTerm.TMO.Interop.Termbase termbase in oLocalRep.Termbases)

                {

                    TermbaseDefinition tbDef = termbase.Definition;

                    Indexes oIndexes = tbDef.Indexes;

                    List<KeyValuePair<string, Language>> list = new List<KeyValuePair<string, Language>>();

                    foreach (Index oIndex in oIndexes)

                    {

                        list.Add(new KeyValuePair<string, Language>(oIndex.Label, new Language(CultureInfo.GetCultureInfo(oIndex.Locale))));

                    }

                    foreach (var keyValuePair in list)

                    {

                        termbaseConfig.LanguageIndexes.Add(new TermbaseLanguageIndex(keyValuePair.Value, keyValuePair.Key));

                    }

                }

                #region "UpdateTermbaseConfiguration"

                project.UpdateTermbaseConfiguration(termbaseConfig);

                #endregion

            }

    greetz drew

  • Thx, superdrew. Resorting to the Termbase class in the Sdl.MultiTerm module did the trick.