private void AddLanguageStringCollection(IDriveCustomizationStringReader driveCustomizationStringReader, IDriveCustomizationXmlProvider driveCustomizationXmlProvider)
        {
            try
            {
                List <ITranslation> softStrings = driveCustomizationStringReader.GetStringsFromDriveCustomization(driveCustomizationXmlProvider).ToList();
                int minId = softStrings.Min(t => t.StringId);
                int maxId = softStrings.Max(t => t.StringId);
                SoftStringCount = Convert.ToUInt16(maxId - minId + 1);// Convert.ToUInt16(softStrings.Count);

                LanguageStringCollections[0].Translations.AddRange(softStrings);
                //Find missing stringIds
                foreach (var als in LanguageStringCollections)
                {
                    var list   = als.Translations.Select(s => s.StringId).OrderBy(i => i);
                    var result = Enumerable.Range(minId, SoftStringCount).Except(list);
                    als.Translations.AddRange(
                        from missing in result
                        select new Translation()
                    {
                        IsSoftString = true,
                        StringId     = missing,
                        String       = String.Empty
                    }
                        );
                    als.Translations.Sort();
                }
                LanguageStringCollections.Sort();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }