Last active
February 3, 2024 06:24
-
-
Save Lavmint/3af912be060cfe596c79dbca119e055f to your computer and use it in GitHub Desktop.
Country emoji resolver for ISO-639-1 languages (AI generated)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import Foundation | |
| protocol CountryEmojiResolver { | |
| func emoji(for country: String) -> String | |
| } | |
| class StandartCoutryEmojiResolver: CountryEmojiResolver { | |
| func emoji(for country: String) -> String { | |
| let languageToFlag: [String: String] = [ | |
| "aa": flagEmoji(for: "ET"), | |
| "ab": flagEmoji(for: "GE"), | |
| "ae": flagEmoji(for: "IR"), | |
| "af": flagEmoji(for: "ZA"), | |
| "ak": flagEmoji(for: "GH"), | |
| "am": flagEmoji(for: "ET"), | |
| "an": flagEmoji(for: "ES"), | |
| "ar": flagEmoji(for: "SA"), | |
| "as": flagEmoji(for: "IN"), | |
| "av": flagEmoji(for: "RU"), | |
| "ay": flagEmoji(for: "BO"), | |
| "az": flagEmoji(for: "AZ"), | |
| "ba": flagEmoji(for: "RU"), | |
| "be": flagEmoji(for: "BY"), | |
| "bg": flagEmoji(for: "BG"), | |
| "bi": flagEmoji(for: "VU"), | |
| "bm": flagEmoji(for: "ML"), | |
| "bn": flagEmoji(for: "BD"), | |
| "br": flagEmoji(for: "FR"), | |
| "bs": flagEmoji(for: "BA"), | |
| "ca": flagEmoji(for: "AD"), | |
| "ch": flagEmoji(for: "GU"), | |
| "co": flagEmoji(for: "FR"), | |
| "cr": flagEmoji(for: "CA"), | |
| "cs": flagEmoji(for: "CZ"), | |
| "cv": flagEmoji(for: "RU"), | |
| "cy": flagEmoji(for: "GB"), | |
| "da": flagEmoji(for: "DK"), | |
| "de": flagEmoji(for: "DE"), | |
| "dv": flagEmoji(for: "MV"), | |
| "dz": flagEmoji(for: "BT"), | |
| "ee": flagEmoji(for: "GH"), | |
| "el": flagEmoji(for: "GR"), | |
| "en": flagEmoji(for: "GB"), | |
| "es": flagEmoji(for: "ES"), | |
| "et": flagEmoji(for: "EE"), | |
| "eu": flagEmoji(for: "ES"), | |
| "fa": flagEmoji(for: "IR"), | |
| "ff": flagEmoji(for: "SN"), | |
| "fi": flagEmoji(for: "FI"), | |
| "fj": flagEmoji(for: "FJ"), | |
| "fo": flagEmoji(for: "FO"), | |
| "fr": flagEmoji(for: "FR"), | |
| "fy": flagEmoji(for: "NL"), | |
| "ga": flagEmoji(for: "IE"), | |
| "gd": flagEmoji(for: "GB"), | |
| "gl": flagEmoji(for: "ES"), | |
| "gn": flagEmoji(for: "PY"), | |
| "gu": flagEmoji(for: "IN"), | |
| "gv": flagEmoji(for: "IM"), | |
| "ha": flagEmoji(for: "NG"), | |
| "he": flagEmoji(for: "IL"), | |
| "hi": flagEmoji(for: "IN"), | |
| "ho": flagEmoji(for: "PG"), | |
| "hr": flagEmoji(for: "HR"), | |
| "ht": flagEmoji(for: "HT"), | |
| "hu": flagEmoji(for: "HU"), | |
| "hy": flagEmoji(for: "AM"), | |
| "hz": flagEmoji(for: "NA"), | |
| "id": flagEmoji(for: "ID"), | |
| "ii": flagEmoji(for: "CN"), | |
| "ik": flagEmoji(for: "US"), | |
| "is": flagEmoji(for: "IS"), | |
| "it": flagEmoji(for: "IT"), | |
| "iu": flagEmoji(for: "CA"), | |
| "ja": flagEmoji(for: "JP"), | |
| "ka": flagEmoji(for: "GE"), | |
| "kg": flagEmoji(for: "CD"), | |
| "ki": flagEmoji(for: "KE"), | |
| "kj": flagEmoji(for: "AO"), | |
| "kk": flagEmoji(for: "KZ"), | |
| "kl": flagEmoji(for: "GL"), | |
| "km": flagEmoji(for: "KH"), | |
| "kn": flagEmoji(for: "IN"), | |
| "ko": flagEmoji(for: "KR"), | |
| "ks": flagEmoji(for: "IN"), | |
| "ku": flagEmoji(for: "IQ"), | |
| "kv": flagEmoji(for: "RU"), | |
| "kw": flagEmoji(for: "GB"), | |
| "ky": flagEmoji(for: "KG"), | |
| "la": flagEmoji(for: "VA"), | |
| "lb": flagEmoji(for: "LU"), | |
| "lg": flagEmoji(for: "UG"), | |
| "li": flagEmoji(for: "NL"), | |
| "ln": flagEmoji(for: "CD"), | |
| "lo": flagEmoji(for: "LA"), | |
| "lt": flagEmoji(for: "LT"), | |
| "lu": flagEmoji(for: "CD"), | |
| "lv": flagEmoji(for: "LV"), | |
| "mg": flagEmoji(for: "MG"), | |
| "mh": flagEmoji(for: "MH"), | |
| "mi": flagEmoji(for: "NZ"), | |
| "mk": flagEmoji(for: "MK"), | |
| "ml": flagEmoji(for: "IN"), | |
| "mn": flagEmoji(for: "MN"), | |
| "mo": flagEmoji(for: "MD"), | |
| "mr": flagEmoji(for: "IN"), | |
| "ms": flagEmoji(for: "MY"), | |
| "mt": flagEmoji(for: "MT"), | |
| "my": flagEmoji(for: "MM"), | |
| "na": flagEmoji(for: "NR"), | |
| "nd": flagEmoji(for: "ZW"), | |
| "ne": flagEmoji(for: "NP"), | |
| "ng": flagEmoji(for: "NA"), | |
| "nl": flagEmoji(for: "NL"), | |
| "no": flagEmoji(for: "NO"), | |
| "nr": flagEmoji(for: "ZA"), | |
| "nv": flagEmoji(for: "US"), | |
| "oc": flagEmoji(for: "FR"), | |
| "oj": flagEmoji(for: "CA"), | |
| "om": flagEmoji(for: "ET"), | |
| "or": flagEmoji(for: "IN"), | |
| "os": flagEmoji(for: "GE"), | |
| "pa": flagEmoji(for: "IN"), | |
| "pi": flagEmoji(for: "IN"), | |
| "pl": flagEmoji(for: "PL"), | |
| "ps": flagEmoji(for: "AF"), | |
| "pt": flagEmoji(for: "PT"), | |
| "qu": flagEmoji(for: "PE"), | |
| "rm": flagEmoji(for: "CH"), | |
| "rn": flagEmoji(for: "BI"), | |
| "ro": flagEmoji(for: "RO"), | |
| "ru": flagEmoji(for: "RU"), | |
| "rw": flagEmoji(for: "RW"), | |
| "sa": flagEmoji(for: "IN"), | |
| "sc": flagEmoji(for: "IT"), | |
| "sd": flagEmoji(for: "PK"), | |
| "sg": flagEmoji(for: "CF"), | |
| "si": flagEmoji(for: "LK"), | |
| "sk": flagEmoji(for: "SK"), | |
| "sl": flagEmoji(for: "SI"), | |
| "sm": flagEmoji(for: "WS"), | |
| "sn": flagEmoji(for: "ZW"), | |
| "so": flagEmoji(for: "SO"), | |
| "sq": flagEmoji(for: "AL"), | |
| "sr": flagEmoji(for: "RS"), | |
| "ss": flagEmoji(for: "SZ"), | |
| "st": flagEmoji(for: "LS"), | |
| "su": flagEmoji(for: "ID"), | |
| "sv": flagEmoji(for: "SE"), | |
| "sw": flagEmoji(for: "TZ"), | |
| "ta": flagEmoji(for: "IN"), | |
| "te": flagEmoji(for: "IN"), | |
| "tg": flagEmoji(for: "TJ"), | |
| "th": flagEmoji(for: "TH"), | |
| "ti": flagEmoji(for: "ET"), | |
| "tk": flagEmoji(for: "TM"), | |
| "tl": flagEmoji(for: "PH"), | |
| "tn": flagEmoji(for: "BW"), | |
| "to": flagEmoji(for: "TO"), | |
| "tr": flagEmoji(for: "TR"), | |
| "ts": flagEmoji(for: "ZA"), | |
| "tt": flagEmoji(for: "RU"), | |
| "tw": flagEmoji(for: "GH"), | |
| "ty": flagEmoji(for: "PF"), | |
| "ug": flagEmoji(for: "CN"), | |
| "uk": flagEmoji(for: "UA"), | |
| "ur": flagEmoji(for: "PK"), | |
| "uz": flagEmoji(for: "UZ"), | |
| "ve": flagEmoji(for: "ZA"), | |
| "vi": flagEmoji(for: "VN"), | |
| "wa": flagEmoji(for: "BE"), | |
| "wo": flagEmoji(for: "SN"), | |
| "xh": flagEmoji(for: "ZA"), | |
| "yi": flagEmoji(for: "IL"), | |
| "yo": flagEmoji(for: "NG"), | |
| "za": flagEmoji(for: "CN"), | |
| "zu": flagEmoji(for: "ZA"), | |
| "bo": flagEmoji(for: "CN"), | |
| "ig": flagEmoji(for: "NG"), | |
| "ce": flagEmoji(for: "RU"), | |
| "cu": flagEmoji(for: "RU"), | |
| "jv": flagEmoji(for: "ID"), | |
| "se": flagEmoji(for: "NO"), | |
| "nb": flagEmoji(for: "NO"), | |
| "nn": flagEmoji(for: "NO"), | |
| "ny": flagEmoji(for: "MW"), | |
| "sh": flagEmoji(for: "RS"), | |
| "eo": "π", | |
| "io": "π", | |
| "ia": "π", | |
| "ie": "π", | |
| "vo": "π", | |
| ] | |
| return languageToFlag[country.lowercased()] ?? "" | |
| } | |
| func flagEmoji(for countryCode: String) -> String { | |
| let base: UInt32 = 127397 | |
| var s = "" | |
| for v in countryCode.uppercased().unicodeScalars { | |
| guard let scalar = UnicodeScalar(base + v.value) else { continue } | |
| s.unicodeScalars.append(scalar) | |
| } | |
| return s | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment