private void DeleteLanguageButton_Tapped(object sender, EventArgs e)
        {
            OcrLanguage ocrLanguage = (sender as SvgImage).BindingContext as OcrLanguage;

            if (ocrLanguage == null)
            {
                return;
            }

            OcrLanguageManager.DeleteLanguage(ocrLanguage.Language);

            ocrLanguage.IsDownloadable = true;

            // Manually remove from active/inactive languages, then manually add to downloadable languages
            if (ActiveLanguages.Contains(ocrLanguage))
            {
                ActiveLanguages.Remove(ocrLanguage);
            }
            else if (InactiveLanguages.Contains(ocrLanguage))
            {
                InactiveLanguages.Remove(ocrLanguage);
            }

            if (!DownloadableLanguages.Contains(ocrLanguage))
            {
                // Take the language from OcrLanguageManager.DownloadableLanguages instead of the local downloadable languages list since that one
                // has the updated class members like file size and what not.
                var langs = OcrLanguageManager.DownloadableLanguages.Where(l => l.Language.Equals(ocrLanguage.Language));
                if (langs != null && langs.Count() > 0)
                {
                    ocrLanguage = langs.ElementAt(0);
                }

                DownloadableLanguages.Add(ocrLanguage);
            }

            ReloadCachedLanguagesInfo();
        }
        private void PopulateActiveInactiveLanguages()
        {
            InactiveLanguages.Clear();

            foreach (OcrLanguage localLanguage in OcrLanguageManager.LocalLanguages)
            {
                localLanguage.IsDefaultLanguage = false;
                if (!ActiveLanguages.Any(l => l.Language.Equals(localLanguage.Language)))
                {
                    InactiveLanguages.Add(localLanguage);
                }
            }

            foreach (OcrLanguage activeLanguage in ActiveLanguages)
            {
                activeLanguage.IsDefaultLanguage = ActiveLanguages[0].Equals(activeLanguage);
            }

            var inactiveLanguages = InactiveLanguages.OrderBy(firstOrder => firstOrder.CanBeDeleted).ThenBy(secondOrder => secondOrder.LocalizedName);

            InactiveLanguages = new ObservableCollection <OcrLanguage>(inactiveLanguages);

            RefreshActiveInactiveListViews();
        }