<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://uat.community.rws.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Studio Developers Q&amp;amp;A - Recent Threads</title><link>https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa</link><description>Questions on the SDK or APIs for Studio, MultiTerm, GroupShare and Passolo... this is the place for them.</description><dc:language>en-US</dc:language><generator>Telligent Community 12 Non-Production</generator><lastBuildDate>Fri, 17 Apr 2026 09:07:28 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa" /><item><title>Verification plugin triggered when confirming a segment even if disabled</title><link>https://uat.community.rws.com/thread/60912?ContentTypeID=0</link><pubDate>Fri, 17 Apr 2026 09:07:28 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:c5ae7a29-cfd2-4be9-9d03-b2b88f2e6a2c</guid><dc:creator>Arturo Vazquez Rodriguez</dc:creator><slash:comments>2</slash:comments><comments>https://uat.community.rws.com/thread/60912?ContentTypeID=0</comments><wfw:commentRss>https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa/60912/verification-plugin-triggered-when-confirming-a-segment-even-if-disabled/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I have developed a custom verification plugin for Trados Studio.&lt;/p&gt;
&lt;p&gt;When I disable it in the project settings, it won&amp;#39;t be triggered when pressing F8, which is expected and completely normal.&lt;/p&gt;
&lt;p&gt;The problem is that confirming a segment triggers the verifications performed by that plugin even if the plugin is completely disabled (that is, unchecked in the Verification options node).&lt;/p&gt;
&lt;p&gt;I am using Trados Studio 2024 SR1 18.1.3.6657&lt;/p&gt;
&lt;p&gt;I cannot share the source code publicly or the plugin, but I can privately, please get in touch with me for that.&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;/p&gt;
&lt;p&gt;Arturo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>MultiTerm COM API Termbases.New() fails when Croatian is present in XDT, but MultiTerm Desktop can create the termbase</title><link>https://uat.community.rws.com/thread/60858?ContentTypeID=0</link><pubDate>Fri, 10 Apr 2026 11:16:49 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:565efd65-db5c-4601-a7a5-ff27ae14fa17</guid><dc:creator>Adam Csillag</dc:creator><slash:comments>0</slash:comments><comments>https://uat.community.rws.com/thread/60858?ContentTypeID=0</comments><wfw:commentRss>https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa/60858/multiterm-com-api-termbases-new-fails-when-croatian-is-present-in-xdt-but-multiterm-desktop-can-create-the-termbase/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;Hello,&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m seeing a reproducible issue with MultiTerm COM automation when creating a local termbase from an &lt;code&gt;.xdt&lt;/code&gt; definition.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Environment&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;MultiTerm Desktop 2022 SR2 - 17.2.5.2838&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Trados Studio 2022 SR2 - 17.2.12.19268&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;C# app running as x86 (&lt;code&gt;Environment.Is64BitProcess = False&lt;/code&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Interop: &lt;code&gt;Sdl.MultiTerm.TMO.Interop&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;Sdl.MultiTerm.TMO.Interop.Application oMt = new Sdl.MultiTerm.TMO.Interop.Application();
TermbaseRepository oLocalRep = oMt.LocalRepository;
oLocalRep.Connect(&amp;quot;&amp;quot;, &amp;quot;&amp;quot;);

