Ejemplo n.º 1
0
        // Create translation provider reference
        private TranslationProviderReference CreateTpReference(StarTranslationMemoryMetadata item, LanguagePair pair, FileBasedProject project)
        {
            var importer    = CreateTmImporter(item, pair, project);
            var tpReference = new TranslationProviderReference(importer.TMFilePath);

            return(tpReference);
        }
Ejemplo n.º 2
0
        private void AddOpusCatProviderToProject()
        {
            //Add Opus CAT MT provider to the project
            var tpConfig = this.Project.GetTranslationProviderConfiguration();

            //Don't add another Opus CAT provider
            if (!tpConfig.Entries.Any(x => x.MainTranslationProvider.Uri.Scheme == OpusCatProvider.OpusCatTranslationProviderScheme))
            {
                var opusCatRef = new TranslationProviderReference(opusCatOptions.Uri);
                tpConfig.Entries.Add(
                    new TranslationProviderCascadeEntry(opusCatRef, false, true, false));

                this.Project.UpdateTranslationProviderConfiguration(tpConfig);
            }
        }
Ejemplo n.º 3
0
        private Dictionary <TranslationProviderReference, int> CreateTpReference(List <StarTranslationMemoryMetadata> tmsList, LanguagePair pair, IProject project, PackageModel package)
        {
            var localProjectPath = project?.GetProjectInfo()?.LocalProjectFolder;
            var importer         = new TransitTmImporter(pair, localProjectPath, tmsList);

            importer.ImportStarTransitTm(tmsList, package);
            var translationProvRef = new Dictionary <TranslationProviderReference, int>();

            foreach (var tm in importer.StudioTranslationMemories)
            {
                var provider = new TranslationProviderReference(tm.Key.FilePath);
                if (!translationProvRef.ContainsKey(provider))
                {
                    translationProvRef.Add(provider, tm.Value);
                }
            }
            return(translationProvRef);
        }
Ejemplo n.º 4
0
        private static void Main(string[] args)
        {
            var projectInfo = new ProjectInfo
            {
                Name               = "",
                SourceLanguage     = new Language(""),
                TargetLanguages    = new[] { new Language("") },
                LocalProjectFolder = $@"PathWhereProjectsWillBeSaved\{GetDateTimeToString(DateTime.Now)}"
            };

            var project = new FileBasedProject(projectInfo);

            UpdateProjectProviderSettings(project);

            var tpConfig = project.GetTranslationProviderConfiguration();

            var tpUriString    = "";
            var tpReference    = new TranslationProviderReference(new Uri(tpUriString), null, true);
            var tpCascadeEntry = new TranslationProviderCascadeEntry(tpReference, true, true, false);

            tpConfig.Entries.Add(tpCascadeEntry);
            project.UpdateTranslationProviderConfiguration(tpConfig);

            var apiKey = "";

            project.Credentials.AddCredential(new Uri(tpUriString), apiKey);
            project.Save();

            var projFiles =
                project.AddFiles(
                    new[] { @"filepaths" });

            //var projFiles = project.AddFolderWithFiles(@"", true);

            project.RunAutomaticTasks(projFiles.GetIds(), new[]
            {
                AutomaticTaskTemplateIds.Scan,
                AutomaticTaskTemplateIds.ConvertToTranslatableFormat,
                AutomaticTaskTemplateIds.CopyToTargetLanguages,
                AutomaticTaskTemplateIds.PreTranslateFiles,
            });

            project.Save();
        }
Ejemplo n.º 5
0
        public override void TaskComplete()
        {
            var projectInfo = this.Project.GetProjectInfo();
            var projectGuid = projectInfo.Id;
            var sourceCode  = projectInfo.SourceLanguage.CultureInfo.TwoLetterISOLanguageName;


            if (settings.AddFiskmoProvider)
            {
                //Add Fiskmö MT provider to the project
                var tpConfig = this.Project.GetTranslationProviderConfiguration();

                //Don't add another Fiskmo provider
                if (!tpConfig.Entries.Any(x => x.MainTranslationProvider.Uri.Scheme == FiskmoProvider.FiskmoTranslationProviderScheme))
                {
                    var fiskmoRef = new TranslationProviderReference(fiskmoOptions.Uri);
                    tpConfig.Entries.Add(
                        new TranslationProviderCascadeEntry(fiskmoRef, false, true, false));

                    this.Project.UpdateTranslationProviderConfiguration(tpConfig);
                }
            }

            if (settings.Finetune)
            {
                foreach (var targetLang in projectInfo.TargetLanguages)
                {
                    var targetCode = targetLang.CultureInfo.TwoLetterISOLanguageName;
                    //Remove duplicates
                    var           uniqueProjectTranslations = this.ProjectTranslations[targetLang].Distinct().ToList();
                    List <string> uniqueNewSegments         = new List <string>();
                    if (this.settings.BatchTranslate)
                    {
                        uniqueNewSegments = this.ProjectNewSegments[targetLang].Distinct().ToList();
                    }

                    if (this.settings.ExtractFuzzies)
                    {
                        var fuzzies = this.ProcessFuzzies(this.ProjectFuzzies[targetLang]);
                        uniqueProjectTranslations.AddRange(fuzzies);
                    }

                    if (uniqueProjectTranslations.Count < Int32.Parse(FiskmoTpSettings.Default.FinetuningMinSentencePairs))
                    {
                        throw new Exception(
                                  $"Not enough sentence pairs for fine-tuning. Found {uniqueProjectTranslations.Count}, minimum is {FiskmoTpSettings.Default.FinetuningMinSentencePairs}");
                    }


                    //Send the tuning set to MT service
                    var result = FiskmöMTServiceHelper.Customize(
                        this.fiskmoOptions.mtServiceAddress,
                        this.fiskmoOptions.mtServicePort,
                        uniqueProjectTranslations,
                        uniqueNewSegments,
                        sourceCode,
                        targetCode,
                        this.fiskmoOptions.modelTag,
                        this.settings.IncludePlaceholderTags,
                        this.settings.IncludeTagPairs);

                    switch (result)
                    {
                    case "fine-tuning already in process":
                        throw new Exception("MT engine is currently batch translating or fine-tuning, wait for previous job to finish (or cancel it by restarting MT engine).");

                    default:
                        break;
                    }
                }
            }


            //Send the new segments to MT engine for pretranslation.
            //If finetuning is selected, the new segments are translated after
            //customization finished, so this is only for BatchTranslateOnly
            if (settings.BatchTranslate == true && settings.Finetune == false)
            {
                foreach (var targetLang in projectInfo.TargetLanguages)
                {
                    var targetCode        = targetLang.CultureInfo.TwoLetterISOLanguageName;
                    var uniqueNewSegments = this.ProjectNewSegments[targetLang].Distinct().ToList();
                    //Send the new segments to MT service
                    var result = FiskmöMTServiceHelper.PreTranslateBatch(fiskmoOptions.mtServiceAddress, fiskmoOptions.mtServicePort, uniqueNewSegments, sourceCode, targetCode, fiskmoOptions.modelTag);

                    switch (result)
                    {
                    case "batch translation or customization already in process":
                        throw new Exception("MT engine is currently batch translating or fine-tuning, wait for previous job to finish (or cancel it by restarting MT engine).");

                    default:
                        break;
                    }
                }
            }
        }