Пример #1
0
        private static int UpdateCustomFieldPickLists(ProgressDialogContext context, IEnumerable <CustomField> customFields, ITranslationMemory tm)
        {
            var updatedCount = 0;

            context?.Report(0, StringResources.Updating_Multiple_PickList_fields);

            foreach (var customField in customFields.Where(f => f.IsSelected && f.IsPickList))
            {
                foreach (var fieldValue in customField.FieldValues.Where(n => n.IsSelected && n.NewValue != null))
                {
                    foreach (var fieldDefinition in tm.FieldDefinitions.Where(n => n.Name.Equals(customField.Name)))
                    {
                        var pickListItem = fieldDefinition.PicklistItems.FirstOrDefault(a => a.Name.Equals(fieldValue.Value));
                        if (pickListItem != null)
                        {
                            pickListItem.Name = fieldValue.NewValue;
                            updatedCount++;
                        }
                    }
                }
            }

            tm.Save();

            return(updatedCount);
        }
Пример #2
0
        private int UpdateCustomFields(ProgressDialogContext context, ILocalTranslationMemory tm, List <TmTranslationUnit> units)
        {
            var updatedCount = 0;

            decimal iCurrent    = 0;
            decimal iTotalUnits = units.Count;
            var     groupsOf    = 200;

            var tusGroups = new List <List <TmTranslationUnit> > {
                new List <TmTranslationUnit>(units)
            };

            if (units.Count > groupsOf)
            {
                tusGroups = units.ChunkBy(groupsOf);
            }

            foreach (var tus in tusGroups)
            {
                iCurrent = iCurrent + tus.Count;
                if (context != null && context.CheckCancellationPending())
                {
                    break;
                }

                var progress = iCurrent / iTotalUnits * 100;
                context?.Report(Convert.ToInt32(progress), "Updating: " + iCurrent + " of " + iTotalUnits + " Translation Units");

                var tusToUpdate = new List <TranslationUnit>();
                foreach (var tu in tus)
                {
                    if (tm.LanguageDirection.SourceLanguage.Name.Equals(tu.SourceSegment.Language) &&
                        tm.LanguageDirection.TargetLanguage.Name.Equals(tu.TargetSegment.Language))
                    {
                        var unit = _tmService.CreateTranslationUnit(tu, tm.LanguageDirection);

                        tusToUpdate.Add(unit);
                    }
                }

                if (tusToUpdate.Count > 0)
                {
                    var results = tm.LanguageDirection.UpdateTranslationUnits(tusToUpdate.ToArray()).ToList();
                    updatedCount += results.Count(result => result.Action != LanguagePlatform.TranslationMemory.Action.Error);
                }
            }

            return(updatedCount);
        }
Пример #3
0
        private int UpdateCustomFields(ProgressDialogContext context, TmFile tmFile, List <TmTranslationUnit> translationUnits,
                                       IReadOnlyCollection <TmTranslationUnit> units, ServerBasedTranslationMemory serverBasedTm)
        {
            var updatedCount = 0;

            decimal iCurrent    = 0;
            decimal iTotalUnits = translationUnits.Count;
            var     groupsOf    = 100;

            var tusGroups = new List <List <TmTranslationUnit> > {
                new List <TmTranslationUnit>(units)
            };

            if (units.Count > groupsOf)
            {
                tusGroups = translationUnits.ChunkBy(groupsOf);
            }

            foreach (var tus in tusGroups)
            {
                iCurrent = iCurrent + tus.Count;
                if (context != null && context.CheckCancellationPending())
                {
                    break;
                }

                var progress = iCurrent / iTotalUnits * 100;
                context?.Report(Convert.ToInt32(progress), "Updating: " + iCurrent + " of " + iTotalUnits + " Translation Units");

                foreach (var languageDirection in serverBasedTm.LanguageDirections)
                {
                    var tusToUpdate = new List <TranslationUnit>();
                    foreach (var tu in tus)
                    {
                        if (languageDirection.SourceLanguage.Name.Equals(tu.SourceSegment.Language) &&
                            languageDirection.TargetLanguage.Name.Equals(tu.TargetSegment.Language))
                        {
                            var unit = _tmService.CreateTranslationUnit(tu, languageDirection);
                            tusToUpdate.Add(unit);
                        }
                    }

                    if (tusToUpdate.Count > 0)
                    {
                        var results = languageDirection.UpdateTranslationUnits(tusToUpdate.ToArray());
                        foreach (var result in results)
                        {
                            if (result.Action != LanguagePlatform.TranslationMemory.Action.Error)
                            {
                                updatedCount++;
                            }
                        }
                    }
                }
            }

            foreach (var languageDirection in tmFile.TmLanguageDirections)
            {
                _tmService.SaveTmCacheStorage(context, tmFile, languageDirection);
            }

            return(updatedCount);
        }
Пример #4
0
        private int UpdateSystemFields(ProgressDialogContext context, List <TmTranslationUnit> translationUnits, IFileBasedTranslationMemory tm, List <User> uniqueUsers)
        {
            var updatedCount = 0;

            decimal iCurrent    = 0;
            decimal iTotalUnits = translationUnits.Count;
            var     groupsOf    = 200;

            var tusGroups = new List <List <TmTranslationUnit> > {
                new List <TmTranslationUnit>(translationUnits)
            };

            if (translationUnits.Count > groupsOf)
            {
                tusGroups = translationUnits.ChunkBy(groupsOf);
            }

            foreach (var tus in tusGroups)
            {
                iCurrent = iCurrent + tus.Count;
                if (context != null && context.CheckCancellationPending())
                {
                    break;
                }

                var progress = iCurrent / iTotalUnits * 100;
                context?.Report(Convert.ToInt32(progress), string.Format(StringResources.Updating_0_of_1_Translation_Units, iCurrent, iTotalUnits));

                var filteredTusToUpdate = new List <TmTranslationUnit>();
                foreach (var tu in tus)
                {
                    if (UpdateSystemFields(uniqueUsers, tu))
                    {
                        filteredTusToUpdate.Add(tu);
                    }
                }

                if (filteredTusToUpdate.Count > 0)
                {
                    var tusToUpdate = new List <TranslationUnit>();
                    foreach (var tu in filteredTusToUpdate)
                    {
                        if (tm.LanguageDirection.SourceLanguage.Name.Equals(tu.SourceSegment.Language) &&
                            tm.LanguageDirection.TargetLanguage.Name.Equals(tu.TargetSegment.Language))
                        {
                            var unit = _tmService.CreateTranslationUnit(tu, tm.LanguageDirection);

                            tusToUpdate.Add(unit);
                        }
                    }

                    if (tusToUpdate.Count > 0)
                    {
                        var results = tm.LanguageDirection.UpdateTranslationUnits(tusToUpdate.ToArray());
                        updatedCount += results.Count(result => result.Action != Sdl.LanguagePlatform.TranslationMemory.Action.Error);
                    }
                }
            }

            tm.Save();

            return(updatedCount);
        }