<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://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/"><channel><title>How to update plugins to Trados Studio 2022 SR2</title><link>https://community.rws.com/developers-more/trados-portfolio/trados-studio-developers/w/trados-studio-api/6743/how-to-update-plugins-to-trados-studio-2022-sr2</link><description /><dc:language>en-US</dc:language><generator>Telligent Community 12 Non-Production</generator><item><title>How to update plugins to Trados Studio 2022 SR2</title><link>https://community.rws.com/developers-more/trados-portfolio/trados-studio-developers/w/trados-studio-api/6743/how-to-update-plugins-to-trados-studio-2022-sr2</link><pubDate>Tue, 13 Feb 2024 16:25:27 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:6b7e147c-62e9-44ac-9849-a5bca64f0282</guid><dc:creator>Patrick Andrew Hartnett</dc:creator><comments>https://community.rws.com/developers-more/trados-portfolio/trados-studio-developers/w/trados-studio-api/6743/how-to-update-plugins-to-trados-studio-2022-sr2#comments</comments><description>Current Revision posted to Studio Developers WIKI by Patrick Andrew Hartnett on 2/13/2024 4:25:27 PM&lt;br /&gt;
&lt;p&gt;There will be significant changes to the Terminology provider API with the release of Trados Studio SR2.&amp;nbsp; These changes are all geared towards decoupling the Multiterm integration from Trados Studio to promote independent development cycles and reduce the risk of compatibility issues. This means that updates, bug fixes, and new features can be developed and released separately and lead to faster development cycles for each product.&lt;/p&gt;
&lt;p&gt;Unfortunately, this will introduce breaking changes for plugin and project automation integrations with the Terminology provider API. The following are a list of changes and known issues to consider when updating your plugin to be compatible with Trados Studio 2022 SR2&lt;/p&gt;
&lt;h2 id="Studio2022SR2Howtoupdateplugins-TerminologyProviderAPI"&gt;Terminology Provider API&lt;/h2&gt;
&lt;p&gt;Make reference to the &lt;a class="external-link" href="https://developers.rws.com/studio-api-docs/apiconcepts/releasenotes/tradosstudio2022sr2.html" rel="nofollow"&gt;release notes for Trados Studio SR2&lt;/a&gt; when updating your plugin integrations with the Terminology Provider API. It includes all of the API changes that will facilitate better management, customization, and extensibility of terminology providers, providing more flexibility and control for developers and users.&amp;nbsp;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Removed Classes and Interfaces&lt;/strong&gt;: Several classes and interfaces have been removed, such as &lt;em&gt;AbstractTerminologyProvider&lt;/em&gt;, &lt;em&gt;IDefinition&lt;/em&gt;, &lt;em&gt;IDefinitionLanguage&lt;/em&gt;, and others.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Updated Classes&lt;/strong&gt;: Major changes include the &lt;em&gt;Definition &lt;/em&gt;class, &lt;em&gt;Entry&lt;/em&gt;, &lt;em&gt;EntryField&lt;/em&gt;, &lt;em&gt;EntryLanguage&lt;/em&gt;, and others. These updates involve changes in property types, constructors, and interfaces.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TerminologyProviderManager&lt;/strong&gt;: Now implements &lt;em&gt;ITerminologyProviderManager&lt;/em&gt;, offering new methods for managing terminology providers, such as &lt;em&gt;RemoveTerminologyProvider&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ITerminologyProvider Updates&lt;/strong&gt;: The &lt;em&gt;ITerminologyProvider &lt;/em&gt;interface has several new properties and methods for managing active filters, initialization, and more. The type of returned values for methods like &lt;em&gt;GetEntry &lt;/em&gt;and &lt;em&gt;Search&lt;/em&gt;&lt;strong&gt; &lt;/strong&gt;has changed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New Interfaces&lt;/strong&gt;: Several new interfaces have been added, including &lt;em&gt;ITerminologyProviderManager&lt;/em&gt;, &lt;em&gt;ITerminologyProviderWinFormsUIWithCreate&lt;/em&gt;, and &lt;em&gt;ITerminologyProviderWinFormsUIWithEdit&lt;/em&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Note: &lt;/strong&gt;A full integration of these new changes to the Terminology Provider API are available from the &lt;a class="external-link" href="https://github.com/RWS/Sdl-Community/tree/master/IATETerminologyProvider" rel="nofollow"&gt;IATE Terminology Provider&lt;/a&gt; for reference.&lt;/p&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-ITerminologyProvider"&gt;ITerminologyProvider&lt;/h3&gt;
&lt;p&gt;The &lt;em&gt;AbstractTerminologyProvider&lt;/em&gt; is no longer available &amp;amp; in its place you must implement the &lt;em&gt;ITerminologyProvider&lt;/em&gt; interface, which has some new properties &amp;amp; methods such as &lt;em&gt;ActiveFilter&lt;/em&gt; property &amp;amp; associated method &lt;em&gt;GetFilters()&lt;/em&gt; that enable a user to add filters to restrict the results that provider displays when searching a termbase during translation.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:600px;max-width:900px;" alt=" " src="/resized-image/__size/1800x1200/__key/communityserver-wikis-components-files/00-00-00-03-50/pastedimage1699615497862v1.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;public class IATETerminologyProvider : ITerminologyProvider
{
    public FilterDefinition ActiveFilter { get; set; }
 
    public IList&amp;lt;FilterDefinition&amp;gt; GetFilters()
    {
        var filterDefinitions = new List&amp;lt;FilterDefinition&amp;gt;();
        var filterDefinition = new FilterDefinition { ID = 0, Name = &amp;quot;Source contains synonyms&amp;quot; };
        filterDefinitions.Add(filterDefinition);
 
        return filterDefinitions;
    }
}&lt;/pre&gt;&lt;/p&gt;
&lt;h3 id="terminology-provider-type"&gt;Terminology Provider Type&lt;/h3&gt;
&lt;p&gt;Set the &lt;em&gt;Type&lt;/em&gt; to &lt;em&gt;TerminologyProviderType.Custom&lt;/em&gt; for Third-party terminology providers&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;public class MyTerminologyProvider : ITerminologyProvider
{
    public TerminologyProviderType Type =&amp;gt; TerminologyProviderType.Custom;
}&lt;/pre&gt;&lt;/p&gt;
&lt;h3&gt;&lt;/h3&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-Definition"&gt;Definition&lt;/h3&gt;
&lt;p class="auto-cursor-target"&gt;Its important to fully describe the &lt;em&gt;DescriptiveFields &lt;/em&gt;to the &lt;em&gt;Definition&lt;/em&gt; property of the provider to provide sufficient information when integrating with other services, such as the &lt;strong&gt;Terminology Verifier&lt;/strong&gt;.&amp;nbsp; For example: to enable integration with the feature to check for forbidden terms, you should include the &lt;em&gt;DescriptiveField &lt;/em&gt;at the &lt;em&gt;TermLevel, &lt;/em&gt;as shown here (e.g. &lt;em&gt;var statusField&lt;/em&gt;)&lt;/p&gt;
&lt;p class="auto-cursor-target"&gt;&lt;img style="max-height:600px;max-width:900px;" alt=" " src="/resized-image/__size/1800x1200/__key/communityserver-wikis-components-files/00-00-00-03-50/pastedimage1699615545981v2.png" /&gt;&lt;/p&gt;
&lt;p class="auto-cursor-target"&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;public class IATETerminologyProvider : ITerminologyProvider
{
    public Definition Definition =&amp;gt; new Definition(GetDescriptiveFields(), GetDefinitionLanguages());
 
    public IList&amp;lt;DescriptiveField&amp;gt; GetDescriptiveFields()
    {
        var result = new List&amp;lt;DescriptiveField&amp;gt;();
 
        var definitionField = new DescriptiveField
        {
            Label = &amp;quot;Definition&amp;quot;, Level = FieldLevel.EntryLevel, Mandatory = true, Multiple = true,
            Type = FieldType.String
        };
        result.Add(definitionField);
 
        var statusField = new DescriptiveField
        {
            Label = &amp;quot;Status&amp;quot;, Level = FieldLevel.TermLevel, Mandatory = false, Multiple = true,
            Type = FieldType.PickList,
            PickListValues = new[] { &amp;quot;Deprecated&amp;quot;, &amp;quot;Obsolete&amp;quot;, &amp;quot;Admitted&amp;quot;, &amp;quot;Preferred&amp;quot;, &amp;quot;Proposed&amp;quot; }
        };
        result.Add(statusField);
 
        return result;
    }
}&lt;/pre&gt;&lt;/p&gt;
&lt;p class="auto-cursor-target"&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;public IList&amp;lt;DefinitionLanguage&amp;gt; GetDefinitionLanguages()
{
    var result = new List&amp;lt;DefinitionLanguage&amp;gt;();
 
    var currentProject = SdlTradosStudio.Application?.GetController&amp;lt;ProjectsController&amp;gt;()?.CurrentProject;
    if (currentProject == null) return result;
 
    var projectInfo = currentProject.GetProjectInfo();
 
    result.Add(new DefinitionLanguage
    {
        Locale = projectInfo.SourceLanguage.CultureInfo,
        Name = projectInfo.SourceLanguage.DisplayName
    });
 
    result.AddRange(projectInfo.TargetLanguages.Select(language =&amp;gt; new DefinitionLanguage
    {
        Locale = language.CultureInfo,
        Name = language.DisplayName
    }));
 
    return result;
}&lt;/pre&gt;&lt;/p&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-ITerminologyProviderWinFormsUI"&gt;ITerminologyProviderWinFormsUI&lt;/h3&gt;
&lt;p&gt;You will noticed that the property &lt;em&gt;SupportsEditing &lt;/em&gt;&amp;amp; the method &lt;em&gt;Edit(IWin32Window owner, ITerminologyProvider terminologyProvider)&lt;/em&gt; have been removed from the &lt;em&gt;ITerminologyProviderWinFormsUI&lt;/em&gt; interface.&amp;nbsp; If your provider allows a user to edit the provider settings by displaying a settings dialog, then implement the new interface &lt;em&gt;ITerminologyProviderWinFormsUIWithEdit. &lt;/em&gt;Additionally, the new interface&amp;nbsp;&lt;em&gt;ITerminologyProviderWinFormsUIWithCreate&lt;/em&gt; introduces a new extensibility point that will display a context menu item in the &lt;strong&gt;Create &lt;/strong&gt;button from the Terminology Provider Settings in Trados Studio.&amp;nbsp; This is useful for use cases where the creation of the provider needs to be a separate to the edit settings dialogs.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;[TerminologyProviderWinFormsUI]
public class MyTerminologyProviderWinFormsUI : ITerminologyProviderWinFormsUIWithEdit, ITerminologyProviderWinFormsUIWithCreate
{
    public ITerminologyProvider Create()
    {
        // Adds the capability to create a ITerminologyProvider.
        // Allows the creation of an ITerminologyProvider from the UI.It returns a ITerminologyProvider
        return null;
    }
 
    public bool Edit(IWin32Window owner, ITerminologyProvider terminologyProvider)
    {
        // Adds the capability to edit settings.
        // Used to display a dialog to interactively change any of the terminology provider settings.
        return true;
    }
 
    public ITerminologyProvider[] Browse(IWin32Window owner, ITerminologyProviderCredentialStore credentialStore)
    {
        // Adds the capability to select a ITerminologyProvider.
        // Used to display a dialog to add a new terminology provider.
        return null;
    }
}&lt;/pre&gt;&lt;/p&gt;
&lt;h2 id="Studio2022SR2Howtoupdateplugins-PluginManifest"&gt;Plugin Manifest&lt;/h2&gt;
&lt;p&gt;The manifest file&amp;nbsp;&lt;strong&gt;pluginpackage.manifest.xml&lt;/strong&gt; is located at the root of your project solution.&amp;nbsp; The values of the &lt;strong&gt;RequiredProduct &lt;/strong&gt;should be updated to align with the latest release.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RequiredProduct&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Min version: &lt;em&gt;17.2&lt;/em&gt;. If your plugin has been updated to support these latest changes to the Terminology Provider API, then you should reflect this by setting the minimum supported version of your plugin to &lt;em&gt;17.2&lt;br /&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Max version: &lt;em&gt;17.9&lt;/em&gt;. It is recommended to also set this value, as it will provide the AppStore with sufficient information in correctly identifying plugins that are compatible with the version of Trados Studio that is launched.&lt;/li&gt;
&lt;li&gt;Name:: &lt;em&gt;TradosStudio&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;&lt;pre class="ui-code" data-mode="xml"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;
&amp;lt;PluginPackage xmlns=&amp;quot;http://www.sdl.com/Plugins/PluginPackage/1.0&amp;quot;&amp;gt;
  &amp;lt;PlugInName&amp;gt;My plugin name&amp;lt;/PlugInName&amp;gt;
  &amp;lt;Version&amp;gt;1.1.0.0&amp;lt;/Version&amp;gt;
  &amp;lt;Description&amp;gt;My plugin description&amp;lt;/Description&amp;gt;
  &amp;lt;Author&amp;gt;Trados AppStore Team&amp;lt;/Author&amp;gt;
  &amp;lt;RequiredProduct name=&amp;quot;TradosStudio&amp;quot; minversion=&amp;quot;17.2&amp;quot; maxversion=&amp;quot;17.9&amp;quot; /&amp;gt;
