Пример #1
0
        public CultureInfo GetCurrentCultureInfo(ILanguageConvertor languageConvertor)
        {
            if (_cultureInfo != null)
            {
                return(_cultureInfo);
            }

            var netLanguage = "en";

            if (languageConvertor is null)
            {
                return(new CultureInfo(netLanguage));
            }

            if (NSLocale.PreferredLanguages.Length > 0)
            {
                var pref = NSLocale.PreferredLanguages[0];
                netLanguage = languageConvertor.IOsToDotnetLanguage(pref);
            }

            try
            {
                _cultureInfo = new CultureInfo(netLanguage);
            }
            catch (CultureNotFoundException)
            {
                // iOS locale not valid .NET culture (e.g. "en-ES" : English in Spain)
                // fallback to first characters, in this case "en"
                try
                {
                    var fallback = languageConvertor.IOsToDotnetFallbackLanguage(netLanguage);
                    _cultureInfo = new CultureInfo(fallback);
                }
                catch (CultureNotFoundException)
                {
                    // iOS language not valid .NET culture, falling back to English
                    _cultureInfo = new CultureInfo(netLanguage);
                }
            }

            return(_cultureInfo);
        }
        public CultureInfo GetCurrentCultureInfo(ILanguageConvertor languageConvertor)
        {
            if (_cultureInfo != null)
            {
                return(_cultureInfo);
            }

            var netLanguage = "en";

            if (languageConvertor is null)
            {
                return(new CultureInfo(netLanguage));
            }

            var androidLocale = Java.Util.Locale.Default;

            netLanguage = languageConvertor.AndroidToDotnetLanguage(androidLocale.ToString().Replace("_", "-"));
            try
            {
                _cultureInfo = new CultureInfo(netLanguage);
            }
            catch (CultureNotFoundException)
            {
                // android locale not valid .NET culture (e.g. "en-ES" : English in Spain)
                // fallback to first characters, in this case "en"
                try
                {
                    var fallback = languageConvertor.AndroidToDotnetFallbackLanguage(netLanguage);
                    _cultureInfo = new CultureInfo(fallback);
                }
                catch (CultureNotFoundException)
                {
                    // android language not valid .NET culture, falling back to English
                    _cultureInfo = new CultureInfo(netLanguage);
                }
            }

            return(_cultureInfo);
        }
 /// <inheritdoc />
 public TranslateManager(ILocalizeHelper localizeHelper, ILanguageConvertor languageConvertor)
 {
     _localizeHelper    = localizeHelper;
     _languageConvertor = languageConvertor;
 }