Пример #1
0
        public static void ToRow(TranslationVal bean, TranslationRow row)
        {
            if (bean == null)
            {
                return;
            }

            row.CultureId = bean.CultureId;
            row.Key       = bean.Key;
            row.Value     = bean.Value;
        }
Пример #2
0
        /// <summary>
        /// Create data in database
        /// </summary>
        /// <param name="translation">Data</param>
        /// <returns>insert data</returns>
        public TranslationVal Create(TranslationVal translation)
        {
            if (translation == null || translation.CultureId < 0 || string.IsNullOrWhiteSpace(translation.Key))
            {
                return(null);
            }

            var row = new TranslationRow();

            TranslationTransformer.ToRow(translation, row);
            _dbContext.Insert(row);

            return(TranslationTransformer.ToBean(row));
        }
Пример #3
0
        internal static TranslationVal ToBean(TranslationRow row)
        {
            if (row == null)
            {
                return(null);
            }

            var bean = new TranslationVal();

            bean.CultureId = row.CultureId;
            bean.Key       = row.Key;
            bean.Value     = row.Value;
            return(bean);
        }
Пример #4
0
            public static List <TranslationRow> LoadRows(IXLWorksheet worksheet)
            {
                var result = new List <TranslationRow>();

                var cultures             = ReadCultures(worksheet);
                var commentColumnIndexes = cultures.Select(x => x.CommentColumnIndex);
                var textColumnIndexes    = cultures.Select(x => x.TextColumnIndex);
                int lastColumn           = commentColumnIndexes.Concat(textColumnIndexes).Max(x => x);

                foreach (var row in worksheet.RowsUsed().Skip(1))
                {
                    var textValues = row.Cells(1, lastColumn + 1).Select(cell => (cell.Value != null ? cell.Value.ToString() : null)).ToList <String>();

                    if (textValues.Any())
                    {
                        var customer = new TranslationRow();
                        customer.ID  = textValues[0];
                        customer.Key = textValues[1];

                        foreach (var culture in cultures)
                        {
                            if (culture.TextColumnIndex > 0 && culture.TextColumnIndex < textValues.Count &&
                                !String.IsNullOrWhiteSpace(textValues[culture.TextColumnIndex]))
                            {
                                customer.Translations.Add(culture.Culture, textValues[culture.TextColumnIndex]);
                            }
                            if (culture.CommentColumnIndex > 0 && culture.CommentColumnIndex < textValues.Count &&
                                !String.IsNullOrWhiteSpace(textValues[culture.CommentColumnIndex]))
                            {
                                customer.Comments.Add(culture.Culture, textValues[culture.CommentColumnIndex]);
                            }
                        }
                        result.Add(customer);
                    }
                    else
                    {
                        break;
                    }
                }

                return(result);
            }
Пример #5
0
        public static void UpdateInDB(string key, string value, ApplicationDbContext dbContext = null, int cultureId = -1)
        {
            if (dbContext == null)
            {
                dbContext = new ApplicationDbContext();
            }

            var localizer = GetLocalizer() as StringLocalizer;

            localizer.RemoveTranslationInDictionnary("DB_" + key);

            int currentCultureId;

            if (cultureId == -1)
            {
                currentCultureId = GetCurrentCultureId();
            }
            else
            {
                currentCultureId = cultureId;
            }
            TranslationRow row = dbContext.Translation.Where(t => t.CultureId == currentCultureId && t.Key.ToLower() == key.ToLower()).FirstOrDefault();

            if (row == null)
            {
                row           = new TranslationRow();
                row.CultureId = currentCultureId;
                row.Key       = key;
                row.Value     = value;
                dbContext.Translation.Add(row);
            }
            else
            {
                row.Value = value;
            }
            dbContext.SaveChanges();
        }
Пример #6
0
            public static List<TranslationRow> LoadRows(IXLWorksheet worksheet)
            {
                var result = new List<TranslationRow>();

                var cultures = ReadCultures(worksheet).ToList();

                foreach (var row in worksheet.RowsUsed().Skip(1))
                {
                    var textValues = row.Cells(1, (cultures.Count * 2) + 2).Select(cell => (cell.Value != null ? cell.Value.ToString() : null)).ToList();

                    if (textValues.Any())
                    {
                        var customer = new TranslationRow
                                           {
                                               ID = textValues[0],
                                               Key = textValues[1]
                                           };

                        foreach(var culture in cultures)
                        {
                            if (culture.TextColumnIndex > 0 && culture.TextColumnIndex < textValues.Count &&
                                !String.IsNullOrWhiteSpace(textValues[culture.TextColumnIndex]))
                                customer.Translations.Add(culture.Culture, textValues[culture.TextColumnIndex]);
                            if (culture.CommentColumnIndex > 0 && culture.CommentColumnIndex < textValues.Count
                                && !String.IsNullOrWhiteSpace(textValues[culture.CommentColumnIndex]))
                                customer.Comments.Add(culture.Culture, textValues[culture.CommentColumnIndex]);
                        }
                        result.Add(customer);
                    }
                    else
                    {
                        break;
                    }
                }

                return result;
            }
Пример #7
0
        public int Import(string filePath)
        {
            int count = 0;

            using (var workbook = new XLWorkbook(filePath, XLEventTracking.Disabled))
            {
                foreach (var worksheet in workbook.Worksheets)
                {
                    string projectName = getProjectName(worksheet);
                    if (!Solution.Projects.ContainsKey(projectName))
                    {
                        throw new ProjectUnknownException(projectName);
                    }

                    var project      = Solution.Projects[projectName];
                    var translations = TranslationRow.LoadRows(worksheet);

                    foreach (var t in translations)
                    {
                        ResourceDataGroupBase dataGroup = null;
                        if (!project.ResxGroups[t.ID].AllData.ContainsKey(t.Key))
                        {
                            dataGroup = project.ResxGroups[t.ID].CreateDataGroup(t.Key);
                            project.ResxGroups[t.ID].AllData.Add(t.Key, dataGroup);
                        }
                        else
                        {
                            dataGroup = project.ResxGroups[t.ID].AllData[t.Key];
                        }

                        foreach (var te in t.Translations)
                        {
                            if (!dataGroup.ResxData.ContainsKey(te.Key))
                            {
                                project.ResxGroups[t.ID].SetResourceData(t.Key, te.Value, te.Key);
                                count++;
                            }
                            else if (dataGroup.ResxData[te.Key].Value != te.Value)
                            {
                                dataGroup.ResxData[te.Key].Value = te.Value;
                                count++;
                            }
                        }
                        foreach (var te in t.Comments)
                        {
                            if (!dataGroup.ResxData.ContainsKey(te.Key))
                            {
                                project.ResxGroups[t.ID].SetResourceDataComment(t.Key, te.Value, te.Key);
                                count++;
                            }
                            else if (dataGroup.ResxData[te.Key].Comment != te.Value)
                            {
                                dataGroup.ResxData[te.Key].Comment = te.Value;
                                count++;
                            }
                        }
                    }
                }
            }
            return(count);
        }