&amp;lt;/PluginPackage&amp;gt;&lt;/pre&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="Studio2022SR2Howtoupdateplugins-KnownIssues"&gt;Known Issues&lt;/h2&gt;
&lt;p&gt;The following are a list of known issues and solutions that you might encounter depending on your settings and configuration.&lt;/p&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-Trados.Community.Toolkit(formallySDL.Community.Toolkit)"&gt;Trados.Community.Toolkit (&lt;em&gt;formally SDL.Community.Toolkit&lt;/em&gt;)&lt;/h3&gt;
&lt;p&gt;A new version of the Trados Community Toolkit, version 4.1.1, has been released to support the latest version of Trados Studio 2022 SR1+.&amp;nbsp; This includes the following assemblies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.Core" rel="nofollow"&gt;Trados.Community.Toolkit.Core&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.LanguagePlatform" rel="nofollow"&gt;Trados.Community.Toolkit.LanguagePlatform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.Integration" rel="nofollow"&gt;Trados.Community.Toolkit.Integration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.FileType" rel="nofollow"&gt;Trados.Community.Toolkit.FileType&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.ProjectAutomation" rel="nofollow"&gt;Trados.Community.Toolkit.ProjectAutomation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-Dependencyversionchanges"&gt;Dependency version changes&lt;/h3&gt;
&lt;p&gt;There following are a list of known dependency version changes that may influence your integration with the latest Trados Studio 2022 APIs; this is typically seen from standalone applications that are running outside of the Trados Studio context.&amp;nbsp; To resolve these references, include the following binding redirects in the configuration file of the project.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="xml"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;startup&amp;gt;
    &amp;lt;supportedRuntime version=&amp;quot;v4.0&amp;quot; sku=&amp;quot;.NETFramework,Version=v4.8&amp;quot; /&amp;gt;
  &amp;lt;/startup&amp;gt;
  &amp;lt;runtime&amp;gt;
    &amp;lt;NetFx40_PInvokeStackResilience enabled=&amp;quot;1&amp;quot; /&amp;gt;
    &amp;lt;legacyCorruptedStateExceptionsPolicy enabled=&amp;quot;true&amp;quot; /&amp;gt;
    &amp;lt;ThrowUnobservedTaskException enabled=&amp;quot;true&amp;quot; /&amp;gt;
    &amp;lt;assemblyBinding xmlns=&amp;quot;urn:schemas-microsoft-com:asm.v1&amp;quot;&amp;gt;
      &amp;lt;dependentAssembly&amp;gt;
        &amp;lt;assemblyIdentity name=&amp;quot;Microsoft.Extensions.DependencyModel&amp;quot; publicKeyToken=&amp;quot;adb9793829ddae60&amp;quot; culture=&amp;quot;neutral&amp;quot; /&amp;gt;
        &amp;lt;bindingRedirect oldVersion=&amp;quot;0.0.0.0-7.0.0.0&amp;quot; newVersion=&amp;quot;7.0.0.0&amp;quot; /&amp;gt;
      &amp;lt;/dependentAssembly&amp;gt;
      &amp;lt;dependentAssembly&amp;gt;
        &amp;lt;assemblyIdentity name=&amp;quot;System.Memory&amp;quot; publicKeyToken=&amp;quot;cc7b13ffcd2ddd51&amp;quot; culture=&amp;quot;neutral&amp;quot; /&amp;gt;
        &amp;lt;bindingRedirect oldVersion=&amp;quot;0.0.0.0-4.0.1.2&amp;quot; newVersion=&amp;quot;4.0.1.2&amp;quot; /&amp;gt;
      &amp;lt;/dependentAssembly&amp;gt;
      &amp;lt;dependentAssembly&amp;gt;
        &amp;lt;assemblyIdentity name=&amp;quot;Microsoft.Data.SqlClient&amp;quot; publicKeyToken=&amp;quot;23ec7fc2d6eaa4a5&amp;quot; culture=&amp;quot;neutral&amp;quot; /&amp;gt;
        &amp;lt;bindingRedirect oldVersion=&amp;quot;0.0.0.0-5.0.0.0&amp;quot; newVersion=&amp;quot;5.0.0.0&amp;quot; /&amp;gt;
      &amp;lt;/dependentAssembly&amp;gt;
    &amp;lt;/assemblyBinding&amp;gt;
  &amp;lt;/runtime&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>How to update plugins to Trados Studio 2022 SR2</title><link>https://community.rws.com/developers-more/trados-portfolio/trados-studio-developers/w/trados-studio-api/6743/how-to-update-plugins-to-trados-studio-2022-sr2/revision/6</link><pubDate>Tue, 13 Feb 2024 15:57:40 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:6b7e147c-62e9-44ac-9849-a5bca64f0282</guid><dc:creator>Patrick Andrew Hartnett</dc:creator><comments>https://community.rws.com/developers-more/trados-portfolio/trados-studio-developers/w/trados-studio-api/6743/how-to-update-plugins-to-trados-studio-2022-sr2#comments</comments><description>Revision 6 posted to Studio Developers WIKI by Patrick Andrew Hartnett on 2/13/2024 3:57:40 PM&lt;br /&gt;
&lt;p&gt;There will be significant changes to the Terminology provider API with the release of Trados Studio SR2.&amp;nbsp; These changes are all geared towards decoupling the Multiterm integration from Trados Studio to promote independent development cycles and reduce the risk of compatibility issues. This means that updates, bug fixes, and new features can be developed and released separately and lead to faster development cycles for each product.&lt;/p&gt;
&lt;p&gt;Unfortunately, this will introduce breaking changes for plugin and project automation integrations with the Terminology provider API. The following are a list of changes and known issues to consider when updating your plugin to be compatible with Trados Studio 2022 SR2&lt;/p&gt;
&lt;h2 id="Studio2022SR2Howtoupdateplugins-TerminologyProviderAPI"&gt;Terminology Provider API&lt;/h2&gt;
&lt;p&gt;Make reference to the &lt;a class="external-link" href="https://developers.rws.com/studio-api-docs/apiconcepts/releasenotes/tradosstudio2022sr2.html" rel="nofollow"&gt;release notes for Trados Studio SR2&lt;/a&gt; when updating your plugin integrations with the Terminology Provider API. It includes all of the API changes that will facilitate better management, customization, and extensibility of terminology providers, providing more flexibility and control for developers and users.&amp;nbsp;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Removed Classes and Interfaces&lt;/strong&gt;: Several classes and interfaces have been removed, such as &lt;em&gt;AbstractTerminologyProvider&lt;/em&gt;, &lt;em&gt;IDefinition&lt;/em&gt;, &lt;em&gt;IDefinitionLanguage&lt;/em&gt;, and others.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Updated Classes&lt;/strong&gt;: Major changes include the &lt;em&gt;Definition &lt;/em&gt;class, &lt;em&gt;Entry&lt;/em&gt;, &lt;em&gt;EntryField&lt;/em&gt;, &lt;em&gt;EntryLanguage&lt;/em&gt;, and others. These updates involve changes in property types, constructors, and interfaces.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TerminologyProviderManager&lt;/strong&gt;: Now implements &lt;em&gt;ITerminologyProviderManager&lt;/em&gt;, offering new methods for managing terminology providers, such as &lt;em&gt;RemoveTerminologyProvider&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ITerminologyProvider Updates&lt;/strong&gt;: The &lt;em&gt;ITerminologyProvider &lt;/em&gt;interface has several new properties and methods for managing active filters, initialization, and more. The type of returned values for methods like &lt;em&gt;GetEntry &lt;/em&gt;and &lt;em&gt;Search&lt;/em&gt;&lt;strong&gt; &lt;/strong&gt;has changed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New Interfaces&lt;/strong&gt;: Several new interfaces have been added, including &lt;em&gt;ITerminologyProviderManager&lt;/em&gt;, &lt;em&gt;ITerminologyProviderWinFormsUIWithCreate&lt;/em&gt;, and &lt;em&gt;ITerminologyProviderWinFormsUIWithEdit&lt;/em&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Note: &lt;/strong&gt;A full integration of these new changes to the Terminology Provider API are available from the &lt;a class="external-link" href="https://github.com/RWS/Sdl-Community/tree/master/IATETerminologyProvider" rel="nofollow"&gt;IATE Terminology Provider&lt;/a&gt; for reference.&lt;/p&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-ITerminologyProvider"&gt;ITerminologyProvider&lt;/h3&gt;
&lt;p&gt;The &lt;em&gt;AbstractTerminologyProvider&lt;/em&gt; is no longer available &amp;amp; in its place you must implement the &lt;em&gt;ITerminologyProvider&lt;/em&gt; interface, which has some new properties &amp;amp; methods such as &lt;em&gt;ActiveFilter&lt;/em&gt; property &amp;amp; associated method &lt;em&gt;GetFilters()&lt;/em&gt; that enable a user to add filters to restrict the results that provider displays when searching a termbase during translation.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:600px;max-width:900px;" alt=" " src="/resized-image/__size/1800x1200/__key/communityserver-wikis-components-files/00-00-00-03-50/pastedimage1699615497862v1.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;public class IATETerminologyProvider : ITerminologyProvider
{
    public FilterDefinition ActiveFilter { get; set; }
 
    public IList&amp;lt;FilterDefinition&amp;gt; GetFilters()
    {
        var filterDefinitions = new List&amp;lt;FilterDefinition&amp;gt;();
        var filterDefinition = new FilterDefinition { ID = 0, Name = &amp;quot;Source contains synonyms&amp;quot; };
        filterDefinitions.Add(filterDefinition);
 
        return filterDefinitions;
    }
}&lt;/pre&gt;&lt;/p&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-Definition"&gt;Definition&lt;/h3&gt;
&lt;p class="auto-cursor-target"&gt;Its important to fully describe the &lt;em&gt;DescriptiveFields &lt;/em&gt;to the &lt;em&gt;Definition&lt;/em&gt; property of the provider to provide sufficient information when integrating with other services, such as the &lt;strong&gt;Terminology Verifier&lt;/strong&gt;.&amp;nbsp; For example: to enable integration with the feature to check for forbidden terms, you should include the &lt;em&gt;DescriptiveField &lt;/em&gt;at the &lt;em&gt;TermLevel, &lt;/em&gt;as shown here (e.g. &lt;em&gt;var statusField&lt;/em&gt;)&lt;/p&gt;
&lt;p class="auto-cursor-target"&gt;&lt;img style="max-height:600px;max-width:900px;" alt=" " src="/resized-image/__size/1800x1200/__key/communityserver-wikis-components-files/00-00-00-03-50/pastedimage1699615545981v2.png" /&gt;&lt;/p&gt;
&lt;p class="auto-cursor-target"&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;public class IATETerminologyProvider : ITerminologyProvider
{
    public Definition Definition =&amp;gt; new Definition(GetDescriptiveFields(), GetDefinitionLanguages());
 
    public IList&amp;lt;DescriptiveField&amp;gt; GetDescriptiveFields()
    {
        var result = new List&amp;lt;DescriptiveField&amp;gt;();
 
        var definitionField = new DescriptiveField
        {
            Label = &amp;quot;Definition&amp;quot;, Level = FieldLevel.EntryLevel, Mandatory = true, Multiple = true,
            Type = FieldType.String
        };
        result.Add(definitionField);
 
        var statusField = new DescriptiveField
        {
            Label = &amp;quot;Status&amp;quot;, Level = FieldLevel.TermLevel, Mandatory = false, Multiple = true,
            Type = FieldType.PickList,
            PickListValues = new[] { &amp;quot;Deprecated&amp;quot;, &amp;quot;Obsolete&amp;quot;, &amp;quot;Admitted&amp;quot;, &amp;quot;Preferred&amp;quot;, &amp;quot;Proposed&amp;quot; }
        };
        result.Add(statusField);
 
        return result;
    }
}&lt;/pre&gt;&lt;/p&gt;
&lt;p class="auto-cursor-target"&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;public IList&amp;lt;DefinitionLanguage&amp;gt; GetDefinitionLanguages()
{
    var result = new List&amp;lt;DefinitionLanguage&amp;gt;();
 
    var currentProject = SdlTradosStudio.Application?.GetController&amp;lt;ProjectsController&amp;gt;()?.CurrentProject;
    if (currentProject == null) return result;
 
    var projectInfo = currentProject.GetProjectInfo();
 
    result.Add(new DefinitionLanguage
    {
        Locale = projectInfo.SourceLanguage.CultureInfo,
        Name = projectInfo.SourceLanguage.DisplayName
    });
 
    result.AddRange(projectInfo.TargetLanguages.Select(language =&amp;gt; new DefinitionLanguage
    {
        Locale = language.CultureInfo,
        Name = language.DisplayName
    }));
 
    return result;
}&lt;/pre&gt;&lt;/p&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-ITerminologyProviderWinFormsUI"&gt;ITerminologyProviderWinFormsUI&lt;/h3&gt;
&lt;p&gt;You will noticed that the property &lt;em&gt;SupportsEditing &lt;/em&gt;&amp;amp; the method &lt;em&gt;Edit(IWin32Window owner, ITerminologyProvider terminologyProvider)&lt;/em&gt; have been removed from the &lt;em&gt;ITerminologyProviderWinFormsUI&lt;/em&gt; interface.&amp;nbsp; If your provider allows a user to edit the provider settings by displaying a settings dialog, then implement the new interface &lt;em&gt;ITerminologyProviderWinFormsUIWithEdit. &lt;/em&gt;Additionally, the new interface&amp;nbsp;&lt;em&gt;ITerminologyProviderWinFormsUIWithCreate&lt;/em&gt; introduces a new extensibility point that will display a context menu item in the &lt;strong&gt;Create &lt;/strong&gt;button from the Terminology Provider Settings in Trados Studio.&amp;nbsp; This is useful for use cases where the creation of the provider needs to be a separate to the edit settings dialogs.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;[TerminologyProviderWinFormsUI]
public class MyTerminologyProviderWinFormsUI : ITerminologyProviderWinFormsUIWithEdit, ITerminologyProviderWinFormsUIWithCreate
{
    public ITerminologyProvider Create()
    {
        // Adds the capability to create a ITerminologyProvider.
        // Allows the creation of an ITerminologyProvider from the UI.It returns a ITerminologyProvider
        return null;
    }
 
    public bool Edit(IWin32Window owner, ITerminologyProvider terminologyProvider)
    {
        // Adds the capability to edit settings.
        // Used to display a dialog to interactively change any of the terminology provider settings.
        return true;
    }
 
    public ITerminologyProvider[] Browse(IWin32Window owner, ITerminologyProviderCredentialStore credentialStore)
    {
        // Adds the capability to select a ITerminologyProvider.
        // Used to display a dialog to add a new terminology provider.
        return null;
    }
}&lt;/pre&gt;&lt;/p&gt;
&lt;h2 id="Studio2022SR2Howtoupdateplugins-PluginManifest"&gt;Plugin Manifest&lt;/h2&gt;
&lt;p&gt;The manifest file&amp;nbsp;&lt;strong&gt;pluginpackage.manifest.xml&lt;/strong&gt; is located at the root of your project solution.&amp;nbsp; The values of the &lt;strong&gt;RequiredProduct &lt;/strong&gt;should be updated to align with the latest release.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RequiredProduct&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Min version: &lt;em&gt;17.2&lt;/em&gt;. If your plugin has been updated to support these latest changes to the Terminology Provider API, then you should reflect this by setting the minimum supported version of your plugin to &lt;em&gt;17.2&lt;br /&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Max version: &lt;em&gt;17.9&lt;/em&gt;. It is recommended to also set this value, as it will provide the AppStore with sufficient information in correctly identifying plugins that are compatible with the version of Trados Studio that is launched.&lt;/li&gt;
&lt;li&gt;Name:: &lt;em&gt;TradosStudio&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;&lt;pre class="ui-code" data-mode="xml"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;
&amp;lt;PluginPackage xmlns=&amp;quot;http://www.sdl.com/Plugins/PluginPackage/1.0&amp;quot;&amp;gt;
  &amp;lt;PlugInName&amp;gt;My plugin name&amp;lt;/PlugInName&amp;gt;
  &amp;lt;Version&amp;gt;1.1.0.0&amp;lt;/Version&amp;gt;
  &amp;lt;Description&amp;gt;My plugin description&amp;lt;/Description&amp;gt;
  &amp;lt;Author&amp;gt;Trados AppStore Team&amp;lt;/Author&amp;gt;
  &amp;lt;RequiredProduct name=&amp;quot;TradosStudio&amp;quot; minversion=&amp;quot;17.2&amp;quot; maxversion=&amp;quot;17.9&amp;quot; /&amp;gt;
