예제 #1
0
 private void UpdateSelected()
 {
     foreach (var language in this.Languages)
     {
         language.IsSelected = CultureInfoComparer.DefaultEquals(language.Culture, Translator.CurrentCulture);
     }
 }
예제 #2
0
        private void SyncLanguages()
        {
            if (this.AutogenerateLanguages)
            {
                for (int i = this.Languages.Count - 1; i >= 0; i--)
                {
                    if (!Translator.Cultures.Contains(this.Languages[i].Culture, CultureInfoComparer.Default))
                    {
                        this.Languages.RemoveAt(i);
                    }
                }

                foreach (var cultureInfo in Translator.Cultures)
                {
                    if (this.Languages.Any(x => CultureInfoComparer.DefaultEquals(x.Culture, cultureInfo)))
                    {
                        continue;
                    }

                    var    language = new Language(cultureInfo);
                    string flag;
                    if (FlagNameResourceMap.TryGetValue(cultureInfo.TwoLetterISOLanguageName, out flag))
                    {
                        var key = new Uri($"pack://application:,,,/{this.GetType().Assembly.GetName().Name};component/{flag}", UriKind.Absolute);
                        language.FlagSource = key;
                    }

                    this.Languages.Add(language);
                }

                this.UpdateSelected();
            }
        }
예제 #3
0
 private static string CultureName(CultureInfo culture)
 {
     return(CultureInfoComparer.DefaultEquals(culture, CultureInfo.InvariantCulture)
                ? "invariant"
                : culture.TwoLetterISOLanguageName);
 }