commit: c677aee58a4eca1015262eb24530620a333ddcef
parent 149802c56926bf48520c98932c4c36b8152b3d2d
Author: marc <a01200356@itesm.mx>
Date: Sat, 6 Aug 2016 22:19:21 -0500
filter langauges
Diffstat:
4 files changed, 81 insertions(+), 72 deletions(-)
diff --git a/searx/engines/gigablast.py b/searx/engines/gigablast.py
@@ -40,6 +40,12 @@ url_xpath = './/url'
title_xpath = './/title'
content_xpath = './/sum'
+supported_languages = ["en", "fr", "es", "ru", "tr", "ja", "zh-CN", "zh-TW", "ko", "de",
+ "nl", "it", "fi", "sv", "no", "pt", "vi", "ar", "he", "id", "el",
+ "th", "hi", "bn", "pl", "tl", "la", "eo", "ca", "bg", "tx", "sr",
+ "hu", "da", "lt", "cs", "gl", "ka", "gd", "go", "ro", "ga", "lv",
+ "hy", "is", "ag", "gv", "io", "fa", "te", "vv", "mg", "ku", "lb", "et"]
+
# do search-request
def request(query, params):
@@ -48,7 +54,9 @@ def request(query, params):
if params['language'] == 'all':
language = 'xx'
else:
- language = params['language'].split('-')[0]
+ language = params['language'].replace('-', '_').lower()
+ if language.split('-')[0] != 'zh':
+ language = language.split('-')[0]
if params['safesearch'] >= 1:
safesearch = 1
diff --git a/searx/engines/google.py b/searx/engines/google.py
@@ -23,20 +23,20 @@ categories = ['general']
paging = True
language_support = True
use_locale_domain = True
-supported_languages = ['de', 'en', 'es', 'es_419', 'fr', 'hr', 'it', 'nl', 'pl', 'pt-BR',
- 'pt-PT', 'vi', 'tr', 'ru', 'ar', 'th', 'ko', 'zh-CN', 'zh-TW', 'ja',
- 'ach', 'af', 'ak', 'az', 'ms', 'ban', 'xx_bork', 'bs', 'br', 'ca',
- 'ceb', 'ckb', 'cs', 'sn', 'co', 'cy', 'da', 'yo', 'et', 'xx_elmer',
- 'eo', 'eu', 'ee', 'tl', 'fo', 'gaa', 'ga', 'gd', 'gl', 'gn', 'xx_hacker',
- 'ht', 'ha', 'haw', 'bem', 'ig', 'rn', 'id', 'ia', 'zu', 'is', 'jw', 'rw',
- 'sw', 'tlh', 'kg', 'mfe', 'kri', 'la', 'lv', 'to', 'lt', 'ln', 'loz',
- 'lua', 'lg', 'hu', 'mg', 'mt', 'mi', 'pcm', 'no', 'nso', 'ny', 'nn',
- 'uz', 'oc', 'om', 'xx_pirate', 'pt', 'ro', 'mo', 'rm', 'qu', 'nyn', 'crs',
- 'sq', 'sd', 'sk', 'sl', 'so', 'st', 'sr_ME', 'sr_Latn', 'su', 'fi', 'sv',
- 'tg', 'tt', 'tn', 'tum', 'tk', 'tw', 'fy', 'wo', 'xh', 'el', 'be', 'bg',
- 'ky', 'kk', 'mk', 'mn', 'sr', 'uk', 'ka', 'hy', 'yi', 'iw', 'ug', 'ur',
- 'ps', 'fa', 'ti', 'am', 'ne', 'mr', 'hi', 'bn', 'pa', 'gu', 'or', 'ta',
- 'te', 'kn', 'ml', 'si', 'lo', 'my', 'km', 'chr']
+supported_languages = ["ach", "af", "ak", "az", "ms", "ban", "xx-bork", "bs", "br", "ca",
+ "ceb", "ckb", "cs", "sn", "co", "cy", "da", "de", "yo", "et",
+ "xx-elmer", "en", "es", "es-419", "eo", "eu", "ee", "tl", "fo", "fr",
+ "gaa", "ga", "gd", "gl", "gn", "xx-hacker", "ht", "ha", "hr", "haw",
+ "bem", "ig", "rn", "id", "ia", "zu", "is", "it", "jw", "rw", "sw",
+ "tlh", "kg", "mfe", "kri", "la", "lv", "to", "lt", "ln", "loz",
+ "lua", "lg", "hu", "mg", "mt", "mi", "nl", "pcm", "no", "nso",
+ "ny", "nn", "uz", "oc", "om", "xx-pirate", "pl", "pt-BR", "pt-PT",
+ "ro", "rm", "qu", "nyn", "crs", "sq", "sd", "sk", "sl", "so", "st",
+ "sr-ME", "sr-Latn", "su", "fi", "sv", "tg", "tt", "vi", "tn", "tum",
+ "tr", "tk", "tw", "fy", "wo", "xh", "el", "be", "bg", "ky", "kk", "mk",
+ "mn", "ru", "sr", "uk", "ka", "hy", "yi", "iw", "ug", "ur", "ar", "ps",
+ "fa", "ti", "am", "ne", "mr", "hi", "bn", "pa", "gu", "or", "ta", "te",
+ "kn", "ml", "si", "th", "lo", "my", "km", "chr", "ko", "zh-CN", "zh-TW", "ja"]
time_range_support = True
# based on https://en.wikipedia.org/wiki/List_of_Google_domains and tests
@@ -181,8 +181,12 @@ def request(query, params):
language = 'en'
country = 'US'
url_lang = ''
+ elif params['language'][:2] == 'jv':
+ language = 'jw'
+ country = 'ID'
+ url_lang = 'lang_jw'
else:
- language_array = params['language'].lower().split('_')
+ language_array = params['language'].lower().split('-')
if len(language_array) == 2:
country = language_array[1]
else:
diff --git a/searx/languages.py b/searx/languages.py
@@ -32,9 +32,7 @@ language_codes = (
(u"en-NZ", u"English", u"", u"English"),
(u"got", u"𐌲𐌿𐍄𐌹𐍃𐌺", u"", u"Gothic"),
(u"vls", u"West-Vlams", u"", u"West Flemish"),
- (u"ro", u"Română", u"", u"Romanian"),
(u"bxr", u"Буряад", u"", u"Buryat"),
- (u"fiu-vro", u"Võro", u"", u"Võro"),
(u"diq", u"Zazaki", u"", u"Zazaki"),
(u"zh", u"中文", u"", u"Chinese"),
(u"pms", u"Piemontèis", u"", u"Piedmontese"),
@@ -42,28 +40,25 @@ language_codes = (
(u"zh-HK", u"中文", u"", u"Chinese"),
(u"zu", u"isiZulu", u"", u"Zulu"),
(u"tet", u"Tetun", u"", u"Tetum"),
- (u"es-PE", u"Español", u"", u"Spanish"),
+ (u"zh-CN", u"中文 (简体)", u"", u""),
(u"new", u"नेपाल भाषा", u"", u"Newar"),
+ (u"ro-RO", u"Română", u"", u"Romanian"),
(u"lez", u"Лезги чІал (Lezgi č’al)", u"", u"Lezgian"),
(u"glk", u"گیلکی", u"", u"Gilaki"),
(u"ko-KR", u"한국어", u"", u"Korean"),
(u"id-ID", u"Bahasa Indonesia", u"", u"Indonesian"),
- (u"cho", u"Choctaw", u"", u"Choctaw"),
(u"chr", u"ᏣᎳᎩ", u"", u"Cherokee"),
(u"vi", u"Tiếng Việt", u"", u"Vietnamese"),
(u"chy", u"Tsetsêhestâhese", u"", u"Cheyenne"),
- (u"is", u"Íslenska", u"", u"Icelandic"),
(u"tk", u"تركمن / Туркмен", u"", u"Turkmen"),
(u"da-DK", u"Dansk", u"", u"Danish"),
(u"pfl", u"Pälzisch", u"", u"Palatinate German"),
(u"hu-HU", u"Magyar", u"", u"Hungarian"),
- (u"he-IL", u"עברית", u"", u"Hebrew"),
(u"mg", u"Malagasy", u"", u"Malagasy"),
(u"ml", u"മലയാളം", u"", u"Malayalam"),
(u"mo", u"Молдовеняскэ", u"", u"Moldovan"),
(u"mn", u"Монгол", u"", u"Mongolian"),
(u"mi", u"Māori", u"", u"Maori"),
- (u"mh", u"Ebon", u"", u"Marshallese"),
(u"mk", u"Македонски", u"", u"Macedonian"),
(u"mt", u"Malti", u"", u"Maltese"),
(u"ms", u"Bahasa Melayu", u"", u"Malay"),
@@ -75,7 +70,6 @@ language_codes = (
(u"pl-PL", u"Polski", u"", u"Polish"),
(u"sl-SL", u"Slovenščina", u"", u"Slovenian"),
(u"csb", u"Kaszëbsczi", u"", u"Kashubian"),
- (u"cbk-zam", u"Chavacano de Zamboanga", u"", u"Zamboanga Chavacano"),
(u"nyn", u"Runyankore", u"", u""),
(u"ig", u"Igbo", u"", u"Igbo"),
(u"fr", u"Français", u"", u"French"),
@@ -88,7 +82,7 @@ language_codes = (
(u"fj", u"Na Vosa Vakaviti", u"", u"Fijian"),
(u"fo", u"Føroyskt", u"", u"Faroese"),
(u"ss", u"SiSwati", u"", u"Swati"),
- (u"roa-tara", u"Tarandíne", u"", u"Tarantino"),
+ (u"sr", u"Српски / Srpski", u"", u"Serbian"),
(u"sq", u"Shqip", u"", u"Albanian"),
(u"sw", u"Kiswahili", u"", u"Swahili"),
(u"sv", u"Svenska", u"", u"Swedish"),
@@ -104,7 +98,7 @@ language_codes = (
(u"sc", u"Sardu", u"", u"Sardinian"),
(u"pt-BR", u"português (Brasil)", u"", u""),
(u"sa", u"संस्कृतम्", u"", u"Sanskrit"),
- (u"sg", u"Sängö", u"", u"Sango"),
+ (u"he-IL", u"עברית", u"", u"Hebrew"),
(u"se", u"Sámegiella", u"", u"Northern Sami"),
(u"sd", u"سنڌي، سندھی ، सिन्ध", u"", u"Sindhi"),
(u"fr-CH", u"Français", u"", u"French"),
@@ -112,7 +106,6 @@ language_codes = (
(u"it-CH", u"Italiano", u"", u"Italian"),
(u"wuu", u"吴语", u"", u"Wu"),
(u"fr-CA", u"Français", u"", u"French"),
- (u"ar-XA", u"العربية", u"", u"Arabic"),
(u"kbd", u"Адыгэбзэ (Adighabze)", u"", u"Kabardian Circassian"),
(u"no-NO", u"Norsk (Bokmål)", u"", u"Norwegian (Bokmål)"),
(u"ca-ES", u"Català", u"", u"Catalan"),
@@ -130,14 +123,13 @@ language_codes = (
(u"yi", u"ייִדיש", u"", u"Yiddish"),
(u"ceb", u"Sinugboanong Binisaya", u"", u"Cebuano"),
(u"yo", u"Yorùbá", u"", u"Yoruba"),
- (u"ro-RO", u"Română", u"", u"Romanian"),
+ (u"ru-RU", u"Русский", u"", u"Russian"),
(u"bar", u"Boarisch", u"", u"Bavarian"),
(u"nov", u"Novial", u"", u"Novial"),
(u"sr-ME", u"srpski (Crna Gora)", u"", u""),
(u"es-CL", u"Español", u"", u"Spanish"),
(u"es-CO", u"Español", u"", u"Spanish"),
(u"nl-NL", u"Nederlands", u"", u"Dutch"),
- (u"map-bms", u"Basa Banyumasan", u"", u"Banyumasan"),
(u"el", u"Ελληνικά", u"", u"Greek"),
(u"eo", u"Esperanto", u"", u"Esperanto"),
(u"en", u"English", u"", u"English"),
@@ -151,7 +143,7 @@ language_codes = (
(u"rw", u"Ikinyarwanda", u"", u"Kinyarwanda"),
(u"rm", u"Rumantsch", u"", u"Romansh"),
(u"rn", u"Kirundi", u"", u"Kirundi"),
- (u"es-419", u"español (Latinoamérica)", u"", u""),
+ (u"ro", u"Română", u"", u"Romanian"),
(u"dsb", u"Dolnoserbski", u"", u"Lower Sorbian"),
(u"ast", u"Asturianu", u"", u"Asturian"),
(u"lmo", u"Lumbaart", u"", u"Lombard"),
@@ -161,17 +153,13 @@ language_codes = (
(u"koi", u"Перем Коми (Perem Komi)", u"", u"Komi-Permyak"),
(u"tr-TR", u"Türkçe", u"", u"Turkish"),
(u"pnt", u"Ποντιακά", u"", u"Pontic"),
- (u"es-XL", u"Español", u"", u"Spanish"),
(u"fi-FI", u"Suomi", u"", u"Finnish"),
(u"pnb", u"شاہ مکھی پنجابی (Shāhmukhī Pañjābī)", u"", u"Western Punjabi"),
- (u"udm", u"Удмурт кыл", u"", u"Udmurt"),
+ (u"ar-SA", u"العربية", u"", u"Arabic"),
(u"bem", u"Ichibemba", u"", u""),
- (u"roa-rup", u"Armãneashce", u"", u"Aromanian"),
- (u"sr-Latn", u"srpski (latinica)", u"", u""),
+ (u"en-ZA", u"English", u"", u"English"),
(u"stq", u"Seeltersk", u"", u"Saterland Frisian"),
- (u"sr", u"Српски / Srpski", u"", u"Serbian"),
(u"ang", u"Englisc", u"", u"Anglo-Saxon"),
- (u"ru-RU", u"Русский", u"", u"Russian"),
(u"lbe", u"Лакку", u"", u"Lak"),
(u"min", u"Minangkabau", u"", u"Minangkabau"),
(u"es-US", u"Español", u"", u"Spanish"),
@@ -184,14 +172,13 @@ language_codes = (
(u"kg", u"KiKongo", u"", u"Kongo"),
(u"ckb", u"Soranî / کوردی", u"", u"Sorani"),
(u"kk", u"Қазақша", u"", u"Kazakh"),
- (u"kj", u"Kuanyama", u"", u"Kuanyama"),
+ (u"sg", u"Sängö", u"", u"Sango"),
(u"ki", u"Gĩkũyũ", u"", u"Kikuyu"),
(u"ko", u"한국어", u"", u"Korean"),
(u"kn", u"ಕನ್ನಡ", u"", u"Kannada"),
(u"tpi", u"Tok Pisin", u"", u"Tok Pisin"),
(u"kl", u"Kalaallisut", u"", u"Greenlandic"),
(u"ks", u"कश्मीरी / كشميري", u"", u"Kashmiri"),
- (u"kr", u"Kanuri", u"", u"Kanuri"),
(u"ext", u"Estremeñu", u"", u"Extremaduran"),
(u"kw", u"Kernewek/Karnuack", u"", u"Cornish"),
(u"kv", u"Коми", u"", u"Komi"),
@@ -202,7 +189,7 @@ language_codes = (
(u"en-GB", u"English", u"", u"English"),
(u"xmf", u"მარგალური (Margaluri)", u"", u"Mingrelian"),
(u"jam", u"Jamaican Creole English", u"", u"Patois"),
- (u"ar-SA", u"العربية", u"", u"Arabic"),
+ (u"udm", u"Удмурт кыл", u"", u"Udmurt"),
(u"ksh", u"Ripoarisch", u"", u"Ripuarian"),
(u"ms-MY", u"Bahasa Melayu", u"", u"Malay"),
(u"de", u"Deutsch", u"", u"German"),
@@ -219,13 +206,10 @@ language_codes = (
(u"rmy", u"romani - रोमानी", u"", u"Romani"),
(u"arc", u"ܐܪܡܝܐ", u"", u"Aramaic"),
(u"th-TH", u"ไทย", u"", u"Thai"),
- (u"mus", u"Muskogee", u"", u"Muscogee"),
(u"lua", u"Luba-Lulua", u"", u""),
- (u"en-ZA", u"English", u"", u"English"),
(u"wa", u"Walon", u"", u"Walloon"),
(u"wo", u"Wolof", u"", u"Wolof"),
(u"jv", u"Basa Jawa", u"", u"Javanese"),
- (u"jw", u"Javanese", u"", u""),
(u"fr-BE", u"Français", u"", u"French"),
(u"tum", u"chiTumbuka", u"", u"Tumbuka"),
(u"ja", u"日本語", u"", u"Japanese"),
@@ -233,12 +217,9 @@ language_codes = (
(u"ilo", u"Ilokano", u"", u"Ilokano"),
(u"tlh", u"Klingon", u"", u""),
(u"pdc", u"Deitsch", u"", u"Pennsylvania German"),
- (u"aa", u"Afar", u"", u"Afar"),
(u"ch", u"Chamoru", u"", u"Chamorro"),
(u"co", u"Corsu", u"", u"Corsican"),
- (u"simple", u"Simple English", u"", u"Simple English"),
(u"ca", u"Català", u"", u"Catalan"),
- (u"xx-pirate", u"Pirate", u"", u""),
(u"ce", u"Нохчийн", u"", u"Chechen"),
(u"cy", u"Cymraeg", u"", u"Welsh"),
(u"sah", u"Саха тыла (Saxa Tyla)", u"", u"Sakha"),
@@ -254,30 +235,26 @@ language_codes = (
(u"frp", u"Arpitan", u"", u"Franco-Provençal"),
(u"xal", u"Хальмг", u"", u"Kalmyk"),
(u"pi", u"पाऴि", u"", u"Pali"),
- (u"it-IT", u"Italiano", u"", u"Italian"),
+ (u"ak", u"Akana", u"", u"Akan"),
(u"pl", u"Polski", u"", u"Polish"),
(u"nrm", u"Nouormand/Normaund", u"", u"Norman"),
(u"en-US", u"English", u"", u"English"),
(u"gan", u"贛語", u"", u"Gan"),
- (u"bat-smg", u"Žemaitėška", u"", u"Samogitian"),
- (u"en-UK", u"English", u"", u"English"),
(u"gag", u"Gagauz", u"", u"Gagauz"),
(u"an", u"Aragonés", u"", u"Aragonese"),
(u"gaa", u"Ga", u"", u""),
(u"fur", u"Furlan", u"", u"Friulian"),
- (u"kr-KR", u"Kanuri", u"", u"Kanuri"),
- (u"zh-CN", u"中文 (简体)", u"", u""),
+ (u"es-PE", u"Español", u"", u"Spanish"),
(u"tl-PH", u"Tagalog", u"", u"Tagalog"),
(u"en-IN", u"English", u"", u"English"),
(u"ve", u"Tshivenda", u"", u"Venda"),
(u"en-ID", u"English", u"", u"English"),
(u"en-IE", u"English", u"", u"English"),
- (u"xx-bork", u"Bork, bork, bork!", u"", u""),
+ (u"is", u"Íslenska", u"", u"Icelandic"),
(u"iu", u"ᐃᓄᒃᑎᑐᑦ", u"", u"Inuktitut"),
(u"it", u"Italiano", u"", u"Italian"),
(u"iw", u"עברית", u"", u""),
(u"vo", u"Volapük", u"", u"Volapük"),
- (u"ii", u"ꆇꉙ", u"", u"Sichuan Yi"),
(u"ik", u"Iñupiak", u"", u"Inupiak"),
(u"io", u"Ido", u"", u"Ido"),
(u"ia", u"Interlingua", u"", u"Interlingua"),
@@ -288,7 +265,7 @@ language_codes = (
(u"pap", u"Papiamentu", u"", u"Papiamentu"),
(u"pag", u"Pangasinan", u"", u"Pangasinan"),
(u"pam", u"Kapampangan", u"", u"Kapampangan"),
- (u"lv-LV", u"Latviešu", u"", u"Latvian"),
+ (u"nl", u"Nederlands", u"", u"Dutch"),
(u"mzn", u"مَزِروني", u"", u"Mazandarani"),
(u"nl-BE", u"Nederlands", u"", u"Dutch"),
(u"sk-SK", u"Slovenčina", u"", u"Slovak"),
@@ -297,6 +274,7 @@ language_codes = (
(u"de-DE", u"Deutsch", u"", u"German"),
(u"jbo", u"Lojban", u"", u"Lojban"),
(u"mfe", u"kreol morisien", u"", u""),
+ (u"tcy", u"Tulu", u"", u"ತುಳು"),
(u"hak", u"Hak-kâ-fa / 客家話", u"", u"Hakka"),
(u"ny", u"Chichewa", u"", u"Chichewa"),
(u"ady", u"Адыгэбзэ", u"", u"Adyghe"),
@@ -308,7 +286,6 @@ language_codes = (
(u"en-MY", u"English", u"", u"English"),
(u"sv-SE", u"Svenska", u"", u"Swedish"),
(u"de-AT", u"Deutsch", u"", u"German"),
- (u"xx-elmer", u"Elmer Fudd", u"", u""),
(u"hsb", u"Hornjoserbsce", u"", u"Upper Sorbian"),
(u"be", u"Беларуская", u"", u"Belarusian"),
(u"bg", u"Български", u"", u"Bulgarian"),
@@ -328,25 +305,20 @@ language_codes = (
(u"ach", u"Acoli", u"", u""),
(u"oc", u"Occitan", u"", u"Occitan"),
(u"kri", u"Krio (Sierra Leone)", u"", u""),
- (u"be-tarask", u"Беларуская (тарашкевіца)", u"", u"Belarusian (Taraškievica)"),
(u"krc", u"Къарачай-Малкъар (Qarachay-Malqar)", u"", u"Karachay-Balkar"),
(u"nds", u"Plattdüütsch", u"", u"Low Saxon"),
(u"os", u"Иронау", u"", u"Ossetian"),
(u"or", u"ଓଡ଼ିଆ", u"", u"Oriya"),
(u"nso", u"Sepedi", u"", u"Northern Sotho"),
(u"bjn", u"Bahasa Banjar", u"", u"Banjar"),
- (u"xx-hacker", u"Hacker", u"", u""),
- (u"zh-min-nan", u"Bân-lâm-gú", u"", u"Min Nan"),
(u"pa", u"ਪੰਜਾਬੀ", u"", u"Punjabi"),
(u"loz", u"Lozi", u"", u""),
(u"war", u"Winaray", u"", u"Waray-Waray"),
- (u"hz", u"Otsiherero", u"", u"Herero"),
(u"hy", u"Հայերեն", u"", u"Armenian"),
(u"hr", u"Hrvatski", u"", u"Croatian"),
(u"ht", u"Krèyol ayisyen", u"", u"Haitian"),
(u"hu", u"Magyar", u"", u"Hungarian"),
(u"hi", u"हिन्दी", u"", u"Hindi"),
- (u"ho", u"Hiri Motu", u"", u"Hiri Motu"),
(u"ha", u"هَوُسَ", u"", u"Hausa"),
(u"bug", u"Basa Ugi", u"", u"Buginese"),
(u"he", u"עברית", u"", u"Hebrew"),
@@ -359,7 +331,7 @@ language_codes = (
(u"pih", u"Norfuk", u"", u"Norfolk"),
(u"ab", u"Аҧсуа", u"", u"Abkhazian"),
(u"af", u"Afrikaans", u"", u"Afrikaans"),
- (u"ak", u"Akana", u"", u"Akan"),
+ (u"it-IT", u"Italiano", u"", u"Italian"),
(u"am", u"አማርኛ", u"", u"Amharic"),
(u"myv", u"Эрзянь (Erzjanj Kelj)", u"", u"Erzya"),
(u"as", u"অসমীয়া", u"", u"Assamese"),
@@ -370,21 +342,17 @@ language_codes = (
(u"ay", u"Aymar", u"", u"Aymara"),
(u"az", u"Azərbaycanca", u"", u"Azerbaijani"),
(u"es-ES", u"Español", u"", u"Spanish"),
- (u"nl", u"Nederlands", u"", u"Dutch"),
+ (u"lv-LV", u"Latviešu", u"", u"Latvian"),
(u"nn", u"Nynorsk", u"", u"Norwegian (Nynorsk)"),
(u"no", u"Norsk (Bokmål)", u"", u"Norwegian (Bokmål)"),
(u"na", u"dorerin Naoero", u"", u"Nauruan"),
(u"nah", u"Nāhuatl", u"", u"Nahuatl"),
(u"ne", u"नेपाली", u"", u"Nepali"),
- (u"ng", u"Oshiwambo", u"", u"Ndonga"),
(u"en-AU", u"English", u"", u"English"),
(u"nap", u"Nnapulitano", u"", u"Neapolitan"),
(u"nv", u"Diné bizaad", u"", u"Navajo"),
(u"ku", u"Kurdî / كوردی", u"", u"Kurdish"),
(u"cs-CZ", u"Čeština", u"", u"Czech"),
- (u"zh-yue", u"粵語", u"", u"Cantonese"),
(u"en-SG", u"English", u"", u"English"),
- (u"zh-classical", u"古文 / 文言文", u"", u"Classical Chinese"),
- (u"bcl", u"Bikol", u"", u"Central Bicolano"),
- (u"en-XA", u"English", u"", u"English")
+ (u"bcl", u"Bikol", u"", u"Central Bicolano")
)
diff --git a/utils/update_languages.py b/utils/update_languages.py
@@ -11,7 +11,7 @@
from requests import get
from re import sub
-from lxml.html import fromstring
+from lxml.html import fromstring, tostring
from json import loads
from sys import path
path.append('../searx')
@@ -25,6 +25,28 @@ google_json_name = 'google.preferences.langMap'
languages = {}
+
+# To filter out invalid codes and dialects.
+def valid_code(lang_code):
+ # filter invalid codes
+ if lang_code[:2] == 'xx'\
+ or lang_code == 'jw'\
+ or lang_code[-2:] == 'UK'\
+ or lang_code[-2:] == 'XA'\
+ or lang_code[-2:] == 'XL':
+ return False
+
+ # filter dialects
+ lang_code = lang_code.split('-')
+ if len(lang_code) > 2 or len(lang_code[0]) > 3:
+ return False
+ if len(lang_code) == 2 and len(lang_code[1]) > 2:
+ print lang_code
+ return False
+
+ return True
+
+
# Get language names from Wikipedia.
def get_wikipedia_languages():
response = get(wiki_languages_url)
@@ -38,10 +60,13 @@ def get_wikipedia_languages():
code = td[3].xpath('./a')[0].text
name = td[2].xpath('./a')[0].text
english_name = td[1].xpath('./a')[0].text
+ articles = int(td[4].xpath('./a/b')[0].text.replace(',',''))
- if code not in languages:
+ # exclude languages with few articles and language variants
+ if code not in languages and articles >= 100 and valid_code(code):
languages[code] = (name, '', english_name)
+
# Get language names from Google.
def get_google_languages():
response = get(google_languages_url)
@@ -51,25 +76,27 @@ def get_google_languages():
code = option.xpath('./@value')[0]
name = option.text[:-1]
- if code not in languages:
+ if code not in languages and valid_code(code):
languages[code] = (name, '', '')
+
# Join all language lists.
# iterate all languages supported by each engine
def join_language_lists():
for engine_name in engines:
for locale in engines[engine_name].supported_languages:
locale = locale.replace('_', '-')
- if locale not in languages:
+ if locale not in languages and valid_code(locale):
# try to get language name
language = languages.get(locale.split('-')[0], None)
if language == None:
- print engine_name + ": " + locale
+ # print engine_name + ": " + locale
continue
(name, country, english) = language
languages[locale] = (name, country, english)
+
# Write languages.py.
def write_languages_file():
new_file = open('languages.py', 'w')
@@ -81,7 +108,7 @@ def write_languages_file():
(name, country, english) = languages[code]
file_content += '\n (u"' + code + '"'\
+ ', u"' + name + '"'\
- + ', u"' + country[1:-1] + '"'\
+ + ', u"' + country + '"'\
+ ', u"' + english + '"),'
# remove last comma
file_content = file_content[:-1]
@@ -89,11 +116,13 @@ def write_languages_file():
new_file.write(file_content.encode('utf8'))
new_file.close()
+
def main():
get_wikipedia_languages()
get_google_languages()
join_language_lists()
write_languages_file()
+
if __name__ == "__main__":
main()