&amp;lt;/PluginPackage&amp;gt;&lt;/pre&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="Studio2022SR2Howtoupdateplugins-KnownIssues"&gt;Known Issues&lt;/h2&gt;
&lt;p&gt;The following are a list of known issues and solutions that you might encounter depending on your settings and configuration.&lt;/p&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-Trados.Community.Toolkit(formallySDL.Community.Toolkit)"&gt;Trados.Community.Toolkit (&lt;em&gt;formally SDL.Community.Toolkit&lt;/em&gt;)&lt;/h3&gt;
&lt;p&gt;A new version of the Trados Community Toolkit, version 4.1.1, has been released to support the latest version of Trados Studio 2022 SR1+.&amp;nbsp; This includes the following assemblies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.Core" rel="nofollow"&gt;Trados.Community.Toolkit.Core&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.LanguagePlatform" rel="nofollow"&gt;Trados.Community.Toolkit.LanguagePlatform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.Integration" rel="nofollow"&gt;Trados.Community.Toolkit.Integration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.FileType" rel="nofollow"&gt;Trados.Community.Toolkit.FileType&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.ProjectAutomation" rel="nofollow"&gt;Trados.Community.Toolkit.ProjectAutomation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-Dependencyversionchanges"&gt;Dependency version changes&lt;/h3&gt;
&lt;p&gt;There following are a list of known dependency version changes that may influence your integration with the latest Trados Studio 2022 APIs; this is typically seen from standalone applications that are running outside of the Trados Studio context.&amp;nbsp; To resolve these references, include the following binding redirects in the configuration file of the project.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="xml"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;startup&amp;gt;
    &amp;lt;supportedRuntime version=&amp;quot;v4.0&amp;quot; sku=&amp;quot;.NETFramework,Version=v4.8&amp;quot; /&amp;gt;
  &amp;lt;/startup&amp;gt;
  &amp;lt;runtime&amp;gt;
    &amp;lt;NetFx40_PInvokeStackResilience enabled=&amp;quot;1&amp;quot; /&amp;gt;
    &amp;lt;legacyCorruptedStateExceptionsPolicy enabled=&amp;quot;true&amp;quot; /&amp;gt;
    &amp;lt;ThrowUnobservedTaskException enabled=&amp;quot;true&amp;quot; /&amp;gt;
    &amp;lt;assemblyBinding xmlns=&amp;quot;urn:schemas-microsoft-com:asm.v1&amp;quot;&amp;gt;
      &amp;lt;dependentAssembly&amp;gt;
        &amp;lt;assemblyIdentity name=&amp;quot;Microsoft.Extensions.DependencyModel&amp;quot; publicKeyToken=&amp;quot;adb9793829ddae60&amp;quot; culture=&amp;quot;neutral&amp;quot; /&amp;gt;
        &amp;lt;bindingRedirect oldVersion=&amp;quot;0.0.0.0-7.0.0.0&amp;quot; newVersion=&amp;quot;7.0.0.0&amp;quot; /&amp;gt;
      &amp;lt;/dependentAssembly&amp;gt;
      &amp;lt;dependentAssembly&amp;gt;
        &amp;lt;assemblyIdentity name=&amp;quot;System.Memory&amp;quot; publicKeyToken=&amp;quot;cc7b13ffcd2ddd51&amp;quot; culture=&amp;quot;neutral&amp;quot; /&amp;gt;
        &amp;lt;bindingRedirect oldVersion=&amp;quot;0.0.0.0-4.0.1.2&amp;quot; newVersion=&amp;quot;4.0.1.2&amp;quot; /&amp;gt;
      &amp;lt;/dependentAssembly&amp;gt;
      &amp;lt;dependentAssembly&amp;gt;
        &amp;lt;assemblyIdentity name=&amp;quot;Microsoft.Data.SqlClient&amp;quot; publicKeyToken=&amp;quot;23ec7fc2d6eaa4a5&amp;quot; culture=&amp;quot;neutral&amp;quot; /&amp;gt;
        &amp;lt;bindingRedirect oldVersion=&amp;quot;0.0.0.0-5.0.0.0&amp;quot; newVersion=&amp;quot;5.0.0.0&amp;quot; /&amp;gt;
      &amp;lt;/dependentAssembly&amp;gt;
    &amp;lt;/assemblyBinding&amp;gt;
  &amp;lt;/runtime&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>How to update plugins to Trados Studio 2022 SR2</title><link>https://community.rws.com/developers-more/trados-portfolio/trados-studio-developers/w/trados-studio-api/6743/how-to-update-plugins-to-trados-studio-2022-sr2/revision/5</link><pubDate>Fri, 10 Nov 2023 14:37:44 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:6b7e147c-62e9-44ac-9849-a5bca64f0282</guid><dc:creator>Patrick Andrew Hartnett</dc:creator><comments>https://community.rws.com/developers-more/trados-portfolio/trados-studio-developers/w/trados-studio-api/6743/how-to-update-plugins-to-trados-studio-2022-sr2#comments</comments><description>Revision 5 posted to Studio Developers WIKI by Patrick Andrew Hartnett on 11/10/2023 2:37:44 PM&lt;br /&gt;
&lt;p&gt;There will be significant changes to the Terminology provider API with the release of Trados Studio SR2.&amp;nbsp; These changes are all geared towards decoupling the Multiterm integration from Trados Studio to promote independent development cycles and reduce the risk of compatibility issues. This means that updates, bug fixes, and new features can be developed and released separately and lead to faster development cycles for each product.&lt;/p&gt;
&lt;p&gt;Unfortunately, this will introduce breaking changes for plugin and project automation integrations with the Terminology provider API. The following are a list of changes and known issues to consider when updating your plugin to be compatible with Trados Studio 2022 SR2&lt;/p&gt;
&lt;h2 id="Studio2022SR2Howtoupdateplugins-TerminologyProviderAPI"&gt;Terminology Provider API&lt;/h2&gt;
&lt;p&gt;Make reference to the &lt;a class="external-link" href="https://developers.rws.com/studio-api-docs/apiconcepts/releasenotes/tradosstudio2022sr2.html" rel="nofollow"&gt;release notes for Trados Studio SR2&lt;/a&gt; when updating your plugin integrations with the Terminology Provider API. It includes all of the API changes that will facilitate better management, customization, and extensibility of terminology providers, providing more flexibility and control for developers and users.&amp;nbsp;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Removed Classes and Interfaces&lt;/strong&gt;: Several classes and interfaces have been removed, such as &lt;em&gt;AbstractTerminologyProvider&lt;/em&gt;, &lt;em&gt;IDefinition&lt;/em&gt;, &lt;em&gt;IDefinitionLanguage&lt;/em&gt;, and others.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Updated Classes&lt;/strong&gt;: Major changes include the &lt;em&gt;Definition &lt;/em&gt;class, &lt;em&gt;Entry&lt;/em&gt;, &lt;em&gt;EntryField&lt;/em&gt;, &lt;em&gt;EntryLanguage&lt;/em&gt;, and others. These updates involve changes in property types, constructors, and interfaces.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TerminologyProviderManager&lt;/strong&gt;: Now implements &lt;em&gt;ITerminologyProviderManager&lt;/em&gt;, offering new methods for managing terminology providers, such as &lt;em&gt;RemoveTerminologyProvider&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ITerminologyProvider Updates&lt;/strong&gt;: The &lt;em&gt;ITerminologyProvider &lt;/em&gt;interface has several new properties and methods for managing active filters, initialization, and more. The type of returned values for methods like &lt;em&gt;GetEntry &lt;/em&gt;and &lt;em&gt;Search&lt;/em&gt;&lt;strong&gt; &lt;/strong&gt;has changed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New Interfaces&lt;/strong&gt;: Several new interfaces have been added, including &lt;em&gt;ITerminologyProviderManager&lt;/em&gt;, &lt;em&gt;ITerminologyProviderWinFormsUIWithCreate&lt;/em&gt;, and &lt;em&gt;ITerminologyProviderWinFormsUIWithEdit&lt;/em&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Note: &lt;/strong&gt;A full integration of these new changes to the Terminology Provider API are available from the &lt;a class="external-link" href="https://github.com/RWS/Sdl-Community/tree/master/IATETerminologyProvider" rel="nofollow"&gt;IATE Terminology Provider&lt;/a&gt; for reference.&lt;/p&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-ITerminologyProvider"&gt;ITerminologyProvider&lt;/h3&gt;
&lt;p&gt;The &lt;em&gt;AbstractTerminologyProvider&lt;/em&gt; is no longer available &amp;amp; in its place you must implement the &lt;em&gt;ITerminologyProvider&lt;/em&gt; interface, which has some new properties &amp;amp; methods such as &lt;em&gt;ActiveFilter&lt;/em&gt; property &amp;amp; associated method &lt;em&gt;GetFilters()&lt;/em&gt; that enable a user to add filters to restrict the results that provider displays when searching a termbase during translation.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:600px;max-width:900px;" alt=" " src="/resized-image/__size/1800x1200/__key/communityserver-wikis-components-files/00-00-00-03-50/pastedimage1699615497862v1.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;public class IATETerminologyProvider : ITerminologyProvider
{
    public FilterDefinition ActiveFilter { get; set; }
 
    public IList&amp;lt;FilterDefinition&amp;gt; GetFilters()
    {
        var filterDefinitions = new List&amp;lt;FilterDefinition&amp;gt;();
        var filterDefinition = new FilterDefinition { ID = 0, Name = &amp;quot;Source contains synonyms&amp;quot; };
        filterDefinitions.Add(filterDefinition);
 
        return filterDefinitions;
    }
}&lt;/pre&gt;&lt;/p&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-Definition"&gt;Definition&lt;/h3&gt;
&lt;p class="auto-cursor-target"&gt;Its important to fully describe the &lt;em&gt;DescriptiveFields &lt;/em&gt;to the &lt;em&gt;Definition&lt;/em&gt; property of the provider to provide sufficient information when integrating with other services, such as the &lt;strong&gt;Terminology Verifier&lt;/strong&gt;.&amp;nbsp; For example: to enable integration with the feature to check for forbidden terms, you should include the &lt;em&gt;DescriptiveField &lt;/em&gt;at the &lt;em&gt;TermLevel, &lt;/em&gt;as shown here (e.g. &lt;em&gt;var statusField&lt;/em&gt;)&lt;/p&gt;
&lt;p class="auto-cursor-target"&gt;&lt;img style="max-height:600px;max-width:900px;" alt=" " src="/resized-image/__size/1800x1200/__key/communityserver-wikis-components-files/00-00-00-03-50/pastedimage1699615545981v2.png" /&gt;&lt;/p&gt;
&lt;p class="auto-cursor-target"&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;public class IATETerminologyProvider : ITerminologyProvider
{
    public Definition Definition =&amp;gt; new Definition(GetDescriptiveFields(), GetDefinitionLanguages());
 
    public IList&amp;lt;DescriptiveField&amp;gt; GetDescriptiveFields()
    {
        var result = new List&amp;lt;DescriptiveField&amp;gt;();
 
        var definitionField = new DescriptiveField
        {
            Label = &amp;quot;Definition&amp;quot;, Level = FieldLevel.EntryLevel, Mandatory = true, Multiple = true,
            Type = FieldType.String
        };
        result.Add(definitionField);
 
        var statusField = new DescriptiveField
        {
            Label = &amp;quot;Status&amp;quot;, Level = FieldLevel.TermLevel, Mandatory = false, Multiple = true,
            Type = FieldType.PickList,
            PickListValues = new[] { &amp;quot;Deprecated&amp;quot;, &amp;quot;Obsolete&amp;quot;, &amp;quot;Admitted&amp;quot;, &amp;quot;Preferred&amp;quot;, &amp;quot;Proposed&amp;quot; }
        };
        result.Add(statusField);
 
        return result;
    }
}&lt;/pre&gt;&lt;/p&gt;
&lt;p class="auto-cursor-target"&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;public IList&amp;lt;DefinitionLanguage&amp;gt; GetDefinitionLanguages()
{
    var result = new List&amp;lt;DefinitionLanguage&amp;gt;();
 
    var currentProject = SdlTradosStudio.Application?.GetController&amp;lt;ProjectsController&amp;gt;()?.CurrentProject;
    if (currentProject == null) return result;
 
    var projectInfo = currentProject.GetProjectInfo();
 
    result.Add(new DefinitionLanguage
    {
        Locale = projectInfo.SourceLanguage.CultureInfo,
        Name = projectInfo.SourceLanguage.DisplayName
    });
 
    result.AddRange(projectInfo.TargetLanguages.Select(language =&amp;gt; new DefinitionLanguage
    {
        Locale = language.CultureInfo,
        Name = language.DisplayName
    }));
 
    return result;
}&lt;/pre&gt;&lt;/p&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-ITerminologyProviderWinFormsUI"&gt;ITerminologyProviderWinFormsUI&lt;/h3&gt;
&lt;p&gt;You will noticed that the property &lt;em&gt;SupportsEditing &lt;/em&gt;&amp;amp; the method &lt;em&gt;Edit(IWin32Window owner, ITerminologyProvider terminologyProvider)&lt;/em&gt; have been removed from the &lt;em&gt;ITerminologyProviderWinFormsUI&lt;/em&gt; interface.&amp;nbsp; If your provider allows a user to edit the provider settings by displaying a settings dialog, then implement the new interface &lt;em&gt;ITerminologyProviderWinFormsUIWithEdit. &lt;/em&gt;Additionally, the new interface&amp;nbsp;&lt;em&gt;ITerminologyProviderWinFormsUIWithCreate&lt;/em&gt; introduces a new extensibility point that will display a context menu item in the &lt;strong&gt;Create &lt;/strong&gt;button from the Terminology Provider Settings in Trados Studio.&amp;nbsp; This is useful for use cases where the creation of the provider needs to be a separate to the edit settings dialogs.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;[TerminologyProviderWinFormsUI]
public class MyTerminologyProviderWinFormsUI : ITerminologyProviderWinFormsUIWithEdit, ITerminologyProviderWinFormsUIWithCreate
{
    public ITerminologyProvider Create()
    {
        // Adds the capability to create a ITerminologyProvider.
        // Allows the creation of an ITerminologyProvider from the UI.It returns a ITerminologyProvider
        return null;
    }
 
