Skip to content

Instantly share code, notes, and snippets.

@coryl
Last active July 20, 2021 17:10
Show Gist options
  • Save coryl/f7f2e640e40ec078493199a2837ed561 to your computer and use it in GitHub Desktop.
Save coryl/f7f2e640e40ec078493199a2837ed561 to your computer and use it in GitHub Desktop.
Google Speech-to-Text Language Enum: A convenient enum for categorizing language codes. Useful for filling in dropdown fields.
// GoogleSpeechLanguage.swift
//
// Created by Cory Liu on 2020/12/31.
//https://cloud.google.com/speech-to-text/docs/languages
//Note: Google accepts BCP47 language codes with capital letters ie. "en-US" as well as lower case BPC47 codes ie. "en-us".
//However in their response they return lowercase: "en-us". For the purposes of my project, I needed to reinitialize Google's response
//into this language enum object. Hence all case values are lower case.
enum GoogleSpeechLanguage: String, CaseIterable {
case
afZA = "af-za",
sqAL = "sq-al",
amET = "am-et",
arDZ = "ar-dz",
arBH = "ar-bh",
arEG = "ar-eg",
arIQ = "ar-iq",
arIL = "ar-il",
arJO = "ar-jo",
arKW = "ar-kw",
arLB = "ar-lb",
arMA = "ar-ma",
arOM = "ar-om",
arQA = "ar-qa",
arSA = "ar-sa",
arPS = "ar-ps",
arTN = "ar-tn",
arAE = "ar-ae",
arYE = "ar-ye",
hyAM = "hy-am",
azAZ = "az-az",
euES = "eu-es",
bnBD = "bn-bd",
bnIN = "bn-in",
bsBA = "bs-ba",
bgBG = "bg-bg",
myMM = "my-mm",
caES = "ca-es",
yueHantHK = "yue-hant-hk",
zh = "cmn-hans-cn",
zhTW = "cmn-hant-tw",
hrHR = "hr-hr",
csCZ = "cs-cz",
daDK = "da-dk",
nlBE = "nl-be",
nlNL = "nl-nl",
enAU = "en-au",
enCA = "en-ca",
enGH = "en-gh",
enHK = "en-hk",
enIN = "en-in",
enIE = "en-ie",
enKE = "en-ke",
enNZ = "en-nz",
enNG = "en-ng",
enPK = "en-pk",
enPH = "en-ph",
enSG = "en-sg",
enZA = "en-za",
enTZ = "en-tz",
enGB = "en-gb",
enUS = "en-us",
etEE = "et-ee",
filPH = "fil-ph",
fiFI = "fi-fi",
frBE = "fr-be",
frCA = "fr-ca",
frFR = "fr-fr",
frCH = "fr-ch",
glES = "gl-es",
kaGE = "ka-ge",
deAT = "de-at",
deDE = "de-de",
deCH = "de-ch",
elGR = "el-gr",
guIN = "gu-in",
iwIL = "iw-il",
hiIN = "hi-in",
huHU = "hu-hu",
isIS = "is-is",
idID = "is-id",
itIT = "it-it",
itCH = "it-ch",
jaJP = "ja-jp",
jvID = "jv-id",
knIN = "kn-in",
kmKH = "km-kh",
koKR = "ko-kr",
loLA = "lo-la",
lvLV = "lv-lv",
ltLT = "lt-lt",
mkMK = "ms-mk",
msMY = "ms-my",
mlIN = "ml-in",
mrIN = "mr-in",
mnMN = "mn-mn",
neNP = "ne-np",
noNO = "no-no",
faIR = "fa-ir",
plPL = "pl-pl",
ptBR = "pt-br",
ptPT = "pt-pt",
paGuruIN = "pa-guru-in",
roRO = "ro-ro",
ruRU = "ru-ru",
srRS = "sr-rs",
siLK = "si-lk",
skSK = "sk-sk",
slSI = "sl-si",
esAR = "es-ar",
esBO = "es-bo",
esCL = "es-cl",
esCO = "es-co",
esCR = "es-cr",
esDO = "es-do",
esEC = "es-ec",
esSV = "es-sv",
esGT = "es-gt",
esHN = "es-hn",
esMX = "es-mx",
esNI = "es-ni",
esPA = "es-pa",
esPY = "es-py",
esPE = "es-pe",
esPR = "es-pr",
esES = "es-es",
esUS = "es-us",
esUY = "es-uy",
esVE = "es-ve",
suID = "su-id",
swKE = "sw-ke",
swTZ = "sw-tz",
svSE = "sv-se",
taIN = "ta-in",
taMY = "ta-my",
taSG = "ta-sg",
taLK = "ta-lk",
teIN = "te-in",
thTH = "th-th",
trTR = "tr-tr",
ukUA = "uk-ua",
urIN = "ur-in",
urPK = "ur-pk",
uzUZ = "uz-uz",
viVN = "vi-vn",
zuZA = "zu-za"
var BCP47: String {
get {
return self.rawValue
}
}
var name: String {
switch self {
case .afZA:
return "Afrikaans (South Africa)"
case .sqAL:
return "Albanian (Albania)"
case .amET:
return "Amharic (Ethiopia)"
case .arDZ:
return "Arabic (Algeria)"
case .arBH:
return "Arabic (Bahrain)"
case .arEG:
return "Arabic (Egypt)"
case .arIQ:
return "Arabic (Iraq)"
case .arIL:
return "Arabic (Israel)"
case .arJO:
return "Arabic (Jordan)"
case .arKW:
return "Arabic (Kuwait)"
case .arLB:
return "Arabic (Lebanon)"
case .arMA:
return "Arabic (Morocco)"
case .arOM:
return "Arabic (Oman)"
case .arQA:
return "Arabic (Qatar)"
case .arSA:
return "Arabic (Saudi Arabia)"
case .arPS:
return "Arabic (State of Palestine)"
case .arTN:
return "Arabic (Tunisia)"
case .arAE:
return "Arabic (United Arab Emirates)"
case .arYE:
return "Arabic (Yemen)"
case .hyAM:
return "Armenian (Armenia)"
case .azAZ:
return "Azerbaijani (Azerbaijan)"
case .euES:
return "Basque (Spain)"
case .bnBD:
return "Bengali (Bangladesh)"
case .bnIN:
return "Bengali (India)"
case .bsBA:
return "Bosnian (Bosnia and Herzegovina)"
case .bgBG:
return "Bulgarian (Bulgaria)"
case .myMM:
return "Burmese (Myanmar)"
case .caES:
return "Catalan (Spain)"
case .yueHantHK:
return "Chinese, Cantonese (Traditional Hong Kong)"
case .zh:
return "Chinese, Mandarin (Simplified, China)"
case .zhTW:
return "Chinese, Mandarin (Traditional, Taiwan)"
case .hrHR:
return "Croatian (Croatia)"
case .csCZ:
return "Czech (Czech Republic)"
case .daDK:
return "Danish (Denmark)"
case .nlBE:
return "Dutch (Belgium)"
case .nlNL:
return "Dutch (Netherlands)"
case .enAU:
return "English (Australia)"
case .enCA:
return "English (Canada)"
case .enGH:
return "English (Ghana)"
case .enHK:
return "English (Hong Kong)"
case .enIN:
return "English (India)"
case .enIE:
return "English (Ireland)"
case .enKE:
return "English (Kenya)"
case .enNZ:
return "English (New Zealand)"
case .enNG:
return "English (Nigeria)"
case .enPK:
return "English (Pakistan)"
case .enPH:
return "English (Philippines)"
case .enSG:
return "English (Singapore)"
case .enZA:
return "English (South Africa)"
case .enTZ:
return "English (Tanzania)"
case .enGB:
return "English (United Kingdom)"
case .enUS:
return "English (United States)"
case .etEE:
return "Estonian (Estonia)"
case .filPH:
return "Filipino (Philippines)"
case .fiFI:
return "Finnish (Finland)"
case .frBE:
return "French (Belgium)"
case .frCA:
return "French (Canada)"
case .frFR:
return "French (France)"
case .frCH:
return "French (Switzerland)"
case .glES:
return "Galician (Spain)"
case .kaGE:
return "Georgian (Georgia)"
case .deAT:
return "German (Austria)"
case .deDE:
return "German (Germany)"
case .deCH:
return "German (Switzerland)"
case .elGR:
return "Greek (Greece)"
case .guIN:
return "Gujarati (India)"
case .iwIL:
return "Hebrew (Israel)"
case .hiIN:
return "Hindi (India)"
case .huHU:
return "Hungarian (Hungary)"
case .isIS:
return "Icelandic (Iceland)"
case .idID:
return "Indonesian (Indonesia)"
case .itIT:
return "Italian (Italy)"
case .itCH:
return "Italian (Switzerland)"
case .jaJP:
return "Japanese (Japan)"
case .jvID:
return "Javanese (Indonesia)"
case .knIN:
return "Kannada (India)"
case .kmKH:
return "Khmer (Cambodia)"
case .koKR:
return "Korean (South Korea)"
case .loLA:
return "Lao (Laos)"
case .lvLV:
return "Latvian (Latvia)"
case .ltLT:
return "Lithuanian (Lithuania)"
case .mkMK:
return "Macedonian (North Macedonia)"
case .msMY:
return "Malay (Malaysia)"
case .mlIN:
return "Malayalam (India)"
case .mrIN:
return "Marathi (India)"
case .mnMN:
return "Mongolian (Mongolia)"
case .neNP:
return "Nepali (Nepal)"
case .noNO:
return "Norwegian Bokmål (Norway)"
case .faIR:
return "Persian (Iran)"
case .plPL:
return "Polish (Poland)"
case .ptBR:
return "Portuguese (Brazil)"
case .ptPT:
return "Portuguese (Portugal)"
case .paGuruIN:
return "Punjabi (Gurmukhi India)"
case .roRO:
return "Romanian (Romania)"
case .ruRU:
return "Russian (Russia)"
case .srRS:
return "Serbian (Serbia)"
case .siLK:
return "Sinhala (Sri Lanka)"
case .skSK:
return "Slovak (Slovakia)"
case .slSI:
return "Slovenian (Slovenia)"
case .esAR:
return "Spanish (Argentina)"
case .esBO:
return "Spanish (Bolivia)"
case .esCL:
return "Spanish (Chile)"
case .esCO:
return "Spanish (Colombia)"
case .esCR:
return "Spanish (Costa Rica)"
case .esDO:
return "Spanish (Dominican Republic)"
case .esEC:
return "Spanish (Ecuador)"
case .esSV:
return "Spanish (El Salvador)"
case .esGT:
return "Spanish (Guatemala)"
case .esHN:
return "Spanish (Honduras)"
case .esMX:
return "Spanish (Mexico)"
case .esNI:
return "Spanish (Nicaragua)"
case .esPA:
return "Spanish (Panama)"
case .esPY:
return "Spanish (Paraguay)"
case .esPE:
return "Spanish (Peru)"
case .esPR:
return "Spanish (Puerto Rico)"
case .esES:
return "Spanish (Spain)"
case .esUS:
return "Spanish (United States)"
case .esUY:
return "Spanish (Uruguay)"
case .esVE:
return "Spanish (Venezuela)"
case .suID:
return "Sundanese (Indonesia)"
case .swKE:
return "Swahili (Kenya)"
case .swTZ:
return "Swahili (Tanzania)"
case .svSE:
return "Swedish (Sweden)"
case .taIN:
return "Tamil (India)"
case .taMY:
return "Tamil (Malaysia)"
case .taSG:
return "Tamil (Singapore)"
case .taLK:
return "Tamil (Sri Lanka)"
case .teIN:
return "Telugu (India)"
case .thTH:
return "Thai (Thailand)"
case .trTR:
return "Turkish (Turkey)"
case .ukUA:
return "Ukrainian (Ukraine)"
case .urIN:
return "Urdu (India)"
case .urPK:
return "Urdu (Pakistan)"
case .uzUZ:
return "Uzbek (Uzbekistan)"
case .viVN:
return "Vietnamese (Vietnam)"
case .zuZA:
return "Zulu (South Africa)"
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment