/// <summary>
        /// Changes the culture.
        /// </summary>
        /// <param name="cultureId">The culture ID.</param>
        public static void ChangeCulture(string cultureId)
        {
            Culture newCulture = Cultures.FirstOrDefault(c => c.Identifier.ToUpper(CultureInfo.InvariantCulture) == cultureId.ToUpper(CultureInfo.InvariantCulture));

            Debug.Assert(newCulture != null, "new culture is null");

            if (newCulture != CurrentCulture)
            {
                if (CurrentCulture != null)
                {
                    CurrentCulture.UpdateSelected(false);
                }

                Thread.CurrentThread.CurrentUICulture = newCulture.Info;

                newCulture.UpdateSelected(true);
                CurrentCulture = newCulture;

                foreach (var culture in Cultures)
                {
                    culture.UpdateName();
                }

                if (CultureChanged != null)
                {
                    CultureChanged(null, new EventArgs());
                }
            }
        }
Example #2
0
        private void Init(string theme)
        {
            theme = theme.ToLower();

            //ищем полное совпадение
            ThemeCultureInfo selectedCulture = Cultures.FirstOrDefault(x => x.Name.ToLower() == theme);

            if (selectedCulture != null)
            {
                CurrentCulture = selectedCulture;
                return;
            }

            //если не находим полное совпадение культуры, то ищем совпадение с более общей культурой
            if (theme.IndexOf('-') != -1)
            {
                theme = theme.Remove(theme.IndexOf('-'));
            }

            selectedCulture = Cultures.FirstOrDefault(x => x.Name.ToLower() == theme);
            if (selectedCulture != null)
            {
                CurrentCulture = selectedCulture;
            }
            else
            {
                //если не нашли ни одного совпадение - назначаем дефолтную культуру(первую)
                CurrentCulture = Cultures.First();
            }
        }
Example #3
0
        private static async Task AddAdditionalCultures()
        {
            var isSuccessful = true;

            try
            {
                var additionalCulturesTextData = File.ReadAllLines(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"data\additionalCultures.txt"));
                if (additionalCulturesTextData.Any())
                {
                    foreach (var additionalCultureInfo in additionalCulturesTextData)
                    {
                        var additionalCultureSplitted = new[] { additionalCultureInfo.Substring(0, additionalCultureInfo.IndexOf(" ", StringComparison.Ordinal)), additionalCultureInfo.Substring(additionalCultureInfo.IndexOf(" ", StringComparison.Ordinal) + 1) };
                        var isoSplitted       = additionalCultureSplitted[0].Split('-');
                        var parentCultureIso  = isoSplitted[0];
                        var additionalCulture = new CCulture {
                            ISO = additionalCultureSplitted[0]
                        };
                        if (Cultures.FirstOrDefault(culture => culture.ISO == parentCultureIso) != null)
                        {
                            additionalCulture.Parent      = Cultures.First(culture => culture.ISO == parentCultureIso);
                            additionalCulture.DisplayName = string.Join(" ", additionalCulture.Parent.DisplayName, additionalCultureSplitted[1]);
                        }
                        else
                        {
                            additionalCulture.DisplayName = additionalCultureSplitted[1];
                        }
                        Cultures.Add(additionalCulture);
                    }
                }
                else
                {
                    WriteToConsole("File with additional cultures is empty", MessageType.Error);
                    isSuccessful = false;
                }
            }
            catch (Exception ex)
            {
                WriteToConsole(ex.Message, MessageType.Error);
                isSuccessful = false;
            }
            if (!isSuccessful)
            {
                await ShowError("Additional cultures are not loaded. See console for details.");
            }
        }
Example #4
0
        public IResourceCultureBuilder Culture(string cultureName)
        {
            if (string.IsNullOrEmpty(cultureName))
            {
                throw new ArgumentNullException(nameof(cultureName));
            }

            var rcb = Cultures.FirstOrDefault(res => res.CultureName == cultureName);

            if (rcb != null)
            {
                return(rcb);
            }

            rcb = new ResourceCultureBuilder(this, cultureName);
            Cultures.Add(rcb);

            return(rcb);
        }
Example #5
0
 public override string ToString() => $"{DisplayNames.FirstOrDefault()} : {Cultures.FirstOrDefault()}";