    public bool Edit(IWin32Window owner, ITerminologyProvider terminologyProvider)
    {
        // Adds the capability to edit settings.
        // Used to display a dialog to interactively change any of the terminology provider settings.
        return true;
    }
 
    public ITerminologyProvider[] Browse(IWin32Window owner, ITerminologyProviderCredentialStore credentialStore)
    {
        // Adds the capability to select a ITerminologyProvider.
        // Used to display a dialog to add a new terminology provider.
        return null;
    }
}&lt;/pre&gt;&lt;/p&gt;
&lt;h2 id="Studio2022SR2Howtoupdateplugins-PluginManifest"&gt;Plugin Manifest&lt;/h2&gt;
&lt;p&gt;The manifest file&amp;nbsp;&lt;strong&gt;pluginpackage.manifest.xml&lt;/strong&gt; is located at the root of your project solution.&amp;nbsp; The values of the &lt;strong&gt;RequiredProduct &lt;/strong&gt;should be updated to align with the latest release.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RequiredProduct&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Min version: &lt;em&gt;17.2&lt;/em&gt;. If your plugin has been updated to support these latest changes to the Terminology Provider API, then you should reflect this by setting the minimum supported version of your plugin to &lt;em&gt;17.2&lt;br /&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Max version: &lt;em&gt;17.9&lt;/em&gt;. It is recommended to also set this value, as it will provide the AppStore with sufficient information in correctly identifying plugins that are compatible with the version of Trados Studio that is launched.&lt;/li&gt;
&lt;li&gt;Name:: &lt;em&gt;TradosStudio&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;&lt;pre class="ui-code" data-mode="xml"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;
&amp;lt;PluginPackage xmlns=&amp;quot;http://www.sdl.com/Plugins/PluginPackage/1.0&amp;quot;&amp;gt;
  &amp;lt;PlugInName&amp;gt;My plugin name&amp;lt;/PlugInName&amp;gt;
  &amp;lt;Version&amp;gt;1.1.0.0&amp;lt;/Version&amp;gt;
  &amp;lt;Description&amp;gt;My plugin description&amp;lt;/Description&amp;gt;
  &amp;lt;Author&amp;gt;Trados AppStore Team&amp;lt;/Author&amp;gt;
  &amp;lt;RequiredProduct name=&amp;quot;TradosStudio&amp;quot; minversion=&amp;quot;17.2&amp;quot; maxversion=&amp;quot;17.9&amp;quot; /&amp;gt;
&amp;lt;/PluginPackage&amp;gt;&lt;/pre&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="Studio2022SR2Howtoupdateplugins-KnownIssues"&gt;Known Issues&lt;/h2&gt;
&lt;p&gt;The following are a list of known issues and solutions that you might encounter depending on your settings and configuration.&lt;/p&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-Trados.Community.Toolkit(formallySDL.Community.Toolkit)"&gt;Trados.Community.Toolkit (&lt;em&gt;formally SDL.Community.Toolkit&lt;/em&gt;)&lt;/h3&gt;
&lt;p&gt;A new version of the Trados Community Toolkit, version 4.1.1, has been released to support the latest version of Trados Studio 2022 SR1+.&amp;nbsp; This includes the following assemblies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.Core" rel="nofollow"&gt;Trados.Community.Toolkit.Core&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.LanguagePlatform" rel="nofollow"&gt;Trados.Community.Toolkit.LanguagePlatform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.Integration" rel="nofollow"&gt;Trados.Community.Toolkit.Integration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.FileType" rel="nofollow"&gt;Trados.Community.Toolkit.FileType&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.ProjectAutomation" rel="nofollow"&gt;Trados.Community.Toolkit.ProjectAutomation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-Dependencyversionchanges"&gt;Dependency version changes&lt;/h3&gt;
&lt;p&gt;There following are a list of known dependency version changes that may influence your integration with the latest Trados Studio 2022 APIs; this is typically seen from standalone applications that are running outside of the Trados Studio context.&amp;nbsp; To resolve these references, include the following binding redirects in the configuration file of the project.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="xml"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;startup&amp;gt;
    &amp;lt;supportedRuntime version=&amp;quot;v4.0&amp;quot; sku=&amp;quot;.NETFramework,Version=v4.8&amp;quot; /&amp;gt;
  &amp;lt;/startup&amp;gt;
  &amp;lt;runtime&amp;gt;
    &amp;lt;NetFx40_PInvokeStackResilience enabled=&amp;quot;1&amp;quot; /&amp;gt;
    &amp;lt;legacyCorruptedStateExceptionsPolicy enabled=&amp;quot;true&amp;quot; /&amp;gt;
    &amp;lt;ThrowUnobservedTaskException enabled=&amp;quot;true&amp;quot; /&amp;gt;
    &amp;lt;assemblyBinding xmlns=&amp;quot;urn:schemas-microsoft-com:asm.v1&amp;quot;&amp;gt;
      &amp;lt;dependentAssembly&amp;gt;
        &amp;lt;assemblyIdentity name=&amp;quot;Microsoft.Extensions.DependencyModel&amp;quot; publicKeyToken=&amp;quot;adb9793829ddae60&amp;quot; culture=&amp;quot;neutral&amp;quot; /&amp;gt;
        &amp;lt;bindingRedirect oldVersion=&amp;quot;0.0.0.0-6.0.0.0&amp;quot; newVersion=&amp;quot;6.0.0.0&amp;quot; /&amp;gt;
      &amp;lt;/dependentAssembly&amp;gt;
      &amp;lt;dependentAssembly&amp;gt;
        &amp;lt;assemblyIdentity name=&amp;quot;System.Memory&amp;quot; publicKeyToken=&amp;quot;cc7b13ffcd2ddd51&amp;quot; culture=&amp;quot;neutral&amp;quot; /&amp;gt;
        &amp;lt;bindingRedirect oldVersion=&amp;quot;0.0.0.0-4.0.1.2&amp;quot; newVersion=&amp;quot;4.0.1.2&amp;quot; /&amp;gt;
      &amp;lt;/dependentAssembly&amp;gt;
      &amp;lt;dependentAssembly&amp;gt;
        &amp;lt;assemblyIdentity name=&amp;quot;Microsoft.Data.SqlClient&amp;quot; publicKeyToken=&amp;quot;23ec7fc2d6eaa4a5&amp;quot; culture=&amp;quot;neutral&amp;quot; /&amp;gt;
        &amp;lt;bindingRedirect oldVersion=&amp;quot;0.0.0.0-5.0.0.0&amp;quot; newVersion=&amp;quot;5.0.0.0&amp;quot; /&amp;gt;
      &amp;lt;/dependentAssembly&amp;gt;
    &amp;lt;/assemblyBinding&amp;gt;
  &amp;lt;/runtime&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>How to update plugins to Trados Studio 2022 SR2</title><link>https://community.rws.com/developers-more/trados-portfolio/trados-studio-developers/w/trados-studio-api/6743/how-to-update-plugins-to-trados-studio-2022-sr2/revision/4</link><pubDate>Fri, 10 Nov 2023 13:49:50 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:6b7e147c-62e9-44ac-9849-a5bca64f0282</guid><dc:creator>Patrick Andrew Hartnett</dc:creator><comments>https://community.rws.com/developers-more/trados-portfolio/trados-studio-developers/w/trados-studio-api/6743/how-to-update-plugins-to-trados-studio-2022-sr2#comments</comments><description>Revision 4 posted to Studio Developers WIKI by Patrick Andrew Hartnett on 11/10/2023 1:49:50 PM&lt;br /&gt;
&lt;p&gt;There will be significant changes to the Terminology provider API with the release of Trados Studio SR2.&amp;nbsp; These changes are all geared towards decoupling the Multiterm integration from Trados Studio to promote independent development cycles and reduce the risk of compatibility issues. This means that updates, bug fixes, and new features can be developed and released separately and lead to faster development cycles for each product.&lt;/p&gt;
&lt;p&gt;Unfortunately, this will introduce breaking changes for plugin and project automation integrations with the Terminology provider API. The following are a list of changes and known issues to consider when updating your plugin to be compatible with Trados Studio 2022 SR2&lt;/p&gt;
&lt;h2 id="Studio2022SR2Howtoupdateplugins-TerminologyProviderAPI"&gt;Terminology Provider API&lt;/h2&gt;
&lt;p&gt;Make reference to the &lt;a class="external-link" href="https://developers.rws.com/studio-api-docs/apiconcepts/releasenotes/tradosstudio2022sr2.html" rel="nofollow"&gt;release notes for Trados Studio SR2&lt;/a&gt; when updating your plugin integrations with the Terminology Provider API. It includes all of the API changes that will facilitate better management, customization, and extensibility of terminology providers, providing more flexibility and control for developers and users.&amp;nbsp;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Removed Classes and Interfaces&lt;/strong&gt;: Several classes and interfaces have been removed, such as &lt;em&gt;AbstractTerminologyProvider&lt;/em&gt;, &lt;em&gt;IDefinition&lt;/em&gt;, &lt;em&gt;IDefinitionLanguage&lt;/em&gt;, and others.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Updated Classes&lt;/strong&gt;: Major changes include the &lt;em&gt;Definition &lt;/em&gt;class, &lt;em&gt;Entry&lt;/em&gt;, &lt;em&gt;EntryField&lt;/em&gt;, &lt;em&gt;EntryLanguage&lt;/em&gt;, and others. These updates involve changes in property types, constructors, and interfaces.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TerminologyProviderManager&lt;/strong&gt;: Now implements &lt;em&gt;ITerminologyProviderManager&lt;/em&gt;, offering new methods for managing terminology providers, such as &lt;em&gt;RemoveTerminologyProvider&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ITerminologyProvider Updates&lt;/strong&gt;: The &lt;em&gt;ITerminologyProvider &lt;/em&gt;interface has several new properties and methods for managing active filters, initialization, and more. The type of returned values for methods like &lt;em&gt;GetEntry &lt;/em&gt;and &lt;em&gt;Search&lt;/em&gt;&lt;strong&gt; &lt;/strong&gt;has changed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New Interfaces&lt;/strong&gt;: Several new interfaces have been added, including &lt;em&gt;ITerminologyProviderManager&lt;/em&gt;, &lt;em&gt;ITerminologyProviderWinFormsUIWithCreate&lt;/em&gt;, and &lt;em&gt;ITerminologyProviderWinFormsUIWithEdit&lt;/em&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Note: &lt;/strong&gt;A full integration of these new changes to the Terminology Provider API are available from the &lt;a class="external-link" href="https://github.com/RWS/Sdl-Community/tree/master/IATETerminologyProvider" rel="nofollow"&gt;IATE Terminology Provider&lt;/a&gt; for reference.&lt;/p&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-ITerminologyProvider"&gt;ITerminologyProvider&lt;/h3&gt;
&lt;p&gt;The &lt;em&gt;AbstractTerminologyProvider&lt;/em&gt; is no longer available &amp;amp; in its place you must implement the &lt;em&gt;ITerminologyProvider&lt;/em&gt; interface, which has some new properties &amp;amp; methods such as &lt;em&gt;ActiveFilter { get; set; }&lt;/em&gt; &amp;amp; associated method &lt;em&gt;GetFilters()&lt;/em&gt; that enable a user to add filters to restrict the results that provider displays when searching a termbase during translation.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:600px;max-width:900px;" alt=" " src="/resized-image/__size/1800x1200/__key/communityserver-wikis-components-files/00-00-00-03-50/pastedimage1699615497862v1.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;public class IATETerminologyProvider : ITerminologyProvider
{
    public FilterDefinition ActiveFilter { get; set; }
 
    public IList&amp;lt;FilterDefinition&amp;gt; GetFilters()
    {
        var filterDefinitions = new List&amp;lt;FilterDefinition&amp;gt;();
        var filterDefinition = new FilterDefinition { ID = 0, Name = &amp;quot;Source contains synonyms&amp;quot; };
        filterDefinitions.Add(filterDefinition);
 
        return filterDefinitions;
    }
}&lt;/pre&gt;&lt;/p&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-Definition"&gt;Definition&lt;/h3&gt;
&lt;p class="auto-cursor-target"&gt;Its important to fully describe the &lt;em&gt;DescriptiveFields &lt;/em&gt;to the &lt;em&gt;Definition&lt;/em&gt; property of the provider to provide sufficient information when integrating with other services, such as the &lt;strong&gt;Terminology Verifier&lt;/strong&gt;.&amp;nbsp; For example: to enable integration with the feature to check for forbidden terms, you should include the &lt;em&gt;DescriptiveField &lt;/em&gt;at the &lt;em&gt;TermLevel, &lt;/em&gt;as shown here (e.g. &lt;em&gt;var statusField&lt;/em&gt;)&lt;/p&gt;
&lt;p class="auto-cursor-target"&gt;&lt;img style="max-height:600px;max-width:900px;" alt=" " src="/resized-image/__size/1800x1200/__key/communityserver-wikis-components-files/00-00-00-03-50/pastedimage1699615545981v2.png" /&gt;&lt;/p&gt;
&lt;p class="auto-cursor-target"&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;public class IATETerminologyProvider : ITerminologyProvider
{
    public Definition Definition =&amp;gt; new Definition(GetDescriptiveFields(), GetDefinitionLanguages());
 
    public IList&amp;lt;DescriptiveField&amp;gt; GetDescriptiveFields()
    {
        var result = new List&amp;lt;DescriptiveField&amp;gt;();
 
        var definitionField = new DescriptiveField
        {
            Label = &amp;quot;Definition&amp;quot;, Level = FieldLevel.EntryLevel, Mandatory = true, Multiple = true,
            Type = FieldType.String
        };
        result.Add(definitionField);
 
        var statusField = new DescriptiveField
        {
            Label = &amp;quot;Status&amp;quot;, Level = FieldLevel.TermLevel, Mandatory = false, Multiple = true,
            Type = FieldType.PickList,
            PickListValues = new[] { &amp;quot;Deprecated&amp;quot;, &amp;quot;Obsolete&amp;quot;, &amp;quot;Admitted&amp;quot;, &amp;quot;Preferred&amp;quot;, &amp;quot;Proposed&amp;quot; }
        };
        result.Add(statusField);
 
        return result;
    }
}&lt;/pre&gt;&lt;/p&gt;
&lt;p class="auto-cursor-target"&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;public IList&amp;lt;DefinitionLanguage&amp;gt; GetDefinitionLanguages()
{
    var result = new List&amp;lt;DefinitionLanguage&amp;gt;();
 
    var currentProject = SdlTradosStudio.Application?.GetController&amp;lt;ProjectsController&amp;gt;()?.CurrentProject;
    if (currentProject == null) return result;
 
    var projectInfo = currentProject.GetProjectInfo();
 
    result.Add(new DefinitionLanguage
    {
        Locale = projectInfo.SourceLanguage.CultureInfo,
        Name = projectInfo.SourceLanguage.DisplayName
    });
 
    result.AddRange(projectInfo.TargetLanguages.Select(language =&amp;gt; new DefinitionLanguage
    {
        Locale = language.CultureInfo,
        Name = language.DisplayName
    }));
 
    return result;
}&lt;/pre&gt;&lt;/p&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-ITerminologyProviderWinFormsUI"&gt;ITerminologyProviderWinFormsUI&lt;/h3&gt;
&lt;p&gt;You will noticed that the property &lt;em&gt;SupportsEditing &lt;/em&gt;&amp;amp; the method &lt;em&gt;Edit(IWin32Window owner, ITerminologyProvider terminologyProvider)&lt;/em&gt; have been removed from the &lt;em&gt;ITerminologyProviderWinFormsUI&lt;/em&gt; interface.&amp;nbsp; If your provider allows a user to edit the provider settings by displaying a settings dialog, then implement the new interface &lt;em&gt;ITerminologyProviderWinFormsUIWithEdit. &lt;/em&gt;Additionally, the new interface&amp;nbsp;&lt;em&gt;ITerminologyProviderWinFormsUIWithCreate&lt;/em&gt; introduces a new extensibility point that will display a context menu item in the &lt;strong&gt;Create &lt;/strong&gt;button from the Terminology Provider Settings in Trados Studio.&amp;nbsp; This is useful for use cases where the creation of the provider needs to be a separate to the edit settings dialogs.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;[TerminologyProviderWinFormsUI]
public class MyTerminologyProviderWinFormsUI : ITerminologyProviderWinFormsUIWithEdit, ITerminologyProviderWinFormsUIWithCreate
{
    public ITerminologyProvider Create()
    {
        // Adds the capability to create a ITerminologyProvider.
        // Allows the creation of an ITerminologyProvider from the UI.It returns a ITerminologyProvider
        return null;
    }
 
