Используйте одно и то же решение для приложений CSharp Console, .NET Core, Blazor или Xamarin для iOS и Android.
Давайте сегодня улучшим пользовательский опыт наших приложений, показав смайлики с флагами вместо старых простых названий стран или кодов стран. Использование эмодзи в файлах изображений стран значительно повышает производительность и эффективность разработки. Его удивительно легко и безопасно реализовать в ваших приложениях.
Используя System.Globalization
и System.Linq
, ниже приведен пример того, как это выглядит в консольном приложении:
Следя за форумом советов по javascript, я нашел этот изящный трюк. Но я не смог найти хорошего решения в C#/.NET. Но через 30 дней после того, как я собирался сдаться, я нашел решение, которое отлично работает, и подумал, что им стоит поделиться! Если вы не хотите запускать его с помощью статических функций, вы можете просто вызвать GetFlag()
и передать название страны в функцию:
public string GetFlag(string country) { var regions = CultureInfo.GetCultures (CultureTypes. SpecificCultures).Select(x => new RegionInfo(x.LCID)); var englishRegion = regions.FirstOrDefault(region => region.EnglishName.Contains(country)); if (englishRegion == null) return "🏳"; var countryAbbrev = englishRegion.TwoLetterISORegionName; return IsoCountryCodeToFlagEmoji(countryAbbrev); } public string IsoCountryCodeToFlagEmoji(string countryCode) => string.Concat(countryCode.ToUpper().Select(x => char.ConvertFromUtf32(x + 0x1F1A5)));
Если у вас уже есть двузначный код страны, вы можете пропустить GetFlag()
, просто вызвав функцию IsoCountryCodeToFlagEmoji()
.
Надеюсь, вы нашли это полезным!
Бонусный код конвертера XAML:
Для тех, кто любит конвертеры (например, Charlin и Ammar), вы можете просто использовать этот код, чтобы преобразовать название страны, полученное из свойства ViewModel, в эмодзи:
public class CountryToFlagConverter : Xamarin.Forms.IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) => GetFlag((string)value); public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) => value; private string GetFlag(string country) { var regions = CultureInfo.GetCultures(CultureTypes.SpecificCultures).Select(x => new RegionInfo(x.LCID)); var englishRegion = regions.FirstOrDefault(region => region.EnglishName.Contains(country)); if (englishRegion == null) return "🏳"; var countryAbbrev = englishRegion.TwoLetterISORegionName; return IsoCountryCodeToFlagEmoji(countryAbbrev); } private string IsoCountryCodeToFlagEmoji(string countryCode) => string.Concat(countryCode.ToUpper().Select(x => char.ConvertFromUtf32(x + 0x1F1A5))); }
После создания конвертера вы можете добавить его ключ в ResourceDictionary любой Страницы вот так:<local:CountryToFlagConverter x:Key=”FlagDetermination”/>
А вот как вы могли бы использовать это в своем XAML:
<Label Text="{Binding GroupCountryName}" TextColor="#424242" HorizontalOptions="Start" FontFamily="OpenSansBoldFont" FontSize="22" /> <Label Text="{Binding GroupCountryName ,Converter={StaticResource FlagDetermination}}" HorizontalOptions="EndAndExpand" FontSize="30" />
Не стесняйтесь обращаться ко мне с вопросами в Twitter или Linkedin и ознакомьтесь с нашим портфолио! Кроме того, попробуйте нашу бета-версию Приложение iOS BeAware для глухих или наше видео на YouTube Начало работы с Xamarin Native!