on master help sign in
filter langauges
commitc677aee58a4eca1015262eb24530620a333ddcef authormarc <a01200356@itesm.mx> dateSat 6 Aug 2016, 22:19 (10 years ago) parent149802c
4 files changed+81−72
searx/engines/gigablast.py+9−1 searx/engines/google.py+19−15 searx/languages.py+18−50 utils/update_languages.py+35−6
searx/engines/gigablast.py+9−1
@@ -40,6 +40,12 @@ url_xpath = './/url'
4040title_xpath = './/title'
4141content_xpath = './/sum'
4242
43+supported_languages = ["en", "fr", "es", "ru", "tr", "ja", "zh-CN", "zh-TW", "ko", "de",
44+ "nl", "it", "fi", "sv", "no", "pt", "vi", "ar", "he", "id", "el",
45+ "th", "hi", "bn", "pl", "tl", "la", "eo", "ca", "bg", "tx", "sr",
46+ "hu", "da", "lt", "cs", "gl", "ka", "gd", "go", "ro", "ga", "lv",
47+ "hy", "is", "ag", "gv", "io", "fa", "te", "vv", "mg", "ku", "lb", "et"]
48+
4349
4450# do search-request
4551def request(query, params):
@@ -48,7 +54,9 @@ def request(query, params):
4854 if params['language'] == 'all':
4955 language = 'xx'
5056 else:
51− language = params['language'].split('-')[0]
57+ language = params['language'].replace('-', '_').lower()
58+ if language.split('-')[0] != 'zh':
59+ language = language.split('-')[0]
5260
5361 if params['safesearch'] >= 1:
5462 safesearch = 1
searx/engines/google.py+19−15
@@ -23,20 +23,20 @@ categories = ['general']
2323paging = True
2424language_support = True
2525use_locale_domain = True
26−supported_languages = ['de', 'en', 'es', 'es_419', 'fr', 'hr', 'it', 'nl', 'pl', 'pt-BR',
27− 'pt-PT', 'vi', 'tr', 'ru', 'ar', 'th', 'ko', 'zh-CN', 'zh-TW', 'ja',
28− 'ach', 'af', 'ak', 'az', 'ms', 'ban', 'xx_bork', 'bs', 'br', 'ca',
29− 'ceb', 'ckb', 'cs', 'sn', 'co', 'cy', 'da', 'yo', 'et', 'xx_elmer',
30− 'eo', 'eu', 'ee', 'tl', 'fo', 'gaa', 'ga', 'gd', 'gl', 'gn', 'xx_hacker',
31− 'ht', 'ha', 'haw', 'bem', 'ig', 'rn', 'id', 'ia', 'zu', 'is', 'jw', 'rw',
32− 'sw', 'tlh', 'kg', 'mfe', 'kri', 'la', 'lv', 'to', 'lt', 'ln', 'loz',
33− 'lua', 'lg', 'hu', 'mg', 'mt', 'mi', 'pcm', 'no', 'nso', 'ny', 'nn',
34− 'uz', 'oc', 'om', 'xx_pirate', 'pt', 'ro', 'mo', 'rm', 'qu', 'nyn', 'crs',
35− 'sq', 'sd', 'sk', 'sl', 'so', 'st', 'sr_ME', 'sr_Latn', 'su', 'fi', 'sv',
36− 'tg', 'tt', 'tn', 'tum', 'tk', 'tw', 'fy', 'wo', 'xh', 'el', 'be', 'bg',
37− 'ky', 'kk', 'mk', 'mn', 'sr', 'uk', 'ka', 'hy', 'yi', 'iw', 'ug', 'ur',
38− 'ps', 'fa', 'ti', 'am', 'ne', 'mr', 'hi', 'bn', 'pa', 'gu', 'or', 'ta',
39− 'te', 'kn', 'ml', 'si', 'lo', 'my', 'km', 'chr']
26+supported_languages = ["ach", "af", "ak", "az", "ms", "ban", "xx-bork", "bs", "br", "ca",
27+ "ceb", "ckb", "cs", "sn", "co", "cy", "da", "de", "yo", "et",
28+ "xx-elmer", "en", "es", "es-419", "eo", "eu", "ee", "tl", "fo", "fr",
29+ "gaa", "ga", "gd", "gl", "gn", "xx-hacker", "ht", "ha", "hr", "haw",
30+ "bem", "ig", "rn", "id", "ia", "zu", "is", "it", "jw", "rw", "sw",
31+ "tlh", "kg", "mfe", "kri", "la", "lv", "to", "lt", "ln", "loz",
32+ "lua", "lg", "hu", "mg", "mt", "mi", "nl", "pcm", "no", "nso",
33+ "ny", "nn", "uz", "oc", "om", "xx-pirate", "pl", "pt-BR", "pt-PT",
34+ "ro", "rm", "qu", "nyn", "crs", "sq", "sd", "sk", "sl", "so", "st",
35+ "sr-ME", "sr-Latn", "su", "fi", "sv", "tg", "tt", "vi", "tn", "tum",
36+ "tr", "tk", "tw", "fy", "wo", "xh", "el", "be", "bg", "ky", "kk", "mk",
37+ "mn", "ru", "sr", "uk", "ka", "hy", "yi", "iw", "ug", "ur", "ar", "ps",
38+ "fa", "ti", "am", "ne", "mr", "hi", "bn", "pa", "gu", "or", "ta", "te",
39+ "kn", "ml", "si", "th", "lo", "my", "km", "chr", "ko", "zh-CN", "zh-TW", "ja"]
4040time_range_support = True
4141
4242# based on https://en.wikipedia.org/wiki/List_of_Google_domains and tests
@@ -181,8 +181,12 @@ def request(query, params):
181181 language = 'en'
182182 country = 'US'
183183 url_lang = ''
184+ elif params['language'][:2] == 'jv':
185+ language = 'jw'
186+ country = 'ID'
187+ url_lang = 'lang_jw'
184188 else:
185− language_array = params['language'].lower().split('_')
189+ language_array = params['language'].lower().split('-')
186190 if len(language_array) == 2:
187191 country = language_array[1]
188192 else:
searx/languages.py+18−50
@@ -32,9 +32,7 @@ language_codes = (
3232 (u"en-NZ", u"English", u"", u"English"),
3333 (u"got", u"𐌲𐌿𐍄𐌹𐍃𐌺", u"", u"Gothic"),
3434 (u"vls", u"West-Vlams", u"", u"West Flemish"),
35− (u"ro", u"Română", u"", u"Romanian"),
3635 (u"bxr", u"Буряад", u"", u"Buryat"),
37− (u"fiu-vro", u"Võro", u"", u"Võro"),
3836 (u"diq", u"Zazaki", u"", u"Zazaki"),
3937 (u"zh", u"中文", u"", u"Chinese"),
4038 (u"pms", u"Piemontèis", u"", u"Piedmontese"),
@@ -42,28 +40,25 @@ language_codes = (
4240 (u"zh-HK", u"中文", u"", u"Chinese"),
4341 (u"zu", u"isiZulu", u"", u"Zulu"),
4442 (u"tet", u"Tetun", u"", u"Tetum"),
45− (u"es-PE", u"Español", u"", u"Spanish"),
43+ (u"zh-CN", u"中文 (简体)", u"", u""),
4644 (u"new", u"नेपाल भाषा", u"", u"Newar"),
45+ (u"ro-RO", u"Română", u"", u"Romanian"),
4746 (u"lez", u"Лезги чІал (Lezgi č’al)", u"", u"Lezgian"),
4847 (u"glk", u"گیلکی", u"", u"Gilaki"),
4948 (u"ko-KR", u"한국어", u"", u"Korean"),
5049 (u"id-ID", u"Bahasa Indonesia", u"", u"Indonesian"),
51− (u"cho", u"Choctaw", u"", u"Choctaw"),
5250 (u"chr", u"ᏣᎳᎩ", u"", u"Cherokee"),
5351 (u"vi", u"Tiếng Việt", u"", u"Vietnamese"),
5452 (u"chy", u"Tsetsêhestâhese", u"", u"Cheyenne"),
55− (u"is", u"Íslenska", u"", u"Icelandic"),
5653 (u"tk", u"تركمن / Туркмен", u"", u"Turkmen"),
5754 (u"da-DK", u"Dansk", u"", u"Danish"),
5855 (u"pfl", u"Pälzisch", u"", u"Palatinate German"),
5956 (u"hu-HU", u"Magyar", u"", u"Hungarian"),
60− (u"he-IL", u"עברית", u"", u"Hebrew"),
6157 (u"mg", u"Malagasy", u"", u"Malagasy"),
6258 (u"ml", u"മലയാളം", u"", u"Malayalam"),
6359 (u"mo", u"Молдовеняскэ", u"", u"Moldovan"),
6460 (u"mn", u"Монгол", u"", u"Mongolian"),
6561 (u"mi", u"Māori", u"", u"Maori"),
66− (u"mh", u"Ebon", u"", u"Marshallese"),
6762 (u"mk", u"Македонски", u"", u"Macedonian"),
6863 (u"mt", u"Malti", u"", u"Maltese"),
6964 (u"ms", u"Bahasa Melayu", u"", u"Malay"),
@@ -75,7 +70,6 @@ language_codes = (
7570 (u"pl-PL", u"Polski", u"", u"Polish"),
7671 (u"sl-SL", u"Slovenščina", u"", u"Slovenian"),
7772 (u"csb", u"Kaszëbsczi", u"", u"Kashubian"),
78− (u"cbk-zam", u"Chavacano de Zamboanga", u"", u"Zamboanga Chavacano"),
7973 (u"nyn", u"Runyankore", u"", u""),
8074 (u"ig", u"Igbo", u"", u"Igbo"),
8175 (u"fr", u"Français", u"", u"French"),
@@ -88,7 +82,7 @@ language_codes = (
8882 (u"fj", u"Na Vosa Vakaviti", u"", u"Fijian"),
8983 (u"fo", u"Føroyskt", u"", u"Faroese"),
9084 (u"ss", u"SiSwati", u"", u"Swati"),
91− (u"roa-tara", u"Tarandíne", u"", u"Tarantino"),
85+ (u"sr", u"Српски / Srpski", u"", u"Serbian"),
9286 (u"sq", u"Shqip", u"", u"Albanian"),
9387 (u"sw", u"Kiswahili", u"", u"Swahili"),
9488 (u"sv", u"Svenska", u"", u"Swedish"),
@@ -104,7 +98,7 @@ language_codes = (
10498 (u"sc", u"Sardu", u"", u"Sardinian"),
10599 (u"pt-BR", u"português (Brasil)", u"", u""),
106100 (u"sa", u"संस्कृतम्", u"", u"Sanskrit"),
107− (u"sg", u"Sängö", u"", u"Sango"),
101+ (u"he-IL", u"עברית", u"", u"Hebrew"),
108102 (u"se", u"Sámegiella", u"", u"Northern Sami"),
109103 (u"sd", u"سنڌي، سندھی ، सिन्ध", u"", u"Sindhi"),
110104 (u"fr-CH", u"Français", u"", u"French"),
@@ -112,7 +106,6 @@ language_codes = (
112106 (u"it-CH", u"Italiano", u"", u"Italian"),
113107 (u"wuu", u"吴语", u"", u"Wu"),
114108 (u"fr-CA", u"Français", u"", u"French"),
115− (u"ar-XA", u"العربية", u"", u"Arabic"),
116109 (u"kbd", u"Адыгэбзэ (Adighabze)", u"", u"Kabardian Circassian"),
117110 (u"no-NO", u"Norsk (Bokmål)", u"", u"Norwegian (Bokmål)"),
118111 (u"ca-ES", u"Català", u"", u"Catalan"),
@@ -130,14 +123,13 @@ language_codes = (
130123 (u"yi", u"ייִדיש", u"", u"Yiddish"),
131124 (u"ceb", u"Sinugboanong Binisaya", u"", u"Cebuano"),
132125 (u"yo", u"Yorùbá", u"", u"Yoruba"),
133− (u"ro-RO", u"Română", u"", u"Romanian"),
126+ (u"ru-RU", u"Русский", u"", u"Russian"),
134127 (u"bar", u"Boarisch", u"", u"Bavarian"),
135128 (u"nov", u"Novial", u"", u"Novial"),
136129 (u"sr-ME", u"srpski (Crna Gora)", u"", u""),
137130 (u"es-CL", u"Español", u"", u"Spanish"),
138131 (u"es-CO", u"Español", u"", u"Spanish"),
139132 (u"nl-NL", u"Nederlands", u"", u"Dutch"),
140− (u"map-bms", u"Basa Banyumasan", u"", u"Banyumasan"),
141133 (u"el", u"Ελληνικά", u"", u"Greek"),
142134 (u"eo", u"Esperanto", u"", u"Esperanto"),
143135 (u"en", u"English", u"", u"English"),
@@ -151,7 +143,7 @@ language_codes = (
151143 (u"rw", u"Ikinyarwanda", u"", u"Kinyarwanda"),
152144 (u"rm", u"Rumantsch", u"", u"Romansh"),
153145 (u"rn", u"Kirundi", u"", u"Kirundi"),
154− (u"es-419", u"español (Latinoamérica)", u"", u""),
146+ (u"ro", u"Română", u"", u"Romanian"),
155147 (u"dsb", u"Dolnoserbski", u"", u"Lower Sorbian"),
156148 (u"ast", u"Asturianu", u"", u"Asturian"),
157149 (u"lmo", u"Lumbaart", u"", u"Lombard"),
@@ -161,17 +153,13 @@ language_codes = (
161153 (u"koi", u"Перем Коми (Perem Komi)", u"", u"Komi-Permyak"),
162154 (u"tr-TR", u"Türkçe", u"", u"Turkish"),
163155 (u"pnt", u"Ποντιακά", u"", u"Pontic"),
164− (u"es-XL", u"Español", u"", u"Spanish"),
165156 (u"fi-FI", u"Suomi", u"", u"Finnish"),
166157 (u"pnb", u"شاہ مکھی پنجابی (Shāhmukhī Pañjābī)", u"", u"Western Punjabi"),
167− (u"udm", u"Удмурт кыл", u"", u"Udmurt"),
158+ (u"ar-SA", u"العربية", u"", u"Arabic"),
168159 (u"bem", u"Ichibemba", u"", u""),
169− (u"roa-rup", u"Armãneashce", u"", u"Aromanian"),
170− (u"sr-Latn", u"srpski (latinica)", u"", u""),
160+ (u"en-ZA", u"English", u"", u"English"),
171161 (u"stq", u"Seeltersk", u"", u"Saterland Frisian"),
172− (u"sr", u"Српски / Srpski", u"", u"Serbian"),
173162 (u"ang", u"Englisc", u"", u"Anglo-Saxon"),
174− (u"ru-RU", u"Русский", u"", u"Russian"),
175163 (u"lbe", u"Лакку", u"", u"Lak"),
176164 (u"min", u"Minangkabau", u"", u"Minangkabau"),
177165 (u"es-US", u"Español", u"", u"Spanish"),
@@ -184,14 +172,13 @@ language_codes = (
184172 (u"kg", u"KiKongo", u"", u"Kongo"),
185173 (u"ckb", u"Soranî / کوردی", u"", u"Sorani"),
186174 (u"kk", u"Қазақша", u"", u"Kazakh"),
187− (u"kj", u"Kuanyama", u"", u"Kuanyama"),
175+ (u"sg", u"Sängö", u"", u"Sango"),
188176 (u"ki", u"Gĩkũyũ", u"", u"Kikuyu"),
189177 (u"ko", u"한국어", u"", u"Korean"),
190178 (u"kn", u"ಕನ್ನಡ", u"", u"Kannada"),
191179 (u"tpi", u"Tok Pisin", u"", u"Tok Pisin"),
192180 (u"kl", u"Kalaallisut", u"", u"Greenlandic"),
193181 (u"ks", u"कश्मीरी / كشميري", u"", u"Kashmiri"),
194− (u"kr", u"Kanuri", u"", u"Kanuri"),
195182 (u"ext", u"Estremeñu", u"", u"Extremaduran"),
196183 (u"kw", u"Kernewek/Karnuack", u"", u"Cornish"),
197184 (u"kv", u"Коми", u"", u"Komi"),
@@ -202,7 +189,7 @@ language_codes = (
202189 (u"en-GB", u"English", u"", u"English"),
203190 (u"xmf", u"მარგალური (Margaluri)", u"", u"Mingrelian"),
204191 (u"jam", u"Jamaican Creole English", u"", u"Patois"),
205− (u"ar-SA", u"العربية", u"", u"Arabic"),
192+ (u"udm", u"Удмурт кыл", u"", u"Udmurt"),
206193 (u"ksh", u"Ripoarisch", u"", u"Ripuarian"),
207194 (u"ms-MY", u"Bahasa Melayu", u"", u"Malay"),
208195 (u"de", u"Deutsch", u"", u"German"),
@@ -219,13 +206,10 @@ language_codes = (
219206 (u"rmy", u"romani - रोमानी", u"", u"Romani"),
220207 (u"arc", u"ܐܪܡܝܐ", u"", u"Aramaic"),
221208 (u"th-TH", u"ไทย", u"", u"Thai"),
222− (u"mus", u"Muskogee", u"", u"Muscogee"),
223209 (u"lua", u"Luba-Lulua", u"", u""),
224− (u"en-ZA", u"English", u"", u"English"),
225210 (u"wa", u"Walon", u"", u"Walloon"),
226211 (u"wo", u"Wolof", u"", u"Wolof"),
227212 (u"jv", u"Basa Jawa", u"", u"Javanese"),
228− (u"jw", u"Javanese", u"", u""),
229213 (u"fr-BE", u"Français", u"", u"French"),
230214 (u"tum", u"chiTumbuka", u"", u"Tumbuka"),
231215 (u"ja", u"日本語", u"", u"Japanese"),
@@ -233,12 +217,9 @@ language_codes = (
233217 (u"ilo", u"Ilokano", u"", u"Ilokano"),
234218 (u"tlh", u"Klingon", u"", u""),
235219 (u"pdc", u"Deitsch", u"", u"Pennsylvania German"),
236− (u"aa", u"Afar", u"", u"Afar"),
237220 (u"ch", u"Chamoru", u"", u"Chamorro"),
238221 (u"co", u"Corsu", u"", u"Corsican"),
239− (u"simple", u"Simple English", u"", u"Simple English"),
240222 (u"ca", u"Català", u"", u"Catalan"),
241− (u"xx-pirate", u"Pirate", u"", u""),
242223 (u"ce", u"Нохчийн", u"", u"Chechen"),
243224 (u"cy", u"Cymraeg", u"", u"Welsh"),
244225 (u"sah", u"Саха тыла (Saxa Tyla)", u"", u"Sakha"),
@@ -254,30 +235,26 @@ language_codes = (
254235 (u"frp", u"Arpitan", u"", u"Franco-Provençal"),
255236 (u"xal", u"Хальмг", u"", u"Kalmyk"),
256237 (u"pi", u"पाऴि", u"", u"Pali"),
257− (u"it-IT", u"Italiano", u"", u"Italian"),
238+ (u"ak", u"Akana", u"", u"Akan"),
258239 (u"pl", u"Polski", u"", u"Polish"),
259240 (u"nrm", u"Nouormand/Normaund", u"", u"Norman"),
260241 (u"en-US", u"English", u"", u"English"),
261242 (u"gan", u"贛語", u"", u"Gan"),
262− (u"bat-smg", u"Žemaitėška", u"", u"Samogitian"),
263− (u"en-UK", u"English", u"", u"English"),
264243 (u"gag", u"Gagauz", u"", u"Gagauz"),
265244 (u"an", u"Aragonés", u"", u"Aragonese"),
266245 (u"gaa", u"Ga", u"", u""),
267246 (u"fur", u"Furlan", u"", u"Friulian"),
268− (u"kr-KR", u"Kanuri", u"", u"Kanuri"),
269− (u"zh-CN", u"中文 (简体)", u"", u""),
247+ (u"es-PE", u"Español", u"", u"Spanish"),
270248 (u"tl-PH", u"Tagalog", u"", u"Tagalog"),
271249 (u"en-IN", u"English", u"", u"English"),
272250 (u"ve", u"Tshivenda", u"", u"Venda"),
273251 (u"en-ID", u"English", u"", u"English"),
274252 (u"en-IE", u"English", u"", u"English"),
275− (u"xx-bork", u"Bork, bork, bork!", u"", u""),
253+ (u"is", u"Íslenska", u"", u"Icelandic"),
276254 (u"iu", u"ᐃᓄᒃᑎᑐᑦ", u"", u"Inuktitut"),
277255 (u"it", u"Italiano", u"", u"Italian"),
278256 (u"iw", u"עברית", u"", u""),
279257 (u"vo", u"Volapük", u"", u"Volapük"),
280− (u"ii", u"ꆇꉙ", u"", u"Sichuan Yi"),
281258 (u"ik", u"Iñupiak", u"", u"Inupiak"),
282259 (u"io", u"Ido", u"", u"Ido"),
283260 (u"ia", u"Interlingua", u"", u"Interlingua"),
@@ -288,7 +265,7 @@ language_codes = (
288265 (u"pap", u"Papiamentu", u"", u"Papiamentu"),
289266 (u"pag", u"Pangasinan", u"", u"Pangasinan"),
290267 (u"pam", u"Kapampangan", u"", u"Kapampangan"),
291− (u"lv-LV", u"Latviešu", u"", u"Latvian"),
268+ (u"nl", u"Nederlands", u"", u"Dutch"),
292269 (u"mzn", u"مَزِروني", u"", u"Mazandarani"),
293270 (u"nl-BE", u"Nederlands", u"", u"Dutch"),
294271 (u"sk-SK", u"Slovenčina", u"", u"Slovak"),
@@ -297,6 +274,7 @@ language_codes = (
297274 (u"de-DE", u"Deutsch", u"", u"German"),
298275 (u"jbo", u"Lojban", u"", u"Lojban"),
299276 (u"mfe", u"kreol morisien", u"", u""),
277+ (u"tcy", u"Tulu", u"", u"ತುಳು"),
300278 (u"hak", u"Hak-kâ-fa / 客家話", u"", u"Hakka"),
301279 (u"ny", u"Chichewa", u"", u"Chichewa"),
302280 (u"ady", u"Адыгэбзэ", u"", u"Adyghe"),
@@ -308,7 +286,6 @@ language_codes = (
308286 (u"en-MY", u"English", u"", u"English"),
309287 (u"sv-SE", u"Svenska", u"", u"Swedish"),
310288 (u"de-AT", u"Deutsch", u"", u"German"),
311− (u"xx-elmer", u"Elmer Fudd", u"", u""),
312289 (u"hsb", u"Hornjoserbsce", u"", u"Upper Sorbian"),
313290 (u"be", u"Беларуская", u"", u"Belarusian"),
314291 (u"bg", u"Български", u"", u"Bulgarian"),
@@ -328,25 +305,20 @@ language_codes = (
328305 (u"ach", u"Acoli", u"", u""),
329306 (u"oc", u"Occitan", u"", u"Occitan"),
330307 (u"kri", u"Krio (Sierra Leone)", u"", u""),
331− (u"be-tarask", u"Беларуская (тарашкевіца)", u"", u"Belarusian (Taraškievica)"),
332308 (u"krc", u"Къарачай-Малкъар (Qarachay-Malqar)", u"", u"Karachay-Balkar"),
333309 (u"nds", u"Plattdüütsch", u"", u"Low Saxon"),
334310 (u"os", u"Иронау", u"", u"Ossetian"),
335311 (u"or", u"ଓଡ଼ିଆ", u"", u"Oriya"),
336312 (u"nso", u"Sepedi", u"", u"Northern Sotho"),
337313 (u"bjn", u"Bahasa Banjar", u"", u"Banjar"),
338− (u"xx-hacker", u"Hacker", u"", u""),
339− (u"zh-min-nan", u"Bân-lâm-gú", u"", u"Min Nan"),
340314 (u"pa", u"ਪੰਜਾਬੀ", u"", u"Punjabi"),
341315 (u"loz", u"Lozi", u"", u""),
342316 (u"war", u"Winaray", u"", u"Waray-Waray"),
343− (u"hz", u"Otsiherero", u"", u"Herero"),
344317 (u"hy", u"Հայերեն", u"", u"Armenian"),
345318 (u"hr", u"Hrvatski", u"", u"Croatian"),
346319 (u"ht", u"Krèyol ayisyen", u"", u"Haitian"),
347320 (u"hu", u"Magyar", u"", u"Hungarian"),
348321 (u"hi", u"हिन्दी", u"", u"Hindi"),
349− (u"ho", u"Hiri Motu", u"", u"Hiri Motu"),
350322 (u"ha", u"هَوُسَ", u"", u"Hausa"),
351323 (u"bug", u"Basa Ugi", u"", u"Buginese"),
352324 (u"he", u"עברית", u"", u"Hebrew"),
@@ -359,7 +331,7 @@ language_codes = (
359331 (u"pih", u"Norfuk", u"", u"Norfolk"),
360332 (u"ab", u"Аҧсуа", u"", u"Abkhazian"),
361333 (u"af", u"Afrikaans", u"", u"Afrikaans"),
362− (u"ak", u"Akana", u"", u"Akan"),
334+ (u"it-IT", u"Italiano", u"", u"Italian"),
363335 (u"am", u"አማርኛ", u"", u"Amharic"),
364336 (u"myv", u"Эрзянь (Erzjanj Kelj)", u"", u"Erzya"),
365337 (u"as", u"অসমীয়া", u"", u"Assamese"),
@@ -370,21 +342,17 @@ language_codes = (
370342 (u"ay", u"Aymar", u"", u"Aymara"),
371343 (u"az", u"Azərbaycanca", u"", u"Azerbaijani"),
372344 (u"es-ES", u"Español", u"", u"Spanish"),
373− (u"nl", u"Nederlands", u"", u"Dutch"),
345+ (u"lv-LV", u"Latviešu", u"", u"Latvian"),
374346 (u"nn", u"Nynorsk", u"", u"Norwegian (Nynorsk)"),
375347 (u"no", u"Norsk (Bokmål)", u"", u"Norwegian (Bokmål)"),
376348 (u"na", u"dorerin Naoero", u"", u"Nauruan"),
377349 (u"nah", u"Nāhuatl", u"", u"Nahuatl"),
378350 (u"ne", u"नेपाली", u"", u"Nepali"),
379− (u"ng", u"Oshiwambo", u"", u"Ndonga"),
380351 (u"en-AU", u"English", u"", u"English"),
381352 (u"nap", u"Nnapulitano", u"", u"Neapolitan"),
382353 (u"nv", u"Diné bizaad", u"", u"Navajo"),
383354 (u"ku", u"Kurdî / كوردی", u"", u"Kurdish"),
384355 (u"cs-CZ", u"Čeština", u"", u"Czech"),
385− (u"zh-yue", u"粵語", u"", u"Cantonese"),
386356 (u"en-SG", u"English", u"", u"English"),
387− (u"zh-classical", u"古文 / 文言文", u"", u"Classical Chinese"),
388− (u"bcl", u"Bikol", u"", u"Central Bicolano"),
389− (u"en-XA", u"English", u"", u"English")
357+ (u"bcl", u"Bikol", u"", u"Central Bicolano")
390358)
utils/update_languages.py+35−6
@@ -11,7 +11,7 @@
1111
1212from requests import get
1313from re import sub
14−from lxml.html import fromstring
14+from lxml.html import fromstring, tostring
1515from json import loads
1616from sys import path
1717path.append('../searx')
@@ -25,6 +25,28 @@ google_json_name = 'google.preferences.langMap'
2525
2626languages = {}
2727
28+
29+# To filter out invalid codes and dialects.
30+def valid_code(lang_code):
31+ # filter invalid codes
32+ if lang_code[:2] == 'xx'\
33+ or lang_code == 'jw'\
34+ or lang_code[-2:] == 'UK'\
35+ or lang_code[-2:] == 'XA'\
36+ or lang_code[-2:] == 'XL':
37+ return False
38+
39+ # filter dialects
40+ lang_code = lang_code.split('-')
41+ if len(lang_code) > 2 or len(lang_code[0]) > 3:
42+ return False
43+ if len(lang_code) == 2 and len(lang_code[1]) > 2:
44+ print lang_code
45+ return False
46+
47+ return True
48+
49+
2850# Get language names from Wikipedia.
2951def get_wikipedia_languages():
3052 response = get(wiki_languages_url)
@@ -38,10 +60,13 @@ def get_wikipedia_languages():
3860 code = td[3].xpath('./a')[0].text
3961 name = td[2].xpath('./a')[0].text
4062 english_name = td[1].xpath('./a')[0].text
63+ articles = int(td[4].xpath('./a/b')[0].text.replace(',',''))
4164
42− if code not in languages:
65+ # exclude languages with few articles and language variants
66+ if code not in languages and articles >= 100 and valid_code(code):
4367 languages[code] = (name, '', english_name)
4468
69+
4570# Get language names from Google.
4671def get_google_languages():
4772 response = get(google_languages_url)
@@ -51,25 +76,27 @@ def get_google_languages():
5176 code = option.xpath('./@value')[0]
5277 name = option.text[:-1]
5378
54− if code not in languages:
79+ if code not in languages and valid_code(code):
5580 languages[code] = (name, '', '')
5681
82+
5783# Join all language lists.
5884# iterate all languages supported by each engine
5985def join_language_lists():
6086 for engine_name in engines:
6187 for locale in engines[engine_name].supported_languages:
6288 locale = locale.replace('_', '-')
63− if locale not in languages:
89+ if locale not in languages and valid_code(locale):
6490 # try to get language name
6591 language = languages.get(locale.split('-')[0], None)
6692 if language == None:
67− print engine_name + ": " + locale
93+ # print engine_name + ": " + locale
6894 continue
6995
7096 (name, country, english) = language
7197 languages[locale] = (name, country, english)
7298
99+
73100# Write languages.py.
74101def write_languages_file():
75102 new_file = open('languages.py', 'w')
@@ -81,7 +108,7 @@ def write_languages_file():
81108 (name, country, english) = languages[code]
82109 file_content += '\n (u"' + code + '"'\
83110 + ', u"' + name + '"'\
84− + ', u"' + country[1:-1] + '"'\
111+ + ', u"' + country + '"'\
85112 + ', u"' + english + '"),'
86113 # remove last comma
87114 file_content = file_content[:-1]
@@ -89,11 +116,13 @@ def write_languages_file():
89116 new_file.write(file_content.encode('utf8'))
90117 new_file.close()
91118
119+
92120def main():
93121 get_wikipedia_languages()
94122 get_google_languages()
95123 join_language_lists()
96124 write_languages_file()
97125
126+
98127if __name__ == "__main__":
99128 main()