    public bool Edit(IWin32Window owner, ITerminologyProvider terminologyProvider)
    {
        // Adds the capability to edit settings.
        // Used to display a dialog to interactively change any of the terminology provider settings.
        return true;
    }
 
    public ITerminologyProvider[] Browse(IWin32Window owner, ITerminologyProviderCredentialStore credentialStore)
    {
        // Adds the capability to select a ITerminologyProvider.
        // Used to display a dialog to add a new terminology provider.
        return null;
    }
}&lt;/pre&gt;&lt;/p&gt;
&lt;h2 id="Studio2022SR2Howtoupdateplugins-PluginManifest"&gt;Plugin Manifest&lt;/h2&gt;
&lt;p&gt;The manifest file&amp;nbsp;&lt;strong&gt;pluginpackage.manifest.xml&lt;/strong&gt; is located at the root of your project solution.&amp;nbsp; The values of the &lt;strong&gt;RequiredProduct &lt;/strong&gt;should be updated to align with the latest release.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RequiredProduct&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Min version: &lt;em&gt;17.2&lt;/em&gt;. If your plugin has been updated to support these latest changes to the Terminology Provider API, then you should reflect this by setting the minimum supported version of your plugin to &lt;em&gt;17.2&lt;br /&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Max version: &lt;em&gt;17.9&lt;/em&gt;. It is recommended to also set this value, as it will provide the AppStore with sufficient information in correctly identifying plugins that are compatible with the version of Trados Studio that is launched.&lt;/li&gt;
&lt;li&gt;Name:: &lt;em&gt;TradosStudio&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;&lt;pre class="ui-code" data-mode="xml"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;
&amp;lt;PluginPackage xmlns=&amp;quot;http://www.sdl.com/Plugins/PluginPackage/1.0&amp;quot;&amp;gt;
  &amp;lt;PlugInName&amp;gt;My plugin name&amp;lt;/PlugInName&amp;gt;
  &amp;lt;Version&amp;gt;1.1.0.0&amp;lt;/Version&amp;gt;
  &amp;lt;Description&amp;gt;My plugin description&amp;lt;/Description&amp;gt;
  &amp;lt;Author&amp;gt;Trados AppStore Team&amp;lt;/Author&amp;gt;
  &amp;lt;RequiredProduct name=&amp;quot;TradosStudio&amp;quot; minversion=&amp;quot;17.2&amp;quot; maxversion=&amp;quot;17.9&amp;quot; /&amp;gt;
&amp;lt;/PluginPackage&amp;gt;&lt;/pre&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="Studio2022SR2Howtoupdateplugins-KnownIssues"&gt;Known Issues&lt;/h2&gt;
&lt;p&gt;The following are a list of known issues and solutions that you might encounter depending on your settings and configuration.&lt;/p&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-Trados.Community.Toolkit(formallySDL.Community.Toolkit)"&gt;Trados.Community.Toolkit (&lt;em&gt;formally SDL.Community.Toolkit&lt;/em&gt;)&lt;/h3&gt;
&lt;p&gt;A new version of the Trados Community Toolkit, version 4.1.1, has been released to support the latest version of Trados Studio 2022 SR1+.&amp;nbsp; This includes the following assemblies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.Core" rel="nofollow"&gt;Trados.Community.Toolkit.Core&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.LanguagePlatform" rel="nofollow"&gt;Trados.Community.Toolkit.LanguagePlatform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.Integration" rel="nofollow"&gt;Trados.Community.Toolkit.Integration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.FileType" rel="nofollow"&gt;Trados.Community.Toolkit.FileType&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.ProjectAutomation" rel="nofollow"&gt;Trados.Community.Toolkit.ProjectAutomation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-Dependencyversionchanges"&gt;Dependency version changes&lt;/h3&gt;
&lt;p&gt;There following are a list of known dependency version changes that may influence your integration with the latest Trados Studio 2022 APIs; this is typically seen from standalone applications that are running outside of the Trados Studio context.&amp;nbsp; To resolve these references, include the following binding redirects in the configuration file of the project.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="xml"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;startup&amp;gt;
    &amp;lt;supportedRuntime version=&amp;quot;v4.0&amp;quot; sku=&amp;quot;.NETFramework,Version=v4.8&amp;quot; /&amp;gt;
  &amp;lt;/startup&amp;gt;
  &amp;lt;runtime&amp;gt;
    &amp;lt;NetFx40_PInvokeStackResilience enabled=&amp;quot;1&amp;quot; /&amp;gt;
    &amp;lt;legacyCorruptedStateExceptionsPolicy enabled=&amp;quot;true&amp;quot; /&amp;gt;
    &amp;lt;ThrowUnobservedTaskException enabled=&amp;quot;true&amp;quot; /&amp;gt;
    &amp;lt;assemblyBinding xmlns=&amp;quot;urn:schemas-microsoft-com:asm.v1&amp;quot;&amp;gt;
      &amp;lt;dependentAssembly&amp;gt;
        &amp;lt;assemblyIdentity name=&amp;quot;Microsoft.Extensions.DependencyModel&amp;quot; publicKeyToken=&amp;quot;adb9793829ddae60&amp;quot; culture=&amp;quot;neutral&amp;quot; /&amp;gt;
        &amp;lt;bindingRedirect oldVersion=&amp;quot;0.0.0.0-6.0.0.0&amp;quot; newVersion=&amp;quot;6.0.0.0&amp;quot; /&amp;gt;
      &amp;lt;/dependentAssembly&amp;gt;
      &amp;lt;dependentAssembly&amp;gt;
        &amp;lt;assemblyIdentity name=&amp;quot;System.Memory&amp;quot; publicKeyToken=&amp;quot;cc7b13ffcd2ddd51&amp;quot; culture=&amp;quot;neutral&amp;quot; /&amp;gt;
        &amp;lt;bindingRedirect oldVersion=&amp;quot;0.0.0.0-4.0.1.2&amp;quot; newVersion=&amp;quot;4.0.1.2&amp;quot; /&amp;gt;
      &amp;lt;/dependentAssembly&amp;gt;
      &amp;lt;dependentAssembly&amp;gt;
        &amp;lt;assemblyIdentity name=&amp;quot;Microsoft.Data.SqlClient&amp;quot; publicKeyToken=&amp;quot;23ec7fc2d6eaa4a5&amp;quot; culture=&amp;quot;neutral&amp;quot; /&amp;gt;
        &amp;lt;bindingRedirect oldVersion=&amp;quot;0.0.0.0-5.0.0.0&amp;quot; newVersion=&amp;quot;5.0.0.0&amp;quot; /&amp;gt;
      &amp;lt;/dependentAssembly&amp;gt;
    &amp;lt;/assemblyBinding&amp;gt;
  &amp;lt;/runtime&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>How to update plugins to Trados Studio 2022 SR2</title><link>https://community.rws.com/developers-more/trados-portfolio/trados-studio-developers/w/trados-studio-api/6743/how-to-update-plugins-to-trados-studio-2022-sr2/revision/3</link><pubDate>Fri, 10 Nov 2023 11:30:57 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:6b7e147c-62e9-44ac-9849-a5bca64f0282</guid><dc:creator>Patrick Andrew Hartnett</dc:creator><comments>https://community.rws.com/developers-more/trados-portfolio/trados-studio-developers/w/trados-studio-api/6743/how-to-update-plugins-to-trados-studio-2022-sr2#comments</comments><description>Revision 3 posted to Studio Developers WIKI by Patrick Andrew Hartnett on 11/10/2023 11:30:57 AM&lt;br /&gt;
&lt;p&gt;There will be significant changes to the Terminology provider API with the release of Trados Studio SR2.&amp;nbsp; These changes are all geared towards decoupling the Multiterm integration from Trados Studio to promote independent development cycles and reduce the risk of compatibility issues. This means that updates, bug fixes, and new features can be developed and released separately and lead to faster development cycles for each product.&lt;/p&gt;
&lt;p&gt;Unfortunately, this will introduce breaking changes for plugin and project automation integrations with the Terminology provider API. The following are a list of changes and known issues to consider when updating your plugin to be compatible with Trados Studio 2022 SR2&lt;/p&gt;
&lt;h2 id="Studio2022SR2Howtoupdateplugins-TerminologyProviderAPI"&gt;Terminology Provider API&lt;/h2&gt;
&lt;p&gt;Make reference to the &lt;a class="external-link" href="https://developers.rws.com/studio-api-docs/apiconcepts/releasenotes/tradosstudio2022sr2.html" rel="nofollow"&gt;release notes for Trados Studio SR2&lt;/a&gt; when updating your plugin integrations with the Terminology Provider API. It includes all of the API changes that will facilitate better management, customization, and extensibility of terminology providers, providing more flexibility and control for developers and users.&amp;nbsp;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Removed Classes and Interfaces&lt;/strong&gt;: Several classes and interfaces have been removed, such as &lt;em&gt;AbstractTerminologyProvider&lt;/em&gt;, &lt;em&gt;IDefinition&lt;/em&gt;, &lt;em&gt;IDefinitionLanguage&lt;/em&gt;, and others.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Updated Classes&lt;/strong&gt;: Major changes include the &lt;em&gt;Definition &lt;/em&gt;class, &lt;em&gt;Entry&lt;/em&gt;, &lt;em&gt;EntryField&lt;/em&gt;, &lt;em&gt;EntryLanguage&lt;/em&gt;, and others. These updates involve changes in property types, constructors, and interfaces.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TerminologyProviderManager&lt;/strong&gt;: Now implements &lt;em&gt;ITerminologyProviderManager&lt;/em&gt;, offering new methods for managing terminology providers, such as &lt;em&gt;RemoveTerminologyProvider&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ITerminologyProvider Updates&lt;/strong&gt;: The &lt;em&gt;ITerminologyProvider &lt;/em&gt;interface has several new properties and methods for managing active filters, initialization, and more. The type of returned values for methods like &lt;em&gt;GetEntry &lt;/em&gt;and &lt;em&gt;Search&lt;/em&gt;&lt;strong&gt; &lt;/strong&gt;has changed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New Interfaces&lt;/strong&gt;: Several new interfaces have been added, including &lt;em&gt;ITerminologyProviderManager&lt;/em&gt;, &lt;em&gt;ITerminologyProviderWinFormsUIWithCreate&lt;/em&gt;, and &lt;em&gt;ITerminologyProviderWinFormsUIWithEdit&lt;/em&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Note: &lt;/strong&gt;A full integration of these new changes to the Terminology Provider API are available from the &lt;a class="external-link" href="https://github.com/RWS/Sdl-Community/tree/master/IATETerminologyProvider" rel="nofollow"&gt;IATE Terminology Provider&lt;/a&gt; for reference.&lt;/p&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-ITerminologyProvider"&gt;ITerminologyProvider&lt;/h3&gt;
&lt;p&gt;The &lt;em&gt;AbstractTerminologyProvider&lt;/em&gt; is no longer available &amp;amp; in its place you must implement the &lt;em&gt;ITerminologyProvider&lt;/em&gt; interface, which has some new properties &amp;amp; methods such as &lt;em&gt;ActiveFilter { get; set; }&lt;/em&gt; &amp;amp; associated method &lt;em&gt;GetFilters()&lt;/em&gt; that enable a user to add filters to restrict the results that provider displays when searching a termbase during translation.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:600px;max-width:900px;" alt=" " src="/resized-image/__size/1800x1200/__key/communityserver-wikis-components-files/00-00-00-03-50/pastedimage1699615497862v1.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;public class IATETerminologyProvider : ITerminologyProvider
{
    public FilterDefinition ActiveFilter { get; set; }
 
    public IList&amp;lt;FilterDefinition&amp;gt; GetFilters()
    {
        var filterDefinitions = new List&amp;lt;FilterDefinition&amp;gt;();
        var filterDefinition = new FilterDefinition { ID = 0, Name = &amp;quot;Source contains synonyms&amp;quot; };
        filterDefinitions.Add(filterDefinition);
 
        return filterDefinitions;
    }
}&lt;/pre&gt;&lt;/p&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-Definition"&gt;Definition&lt;/h3&gt;
&lt;p class="auto-cursor-target"&gt;Its important to fully describe the &lt;em&gt;DescriptiveFields &lt;/em&gt;to the &lt;em&gt;Definition&lt;/em&gt; property of the provider to provide sufficient information when integrating with other services, such as the &lt;strong&gt;Terminology Verifier&lt;/strong&gt;.&amp;nbsp; For example: to enable integration with the feature to check for forbidden terms, remember to include the &lt;em&gt;DescriptiveField &lt;/em&gt;at the &lt;em&gt;TermLevel &lt;/em&gt;as shown here (e.g. var statusField)&lt;/p&gt;
&lt;p class="auto-cursor-target"&gt;&lt;img style="max-height:600px;max-width:900px;" alt=" " src="/resized-image/__size/1800x1200/__key/communityserver-wikis-components-files/00-00-00-03-50/pastedimage1699615545981v2.png" /&gt;&lt;/p&gt;
&lt;p class="auto-cursor-target"&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;public class IATETerminologyProvider : ITerminologyProvider
{
    public Definition Definition =&amp;gt; new Definition(GetDescriptiveFields(), GetDefinitionLanguages());
 
    public IList&amp;lt;DescriptiveField&amp;gt; GetDescriptiveFields()
    {
        var result = new List&amp;lt;DescriptiveField&amp;gt;();
 
        var definitionField = new DescriptiveField
        {
            Label = &amp;quot;Definition&amp;quot;, Level = FieldLevel.EntryLevel, Mandatory = true, Multiple = true,
            Type = FieldType.String
        };
        result.Add(definitionField);
 
        var statusField = new DescriptiveField
        {
            Label = &amp;quot;Status&amp;quot;, Level = FieldLevel.TermLevel, Mandatory = false, Multiple = true,
            Type = FieldType.PickList,
            PickListValues = new[] { &amp;quot;Deprecated&amp;quot;, &amp;quot;Obsolete&amp;quot;, &amp;quot;Admitted&amp;quot;, &amp;quot;Preferred&amp;quot;, &amp;quot;Proposed&amp;quot; }
        };
        result.Add(statusField);
 
        return result;
    }
}&lt;/pre&gt;&lt;/p&gt;
&lt;p class="auto-cursor-target"&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;public IList&amp;lt;DefinitionLanguage&amp;gt; GetDefinitionLanguages()
{
    var result = new List&amp;lt;DefinitionLanguage&amp;gt;();
 
    var currentProject = SdlTradosStudio.Application?.GetController&amp;lt;ProjectsController&amp;gt;()?.CurrentProject;
    if (currentProject == null) return result;
 
    var projectInfo = currentProject.GetProjectInfo();
 
    result.Add(new DefinitionLanguage
    {
        Locale = projectInfo.SourceLanguage.CultureInfo,
        Name = projectInfo.SourceLanguage.DisplayName
    });
 
    result.AddRange(projectInfo.TargetLanguages.Select(language =&amp;gt; new DefinitionLanguage
    {
        Locale = language.CultureInfo,
        Name = language.DisplayName
    }));
 
    return result;
}&lt;/pre&gt;&lt;/p&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-ITerminologyProviderWinFormsUI"&gt;ITerminologyProviderWinFormsUI&lt;/h3&gt;
&lt;p&gt;You will noticed that the property &lt;em&gt;SupportsEditing &lt;/em&gt;&amp;amp; the method &lt;em&gt;Edit(IWin32Window owner, ITerminologyProvider terminologyProvider)&lt;/em&gt; have been removed from the &lt;em&gt;ITerminologyProviderWinFormsUI&lt;/em&gt; interface.&amp;nbsp; If your provider allows a user to edit the provider settings by displaying a settings dialog, then implement the new interface &lt;em&gt;ITerminologyProviderWinFormsUIWithEdit. &lt;/em&gt;Additionally, the new interface&amp;nbsp;&lt;em&gt;ITerminologyProviderWinFormsUIWithCreate&lt;/em&gt; introduces a new extensibility point that will display a context menu item in the &lt;strong&gt;Create &lt;/strong&gt;button from the Terminology Provider Settings in Trados Studio.&amp;nbsp; This is useful for use cases where the creation of the provider needs to be a separate to the edit settings dialogs.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;[TerminologyProviderWinFormsUI]
public class MyTerminologyProviderWinFormsUI : ITerminologyProviderWinFormsUIWithEdit, ITerminologyProviderWinFormsUIWithCreate
{
    public ITerminologyProvider Create()
    {
        // Adds the capability to create a ITerminologyProvider.
        // Allows the creation of an ITerminologyProvider from the UI.It returns a ITerminologyProvider
        return null;
    }
 
