1
0
mirror of https://github.com/searxng/searxng.git synced 2024-11-22 20:17:45 +01:00

filter langauges

This commit is contained in:
marc 2016-08-06 22:19:21 -05:00
parent 149802c569
commit c677aee58a
4 changed files with 81 additions and 72 deletions

View File

@ -40,6 +40,12 @@ url_xpath = './/url'
title_xpath = './/title' title_xpath = './/title'
content_xpath = './/sum' 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 # do search-request
def request(query, params): def request(query, params):
@ -48,7 +54,9 @@ def request(query, params):
if params['language'] == 'all': if params['language'] == 'all':
language = 'xx' language = 'xx'
else: else:
language = params['language'].split('-')[0] language = params['language'].replace('-', '_').lower()
if language.split('-')[0] != 'zh':
language = language.split('-')[0]
if params['safesearch'] >= 1: if params['safesearch'] >= 1:
safesearch = 1 safesearch = 1

View File

@ -23,20 +23,20 @@ categories = ['general']
paging = True paging = True
language_support = True language_support = True
use_locale_domain = True use_locale_domain = True
supported_languages = ['de', 'en', 'es', 'es_419', 'fr', 'hr', 'it', 'nl', 'pl', 'pt-BR', supported_languages = ["ach", "af", "ak", "az", "ms", "ban", "xx-bork", "bs", "br", "ca",
'pt-PT', 'vi', 'tr', 'ru', 'ar', 'th', 'ko', 'zh-CN', 'zh-TW', 'ja', "ceb", "ckb", "cs", "sn", "co", "cy", "da", "de", "yo", "et",
'ach', 'af', 'ak', 'az', 'ms', 'ban', 'xx_bork', 'bs', 'br', 'ca', "xx-elmer", "en", "es", "es-419", "eo", "eu", "ee", "tl", "fo", "fr",
'ceb', 'ckb', 'cs', 'sn', 'co', 'cy', 'da', 'yo', 'et', 'xx_elmer', "gaa", "ga", "gd", "gl", "gn", "xx-hacker", "ht", "ha", "hr", "haw",
'eo', 'eu', 'ee', 'tl', 'fo', 'gaa', 'ga', 'gd', 'gl', 'gn', 'xx_hacker', "bem", "ig", "rn", "id", "ia", "zu", "is", "it", "jw", "rw", "sw",
'ht', 'ha', 'haw', 'bem', 'ig', 'rn', 'id', 'ia', 'zu', 'is', 'jw', 'rw', "tlh", "kg", "mfe", "kri", "la", "lv", "to", "lt", "ln", "loz",
'sw', 'tlh', 'kg', 'mfe', 'kri', 'la', 'lv', 'to', 'lt', 'ln', 'loz', "lua", "lg", "hu", "mg", "mt", "mi", "nl", "pcm", "no", "nso",
'lua', 'lg', 'hu', 'mg', 'mt', 'mi', 'pcm', 'no', 'nso', 'ny', 'nn', "ny", "nn", "uz", "oc", "om", "xx-pirate", "pl", "pt-BR", "pt-PT",
'uz', 'oc', 'om', 'xx_pirate', 'pt', 'ro', 'mo', 'rm', 'qu', 'nyn', 'crs', "ro", "rm", "qu", "nyn", "crs", "sq", "sd", "sk", "sl", "so", "st",
'sq', 'sd', 'sk', 'sl', 'so', 'st', 'sr_ME', 'sr_Latn', 'su', 'fi', 'sv', "sr-ME", "sr-Latn", "su", "fi", "sv", "tg", "tt", "vi", "tn", "tum",
'tg', 'tt', 'tn', 'tum', 'tk', 'tw', 'fy', 'wo', 'xh', 'el', 'be', 'bg', "tr", "tk", "tw", "fy", "wo", "xh", "el", "be", "bg", "ky", "kk", "mk",
'ky', 'kk', 'mk', 'mn', 'sr', 'uk', 'ka', 'hy', 'yi', 'iw', 'ug', 'ur', "mn", "ru", "sr", "uk", "ka", "hy", "yi", "iw", "ug", "ur", "ar", "ps",
'ps', 'fa', 'ti', 'am', 'ne', 'mr', 'hi', 'bn', 'pa', 'gu', 'or', 'ta', "fa", "ti", "am", "ne", "mr", "hi", "bn", "pa", "gu", "or", "ta", "te",
'te', 'kn', 'ml', 'si', 'lo', 'my', 'km', 'chr'] "kn", "ml", "si", "th", "lo", "my", "km", "chr", "ko", "zh-CN", "zh-TW", "ja"]
time_range_support = True time_range_support = True
# based on https://en.wikipedia.org/wiki/List_of_Google_domains and tests # based on https://en.wikipedia.org/wiki/List_of_Google_domains and tests
@ -181,8 +181,12 @@ def request(query, params):
language = 'en' language = 'en'
country = 'US' country = 'US'
url_lang = '' url_lang = ''
elif params['language'][:2] == 'jv':
language = 'jw'
country = 'ID'
url_lang = 'lang_jw'
else: else:
language_array = params['language'].lower().split('_') language_array = params['language'].lower().split('-')
if len(language_array) == 2: if len(language_array) == 2:
country = language_array[1] country = language_array[1]
else: else:

View File

@ -32,9 +32,7 @@ language_codes = (
(u"en-NZ", u"English", u"", u"English"), (u"en-NZ", u"English", u"", u"English"),
(u"got", u"𐌲𐌿𐍄𐌹𐍃𐌺", u"", u"Gothic"), (u"got", u"𐌲𐌿𐍄𐌹𐍃𐌺", u"", u"Gothic"),
(u"vls", u"West-Vlams", u"", u"West Flemish"), (u"vls", u"West-Vlams", u"", u"West Flemish"),
(u"ro", u"Română", u"", u"Romanian"),
(u"bxr", u"Буряад", u"", u"Buryat"), (u"bxr", u"Буряад", u"", u"Buryat"),
(u"fiu-vro", u"Võro", u"", u"Võro"),
(u"diq", u"Zazaki", u"", u"Zazaki"), (u"diq", u"Zazaki", u"", u"Zazaki"),
(u"zh", u"中文", u"", u"Chinese"), (u"zh", u"中文", u"", u"Chinese"),
(u"pms", u"Piemontèis", u"", u"Piedmontese"), (u"pms", u"Piemontèis", u"", u"Piedmontese"),
@ -42,28 +40,25 @@ language_codes = (
(u"zh-HK", u"中文", u"", u"Chinese"), (u"zh-HK", u"中文", u"", u"Chinese"),
(u"zu", u"isiZulu", u"", u"Zulu"), (u"zu", u"isiZulu", u"", u"Zulu"),
(u"tet", u"Tetun", u"", u"Tetum"), (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"new", u"नेपाल भाषा", u"", u"Newar"),
(u"ro-RO", u"Română", u"", u"Romanian"),
(u"lez", u"Лезги чІал (Lezgi čal)", u"", u"Lezgian"), (u"lez", u"Лезги чІал (Lezgi čal)", u"", u"Lezgian"),
(u"glk", u"گیلکی", u"", u"Gilaki"), (u"glk", u"گیلکی", u"", u"Gilaki"),
(u"ko-KR", u"한국어", u"", u"Korean"), (u"ko-KR", u"한국어", u"", u"Korean"),
(u"id-ID", u"Bahasa Indonesia", u"", u"Indonesian"), (u"id-ID", u"Bahasa Indonesia", u"", u"Indonesian"),
(u"cho", u"Choctaw", u"", u"Choctaw"),
(u"chr", u"ᏣᎳᎩ", u"", u"Cherokee"), (u"chr", u"ᏣᎳᎩ", u"", u"Cherokee"),
(u"vi", u"Tiếng Việt", u"", u"Vietnamese"), (u"vi", u"Tiếng Việt", u"", u"Vietnamese"),
(u"chy", u"Tsetsêhestâhese", u"", u"Cheyenne"), (u"chy", u"Tsetsêhestâhese", u"", u"Cheyenne"),
(u"is", u"Íslenska", u"", u"Icelandic"),
(u"tk", u"تركمن / Туркмен", u"", u"Turkmen"), (u"tk", u"تركمن / Туркмен", u"", u"Turkmen"),
(u"da-DK", u"Dansk", u"", u"Danish"), (u"da-DK", u"Dansk", u"", u"Danish"),
(u"pfl", u"Pälzisch", u"", u"Palatinate German"), (u"pfl", u"Pälzisch", u"", u"Palatinate German"),
(u"hu-HU", u"Magyar", u"", u"Hungarian"), (u"hu-HU", u"Magyar", u"", u"Hungarian"),
(u"he-IL", u"עברית", u"", u"Hebrew"),
(u"mg", u"Malagasy", u"", u"Malagasy"), (u"mg", u"Malagasy", u"", u"Malagasy"),
(u"ml", u"മലയാളം", u"", u"Malayalam"), (u"ml", u"മലയാളം", u"", u"Malayalam"),
(u"mo", u"Молдовеняскэ", u"", u"Moldovan"), (u"mo", u"Молдовеняскэ", u"", u"Moldovan"),
(u"mn", u"Монгол", u"", u"Mongolian"), (u"mn", u"Монгол", u"", u"Mongolian"),
(u"mi", u"Māori", u"", u"Maori"), (u"mi", u"Māori", u"", u"Maori"),
(u"mh", u"Ebon", u"", u"Marshallese"),
(u"mk", u"Македонски", u"", u"Macedonian"), (u"mk", u"Македонски", u"", u"Macedonian"),
(u"mt", u"Malti", u"", u"Maltese"), (u"mt", u"Malti", u"", u"Maltese"),
(u"ms", u"Bahasa Melayu", u"", u"Malay"), (u"ms", u"Bahasa Melayu", u"", u"Malay"),
@ -75,7 +70,6 @@ language_codes = (
(u"pl-PL", u"Polski", u"", u"Polish"), (u"pl-PL", u"Polski", u"", u"Polish"),
(u"sl-SL", u"Slovenščina", u"", u"Slovenian"), (u"sl-SL", u"Slovenščina", u"", u"Slovenian"),
(u"csb", u"Kaszëbsczi", u"", u"Kashubian"), (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"nyn", u"Runyankore", u"", u""),
(u"ig", u"Igbo", u"", u"Igbo"), (u"ig", u"Igbo", u"", u"Igbo"),
(u"fr", u"Français", u"", u"French"), (u"fr", u"Français", u"", u"French"),
@ -88,7 +82,7 @@ language_codes = (
(u"fj", u"Na Vosa Vakaviti", u"", u"Fijian"), (u"fj", u"Na Vosa Vakaviti", u"", u"Fijian"),
(u"fo", u"Føroyskt", u"", u"Faroese"), (u"fo", u"Føroyskt", u"", u"Faroese"),
(u"ss", u"SiSwati", u"", u"Swati"), (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"sq", u"Shqip", u"", u"Albanian"),
(u"sw", u"Kiswahili", u"", u"Swahili"), (u"sw", u"Kiswahili", u"", u"Swahili"),
(u"sv", u"Svenska", u"", u"Swedish"), (u"sv", u"Svenska", u"", u"Swedish"),
@ -104,7 +98,7 @@ language_codes = (
(u"sc", u"Sardu", u"", u"Sardinian"), (u"sc", u"Sardu", u"", u"Sardinian"),
(u"pt-BR", u"português (Brasil)", u"", u""), (u"pt-BR", u"português (Brasil)", u"", u""),
(u"sa", u"संस्कृतम्", u"", u"Sanskrit"), (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"se", u"Sámegiella", u"", u"Northern Sami"),
(u"sd", u"سنڌي، سندھی ، सिन्ध", u"", u"Sindhi"), (u"sd", u"سنڌي، سندھی ، सिन्ध", u"", u"Sindhi"),
(u"fr-CH", u"Français", u"", u"French"), (u"fr-CH", u"Français", u"", u"French"),
@ -112,7 +106,6 @@ language_codes = (
(u"it-CH", u"Italiano", u"", u"Italian"), (u"it-CH", u"Italiano", u"", u"Italian"),
(u"wuu", u"吴语", u"", u"Wu"), (u"wuu", u"吴语", u"", u"Wu"),
(u"fr-CA", u"Français", u"", u"French"), (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"kbd", u"Адыгэбзэ (Adighabze)", u"", u"Kabardian Circassian"),
(u"no-NO", u"Norsk (Bokmål)", u"", u"Norwegian (Bokmål)"), (u"no-NO", u"Norsk (Bokmål)", u"", u"Norwegian (Bokmål)"),
(u"ca-ES", u"Català", u"", u"Catalan"), (u"ca-ES", u"Català", u"", u"Catalan"),
@ -130,14 +123,13 @@ language_codes = (
(u"yi", u"ייִדיש", u"", u"Yiddish"), (u"yi", u"ייִדיש", u"", u"Yiddish"),
(u"ceb", u"Sinugboanong Binisaya", u"", u"Cebuano"), (u"ceb", u"Sinugboanong Binisaya", u"", u"Cebuano"),
(u"yo", u"Yorùbá", u"", u"Yoruba"), (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"bar", u"Boarisch", u"", u"Bavarian"),
(u"nov", u"Novial", u"", u"Novial"), (u"nov", u"Novial", u"", u"Novial"),
(u"sr-ME", u"srpski (Crna Gora)", u"", u""), (u"sr-ME", u"srpski (Crna Gora)", u"", u""),
(u"es-CL", u"Español", u"", u"Spanish"), (u"es-CL", u"Español", u"", u"Spanish"),
(u"es-CO", u"Español", u"", u"Spanish"), (u"es-CO", u"Español", u"", u"Spanish"),
(u"nl-NL", u"Nederlands", u"", u"Dutch"), (u"nl-NL", u"Nederlands", u"", u"Dutch"),
(u"map-bms", u"Basa Banyumasan", u"", u"Banyumasan"),
(u"el", u"Ελληνικά", u"", u"Greek"), (u"el", u"Ελληνικά", u"", u"Greek"),
(u"eo", u"Esperanto", u"", u"Esperanto"), (u"eo", u"Esperanto", u"", u"Esperanto"),
(u"en", u"English", u"", u"English"), (u"en", u"English", u"", u"English"),
@ -151,7 +143,7 @@ language_codes = (
(u"rw", u"Ikinyarwanda", u"", u"Kinyarwanda"), (u"rw", u"Ikinyarwanda", u"", u"Kinyarwanda"),
(u"rm", u"Rumantsch", u"", u"Romansh"), (u"rm", u"Rumantsch", u"", u"Romansh"),
(u"rn", u"Kirundi", u"", u"Kirundi"), (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"dsb", u"Dolnoserbski", u"", u"Lower Sorbian"),
(u"ast", u"Asturianu", u"", u"Asturian"), (u"ast", u"Asturianu", u"", u"Asturian"),
(u"lmo", u"Lumbaart", u"", u"Lombard"), (u"lmo", u"Lumbaart", u"", u"Lombard"),
@ -161,17 +153,13 @@ language_codes = (
(u"koi", u"Перем Коми (Perem Komi)", u"", u"Komi-Permyak"), (u"koi", u"Перем Коми (Perem Komi)", u"", u"Komi-Permyak"),
(u"tr-TR", u"Türkçe", u"", u"Turkish"), (u"tr-TR", u"Türkçe", u"", u"Turkish"),
(u"pnt", u"Ποντιακά", u"", u"Pontic"), (u"pnt", u"Ποντιακά", u"", u"Pontic"),
(u"es-XL", u"Español", u"", u"Spanish"),
(u"fi-FI", u"Suomi", u"", u"Finnish"), (u"fi-FI", u"Suomi", u"", u"Finnish"),
(u"pnb", u"شاہ مکھی پنجابی (Shāhmukhī Pañjābī)", u"", u"Western Punjabi"), (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"bem", u"Ichibemba", u"", u""),
(u"roa-rup", u"Armãneashce", u"", u"Aromanian"), (u"en-ZA", u"English", u"", u"English"),
(u"sr-Latn", u"srpski (latinica)", u"", u""),
(u"stq", u"Seeltersk", u"", u"Saterland Frisian"), (u"stq", u"Seeltersk", u"", u"Saterland Frisian"),
(u"sr", u"Српски / Srpski", u"", u"Serbian"),
(u"ang", u"Englisc", u"", u"Anglo-Saxon"), (u"ang", u"Englisc", u"", u"Anglo-Saxon"),
(u"ru-RU", u"Русский", u"", u"Russian"),
(u"lbe", u"Лакку", u"", u"Lak"), (u"lbe", u"Лакку", u"", u"Lak"),
(u"min", u"Minangkabau", u"", u"Minangkabau"), (u"min", u"Minangkabau", u"", u"Minangkabau"),
(u"es-US", u"Español", u"", u"Spanish"), (u"es-US", u"Español", u"", u"Spanish"),
@ -184,14 +172,13 @@ language_codes = (
(u"kg", u"KiKongo", u"", u"Kongo"), (u"kg", u"KiKongo", u"", u"Kongo"),
(u"ckb", u"Soranî / کوردی", u"", u"Sorani"), (u"ckb", u"Soranî / کوردی", u"", u"Sorani"),
(u"kk", u"Қазақша", u"", u"Kazakh"), (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"ki", u"Gĩkũyũ", u"", u"Kikuyu"),
(u"ko", u"한국어", u"", u"Korean"), (u"ko", u"한국어", u"", u"Korean"),
(u"kn", u"ಕನ್ನಡ", u"", u"Kannada"), (u"kn", u"ಕನ್ನಡ", u"", u"Kannada"),
(u"tpi", u"Tok Pisin", u"", u"Tok Pisin"), (u"tpi", u"Tok Pisin", u"", u"Tok Pisin"),
(u"kl", u"Kalaallisut", u"", u"Greenlandic"), (u"kl", u"Kalaallisut", u"", u"Greenlandic"),
(u"ks", u"कश्मीरी / كشميري", u"", u"Kashmiri"), (u"ks", u"कश्मीरी / كشميري", u"", u"Kashmiri"),
(u"kr", u"Kanuri", u"", u"Kanuri"),
(u"ext", u"Estremeñu", u"", u"Extremaduran"), (u"ext", u"Estremeñu", u"", u"Extremaduran"),
(u"kw", u"Kernewek/Karnuack", u"", u"Cornish"), (u"kw", u"Kernewek/Karnuack", u"", u"Cornish"),
(u"kv", u"Коми", u"", u"Komi"), (u"kv", u"Коми", u"", u"Komi"),
@ -202,7 +189,7 @@ language_codes = (
(u"en-GB", u"English", u"", u"English"), (u"en-GB", u"English", u"", u"English"),
(u"xmf", u"მარგალური (Margaluri)", u"", u"Mingrelian"), (u"xmf", u"მარგალური (Margaluri)", u"", u"Mingrelian"),
(u"jam", u"Jamaican Creole English", u"", u"Patois"), (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"ksh", u"Ripoarisch", u"", u"Ripuarian"),
(u"ms-MY", u"Bahasa Melayu", u"", u"Malay"), (u"ms-MY", u"Bahasa Melayu", u"", u"Malay"),
(u"de", u"Deutsch", u"", u"German"), (u"de", u"Deutsch", u"", u"German"),
@ -219,13 +206,10 @@ language_codes = (
(u"rmy", u"romani - रोमानी", u"", u"Romani"), (u"rmy", u"romani - रोमानी", u"", u"Romani"),
(u"arc", u"ܐܪܡܝܐ", u"", u"Aramaic"), (u"arc", u"ܐܪܡܝܐ", u"", u"Aramaic"),
(u"th-TH", u"ไทย", u"", u"Thai"), (u"th-TH", u"ไทย", u"", u"Thai"),
(u"mus", u"Muskogee", u"", u"Muscogee"),
(u"lua", u"Luba-Lulua", u"", u""), (u"lua", u"Luba-Lulua", u"", u""),
(u"en-ZA", u"English", u"", u"English"),
(u"wa", u"Walon", u"", u"Walloon"), (u"wa", u"Walon", u"", u"Walloon"),
(u"wo", u"Wolof", u"", u"Wolof"), (u"wo", u"Wolof", u"", u"Wolof"),
(u"jv", u"Basa Jawa", u"", u"Javanese"), (u"jv", u"Basa Jawa", u"", u"Javanese"),
(u"jw", u"Javanese", u"", u""),
(u"fr-BE", u"Français", u"", u"French"), (u"fr-BE", u"Français", u"", u"French"),
(u"tum", u"chiTumbuka", u"", u"Tumbuka"), (u"tum", u"chiTumbuka", u"", u"Tumbuka"),
(u"ja", u"日本語", u"", u"Japanese"), (u"ja", u"日本語", u"", u"Japanese"),
@ -233,12 +217,9 @@ language_codes = (
(u"ilo", u"Ilokano", u"", u"Ilokano"), (u"ilo", u"Ilokano", u"", u"Ilokano"),
(u"tlh", u"Klingon", u"", u""), (u"tlh", u"Klingon", u"", u""),
(u"pdc", u"Deitsch", u"", u"Pennsylvania German"), (u"pdc", u"Deitsch", u"", u"Pennsylvania German"),
(u"aa", u"Afar", u"", u"Afar"),
(u"ch", u"Chamoru", u"", u"Chamorro"), (u"ch", u"Chamoru", u"", u"Chamorro"),
(u"co", u"Corsu", u"", u"Corsican"), (u"co", u"Corsu", u"", u"Corsican"),
(u"simple", u"Simple English", u"", u"Simple English"),
(u"ca", u"Català", u"", u"Catalan"), (u"ca", u"Català", u"", u"Catalan"),
(u"xx-pirate", u"Pirate", u"", u""),
(u"ce", u"Нохчийн", u"", u"Chechen"), (u"ce", u"Нохчийн", u"", u"Chechen"),
(u"cy", u"Cymraeg", u"", u"Welsh"), (u"cy", u"Cymraeg", u"", u"Welsh"),
(u"sah", u"Саха тыла (Saxa Tyla)", u"", u"Sakha"), (u"sah", u"Саха тыла (Saxa Tyla)", u"", u"Sakha"),
@ -254,30 +235,26 @@ language_codes = (
(u"frp", u"Arpitan", u"", u"Franco-Provençal"), (u"frp", u"Arpitan", u"", u"Franco-Provençal"),
(u"xal", u"Хальмг", u"", u"Kalmyk"), (u"xal", u"Хальмг", u"", u"Kalmyk"),
(u"pi", u"पाऴि", u"", u"Pali"), (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"pl", u"Polski", u"", u"Polish"),
(u"nrm", u"Nouormand/Normaund", u"", u"Norman"), (u"nrm", u"Nouormand/Normaund", u"", u"Norman"),
(u"en-US", u"English", u"", u"English"), (u"en-US", u"English", u"", u"English"),
(u"gan", u"贛語", u"", u"Gan"), (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"gag", u"Gagauz", u"", u"Gagauz"),
(u"an", u"Aragonés", u"", u"Aragonese"), (u"an", u"Aragonés", u"", u"Aragonese"),
(u"gaa", u"Ga", u"", u""), (u"gaa", u"Ga", u"", u""),
(u"fur", u"Furlan", u"", u"Friulian"), (u"fur", u"Furlan", u"", u"Friulian"),
(u"kr-KR", u"Kanuri", u"", u"Kanuri"), (u"es-PE", u"Español", u"", u"Spanish"),
(u"zh-CN", u"中文 (简体)", u"", u""),
(u"tl-PH", u"Tagalog", u"", u"Tagalog"), (u"tl-PH", u"Tagalog", u"", u"Tagalog"),
(u"en-IN", u"English", u"", u"English"), (u"en-IN", u"English", u"", u"English"),
(u"ve", u"Tshivenda", u"", u"Venda"), (u"ve", u"Tshivenda", u"", u"Venda"),
(u"en-ID", u"English", u"", u"English"), (u"en-ID", u"English", u"", u"English"),
(u"en-IE", 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"iu", u"ᐃᓄᒃᑎᑐᑦ", u"", u"Inuktitut"),
(u"it", u"Italiano", u"", u"Italian"), (u"it", u"Italiano", u"", u"Italian"),
(u"iw", u"עברית", u"", u""), (u"iw", u"עברית", u"", u""),
(u"vo", u"Volapük", u"", u"Volapük"), (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"ik", u"Iñupiak", u"", u"Inupiak"),
(u"io", u"Ido", u"", u"Ido"), (u"io", u"Ido", u"", u"Ido"),
(u"ia", u"Interlingua", u"", u"Interlingua"), (u"ia", u"Interlingua", u"", u"Interlingua"),
@ -288,7 +265,7 @@ language_codes = (
(u"pap", u"Papiamentu", u"", u"Papiamentu"), (u"pap", u"Papiamentu", u"", u"Papiamentu"),
(u"pag", u"Pangasinan", u"", u"Pangasinan"), (u"pag", u"Pangasinan", u"", u"Pangasinan"),
(u"pam", u"Kapampangan", u"", u"Kapampangan"), (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"mzn", u"مَزِروني", u"", u"Mazandarani"),
(u"nl-BE", u"Nederlands", u"", u"Dutch"), (u"nl-BE", u"Nederlands", u"", u"Dutch"),
(u"sk-SK", u"Slovenčina", u"", u"Slovak"), (u"sk-SK", u"Slovenčina", u"", u"Slovak"),
@ -297,6 +274,7 @@ language_codes = (
(u"de-DE", u"Deutsch", u"", u"German"), (u"de-DE", u"Deutsch", u"", u"German"),
(u"jbo", u"Lojban", u"", u"Lojban"), (u"jbo", u"Lojban", u"", u"Lojban"),
(u"mfe", u"kreol morisien", u"", u""), (u"mfe", u"kreol morisien", u"", u""),
(u"tcy", u"Tulu", u"", u"ತುಳು"),
(u"hak", u"Hak-kâ-fa / 客家話", u"", u"Hakka"), (u"hak", u"Hak-kâ-fa / 客家話", u"", u"Hakka"),
(u"ny", u"Chichewa", u"", u"Chichewa"), (u"ny", u"Chichewa", u"", u"Chichewa"),
(u"ady", u"Адыгэбзэ", u"", u"Adyghe"), (u"ady", u"Адыгэбзэ", u"", u"Adyghe"),
@ -308,7 +286,6 @@ language_codes = (
(u"en-MY", u"English", u"", u"English"), (u"en-MY", u"English", u"", u"English"),
(u"sv-SE", u"Svenska", u"", u"Swedish"), (u"sv-SE", u"Svenska", u"", u"Swedish"),
(u"de-AT", u"Deutsch", u"", u"German"), (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"hsb", u"Hornjoserbsce", u"", u"Upper Sorbian"),
(u"be", u"Беларуская", u"", u"Belarusian"), (u"be", u"Беларуская", u"", u"Belarusian"),
(u"bg", u"Български", u"", u"Bulgarian"), (u"bg", u"Български", u"", u"Bulgarian"),
@ -328,25 +305,20 @@ language_codes = (
(u"ach", u"Acoli", u"", u""), (u"ach", u"Acoli", u"", u""),
(u"oc", u"Occitan", u"", u"Occitan"), (u"oc", u"Occitan", u"", u"Occitan"),
(u"kri", u"Krio (Sierra Leone)", u"", u""), (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"krc", u"Къарачай-Малкъар (Qarachay-Malqar)", u"", u"Karachay-Balkar"),
(u"nds", u"Plattdüütsch", u"", u"Low Saxon"), (u"nds", u"Plattdüütsch", u"", u"Low Saxon"),
(u"os", u"Иронау", u"", u"Ossetian"), (u"os", u"Иронау", u"", u"Ossetian"),
(u"or", u"ଓଡ଼ିଆ", u"", u"Oriya"), (u"or", u"ଓଡ଼ିଆ", u"", u"Oriya"),
(u"nso", u"Sepedi", u"", u"Northern Sotho"), (u"nso", u"Sepedi", u"", u"Northern Sotho"),
(u"bjn", u"Bahasa Banjar", u"", u"Banjar"), (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"pa", u"ਪੰਜਾਬੀ", u"", u"Punjabi"),
(u"loz", u"Lozi", u"", u""), (u"loz", u"Lozi", u"", u""),
(u"war", u"Winaray", u"", u"Waray-Waray"), (u"war", u"Winaray", u"", u"Waray-Waray"),
(u"hz", u"Otsiherero", u"", u"Herero"),
(u"hy", u"Հայերեն", u"", u"Armenian"), (u"hy", u"Հայերեն", u"", u"Armenian"),
(u"hr", u"Hrvatski", u"", u"Croatian"), (u"hr", u"Hrvatski", u"", u"Croatian"),
(u"ht", u"Krèyol ayisyen", u"", u"Haitian"), (u"ht", u"Krèyol ayisyen", u"", u"Haitian"),
(u"hu", u"Magyar", u"", u"Hungarian"), (u"hu", u"Magyar", u"", u"Hungarian"),
(u"hi", u"हिन्दी", u"", u"Hindi"), (u"hi", u"हिन्दी", u"", u"Hindi"),
(u"ho", u"Hiri Motu", u"", u"Hiri Motu"),
(u"ha", u"هَوُسَ", u"", u"Hausa"), (u"ha", u"هَوُسَ", u"", u"Hausa"),
(u"bug", u"Basa Ugi", u"", u"Buginese"), (u"bug", u"Basa Ugi", u"", u"Buginese"),
(u"he", u"עברית", u"", u"Hebrew"), (u"he", u"עברית", u"", u"Hebrew"),
@ -359,7 +331,7 @@ language_codes = (
(u"pih", u"Norfuk", u"", u"Norfolk"), (u"pih", u"Norfuk", u"", u"Norfolk"),
(u"ab", u"Аҧсуа", u"", u"Abkhazian"), (u"ab", u"Аҧсуа", u"", u"Abkhazian"),
(u"af", u"Afrikaans", u"", u"Afrikaans"), (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"am", u"አማርኛ", u"", u"Amharic"),
(u"myv", u"Эрзянь (Erzjanj Kelj)", u"", u"Erzya"), (u"myv", u"Эрзянь (Erzjanj Kelj)", u"", u"Erzya"),
(u"as", u"অসমীয়া", u"", u"Assamese"), (u"as", u"অসমীয়া", u"", u"Assamese"),
@ -370,21 +342,17 @@ language_codes = (
(u"ay", u"Aymar", u"", u"Aymara"), (u"ay", u"Aymar", u"", u"Aymara"),
(u"az", u"Azərbaycanca", u"", u"Azerbaijani"), (u"az", u"Azərbaycanca", u"", u"Azerbaijani"),
(u"es-ES", u"Español", u"", u"Spanish"), (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"nn", u"Nynorsk", u"", u"Norwegian (Nynorsk)"),
(u"no", u"Norsk (Bokmål)", u"", u"Norwegian (Bokmål)"), (u"no", u"Norsk (Bokmål)", u"", u"Norwegian (Bokmål)"),
(u"na", u"dorerin Naoero", u"", u"Nauruan"), (u"na", u"dorerin Naoero", u"", u"Nauruan"),
(u"nah", u"Nāhuatl", u"", u"Nahuatl"), (u"nah", u"Nāhuatl", u"", u"Nahuatl"),
(u"ne", u"नेपाली", u"", u"Nepali"), (u"ne", u"नेपाली", u"", u"Nepali"),
(u"ng", u"Oshiwambo", u"", u"Ndonga"),
(u"en-AU", u"English", u"", u"English"), (u"en-AU", u"English", u"", u"English"),
(u"nap", u"Nnapulitano", u"", u"Neapolitan"), (u"nap", u"Nnapulitano", u"", u"Neapolitan"),
(u"nv", u"Diné bizaad", u"", u"Navajo"), (u"nv", u"Diné bizaad", u"", u"Navajo"),
(u"ku", u"Kurdî / كوردی", u"", u"Kurdish"), (u"ku", u"Kurdî / كوردی", u"", u"Kurdish"),
(u"cs-CZ", u"Čeština", u"", u"Czech"), (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"en-SG", u"English", u"", u"English"),
(u"zh-classical", u"古文 / 文言文", u"", u"Classical Chinese"), (u"bcl", u"Bikol", u"", u"Central Bicolano")
(u"bcl", u"Bikol", u"", u"Central Bicolano"),
(u"en-XA", u"English", u"", u"English")
) )

View File

@ -11,7 +11,7 @@
from requests import get from requests import get
from re import sub from re import sub
from lxml.html import fromstring from lxml.html import fromstring, tostring
from json import loads from json import loads
from sys import path from sys import path
path.append('../searx') path.append('../searx')
@ -25,6 +25,28 @@ google_json_name = 'google.preferences.langMap'
languages = {} 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. # Get language names from Wikipedia.
def get_wikipedia_languages(): def get_wikipedia_languages():
response = get(wiki_languages_url) response = get(wiki_languages_url)
@ -38,10 +60,13 @@ def get_wikipedia_languages():
code = td[3].xpath('./a')[0].text code = td[3].xpath('./a')[0].text
name = td[2].xpath('./a')[0].text name = td[2].xpath('./a')[0].text
english_name = td[1].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) languages[code] = (name, '', english_name)
# Get language names from Google. # Get language names from Google.
def get_google_languages(): def get_google_languages():
response = get(google_languages_url) response = get(google_languages_url)
@ -51,25 +76,27 @@ def get_google_languages():
code = option.xpath('./@value')[0] code = option.xpath('./@value')[0]
name = option.text[:-1] name = option.text[:-1]
if code not in languages: if code not in languages and valid_code(code):
languages[code] = (name, '', '') languages[code] = (name, '', '')
# Join all language lists. # Join all language lists.
# iterate all languages supported by each engine # iterate all languages supported by each engine
def join_language_lists(): def join_language_lists():
for engine_name in engines: for engine_name in engines:
for locale in engines[engine_name].supported_languages: for locale in engines[engine_name].supported_languages:
locale = locale.replace('_', '-') locale = locale.replace('_', '-')
if locale not in languages: if locale not in languages and valid_code(locale):
# try to get language name # try to get language name
language = languages.get(locale.split('-')[0], None) language = languages.get(locale.split('-')[0], None)
if language == None: if language == None:
print engine_name + ": " + locale # print engine_name + ": " + locale
continue continue
(name, country, english) = language (name, country, english) = language
languages[locale] = (name, country, english) languages[locale] = (name, country, english)
# Write languages.py. # Write languages.py.
def write_languages_file(): def write_languages_file():
new_file = open('languages.py', 'w') new_file = open('languages.py', 'w')
@ -81,7 +108,7 @@ def write_languages_file():
(name, country, english) = languages[code] (name, country, english) = languages[code]
file_content += '\n (u"' + code + '"'\ file_content += '\n (u"' + code + '"'\
+ ', u"' + name + '"'\ + ', u"' + name + '"'\
+ ', u"' + country[1:-1] + '"'\ + ', u"' + country + '"'\
+ ', u"' + english + '"),' + ', u"' + english + '"),'
# remove last comma # remove last comma
file_content = file_content[:-1] file_content = file_content[:-1]
@ -89,11 +116,13 @@ def write_languages_file():
new_file.write(file_content.encode('utf8')) new_file.write(file_content.encode('utf8'))
new_file.close() new_file.close()
def main(): def main():
get_wikipedia_languages() get_wikipedia_languages()
get_google_languages() get_google_languages()
join_language_lists() join_language_lists()
write_languages_file() write_languages_file()
if __name__ == "__main__": if __name__ == "__main__":
main() main()