Понякога при разработката на уеб приложения (и не само) се налага да се поддържа списък с всички езици в света (или поне по-популярните от тях). Актуални списъци със световните езици се поддържа на този линк. Форматът е малко неудобен и за това реших да си го парсна до CLR обекти с езика C#, откъдето вече лесно може да се вкарат в най-различни други формати (в SQL Server, например). По-надолу има списък с езиците (както на по-разпространените, така и пълен списък с всички човешки езици). Добавил съм и C# код, който сваля списък с всички езици и после изкарва на конзолата имената на съвременните езици.
Списък на разпространените човешки езици
Abkhazian, Afar, Afrikaans, Akan, Albanian, Amharic, Arabic, Aragonese, Armenian, Assamese, Avaric, Avestan, Aymara, Azerbaijani, Bambara, Bashkir, Basque, Belarusian, Bengali, Bislama, Bosnian, Breton, Bulgarian, Burmese, Valencian, Central Khmer, Chamorro, Chechen, Chinese, Old Slavonic, Chuvash, Cornish, Corsican, Cree, Croatian, Czech, Danish, Maldivian, Flemish, Dzongkha, English, Esperanto, Estonian, Ewe, Faroese, Fijian, Finnish, French, Fulah, Galician, Ganda, Georgian, German, Guarani, Gujarati, Haitian Creole, Hausa, Hebrew, Herero, Hindi, Hiri Motu, Hungarian, Icelandic, Ido, Igbo, Indonesian, Interlingua (International Auxiliary Language Association), Occidental, Inuktitut, Inupiaq, Irish, Italian, Japanese, Javanese, Kalaallisut, Kannada, Kanuri, Kashmiri, Kazakh, Kikuyu, Kinyarwanda, Kyrgyz, Komi, Kongo, Korean, Kwanyama, Kurdish, Lao, Latin, Latvian, Limburgish, Lingala, Lithuanian, Luba-Katanga, Luxembourgish, Macedonian, Malagasy, Malay, Malayalam, Maltese, Manx, Maori, Marathi, Marshallese, Modern Greek, Mongolian, Nauru, Navajo, Ndonga, Nepali, North Ndebele, Northern Sami, Norwegian, Norwegian Bokmal, Norwegian Nynorsk, Nyanja, Occitan, Ojibwa, Oriya, Oromo, Ossetic, Pali, Punjabi, Persian, Polish, Portuguese, Pushto, Quechua, Romanian, Romansh, Rundi, Russian, Samoan, Sango, Sanskrit, Sardinian, Scottish Gaelic, Serbian, Serbo-Croatian, Shona, Sichuan Yi, Sindhi, Sinhalese, Slovak, Slovenian, Somali, South Ndebele, Southern Sotho, Spanish, Sundanese, Swahili, Swati, Swedish, Tagalog, Tahitian, Tajik, Tamil, Tatar, Telugu, Thai, Tibetan, Tigrinya, Tonga (Tonga Islands), Tsonga, Tswana, Turkish, Turkmen, Twi, Uyghur, Ukrainian, Urdu, Uzbek, Venda, Vietnamese, Volapuk, Walloon, Welsh, Western Frisian, Wolof, Xhosa, Yiddish, Yoruba, Zhuang, ZuluC# код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
|
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; class HumanLanguagesList { private const string LanguagesListFileName = "LanguagesList.txt" ; private const string LanguagesNamesFileName = "LanguagesNames.txt" ; private const string LanguagesListFileUrl = "http://www.sil.org/iso639-3/iso-639-3_20120816.tab" ; private const string LanguagesNamesFileUrl = "http://www.sil.org/iso639-3/iso-639-3_Name_Index_20120816.tab" ; private const char ElementsSplitter = '\t' ; static void Main() { var languages = new List < Language > (); using (var webClient = new WebClient()) { try { webClient.DownloadFile(LanguagesListFileUrl, LanguagesListFileName); webClient.DownloadFile(LanguagesNamesFileUrl, LanguagesNamesFileName); } catch (WebException) { Console.WriteLine( "One or more of the files cannot be downloaded!" ); return ; } } var firstLine = true ; using (var sr = new StreamReader(LanguagesListFileName)) { while (!sr.EndOfStream) { var line = sr.ReadLine(); if (line == null ) { continue ; } if (firstLine) { firstLine = false ; continue ; } var parts = line.Split( new [] { ElementsSplitter }); if (parts.Count() != 8) { Console.WriteLine( "Wrong line format! Line: {0}" , line); } else { languages.Add( new Language(parts)); } } } firstLine = true ; using (var sr = new StreamReader(LanguagesNamesFileName)) { while (!sr.EndOfStream) { var line = sr.ReadLine(); if (line == null ) { continue ; } if (firstLine) { firstLine = false ; continue ; } var parts = line.Split( new [] { ElementsSplitter }); if (parts.Count() != 3) { Console.WriteLine( "Wrong line format! Line: {0}" , line); } else { var id = parts[0]; var printName = parts[1]; var invertedName = parts[2]; var language = languages.SingleOrDefault(x => x.Id == id); if (language == null ) { continue ; } language.PrintName = printName; language.InvertedName = invertedName; } } } Console.OutputEncoding = Encoding.Unicode; var list = languages.Where(x => ! string .IsNullOrWhiteSpace(x.Part1)).OrderBy(x => x.RefName).ToList(); foreach (var language in list) { Console.Write( "{0}, " , language.PrintName); } } } public class Language { /// <summary> /// The three-letter 639-3 identifier /// </summary> public string Id { get ; set ; } /// <summary> /// Equivalent 639-2 identifier of the bibliographic applications code set, if there is one /// </summary> public string Part2B { get ; set ; } /// <summary> /// Equivalent 639-2 identifier of the terminology applications code set, if there is one /// </summary> public string Part2T { get ; set ; } /// <summary> /// Equivalent 639-1 identifier, if there is one /// </summary> public string Part1 { get ; set ; } /// <summary> /// I(ndividual), M(acrolanguage), S(pecial) /// </summary> public string Scope { get ; set ; } /// <summary> /// A(ncient), C(onstructed), E(xtinct), H(istorical), L(iving), S(pecial) /// </summary> public string LanguageType { get ; set ; } /// <summary> /// Reference language name /// </summary> public string RefName { get ; set ; } /// <summary> /// Comment relating to one or more of the columns /// </summary> public string Comment { get ; set ; } /// <summary> /// One of the names associated with this identifier /// </summary> public string PrintName { get ; set ; } /// <summary> /// The inverted form of this PrintName form /// </summary> public string InvertedName { get ; set ; } public Language(IList < string > languageElements) { if (languageElements == null ) { throw new ArgumentNullException( "languageElements" , "languageElements cannot be null!" ); } if (languageElements.Count != 8) { throw new ArgumentException( "languageElements must contains exactly 8 elements." , "languageElements" ); } Id = languageElements[0]; Part2B = languageElements[1]; Part2T = languageElements[2]; Part1 = languageElements[3]; Scope = languageElements[4]; LanguageType = languageElements[5]; RefName = languageElements[6]; Comment = languageElements[7]; } } |