    public bool Edit(IWin32Window owner, ITerminologyProvider terminologyProvider)
    {
        // Adds the capability to edit settings.
        // Used to display a dialog to interactively change any of the terminology provider settings.
        return true;
    }
 
    public ITerminologyProvider[] Browse(IWin32Window owner, ITerminologyProviderCredentialStore credentialStore)
    {
        // Adds the capability to select a ITerminologyProvider.
        // Used to display a dialog to add a new terminology provider.
        return null;
    }
}&lt;/pre&gt;&lt;/p&gt;
&lt;h2 id="Studio2022SR2Howtoupdateplugins-PluginManifest"&gt;Plugin Manifest&lt;/h2&gt;
&lt;p&gt;The manifest file&amp;nbsp;&lt;strong&gt;pluginpackage.manifest.xml&lt;/strong&gt; is located at the root of your project solution.&amp;nbsp; The values of the &lt;strong&gt;RequiredProduct &lt;/strong&gt;should be updated to align with the latest release.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RequiredProduct&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Min version: &lt;em&gt;17.2&lt;/em&gt;. If your plugin has been updated to support these latest changes to the Terminology Provider API, then you should reflect this by setting the minimum supported version of your plugin to &lt;em&gt;17.2&lt;br /&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Max version: &lt;em&gt;17.9&lt;/em&gt;. It is recommended to also set this value, as it will provide the AppStore with sufficient information in correctly identifying plugins that are compatible with the version of Trados Studio that is launched.&lt;/li&gt;
&lt;li&gt;Name:: &lt;em&gt;TradosStudio&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;&lt;pre class="ui-code" data-mode="xml"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;
&amp;lt;PluginPackage xmlns=&amp;quot;http://www.sdl.com/Plugins/PluginPackage/1.0&amp;quot;&amp;gt;
  &amp;lt;PlugInName&amp;gt;My plugin name&amp;lt;/PlugInName&amp;gt;
  &amp;lt;Version&amp;gt;1.1.0.0&amp;lt;/Version&amp;gt;
  &amp;lt;Description&amp;gt;My plugin description&amp;lt;/Description&amp;gt;
  &amp;lt;Author&amp;gt;Trados AppStore Team&amp;lt;/Author&amp;gt;
  &amp;lt;RequiredProduct name=&amp;quot;TradosStudio&amp;quot; minversion=&amp;quot;17.2&amp;quot; maxversion=&amp;quot;17.9&amp;quot; /&amp;gt;
&amp;lt;/PluginPackage&amp;gt;&lt;/pre&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="Studio2022SR2Howtoupdateplugins-KnownIssues"&gt;Known Issues&lt;/h2&gt;
&lt;p&gt;The following are a list of known issues and solutions that you might encounter depending on your settings and configuration.&lt;/p&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-Trados.Community.Toolkit(formallySDL.Community.Toolkit)"&gt;Trados.Community.Toolkit (&lt;em&gt;formally SDL.Community.Toolkit&lt;/em&gt;)&lt;/h3&gt;
&lt;p&gt;A new version of the Trados Community Toolkit, version 4.1.1, has been released to support the latest version of Trados Studio 2022 SR1+.&amp;nbsp; This includes the following assemblies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.Core" rel="nofollow"&gt;Trados.Community.Toolkit.Core&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.LanguagePlatform" rel="nofollow"&gt;Trados.Community.Toolkit.LanguagePlatform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.Integration" rel="nofollow"&gt;Trados.Community.Toolkit.Integration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.FileType" rel="nofollow"&gt;Trados.Community.Toolkit.FileType&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.ProjectAutomation" rel="nofollow"&gt;Trados.Community.Toolkit.ProjectAutomation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-Dependencyversionchanges"&gt;Dependency version changes&lt;/h3&gt;
&lt;p&gt;There following are a list of known dependency version changes that may influence your integration with the latest Trados Studio 2022 APIs; this is typically seen from standalone applications that are running outside of the Trados Studio context.&amp;nbsp; To resolve these references, include the following binding redirects in the configuration file of the project.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="xml"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;startup&amp;gt;
    &amp;lt;supportedRuntime version=&amp;quot;v4.0&amp;quot; sku=&amp;quot;.NETFramework,Version=v4.8&amp;quot; /&amp;gt;
  &amp;lt;/startup&amp;gt;
  &amp;lt;runtime&amp;gt;
    &amp;lt;NetFx40_PInvokeStackResilience enabled=&amp;quot;1&amp;quot; /&amp;gt;
    &amp;lt;legacyCorruptedStateExceptionsPolicy enabled=&amp;quot;true&amp;quot; /&amp;gt;
    &amp;lt;ThrowUnobservedTaskException enabled=&amp;quot;true&amp;quot; /&amp;gt;
    &amp;lt;assemblyBinding xmlns=&amp;quot;urn:schemas-microsoft-com:asm.v1&amp;quot;&amp;gt;
      &amp;lt;dependentAssembly&amp;gt;
        &amp;lt;assemblyIdentity name=&amp;quot;Microsoft.Extensions.DependencyModel&amp;quot; publicKeyToken=&amp;quot;adb9793829ddae60&amp;quot; culture=&amp;quot;neutral&amp;quot; /&amp;gt;
        &amp;lt;bindingRedirect oldVersion=&amp;quot;0.0.0.0-6.0.0.0&amp;quot; newVersion=&amp;quot;6.0.0.0&amp;quot; /&amp;gt;
      &amp;lt;/dependentAssembly&amp;gt;
      &amp;lt;dependentAssembly&amp;gt;
        &amp;lt;assemblyIdentity name=&amp;quot;System.Memory&amp;quot; publicKeyToken=&amp;quot;cc7b13ffcd2ddd51&amp;quot; culture=&amp;quot;neutral&amp;quot; /&amp;gt;
        &amp;lt;bindingRedirect oldVersion=&amp;quot;0.0.0.0-4.0.1.2&amp;quot; newVersion=&amp;quot;4.0.1.2&amp;quot; /&amp;gt;
      &amp;lt;/dependentAssembly&amp;gt;
      &amp;lt;dependentAssembly&amp;gt;
        &amp;lt;assemblyIdentity name=&amp;quot;Microsoft.Data.SqlClient&amp;quot; publicKeyToken=&amp;quot;23ec7fc2d6eaa4a5&amp;quot; culture=&amp;quot;neutral&amp;quot; /&amp;gt;
        &amp;lt;bindingRedirect oldVersion=&amp;quot;0.0.0.0-5.0.0.0&amp;quot; newVersion=&amp;quot;5.0.0.0&amp;quot; /&amp;gt;
      &amp;lt;/dependentAssembly&amp;gt;
    &amp;lt;/assemblyBinding&amp;gt;
  &amp;lt;/runtime&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>How to update plugins to Trados Studio 2022 SR2</title><link>https://community.rws.com/developers-more/trados-portfolio/trados-studio-developers/w/trados-studio-api/6743/how-to-update-plugins-to-trados-studio-2022-sr2/revision/2</link><pubDate>Fri, 10 Nov 2023 11:29:54 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:6b7e147c-62e9-44ac-9849-a5bca64f0282</guid><dc:creator>Patrick Andrew Hartnett</dc:creator><comments>https://community.rws.com/developers-more/trados-portfolio/trados-studio-developers/w/trados-studio-api/6743/how-to-update-plugins-to-trados-studio-2022-sr2#comments</comments><description>Revision 2 posted to Studio Developers WIKI by Patrick Andrew Hartnett on 11/10/2023 11:29:54 AM&lt;br /&gt;
