Documentation
¶
Overview ¶
Package language defines a canonical Language type and helpers so an application can name a language once and let each STT/TTS service map it to that provider's own code. The value of each Language is a BCP-47 code (an ISO-639 base, optionally with a region or script subtag).
Each service that takes a language provides its own mapper (for example deepgram and elevenlabs in their packages), because providers disagree on the exact codes: Deepgram wants BCP-47 ("fr-CA"), ElevenLabs wants the base code ("fr"). Resolve is the shared shape those mappers take, so a language a provider has not been verified against still reaches it rather than being dropped.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Resolve ¶ added in v0.1.0
Resolve maps a language to the code one service takes.
A language the service has been verified against is looked up in codes. One that is not is still sent, derived from the language itself and reported, so an unverified language reaches the provider and is named in the log rather than being silently dropped: providers accept far more than any map lists, and the ones they refuse are worth seeing.
useBaseCode says which form the service takes. A service wanting the base alone ("fr") gets BaseCode; one wanting the full code ("fr-CA") gets that.
Types ¶
type Language ¶
type Language string
Language is a BCP-47 language code (an ISO-639 base plus an optional region or script subtag).
const ( // Afrikaans. Afrikaans Language = "af" AfrikaansZA Language = "af-ZA" // Amharic. Amharic Language = "am" AmharicET Language = "am-ET" // Arabic. Arabic Language = "ar" ArabicAE Language = "ar-AE" ArabicBH Language = "ar-BH" ArabicDZ Language = "ar-DZ" ArabicEG Language = "ar-EG" ArabicIQ Language = "ar-IQ" ArabicJO Language = "ar-JO" ArabicKW Language = "ar-KW" ArabicLB Language = "ar-LB" ArabicLY Language = "ar-LY" ArabicMA Language = "ar-MA" ArabicOM Language = "ar-OM" ArabicQA Language = "ar-QA" ArabicSA Language = "ar-SA" ArabicSY Language = "ar-SY" ArabicTN Language = "ar-TN" ArabicXA Language = "ar-XA" ArabicYE Language = "ar-YE" Arabic001 Language = "ar-001" // Assamese. Assamese Language = "as" AssameseIN Language = "as-IN" // Asturian. Asturian Language = "ast" // Azerbaijani. Azerbaijani Language = "az" AzerbaijaniAZ Language = "az-AZ" // Bashkir. Bashkir Language = "ba" // Belarusian. Belarusian Language = "be" BelarusianBY Language = "be-BY" // Bulgarian. Bulgarian Language = "bg" BulgarianBG Language = "bg-BG" // Bengali. Bengali Language = "bn" BengaliBD Language = "bn-BD" BengaliIN Language = "bn-IN" // Tibetan. Tibetan Language = "bo" // Breton. Breton Language = "br" // Bosnian. Bosnian Language = "bs" BosnianBA Language = "bs-BA" // Catalan. Catalan Language = "ca" CatalanES Language = "ca-ES" // Cebuano. Cebuano Language = "ceb" CebuanoPH Language = "ceb-PH" // Mandarin Chinese. MandarinChinese Language = "cmn" MandarinChineseCN Language = "cmn-CN" // Czech. Czech Language = "cs" CzechCZ Language = "cs-CZ" // Welsh. Welsh Language = "cy" WelshGB Language = "cy-GB" // Danish. Danish Language = "da" DanishDK Language = "da-DK" // German. German Language = "de" GermanAT Language = "de-AT" GermanBE Language = "de-BE" GermanCH Language = "de-CH" GermanDE Language = "de-DE" // Greek. Greek Language = "el" GreekGR Language = "el-GR" // English. English Language = "en" EnglishAU Language = "en-AU" EnglishCA Language = "en-CA" EnglishGB Language = "en-GB" EnglishGH Language = "en-GH" EnglishHK Language = "en-HK" EnglishIE Language = "en-IE" EnglishIN Language = "en-IN" EnglishKE Language = "en-KE" EnglishNG Language = "en-NG" EnglishNZ Language = "en-NZ" EnglishPH Language = "en-PH" EnglishSG Language = "en-SG" EnglishTZ Language = "en-TZ" EnglishUS Language = "en-US" EnglishZA Language = "en-ZA" // Esperanto. Esperanto Language = "eo" // Spanish. Spanish Language = "es" SpanishAR Language = "es-AR" SpanishBO Language = "es-BO" SpanishCL Language = "es-CL" SpanishCO Language = "es-CO" SpanishCR Language = "es-CR" SpanishCU Language = "es-CU" SpanishDO Language = "es-DO" SpanishEC Language = "es-EC" SpanishES Language = "es-ES" SpanishGQ Language = "es-GQ" SpanishGT Language = "es-GT" SpanishHN Language = "es-HN" SpanishMX Language = "es-MX" SpanishNI Language = "es-NI" SpanishPA Language = "es-PA" SpanishPE Language = "es-PE" SpanishPR Language = "es-PR" SpanishPY Language = "es-PY" SpanishSV Language = "es-SV" SpanishUS Language = "es-US" SpanishUY Language = "es-UY" SpanishVE Language = "es-VE" Spanish419 Language = "es-419" // Estonian. Estonian Language = "et" EstonianEE Language = "et-EE" // Basque. Basque Language = "eu" BasqueES Language = "eu-ES" // Persian. Persian Language = "fa" PersianIR Language = "fa-IR" // Fulah. Fulah Language = "ff" // Finnish. Finnish Language = "fi" FinnishFI Language = "fi-FI" // Filipino. Filipino Language = "fil" FilipinoPH Language = "fil-PH" // Faroese. Faroese Language = "fo" // French. French Language = "fr" FrenchBE Language = "fr-BE" FrenchCA Language = "fr-CA" FrenchCH Language = "fr-CH" FrenchFR Language = "fr-FR" // Irish. Irish Language = "ga" IrishIE Language = "ga-IE" // Gaelic. Gaelic Language = "gd" // Galician. Galician Language = "gl" GalicianES Language = "gl-ES" // Gujarati. Gujarati Language = "gu" GujaratiIN Language = "gu-IN" // Hausa. Hausa Language = "ha" // Hawaiian. Hawaiian Language = "haw" // Hebrew. Hebrew Language = "he" HebrewIL Language = "he-IL" // Hindi. Hindi Language = "hi" HindiIN Language = "hi-IN" // Croatian. Croatian Language = "hr" CroatianHR Language = "hr-HR" // Haitian Creole. HaitianCreole Language = "ht" HaitianCreoleHT Language = "ht-HT" // Hungarian. Hungarian Language = "hu" HungarianHU Language = "hu-HU" // Armenian. Armenian Language = "hy" ArmenianAM Language = "hy-AM" // Indonesian. Indonesian Language = "id" IndonesianID Language = "id-ID" // Igbo. Igbo Language = "ig" // Icelandic. Icelandic Language = "is" IcelandicIS Language = "is-IS" // Italian. Italian Language = "it" ItalianIT Language = "it-IT" ItalianCH Language = "it-CH" // Inuktitut. InuktitutCans Language = "iu-Cans" InuktitutCansCA Language = "iu-Cans-CA" InuktitutLatn Language = "iu-Latn" InuktitutLatnCA Language = "iu-Latn-CA" // Japanese. Japanese Language = "ja" JapaneseJP Language = "ja-JP" // Javanese. Javanese Language = "jv" JavaneseID Language = "jv-ID" JavaneseJV Language = "jv-JV" JavaneseJW Language = "jw" // Georgian. Georgian Language = "ka" GeorgianGE Language = "ka-GE" // Kabuverdianu. Kabuverdianu Language = "kea" // Kazakh. Kazakh Language = "kk" KazakhKZ Language = "kk-KZ" // Khmer. Khmer Language = "km" KhmerKH Language = "km-KH" // Kannada. Kannada Language = "kn" KannadaIN Language = "kn-IN" // Konkani. Konkani Language = "kok" KonkaniIN Language = "kok-IN" // Korean. Korean Language = "ko" KoreanKR Language = "ko-KR" // Kurdish. Kurdish Language = "ku" // Kyrgyz. Kyrgyz Language = "ky" KyrgyzKG Language = "ky-KG" // Latin. Latin Language = "la" LatinVA Language = "la-VA" // Luxembourgish. Luxembourgish Language = "lb" LuxembourgishLU Language = "lb-LU" // Lingala. Lingala Language = "ln" // Lao. Lao Language = "lo" LaoLA Language = "lo-LA" // Lithuanian. Lithuanian Language = "lt" LithuanianLT Language = "lt-LT" // Ganda. Ganda Language = "lg" // Luo. Luo Language = "luo" // Latvian. Latvian Language = "lv" LatvianLV Language = "lv-LV" // Malagasy. Malagasy Language = "mg" MalagasyMG Language = "mg-MG" // Maori. Maori Language = "mi" // Macedonian. Macedonian Language = "mk" MacedonianMK Language = "mk-MK" // Maithili. Maithili Language = "mai" MaithiliIN Language = "mai-IN" // Malayalam. Malayalam Language = "ml" MalayalamIN Language = "ml-IN" // Mongolian. Mongolian Language = "mn" MongolianMN Language = "mn-MN" // Marathi. Marathi Language = "mr" MarathiIN Language = "mr-IN" // Malay. Malay Language = "ms" MalayMY Language = "ms-MY" // Maltese. Maltese Language = "mt" MalteseMT Language = "mt-MT" // Burmese. Burmese Language = "my" BurmeseMM Language = "my-MM" BurmeseMymr Language = "mymr" // Norwegian. NorwegianBokmal Language = "nb" NorwegianBokmalNO Language = "nb-NO" Norwegian Language = "no" NorwegianNynorsk Language = "nn" NorwegianNynorskNO Language = "nn-NO" // Nepali. Nepali Language = "ne" NepaliNP Language = "ne-NP" // Dutch. Dutch Language = "nl" DutchBE Language = "nl-BE" DutchNL Language = "nl-NL" // Northern Sotho. NorthernSotho Language = "nso" // Chichewa. Chichewa Language = "ny" // Occitan. Occitan Language = "oc" // Odia. Odia Language = "or" OdiaIN Language = "or-IN" // Punjabi. Punjabi Language = "pa" PunjabiIN Language = "pa-IN" // Polish. Polish Language = "pl" PolishPL Language = "pl-PL" // Pashto. Pashto Language = "ps" PashtoAF Language = "ps-AF" // Portuguese. Portuguese Language = "pt" PortugueseBR Language = "pt-BR" PortuguesePT Language = "pt-PT" // Romanian. Romanian Language = "ro" RomanianRO Language = "ro-RO" // Russian. Russian Language = "ru" RussianRU Language = "ru-RU" // Sanskrit. Sanskrit Language = "sa" // Sindhi. Sindhi Language = "sd" SindhiIN Language = "sd-IN" // Sinhala. Sinhala Language = "si" SinhalaLK Language = "si-LK" // Slovak. Slovak Language = "sk" SlovakSK Language = "sk-SK" // Slovenian. Slovenian Language = "sl" SlovenianSI Language = "sl-SI" // Shona. Shona Language = "sn" // Somali. Somali Language = "so" SomaliSO Language = "so-SO" // Albanian. Albanian Language = "sq" AlbanianAL Language = "sq-AL" // Serbian. Serbian Language = "sr" SerbianRS Language = "sr-RS" SerbianLatn Language = "sr-Latn" SerbianLatnRS Language = "sr-Latn-RS" // Sundanese. Sundanese Language = "su" SundaneseID Language = "su-ID" // Swedish. Swedish Language = "sv" SwedishSE Language = "sv-SE" // Swahili. Swahili Language = "sw" SwahiliKE Language = "sw-KE" SwahiliTZ Language = "sw-TZ" // Tamil. Tamil Language = "ta" TamilIN Language = "ta-IN" TamilLK Language = "ta-LK" TamilMY Language = "ta-MY" TamilSG Language = "ta-SG" // Telugu. Telugu Language = "te" TeluguIN Language = "te-IN" // Tajik. Tajik Language = "tg" // Thai. Thai Language = "th" ThaiTH Language = "th-TH" // Turkmen. Turkmen Language = "tk" // Tagalog. Tagalog Language = "tl" // Turkish. Turkish Language = "tr" TurkishTR Language = "tr-TR" // Tatar. Tatar Language = "tt" // Uyghur. Uyghur Language = "ug" // Ukrainian. Ukrainian Language = "uk" UkrainianUA Language = "uk-UA" // Umbundu. Umbundu Language = "umb" // Urdu. Urdu Language = "ur" UrduIN Language = "ur-IN" UrduPK Language = "ur-PK" // Uzbek. Uzbek Language = "uz" UzbekUZ Language = "uz-UZ" // Vietnamese. Vietnamese Language = "vi" VietnameseVN Language = "vi-VN" // Wolof. Wolof Language = "wo" // Wu Chinese. WuChinese Language = "wuu" WuChineseCN Language = "wuu-CN" // Yiddish. Yiddish Language = "yi" // Yoruba. Yoruba Language = "yo" // Yue Chinese (Cantonese). YueChineseCantonese Language = "yue" YueChineseCantoneseCN Language = "yue-CN" // Chinese. Chinese Language = "zh" ChineseCN Language = "zh-CN" ChineseCNGuangxi Language = "zh-CN-guangxi" ChineseCNHenan Language = "zh-CN-henan" ChineseCNLiaoning Language = "zh-CN-liaoning" ChineseCNShaanxi Language = "zh-CN-shaanxi" ChineseCNShandong Language = "zh-CN-shandong" ChineseCNSichuan Language = "zh-CN-sichuan" ChineseHK Language = "zh-HK" ChineseTW Language = "zh-TW" // Xhosa. Xhosa Language = "xh-ZA" // Zulu. Zulu Language = "zu" ZuluZA Language = "zu-ZA" )
The languages a service can be asked for. The constant's value is its BCP-47 code, and the groups are the languages themselves: a group's bare constant is the language with no region, and the rest name one region or script of it.
func All ¶ added in v0.1.0
func All() []Language
All returns every language the catalog names, in the order it names them.
It is what a Python enum gives for free by being iterable: a caller building a service's map, or listing what an application can be asked for, needs the set rather than the names one at a time. The slice is fresh on each call, so a caller sorting or filtering it cannot edit the catalog.