/// <summary>
        /// Creates a new workspace. Returns false if a workspace already exists
        /// </summary>
        /// <returns>If the creation was a success.</returns>
        public static bool Create()
        {
            if (Exists())
            {
                return(false);
            }

            if (DirectoryUtility.Create(WorkspaceFolderPath()))
            {
                if (!DirectoryUtility.Create(AutoGeneratedFolderPath()))
                {
                    return(false);
                }

                if (!DirectoryUtility.Create(ResourcesFolderFilePath()))
                {
                    return(false);
                }

                if (!DirectoryUtility.Create(DataFolderPath()))
                {
                    return(false);
                }

                if (!DirectoryUtility.Create(LanguageDataFolderPath()))
                {
                    return(false);
                }

                if (!GenerateCultureInfoCollection())
                {
                    return(false);
                }

                LanguageHandlerEditor.CreateRootResourceFile();

                AssetDatabase.Refresh();
                return(true);
            }

            return(false);
        }
        /// <summary>
        /// Generates the SmartCultureInfoCollection xml with all the available language infos and keeps any difference in old data
        /// as well.
        /// </summary>
        /// <returns>If the operation was successful</returns>
        public static bool GenerateCultureInfoCollection(SmartCultureInfoCollection previousCollection)
        {
            if (!DirectoryUtility.Create(CultureInfoDataFolderPath()))
            {
                return(false);
            }

            SmartCultureInfoCollection availableCultures = new SmartCultureInfoCollection();

            availableCultures.version = SmartCultureInfoCollection.LatestVersion;

            if (previousCollection != null)
            {
                //Add all cultures from the previous collection in case any one of them were custom made
                foreach (var cultureInfo in previousCollection.cultureInfos)
                {
                    availableCultures.AddCultureInfo(cultureInfo);
                }
            }

            //Get all the cultures from Microsofts CultureInfo in the System.Globalization namespace
            CultureInfo[] cultureInfos = CultureInfo.GetCultures(System.Globalization.CultureTypes.AllCultures);
            foreach (var cultureInfo in cultureInfos)
            {
                if (availableCultures.FindCulture(cultureInfo.Name) == null)
                {
                    availableCultures.AddCultureInfo(new SmartCultureInfo(cultureInfo.Name, cultureInfo.EnglishName, cultureInfo.NativeName, cultureInfo.TextInfo.IsRightToLeft));
                }
            }

            foreach (var cultureInfo in ExtraCultureInfos)
            {
                if (availableCultures.FindCulture(cultureInfo) == null)
                {
                    availableCultures.AddCultureInfo(new SmartCultureInfo(cultureInfo.languageCode, cultureInfo.englishName, cultureInfo.nativeName, cultureInfo.isRightToLeft));
                }
            }

            availableCultures.Serialize(CultureInfoCollectionFilePath());

            return(true);
        }