&lt;p&gt;There will be significant changes to the Terminology provider API with the release of Trados Studio SR2.&amp;nbsp; These changes are all geared towards decoupling the Multiterm integration from Trados Studio to promote independent development cycles and reduce the risk of compatibility issues. This means that updates, bug fixes, and new features can be developed and released separately and lead to faster development cycles for each product.&lt;/p&gt;
&lt;p&gt;Unfortunately, this will introduce breaking changes for plugin and project automation integrations with the Terminology provider API.&lt;/p&gt;
&lt;p&gt;The following are a list of changes and known issues to consider when updating your plugin to be compatible with Trados Studio 2022 SR2&lt;/p&gt;
&lt;h2 id="Studio2022SR2Howtoupdateplugins-TerminologyProviderAPI"&gt;Terminology Provider API&lt;/h2&gt;
&lt;p&gt;Make reference to the &lt;a class="external-link" href="https://developers.rws.com/studio-api-docs/apiconcepts/releasenotes/tradosstudio2022sr2.html" rel="nofollow"&gt;release notes for Trados Studio SR2&lt;/a&gt; when updating your plugin integrations with the Terminology Provider API. It includes all of the API changes that will facilitate better management, customization, and extensibility of terminology providers, providing more flexibility and control for developers and users.&amp;nbsp;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Removed Classes and Interfaces&lt;/strong&gt;: Several classes and interfaces have been removed, such as &lt;em&gt;AbstractTerminologyProvider&lt;/em&gt;, &lt;em&gt;IDefinition&lt;/em&gt;, &lt;em&gt;IDefinitionLanguage&lt;/em&gt;, and others.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Updated Classes&lt;/strong&gt;: Major changes include the &lt;em&gt;Definition &lt;/em&gt;class, &lt;em&gt;Entry&lt;/em&gt;, &lt;em&gt;EntryField&lt;/em&gt;, &lt;em&gt;EntryLanguage&lt;/em&gt;, and others. These updates involve changes in property types, constructors, and interfaces.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TerminologyProviderManager&lt;/strong&gt;: Now implements &lt;em&gt;ITerminologyProviderManager&lt;/em&gt;, offering new methods for managing terminology providers, such as &lt;em&gt;RemoveTerminologyProvider&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ITerminologyProvider Updates&lt;/strong&gt;: The &lt;em&gt;ITerminologyProvider &lt;/em&gt;interface has several new properties and methods for managing active filters, initialization, and more. The type of returned values for methods like &lt;em&gt;GetEntry &lt;/em&gt;and &lt;em&gt;Search&lt;/em&gt;&lt;strong&gt; &lt;/strong&gt;has changed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New Interfaces&lt;/strong&gt;: Several new interfaces have been added, including &lt;em&gt;ITerminologyProviderManager&lt;/em&gt;, &lt;em&gt;ITerminologyProviderWinFormsUIWithCreate&lt;/em&gt;, and &lt;em&gt;ITerminologyProviderWinFormsUIWithEdit&lt;/em&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Note: &lt;/strong&gt;A full integration of these new changes to the Terminology Provider API are available from the &lt;a class="external-link" href="https://github.com/RWS/Sdl-Community/tree/master/IATETerminologyProvider" rel="nofollow"&gt;IATE Terminology Provider&lt;/a&gt; for reference.&lt;/p&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-ITerminologyProvider"&gt;ITerminologyProvider&lt;/h3&gt;
&lt;p&gt;The &lt;em&gt;AbstractTerminologyProvider&lt;/em&gt; is no longer available &amp;amp; in its place you must implement the &lt;em&gt;ITerminologyProvider&lt;/em&gt; interface, which has some new properties &amp;amp; methods such as &lt;em&gt;ActiveFilter { get; set; }&lt;/em&gt; &amp;amp; associated method &lt;em&gt;GetFilters()&lt;/em&gt; that enable a user to add filters to restrict the results that provider displays when searching a termbase during translation.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:600px;max-width:900px;" alt=" " src="/resized-image/__size/1800x1200/__key/communityserver-wikis-components-files/00-00-00-03-50/pastedimage1699615497862v1.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;public class IATETerminologyProvider : ITerminologyProvider
{
    public FilterDefinition ActiveFilter { get; set; }
 
    public IList&amp;lt;FilterDefinition&amp;gt; GetFilters()
    {
        var filterDefinitions = new List&amp;lt;FilterDefinition&amp;gt;();
        var filterDefinition = new FilterDefinition { ID = 0, Name = &amp;quot;Source contains synonyms&amp;quot; };
        filterDefinitions.Add(filterDefinition);
 
        return filterDefinitions;
    }
}&lt;/pre&gt;&lt;/p&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-Definition"&gt;Definition&lt;/h3&gt;
&lt;p class="auto-cursor-target"&gt;Its important to fully describe the &lt;em&gt;DescriptiveFields &lt;/em&gt;to the &lt;em&gt;Definition&lt;/em&gt; property of the provider to provide sufficient information when integrating with other services, such as the &lt;strong&gt;Terminology Verifier&lt;/strong&gt;.&amp;nbsp; For example: to enable integration with the feature to check for forbidden terms, remember to include the &lt;em&gt;DescriptiveField &lt;/em&gt;at the &lt;em&gt;TermLevel &lt;/em&gt;as shown here (e.g. var statusField)&lt;/p&gt;
&lt;p class="auto-cursor-target"&gt;&lt;img style="max-height:600px;max-width:900px;" alt=" " src="/resized-image/__size/1800x1200/__key/communityserver-wikis-components-files/00-00-00-03-50/pastedimage1699615545981v2.png" /&gt;&lt;/p&gt;
&lt;p class="auto-cursor-target"&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;public class IATETerminologyProvider : ITerminologyProvider
{
    public Definition Definition =&amp;gt; new Definition(GetDescriptiveFields(), GetDefinitionLanguages());
 
    public IList&amp;lt;DescriptiveField&amp;gt; GetDescriptiveFields()
    {
        var result = new List&amp;lt;DescriptiveField&amp;gt;();
 
        var definitionField = new DescriptiveField
        {
            Label = &amp;quot;Definition&amp;quot;, Level = FieldLevel.EntryLevel, Mandatory = true, Multiple = true,
            Type = FieldType.String
        };
        result.Add(definitionField);
 
        var statusField = new DescriptiveField
        {
            Label = &amp;quot;Status&amp;quot;, Level = FieldLevel.TermLevel, Mandatory = false, Multiple = true,
            Type = FieldType.PickList,
            PickListValues = new[] { &amp;quot;Deprecated&amp;quot;, &amp;quot;Obsolete&amp;quot;, &amp;quot;Admitted&amp;quot;, &amp;quot;Preferred&amp;quot;, &amp;quot;Proposed&amp;quot; }
        };
        result.Add(statusField);
 
        return result;
    }
}&lt;/pre&gt;&lt;/p&gt;
&lt;p class="auto-cursor-target"&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;public IList&amp;lt;DefinitionLanguage&amp;gt; GetDefinitionLanguages()
{
    var result = new List&amp;lt;DefinitionLanguage&amp;gt;();
 
    var currentProject = SdlTradosStudio.Application?.GetController&amp;lt;ProjectsController&amp;gt;()?.CurrentProject;
    if (currentProject == null) return result;
 
    var projectInfo = currentProject.GetProjectInfo();
 
    result.Add(new DefinitionLanguage
    {
        Locale = projectInfo.SourceLanguage.CultureInfo,
        Name = projectInfo.SourceLanguage.DisplayName
    });
 
    result.AddRange(projectInfo.TargetLanguages.Select(language =&amp;gt; new DefinitionLanguage
    {
        Locale = language.CultureInfo,
        Name = language.DisplayName
    }));
 
    return result;
}&lt;/pre&gt;&lt;/p&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-ITerminologyProviderWinFormsUI"&gt;ITerminologyProviderWinFormsUI&lt;/h3&gt;
&lt;p&gt;You will noticed that the property &lt;em&gt;SupportsEditing &lt;/em&gt;&amp;amp; the method &lt;em&gt;Edit(IWin32Window owner, ITerminologyProvider terminologyProvider)&lt;/em&gt; have been removed from the &lt;em&gt;ITerminologyProviderWinFormsUI&lt;/em&gt; interface.&amp;nbsp; If your provider allows a user to edit the provider settings by displaying a settings dialog, then implement the new interface &lt;em&gt;ITerminologyProviderWinFormsUIWithEdit. &lt;/em&gt;Additionally, the new interface&amp;nbsp;&lt;em&gt;ITerminologyProviderWinFormsUIWithCreate&lt;/em&gt; introduces a new extensibility point that will display a context menu item in the &lt;strong&gt;Create &lt;/strong&gt;button from the Terminology Provider Settings in Trados Studio.&amp;nbsp; This is useful for use cases where the creation of the provider needs to be a separate to the edit settings dialogs.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;[TerminologyProviderWinFormsUI]
public class MyTerminologyProviderWinFormsUI : ITerminologyProviderWinFormsUIWithEdit, ITerminologyProviderWinFormsUIWithCreate
{
    public ITerminologyProvider Create()
    {
        // Adds the capability to create a ITerminologyProvider.
        // Allows the creation of an ITerminologyProvider from the UI.It returns a ITerminologyProvider
        return null;
    }
 
    public bool Edit(IWin32Window owner, ITerminologyProvider terminologyProvider)
    {
        // Adds the capability to edit settings.
        // Used to display a dialog to interactively change any of the terminology provider settings.
        return true;
    }
 
    public ITerminologyProvider[] Browse(IWin32Window owner, ITerminologyProviderCredentialStore credentialStore)
    {
        // Adds the capability to select a ITerminologyProvider.
        // Used to display a dialog to add a new terminology provider.
        return null;
    }
}&lt;/pre&gt;&lt;/p&gt;
&lt;h2 id="Studio2022SR2Howtoupdateplugins-PluginManifest"&gt;Plugin Manifest&lt;/h2&gt;
&lt;p&gt;The manifest file&amp;nbsp;&lt;strong&gt;pluginpackage.manifest.xml&lt;/strong&gt; is located at the root of your project solution.&amp;nbsp; The values of the &lt;strong&gt;RequiredProduct &lt;/strong&gt;should be updated to align with the latest release.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RequiredProduct&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Min version: &lt;em&gt;17.2&lt;/em&gt;. If your plugin has been updated to support these latest changes to the Terminology Provider API, then you should reflect this by setting the minimum supported version of your plugin to &lt;em&gt;17.2&lt;br /&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Max version: &lt;em&gt;17.9&lt;/em&gt;. It is recommended to also set this value, as it will provide the AppStore with sufficient information in correctly identifying plugins that are compatible with the version of Trados Studio that is launched.&lt;/li&gt;
&lt;li&gt;Name:: &lt;em&gt;TradosStudio&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;&lt;pre class="ui-code" data-mode="xml"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;
&amp;lt;PluginPackage xmlns=&amp;quot;http://www.sdl.com/Plugins/PluginPackage/1.0&amp;quot;&amp;gt;
  &amp;lt;PlugInName&amp;gt;My plugin name&amp;lt;/PlugInName&amp;gt;
  &amp;lt;Version&amp;gt;1.1.0.0&amp;lt;/Version&amp;gt;
  &amp;lt;Description&amp;gt;My plugin description&amp;lt;/Description&amp;gt;
  &amp;lt;Author&amp;gt;Trados AppStore Team&amp;lt;/Author&amp;gt;
  &amp;lt;RequiredProduct name=&amp;quot;TradosStudio&amp;quot; minversion=&amp;quot;17.2&amp;quot; maxversion=&amp;quot;17.9&amp;quot; /&amp;gt;
&amp;lt;/PluginPackage&amp;gt;&lt;/pre&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="Studio2022SR2Howtoupdateplugins-KnownIssues"&gt;Known Issues&lt;/h2&gt;
&lt;p&gt;The following are a list of known issues and solutions that you might encounter depending on your settings and configuration.&lt;/p&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-Trados.Community.Toolkit(formallySDL.Community.Toolkit)"&gt;Trados.Community.Toolkit (&lt;em&gt;formally SDL.Community.Toolkit&lt;/em&gt;)&lt;/h3&gt;
&lt;p&gt;A new version of the Trados Community Toolkit, version 4.1.1, has been released to support the latest version of Trados Studio 2022 SR1+.&amp;nbsp; This includes the following assemblies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.Core" rel="nofollow"&gt;Trados.Community.Toolkit.Core&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.LanguagePlatform" rel="nofollow"&gt;Trados.Community.Toolkit.LanguagePlatform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.Integration" rel="nofollow"&gt;Trados.Community.Toolkit.Integration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.FileType" rel="nofollow"&gt;Trados.Community.Toolkit.FileType&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.ProjectAutomation" rel="nofollow"&gt;Trados.Community.Toolkit.ProjectAutomation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-Dependencyversionchanges"&gt;Dependency version changes&lt;/h3&gt;
&lt;p&gt;There following are a list of known dependency version changes that may influence your integration with the latest Trados Studio 2022 APIs; this is typically seen from standalone applications that are running outside of the Trados Studio context.&amp;nbsp; To resolve these references, include the following binding redirects in the configuration file of the project.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="xml"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;startup&amp;gt;
    &amp;lt;supportedRuntime version=&amp;quot;v4.0&amp;quot; sku=&amp;quot;.NETFramework,Version=v4.8&amp;quot; /&amp;gt;
  &amp;lt;/startup&amp;gt;
  &amp;lt;runtime&amp;gt;
    &amp;lt;NetFx40_PInvokeStackResilience enabled=&amp;quot;1&amp;quot; /&amp;gt;
    &amp;lt;legacyCorruptedStateExceptionsPolicy enabled=&amp;quot;true&amp;quot; /&amp;gt;
    &amp;lt;ThrowUnobservedTaskException enabled=&amp;quot;true&amp;quot; /&amp;gt;
    &amp;lt;assemblyBinding xmlns=&amp;quot;urn:schemas-microsoft-com:asm.v1&amp;quot;&amp;gt;
      &amp;lt;dependentAssembly&amp;gt;
        &amp;lt;assemblyIdentity name=&amp;quot;Microsoft.Extensions.DependencyModel&amp;quot; publicKeyToken=&amp;quot;adb9793829ddae60&amp;quot; culture=&amp;quot;neutral&amp;quot; /&amp;gt;
        &amp;lt;bindingRedirect oldVersion=&amp;quot;0.0.0.0-6.0.0.0&amp;quot; newVersion=&amp;quot;6.0.0.0&amp;quot; /&amp;gt;
      &amp;lt;/dependentAssembly&amp;gt;
      &amp;lt;dependentAssembly&amp;gt;
        &amp;lt;assemblyIdentity name=&amp;quot;System.Memory&amp;quot; publicKeyToken=&amp;quot;cc7b13ffcd2ddd51&amp;quot; culture=&amp;quot;neutral&amp;quot; /&amp;gt;
        &amp;lt;bindingRedirect oldVersion=&amp;quot;0.0.0.0-4.0.1.2&amp;quot; newVersion=&amp;quot;4.0.1.2&amp;quot; /&amp;gt;
      &amp;lt;/dependentAssembly&amp;gt;
      &amp;lt;dependentAssembly&amp;gt;
        &amp;lt;assemblyIdentity name=&amp;quot;Microsoft.Data.SqlClient&amp;quot; publicKeyToken=&amp;quot;23ec7fc2d6eaa4a5&amp;quot; culture=&amp;quot;neutral&amp;quot; /&amp;gt;
        &amp;lt;bindingRedirect oldVersion=&amp;quot;0.0.0.0-5.0.0.0&amp;quot; newVersion=&amp;quot;5.0.0.0&amp;quot; /&amp;gt;
      &amp;lt;/dependentAssembly&amp;gt;
    &amp;lt;/assemblyBinding&amp;gt;
  &amp;lt;/runtime&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>How to update plugins to Trados Studio 2022 SR2</title><link>https://community.rws.com/developers-more/trados-portfolio/trados-studio-developers/w/trados-studio-api/6743/how-to-update-plugins-to-trados-studio-2022-sr2/revision/1</link><pubDate>Fri, 10 Nov 2023 11:27:43 GMT</pubDate><guid isPermaLink="false">10acfa76-f078-475b-a7ef-fc5b3e8d2934:6b7e147c-62e9-44ac-9849-a5bca64f0282</guid><dc:creator>Patrick Andrew Hartnett</dc:creator><comments>https://community.rws.com/developers-more/trados-portfolio/trados-studio-developers/w/trados-studio-api/6743/how-to-update-plugins-to-trados-studio-2022-sr2#comments</comments><description>Revision 1 posted to Studio Developers WIKI by Patrick Andrew Hartnett on 11/10/2023 11:27:43 AM&lt;br /&gt;
