public async Task <IEnumerable <Locale> > GetLocalesAsync()
        {
            await Initialize();

            try
            {
                return(tts.AvailableLanguages.Select(a => new Locale(a.Language, a.Country, a.DisplayName, string.Empty)));
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Unable to query language on new API, attempting older api: " + ex);
            }

            return(JavaLocale.GetAvailableLocales()
                   .Where(IsLocaleAvailable)
                   .Select(l => new Locale(l.Language, l.Country, l.DisplayName, string.Empty))
                   .GroupBy(c => c.ToString())
                   .Select(g => g.First()));
        }
        public async Task <IEnumerable <Locale> > GetLocalesAsync()
        {
            await Initialize();

            if (Platform.HasApiLevel(BuildVersionCodes.Lollipop))
            {
                try
                {
                    return(tts.AvailableLanguages.Select(a => new Locale(a.Language, a.Country, a.DisplayName, string.Empty)));
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Something went horribly wrong, defaulting to old implementation to get languages: " + ex);
                }
            }

            return(JavaLocale.GetAvailableLocales()
                   .Where(IsLocaleAvailable)
                   .Select(l => new Locale(l.Language, l.Country, l.DisplayName, string.Empty))
                   .GroupBy(c => c.ToString())
                   .Select(g => g.First()));
        }