Termbases oTbs = oLocalRep.Termbases;
oTbs.New(name, &amp;quot;&amp;quot;, definition, sdltbPath);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Example values used&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;name = &amp;quot;Test&amp;quot;&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;definition = C:\Users\...\Temp\&lt;span&gt;Test&lt;/span&gt;_20260409_141955534\&lt;span&gt;Test&lt;/span&gt;.xdt&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;sdltbPath = C:\Users\...\Temp\&lt;span&gt;Test&lt;/span&gt;_20260409_141955534\&lt;span&gt;Test&lt;/span&gt;.sdltb&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;What I tested&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The process is 32-bit (&lt;code&gt;Environment.Is64BitProcess = False&lt;/code&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;definition&lt;/code&gt; exists&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;sdltbPath&lt;/code&gt; does not exist before calling &lt;code&gt;New(...)&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Creating in &lt;code&gt;%TEMP%&lt;/code&gt; gives the same result as other local paths&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Opening an existing &lt;code&gt;.sdltb&lt;/code&gt; through COM works:&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;oLocalRep.Termbases.Add(existingTbPath, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);
var tb = oLocalRep.Termbases[existingTbPath];
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;MultiTerm Desktop can successfully create the termbase from the same &lt;code&gt;.xdt&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Observed behavior&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;Termbases.New(...)&lt;/code&gt; throws:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;System.Runtime.InteropServices.COMException: &amp;#39;MultiTerm is unable to create the termbase.&amp;#39;&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;After a lot of testing, I found that the problem is related to &lt;strong&gt;Croatian&lt;/strong&gt; in the &lt;code&gt;.xdt&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If I remove Croatian from the termbase definition, &lt;code&gt;Termbases.New(...)&lt;/code&gt; succeeds&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If Croatian is present, &lt;code&gt;Termbases.New(...)&lt;/code&gt; fails&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;However, MultiTerm Desktop is able to create the same termbase from the same &lt;code&gt;.xdt&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Question&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Is this a known issue in the MultiTerm COM API with Croatian language handling during termbase creation?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Is there a specific Croatian language code/locale that COM expects here?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Could this be related to &lt;code&gt;SH-HR&lt;/code&gt; vs &lt;code&gt;hr-HR&lt;/code&gt; handling?&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Since Desktop can create the termbase, but COM cannot when Croatian is included, this looks like an API-specific issue rather than a broken &lt;code&gt;.xdt&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Thanks in advance for any guidance.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>API calls to pretranslate files using DeepL plugin no longer work</title><link>https://uat.community.rws.com/thread/60790?ContentTypeID=0</link><pubDate>Wed, 01 Apr 2026 14:25:52 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:1884f22f-c17e-4bf7-94c6-3d7e99be4f17</guid><dc:creator>TTS Team</dc:creator><slash:comments>7</slash:comments><comments>https://uat.community.rws.com/thread/60790?ContentTypeID=0</comments><wfw:commentRss>https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa/60790/api-calls-to-pretranslate-files-using-deepl-plugin-no-longer-work/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;Since DeepL changed their authentication methods, we no longer can pretranslate our files using API calls to Trados 2024. It still work when pretranslating &amp;quot;manually&amp;quot; from within Trados Studio, but when using the API call&lt;/p&gt;
&lt;pre&gt;&lt;span&gt;project&lt;/span&gt;.&lt;span&gt;RunAutomaticTask&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;targetFiles&lt;/span&gt;.&lt;span&gt;GetIds&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;, &lt;span&gt;AutomaticTaskTemplateIds&lt;/span&gt;.PreTranslateFiles&lt;span&gt;)&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;, it won&amp;#39;t work.&lt;/p&gt;
&lt;p&gt;We&amp;#39;ve narrowed it down to DeepL API key authentication: when adding the DeepL provider manually in Trados Studio, the API key is automatically authenticated when you enter it in the settings dialog for DeepL, but when our external tool uses Trados API to add the DeepL provider to the project using our API key, no such validation occurs, and that&amp;#39;s what blocks the pretranslation task from working.&lt;/p&gt;
&lt;p&gt;So my question is: is there any way to make it work, it worked just fine before the authentication change? We even tried duplicating the API key authentication when adding the provider to the project, but no luck there.&lt;/p&gt;
&lt;p&gt;Thanks for any help on this subject.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Create Project Via API shows files as Reference</title><link>https://uat.community.rws.com/thread/60767?ContentTypeID=0</link><pubDate>Mon, 30 Mar 2026 11:05:15 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:546ec328-8073-4256-a901-267366c7be39</guid><dc:creator>Mark Owens</dc:creator><slash:comments>4</slash:comments><comments>https://uat.community.rws.com/thread/60767?ContentTypeID=0</comments><wfw:commentRss>https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa/60767/create-project-via-api-shows-files-as-reference/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve recently upgraded to Trados 2024, and am running code that creates a new project from a Studio 2024 template, add files, and machine translates. All VS references are for Studio 2024 assemblies.&lt;/p&gt;
&lt;p&gt;The template is setup exactly as you&amp;#39;d expect to do this. There is no memory selected, and the DeepL translation configuration is correct. The file types for the template have most entries in the list unticked, but XML2: MadCap Compliant is ticked.&lt;/p&gt;
&lt;p&gt;The program steps are:&amp;nbsp;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create project&lt;/li&gt;
&lt;li&gt;AddFolderWithFiles (recursively)&lt;/li&gt;
&lt;li&gt;Save project&lt;/li&gt;
&lt;li&gt;Scan files&lt;/li&gt;
&lt;li&gt;Save project&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family:inherit;"&gt;ConvertToTranslatableFormat (via RunAutomatiobTask)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family:inherit;"&gt;CopyToTargetLanguages&amp;nbsp;&lt;span&gt;(via RunAutomatiobTask)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Save project&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family:inherit;"&gt;Modify settings to applyAutomatedTranslation&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family:inherit;"&gt;Save settings&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family:inherit;"&gt;Save project&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;PreTranslateFiles (via RunAutomatiobTask)&lt;/span&gt;&lt;span style="font-family:inherit;"&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Save project&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span&gt;It never seems to use the project template setting to recognise the .htm files are translatable.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;If I create the project manually, with the same template, same source files, it performs the MT as expected.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;There must be some sort of gotcha going on. Can anyone tell me where I&amp;#39;m going wrong?&lt;br /&gt;Thanks&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Mark&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Request for meeting to clarify TM matching behavior with Lara integration</title><link>https://uat.community.rws.com/thread/60518?ContentTypeID=0</link><pubDate>Thu, 05 Mar 2026 09:18:45 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:9c97e842-f14e-485a-9aeb-5ee2c7dd9d11</guid><dc:creator>Giulia Ceccacci</dc:creator><slash:comments>1</slash:comments><comments>https://uat.community.rws.com/thread/60518?ContentTypeID=0</comments><wfw:commentRss>https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa/60518/request-for-meeting-to-clarify-tm-matching-behavior-with-lara-integration/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;My name is Giulia Ceccacci and I work at Translated, where I focus on technical support&amp;nbsp;for Lara, our AI translation platform.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve recently been running several tests on the integration between Lara and Trados Studio, and I&amp;rsquo;ve noticed a few behaviors regarding translation memory matching and segment confirmation that I would like to better understand from your side.&lt;/p&gt;
&lt;p style="font-weight:400;"&gt;&lt;br /&gt;In particular, I&amp;rsquo;m seeing some inconsistencies in how TM matches (including 90% matches) are recognized by Trados depending on whether the TM is selected in Trados, in Lara, or in both. In some cases Lara correctly retrieves a match from the TM, but Trados does not recognize it as a TM match, which means the segment still needs to be manually confirmed.&lt;br /&gt;&lt;br /&gt;Additionally, I&amp;rsquo;m observing a bug where the suggested translation reverts to the source language when the segment is confirmed, which we are currently investigating on our side.&lt;br /&gt;&lt;br /&gt;Since some of these behaviors may depend on how Trados handles TM matches, pre-translation settings (e.g. Keep Existing Translations), and external providers, I think it would be very helpful to schedule a short meeting to walk through the scenarios together and clarify what we should expect from the Trados side.&lt;br /&gt;&lt;br /&gt;Would you be available for a quick call in the coming days?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Let me know,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Giulia&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>TradosAPI within Plunet Ran out of Memory message</title><link>https://uat.community.rws.com/thread/60491?ContentTypeID=0</link><pubDate>Tue, 03 Mar 2026 14:54:35 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:28ba674c-5dd2-4faf-9e31-e865969cae1e</guid><dc:creator>David McDermit</dc:creator><slash:comments>3</slash:comments><comments>https://uat.community.rws.com/thread/60491?ContentTypeID=0</comments><wfw:commentRss>https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa/60491/tradosapi-within-plunet-ran-out-of-memory-message/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello&lt;/p&gt;
&lt;p&gt;Have been having an issue with the TradosAPI within Plunet to run analysis of translation requests.&lt;/p&gt;
&lt;p&gt;Presently have updated the server and all programs within Plunet and the TradosAPI.&amp;nbsp; This seems to have fixed the Critical error message we would get when running jobs over 1100 words.&amp;nbsp; After getting everything up-to-date we are now running into a Ran out of Memory message when running larger jobs.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;What can I supply that might help solve this issue?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>GroupShare: Adding Translation Units directly via Trados API always results in Discard – expected behaviour?</title><link>https://uat.community.rws.com/thread/60313?ContentTypeID=0</link><pubDate>Mon, 09 Feb 2026 15:43:36 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:a9545179-4dae-43b2-9dd4-ea2807543581</guid><dc:creator>Damien Morard</dc:creator><slash:comments>5</slash:comments><comments>https://uat.community.rws.com/thread/60313?ContentTypeID=0</comments><wfw:commentRss>https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa/60313/groupshare-adding-translation-units-directly-via-trados-api-always-results-in-discard-expected-behaviour/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p data-start="349" data-end="364"&gt;Hello everyone,&lt;/p&gt;
&lt;p data-start="366" data-end="578"&gt;I&amp;rsquo;m currently experimenting with the Trados APIs to programmatically populate a &lt;strong data-start="446" data-end="476"&gt;server-based GroupShare TM&lt;/strong&gt; (GS 2020 / Studio 2021), and I&amp;rsquo;ve run into a behaviour that I&amp;rsquo;d like to better understand or confirm.&lt;/p&gt;
&lt;h4 data-start="580" data-end="592"&gt;Context&lt;/h4&gt;
&lt;ul data-start="593" data-end="873"&gt;
&lt;li data-start="593" data-end="612"&gt;
&lt;p data-start="595" data-end="612"&gt;GroupShare 2020&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="613" data-end="635"&gt;
&lt;p data-start="615" data-end="635"&gt;Trados Studio 2021&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="636" data-end="688"&gt;
&lt;p data-start="638" data-end="688"&gt;Server-based TM created specifically for testing&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="689" data-end="731"&gt;
&lt;p data-start="691" data-end="731"&gt;User has admin roles in GroupShare&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="732" data-end="763"&gt;
&lt;p data-start="734" data-end="763"&gt;Importing a TMX manually via Studio works&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="812" data-end="873"&gt;
&lt;p data-start="814" data-end="873"&gt;Importing a TMX programmatically via the API also works&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="875" data-end="968"&gt;However, when trying to add Translation Units directly via the API, nothing is persisted.&lt;/p&gt;
&lt;h3 data-start="975" data-end="1000"&gt;What I&amp;rsquo;m trying to do&lt;/h3&gt;
&lt;p data-start="1001" data-end="1127"&gt;I&amp;rsquo;m using &lt;code data-start="1011" data-end="1082"&gt;ServerBasedTranslationMemoryLanguageDirection.AddTranslationUnit(...)&lt;/code&gt; to insert a simple TU (plain text, no tags).&lt;/p&gt;
&lt;p data-start="1129" data-end="1280"&gt;Below is a &lt;strong data-start="1140" data-end="1162"&gt;simplified example&lt;/strong&gt; of the code I&amp;rsquo;m using.&lt;br data-start="1185" data-end="1188" /&gt; (It does not contain all variables/constants, but should give a clear idea of the approach.)&lt;/p&gt;
&lt;p&gt;&lt;code&gt;private static void Main()&lt;/code&gt;&lt;br /&gt;&lt;code&gt;{&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &lt;/span&gt;try&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;{&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;AssemblyResolver.Resolve();&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;var server = new TranslationProviderServer(&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;new Uri(GROUPSHARE_TM_ENDPOINT),&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;useWindowsAuthentication: true,&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;userName: null,&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;password: null);&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;var tms = server.GetTranslationMemories(TranslationMemoryProperties.None).ToList();&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;Console.WriteLine($&amp;quot;Connection OK. Found {tms.Count} TM(s) on the server:&amp;quot;);&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;foreach (var t in tms)&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;{&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;Console.WriteLine($&amp;quot;- {t.Name} | {t.Id}&amp;quot;);&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;var tmRef = tms.FirstOrDefault(t =&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;string.Equals(t.Name, TM_NAME, StringComparison.OrdinalIgnoreCase));&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;if (tmRef == null)&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;{&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;return;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;var tm = server.GetTranslationMemory(tmRef.Id, TranslationMemoryProperties.None);&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;if (tm == null)&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;{&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;return;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;var sourceCulture = new CultureInfo(&amp;quot;en-GB&amp;quot;);&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;var targetCulture = new CultureInfo(&amp;quot;fr-FR&amp;quot;);&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;var ld = tm.LanguageDirections.GetLanguageDirection(&amp;quot;en-GB&amp;quot;, &amp;quot;fr-FR&amp;quot;);&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;if (ld == null)&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;{&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;return;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;var tu = new TranslationUnit&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;{&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;SourceSegment = BuildPlainTextSegment(sourceCulture, &amp;quot;Hello world!&amp;quot;),&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;TargetSegment = BuildPlainTextSegment(targetCulture, &amp;quot;Bonjour le monde !&amp;quot;)&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;};&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;var importSettings = new ImportSettings();&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;var result = ld.AddTranslationUnit(tu, importSettings);&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;Console.WriteLine($&amp;quot;Cached TU count: {tm.CachedTranslationUnitCount}&amp;quot;);&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;Console.WriteLine($&amp;quot;Actual TU count: {tm.GetTranslationUnitCount()}&amp;quot;);&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;Console.WriteLine($&amp;quot;TM IsReadOnly: {tm.IsReadOnly}&amp;quot;);&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;Console.WriteLine($&amp;quot;TM SupportsUpdate: {tm.SupportsUpdate}&amp;quot;);&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;Console.WriteLine($&amp;quot;Has Delete permission: {tm.HasPermission(TranslationMemoryPermissions.Delete)}&amp;quot;);&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; Console.WriteLine($&amp;quot;Has Add permission: {tm.HasPermission(TranslationMemoryPermissions.Add)}&amp;quot;);&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; Console.WriteLine($&amp;quot;Has Edit permission: {tm.HasPermission(TranslationMemoryPermissions.Edit)}&amp;quot;);&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; Console.WriteLine($&amp;quot;ImportResult: {result}&amp;quot;);&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; }&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; catch (Exception ex)&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; {&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; Console.WriteLine(&amp;quot;Error while inserting TU:&amp;quot;);&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; Console.WriteLine(ex);&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; }&lt;/code&gt;&lt;br /&gt;&lt;code&gt;}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;private static Segment BuildPlainTextSegment(CultureInfo culture, string text)&lt;/code&gt;&lt;br /&gt;&lt;code&gt;{&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; var segment = new Segment(culture);&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; segment.Add(new SdlText(text));&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; return segment;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;}&lt;/code&gt;&lt;/p&gt;
&lt;p data-start="1129" data-end="1280"&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;h3 data-start="3731" data-end="3741"&gt;Output&lt;/h3&gt;
&lt;p data-start="3742" data-end="3807"&gt;After running this code, I consistently get the following output:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p data-start="1129" data-end="1280"&gt;Cached TU count: 0&lt;br /&gt;Actual TU count: 0&lt;br /&gt;TM IsReadOnly: False&lt;br /&gt;TM SupportsUpdate: True&lt;br /&gt;Has Delete permission: True&lt;br /&gt;Has Add permission: True&lt;br /&gt;Has Edit permission: True&lt;br /&gt;ImportResult: Discard-(0, xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)-OK&lt;/p&gt;
&lt;p data-start="4049" data-end="4052"&gt;So:&lt;/p&gt;
&lt;ul data-start="4053" data-end="4197"&gt;
&lt;li data-start="4053" data-end="4077"&gt;
&lt;p data-start="4055" data-end="4077"&gt;No exception is thrown&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="4078" data-end="4101"&gt;
&lt;p data-start="4080" data-end="4101"&gt;Permissions look fine&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="4102" data-end="4122"&gt;
&lt;p data-start="4104" data-end="4122"&gt;The TM is writable&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="4123" data-end="4147"&gt;
&lt;p data-start="4125" data-end="4147"&gt;But no TU is added&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="4148" data-end="4197"&gt;
&lt;p data-start="4150" data-end="4197"&gt;&lt;code data-start="4150" data-end="4164"&gt;ImportResult&lt;/code&gt; always comes back as Discard&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;
&lt;h3 data-start="4204" data-end="4230"&gt;Additional observation / question&lt;/h3&gt;
&lt;p data-start="4231" data-end="4378"&gt;When switching to a TMX-based approach (i.e. generating a TMX file and importing it via the API), the import works correctly and the TUs are effectively added to the server-based TM. &lt;br /&gt;In contrast, inserting TUs one by one via &lt;code data-start="405" data-end="425"&gt;AddTranslationUnit&lt;/code&gt; consistently results in a &lt;code data-start="452" data-end="461"&gt;Discard&lt;/code&gt; without any explicit error, even when using an admin account.&lt;br /&gt; This makes me wonder whether direct TU insertion via the API is intentionally restricted in GroupShare, or if there is some server-side policy or design decision that silently discards such inserts.&lt;/p&gt;
&lt;p data-start="4231" data-end="4378"&gt;Is this behaviour expected for server-based GroupShare TMs, and is the recommended or supported approach to populate them exclusively via batch TMX imports rather than direct TU insertion?&lt;/p&gt;
&lt;p data-start="4231" data-end="4378"&gt;&lt;/p&gt;
&lt;p data-start="4963" data-end="4981"&gt;Thanks in advance!&lt;/p&gt;
&lt;p data-start="4963" data-end="4981"&gt;Damien&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Trados API Extraction Failure: File Version Could Not Be Identified: New Case Comment</title><link>https://uat.community.rws.com/thread/60256?ContentTypeID=0</link><pubDate>Mon, 02 Feb 2026 12:22:46 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:71f76307-31f1-4736-aec7-076b655bc81d</guid><dc:creator>Dpto. Tecnico Linguaserve</dc:creator><slash:comments>1</slash:comments><comments>https://uat.community.rws.com/thread/60256?ContentTypeID=0</comments><wfw:commentRss>https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa/60256/trados-api-extraction-failure-file-version-could-not-be-identified-new-case-comment/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;span style="font-family:verdana, geneva;"&gt;Hello:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:verdana, geneva;"&gt;We are launching a process from the Trados API to read the contents of an SDLXLIFF file, and it is returning an error that we are unable to identify:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#333300;font-family:verdana, geneva;"&gt;Error while extracting data from 8950d65b-9b65-4160-9389-410ee8109862: An error occurred while trying to determine the file version.&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#333300;font-family:verdana, geneva;"&gt;at Sdl.ProjectAutomation.FileBased.FileBasedProject..ctor(String projectFilePath)&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#333300;font-family:verdana, geneva;"&gt;at ApiTAO.Tasks.FileExtractionData.FileExtractionDataTask.ExtractData(String projectPath, String fileId)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana, geneva;"&gt;We are unable to determine the cause of the error because, apparently, everything in the SDLXLIFF file looks correct.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana, geneva;"&gt;How can we get more information about the possible issue? Could you help us?&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>There is an event (SegmentsConfirmationLevelChanged) that is triggered for a single segment. Is there an equivalent event that is triggered once for multiple segments after a multi-selection?</title><link>https://uat.community.rws.com/thread/59958?ContentTypeID=0</link><pubDate>Wed, 17 Dec 2025 19:37:54 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:0a5ed4cc-3770-43d3-bc42-045e82caef70</guid><dc:creator>Usman Asif</dc:creator><slash:comments>2</slash:comments><comments>https://uat.community.rws.com/thread/59958?ContentTypeID=0</comments><wfw:commentRss>https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa/59958/there-is-an-event-segmentsconfirmationlevelchanged-that-is-triggered-for-a-single-segment-is-there-an-equivalent-event-that-is-triggered-once-for-multiple-segments-after-a-multi-selection/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;There is an event called &lt;strong data-start="93" data-end="131"&gt;&lt;code data-start="95" data-end="129"&gt;SegmentsConfirmationLevelChanged&lt;/code&gt;&lt;/strong&gt; that is triggered when the confirmation level of a segment changes. However, when multiple segments are selected and their status is changed in bulk, this event is fired separately for each individual segment. There does not appear to be a single event that represents the completion of the bulk action. Because of this, it is difficult to determine when all selected segments have finished updating. Is there an equivalent document-level or bulk event that is triggered once after the confirmation level is changed for multiple selected segments?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Scan batch task on Trados API randomly fails with message "The file exists."</title><link>https://uat.community.rws.com/thread/59770?ContentTypeID=0</link><pubDate>Wed, 26 Nov 2025 11:21:47 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:d5033013-404d-4136-ac08-78a98b8145b1</guid><dc:creator>Stelios Mathioulakis</dc:creator><slash:comments>4</slash:comments><comments>https://uat.community.rws.com/thread/59770?ContentTypeID=0</comments><wfw:commentRss>https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa/59770/scan-batch-task-on-trados-api-randomly-fails-with-message-the-file-exists/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I have a typical function to add files to a project. I have a very large catalog of html files that I need to convert, around 70k files. I have set up multiple Python workers for this task and they invoke the C# code with the relevant parameters like source, target lang, output path, input file path. However, this typical code here randomly fails:&lt;/p&gt;
&lt;p&gt;private void AddFiles(FileBasedProject project, string sourceFilePath)&lt;br /&gt; {&lt;br /&gt; // AddFiles expects an array of strings&lt;br /&gt; string[] sourceFilePaths = { sourceFilePath };&lt;br /&gt; project.AddFiles(sourceFilePaths);&lt;/p&gt;
&lt;p&gt;ProjectFile[] projectFiles = project.GetSourceLanguageFiles();&lt;/p&gt;
&lt;p&gt;AutomaticTask scan = project.RunAutomaticTask(projectFiles.GetIds(), AutomaticTaskTemplateIds.Scan);&lt;br /&gt; &lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;the problem is that the scan object has the message &amp;quot;The file exists.&amp;quot;. This Add files function sits here in a typical sequence of calls for Trados automation:&lt;/p&gt;
&lt;p&gt;newProject = new FileBasedProject(this.GetProjectInfo(srcLocale, trgLocale, outputpath));&lt;br /&gt; var settings_ = newProject.GetSettings();&lt;br /&gt; var xliffSettings = settings_.GetSettingsGroup(&amp;quot;SDL XLIFF 1.0 v 1.0.0.0&amp;quot;);&lt;br /&gt; xliffSettings.GetSetting&amp;lt;bool&amp;gt;(&amp;quot;ValidateXliff&amp;quot;).Value = false;&lt;br /&gt; newProject.UpdateSettings(settings_);&lt;/p&gt;
&lt;p&gt;this.AddFiles(newProject, sourceFilePath);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;What does this &amp;quot;The file exists.&amp;quot; even mean? Can you see where this could come from?&lt;/p&gt;
&lt;p&gt;If I shut the process off and then try only a failed task on its own, then it works. Can someone help me on this? I have never encountered this before. I am using Trados 2022.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>" HRESULT E_FAIL-Error" during deletion of entries in a MultiTerm termbase</title><link>https://uat.community.rws.com/thread/59630?ContentTypeID=0</link><pubDate>Fri, 14 Nov 2025 10:43:15 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:209f7cf9-4a9b-4fbb-8d28-2502bbc6c71c</guid><dc:creator>Nils J&amp;#246;rn</dc:creator><slash:comments>4</slash:comments><comments>https://uat.community.rws.com/thread/59630?ContentTypeID=0</comments><wfw:commentRss>https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa/59630/hresult-e_fail-error-during-deletion-of-entries-in-a-multiterm-termbase/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Dear all,&lt;/p&gt;
&lt;p&gt;I&amp;#39;m creating a little command line tool with Visual Basic which shall delete all entries from a MultiTerm termbase which has about 4000 entries.&lt;br /&gt;I&amp;#39;m using MultiTerm 18.1.2.3594 and have set a reference to &amp;quot;C:\Program Files (x86)\Common Files\Trados\MultiTerm18\Sdl.MultiTerm.TMO.dll&amp;quot;.&lt;/p&gt;
&lt;p&gt;Im using the following for... next loop:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;For entryCount = 1 To oTb.Entries.Count
    Console.WriteLine($&amp;quot;EntryCount: {entryCount}&amp;quot;)
    If oTb IsNot Nothing Then
        If oTb.Entries IsNot Nothing Then
            oTb.Entries.Item(oTb.Entries.GetEntryIDs(entryCount)).Delete()
        End If
    End If
Next&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Unfortunately, runnnig that loop leads to the following error message after running some time and deleting entries as expected.&lt;/p&gt;
&lt;p&gt;&lt;span class="ng-scope"&gt;&lt;span style="font-family:arial, helvetica, sans-serif;font-size:10pt;"&gt;&amp;quot;An HRESULT E_FAIL error was returned when calling a COM component.&lt;br /&gt;StackTrace: at MultiTermIX.IEntryIDs.get_Item(Int32 Index)&lt;br /&gt; at MultiTerm_BatchImportExport.DatabaseImportExport._Closure$__6-0._Lambda$__1() in C:\tmp\MultiTerm-BatchImportExport.vb:Line 168.&amp;quot;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="ng-scope"&gt;What I&amp;#39;m really wondering about is, that the error is gone, if I&amp;#39;m exchanging the context of line 168, which is &amp;quot;oTb.Entries.Item(oTb.Entries.GetEntryIDs(entryCount)).Delete()&amp;quot;, by &amp;quot;Console.WriteLine($&amp;quot;Content: {oTb.Entries.Item(oTb.Entries.GetEntryIDs(entryCount)).Content.Content}&amp;quot;)&amp;quot;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;I don&amp;#39;t have any clue, why deleting the entries leads to that error, but listing the context of each entry does not.&lt;/p&gt;
&lt;p&gt;Please be so kind to let me know, what I&amp;#39;m doing wrong.&lt;br /&gt;Any help and even a hint, pointing me in the right direction is very much appreciated.&lt;/p&gt;
&lt;p&gt;If you have any further question or if you need any further information, please don&amp;#39;t hesitate to let me know.&lt;/p&gt;
&lt;p&gt;Best regards and have a nice day.&lt;br /&gt;Nils&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>How to Invoke Native Find/Replace with Highlighting and Reset Display Filter Actions from Plugin Code?</title><link>https://uat.community.rws.com/thread/59600?ContentTypeID=0</link><pubDate>Tue, 11 Nov 2025 17:15:15 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:a3947fbd-096e-4c5d-880a-8f480104d02d</guid><dc:creator>Sameh Elsharkawy</dc:creator><slash:comments>1</slash:comments><comments>https://uat.community.rws.com/thread/59600?ContentTypeID=0</comments><wfw:commentRss>https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa/59600/how-to-invoke-native-find-replace-with-highlighting-and-reset-display-filter-actions-from-plugin-code/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p class="whitespace-normal break-words"&gt;&lt;strong&gt;Hello RWS Developer Community,&lt;/strong&gt;&lt;/p&gt;
&lt;p class="whitespace-normal break-words"&gt;My name is Sameh Ragab, and I&amp;#39;m the developer of the &lt;strong&gt;TWAS Studio Assistant&lt;/strong&gt; plugin (&lt;a class="underline" href="https://appstore.rws.com/Plugin/397?tab=support"&gt;available on RWS AppStore&lt;/a&gt;). I&amp;#39;m reaching out to get guidance on implementing native Trados Studio behaviors within my plugin&amp;#39;s Find/Replace and Display Filter functionality.&lt;/p&gt;
&lt;h3 class="text-lg font-bold text-text-100 mt-1 -mb-1.5"&gt;&lt;strong&gt;Background&lt;/strong&gt;&lt;/h3&gt;
&lt;p class="whitespace-normal break-words"&gt;My plugin includes a Regex Manager with Find/Replace and Display Filter features. While I can successfully navigate to segments and apply custom display filters using the public API, I&amp;#39;m unable to replicate certain native Studio behaviors that would significantly improve user experience.&lt;/p&gt;
&lt;h3 class="text-lg font-bold text-text-100 mt-1 -mb-1.5"&gt;&lt;strong&gt;Specific Technical Questions&lt;/strong&gt;&lt;/h3&gt;
&lt;p class="whitespace-normal break-words"&gt;&lt;strong&gt;1. Find Next with Native Text Highlighting&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li class="whitespace-normal break-words"&gt;&lt;strong&gt;Current Implementation&lt;/strong&gt;: I use &lt;code&gt;EditorController.ActiveDocument.SetActiveSegmentPair(paragraphUnitId, segmentId, true)&lt;/code&gt; to navigate to matching segments, but the matched text is not highlighted like it is when using Studio&amp;#39;s native Find (Ctrl+F &amp;rarr; F4).&lt;/li&gt;
&lt;li class="whitespace-normal break-words"&gt;&lt;strong&gt;Question&lt;/strong&gt;: Is there an Action class or API method I can invoke to trigger Studio&amp;#39;s native Find Next functionality with text highlighting? I&amp;#39;ve tried &lt;code&gt;SendKeys&lt;/code&gt; with F4, but this feels like a workaround rather than a proper integration.&lt;/li&gt;
&lt;li class="whitespace-normal break-words"&gt;&lt;strong&gt;Desired Behavior&lt;/strong&gt;: When my plugin finds a match (plain text or regex), the matching text should be highlighted in orange, just like Studio&amp;#39;s native Find dialog.&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="whitespace-normal break-words"&gt;&lt;strong&gt;2. Reset Display Filter Action&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li class="whitespace-normal break-words"&gt;&lt;strong&gt;Current Implementation&lt;/strong&gt;: I call &lt;code&gt;ActiveDocument.ApplyFilterOnSegments(null)&lt;/code&gt; to clear filters programmatically, and use &lt;code&gt;SendKeys.SendWait(&amp;quot;^%{F6}&amp;quot;)&lt;/code&gt; to invoke the native Reset Filters command.&lt;/li&gt;
&lt;li class="whitespace-normal break-words"&gt;&lt;strong&gt;Question&lt;/strong&gt;: Is there an Action class (similar to how Studio uses &lt;code&gt;ExecuteAction&amp;lt;TAction&amp;gt;()&lt;/code&gt;) for the Reset Display Filter command? What&amp;#39;s the proper way to invoke this natively without relying on SendKeys?&lt;/li&gt;
&lt;li class="whitespace-normal break-words"&gt;&lt;strong&gt;Desired Behavior&lt;/strong&gt;: A single API call that performs the complete filter reset, just like Ctrl+Alt+F6.&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="whitespace-normal break-words"&gt;&lt;strong&gt;3. Access to Advanced Display Filter Implementation&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li class="whitespace-normal break-words"&gt;&lt;strong&gt;Observation&lt;/strong&gt;: The Studio&amp;#39;s Advanced Display Filter is very powerful, but I couldn&amp;#39;t find its source code in the &lt;a class="underline" href="https://github.com/RWS/Sdl-Community"&gt;Sdl-Community GitHub repository&lt;/a&gt;.&lt;/li&gt;
&lt;li class="whitespace-normal break-words"&gt;&lt;strong&gt;Question&lt;/strong&gt;: Is the Advanced Display Filter implementation available publicly? If so, where can I find it? Understanding how Studio implements this feature would help me better integrate my custom &lt;code&gt;IDisplayFilter&lt;/code&gt; implementation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="whitespace-normal break-words"&gt;&lt;strong&gt;4. General Editor Integration Guidance&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li class="whitespace-normal break-words"&gt;&lt;strong&gt;Question&lt;/strong&gt;: Is there documentation or sample code demonstrating how plugins can invoke Studio&amp;#39;s native editor commands/actions programmatically? Specifically:
&lt;ul&gt;
&lt;li class="whitespace-normal break-words"&gt;Find/Replace operations with highlighting&lt;/li&gt;
&lt;li class="whitespace-normal break-words"&gt;Filter management (apply, clear, reset)&lt;/li&gt;
&lt;li class="whitespace-normal break-words"&gt;Search scope configuration (source/target, case-sensitive, regex mode)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="text-lg font-bold text-text-100 mt-1 -mb-1.5"&gt;&lt;strong&gt;What I&amp;#39;ve Already Tried&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li class="whitespace-normal break-words"&gt;&lt;span class="emoticon" data-url="https://uat.community.rws.com/cfs-file/__key/system/emoji/2705.svg" title="White check mark"&gt;&amp;#x2705;&lt;/span&gt;&amp;nbsp;Successfully implemented&amp;nbsp;&lt;code&gt;IDisplayFilter&lt;/code&gt; for custom segment filtering&lt;/li&gt;
&lt;li class="whitespace-normal break-words"&gt;&lt;span class="emoticon" data-url="https://uat.community.rws.com/cfs-file/__key/system/emoji/2705.svg" title="White check mark"&gt;&amp;#x2705;&lt;/span&gt;&amp;nbsp;Using&amp;nbsp;&lt;code&gt;EditorController&lt;/code&gt; and &lt;code&gt;ActiveDocument&lt;/code&gt; API for segment navigation&lt;/li&gt;
&lt;li class="whitespace-normal break-words"&gt;&lt;span class="emoticon" data-url="https://uat.community.rws.com/cfs-file/__key/system/emoji/2705.svg" title="White check mark"&gt;&amp;#x2705;&lt;/span&gt;&amp;nbsp;Reviewed the&amp;nbsp;&lt;a class="underline" href="https://github.com/RWS/Sdl-Community"&gt;Sdl-Community repository&lt;/a&gt; for similar implementations&lt;/li&gt;
&lt;li class="whitespace-normal break-words"&gt;&lt;span class="emoticon" data-url="https://uat.community.rws.com/cfs-file/__key/system/emoji/2705.svg" title="White check mark"&gt;&amp;#x2705;&lt;/span&gt;&amp;nbsp;Studied the&amp;nbsp;&lt;a class="underline" href="https://developers.rws.com/studio-api-docs/"&gt;Studio API Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li class="whitespace-normal break-words"&gt;&lt;span class="emoticon" data-url="https://uat.community.rws.com/cfs-file/__key/system/emoji/274c.svg" title="X"&gt;&amp;#x274c;&lt;/span&gt;&amp;nbsp;Unable to find Action classes or command IDs for Find Next and Reset Filters&lt;/li&gt;
&lt;li class="whitespace-normal break-words"&gt;&lt;span class="emoticon" data-url="https://uat.community.rws.com/cfs-file/__key/system/emoji/274c.svg" title="X"&gt;&amp;#x274c;&lt;/span&gt;&amp;nbsp;No examples of native Find/Replace invocation with highlighting in public plugins&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="text-lg font-bold text-text-100 mt-1 -mb-1.5"&gt;&lt;strong&gt;Development Environment&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li class="whitespace-normal break-words"&gt;&lt;strong&gt;Language&lt;/strong&gt;: C# (.NET Framework 4.8)&lt;/li&gt;
&lt;li class="whitespace-normal break-words"&gt;&lt;strong&gt;Target&lt;/strong&gt;: Trados Studio 2024 (Studio 18)&lt;/li&gt;
&lt;li class="whitespace-normal break-words"&gt;&lt;strong&gt;Referenced Assemblies&lt;/strong&gt;:
&lt;ul&gt;
&lt;li class="whitespace-normal break-words"&gt;&lt;code&gt;Sdl.TranslationStudioAutomation.IntegrationApi&lt;/code&gt;&lt;/li&gt;
&lt;li class="whitespace-normal break-words"&gt;&lt;code&gt;Sdl.FileTypeSupport.Framework.BilingualApi&lt;/code&gt;&lt;/li&gt;
&lt;li class="whitespace-normal break-words"&gt;&lt;code&gt;Sdl.Desktop.IntegrationApi&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="text-lg font-bold text-text-100 mt-1 -mb-1.5"&gt;&lt;strong&gt;Request&lt;/strong&gt;&lt;/h3&gt;
&lt;p class="whitespace-normal break-words"&gt;If anyone from the RWS development team or experienced plugin developers could point me to:&lt;/p&gt;
&lt;ol&gt;
&lt;li class="whitespace-normal break-words"&gt;The correct Action classes or API methods for native Find/Replace and Reset Filters&lt;/li&gt;
&lt;li class="whitespace-normal break-words"&gt;Documentation on Studio&amp;#39;s command/action system&lt;/li&gt;
&lt;li class="whitespace-normal break-words"&gt;Source code references for Advanced Display Filter (if publicly available)&lt;/li&gt;
&lt;li class="whitespace-normal break-words"&gt;Any code samples demonstrating proper editor command integration&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="whitespace-normal break-words"&gt;I would be extremely grateful. My goal is to provide users with a seamless experience that feels native to Studio rather than relying on workarounds like SendKeys.&lt;/p&gt;
&lt;p class="whitespace-normal break-words"&gt;Thank you in advance for your help!&lt;/p&gt;
&lt;p class="whitespace-normal break-words"&gt;&lt;strong&gt;Best regards,&lt;/strong&gt;&lt;br /&gt; &lt;strong&gt;Sameh Ragab&lt;/strong&gt;&lt;br /&gt; Developer, TWAS Studio Assistant&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>How to update the STAGE of a project via the Trados API</title><link>https://uat.community.rws.com/thread/59559?ContentTypeID=0</link><pubDate>Fri, 07 Nov 2025 09:39:02 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:4d96c0df-96a0-4229-9766-fe03c6e45083</guid><dc:creator>Intrawelt Flow Handler</dc:creator><slash:comments>4</slash:comments><comments>https://uat.community.rws.com/thread/59559?ContentTypeID=0</comments><wfw:commentRss>https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa/59559/how-to-update-the-stage-of-a-project-via-the-trados-api/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello, i need to update the stage of a Trados project via the API. However, I do not find anything on the official documentation. With stages I mean how can I pass from the &amp;quot;Preprocessing&amp;quot; stage to the &amp;quot;Translation&amp;quot; stage. Can you help me? &lt;span class="emoticon" data-url="https://uat.community.rws.com/cfs-file/__key/system/emoji/1f642.svg" title="Slight smile"&gt;&amp;#x1f642;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Error when setting value in import task settings</title><link>https://uat.community.rws.com/thread/59485?ContentTypeID=0</link><pubDate>Fri, 31 Oct 2025 16:43:38 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:1d6a2063-f4a0-404e-83f7-343daac8ad58</guid><dc:creator>Bram van der Steen</dc:creator><slash:comments>6</slash:comments><comments>https://uat.community.rws.com/thread/59485?ContentTypeID=0</comments><wfw:commentRss>https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa/59485/error-when-setting-value-in-import-task-settings/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Good day,&lt;/p&gt;
&lt;p&gt;In our plugin with Studio 2024, we are trying to run the automatic task &amp;ldquo;UpdateFromExternalReview&amp;rdquo; via the Studio API. However, when preparing the task settings, we receive an error. See the following code snippet:&lt;/p&gt;
&lt;p data-renderer-start-pos="266"&gt;ISettingsBundle settings = project.GetSettings();&lt;br /&gt;Sdl.ProjectApi.Settings.ImportFromReviewTaskSettings importTaskSettings = settings.GetSettingsGroup&amp;lt;Sdl.ProjectApi.Settings.ImportFromReviewTaskSettings&amp;gt;();&lt;br /&gt;importTaskSettings.ExternalReviewMappingItems.Value = reviewedItems;&lt;br /&gt;&lt;br /&gt;When setting this value, we receive the following error:&lt;/p&gt;
&lt;p data-renderer-start-pos="601"&gt;&lt;code&gt;No set method for property &amp;#39;IsoAbbreviation&amp;#39; in type &amp;#39;Sdl.Core.Globalization.LanguageBase&amp;#39;. ---&amp;gt; System.Runtime.Serialization.InvalidDataContractException: No set method for property &amp;#39;IsoAbbreviation&amp;#39; in type &amp;#39;Sdl.Core.Globalization.LanguageBase&amp;#39;.&lt;/code&gt;&lt;br /&gt;&lt;code&gt; at System.Runtime.Serialization.DataContract.DataContractCriticalHelper.ThrowInvalidDataContractException(String message, Type type)&lt;/code&gt;&lt;br /&gt;&lt;code&gt; at WriteLanguageToXml(XmlWriterDelegator , Object , XmlObjectSerializerWriteContext , ClassDataContract )&lt;/code&gt;&lt;br /&gt;&lt;code&gt; at System.Runtime.Serialization.ClassDataContract.WriteXmlValue(XmlWriterDelegator xmlWriter, Object obj, XmlObjectSerializerWriteContext context)&lt;/code&gt;&lt;br /&gt;&lt;code&gt; at System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteDataContractValue(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle)&lt;/code&gt;&lt;br /&gt;&lt;code&gt; at System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle)&lt;/code&gt;&lt;br /&gt;&lt;code&gt; at System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize(XmlWriterDelegator xmlWriter, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle)&lt;/code&gt;&lt;br /&gt;&lt;code&gt; at WriteExternalReviewMappingItemToXml(XmlWriterDelegator , Object , XmlObjectSerializerWriteContext , ClassDataContract )&lt;/code&gt;&lt;br /&gt;&lt;code&gt; at System.Runtime.Serialization.ClassDataContract.WriteXmlValue(XmlWriterDelegator xmlWriter, Object obj, XmlObjectSerializerWriteContext context)&lt;/code&gt;&lt;br /&gt;&lt;code&gt; at System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteDataContractValue(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle)&lt;/code&gt;&lt;br /&gt;&lt;code&gt; at System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle)&lt;/code&gt;&lt;br /&gt;&lt;code&gt; at System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize(XmlWriterDelegator xmlWriter, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle)&lt;/code&gt;&lt;br /&gt;&lt;code&gt; at WriteArrayOfExternalReviewMappingItemToXml(XmlWriterDelegator , Object , XmlObjectSerializerWriteContext , CollectionDataContract )&lt;/code&gt;&lt;br /&gt;&lt;code&gt; at System.Runtime.Serialization.CollectionDataContract.WriteXmlValue(XmlWriterDelegator xmlWriter, Object obj, XmlObjectSerializerWriteContext context)&lt;/code&gt;&lt;br /&gt;&lt;code&gt; at System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteDataContractValue(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle)&lt;/code&gt;&lt;br /&gt;&lt;code&gt; at System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle)&lt;/code&gt;&lt;br /&gt;&lt;code&gt; at System.Runtime.Serialization.DataContractSerializer.InternalWriteObjectContent(XmlWriterDelegator writer, Object graph, DataContractResolver dataContractResolver)&lt;/code&gt;&lt;br /&gt;&lt;code&gt; at System.Runtime.Serialization.DataContractSerializer.InternalWriteObject(XmlWriterDelegator writer, Object graph, DataContractResolver dataContractResolver)&lt;/code&gt;&lt;br /&gt;&lt;code&gt; at System.Runtime.Serialization.XmlObjectSerializer.WriteObjectHandleExceptions(XmlWriterDelegator writer, Object graph, DataContractResolver dataContractResolver)&lt;/code&gt;&lt;br /&gt;&lt;code&gt; at System.Runtime.Serialization.DataContractSerializer.WriteObject(XmlWriter writer, Object graph)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This error is mysterious to us, as there&amp;#39;s no obvious connection to what we&amp;#39;re trying to do.&lt;/p&gt;
&lt;p&gt;The error occurred both in versions&amp;nbsp;18.0.1.2259 and&amp;nbsp;18.1.2.6370.&lt;br /&gt;&lt;br /&gt;Any help would be greatly appreciated.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;br /&gt;Bram van der Steen&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>What is the best way for a Trados Studio Translation Service Provider plugin to access and search an sdltb (MultiTerm termbase) file?</title><link>https://uat.community.rws.com/thread/59449?ContentTypeID=0</link><pubDate>Wed, 29 Oct 2025 06:30:20 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:8e847132-caf0-4ace-8332-042c04d5bc15</guid><dc:creator>hiroshi kameya</dc:creator><slash:comments>2</slash:comments><comments>https://uat.community.rws.com/thread/59449?ContentTypeID=0</comments><wfw:commentRss>https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa/59449/what-is-the-best-way-for-a-trados-studio-translation-service-provider-plugin-to-access-and-search-an-sdltb-multiterm-termbase-file/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I am currently developing an&lt;br /&gt;Translation Service Provider plugin for Trados Studio using C#. I would like the plugin to directly access and search the sdltb (MultiTerm termbase) file, and automate terminology recognition and replacement during translation.&lt;/p&gt;
&lt;p&gt;- Goal: The plugin should be able to obtain terminology recognition results from the sdltb file and automatically apply the recognized terms to the translation process.&lt;br /&gt;- What I&amp;#39;ve tried: I have searched the official SDK documentation and past threads in the Developer Community. The MultiTerm SDK is rather old, and it seems hard to get sufficient information using only the newer Studio API.&lt;br /&gt;- What I am looking for: Please share recommended approaches, API references, sample code, examples from existing plugins, or direct readout techniques (OLEDB, etc.).&lt;br /&gt;- Environment: Trados Studio 2024/ C#&lt;/p&gt;
&lt;p&gt;Any insights from those who have tackled similar challenges, or the latest official API information, would be very appreciated.&lt;br /&gt;I appreciate any code snippets or implementation details from your experience.&lt;br /&gt;Thank you!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Translation Provider Exception when testing Studio 2024 (SR1)</title><link>https://uat.community.rws.com/thread/59229?ContentTypeID=0</link><pubDate>Mon, 06 Oct 2025 14:49:49 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:52a021e6-08be-4c90-bc65-5b589743b66b</guid><dc:creator>Johan Lapasset</dc:creator><slash:comments>6</slash:comments><comments>https://uat.community.rws.com/thread/59229?ContentTypeID=0</comments><wfw:commentRss>https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa/59229/translation-provider-exception-when-testing-studio-2024-sr1/rss?ContentTypeId=0</wfw:commentRss><description>&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt;&lt;span style="color:#0000ff;"&gt;Context&lt;/span&gt;&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt;Since few weeks we are facing an issue (translation provider exception, see details below) which prevents to perform the Finalization in our internal application using Studio 2024 (SR1) APIs.&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt;We have already performed several tests in order to try to identify the cause but without success.&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt;Someone would have an idea what could be the cause and how to solve it?&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt;&lt;span style="color:#0000ff;"&gt;Here are the environment details : &lt;/span&gt;&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt; The code is executed in a separate application (CAT Client), it is not executed in a Plugin.&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt; Finalization, when launched in CAT Client, triggers the translation provider exception (see details below)&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt; Finalization, when launched directly in studio 2024, works correctly&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt; Groupshare version: GS:15.1.13.14280 - GS 2020 SR1 CU13&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt; Studio Version: Studio 2021 SR2 - 16.2.9.9198&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt; Studio Version: Studio 2024 SR1 (18.0.2.3255)&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt;&lt;span style="color:#0000ff;"&gt;Here are the main tests already done: &lt;/span&gt;&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt; CAT Client 3.2.1 with Studio 2021 works without issue&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt; CAT Client 4.0.0 (last version of our internal application adapted to studio 2024) but using Studio 2021 works without issue&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt; CAT Client 4.0.0 using Studio 2024 finalization doesn&amp;rsquo;t work (triggers the translation provider exception)&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt;&lt;span style="color:#0000ff;"&gt;Description of the issue:&lt;/span&gt;&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt;In our C# application, the API method to update the main memory generate a fatal exception if some Groupshare memories are attached and enabled in the project.&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt;The only way to avoid this exception is to disable all remote memories attached to the project before executing the update main memory batch task.&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt;This exception occurs only when the application uses the Studio 2024 API, on a specific set of groupshare servers.&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt;NB: groupshare server are correctly setup in Trados Studio, correctly enabled in the project, and the connection to the servers is correctly established.&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt;C# code used to update the main memory in our application :&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt;ProjectAutomaticTaskRunner taskRunner = new ProjectAutomaticTaskRunner(project); taskRunner.addTemplateTaskId(AutomaticTaskTemplateIds.UpdateMainTranslationMemories); taskRunner.addTemplateTaskId(AutomaticTaskTemplateIds.GenerateTargetTranslations); taskRunner.runTasks(fileIdList);&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt;(optional) List of automatic task used by our application, possibly affected by the issue:&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt;AutomaticTaskTemplateIds.PerfectMatch&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt;AutomaticTaskTemplateIds.Scan&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt;AutomaticTaskTemplateIds.ConvertToTranslatableFormat&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt;AutomaticTaskTemplateIds.CopyToTargetLanguages&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt;AutomaticTaskTemplateIds.AnalyzeFiles&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt;AutomaticTaskTemplateIds.UpdateMainTranslationMemories&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt;AutomaticTaskTemplateIds.GenerateTargetTranslations&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt;&lt;span style="color:#0000ff;"&gt;Error returned by the exception:&lt;/span&gt;&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt;ProjectAutomationException: Unexpected exception when configuring file multiFileConverter for task &amp;#39;Update Main Translation Memories&amp;#39;: Failed to create an instance of translation provider &amp;#39;sdltm.&lt;a href="https://gsweb-prd-09.net1.cec.eu.int/Public/Resources/NormativeMem_EN-FR&amp;#39;"&gt;gsweb-prd-09.net1.cec.eu.int/.../NormativeMem_EN-FR&amp;#39;&lt;/a&gt;&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt;NB: in this example, &lt;a href="https://gsweb-prd-09.net1.cec.eu.int"&gt;gsweb-prd-09.net1.cec.eu.int&lt;/a&gt; is the correct URL of our groupshare server. &amp;quot;/Public/Resources/NormativeMem_EN-FR&amp;quot; is the path where is store the memory, defined in the CSPROJ this way:&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt;&amp;lt;CascadeEntryItem PerformConcordanceSearch=&amp;quot;true&amp;quot; Penalty=&amp;quot;2&amp;quot; PerformUpdate=&amp;quot;true&amp;quot; PerformNormalSearch=&amp;quot;true&amp;quot;&amp;gt; &amp;lt;MainTranslationProviderItem Uri=&amp;quot;sdltm.&lt;a href="https://gsweb-prd-09.net1.cec.eu.int/Public/Resources/NormativeMem_EN-FR"&gt;&amp;quot;&amp;gt;gsweb-prd-09.net1.cec.eu.int/.../NormativeMem_EN-FR&amp;quot;&lt;/a&gt; Enabled=&amp;quot;true&amp;quot; /&amp;gt; &amp;lt;/CascadeEntryItem&amp;gt;&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt;The server is correctly setup in Studio, using the Windows default user authentication (without password).&lt;/h4&gt;
&lt;h4 class="title-padding break-word pre-wrap ng-binding ng-scope"&gt;The content of this memory is correctly accessible in the translation, in Studio Editor.&lt;/h4&gt;
&lt;p&gt;&lt;span style="color:#0000ff;"&gt;Complete stacktrace &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-teams="true"&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp; at Sdl.ProjectApi.AutomaticTasks.UpdateTm.AbstractUpdateTmContentProcessor.ProcessBuffer()&lt;br /&gt; &amp;nbsp;&amp;nbsp; at Sdl.ProjectApi.AutomaticTasks.UpdateTm.AbstractUpdateTmContentProcessor.ProcessWaitingParagraphs()&lt;br /&gt; &amp;nbsp;&amp;nbsp; at Sdl.ProjectApi.AutomaticTasks.UpdateTm.AbstractUpdateTmContentProcessor.ProcessParagraphUnit(IParagraphUnit paragraphUnit)&lt;br /&gt; &amp;nbsp;&amp;nbsp; at Sdl.FileTypeSupport.Framework.BilingualApi.AbstractBilingualContentProcessor.ProcessParagraphUnit(IParagraphUnit paragraphUnit)&lt;br /&gt; &amp;nbsp;&amp;nbsp; at Sdl.FileTypeSupport.Filters.Processors.SegmentRenumberingBilingualProcessor.ProcessParagraphUnit(IParagraphUnit paragraphUnit)&lt;br /&gt; &amp;nbsp;&amp;nbsp; at Sdl.FileTypeSupport.Framework.Core.Utilities.BilingualApi.BilingualContentHandlerAdapter.ProcessParagraphUnit(IParagraphUnit paragraphUnit)&lt;br /&gt; &amp;nbsp;&amp;nbsp; at Sdl.FileTypeSupport.Framework.Core.Utilities.BilingualApi.BilingualContentHandlerAdapter.ProcessParagraphUnit(IParagraphUnit paragraphUnit)&lt;br /&gt; &amp;nbsp;&amp;nbsp; at Sdl.FileTypeSupport.Framework.Integration.AbstractBilingualProcessorContainer.ProcessParagraphUnit(IParagraphUnit paragraphUnit)&lt;br /&gt; &amp;nbsp;&amp;nbsp; at Sdl.FileTypeSupport.Framework.BilingualApi.AbstractBilingualContentProcessor.ProcessParagraphUnit(IParagraphUnit paragraphUnit)&lt;br /&gt; &amp;nbsp;&amp;nbsp; at Sdl.FileTypeSupport.Framework.Integration.LocationMarkerLocator.ProcessParagraphUnit(IParagraphUnit paragraphUnit)&lt;br /&gt; &amp;nbsp;&amp;nbsp; at Sdl.FileTypeSupport.Framework.Integration.AbstractBilingualProcessorContainer.ProcessParagraphUnit(IParagraphUnit paragraphUnit)&lt;br /&gt; &amp;nbsp;&amp;nbsp; at Sdl.FileTypeSupport.Framework.Integration.FileExtractor.ProcessParagraphUnit(IParagraphUnit paragraphUnit)&lt;br /&gt; &amp;nbsp;&amp;nbsp; at Sdl.FileTypeSupport.Framework.Core.Utilities.BilingualApi.ParagraphUnitBuffer.Release()&lt;br /&gt; &amp;nbsp;&amp;nbsp; at Sdl.FileTypeSupport.Bilingual.SdlXliff.XliffFileReader.OutputParagraphUnit(IParagraphUnit pu)&lt;br /&gt; &amp;nbsp;&amp;nbsp; at Sdl.FileTypeSupport.Bilingual.SdlXliff.XliffFileReader.ParseLocalizableParagraphUnit(transunit transunit, LockTypeFlags lockFlags)&lt;br /&gt; &amp;nbsp;&amp;nbsp; at Sdl.FileTypeSupport.Bilingual.SdlXliff.XliffFileReader.ParseTransUnit(transunit transunit)&lt;br /&gt; &amp;nbsp;&amp;nbsp; at Sdl.FileTypeSupport.Bilingual.SdlXliff.XliffFileReader.ParseGroup(group group)&lt;br /&gt; &amp;nbsp;&amp;nbsp; at Sdl.FileTypeSupport.Bilingual.SdlXliff.XliffFileReader.OnGroup(XmlElement group)&lt;br /&gt; &amp;nbsp;&amp;nbsp; at Sdl.FileTypeSupport.Bilingual.SdlXliff.SdlXliffFeeder.&amp;lt;ContinueScanning&amp;gt;b__14_11(ISdlXliffStreamContentHandler handler)&lt;br /&gt; &amp;nbsp;&amp;nbsp; at System.Collections.Generic.List`1.ForEach(Action`1 action)&lt;br /&gt; &amp;nbsp;&amp;nbsp; at Sdl.FileTypeSupport.Bilingual.SdlXliff.SdlXliffFeeder.ContinueScanning()&lt;br /&gt; &amp;nbsp;&amp;nbsp; at Sdl.FileTypeSupport.Bilingual.SdlXliff.XliffFileReader.ContinueParsing()&lt;br /&gt; &amp;nbsp;&amp;nbsp; at Sdl.FileTypeSupport.Bilingual.SdlXliff.XliffFileReader.ParseNext()&lt;br /&gt; &amp;nbsp;&amp;nbsp; at Sdl.FileTypeSupport.Framework.Integration.FileExtractor.ParseNext()&lt;br /&gt; &amp;nbsp;&amp;nbsp; at Sdl.FileTypeSupport.Framework.Integration.MultiFileConverter.ParseNext()&lt;br /&gt; &amp;nbsp;&amp;nbsp; at Sdl.FileTypeSupport.Framework.Integration.MultiFileConverter.Parse()&lt;br /&gt; &amp;nbsp;&amp;nbsp; at Sdl.ProjectApi.Implementation.TaskExecution.ContentProcessingTaskImplementation.TaskFileExecuter.Parse(String targetFilePath)&amp;#39;.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Plugin buttons missing when Comments are not displayed</title><link>https://uat.community.rws.com/thread/59228?ContentTypeID=0</link><pubDate>Mon, 06 Oct 2025 14:28:20 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:95346742-e404-4110-ba17-3e604534491b</guid><dc:creator>Thomas CORDONNIER</dc:creator><slash:comments>4</slash:comments><comments>https://uat.community.rws.com/thread/59228?ContentTypeID=0</comments><wfw:commentRss>https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa/59228/plugin-buttons-missing-when-comments-are-not-displayed/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;[RibbonGroup("DGTQATButtonsGroup", ContextByType = typeof(EditorController))]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;[RibbonGroupLayout(LocationByType = typeof(TranslationStudioDefaultRibbonTabs.EditorReviewRibbonTabLocation))]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;class DGTQATButtonsGroup : AbstractRibbonGroup&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;" lang="en-IE"&gt;&lt;br /&gt; &lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;[Action("CountComents", Icon = "trad19_view-evaluation_icon")]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;[ActionLayout(typeof(DGTQATButtonsGroup), 1, DisplayType.Large)]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;class StatsButton : AbstractAction&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&amp;hellip;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span lang="en-IE"&gt;When we open a document in review mode, it initially appears correctly:&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;" lang="en-IE"&gt;&lt;img style="max-height:600px;max-width:900px;" src="https://uat.community.rws.com/resized-image/__size/1800x1200/__key/communityserver-discussions-components-files/57/pastedimage1759760705021v5.png" alt="Trados Studio Review tab showing the Evaluation summary button circled in red." /&gt;&lt;br /&gt; &lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span lang="en-IE"&gt;Our problem is the following:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span lang="en-IE"&gt;On Studio 2021, the ribbon group disappears unless the &amp;ldquo;Translation results&amp;rdquo; pane is selected&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span lang="en-IE"&gt;On Studio 2024, the ribbon group disappears unless the &amp;ldquo;Comments&amp;rdquo; pane is selected:&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span lang="en-IE"&gt;&lt;img style="max-height:600px;max-width:900px;" src="https://uat.community.rws.com/resized-image/__size/1800x1200/__key/communityserver-discussions-components-files/57/pastedimage1759760729753v6.png" alt="Trados Studio editor view with the DGT button circled in red and the Comments pane highlighted." /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;" lang="en-IE"&gt;&lt;img style="max-height:600px;max-width:900px;" src="https://uat.community.rws.com/resized-image/__size/1800x1200/__key/communityserver-discussions-components-files/57/pastedimage1759760744907v7.png" alt="Trados Studio editor view with the Translation Results pane circled in red and the Quality Assurance section empty." /&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;" lang="en-IE"&gt;&lt;br /&gt; &lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span lang="en-IE"&gt;I don&amp;rsquo;t see any logical relation between selected results pane and ribbons, but multiple users have experimented this and came to same conclusion.&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span lang="en-IE"&gt;I also did not find anything in the API doing such a link:&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;[AttributeUsage(AttributeTargets.Class)]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;[ExtensionPointInfo("Ribbon Groups", ExtensionPointBehavior.Static)]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;public class RibbonGroupAttribute : AbstractCommandBarItemAttribute&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;public RibbonGroupAttribute(string id);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;public RibbonGroupAttribute(string id, string name);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;public RibbonGroupAttribute(string id, Type contextByType);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;public RibbonGroupAttribute(string id, string name, Type contextByType);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;public sealed class RibbonGroupLayoutAttribute : AbstractLayoutAttribute&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;[EditorBrowsable(EditorBrowsableState.Never)]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;public RibbonGroupLayoutAttribute();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;public RibbonGroupLayoutAttribute(Type locationType);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;" lang="en-IE"&gt;&lt;br /&gt; &lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span lang="en-IE"&gt;The only parameter indicating ribbon&amp;rsquo;s location is &amp;ldquo;contextByType&amp;rdquo;, all the samples I saw were using &lt;/span&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;TranslationStudioDefaultRibbonTabs.EditorReviewRibbonTabLocation&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span lang="en-IE"&gt;I do not see any parameter related to tabs in the editor.&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;&lt;span lang="en-IE"&gt;Also the class &lt;/span&gt;&lt;span style="font-family:Courier New, serif;"&gt;&lt;span lang="en-IE"&gt;AbstractRibbonGroup&lt;/span&gt;&lt;/span&gt;&lt;span lang="en-IE"&gt; is empty, no parameter to be set without C#&amp;rsquo;s annotations.&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;"&gt;Is there any way to have the ribbon group appearing each time the &amp;quot;Review&amp;quot; part is selected, independently from what is selected in the part which contains translation results or comments?&lt;/p&gt;
&lt;p style="line-height:108%;margin-bottom:0.28cm;" lang="en-IE"&gt;&lt;br /&gt; &lt;/p&gt;
&lt;div id="simple-translate" class="simple-translate-system-theme"&gt;
&lt;div&gt;
&lt;div class="simple-translate-button isShow" style="height:22px;left:676px;top:263px;width:22px;"&gt;&lt;/div&gt;
&lt;div class="simple-translate-panel " style="font-size:13px;height:200px;left:0px;top:0px;width:300px;"&gt;
&lt;div class="simple-translate-result-wrapper" style="overflow:hidden;"&gt;
&lt;div class="simple-translate-move"&gt;&lt;/div&gt;
&lt;div class="simple-translate-result-contents"&gt;
&lt;p class="simple-translate-result" dir="auto"&gt;&lt;/p&gt;
&lt;p class="simple-translate-candidate" dir="auto"&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Adding comments to sdlxliff file target segments</title><link>https://uat.community.rws.com/thread/59172?ContentTypeID=0</link><pubDate>Tue, 30 Sep 2025 14:06:29 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:90459eb3-d7ee-456c-bee4-54d0f184e473</guid><dc:creator>Arturo Vazquez Rodriguez</dc:creator><slash:comments>2</slash:comments><comments>https://uat.community.rws.com/thread/59172?ContentTypeID=0</comments><wfw:commentRss>https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa/59172/adding-comments-to-sdlxliff-file-target-segments/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I&amp;#39;m looking for some examples about adding comments to target segments. I have looked in the community Github repo, but I could only find how to read the comments from segments using a segment visitor.&lt;/p&gt;
&lt;p&gt;Therefore, I was wondering if there was anything exposed to add comments to target segments, if possible, without using the editor controller. Could you point me into the right direction?&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;br /&gt;Arturo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Sdl.MultiTerm.TMO.Interop + Trados studio 2024 SR1</title><link>https://uat.community.rws.com/thread/58913?ContentTypeID=0</link><pubDate>Wed, 03 Sep 2025 08:57:51 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:ce97bc23-6785-4418-8015-0050bcd1605f</guid><dc:creator>Helena Grulichova</dc:creator><slash:comments>13</slash:comments><comments>https://uat.community.rws.com/thread/58913?ContentTypeID=0</comments><wfw:commentRss>https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa/58913/sdl-multiterm-tmo-interop-trados-studio-2024-sr1/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;We have used a reference to Sdl.MultiTerm.TMO.Interop in our custom terminology provider for Trados Studio. But it stops working after the SR1 update. I can see that the dll was removed from the Trados Studio folder (and it is mentioned in the Release Notes). How can I use the MultiTerm API now? I tried to reference the .dll from $(MSBuildProgramFiles32)\Common Files\Trados\MultiTerm18\Sdl.MultiTerm.TMO.Interop.dll but it throws an error when starting the plugin.&lt;/p&gt;
&lt;p&gt;Thanks,&lt;br /&gt;Helena&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>TerminologyProvider does not reliably generate scores for Fuzzy Search</title><link>https://uat.community.rws.com/thread/58886?ContentTypeID=0</link><pubDate>Mon, 01 Sep 2025 09:42:43 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:f5e7c587-7ad6-4448-8a91-6775d0821f3f</guid><dc:creator>Lukas Ley</dc:creator><slash:comments>5</slash:comments><comments>https://uat.community.rws.com/thread/58886?ContentTypeID=0</comments><wfw:commentRss>https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa/58886/terminologyprovider-does-not-reliably-generate-scores-for-fuzzy-search/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I am using Trados Studio 2024 (not SR1) and I have another question.&lt;/p&gt;
&lt;p&gt;After getting the search with the TerminologyProviderManager Singleton to work (see&amp;nbsp;&lt;a href="https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa/58071/setting-threashold-for-fuzzy-search-results-over-multiterm-termbases/186865"&gt;the answers in this question&lt;/a&gt;) I noticed some strange behavior.&lt;br /&gt;My goal is to get the scores for terms like they are displayed in the &amp;quot;Term Recognition&amp;quot; view in the Editor UI. Ideally I want to put the whole segment string in and get the scores.&lt;/p&gt;
&lt;p&gt;When I search via ITerminologyProivder.Search() the scores never line up. Even if I put in only a single term it only lines up when there is a 100% match.&lt;/p&gt;
&lt;p&gt;When I put in a longer sentence the score for the best fitting term decreases with the length of the sentence.&lt;/p&gt;
&lt;p&gt;For example see this code from the other question:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;var sourceLanguage = new CultureInfo(&amp;quot;en-US&amp;quot;);
var targetLanguage = new CultureInfo(&amp;quot;de-DE&amp;quot;);
string segmentText = &amp;quot;...&amp;quot;;
int maxResultsCount = 10;
bool targetRequired = true;

var searchResults = terminologyProvider.Search(
    segmentText,
    sourceLanguage,
    targetLanguage,
    maxResultsCount,
    SearchMode.Fuzzy,
    targetRequired
);&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;If I have a Termbase with the word &amp;quot;Gefahrstoff&amp;quot; in it and when I set the segmentText to &amp;quot;Gefahrstoff&amp;quot; the top searchResult has a score of 100.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If i set the segmentText to &amp;quot;Gefahrstoffen&amp;quot; it has a score of 90. In the Term Recognition view in the Editor UI, &amp;quot;Gefahrstoff&amp;quot; has a Score of 87. The sentence in the Editor is&amp;nbsp; &amp;quot;Die Nutzung von Gefahrstoffen ist gef&amp;auml;hrlich&amp;quot;.&lt;br /&gt;When I set the segmentText to &amp;quot;Die Nutzung von Gefahrstoffen ist gef&amp;auml;hrlich&amp;quot; the term &amp;quot;Gefahrstoff&amp;quot; has only a score of 63.&lt;/p&gt;
&lt;p&gt;Do i really need to parse the thext and search for each token? I would like to avoid doing that. And even if i did that the scores do not line up.&lt;br /&gt;&lt;br /&gt;Is there any method for getting the same scores?&lt;br /&gt;&lt;br /&gt;Best,&lt;br /&gt;Lukas&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Trados Studio 2024: SearchSegment is called multiple times for a single active segment, and provider cannot access active/neighbor segments’ context?</title><link>https://uat.community.rws.com/thread/58834?ContentTypeID=0</link><pubDate>Tue, 26 Aug 2025 09:21:06 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:5c50a2a6-fcd5-4532-9925-945e6eb98215</guid><dc:creator>hiroshi kameya</dc:creator><slash:comments>2</slash:comments><comments>https://uat.community.rws.com/thread/58834?ContentTypeID=0</comments><wfw:commentRss>https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa/58834/trados-studio-2024-searchsegment-is-called-multiple-times-for-a-single-active-segment-and-provider-cannot-access-active-neighbor-segments-context/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Context&lt;br /&gt;&lt;span&gt;I&amp;rsquo;m developing a custom MT translation provider plug-in for&amp;nbsp;&lt;/span&gt;&lt;strong&gt;Trados Studio 2024 (Studio18)&lt;/strong&gt;&lt;span&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;The provider implements&amp;nbsp;&lt;/span&gt;&lt;code&gt;ITranslationProvider&lt;/code&gt;&lt;span&gt;&amp;nbsp;and&amp;nbsp;&lt;/span&gt;&lt;code&gt;ITranslationProviderLanguageDirection&lt;/code&gt;&lt;span&gt;, and returns&amp;nbsp;&lt;/span&gt;&lt;code&gt;SearchResults&lt;/code&gt;&lt;span&gt;&amp;nbsp;from&amp;nbsp;&lt;/span&gt;&lt;code&gt;SearchSegment&lt;/code&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Environment&lt;br /&gt;&amp;bull; Trados Studio: 18.0.1.2259 (Studio18)&lt;br /&gt;&amp;bull; Sdl.Core.PluginFramework.Build: 18.0.1&lt;br /&gt;&amp;bull; .NET Framework: 4.8&lt;br /&gt;&amp;bull; OS: Windows 10 Enterprise&lt;br /&gt;&amp;bull; Language pair: ja-JP &amp;rarr; en-US&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Goal&lt;br /&gt;&lt;span&gt;I want to build a&amp;nbsp;&lt;/span&gt;&lt;strong&gt;context-aware MT provider&lt;/strong&gt;&lt;span&gt;&amp;nbsp;that uses surrounding segments (previous/next) to improve translation quality during&amp;nbsp;&lt;/span&gt;&lt;strong&gt;interactive editing&lt;/strong&gt;&lt;span&gt;&amp;nbsp;in the Studio editor.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Observations&lt;br /&gt;&lt;span&gt;&amp;bull;&amp;nbsp;&lt;/span&gt;When the first segment becomes active in the editor, SearchSegment is called multiple times (4+), even without navigating to another segment.&lt;br /&gt;&lt;span&gt;&amp;bull;&amp;nbsp;&lt;/span&gt;The API does not expose which segment is currently active, nor does it allow querying adjacent segments from within SearchSegment.&lt;br /&gt;&lt;span&gt;&amp;bull;&amp;nbsp;&lt;/span&gt;I also observe parallel calls on different threads, and calls for the next segment (likely prefetch), which I assume are part of editor optimizations.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Minimal code surface&lt;br /&gt;&amp;bull; SearchSegment signature I use: public SearchResults SearchSegment(SearchSettings settings, Segment segment)&lt;br /&gt;&amp;bull; I log each invocation with a correlation id and thread id. Example excerpt: [DEBUG] SearchSegment start. mode=NormalSearch, sourceText(len)=29 [DEBUG] SearchSegment start. mode=NormalSearch, sourceText(len)=36&lt;br /&gt;&amp;bull; GetLanguageDirection is also called repeatedly; I cache the language direction instance on my side.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;What I expected&lt;br /&gt;&amp;bull; Either a way to:&lt;br /&gt;&amp;bull; Know which segment is currently active in the editor (e.g., an index/id or context object), and/or&lt;br /&gt;&amp;bull; Retrieve adjacent segments (previous/next) from within SearchSegment for better context handling,&lt;br /&gt;&amp;bull; Or official guidance on the intended pattern to access reliable context for interactive MT in the editor.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;What I tried already&lt;br /&gt;&amp;bull; Implemented only SearchSegment for interactive use (SearchSegments is used in batch; I can see order there).&lt;br /&gt;&amp;bull; Confirmed SupportsTranslation = true; removed all NotImplementedException from the pipeline methods.&lt;br /&gt;&amp;bull; Added logging; observed that SearchSegment is invoked multiple times for what appears to be the active segment and also for its neighbor (prefetch).&lt;br /&gt;&amp;bull; Considered heuristics (thread-local last query cache), but they are not reliable because of prefetch and parallel execution.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Questions&lt;br /&gt;1. Is it expected that SearchSegment is called multiple times for a single active segment and also for neighboring segments (prefetch) in the editor?&lt;br /&gt;2. Is there any supported API to:&lt;br /&gt;&amp;bull; Identify which segment is currently active in the editor from within SearchSegment?&lt;br /&gt;&amp;bull; Retrieve previous/next segment text (or broader paragraph context) during interactive translation?&lt;br /&gt;3. If direct editor context is not available by design, what are the recommended best practices for building a context-aware MT provider in Studio (e.g., leveraging structure context, different interfaces, or another extension point)?&lt;br /&gt;4. Are there sample providers or documentation that demonstrate accessing reliable context during interactive editing?&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Thanks in advance for any pointers or references to official docs/samples.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>My plugin's translation results are not displayed alongside those from other plugins in Trados 2024.</title><link>https://uat.community.rws.com/thread/58795?ContentTypeID=0</link><pubDate>Fri, 22 Aug 2025 00:03:55 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:1f78b194-43a9-4f15-8d7e-69f66ad6100a</guid><dc:creator>NICT Dev</dc:creator><slash:comments>5</slash:comments><comments>https://uat.community.rws.com/thread/58795?ContentTypeID=0</comments><wfw:commentRss>https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa/58795/my-plugin-s-translation-results-are-not-displayed-alongside-those-from-other-plugins-in-trados-2024/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I&amp;#39;m currently developing an add-in for Trados 2024.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;I&amp;#39;ve been informed of an issue where translation results cannot be retrieved simultaneously when other companies&amp;#39; add-ins are also in use.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;========================&lt;/p&gt;
&lt;p&gt;Is it possible to use third-party add-ins in order to test this issue?&lt;/p&gt;
&lt;p&gt;Currently, when I try to use another company&amp;#39;s add-in, I receive the following message upon launching the application:&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&amp;quot;You are not currently subscribed to a machine translation package.&lt;br /&gt;To select a package, please access your account.&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;========================&lt;/p&gt;
&lt;p&gt;Could setting TranslationProviderInfo.TranslationMethod to &amp;quot;&lt;code&gt;Other&amp;quot;&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;be related to the issue?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;class TranslationProviderFactory : ITranslationProviderFactory&lt;br /&gt;{&lt;/p&gt;
&lt;p&gt;public TranslationProviderInfo GetTranslationProviderInfo(Uri translationProviderUri, string translationProviderState)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; TranslationProviderInfo info = new TranslationProviderInfo();&lt;br /&gt;&amp;nbsp; info.TranslationMethod = TranslationMethod.Other;&lt;br /&gt;&amp;nbsp; info.Name = &amp;quot;MyAddinName&amp;quot;;&lt;br /&gt;&amp;nbsp; return info;&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Direct Upload of Add-in Updates to RWS AppStore?</title><link>https://uat.community.rws.com/thread/58794?ContentTypeID=0</link><pubDate>Thu, 21 Aug 2025 23:35:16 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:45456d49-e0a3-4015-9b01-d031c3d3e088</guid><dc:creator>NICT Dev</dc:creator><slash:comments>2</slash:comments><comments>https://uat.community.rws.com/thread/58794?ContentTypeID=0</comments><wfw:commentRss>https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa/58794/direct-upload-of-add-in-updates-to-rws-appstore/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;!--StartFragment --&gt;At present, is there any method available for developers to directly upload updated versions of their own add-ins to the RWS AppStore?&lt;!--EndFragment --&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;!--StartFragment --&gt;How do you usually upload the latest version of your add-in?&lt;/p&gt;
&lt;p&gt;Do you contact someone at RWS by email to request the update?&lt;!--EndFragment --&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Plugin manifest versioning</title><link>https://uat.community.rws.com/thread/58737?ContentTypeID=0</link><pubDate>Mon, 18 Aug 2025 12:35:02 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:aa227c07-8cd8-4611-89a7-637f352bdbef</guid><dc:creator>Helena Grulichova</dc:creator><slash:comments>4</slash:comments><comments>https://uat.community.rws.com/thread/58737?ContentTypeID=0</comments><wfw:commentRss>https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa/58737/plugin-manifest-versioning/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p data-start="138" data-end="148"&gt;Hello,&lt;/p&gt;
&lt;p data-start="150" data-end="368"&gt;I am testing our custom terminology provider plugin on different machines and using versioning in &lt;code data-start="248" data-end="276"&gt;pluginpackage.manifest.xml&lt;/code&gt;. If I want to test a new version of the plugin, I increase the version number, for example:&lt;/p&gt;
&lt;div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary"&gt;
&lt;div class="sticky top-9"&gt;
&lt;div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"&gt;
&lt;div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"&gt;&lt;span class="" data-state="closed"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;code class="whitespace-pre! language-xml"&gt;&lt;span&gt;&lt;span class="hljs-meta"&gt;&amp;lt;?xml version=&lt;span class="hljs-string"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;/span&gt; encoding=&lt;span class="hljs-string"&gt;&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;code class="whitespace-pre! language-xml"&gt;&lt;span&gt;&lt;span class="hljs-tag"&gt;&amp;lt;&lt;span class="hljs-name"&gt;PluginPackage&lt;/span&gt;&lt;/span&gt; &lt;span class="hljs-attr"&gt;xmlns&lt;/span&gt;=&lt;span class="hljs-string"&gt;&amp;quot;&lt;a href="http://www.sdl.com/Plugins/PluginPackage/1.0"&gt;&amp;quot;&amp;gt;www.sdl.com/.../1.0&amp;quot;&lt;/a&gt;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;code class="whitespace-pre! language-xml"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;code class="whitespace-pre! language-xml"&gt;&lt;span&gt;&lt;span class="hljs-tag"&gt;&amp;lt;&lt;span class="hljs-name"&gt;Version&lt;/span&gt;&lt;/span&gt;&amp;gt;2.2.0.0&lt;span class="hljs-tag"&gt;&amp;lt;/&lt;span class="hljs-name"&gt;Version&lt;/span&gt;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-start="521" data-end="736"&gt;Then I copy the new &lt;code data-start="541" data-end="553"&gt;.sdlplugin&lt;/code&gt; file to another machine. I uninstall all previous versions of my plugin in Trados Studio, close it, and remove all plugin files from:&lt;br data-start="687" data-end="690" /&gt; &lt;code data-start="690" data-end="734"&gt;%AppData%\Trados\Trados Studio\18\Plugins\&lt;/code&gt;&lt;/p&gt;
&lt;p data-start="738" data-end="840"&gt;After that, I copy the &lt;code data-start="761" data-end="773"&gt;.sdlplugin&lt;/code&gt; file to:&lt;br data-start="782" data-end="785" /&gt; &lt;code data-start="785" data-end="838"&gt;%AppData%\Trados\Trados Studio\18\Plugins\Packages\&lt;/code&gt;&lt;/p&gt;
&lt;p data-start="842" data-end="1012"&gt;Then I double-click to install the plugin and start Trados Studio. At this point, I get a dialog message about loading the custom plugin three times (why three times?).&lt;/p&gt;
&lt;p data-start="1014" data-end="1310"&gt;In Trados Studio, under &lt;strong data-start="1038" data-end="1085"&gt;Add-Ins &amp;rarr; RWS AppStore &amp;rarr; Installed plug-ins&lt;/strong&gt;, I can see three instances of my plugin, all showing the correct version number. However, in &lt;strong data-start="1179" data-end="1217"&gt;Project Settings &amp;rarr; Termbases &amp;rarr; Use&lt;/strong&gt;, the plugin is also listed three times, but they are all old versions, not the latest one.&lt;/p&gt;
&lt;p data-start="1312" data-end="1403"&gt;I expect to see only one instance of my plugin&amp;mdash;the latest version. What am I doing wrong?&lt;/p&gt;
&lt;p data-start="1405" data-end="1433"&gt;Best regards,&lt;br data-start="1422" data-end="1425" /&gt; Helena&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="font-family:inherit;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Why is my custom Global Verifier being instantiated multiple times during a single "Verify Files" batch task?</title><link>https://uat.community.rws.com/thread/58735?ContentTypeID=0</link><pubDate>Mon, 18 Aug 2025 08:12:42 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:ea83e5d4-3b5d-4f2a-b6dd-fe77762f7e35</guid><dc:creator>hiroshi kameya</dc:creator><slash:comments>2</slash:comments><comments>https://uat.community.rws.com/thread/58735?ContentTypeID=0</comments><wfw:commentRss>https://uat.community.rws.com/developers-more/trados-portfolio/trados-studio-developers/f/sdk_qa/58735/why-is-my-custom-global-verifier-being-instantiated-multiple-times-during-a-single-verify-files-batch-task/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p data-start="130" data-end="179"&gt;&lt;span&gt;I&amp;rsquo;m developing a custom global verifier for &lt;strong data-start="44" data-end="81"&gt;Trados Studio 2024 (v18.0.1.2259)&lt;/strong&gt;, implementing both &lt;code data-start="101" data-end="118"&gt;IGlobalVerifier&lt;/code&gt; and &lt;code data-start="123" data-end="143"&gt;IBilingualVerifier&lt;/code&gt;. My goal is to maintain shared state across multiple files during a batch verification task.&lt;/span&gt;&lt;/p&gt;
&lt;p data-start="181" data-end="218"&gt;&lt;span&gt;However, during a &amp;quot;Verify Files&amp;quot; batch run, I observed that the Verifier class is instantiated &lt;strong data-start="95" data-end="110"&gt;three times&lt;/strong&gt;, even though I expected a single instance for the entire batch. This was confirmed by adding logging to the constructor.&lt;/span&gt;&lt;/p&gt;
&lt;p data-start="220" data-end="257"&gt;&lt;span&gt;Here are my questions:&lt;/span&gt;&lt;/p&gt;
&lt;ol data-start="259" data-end="554"&gt;
&lt;li data-start="259" data-end="380"&gt;
&lt;p data-start="262" data-end="380"&gt;&lt;span&gt;&lt;strong data-start="0" data-end="69" data-is-last-node="" data-is-only-node=""&gt;Is this expected behavior within Studio&amp;rsquo;s verification lifecycle?&lt;/strong&gt;&lt;/span&gt;&lt;br data-start="299" data-end="302" /&gt; &lt;span&gt;Could it be related to how merged bilingual documents are processed during batch tasks?&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="382" data-end="465"&gt;
&lt;p data-start="385" data-end="465"&gt;&lt;span&gt;&lt;strong data-start="0" data-end="69" data-is-last-node="" data-is-only-node=""&gt;Is the plugin instantiation tied to each merged document or file?&lt;/strong&gt;&lt;/span&gt;&lt;br data-start="422" data-end="425" /&gt; &lt;span&gt;I want to know if Studio intentionally creates separate instances per document for lifecycle or isolation reasons.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="467" data-end="554"&gt;
&lt;p data-start="470" data-end="554"&gt;&lt;span&gt;&lt;strong data-start="0" data-end="71" data-is-last-node="" data-is-only-node=""&gt;What&amp;rsquo;s the best practice for maintaining shared state across files?&lt;/strong&gt;&lt;/span&gt;&lt;br data-start="509" data-end="512" /&gt; &lt;span&gt;For example, should I use &lt;code data-start="26" data-end="47"&gt;ISharedObjectsAware&lt;/code&gt;, or perhaps use static/shared storage keyed by batch or project ID.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-start="556" data-end="595"&gt;&lt;span&gt;Any insights or guidance about when and why multiple instances are created, or how to reliably share state across the verification process, would be greatly appreciated!&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>