&lt;p&gt;There will be significant changes to the Terminology provider API with the release of Trados Studio SR2.&amp;nbsp; These changes are all geared towards decoupling the Multiterm integration from Trados Studio to promote independent development cycles and reduce the risk of compatibility issues. This means that updates, bug fixes, and new features can be developed and released separately and lead to faster development cycles for each product.&lt;/p&gt;
&lt;p&gt;Unfortunately, this will introduce breaking changes for plugin and project automation integrations with the Terminology provider API&lt;/p&gt;
&lt;h2 id="Studio2022SR2Howtoupdateplugins-TerminologyProviderAPI"&gt;Terminology Provider API&lt;/h2&gt;
&lt;p&gt;Make reference to the &lt;a class="external-link" href="https://developers.rws.com/studio-api-docs/apiconcepts/releasenotes/tradosstudio2022sr2.html" rel="nofollow"&gt;release notes for Trados Studio SR2&lt;/a&gt; when updating your plugin integrations with the Terminology Provider API. It includes all of the API changes that will facilitate better management, customization, and extensibility of terminology providers, providing more flexibility and control for developers and users.&amp;nbsp;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Removed Classes and Interfaces&lt;/strong&gt;: Several classes and interfaces have been removed, such as &lt;em&gt;AbstractTerminologyProvider&lt;/em&gt;, &lt;em&gt;IDefinition&lt;/em&gt;, &lt;em&gt;IDefinitionLanguage&lt;/em&gt;, and others.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Updated Classes&lt;/strong&gt;: Major changes include the &lt;em&gt;Definition &lt;/em&gt;class, &lt;em&gt;Entry&lt;/em&gt;, &lt;em&gt;EntryField&lt;/em&gt;, &lt;em&gt;EntryLanguage&lt;/em&gt;, and others. These updates involve changes in property types, constructors, and interfaces.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TerminologyProviderManager&lt;/strong&gt;: Now implements &lt;em&gt;ITerminologyProviderManager&lt;/em&gt;, offering new methods for managing terminology providers, such as &lt;em&gt;RemoveTerminologyProvider&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ITerminologyProvider Updates&lt;/strong&gt;: The &lt;em&gt;ITerminologyProvider &lt;/em&gt;interface has several new properties and methods for managing active filters, initialization, and more. The type of returned values for methods like &lt;em&gt;GetEntry &lt;/em&gt;and &lt;em&gt;Search&lt;/em&gt;&lt;strong&gt; &lt;/strong&gt;has changed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New Interfaces&lt;/strong&gt;: Several new interfaces have been added, including &lt;em&gt;ITerminologyProviderManager&lt;/em&gt;, &lt;em&gt;ITerminologyProviderWinFormsUIWithCreate&lt;/em&gt;, and &lt;em&gt;ITerminologyProviderWinFormsUIWithEdit&lt;/em&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Note: &lt;/strong&gt;A full integration of these new changes to the Terminology Provider API are available from the &lt;a class="external-link" href="https://github.com/RWS/Sdl-Community/tree/master/IATETerminologyProvider" rel="nofollow"&gt;IATE Terminology Provider&lt;/a&gt; for reference.&lt;/p&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-ITerminologyProvider"&gt;ITerminologyProvider&lt;/h3&gt;
&lt;p&gt;The &lt;em&gt;AbstractTerminologyProvider&lt;/em&gt; is no longer available &amp;amp; in its place you must implement the &lt;em&gt;ITerminologyProvider&lt;/em&gt; interface, which has some new properties &amp;amp; methods such as &lt;em&gt;ActiveFilter { get; set; }&lt;/em&gt; &amp;amp; associated method &lt;em&gt;GetFilters()&lt;/em&gt; that enable a user to add filters to restrict the results that provider displays when searching a termbase during translation.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:600px;max-width:900px;" src="/resized-image/__size/1800x1200/__key/communityserver-wikis-components-files/00-00-00-03-50/pastedimage1699615497862v1.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;public class IATETerminologyProvider : ITerminologyProvider
{
    public FilterDefinition ActiveFilter { get; set; }
 
    public IList&amp;lt;FilterDefinition&amp;gt; GetFilters()
    {
        var filterDefinitions = new List&amp;lt;FilterDefinition&amp;gt;();
        var filterDefinition = new FilterDefinition { ID = 0, Name = &amp;quot;Source contains synonyms&amp;quot; };
        filterDefinitions.Add(filterDefinition);
 
        return filterDefinitions;
    }
}&lt;/pre&gt;&lt;/p&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-Definition"&gt;Definition&lt;/h3&gt;
&lt;p class="auto-cursor-target"&gt;Its important to fully describe the &lt;em&gt;DescriptiveFields &lt;/em&gt;to the &lt;em&gt;Definition&lt;/em&gt; property of the provider to provide sufficient information when integrating with other services, such as the &lt;strong&gt;Terminology Verifier&lt;/strong&gt;.&amp;nbsp; For example: to enable integration with the feature to check for forbidden terms, remember to include the &lt;em&gt;DescriptiveField &lt;/em&gt;at the &lt;em&gt;TermLevel &lt;/em&gt;as shown here (e.g. var statusField)&lt;/p&gt;
&lt;p class="auto-cursor-target"&gt;&lt;img style="max-height:600px;max-width:900px;" src="/resized-image/__size/1800x1200/__key/communityserver-wikis-components-files/00-00-00-03-50/pastedimage1699615545981v2.png" alt=" " /&gt;&lt;/p&gt;
&lt;p class="auto-cursor-target"&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;public class IATETerminologyProvider : ITerminologyProvider
{
    public Definition Definition =&amp;gt; new Definition(GetDescriptiveFields(), GetDefinitionLanguages());
 
    public IList&amp;lt;DescriptiveField&amp;gt; GetDescriptiveFields()
    {
        var result = new List&amp;lt;DescriptiveField&amp;gt;();
 
        var definitionField = new DescriptiveField
        {
            Label = &amp;quot;Definition&amp;quot;, Level = FieldLevel.EntryLevel, Mandatory = true, Multiple = true,
            Type = FieldType.String
        };
        result.Add(definitionField);
 
        var statusField = new DescriptiveField
        {
            Label = &amp;quot;Status&amp;quot;, Level = FieldLevel.TermLevel, Mandatory = false, Multiple = true,
            Type = FieldType.PickList,
            PickListValues = new[] { &amp;quot;Deprecated&amp;quot;, &amp;quot;Obsolete&amp;quot;, &amp;quot;Admitted&amp;quot;, &amp;quot;Preferred&amp;quot;, &amp;quot;Proposed&amp;quot; }
        };
        result.Add(statusField);
 
        return result;
    }
}&lt;/pre&gt;&lt;/p&gt;
&lt;p class="auto-cursor-target"&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;public IList&amp;lt;DefinitionLanguage&amp;gt; GetDefinitionLanguages()
{
    var result = new List&amp;lt;DefinitionLanguage&amp;gt;();
 
    var currentProject = SdlTradosStudio.Application?.GetController&amp;lt;ProjectsController&amp;gt;()?.CurrentProject;
    if (currentProject == null) return result;
 
    var projectInfo = currentProject.GetProjectInfo();
 
    result.Add(new DefinitionLanguage
    {
        Locale = projectInfo.SourceLanguage.CultureInfo,
        Name = projectInfo.SourceLanguage.DisplayName
    });
 
    result.AddRange(projectInfo.TargetLanguages.Select(language =&amp;gt; new DefinitionLanguage
    {
        Locale = language.CultureInfo,
        Name = language.DisplayName
    }));
 
    return result;
}&lt;/pre&gt;&lt;/p&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-ITerminologyProviderWinFormsUI"&gt;ITerminologyProviderWinFormsUI&lt;/h3&gt;
&lt;p&gt;You will noticed that the property &lt;em&gt;SupportsEditing &lt;/em&gt;&amp;amp; the method &lt;em&gt;Edit(IWin32Window owner, ITerminologyProvider terminologyProvider)&lt;/em&gt; have been removed from the &lt;em&gt;ITerminologyProviderWinFormsUI&lt;/em&gt; interface.&amp;nbsp; If your provider allows a user to edit the provider settings by displaying a settings dialog, then implement the new interface &lt;em&gt;ITerminologyProviderWinFormsUIWithEdit. &lt;/em&gt;Additionally, the new interface&amp;nbsp;&lt;em&gt;ITerminologyProviderWinFormsUIWithCreate&lt;/em&gt; introduces a new extensibility point that will display a context menu item in the &lt;strong&gt;Create &lt;/strong&gt;button from the Terminology Provider Settings in Trados Studio.&amp;nbsp; This is useful for use cases where the creation of the provider needs to be a separate to the edit settings dialogs.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;[TerminologyProviderWinFormsUI]
public class MyTerminologyProviderWinFormsUI : ITerminologyProviderWinFormsUIWithEdit, ITerminologyProviderWinFormsUIWithCreate
{
    public ITerminologyProvider Create()
    {
        // Adds the capability to create a ITerminologyProvider.
        // Allows the creation of an ITerminologyProvider from the UI.It returns a ITerminologyProvider
        return null;
    }
 
    public bool Edit(IWin32Window owner, ITerminologyProvider terminologyProvider)
    {
        // Adds the capability to edit settings.
        // Used to display a dialog to interactively change any of the terminology provider settings.
        return true;
    }
 
    public ITerminologyProvider[] Browse(IWin32Window owner, ITerminologyProviderCredentialStore credentialStore)
    {
        // Adds the capability to select a ITerminologyProvider.
        // Used to display a dialog to add a new terminology provider.
        return null;
    }
}&lt;/pre&gt;&lt;/p&gt;
&lt;h2 id="Studio2022SR2Howtoupdateplugins-PluginManifest"&gt;Plugin Manifest&lt;/h2&gt;
&lt;p&gt;The manifest file&amp;nbsp;&lt;strong&gt;pluginpackage.manifest.xml&lt;/strong&gt; is located at the root of your project solution.&amp;nbsp; The values of the &lt;strong&gt;RequiredProduct &lt;/strong&gt;should be updated to align with the latest release.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RequiredProduct&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Min version: &lt;em&gt;17.2&lt;/em&gt;. If your plugin has been updated to support these latest changes to the Terminology Provider API, then you should reflect this by setting the minimum supported version of your plugin to &lt;em&gt;17.2&lt;br /&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Max version: &lt;em&gt;17.9&lt;/em&gt;. It is recommended to also set this value, as it will provide the AppStore with sufficient information in correctly identifying plugins that are compatible with the version of Trados Studio that is launched.&lt;/li&gt;
&lt;li&gt;Name:: &lt;em&gt;TradosStudio&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;&lt;pre class="ui-code" data-mode="xml"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;
&amp;lt;PluginPackage xmlns=&amp;quot;http://www.sdl.com/Plugins/PluginPackage/1.0&amp;quot;&amp;gt;
  &amp;lt;PlugInName&amp;gt;My plugin name&amp;lt;/PlugInName&amp;gt;
  &amp;lt;Version&amp;gt;1.1.0.0&amp;lt;/Version&amp;gt;
  &amp;lt;Description&amp;gt;My plugin description&amp;lt;/Description&amp;gt;
  &amp;lt;Author&amp;gt;Trados AppStore Team&amp;lt;/Author&amp;gt;
  &amp;lt;RequiredProduct name=&amp;quot;TradosStudio&amp;quot; minversion=&amp;quot;17.2&amp;quot; maxversion=&amp;quot;17.9&amp;quot; /&amp;gt;
&amp;lt;/PluginPackage&amp;gt;&lt;/pre&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="Studio2022SR2Howtoupdateplugins-KnownIssues"&gt;Known Issues&lt;/h2&gt;
&lt;p&gt;The following are a list of known issues and solutions that you might encounter depending on your settings and configuration.&lt;/p&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-Trados.Community.Toolkit(formallySDL.Community.Toolkit)"&gt;Trados.Community.Toolkit (&lt;em&gt;formally SDL.Community.Toolkit&lt;/em&gt;)&lt;/h3&gt;
&lt;p&gt;A new version of the Trados Community Toolkit, version 4.1.1, has been released to support the latest version of Trados Studio 2022 SR1+.&amp;nbsp; This includes the following assemblies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.Core" rel="nofollow"&gt;Trados.Community.Toolkit.Core&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.LanguagePlatform" rel="nofollow"&gt;Trados.Community.Toolkit.LanguagePlatform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.Integration" rel="nofollow"&gt;Trados.Community.Toolkit.Integration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.FileType" rel="nofollow"&gt;Trados.Community.Toolkit.FileType&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://www.nuget.org/packages/Trados.Community.Toolkit.ProjectAutomation" rel="nofollow"&gt;Trados.Community.Toolkit.ProjectAutomation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="Studio2022SR2Howtoupdateplugins-Dependencyversionchanges"&gt;Dependency version changes&lt;/h3&gt;
&lt;p&gt;There following are a list of known dependency version changes that may influence your integration with the latest Trados Studio 2022 APIs; this is typically seen from standalone applications that are running outside of the Trados Studio context.&amp;nbsp; To resolve these references, include the following binding redirects in the configuration file of the project.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="xml"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;startup&amp;gt;
    &amp;lt;supportedRuntime version=&amp;quot;v4.0&amp;quot; sku=&amp;quot;.NETFramework,Version=v4.8&amp;quot; /&amp;gt;
  &amp;lt;/startup&amp;gt;
  &amp;lt;runtime&amp;gt;
    &amp;lt;NetFx40_PInvokeStackResilience enabled=&amp;quot;1&amp;quot; /&amp;gt;
    &amp;lt;legacyCorruptedStateExceptionsPolicy enabled=&amp;quot;true&amp;quot; /&amp;gt;
    &amp;lt;ThrowUnobservedTaskException enabled=&amp;quot;true&amp;quot; /&amp;gt;
    &amp;lt;assemblyBinding xmlns=&amp;quot;urn:schemas-microsoft-com:asm.v1&amp;quot;&amp;gt;
      &amp;lt;dependentAssembly&amp;gt;
        &amp;lt;assemblyIdentity name=&amp;quot;Microsoft.Extensions.DependencyModel&amp;quot; publicKeyToken=&amp;quot;adb9793829ddae60&amp;quot; culture=&amp;quot;neutral&amp;quot; /&amp;gt;
        &amp;lt;bindingRedirect oldVersion=&amp;quot;0.0.0.0-6.0.0.0&amp;quot; newVersion=&amp;quot;6.0.0.0&amp;quot; /&amp;gt;
      &amp;lt;/dependentAssembly&amp;gt;
      &amp;lt;dependentAssembly&amp;gt;
        &amp;lt;assemblyIdentity name=&amp;quot;System.Memory&amp;quot; publicKeyToken=&amp;quot;cc7b13ffcd2ddd51&amp;quot; culture=&amp;quot;neutral&amp;quot; /&amp;gt;
        &amp;lt;bindingRedirect oldVersion=&amp;quot;0.0.0.0-4.0.1.2&amp;quot; newVersion=&amp;quot;4.0.1.2&amp;quot; /&amp;gt;
      &amp;lt;/dependentAssembly&amp;gt;
      &amp;lt;dependentAssembly&amp;gt;
        &amp;lt;assemblyIdentity name=&amp;quot;Microsoft.Data.SqlClient&amp;quot; publicKeyToken=&amp;quot;23ec7fc2d6eaa4a5&amp;quot; culture=&amp;quot;neutral&amp;quot; /&amp;gt;
        &amp;lt;bindingRedirect oldVersion=&amp;quot;0.0.0.0-5.0.0.0&amp;quot; newVersion=&amp;quot;5.0.0.0&amp;quot; /&amp;gt;
      &amp;lt;/dependentAssembly&amp;gt;
    &amp;lt;/assemblyBinding&amp;gt;
  &amp;lt;/runtime&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item></channel></rss>