API Pre-Translate Task not working for DeepL MT Provider

I have a FileBasedProject with :

  • Language pair: "de-DE" to "en-GB".
  • One file "fruits.xml".
  • One DeepL MT Translation Provider.

Screenshot of Studio Developers Q&A project settings showing a selected DeepL Translator provider for the language pair German to English.

Attempting to run the following code via the API completes without errors but does not pre-translate the file (no translations in the target segment):

    FileBasedProject ThisSdlProject = new FileBasedProject(SdlProjectFilePath);
    
    var settings = ThisSdlProject.GetSettings();
    var preTranslateSettings = settings.GetSettingsGroup();
    preTranslateSettings.NoTranslationMemoryMatchFoundAction.Value = NoTranslationMemoryMatchFoundAction.ApplyAutomatedTranslation;
    preTranslateSettings.TranslationOverwriteMode.Value = TranslationUpdateMode.KeepExistingTranslation;
    preTranslateSettings.MinimumMatchScore.Value = 75;
    ThisSdlProject.UpdateSettings(settings);
    
    ProjectFile[] translatableFiles = ThisSdlProject.GetTargetLanguageFiles(new Core.Globalization.Language(CultureInfo.GetCultureInfo(TargetLocale)));
    
    AutomaticTask preTranslateTask = ThisSdlProject.RunAutomaticTask(
        translatableFiles.GetIds(),
	    AutomaticTaskTemplateIds.PreTranslateFiles
    );
    
    ThisSdlProject.Save();

Screenshot of pre-translate settings with a minimum match value of 75 and options set to keep existing translation and apply automated translation when no match is found.

However, if I select the file in Studio 2021, Batch Tasks -> Pre-translate -> Finish (without changing any settings), it works:

Screenshot of 'fruits.xml' file in Studio Developers Q&A with source language German and target language English, showing untranslated words with NMT tag.

I swapped the DeepL MT Translation Provider for a File Based Translation Provider (Test_de-DE_en-GB.sdltm) and tried it again, and it worked as expected:

Screenshot of 'fruits.xml' file in Studio Developers Q&A with source language German and target language English, showing translated words with CM tag indicating confirmed matches.

Are there additional settings that must be applied in order for MT Translation Provider pre-translation to be applied via the API?

Thanks in advance,

Samuel



Generated Image Alt-Text
[edited by: RWS Community AI at 6:37 AM (GMT 0) on 15 Nov 2024]
Parents
  • Hi Samuel,

    I just tested the DeepL translation provider and I was able to translate using the API. I had DeepL provider added to a project and I've run the Pre-Translate batch task for that project.

    Code Sample:

    var selectedProject= SdlTradosStudio.Application?.GetController<ProjectsController>()?.SelectedProjects?.FirstOrDefault();
    if (selectedProject != null)
    {
    var settings = selectedProject.GetSettings();
    var preTranslateSettings = settings.GetSettingsGroup<TranslateTaskSettings>();
    preTranslateSettings.NoTranslationMemoryMatchFoundAction.Value = NoTranslationMemoryMatchFoundAction.ApplyAutomatedTranslation;
    preTranslateSettings.MinimumMatchScore.Value = 75;
    selectedProject.UpdateSettings(settings);
    selectedProject.Save();
    var targetFiles = selectedProject.GetTargetLanguageFiles();

    selectedProject.RunAutomaticTasks(targetFiles.GetIds(), new[]
    {
    AutomaticTaskTemplateIds.PreTranslateFiles,
    });
    selectedProject.Save();
    }

    Can you please try to use the settings above to see if you are able to pre-translate?

    Kind regards,

    Andrea Ghisa

  • Hi Andrea,

    Thanks for your reply.

    I used your sample code but unfortunately now get "Exception has been thrown by the target of an invocation.

    namespace Sdl.Sdk.PreTranslateFile
    {
        using Sdl.ProjectAutomation.Core;
        using Sdl.ProjectAutomation.Settings;
        using Sdl.TranslationStudioAutomation.IntegrationApi;
        using System.Linq;
    
        public class PreTranslateFile
        {
            public void Create()
            {
                var selectedProject = SdlTradosStudio.Application?.GetController()?.SelectedProjects?.FirstOrDefault();
                if (selectedProject != null)
                {
                    var settings = selectedProject.GetSettings();
                    var preTranslateSettings = settings.GetSettingsGroup();
                    preTranslateSettings.NoTranslationMemoryMatchFoundAction.Value = NoTranslationMemoryMatchFoundAction.ApplyAutomatedTranslation;
                    preTranslateSettings.MinimumMatchScore.Value = 75;
                    selectedProject.UpdateSettings(settings);
                    selectedProject.Save();
                    var targetFiles = selectedProject.GetTargetLanguageFiles();
    
                    selectedProject.RunAutomaticTasks(targetFiles.GetIds(), new[]
                    {
                        AutomaticTaskTemplateIds.PreTranslateFiles,
                    }
                    );
                    selectedProject.Save();
                }
            }
        }
    }
    
  • Hi Samuel,

    Can you please give me the stacktrace and more info from Visual Studio for the error you are receiving? Also, are you using this source code in the plugin or in a standalone application outside Studio?

    Have a nice day,

    Andrea

  • Hi Andrea,

    I am using this outside of Studio, in a Windows Command Line.

    I don't have a stacktrace, and no extra data is added to the sdlproj file using your code.

    When I use my code, the sdlproj file is updated with the correct Automatic.Task "Translate" data, just it doesn't translate the file.

    What Visual Studio info do you need?

    Thanks

    Samuel   

Reply Children
No Data