├── .gitignore ├── go.mod ├── CHANGELOG.md ├── CONTRIBUTING.md ├── init_test.go ├── init.go ├── LICENSE ├── README.md ├── iso6391.go ├── iso6391_test.go └── list.go /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- 1 | module github.com/emvi/iso-639-1 2 | 3 | go 1.17 4 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## 1.1.1 4 | 5 | * remove bh as it was deprecated in 2021 6 | 7 | ## 1.1.0 8 | 9 | * added capitalization to native names 10 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contribute 2 | 3 | Report bugs on GitHub and discuss your ideas and feature requests before you open a pull request. Pull requests must pass the test suite and add new tests for each new feature. Bugs should be validated by tests. The Go code must be formatted by gofmt. 4 | 5 | ## Test coverage 6 | 7 | New code must be tested to keep the test coverage above 80% at least. 8 | -------------------------------------------------------------------------------- /init_test.go: -------------------------------------------------------------------------------- 1 | package iso6391 2 | 3 | import "testing" 4 | 5 | func TestCodes(t *testing.T) { 6 | if len(Codes) != 184 { 7 | t.Fatalf("Codes must have 184 entries, but was: %v", len(Codes)) 8 | } 9 | } 10 | 11 | func TestNames(t *testing.T) { 12 | if len(Names) != 184 { 13 | t.Fatalf("Names must have 184 entries, but was: %v", len(Codes)) 14 | } 15 | } 16 | 17 | func TestNativeNames(t *testing.T) { 18 | if len(NativeNames) != 184 { 19 | t.Fatalf("NativeNames must have 184 entries, but was: %v", len(Codes)) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /init.go: -------------------------------------------------------------------------------- 1 | package iso6391 2 | 3 | var ( 4 | // Codes is a list of all ISO 639-1 two character codes. 5 | Codes []string 6 | 7 | // Names is a list of all ISO 639-1 english language names. 8 | Names []string 9 | 10 | // NativeNames is a list of all ISO 639-1 native language names. 11 | NativeNames []string 12 | ) 13 | 14 | func init() { 15 | Codes = make([]string, 0, len(Languages)) 16 | Names = make([]string, 0, len(Languages)) 17 | NativeNames = make([]string, 0, len(Languages)) 18 | 19 | for key, value := range Languages { 20 | Codes = append(Codes, key) 21 | Names = append(Names, value.Name) 22 | NativeNames = append(NativeNames, value.NativeName) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Emvi 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ISO 639-1 2 | 3 | [![Go Reference](https://pkg.go.dev/badge/github.com/emvi/iso-639-1?status.svg)](https://pkg.go.dev/github.com/emvi/iso-639-1?status) 4 | [![CircleCI](https://circleci.com/gh/emvi/iso-639-1.svg?style=svg)](https://circleci.com/gh/emvi/iso-639-1) 5 | [![Go Report Card](https://goreportcard.com/badge/github.com/emvi/iso-639-1)](https://goreportcard.com/report/github.com/emvi/iso-639-1) 6 | Chat on Discord 7 | 8 | List of all ISO 639-1 language names, native names and two character codes as well as functions for convenient access. 9 | The lists of all names and codes (`Codes`, `Names`, `NativeNames`, `Languages`) are build in the init function for quick read access. 10 | For full documentation please read the Godocs. 11 | 12 | ## Installation 13 | 14 | ``` 15 | go get github.com/emvi/iso-639-1 16 | ``` 17 | 18 | ## Example 19 | 20 | ``` 21 | fmt.Println(iso6391.Codes) // print all codes 22 | fmt.Println(iso6391.Names) // print all names 23 | fmt.Println(iso6391.NativeNames) // print all native names 24 | fmt.Println(iso6391.Languages) // print all language objects {Code, Name, NativeName} 25 | 26 | fmt.Println(iso6391.FromCode("en")) // prints {Code: "en", Name: "English", NativeName: "English"} 27 | fmt.Println(iso6391.Name("en")) // prints "English" 28 | fmt.Println(iso6391.NativeName("zh")) // prints "中文" 29 | fmt.Println(iso6391.CodeFromName("English")) // prints "en" 30 | fmt.Println(iso6391.ValidCode("en")) // prints true 31 | // ... see Godoc for more functions 32 | ``` 33 | 34 | ## Contribute 35 | 36 | [See CONTRIBUTING.md](CONTRIBUTING.md) 37 | 38 | ## License 39 | 40 | MIT 41 | -------------------------------------------------------------------------------- /iso6391.go: -------------------------------------------------------------------------------- 1 | package iso6391 2 | 3 | // FromCode returns the language for given code. 4 | func FromCode(code string) Language { 5 | return Languages[code] 6 | } 7 | 8 | // FromName returns the language for given name. 9 | func FromName(name string) Language { 10 | for _, lang := range Languages { 11 | if lang.Name == name { 12 | return lang 13 | } 14 | } 15 | 16 | return Language{} 17 | } 18 | 19 | // FromNativeName returns the language for given native name. 20 | func FromNativeName(name string) Language { 21 | for _, lang := range Languages { 22 | if lang.NativeName == name { 23 | return lang 24 | } 25 | } 26 | 27 | return Language{} 28 | } 29 | 30 | // Name returns the language name in english for given code. 31 | func Name(code string) string { 32 | return FromCode(code).Name 33 | } 34 | 35 | // NativeName returns the language native name for given code. 36 | func NativeName(code string) string { 37 | return FromCode(code).NativeName 38 | } 39 | 40 | // CodeForName returns the language code for given name. 41 | func CodeForName(name string) string { 42 | for code, lang := range Languages { 43 | if lang.Name == name { 44 | return code 45 | } 46 | } 47 | 48 | return "" 49 | } 50 | 51 | // CodeForNativeName returns the language code for given native name. 52 | func CodeForNativeName(name string) string { 53 | for code, lang := range Languages { 54 | if lang.NativeName == name { 55 | return code 56 | } 57 | } 58 | 59 | return "" 60 | } 61 | 62 | // ValidCode returns true if the given code is a valid ISO 639-1 language code. 63 | // The code must be passed in lowercase. 64 | func ValidCode(code string) bool { 65 | _, ok := Languages[code] 66 | return ok 67 | } 68 | 69 | // ValidName returns true if the given name is a valid ISO 639-1 language name. 70 | // The name must use uppercase characters (e.g. English, Hiri Motu, ...). 71 | func ValidName(name string) bool { 72 | for _, lang := range Languages { 73 | if lang.Name == name { 74 | return true 75 | } 76 | } 77 | 78 | return false 79 | } 80 | 81 | // ValidNativeName returns true if the given code is a valid ISO 639-1 language native name. 82 | // The name must be passed in its native form (e.g. English, 中文, ...). 83 | func ValidNativeName(name string) bool { 84 | for _, lang := range Languages { 85 | if lang.NativeName == name { 86 | return true 87 | } 88 | } 89 | 90 | return false 91 | } 92 | -------------------------------------------------------------------------------- /iso6391_test.go: -------------------------------------------------------------------------------- 1 | package iso6391 2 | 3 | import ( 4 | "testing" 5 | ) 6 | 7 | func TestFromCode(t *testing.T) { 8 | lang := FromCode("en") 9 | 10 | if lang.Name != "English" || lang.NativeName != "English" { 11 | t.Fatalf("Expected English, but was: %v", lang) 12 | } 13 | 14 | lang = FromCode("zh") 15 | 16 | if lang.Name != "Chinese" || lang.NativeName != "中文" { 17 | t.Fatalf("Expected Chinese, but was: %v", lang) 18 | } 19 | 20 | lang = FromCode("xx") 21 | 22 | if lang.Name != "" || lang.NativeName != "" { 23 | t.Fatalf("Expected no valid language, but was: %v", lang) 24 | } 25 | 26 | lang = FromCode("an") 27 | 28 | if lang.Name != "Aragonese" || lang.NativeName != "Aragonés" { 29 | t.Fatalf("Expected Aragonese, but was: %v", lang) 30 | } 31 | } 32 | 33 | func TestFromName(t *testing.T) { 34 | lang := FromName("English") 35 | 36 | if lang.Code != "en" || lang.NativeName != "English" { 37 | t.Fatalf("Expected English, but was: %v", lang) 38 | } 39 | 40 | lang = FromName("Chinese") 41 | 42 | if lang.Code != "zh" || lang.NativeName != "中文" { 43 | t.Fatalf("Expected Chinese, but was: %v", lang) 44 | } 45 | 46 | lang = FromName("Neverheardof") 47 | 48 | if lang.Code != "" || lang.NativeName != "" { 49 | t.Fatalf("Expected no valid language, but was: %v", lang) 50 | } 51 | } 52 | 53 | func TestFromNativeName(t *testing.T) { 54 | lang := FromNativeName("English") 55 | 56 | if lang.Code != "en" || lang.Name != "English" { 57 | t.Fatalf("Expected English, but was: %v", lang) 58 | } 59 | 60 | lang = FromNativeName("中文") 61 | 62 | if lang.Code != "zh" || lang.Name != "Chinese" { 63 | t.Fatalf("Expected Chinese, but was: %v", lang) 64 | } 65 | 66 | lang = FromNativeName("Neverheardof") 67 | 68 | if lang.Code != "" || lang.Name != "" { 69 | t.Fatalf("Expected no valid language, but was: %v", lang) 70 | } 71 | } 72 | 73 | func TestName(t *testing.T) { 74 | name := Name("en") 75 | 76 | if name != "English" { 77 | t.Fatalf("Expected English, but was: %v", name) 78 | } 79 | 80 | name = Name("xx") 81 | 82 | if name != "" { 83 | t.Fatalf("Expected no valid name, but was: %v", name) 84 | } 85 | } 86 | 87 | func TestNativeName(t *testing.T) { 88 | name := NativeName("zh") 89 | 90 | if name != "中文" { 91 | t.Fatalf("Expected Chinese, but was: %v", name) 92 | } 93 | 94 | name = NativeName("xx") 95 | 96 | if name != "" { 97 | t.Fatalf("Expected no valid native name, but was: %v", name) 98 | } 99 | } 100 | 101 | func TestCodeForName(t *testing.T) { 102 | code := CodeForName("English") 103 | 104 | if code != "en" { 105 | t.Fatalf("Expected English, but was: %v", code) 106 | } 107 | 108 | code = CodeForName("Chinese") 109 | 110 | if code != "zh" { 111 | t.Fatalf("Expected Chinese, but was: %v", code) 112 | } 113 | 114 | code = CodeForName("Neverheardof") 115 | 116 | if code != "" { 117 | t.Fatalf("Expected no valid code, but was: %v", code) 118 | } 119 | } 120 | 121 | func TestCodeForNativeName(t *testing.T) { 122 | code := CodeForNativeName("English") 123 | 124 | if code != "en" { 125 | t.Fatalf("Expected English, but was: %v", code) 126 | } 127 | 128 | code = CodeForNativeName("中文") 129 | 130 | if code != "zh" { 131 | t.Fatalf("Expected Chinese, but was: %v", code) 132 | } 133 | 134 | code = CodeForNativeName("Neverheardof") 135 | 136 | if code != "" { 137 | t.Fatalf("Expected no valid code, but was: %v", code) 138 | } 139 | } 140 | 141 | func TestValidCode(t *testing.T) { 142 | if !ValidCode("en") { 143 | t.Fatal("Code must be valid") 144 | } 145 | 146 | if !ValidCode("zh") { 147 | t.Fatal("Code must be valid") 148 | } 149 | 150 | if ValidCode("xx") { 151 | t.Fatal("Code must be invalid") 152 | } 153 | } 154 | 155 | func TestValidName(t *testing.T) { 156 | if !ValidName("English") { 157 | t.Fatal("Name must be valid") 158 | } 159 | 160 | if !ValidName("Chinese") { 161 | t.Fatal("Name must be valid") 162 | } 163 | 164 | if ValidName("Neverheardof") { 165 | t.Fatal("Name must be invalid") 166 | } 167 | } 168 | 169 | func TestValidNativeName(t *testing.T) { 170 | if !ValidNativeName("English") { 171 | t.Fatal("Native name must be valid") 172 | } 173 | 174 | if !ValidNativeName("中文") { 175 | t.Fatal("Native name must be valid") 176 | } 177 | 178 | if ValidNativeName("Neverheardof") { 179 | t.Fatal("Native name must be invalid") 180 | } 181 | } 182 | -------------------------------------------------------------------------------- /list.go: -------------------------------------------------------------------------------- 1 | package iso6391 2 | 3 | // Language is an ISO 639-1 language with code, name and native name. 4 | type Language struct { 5 | Code string 6 | Name string 7 | NativeName string 8 | } 9 | 10 | // Languages is a map of all ISO 639-1 languages using the two character lowercase language code as key. 11 | var Languages = map[string]Language{ 12 | "aa": {Code: "aa", Name: "Afar", NativeName: "Afaraf"}, 13 | "ab": {Code: "ab", Name: "Abkhaz", NativeName: "Аҧсуа бызшәа"}, 14 | "ae": {Code: "ae", Name: "Avestan", NativeName: "Avesta"}, 15 | "af": {Code: "af", Name: "Afrikaans", NativeName: "Afrikaans"}, 16 | "ak": {Code: "ak", Name: "Akan", NativeName: "Akan"}, 17 | "am": {Code: "am", Name: "Amharic", NativeName: "አማርኛ"}, 18 | "an": {Code: "an", Name: "Aragonese", NativeName: "Aragonés"}, 19 | "ar": {Code: "ar", Name: "Arabic", NativeName: "اللغة العربية"}, 20 | "as": {Code: "as", Name: "Assamese", NativeName: "অসমীয়া"}, 21 | "av": {Code: "av", Name: "Avaric", NativeName: "Авар мацӀ"}, 22 | "ay": {Code: "ay", Name: "Aymara", NativeName: "Aymar aru"}, 23 | "az": {Code: "az", Name: "Azerbaijani", NativeName: "Azərbaycan dili"}, 24 | "ba": {Code: "ba", Name: "Bashkir", NativeName: "Башҡорт теле"}, 25 | "be": {Code: "be", Name: "Belarusian", NativeName: "Беларуская мова"}, 26 | "bg": {Code: "bg", Name: "Bulgarian", NativeName: "Български език"}, 27 | "bi": {Code: "bi", Name: "Bislama", NativeName: "Bislama"}, 28 | "bm": {Code: "bm", Name: "Bambara", NativeName: "Bamanankan"}, 29 | "bn": {Code: "bn", Name: "Bengali", NativeName: "বাংলা"}, 30 | "bo": {Code: "bo", Name: "Tibetan Standard", NativeName: "བོད་ཡིག"}, 31 | "br": {Code: "br", Name: "Breton", NativeName: "Brezhoneg"}, 32 | "bs": {Code: "bs", Name: "Bosnian", NativeName: "Bosanski jezik"}, 33 | "ca": {Code: "ca", Name: "Catalan", NativeName: "Català"}, 34 | "ce": {Code: "ce", Name: "Chechen", NativeName: "Нохчийн мотт"}, 35 | "ch": {Code: "ch", Name: "Chamorro", NativeName: "Chamoru"}, 36 | "co": {Code: "co", Name: "Corsican", NativeName: "Corsu"}, 37 | "cr": {Code: "cr", Name: "Cree", NativeName: "ᓀᐦᐃᔭᐍᐏᐣ"}, 38 | "cs": {Code: "cs", Name: "Czech", NativeName: "Čeština"}, 39 | "cu": {Code: "cu", Name: "Old Church Slavonic", NativeName: "Ѩзыкъ словѣньскъ"}, 40 | "cv": {Code: "cv", Name: "Chuvash", NativeName: "Чӑваш чӗлхи"}, 41 | "cy": {Code: "cy", Name: "Welsh", NativeName: "Cymraeg"}, 42 | "da": {Code: "da", Name: "Danish", NativeName: "Dansk"}, 43 | "de": {Code: "de", Name: "German", NativeName: "Deutsch"}, 44 | "dv": {Code: "dv", Name: "Divehi", NativeName: "Dhivehi"}, 45 | "dz": {Code: "dz", Name: "Dzongkha", NativeName: "རྫོང་ཁ"}, 46 | "ee": {Code: "ee", Name: "Ewe", NativeName: "Eʋegbe"}, 47 | "el": {Code: "el", Name: "Greek", NativeName: "Ελληνικά"}, 48 | "en": {Code: "en", Name: "English", NativeName: "English"}, 49 | "eo": {Code: "eo", Name: "Esperanto", NativeName: "Esperanto"}, 50 | "es": {Code: "es", Name: "Spanish", NativeName: "Español"}, 51 | "et": {Code: "et", Name: "Estonian", NativeName: "Eesti"}, 52 | "eu": {Code: "eu", Name: "Basque", NativeName: "Euskara"}, 53 | "fa": {Code: "fa", Name: "Persian", NativeName: "فارسی"}, 54 | "ff": {Code: "ff", Name: "Fula", NativeName: "Fulfulde"}, 55 | "fi": {Code: "fi", Name: "Finnish", NativeName: "Suomi"}, 56 | "fj": {Code: "fj", Name: "Fijian", NativeName: "Vakaviti"}, 57 | "fo": {Code: "fo", Name: "Faroese", NativeName: "Føroyskt"}, 58 | "fr": {Code: "fr", Name: "French", NativeName: "Français"}, 59 | "fy": {Code: "fy", Name: "Western Frisian", NativeName: "Frysk"}, 60 | "ga": {Code: "ga", Name: "Irish", NativeName: "Gaeilge"}, 61 | "gd": {Code: "gd", Name: "Scottish Gaelic", NativeName: "Gàidhlig"}, 62 | "gl": {Code: "gl", Name: "Galician", NativeName: "Galego"}, 63 | "gn": {Code: "gn", Name: "Guaraní", NativeName: "Avañeẽ"}, 64 | "gu": {Code: "gu", Name: "Gujarati", NativeName: "ગુજરાતી"}, 65 | "gv": {Code: "gv", Name: "Manx", NativeName: "Gaelg"}, 66 | "ha": {Code: "ha", Name: "Hausa", NativeName: "هَوُسَ"}, 67 | "he": {Code: "he", Name: "Hebrew", NativeName: "עברית"}, 68 | "hi": {Code: "hi", Name: "Hindi", NativeName: "हिन्दी"}, 69 | "ho": {Code: "ho", Name: "Hiri Motu", NativeName: "Hiri Motu"}, 70 | "hr": {Code: "hr", Name: "Croatian", NativeName: "Hrvatski jezik"}, 71 | "ht": {Code: "ht", Name: "Haitian", NativeName: "Kreyòl ayisyen"}, 72 | "hu": {Code: "hu", Name: "Hungarian", NativeName: "Magyar"}, 73 | "hy": {Code: "hy", Name: "Armenian", NativeName: "Հայերեն"}, 74 | "hz": {Code: "hz", Name: "Herero", NativeName: "Otjiherero"}, 75 | "ia": {Code: "ia", Name: "Interlingua", NativeName: "Interlingua"}, 76 | "id": {Code: "id", Name: "Indonesian", NativeName: "Indonesian"}, 77 | "ie": {Code: "ie", Name: "Interlingue", NativeName: "Interlingue"}, 78 | "ig": {Code: "ig", Name: "Igbo", NativeName: "Asụsụ Igbo"}, 79 | "ii": {Code: "ii", Name: "Nuosu", NativeName: "ꆈꌠ꒿ Nuosuhxop"}, 80 | "ik": {Code: "ik", Name: "Inupiaq", NativeName: "Iñupiaq"}, 81 | "io": {Code: "io", Name: "Ido", NativeName: "Ido"}, 82 | "is": {Code: "is", Name: "Icelandic", NativeName: "Íslenska"}, 83 | "it": {Code: "it", Name: "Italian", NativeName: "Italiano"}, 84 | "iu": {Code: "iu", Name: "Inuktitut", NativeName: "ᐃᓄᒃᑎᑐᑦ"}, 85 | "ja": {Code: "ja", Name: "Japanese", NativeName: "日本語"}, 86 | "jv": {Code: "jv", Name: "Javanese", NativeName: "Basa Jawa"}, 87 | "ka": {Code: "ka", Name: "Georgian", NativeName: "Ქართული"}, 88 | "kg": {Code: "kg", Name: "Kongo", NativeName: "Kikongo"}, 89 | "ki": {Code: "ki", Name: "Kikuyu", NativeName: "Gĩkũyũ"}, 90 | "kj": {Code: "kj", Name: "Kwanyama", NativeName: "Kuanyama"}, 91 | "kk": {Code: "kk", Name: "Kazakh", NativeName: "Қазақ тілі"}, 92 | "kl": {Code: "kl", Name: "Kalaallisut", NativeName: "Kalaallisut"}, 93 | "km": {Code: "km", Name: "Khmer", NativeName: "ខេមរភាសា"}, 94 | "kn": {Code: "kn", Name: "Kannada", NativeName: "ಕನ್ನಡ"}, 95 | "ko": {Code: "ko", Name: "Korean", NativeName: "한국어"}, 96 | "kr": {Code: "kr", Name: "Kanuri", NativeName: "Kanuri"}, 97 | "ks": {Code: "ks", Name: "Kashmiri", NativeName: "कश्मीरी"}, 98 | "ku": {Code: "ku", Name: "Kurdish", NativeName: "Kurdî"}, 99 | "kv": {Code: "kv", Name: "Komi", NativeName: "Коми кыв"}, 100 | "kw": {Code: "kw", Name: "Cornish", NativeName: "Kernewek"}, 101 | "ky": {Code: "ky", Name: "Kyrgyz", NativeName: "Кыргызча"}, 102 | "la": {Code: "la", Name: "Latin", NativeName: "Latine"}, 103 | "lb": {Code: "lb", Name: "Luxembourgish", NativeName: "Lëtzebuergesch"}, 104 | "lg": {Code: "lg", Name: "Ganda", NativeName: "Luganda"}, 105 | "li": {Code: "li", Name: "Limburgish", NativeName: "Limburgs"}, 106 | "ln": {Code: "ln", Name: "Lingala", NativeName: "Lingála"}, 107 | "lo": {Code: "lo", Name: "Lao", NativeName: "ພາສາ"}, 108 | "lt": {Code: "lt", Name: "Lithuanian", NativeName: "Lietuvių kalba"}, 109 | "lu": {Code: "lu", Name: "Luba-Katanga", NativeName: "Tshiluba"}, 110 | "lv": {Code: "lv", Name: "Latvian", NativeName: "Latviešu valoda"}, 111 | "mg": {Code: "mg", Name: "Malagasy", NativeName: "Fiteny malagasy"}, 112 | "mh": {Code: "mh", Name: "Marshallese", NativeName: "Kajin M̧ajeļ"}, 113 | "mi": {Code: "mi", Name: "Māori", NativeName: "Te reo Māori"}, 114 | "mk": {Code: "mk", Name: "Macedonian", NativeName: "Македонски јазик"}, 115 | "ml": {Code: "ml", Name: "Malayalam", NativeName: "മലയാളം"}, 116 | "mn": {Code: "mn", Name: "Mongolian", NativeName: "Монгол хэл"}, 117 | "mr": {Code: "mr", Name: "Marathi", NativeName: "मराठी"}, 118 | "ms": {Code: "ms", Name: "Malay", NativeName: "هاس ملايو‎"}, 119 | "mt": {Code: "mt", Name: "Maltese", NativeName: "Malti"}, 120 | "my": {Code: "my", Name: "Burmese", NativeName: "ဗမာစာ"}, 121 | "na": {Code: "na", Name: "Nauru", NativeName: "Ekakairũ Naoero"}, 122 | "nb": {Code: "nb", Name: "Norwegian Bokmål", NativeName: "Norsk bokmål"}, 123 | "nd": {Code: "nd", Name: "Northern Ndebele", NativeName: "IsiNdebele"}, 124 | "ne": {Code: "ne", Name: "Nepali", NativeName: "नेपाली"}, 125 | "ng": {Code: "ng", Name: "Ndonga", NativeName: "Owambo"}, 126 | "nl": {Code: "nl", Name: "Dutch", NativeName: "Nederlands"}, 127 | "nn": {Code: "nn", Name: "Norwegian Nynorsk", NativeName: "Norsk nynorsk"}, 128 | "no": {Code: "no", Name: "Norwegian", NativeName: "Norsk"}, 129 | "nr": {Code: "nr", Name: "Southern Ndebele", NativeName: "IsiNdebele"}, 130 | "nv": {Code: "nv", Name: "Navajo", NativeName: "Diné bizaad"}, 131 | "ny": {Code: "ny", Name: "Chichewa", NativeName: "ChiCheŵa"}, 132 | "oc": {Code: "oc", Name: "Occitan", NativeName: "Occitan"}, 133 | "oj": {Code: "oj", Name: "Ojibwe", NativeName: "ᐊᓂᔑᓈᐯᒧᐎᓐ"}, 134 | "om": {Code: "om", Name: "Oromo", NativeName: "Afaan Oromoo"}, 135 | "or": {Code: "or", Name: "Oriya", NativeName: "ଓଡ଼ିଆ"}, 136 | "os": {Code: "os", Name: "Ossetian", NativeName: "Ирон æвзаг"}, 137 | "pa": {Code: "pa", Name: "Panjabi", NativeName: "ਪੰਜਾਬੀ"}, 138 | "pi": {Code: "pi", Name: "Pāli", NativeName: "पाऴि"}, 139 | "pl": {Code: "pl", Name: "Polish", NativeName: "Język polski"}, 140 | "ps": {Code: "ps", Name: "Pashto", NativeName: "پښتو"}, 141 | "pt": {Code: "pt", Name: "Portuguese", NativeName: "Português"}, 142 | "qu": {Code: "qu", Name: "Quechua", NativeName: "Runa Simi"}, 143 | "rm": {Code: "rm", Name: "Romansh", NativeName: "Rumantsch grischun"}, 144 | "rn": {Code: "rn", Name: "Kirundi", NativeName: "Ikirundi"}, 145 | "ro": {Code: "ro", Name: "Romanian", NativeName: "Română"}, 146 | "ru": {Code: "ru", Name: "Russian", NativeName: "Русский"}, 147 | "rw": {Code: "rw", Name: "Kinyarwanda", NativeName: "Ikinyarwanda"}, 148 | "sa": {Code: "sa", Name: "Sanskrit", NativeName: "संस्कृतम्"}, 149 | "sc": {Code: "sc", Name: "Sardinian", NativeName: "Sardu"}, 150 | "sd": {Code: "sd", Name: "Sindhi", NativeName: "सिन्धी"}, 151 | "se": {Code: "se", Name: "Northern Sami", NativeName: "Davvisámegiella"}, 152 | "sg": {Code: "sg", Name: "Sango", NativeName: "Yângâ tî sängö"}, 153 | "si": {Code: "si", Name: "Sinhala", NativeName: "සිංහල"}, 154 | "sk": {Code: "sk", Name: "Slovak", NativeName: "Slovenčina"}, 155 | "sl": {Code: "sl", Name: "Slovene", NativeName: "Slovenski jezik"}, 156 | "sm": {Code: "sm", Name: "Samoan", NativeName: "Gagana faa Samoa"}, 157 | "sn": {Code: "sn", Name: "Shona", NativeName: "ChiShona"}, 158 | "so": {Code: "so", Name: "Somali", NativeName: "Soomaaliga"}, 159 | "sq": {Code: "sq", Name: "Albanian", NativeName: "Shqip"}, 160 | "sr": {Code: "sr", Name: "Serbian", NativeName: "Српски језик"}, 161 | "ss": {Code: "ss", Name: "Swati", NativeName: "SiSwati"}, 162 | "st": {Code: "st", Name: "Southern Sotho", NativeName: "Sesotho"}, 163 | "su": {Code: "su", Name: "Sundanese", NativeName: "Basa Sunda"}, 164 | "sv": {Code: "sv", Name: "Swedish", NativeName: "Svenska"}, 165 | "sw": {Code: "sw", Name: "Swahili", NativeName: "Kiswahili"}, 166 | "ta": {Code: "ta", Name: "Tamil", NativeName: "தமிழ்"}, 167 | "te": {Code: "te", Name: "Telugu", NativeName: "తెలుగు"}, 168 | "tg": {Code: "tg", Name: "Tajik", NativeName: "Тоҷикӣ"}, 169 | "th": {Code: "th", Name: "Thai", NativeName: "ไทย"}, 170 | "ti": {Code: "ti", Name: "Tigrinya", NativeName: "ትግርኛ"}, 171 | "tk": {Code: "tk", Name: "Turkmen", NativeName: "Türkmen"}, 172 | "tl": {Code: "tl", Name: "Tagalog", NativeName: "Wikang Tagalog"}, 173 | "tn": {Code: "tn", Name: "Tswana", NativeName: "Setswana"}, 174 | "to": {Code: "to", Name: "Tonga", NativeName: "Faka Tonga"}, 175 | "tr": {Code: "tr", Name: "Turkish", NativeName: "Türkçe"}, 176 | "ts": {Code: "ts", Name: "Tsonga", NativeName: "Xitsonga"}, 177 | "tt": {Code: "tt", Name: "Tatar", NativeName: "Татар теле"}, 178 | "tw": {Code: "tw", Name: "Twi", NativeName: "Twi"}, 179 | "ty": {Code: "ty", Name: "Tahitian", NativeName: "Reo Tahiti"}, 180 | "ug": {Code: "ug", Name: "Uyghur", NativeName: "ئۇيغۇرچە‎"}, 181 | "uk": {Code: "uk", Name: "Ukrainian", NativeName: "Українська"}, 182 | "ur": {Code: "ur", Name: "Urdu", NativeName: "اردو"}, 183 | "uz": {Code: "uz", Name: "Uzbek", NativeName: "Ўзбек"}, 184 | "ve": {Code: "ve", Name: "Venda", NativeName: "Tshivenḓa"}, 185 | "vi": {Code: "vi", Name: "Vietnamese", NativeName: "Tiếng Việt"}, 186 | "vo": {Code: "vo", Name: "Volapük", NativeName: "Volapük"}, 187 | "wa": {Code: "wa", Name: "Walloon", NativeName: "Walon"}, 188 | "wo": {Code: "wo", Name: "Wolof", NativeName: "Wollof"}, 189 | "xh": {Code: "xh", Name: "Xhosa", NativeName: "IsiXhosa"}, 190 | "yi": {Code: "yi", Name: "Yiddish", NativeName: "ייִדיש"}, 191 | "yo": {Code: "yo", Name: "Yoruba", NativeName: "Yorùbá"}, 192 | "za": {Code: "za", Name: "Zhuang", NativeName: "Saɯ cueŋƅ"}, 193 | "zh": {Code: "zh", Name: "Chinese", NativeName: "中文"}, 194 | "zu": {Code: "zu", Name: "Zulu", NativeName: "IsiZulu"}, 195 | } 196 | --------------------------------------------------------------------------------