From af35eee10b98940c51c6e5e18629de514b4bd48d Mon Sep 17 00:00:00 2001 From: marc Date: Thu, 15 Dec 2016 00:34:43 -0600 Subject: [PATCH] tests for _fetch_supported_languages in engines and refactor method to make it testable without making requests --- searx/data/engines_languages.json | 3257 +---------------------- searx/engines/.yandex.py.swp | Bin 12288 -> 0 bytes searx/engines/__init__.py | 13 +- searx/engines/bing.py | 6 +- searx/engines/bing_images.py | 2 +- searx/engines/bing_news.py | 2 +- searx/engines/dailymotion.py | 5 +- searx/engines/duckduckgo.py | 5 +- searx/engines/duckduckgo_definitions.py | 2 +- searx/engines/gigablast.py | 6 +- searx/engines/google.py | 12 +- searx/engines/google_news.py | 2 +- searx/engines/swisscows.py | 8 +- searx/engines/wikidata.py | 2 +- searx/engines/wikipedia.py | 6 +- searx/engines/yahoo.py | 8 +- searx/engines/yahoo_news.py | 2 +- searx/languages.py | 110 +- tests/unit/engines/test_bing.py | 32 + tests/unit/engines/test_dailymotion.py | 37 + tests/unit/engines/test_duckduckgo.py | 14 + tests/unit/engines/test_gigablast.py | 25 + tests/unit/engines/test_google.py | 57 + tests/unit/engines/test_swisscows.py | 27 + tests/unit/engines/test_wikipedia.py | 93 + tests/unit/engines/test_yahoo.py | 30 + utils/fetch_languages.py | 12 +- 27 files changed, 387 insertions(+), 3388 deletions(-) delete mode 100644 searx/engines/.yandex.py.swp diff --git a/searx/data/engines_languages.json b/searx/data/engines_languages.json index f94eb3aa2..243f8777c 100644 --- a/searx/data/engines_languages.json +++ b/searx/data/engines_languages.json @@ -1,3256 +1 @@ -{ - "google news": { - "gu": { - "name": "ગુજરાતી" - }, - "mfe": { - "name": "Kreol Morisien" - }, - "gd": { - "name": "Gàidhlig" - }, - "ga": { - "name": "Gaeilge" - }, - "gn": { - "name": "Guarani" - }, - "gl": { - "name": "Galego" - }, - "lg": { - "name": "Luganda" - }, - "la": { - "name": "Latin" - }, - "ln": { - "name": "Lingála" - }, - "tw": { - "name": "Twi" - }, - "tt": { - "name": "Tatar" - }, - "tr": { - "name": "Türkçe" - }, - "lv": { - "name": "Latviešu" - }, - "to": { - "name": "Lea Fakatonga" - }, - "lt": { - "name": "Lietuvių" - }, - "tk": { - "name": "Turkmen" - }, - "th": { - "name": "ไทย" - }, - "pcm": { - "name": "Nigerian Pidgin" - }, - "tg": { - "name": "Tajik" - }, - "te": { - "name": "తెలుగు" - }, - "haw": { - "name": "ʻŌlelo HawaiʻI" - }, - "yi": { - "name": "ייִדיש" - }, - "ceb": { - "name": "Cebuano" - }, - "yo": { - "name": "Èdè Yorùbá" - }, - "de": { - "name": "Deutsch" - }, - "ko": { - "name": "한국어" - }, - "da": { - "name": "Dansk" - }, - "crs": { - "name": "Seychellois Creole" - }, - "qu": { - "name": "Runasimi" - }, - "bem": { - "name": "Ichibemba" - }, - "xx": { - "name": "Pirate" - }, - "ban": { - "name": "Balinese" - }, - "el": { - "name": "Ελληνικά" - }, - "eo": { - "name": "Esperanto" - }, - "en": { - "name": "English" - }, - "zh": { - "name": "中文 (繁體)" - }, - "ee": { - "name": "Eʋegbe" - }, - "eu": { - "name": "Euskara" - }, - "et": { - "name": "Eesti" - }, - "es": { - "name": "Español (Latinoamérica)" - }, - "ru": { - "name": "Русский" - }, - "rw": { - "name": "Kinyarwanda" - }, - "lua": { - "name": "Luba-Lulua" - }, - "rm": { - "name": "Rumantsch" - }, - "rn": { - "name": "Ikirundi" - }, - "ro": { - "name": "Română" - }, - "be": { - "name": "Беларуская" - }, - "bg": { - "name": "Български" - }, - "uk": { - "name": "Українська" - }, - "ps": { - "name": "پښتو" - }, - "wo": { - "name": "Wolof" - }, - "bn": { - "name": "বাংলা" - }, - "jw": { - "name": "Javanese" - }, - "tum": { - "name": "Tumbuka" - }, - "br": { - "name": "Brezhoneg" - }, - "bs": { - "name": "Bosanski" - }, - "ja": { - "name": "日本語" - }, - "om": { - "name": "Oromoo" - }, - "ach": { - "name": "Acoli" - }, - "oc": { - "name": "Occitan" - }, - "kri": { - "name": "Krio (Sierra Leone)" - }, - "lo": { - "name": "ລາວ" - }, - "tlh": { - "name": "Klingon" - }, - "or": { - "name": "ଓଡ଼ିଆ" - }, - "xh": { - "name": "Xhosa" - }, - "co": { - "name": "Corsican" - }, - "nso": { - "name": "Northern Sotho" - }, - "ca": { - "name": "Català" - }, - "cy": { - "name": "Cymraeg" - }, - "cs": { - "name": "Čeština" - }, - "tn": { - "name": "Tswana" - }, - "pt": { - "name": "Português (Portugal)" - }, - "tl": { - "name": "Filipino" - }, - "chr": { - "name": "ᏣᎳᎩ" - }, - "pa": { - "name": "ਪੰਜਾਬੀ" - }, - "loz": { - "name": "Lozi" - }, - "is": { - "name": "Íslenska" - }, - "pl": { - "name": "Polski" - }, - "hy": { - "name": "Հայերեն" - }, - "hr": { - "name": "Hrvatski" - }, - "ti": { - "name": "ትግርኛ" - }, - "ht": { - "name": "Haitian Creole" - }, - "hu": { - "name": "Magyar" - }, - "hi": { - "name": "हिन्दी" - }, - "ha": { - "name": "Hausa" - }, - "gaa": { - "name": "Ga" - }, - "mg": { - "name": "Malagasy" - }, - "uz": { - "name": "O‘Zbek" - }, - "ml": { - "name": "മലയാളം" - }, - "mn": { - "name": "Монгол" - }, - "mi": { - "name": "Maori" - }, - "mk": { - "name": "Македонски" - }, - "ur": { - "name": "اردو" - }, - "mt": { - "name": "Malti" - }, - "ms": { - "name": "Bahasa Melayu" - }, - "mr": { - "name": "मराठी" - }, - "ug": { - "name": "ئۇيغۇرچە" - }, - "ta": { - "name": "தமிழ்" - }, - "my": { - "name": "ဗမာ" - }, - "af": { - "name": "Afrikaans" - }, - "vi": { - "name": "Tiếng Việt" - }, - "ak": { - "name": "Akan" - }, - "am": { - "name": "አማርኛ" - }, - "it": { - "name": "Italiano" - }, - "iw": { - "name": "עברית" - }, - "kn": { - "name": "ಕನ್ನಡ" - }, - "ar": { - "name": "العربية" - }, - "km": { - "name": "ខ្មែរ" - }, - "zu": { - "name": "Isizulu" - }, - "ia": { - "name": "Interlingua" - }, - "az": { - "name": "Azərbaycan Dili" - }, - "id": { - "name": "Indonesia" - }, - "ig": { - "name": "Igbo" - }, - "nl": { - "name": "Nederlands" - }, - "nn": { - "name": "Nynorsk" - }, - "no": { - "name": "Norsk" - }, - "ne": { - "name": "नेपाली" - }, - "ny": { - "name": "Nyanja" - }, - "nyn": { - "name": "Runyankore" - }, - "fr": { - "name": "Français" - }, - "fy": { - "name": "West-Frysk" - }, - "fa": { - "name": "فارسی" - }, - "fi": { - "name": "Suomi" - }, - "fo": { - "name": "Føroyskt" - }, - "ka": { - "name": "ქართული" - }, - "kg": { - "name": "Kongo" - }, - "ckb": { - "name": "Central Kurdish" - }, - "kk": { - "name": "Қазақ Тілі" - }, - "sr": { - "name": "Српски" - }, - "sq": { - "name": "Shqip" - }, - "sw": { - "name": "Kiswahili" - }, - "sv": { - "name": "Svenska" - }, - "su": { - "name": "Sundanese" - }, - "st": { - "name": "Southern Sotho" - }, - "sk": { - "name": "Slovenčina" - }, - "si": { - "name": "සිංහල" - }, - "so": { - "name": "Soomaali" - }, - "sn": { - "name": "Chishona" - }, - "sl": { - "name": "Slovenščina" - }, - "ky": { - "name": "Кыргызча" - }, - "sd": { - "name": "Sindhi" - } - }, - "dailymotion": { - "gv": { - "english_name": "Manx" - }, - "gu": { - "name": "ગુજરાતી", - "english_name": "Gujarati" - }, - "gd": { - "english_name": "Gaelic, Scottish" - }, - "ga": { - "name": "Gaeilge", - "english_name": "Irish" - }, - "gn": { - "english_name": "Guarani" - }, - "gl": { - "name": "Galego", - "english_name": "Galician" - }, - "lg": { - "english_name": "Ganda" - }, - "lb": { - "english_name": "Luxembourgish" - }, - "la": { - "english_name": "Latin" - }, - "ln": { - "english_name": "Lingala" - }, - "lo": { - "english_name": "Lao" - }, - "tt": { - "name": "Татарча", - "english_name": "Tatar" - }, - "tr": { - "name": "Türkçe", - "english_name": "Turkish" - }, - "ts": { - "english_name": "Tsonga" - }, - "li": { - "english_name": "Limburgan" - }, - "lv": { - "name": "Latviešu", - "english_name": "Latvian" - }, - "to": { - "english_name": "Tonga (Tonga Islands)" - }, - "lt": { - "name": "Lietuvių", - "english_name": "Lithuanian" - }, - "lu": { - "english_name": "Luba-Katanga" - }, - "tk": { - "english_name": "Turkmen" - }, - "th": { - "name": "ไทย", - "english_name": "Thai" - }, - "ti": { - "name": "ትግርኛ", - "english_name": "Tigrinya" - }, - "tg": { - "english_name": "Tajik" - }, - "te": { - "english_name": "Telugu" - }, - "ta": { - "name": "தமிழ்", - "english_name": "Tamil" - }, - "yi": { - "english_name": "Yiddish" - }, - "yo": { - "english_name": "Yoruba" - }, - "de": { - "name": "Deutsch", - "english_name": "German" - }, - "da": { - "name": "Dansk", - "english_name": "Danish" - }, - "dz": { - "english_name": "Dzongkha" - }, - "st": { - "english_name": "Sotho, Southern" - }, - "dv": { - "english_name": "Dhivehi" - }, - "qu": { - "english_name": "Quechua" - }, - "el": { - "name": "Ελληνικά", - "english_name": "Greek, Modern (1453-)" - }, - "eo": { - "name": "Esperanto", - "english_name": "Esperanto" - }, - "en": { - "english_name": "English" - }, - "zh": { - "name": "中文", - "english_name": "Chinese" - }, - "ee": { - "english_name": "Ewe" - }, - "za": { - "english_name": "Zhuang" - }, - "mh": { - "english_name": "Marshallese" - }, - "uk": { - "name": "українська", - "english_name": "Ukrainian" - }, - "eu": { - "name": "Euskara", - "english_name": "Basque" - }, - "et": { - "name": "Eesti", - "english_name": "Estonian" - }, - "es": { - "name": "Español", - "english_name": "Spanish" - }, - "ru": { - "name": "русский", - "english_name": "Russian" - }, - "rw": { - "name": "Ikinyarwanda", - "english_name": "Kinyarwanda" - }, - "rm": { - "english_name": "Romansh" - }, - "rn": { - "english_name": "Rundi" - }, - "ro": { - "name": "Română", - "english_name": "Romanian" - }, - "bn": { - "name": "বাংলা", - "english_name": "Bengali" - }, - "be": { - "english_name": "Belarusian" - }, - "bg": { - "name": "Български", - "english_name": "Bulgarian" - }, - "ba": { - "english_name": "Bashkir" - }, - "wa": { - "name": "Walon", - "english_name": "Walloon" - }, - "wo": { - "english_name": "Wolof" - }, - "bm": { - "english_name": "Bambara" - }, - "jv": { - "english_name": "Javanese" - }, - "bo": { - "english_name": "Tibetan" - }, - "bi": { - "english_name": "Bislama" - }, - "br": { - "name": "Brezhoneg", - "english_name": "Breton" - }, - "bs": { - "name": "Bosnian", - "english_name": "Bosnian" - }, - "ja": { - "name": "日本語", - "english_name": "Japanese" - }, - "om": { - "english_name": "Oromo" - }, - "oj": { - "english_name": "Ojibwa" - }, - "ty": { - "english_name": "Tahitian" - }, - "oc": { - "name": "Occitan", - "english_name": "Occitan" - }, - "tw": { - "english_name": "Twi" - }, - "os": { - "english_name": "Ossetian" - }, - "or": { - "name": "Oriya", - "english_name": "Oriya" - }, - "xh": { - "name": "Xhosa", - "english_name": "Xhosa" - }, - "ch": { - "english_name": "Chamorro" - }, - "co": { - "english_name": "Corsican" - }, - "ca": { - "name": "Català", - "english_name": "Catalan" - }, - "ce": { - "english_name": "Chechen" - }, - "cy": { - "name": "Cymraeg", - "english_name": "Welsh" - }, - "cs": { - "name": "čeština", - "english_name": "Czech" - }, - "cr": { - "english_name": "Cree" - }, - "cv": { - "english_name": "Chuvash" - }, - "cu": { - "english_name": "Slavic, Church" - }, - "ve": { - "name": "Venda", - "english_name": "Venda" - }, - "ps": { - "name": "Pushto", - "english_name": "Pushto" - }, - "pt": { - "name": "Português", - "english_name": "Portuguese" - }, - "tl": { - "english_name": "Tagalog" - }, - "pa": { - "name": "ਪੰਜਾਬੀ", - "english_name": "Panjabi" - }, - "vi": { - "name": "Tiếng Việt", - "english_name": "Vietnamese" - }, - "pi": { - "english_name": "Pali" - }, - "is": { - "name": "Íslenska", - "english_name": "Icelandic" - }, - "pl": { - "name": "polski", - "english_name": "Polish" - }, - "hz": { - "english_name": "Herero" - }, - "hy": { - "english_name": "Armenian" - }, - "hr": { - "name": "hrvatski", - "english_name": "Croatian" - }, - "iu": { - "english_name": "Inuktitut" - }, - "ht": { - "english_name": "Haitian" - }, - "hu": { - "name": "magyar", - "english_name": "Hungarian" - }, - "hi": { - "name": "हिंदी", - "english_name": "Hindi" - }, - "ho": { - "english_name": "Hiri Motu" - }, - "ha": { - "english_name": "Hausa" - }, - "he": { - "name": "עברית", - "english_name": "Hebrew" - }, - "mg": { - "english_name": "Malagasy" - }, - "uz": { - "english_name": "Uzbek" - }, - "ml": { - "english_name": "Malayalam" - }, - "mn": { - "name": "Монгол", - "english_name": "Mongolian" - }, - "mi": { - "name": "Reo Māori", - "english_name": "Maori" - }, - "ik": { - "english_name": "Inupiaq" - }, - "mk": { - "name": "Македонски", - "english_name": "Macedonian" - }, - "ur": { - "english_name": "Urdu" - }, - "mt": { - "name": "Malti", - "english_name": "Maltese" - }, - "ms": { - "name": "Malay", - "english_name": "Malay" - }, - "mr": { - "name": "मराठी", - "english_name": "Marathi" - }, - "ug": { - "english_name": "Uighur" - }, - "my": { - "english_name": "Burmese" - }, - "sq": { - "english_name": "Albanian" - }, - "ae": { - "english_name": "Avestan" - }, - "ss": { - "english_name": "Swati" - }, - "af": { - "name": "Afrikaans", - "english_name": "Afrikaans" - }, - "tn": { - "english_name": "Tswana" - }, - "sw": { - "english_name": "Swahili (macrolanguage)" - }, - "ak": { - "english_name": "Akan" - }, - "am": { - "name": "አማርኛ", - "english_name": "Amharic" - }, - "it": { - "name": "Italiano", - "english_name": "Italian" - }, - "an": { - "english_name": "Aragonese" - }, - "ii": { - "english_name": "Yi, Sichuan" - }, - "ia": { - "english_name": "Interlingua" - }, - "as": { - "english_name": "Assamese" - }, - "ar": { - "name": "العربية", - "english_name": "Arabic" - }, - "su": { - "english_name": "Sundanese" - }, - "io": { - "english_name": "Ido" - }, - "av": { - "english_name": "Avaric" - }, - "ay": { - "english_name": "Aymara" - }, - "az": { - "name": "Azerbaijani", - "english_name": "Azerbaijani" - }, - "ie": { - "english_name": "Interlingue" - }, - "id": { - "name": "Indonesian", - "english_name": "Indonesian" - }, - "ig": { - "english_name": "Igbo" - }, - "sk": { - "name": "Slovenský", - "english_name": "Slovak" - }, - "sr": { - "name": "српски", - "english_name": "Serbian" - }, - "nl": { - "name": "Nederlands", - "english_name": "Dutch" - }, - "nn": { - "name": "Norwegian Nynorsk", - "english_name": "Norwegian Nynorsk" - }, - "no": { - "english_name": "Norwegian" - }, - "na": { - "english_name": "Nauru" - }, - "nb": { - "name": "Norwegian Bokmål", - "english_name": "Norwegian Bokmål" - }, - "nd": { - "english_name": "Ndebele, North" - }, - "ne": { - "english_name": "Nepali (macrolanguage)" - }, - "ng": { - "english_name": "Ndonga" - }, - "ny": { - "english_name": "Nyanja" - }, - "vo": { - "english_name": "Volapük" - }, - "zu": { - "name": "Isi-Zulu", - "english_name": "Zulu" - }, - "so": { - "english_name": "Somali" - }, - "nr": { - "english_name": "Ndebele, South" - }, - "nv": { - "english_name": "Navajo" - }, - "sn": { - "english_name": "Shona" - }, - "fr": { - "name": "français", - "english_name": "French" - }, - "sm": { - "english_name": "Samoan" - }, - "fy": { - "english_name": "Frisian, Western" - }, - "sv": { - "name": "Svenska", - "english_name": "Swedish" - }, - "fa": { - "name": "فارسی", - "english_name": "Persian" - }, - "ff": { - "english_name": "Fulah" - }, - "fi": { - "name": "suomi", - "english_name": "Finnish" - }, - "fj": { - "english_name": "Fijian" - }, - "sa": { - "english_name": "Sanskrit" - }, - "fo": { - "english_name": "Faroese" - }, - "ka": { - "english_name": "Georgian" - }, - "kg": { - "english_name": "Kongo" - }, - "kk": { - "english_name": "Kazakh" - }, - "kj": { - "english_name": "Kuanyama" - }, - "ki": { - "english_name": "Kikuyu" - }, - "ko": { - "name": "한국어", - "english_name": "Korean" - }, - "kn": { - "name": "ಕನ್ನಡ", - "english_name": "Kannada" - }, - "km": { - "english_name": "Khmer, Central" - }, - "kl": { - "english_name": "Kalaallisut" - }, - "ks": { - "english_name": "Kashmiri" - }, - "kr": { - "english_name": "Kanuri" - }, - "si": { - "english_name": "Sinhala" - }, - "sh": { - "name": "Serbo-Croatian", - "english_name": "Serbo-Croatian" - }, - "kw": { - "english_name": "Cornish" - }, - "kv": { - "english_name": "Komi" - }, - "ku": { - "english_name": "Kurdish" - }, - "sl": { - "name": "slovenščina", - "english_name": "Slovenian" - }, - "sc": { - "english_name": "Sardinian" - }, - "ky": { - "english_name": "Kirghiz" - }, - "sg": { - "english_name": "Sango" - }, - "se": { - "english_name": "Sami, Northern" - }, - "sd": { - "english_name": "Sindhi" - } - }, - "google": { - "gu": { - "name": "ગુજરાતી" - }, - "mfe": { - "name": "Kreol Morisien" - }, - "gd": { - "name": "Gàidhlig" - }, - "ga": { - "name": "Gaeilge" - }, - "gn": { - "name": "Guarani" - }, - "gl": { - "name": "Galego" - }, - "lg": { - "name": "Luganda" - }, - "la": { - "name": "Latin" - }, - "ln": { - "name": "Lingála" - }, - "tw": { - "name": "Twi" - }, - "tt": { - "name": "Tatar" - }, - "tr": { - "name": "Türkçe" - }, - "lv": { - "name": "Latviešu" - }, - "to": { - "name": "Lea Fakatonga" - }, - "lt": { - "name": "Lietuvių" - }, - "tk": { - "name": "Turkmen" - }, - "th": { - "name": "ไทย" - }, - "pcm": { - "name": "Nigerian Pidgin" - }, - "tg": { - "name": "Tajik" - }, - "te": { - "name": "తెలుగు" - }, - "haw": { - "name": "ʻŌlelo HawaiʻI" - }, - "yi": { - "name": "ייִדיש" - }, - "ceb": { - "name": "Cebuano" - }, - "yo": { - "name": "Èdè Yorùbá" - }, - "de": { - "name": "Deutsch" - }, - "ko": { - "name": "한국어" - }, - "da": { - "name": "Dansk" - }, - "crs": { - "name": "Seychellois Creole" - }, - "qu": { - "name": "Runasimi" - }, - "bem": { - "name": "Ichibemba" - }, - "xx": { - "name": "Pirate" - }, - "ban": { - "name": "Balinese" - }, - "el": { - "name": "Ελληνικά" - }, - "eo": { - "name": "Esperanto" - }, - "en": { - "name": "English" - }, - "zh": { - "name": "中文 (繁體)" - }, - "ee": { - "name": "Eʋegbe" - }, - "eu": { - "name": "Euskara" - }, - "et": { - "name": "Eesti" - }, - "es": { - "name": "Español (Latinoamérica)" - }, - "ru": { - "name": "Русский" - }, - "rw": { - "name": "Kinyarwanda" - }, - "lua": { - "name": "Luba-Lulua" - }, - "rm": { - "name": "Rumantsch" - }, - "rn": { - "name": "Ikirundi" - }, - "ro": { - "name": "Română" - }, - "be": { - "name": "Беларуская" - }, - "bg": { - "name": "Български" - }, - "uk": { - "name": "Українська" - }, - "ps": { - "name": "پښتو" - }, - "wo": { - "name": "Wolof" - }, - "bn": { - "name": "বাংলা" - }, - "jw": { - "name": "Javanese" - }, - "tum": { - "name": "Tumbuka" - }, - "br": { - "name": "Brezhoneg" - }, - "bs": { - "name": "Bosanski" - }, - "ja": { - "name": "日本語" - }, - "om": { - "name": "Oromoo" - }, - "ach": { - "name": "Acoli" - }, - "oc": { - "name": "Occitan" - }, - "kri": { - "name": "Krio (Sierra Leone)" - }, - "lo": { - "name": "ລາວ" - }, - "tlh": { - "name": "Klingon" - }, - "or": { - "name": "ଓଡ଼ିଆ" - }, - "xh": { - "name": "Xhosa" - }, - "co": { - "name": "Corsican" - }, - "nso": { - "name": "Northern Sotho" - }, - "ca": { - "name": "Català" - }, - "cy": { - "name": "Cymraeg" - }, - "cs": { - "name": "Čeština" - }, - "tn": { - "name": "Tswana" - }, - "pt": { - "name": "Português (Portugal)" - }, - "tl": { - "name": "Filipino" - }, - "chr": { - "name": "ᏣᎳᎩ" - }, - "pa": { - "name": "ਪੰਜਾਬੀ" - }, - "loz": { - "name": "Lozi" - }, - "is": { - "name": "Íslenska" - }, - "pl": { - "name": "Polski" - }, - "hy": { - "name": "Հայերեն" - }, - "hr": { - "name": "Hrvatski" - }, - "ti": { - "name": "ትግርኛ" - }, - "ht": { - "name": "Haitian Creole" - }, - "hu": { - "name": "Magyar" - }, - "hi": { - "name": "हिन्दी" - }, - "ha": { - "name": "Hausa" - }, - "gaa": { - "name": "Ga" - }, - "mg": { - "name": "Malagasy" - }, - "uz": { - "name": "O‘Zbek" - }, - "ml": { - "name": "മലയാളം" - }, - "mn": { - "name": "Монгол" - }, - "mi": { - "name": "Maori" - }, - "mk": { - "name": "Македонски" - }, - "ur": { - "name": "اردو" - }, - "mt": { - "name": "Malti" - }, - "ms": { - "name": "Bahasa Melayu" - }, - "mr": { - "name": "मराठी" - }, - "ug": { - "name": "ئۇيغۇرچە" - }, - "ta": { - "name": "தமிழ்" - }, - "my": { - "name": "ဗမာ" - }, - "af": { - "name": "Afrikaans" - }, - "vi": { - "name": "Tiếng Việt" - }, - "ak": { - "name": "Akan" - }, - "am": { - "name": "አማርኛ" - }, - "it": { - "name": "Italiano" - }, - "iw": { - "name": "עברית" - }, - "kn": { - "name": "ಕನ್ನಡ" - }, - "ar": { - "name": "العربية" - }, - "km": { - "name": "ខ្មែរ" - }, - "zu": { - "name": "Isizulu" - }, - "ia": { - "name": "Interlingua" - }, - "az": { - "name": "Azərbaycan Dili" - }, - "id": { - "name": "Indonesia" - }, - "ig": { - "name": "Igbo" - }, - "nl": { - "name": "Nederlands" - }, - "nn": { - "name": "Nynorsk" - }, - "no": { - "name": "Norsk" - }, - "ne": { - "name": "नेपाली" - }, - "ny": { - "name": "Nyanja" - }, - "nyn": { - "name": "Runyankore" - }, - "fr": { - "name": "Français" - }, - "fy": { - "name": "West-Frysk" - }, - "fa": { - "name": "فارسی" - }, - "fi": { - "name": "Suomi" - }, - "fo": { - "name": "Føroyskt" - }, - "ka": { - "name": "ქართული" - }, - "kg": { - "name": "Kongo" - }, - "ckb": { - "name": "Central Kurdish" - }, - "kk": { - "name": "Қазақ Тілі" - }, - "sr": { - "name": "Српски" - }, - "sq": { - "name": "Shqip" - }, - "sw": { - "name": "Kiswahili" - }, - "sv": { - "name": "Svenska" - }, - "su": { - "name": "Sundanese" - }, - "st": { - "name": "Southern Sotho" - }, - "sk": { - "name": "Slovenčina" - }, - "si": { - "name": "සිංහල" - }, - "so": { - "name": "Soomaali" - }, - "sn": { - "name": "Chishona" - }, - "sl": { - "name": "Slovenščina" - }, - "ky": { - "name": "Кыргызча" - }, - "sd": { - "name": "Sindhi" - } - }, - "duckduckgo": [ - "da-DK", - "vi-VN", - "en-SG", - "sl-SL", - "en-XA", - "tzh-HK", - "en-UK", - "ro-RO", - "en-MY", - "el-GR", - "it-CH", - "hu-HU", - "fr-FR", - "en-PH", - "tl-PH", - "fr-CA", - "fi-FI", - "et-EE", - "sv-SE", - "es-XL", - "th-TH", - "sk-SK", - "es-ES", - "en-IE", - "es-US", - "es-PE", - "nl-NL", - "en-US", - "de-DE", - "de-AT", - "wt-WT", - "no-NO", - "tr-TR", - "ca-ES", - "it-IT", - "es-CO", - "ru-RU", - "ca-CT", - "en-ZA", - "en-CA", - "jp-JP", - "es-MX", - "id-ID", - "es-AR", - "he-IL", - "kr-KR", - "en-AU", - "ms-MY", - "pl-PL", - "lv-LV", - "bg-BG", - "zh-CN", - "en-NZ", - "lt-LT", - "tzh-TW", - "hr-HR", - "pt-PT", - "fr-BE", - "de-CH", - "cs-CZ", - "en-IN", - "nl-BE", - "fr-CH", - "en-ID", - "ar-XA", - "pt-BR", - "uk-UA", - "es-CL" - ], - "bing": [ - "sq", - "de", - "ar", - "bg", - "ca", - "cs", - "zh-CHS", - "zh-CHT", - "ko", - "hr", - "da", - "sk", - "sl", - "es", - "et", - "fi", - "fr", - "el", - "he", - "nl", - "hu", - "id", - "en", - "is", - "it", - "ja", - "lv", - "lt", - "ms", - "nb", - "fa", - "pl", - "pt-BR", - "pt-PT", - "ro", - "ru", - "sr", - "sv", - "th", - "tr", - "uk", - "vi" - ], - "wikipedia": { - "sco": { - "articles": 41754, - "name": "Scots", - "english_name": "Scots" - }, - "scn": { - "articles": 25373, - "name": "Sicilianu", - "english_name": "Sicilian" - }, - "gu": { - "articles": 26690, - "name": "ગુજરાતી", - "english_name": "Gujarati" - }, - "gd": { - "articles": 14246, - "name": "Gàidhlig", - "english_name": "Scottish Gaelic" - }, - "ga": { - "articles": 38828, - "name": "Gaeilge", - "english_name": "Irish" - }, - "gl": { - "articles": 134667, - "name": "Galego", - "english_name": "Galician" - }, - "als": { - "articles": 22337, - "name": "Alemannisch", - "english_name": "Alemannic" - }, - "lb": { - "articles": 47306, - "name": "Lëtzebuergesch", - "english_name": "Luxembourgish" - }, - "la": { - "articles": 125689, - "name": "Latina", - "english_name": "Latin" - }, - "tt": { - "articles": 69902, - "name": "Tatarça / Татарча", - "english_name": "Tatar" - }, - "tr": { - "articles": 287403, - "name": "Türkçe", - "english_name": "Turkish" - }, - "li": { - "articles": 11552, - "name": "Limburgs", - "english_name": "Limburgish" - }, - "lv": { - "articles": 74333, - "name": "Latviešu", - "english_name": "Latvian" - }, - "tl": { - "articles": 65681, - "name": "Tagalog", - "english_name": "Tagalog" - }, - "vec": { - "articles": 10855, - "name": "Vèneto", - "english_name": "Venetian" - }, - "th": { - "articles": 113214, - "name": "ไทย", - "english_name": "Thai" - }, - "tg": { - "articles": 67389, - "name": "Тоҷикӣ", - "english_name": "Tajik" - }, - "te": { - "articles": 66207, - "name": "తెలుగు", - "english_name": "Telugu" - }, - "ta": { - "articles": 89565, - "name": "தமிழ்", - "english_name": "Tamil" - }, - "yi": { - "articles": 13590, - "name": "ייִדיש", - "english_name": "Yiddish" - }, - "ceb": { - "articles": 3525383, - "name": "Sinugboanong Binisaya", - "english_name": "Cebuano" - }, - "yo": { - "articles": 31493, - "name": "Yorùbá", - "english_name": "Yoruba" - }, - "de": { - "articles": 2008971, - "name": "Deutsch", - "english_name": "German" - }, - "da": { - "articles": 221798, - "name": "Dansk", - "english_name": "Danish" - }, - "qu": { - "articles": 19808, - "name": "Runa Simi", - "english_name": "Quechua" - }, - "bar": { - "articles": 21966, - "name": "Boarisch", - "english_name": "Bavarian" - }, - "kn": { - "articles": 21617, - "name": "ಕನ್ನಡ", - "english_name": "Kannada" - }, - "bpy": { - "articles": 25067, - "name": "ইমার ঠার/বিষ্ণুপ্রিয়া মণিপুরী", - "english_name": "Bishnupriya Manipuri" - }, - "el": { - "articles": 124348, - "name": "Ελληνικά", - "english_name": "Greek" - }, - "eo": { - "articles": 235567, - "name": "Esperanto", - "english_name": "Esperanto" - }, - "en": { - "articles": 5307436, - "name": "English", - "english_name": "English" - }, - "zh": { - "articles": 915298, - "name": "中文", - "english_name": "Chinese" - }, - "pms": { - "articles": 63988, - "name": "Piemontèis", - "english_name": "Piedmontese" - }, - "arz": { - "articles": 16098, - "name": "مصرى (Maṣri)", - "english_name": "Egyptian Arabic" - }, - "eu": { - "articles": 261846, - "name": "Euskara", - "english_name": "Basque" - }, - "et": { - "articles": 151580, - "name": "Eesti", - "english_name": "Estonian" - }, - "es": { - "articles": 1301725, - "name": "Español", - "english_name": "Spanish" - }, - "ba": { - "articles": 36610, - "name": "Башҡорт", - "english_name": "Bashkir" - }, - "ru": { - "articles": 1359173, - "name": "Русский", - "english_name": "Russian" - }, - "new": { - "articles": 72175, - "name": "नेपाल भाषा", - "english_name": "Newar" - }, - "ro": { - "articles": 373067, - "name": "Română", - "english_name": "Romanian" - }, - "jv": { - "articles": 49675, - "name": "Basa Jawa", - "english_name": "Javanese" - }, - "hsb": { - "articles": 10908, - "name": "Hornjoserbsce", - "english_name": "Upper Sorbian" - }, - "be": { - "articles": 123470, - "name": "Беларуская", - "english_name": "Belarusian" - }, - "bg": { - "articles": 223701, - "name": "Български", - "english_name": "Bulgarian" - }, - "uk": { - "articles": 666877, - "name": "Українська", - "english_name": "Ukrainian" - }, - "wa": { - "articles": 14312, - "name": "Walon", - "english_name": "Walloon" - }, - "ast": { - "articles": 47712, - "name": "Asturianu", - "english_name": "Asturian" - }, - "bn": { - "articles": 46038, - "name": "বাংলা", - "english_name": "Bengali" - }, - "map-bms": { - "articles": 13275, - "name": "Basa Banyumasan", - "english_name": "Banyumasan" - }, - "br": { - "articles": 60624, - "name": "Brezhoneg", - "english_name": "Breton" - }, - "bs": { - "articles": 72057, - "name": "Bosanski", - "english_name": "Bosnian" - }, - "ja": { - "articles": 1041538, - "name": "日本語", - "english_name": "Japanese" - }, - "oc": { - "articles": 84521, - "name": "Occitan", - "english_name": "Occitan" - }, - "be-tarask": { - "articles": 59872, - "name": "Беларуская (тарашкевіца)", - "english_name": "Belarusian (Taraškievica)" - }, - "nds": { - "articles": 25732, - "name": "Plattdüütsch", - "english_name": "Low Saxon" - }, - "os": { - "articles": 10293, - "name": "Иронау", - "english_name": "Ossetian" - }, - "or": { - "articles": 11703, - "name": "ଓଡ଼ିଆ", - "english_name": "Oriya" - }, - "simple": { - "articles": 121809, - "name": "Simple English", - "english_name": "Simple English" - }, - "ca": { - "articles": 528658, - "name": "Català", - "english_name": "Catalan" - }, - "lmo": { - "articles": 34556, - "name": "Lumbaart", - "english_name": "Lombard" - }, - "ce": { - "articles": 158845, - "name": "Нохчийн", - "english_name": "Chechen" - }, - "cy": { - "articles": 89271, - "name": "Cymraeg", - "english_name": "Welsh" - }, - "cs": { - "articles": 369023, - "name": "Čeština", - "english_name": "Czech" - }, - "cv": { - "articles": 36500, - "name": "Чăваш", - "english_name": "Chuvash" - }, - "pt": { - "articles": 949039, - "name": "Português", - "english_name": "Portuguese" - }, - "lt": { - "articles": 180372, - "name": "Lietuvių", - "english_name": "Lithuanian" - }, - "zh-min-nan": { - "articles": 201851, - "name": "Bân-lâm-gú", - "english_name": "Min Nan" - }, - "pa": { - "articles": 24065, - "name": "ਪੰਜਾਬੀ", - "english_name": "Punjabi" - }, - "war": { - "articles": 1261969, - "name": "Winaray", - "english_name": "Waray-Waray" - }, - "pl": { - "articles": 1197444, - "name": "Polski", - "english_name": "Polish" - }, - "hy": { - "articles": 212704, - "name": "Հայերեն", - "english_name": "Armenian" - }, - "an": { - "articles": 31832, - "name": "Aragonés", - "english_name": "Aragonese" - }, - "hr": { - "articles": 171042, - "name": "Hrvatski", - "english_name": "Croatian" - }, - "ht": { - "articles": 51108, - "name": "Krèyol ayisyen", - "english_name": "Haitian" - }, - "hu": { - "articles": 399859, - "name": "Magyar", - "english_name": "Hungarian" - }, - "bat-smg": { - "articles": 15940, - "name": "Žemaitėška", - "english_name": "Samogitian" - }, - "hi": { - "articles": 114388, - "name": "हिन्दी", - "english_name": "Hindi" - }, - "pnb": { - "articles": 42659, - "name": "شاہ مکھی پنجابی (Shāhmukhī Pañjābī)", - "english_name": "Western Punjabi" - }, - "bug": { - "articles": 14116, - "name": "Basa Ugi", - "english_name": "Buginese" - }, - "he": { - "articles": 199202, - "name": "עברית", - "english_name": "Hebrew" - }, - "mg": { - "articles": 82826, - "name": "Malagasy", - "english_name": "Malagasy" - }, - "uz": { - "articles": 128742, - "name": "O‘zbek", - "english_name": "Uzbek" - }, - "ml": { - "articles": 46792, - "name": "മലയാളം", - "english_name": "Malayalam" - }, - "azb": { - "articles": 11813, - "name": "تۆرکجه", - "english_name": "South Azerbaijani" - }, - "mn": { - "articles": 16281, - "name": "Монгол", - "english_name": "Mongolian" - }, - "mk": { - "articles": 87527, - "name": "Македонски", - "english_name": "Macedonian" - }, - "ur": { - "articles": 110767, - "name": "اردو", - "english_name": "Urdu" - }, - "ms": { - "articles": 286177, - "name": "Bahasa Melayu", - "english_name": "Malay" - }, - "mr": { - "articles": 45049, - "name": "मराठी", - "english_name": "Marathi" - }, - "my": { - "articles": 33571, - "name": "မြန်မာဘာသာ", - "english_name": "Burmese" - }, - "sah": { - "articles": 10965, - "name": "Саха тыла (Saxa Tyla)", - "english_name": "Sakha" - }, - "af": { - "articles": 42949, - "name": "Afrikaans", - "english_name": "Afrikaans" - }, - "vi": { - "articles": 1151564, - "name": "Tiếng Việt", - "english_name": "Vietnamese" - }, - "is": { - "articles": 41500, - "name": "Íslenska", - "english_name": "Icelandic" - }, - "am": { - "articles": 13291, - "name": "አማርኛ", - "english_name": "Amharic" - }, - "it": { - "articles": 1317506, - "name": "Italiano", - "english_name": "Italian" - }, - "vo": { - "articles": 120413, - "name": "Volapük", - "english_name": "Volapük" - }, - "ar": { - "articles": 453499, - "name": "العربية", - "english_name": "Arabic" - }, - "io": { - "articles": 26845, - "name": "Ido", - "english_name": "Ido" - }, - "ia": { - "articles": 19784, - "name": "Interlingua", - "english_name": "Interlingua" - }, - "az": { - "articles": 111474, - "name": "Azərbaycanca", - "english_name": "Azerbaijani" - }, - "id": { - "articles": 390200, - "name": "Bahasa Indonesia", - "english_name": "Indonesian" - }, - "nl": { - "articles": 1885741, - "name": "Nederlands", - "english_name": "Dutch" - }, - "nn": { - "articles": 131696, - "name": "Nynorsk", - "english_name": "Norwegian (Nynorsk)" - }, - "no": { - "articles": 458147, - "name": "Norsk (Bokmål)", - "english_name": "Norwegian (Bokmål)" - }, - "nah": { - "articles": 10428, - "name": "Nāhuatl", - "english_name": "Nahuatl" - }, - "ne": { - "articles": 29164, - "name": "नेपाली", - "english_name": "Nepali" - }, - "nap": { - "articles": 14400, - "name": "Nnapulitano", - "english_name": "Neapolitan" - }, - "fr": { - "articles": 1822985, - "name": "Français", - "english_name": "French" - }, - "mrj": { - "articles": 10164, - "name": "Кырык Мары (Kyryk Mary)", - "english_name": "Hill Mari" - }, - "zh-yue": { - "articles": 49352, - "name": "粵語", - "english_name": "Cantonese" - }, - "fy": { - "articles": 36464, - "name": "Frysk", - "english_name": "West Frisian" - }, - "fa": { - "articles": 516569, - "name": "فارسی", - "english_name": "Persian" - }, - "fi": { - "articles": 405166, - "name": "Suomi", - "english_name": "Finnish" - }, - "mzn": { - "articles": 12362, - "name": "مَزِروني", - "english_name": "Mazandarani" - }, - "sa": { - "articles": 10198, - "name": "संस्कृतम्", - "english_name": "Sanskrit" - }, - "fo": { - "articles": 12370, - "name": "Føroyskt", - "english_name": "Faroese" - }, - "ka": { - "articles": 111155, - "name": "ქართული", - "english_name": "Georgian" - }, - "ckb": { - "articles": 18217, - "name": "Soranî / کوردی", - "english_name": "Sorani" - }, - "kk": { - "articles": 217477, - "name": "Қазақша", - "english_name": "Kazakh" - }, - "sr": { - "articles": 342497, - "name": "Српски / Srpski", - "english_name": "Serbian" - }, - "sq": { - "articles": 62437, - "name": "Shqip", - "english_name": "Albanian" - }, - "min": { - "articles": 221961, - "name": "Minangkabau", - "english_name": "Minangkabau" - }, - "ko": { - "articles": 367127, - "name": "한국어", - "english_name": "Korean" - }, - "sv": { - "articles": 3783326, - "name": "Svenska", - "english_name": "Swedish" - }, - "su": { - "articles": 19163, - "name": "Basa Sunda", - "english_name": "Sundanese" - }, - "sk": { - "articles": 215360, - "name": "Slovenčina", - "english_name": "Slovak" - }, - "si": { - "articles": 12832, - "name": "සිංහල", - "english_name": "Sinhalese" - }, - "sh": { - "articles": 436526, - "name": "Srpskohrvatski / Српскохрватски", - "english_name": "Serbo-Croatian" - }, - "ku": { - "articles": 22367, - "name": "Kurdî / كوردی", - "english_name": "Kurdish" - }, - "sl": { - "articles": 153978, - "name": "Slovenščina", - "english_name": "Slovenian" - }, - "ky": { - "articles": 59677, - "name": "Кыргызча", - "english_name": "Kirghiz" - }, - "sw": { - "articles": 34773, - "name": "Kiswahili", - "english_name": "Swahili" - } - }, - "bing news": [ - "sq", - "de", - "ar", - "bg", - "ca", - "cs", - "zh-CHS", - "zh-CHT", - "ko", - "hr", - "da", - "sk", - "sl", - "es", - "et", - "fi", - "fr", - "el", - "he", - "nl", - "hu", - "id", - "en", - "is", - "it", - "ja", - "lv", - "lt", - "ms", - "nb", - "fa", - "pl", - "pt-BR", - "pt-PT", - "ro", - "ru", - "sr", - "sv", - "th", - "tr", - "uk", - "vi" - ], - "yahoo news": [ - "ar", - "bg", - "zh_chs", - "zh_cht", - "hr", - "cs", - "da", - "nl", - "en", - "et", - "fi", - "fr", - "de", - "el", - "he", - "hu", - "it", - "ja", - "ko", - "lv", - "lt", - "no", - "pl", - "pt", - "ro", - "ru", - "sk", - "sl", - "es", - "sv", - "th", - "tr" - ], - "swisscows": [ - "browser", - "ar-SA", - "es-AR", - "en-AU", - "de-AT", - "fr-BE", - "nl-BE", - "pt-BR", - "en-CA", - "fr-CA", - "es-CL", - "zh-CN", - "da-DK", - "fi-FI", - "fr-FR", - "de-DE", - "zh-HK", - "en-IN", - "en-IE", - "it-IT", - "ja-JP", - "ko-KR", - "en-MY", - "es-MX", - "nl-NL", - "en-NZ", - "nb-NO", - "en-PH", - "pl-PL", - "pt-PT", - "ru-RU", - "en-ZA", - "es-ES", - "sv-SE", - "de-CH", - "fr-CH", - "zh-TW", - "tr-TR", - "en-GB", - "en-US", - "es-US" - ], - "wikidata": { - "sco": { - "articles": 41754, - "name": "Scots", - "english_name": "Scots" - }, - "scn": { - "articles": 25373, - "name": "Sicilianu", - "english_name": "Sicilian" - }, - "gu": { - "articles": 26690, - "name": "ગુજરાતી", - "english_name": "Gujarati" - }, - "gd": { - "articles": 14246, - "name": "Gàidhlig", - "english_name": "Scottish Gaelic" - }, - "ga": { - "articles": 38828, - "name": "Gaeilge", - "english_name": "Irish" - }, - "gl": { - "articles": 134667, - "name": "Galego", - "english_name": "Galician" - }, - "als": { - "articles": 22337, - "name": "Alemannisch", - "english_name": "Alemannic" - }, - "lb": { - "articles": 47306, - "name": "Lëtzebuergesch", - "english_name": "Luxembourgish" - }, - "la": { - "articles": 125689, - "name": "Latina", - "english_name": "Latin" - }, - "tt": { - "articles": 69902, - "name": "Tatarça / Татарча", - "english_name": "Tatar" - }, - "tr": { - "articles": 287403, - "name": "Türkçe", - "english_name": "Turkish" - }, - "li": { - "articles": 11552, - "name": "Limburgs", - "english_name": "Limburgish" - }, - "lv": { - "articles": 74333, - "name": "Latviešu", - "english_name": "Latvian" - }, - "tl": { - "articles": 65681, - "name": "Tagalog", - "english_name": "Tagalog" - }, - "vec": { - "articles": 10855, - "name": "Vèneto", - "english_name": "Venetian" - }, - "th": { - "articles": 113214, - "name": "ไทย", - "english_name": "Thai" - }, - "tg": { - "articles": 67389, - "name": "Тоҷикӣ", - "english_name": "Tajik" - }, - "te": { - "articles": 66207, - "name": "తెలుగు", - "english_name": "Telugu" - }, - "ta": { - "articles": 89565, - "name": "தமிழ்", - "english_name": "Tamil" - }, - "yi": { - "articles": 13590, - "name": "ייִדיש", - "english_name": "Yiddish" - }, - "ceb": { - "articles": 3525383, - "name": "Sinugboanong Binisaya", - "english_name": "Cebuano" - }, - "yo": { - "articles": 31493, - "name": "Yorùbá", - "english_name": "Yoruba" - }, - "de": { - "articles": 2008971, - "name": "Deutsch", - "english_name": "German" - }, - "da": { - "articles": 221798, - "name": "Dansk", - "english_name": "Danish" - }, - "qu": { - "articles": 19808, - "name": "Runa Simi", - "english_name": "Quechua" - }, - "bar": { - "articles": 21966, - "name": "Boarisch", - "english_name": "Bavarian" - }, - "kn": { - "articles": 21617, - "name": "ಕನ್ನಡ", - "english_name": "Kannada" - }, - "bpy": { - "articles": 25067, - "name": "ইমার ঠার/বিষ্ণুপ্রিয়া মণিপুরী", - "english_name": "Bishnupriya Manipuri" - }, - "el": { - "articles": 124348, - "name": "Ελληνικά", - "english_name": "Greek" - }, - "eo": { - "articles": 235567, - "name": "Esperanto", - "english_name": "Esperanto" - }, - "en": { - "articles": 5307436, - "name": "English", - "english_name": "English" - }, - "zh": { - "articles": 915298, - "name": "中文", - "english_name": "Chinese" - }, - "pms": { - "articles": 63988, - "name": "Piemontèis", - "english_name": "Piedmontese" - }, - "arz": { - "articles": 16098, - "name": "مصرى (Maṣri)", - "english_name": "Egyptian Arabic" - }, - "eu": { - "articles": 261846, - "name": "Euskara", - "english_name": "Basque" - }, - "et": { - "articles": 151580, - "name": "Eesti", - "english_name": "Estonian" - }, - "es": { - "articles": 1301725, - "name": "Español", - "english_name": "Spanish" - }, - "ba": { - "articles": 36610, - "name": "Башҡорт", - "english_name": "Bashkir" - }, - "ru": { - "articles": 1359173, - "name": "Русский", - "english_name": "Russian" - }, - "new": { - "articles": 72175, - "name": "नेपाल भाषा", - "english_name": "Newar" - }, - "ro": { - "articles": 373067, - "name": "Română", - "english_name": "Romanian" - }, - "jv": { - "articles": 49675, - "name": "Basa Jawa", - "english_name": "Javanese" - }, - "hsb": { - "articles": 10908, - "name": "Hornjoserbsce", - "english_name": "Upper Sorbian" - }, - "be": { - "articles": 123470, - "name": "Беларуская", - "english_name": "Belarusian" - }, - "bg": { - "articles": 223701, - "name": "Български", - "english_name": "Bulgarian" - }, - "uk": { - "articles": 666877, - "name": "Українська", - "english_name": "Ukrainian" - }, - "wa": { - "articles": 14312, - "name": "Walon", - "english_name": "Walloon" - }, - "ast": { - "articles": 47712, - "name": "Asturianu", - "english_name": "Asturian" - }, - "bn": { - "articles": 46038, - "name": "বাংলা", - "english_name": "Bengali" - }, - "map-bms": { - "articles": 13275, - "name": "Basa Banyumasan", - "english_name": "Banyumasan" - }, - "br": { - "articles": 60624, - "name": "Brezhoneg", - "english_name": "Breton" - }, - "bs": { - "articles": 72057, - "name": "Bosanski", - "english_name": "Bosnian" - }, - "ja": { - "articles": 1041538, - "name": "日本語", - "english_name": "Japanese" - }, - "oc": { - "articles": 84521, - "name": "Occitan", - "english_name": "Occitan" - }, - "be-tarask": { - "articles": 59872, - "name": "Беларуская (тарашкевіца)", - "english_name": "Belarusian (Taraškievica)" - }, - "nds": { - "articles": 25732, - "name": "Plattdüütsch", - "english_name": "Low Saxon" - }, - "os": { - "articles": 10293, - "name": "Иронау", - "english_name": "Ossetian" - }, - "or": { - "articles": 11703, - "name": "ଓଡ଼ିଆ", - "english_name": "Oriya" - }, - "simple": { - "articles": 121809, - "name": "Simple English", - "english_name": "Simple English" - }, - "ca": { - "articles": 528658, - "name": "Català", - "english_name": "Catalan" - }, - "lmo": { - "articles": 34556, - "name": "Lumbaart", - "english_name": "Lombard" - }, - "ce": { - "articles": 158845, - "name": "Нохчийн", - "english_name": "Chechen" - }, - "cy": { - "articles": 89271, - "name": "Cymraeg", - "english_name": "Welsh" - }, - "cs": { - "articles": 369023, - "name": "Čeština", - "english_name": "Czech" - }, - "cv": { - "articles": 36500, - "name": "Чăваш", - "english_name": "Chuvash" - }, - "pt": { - "articles": 949039, - "name": "Português", - "english_name": "Portuguese" - }, - "lt": { - "articles": 180372, - "name": "Lietuvių", - "english_name": "Lithuanian" - }, - "zh-min-nan": { - "articles": 201851, - "name": "Bân-lâm-gú", - "english_name": "Min Nan" - }, - "pa": { - "articles": 24065, - "name": "ਪੰਜਾਬੀ", - "english_name": "Punjabi" - }, - "war": { - "articles": 1261969, - "name": "Winaray", - "english_name": "Waray-Waray" - }, - "pl": { - "articles": 1197444, - "name": "Polski", - "english_name": "Polish" - }, - "hy": { - "articles": 212704, - "name": "Հայերեն", - "english_name": "Armenian" - }, - "an": { - "articles": 31832, - "name": "Aragonés", - "english_name": "Aragonese" - }, - "hr": { - "articles": 171042, - "name": "Hrvatski", - "english_name": "Croatian" - }, - "ht": { - "articles": 51108, - "name": "Krèyol ayisyen", - "english_name": "Haitian" - }, - "hu": { - "articles": 399859, - "name": "Magyar", - "english_name": "Hungarian" - }, - "bat-smg": { - "articles": 15940, - "name": "Žemaitėška", - "english_name": "Samogitian" - }, - "hi": { - "articles": 114388, - "name": "हिन्दी", - "english_name": "Hindi" - }, - "pnb": { - "articles": 42659, - "name": "شاہ مکھی پنجابی (Shāhmukhī Pañjābī)", - "english_name": "Western Punjabi" - }, - "bug": { - "articles": 14116, - "name": "Basa Ugi", - "english_name": "Buginese" - }, - "he": { - "articles": 199202, - "name": "עברית", - "english_name": "Hebrew" - }, - "mg": { - "articles": 82826, - "name": "Malagasy", - "english_name": "Malagasy" - }, - "uz": { - "articles": 128742, - "name": "O‘zbek", - "english_name": "Uzbek" - }, - "ml": { - "articles": 46792, - "name": "മലയാളം", - "english_name": "Malayalam" - }, - "azb": { - "articles": 11813, - "name": "تۆرکجه", - "english_name": "South Azerbaijani" - }, - "mn": { - "articles": 16281, - "name": "Монгол", - "english_name": "Mongolian" - }, - "mk": { - "articles": 87527, - "name": "Македонски", - "english_name": "Macedonian" - }, - "ur": { - "articles": 110767, - "name": "اردو", - "english_name": "Urdu" - }, - "ms": { - "articles": 286177, - "name": "Bahasa Melayu", - "english_name": "Malay" - }, - "mr": { - "articles": 45049, - "name": "मराठी", - "english_name": "Marathi" - }, - "my": { - "articles": 33571, - "name": "မြန်မာဘာသာ", - "english_name": "Burmese" - }, - "sah": { - "articles": 10965, - "name": "Саха тыла (Saxa Tyla)", - "english_name": "Sakha" - }, - "af": { - "articles": 42949, - "name": "Afrikaans", - "english_name": "Afrikaans" - }, - "vi": { - "articles": 1151564, - "name": "Tiếng Việt", - "english_name": "Vietnamese" - }, - "is": { - "articles": 41500, - "name": "Íslenska", - "english_name": "Icelandic" - }, - "am": { - "articles": 13291, - "name": "አማርኛ", - "english_name": "Amharic" - }, - "it": { - "articles": 1317506, - "name": "Italiano", - "english_name": "Italian" - }, - "vo": { - "articles": 120413, - "name": "Volapük", - "english_name": "Volapük" - }, - "ar": { - "articles": 453499, - "name": "العربية", - "english_name": "Arabic" - }, - "io": { - "articles": 26845, - "name": "Ido", - "english_name": "Ido" - }, - "ia": { - "articles": 19784, - "name": "Interlingua", - "english_name": "Interlingua" - }, - "az": { - "articles": 111474, - "name": "Azərbaycanca", - "english_name": "Azerbaijani" - }, - "id": { - "articles": 390200, - "name": "Bahasa Indonesia", - "english_name": "Indonesian" - }, - "nl": { - "articles": 1885741, - "name": "Nederlands", - "english_name": "Dutch" - }, - "nn": { - "articles": 131696, - "name": "Nynorsk", - "english_name": "Norwegian (Nynorsk)" - }, - "no": { - "articles": 458147, - "name": "Norsk (Bokmål)", - "english_name": "Norwegian (Bokmål)" - }, - "nah": { - "articles": 10428, - "name": "Nāhuatl", - "english_name": "Nahuatl" - }, - "ne": { - "articles": 29164, - "name": "नेपाली", - "english_name": "Nepali" - }, - "nap": { - "articles": 14400, - "name": "Nnapulitano", - "english_name": "Neapolitan" - }, - "fr": { - "articles": 1822985, - "name": "Français", - "english_name": "French" - }, - "mrj": { - "articles": 10164, - "name": "Кырык Мары (Kyryk Mary)", - "english_name": "Hill Mari" - }, - "zh-yue": { - "articles": 49352, - "name": "粵語", - "english_name": "Cantonese" - }, - "fy": { - "articles": 36464, - "name": "Frysk", - "english_name": "West Frisian" - }, - "fa": { - "articles": 516569, - "name": "فارسی", - "english_name": "Persian" - }, - "fi": { - "articles": 405166, - "name": "Suomi", - "english_name": "Finnish" - }, - "mzn": { - "articles": 12362, - "name": "مَزِروني", - "english_name": "Mazandarani" - }, - "sa": { - "articles": 10198, - "name": "संस्कृतम्", - "english_name": "Sanskrit" - }, - "fo": { - "articles": 12370, - "name": "Føroyskt", - "english_name": "Faroese" - }, - "ka": { - "articles": 111155, - "name": "ქართული", - "english_name": "Georgian" - }, - "ckb": { - "articles": 18217, - "name": "Soranî / کوردی", - "english_name": "Sorani" - }, - "kk": { - "articles": 217477, - "name": "Қазақша", - "english_name": "Kazakh" - }, - "sr": { - "articles": 342497, - "name": "Српски / Srpski", - "english_name": "Serbian" - }, - "sq": { - "articles": 62437, - "name": "Shqip", - "english_name": "Albanian" - }, - "min": { - "articles": 221961, - "name": "Minangkabau", - "english_name": "Minangkabau" - }, - "ko": { - "articles": 367127, - "name": "한국어", - "english_name": "Korean" - }, - "sv": { - "articles": 3783326, - "name": "Svenska", - "english_name": "Swedish" - }, - "su": { - "articles": 19163, - "name": "Basa Sunda", - "english_name": "Sundanese" - }, - "sk": { - "articles": 215360, - "name": "Slovenčina", - "english_name": "Slovak" - }, - "si": { - "articles": 12832, - "name": "සිංහල", - "english_name": "Sinhalese" - }, - "sh": { - "articles": 436526, - "name": "Srpskohrvatski / Српскохрватски", - "english_name": "Serbo-Croatian" - }, - "ku": { - "articles": 22367, - "name": "Kurdî / كوردی", - "english_name": "Kurdish" - }, - "sl": { - "articles": 153978, - "name": "Slovenščina", - "english_name": "Slovenian" - }, - "ky": { - "articles": 59677, - "name": "Кыргызча", - "english_name": "Kirghiz" - }, - "sw": { - "articles": 34773, - "name": "Kiswahili", - "english_name": "Swahili" - } - }, - "ddg definitions": [ - "da-DK", - "vi-VN", - "en-SG", - "sl-SL", - "en-XA", - "tzh-HK", - "en-UK", - "ro-RO", - "en-MY", - "el-GR", - "it-CH", - "hu-HU", - "fr-FR", - "en-PH", - "tl-PH", - "fr-CA", - "fi-FI", - "et-EE", - "sv-SE", - "es-XL", - "th-TH", - "sk-SK", - "es-ES", - "en-IE", - "es-US", - "es-PE", - "nl-NL", - "en-US", - "de-DE", - "de-AT", - "wt-WT", - "no-NO", - "tr-TR", - "ca-ES", - "it-IT", - "es-CO", - "ru-RU", - "ca-CT", - "en-ZA", - "en-CA", - "jp-JP", - "es-MX", - "id-ID", - "es-AR", - "he-IL", - "kr-KR", - "en-AU", - "ms-MY", - "pl-PL", - "lv-LV", - "bg-BG", - "zh-CN", - "en-NZ", - "lt-LT", - "tzh-TW", - "hr-HR", - "pt-PT", - "fr-BE", - "de-CH", - "cs-CZ", - "en-IN", - "nl-BE", - "fr-CH", - "en-ID", - "ar-XA", - "pt-BR", - "uk-UA", - "es-CL" - ], - "bing images": [ - "sq", - "de", - "ar", - "bg", - "ca", - "cs", - "zh-CHS", - "zh-CHT", - "ko", - "hr", - "da", - "sk", - "sl", - "es", - "et", - "fi", - "fr", - "el", - "he", - "nl", - "hu", - "id", - "en", - "is", - "it", - "ja", - "lv", - "lt", - "ms", - "nb", - "fa", - "pl", - "pt-BR", - "pt-PT", - "ro", - "ru", - "sr", - "sv", - "th", - "tr", - "uk", - "vi" - ], - "yahoo": [ - "ar", - "bg", - "zh_chs", - "zh_cht", - "hr", - "cs", - "da", - "nl", - "en", - "et", - "fi", - "fr", - "de", - "el", - "he", - "hu", - "it", - "ja", - "ko", - "lv", - "lt", - "no", - "pl", - "pt", - "ro", - "ru", - "sk", - "sl", - "es", - "sv", - "th", - "tr" - ], - "gigablast": [ - "en", - "fr", - "es", - "ru", - "tr", - "ja", - "h_", - "tw", - "cn", - "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" - ] -} \ No newline at end of file +{"google news": {"el": {"name": "Ελληνικά"}, "eo": {"name": "Esperanto"}, "en": {"name": "English"}, "af": {"name": "Afrikaans"}, "vi": {"name": "Tiếng Việt"}, "ca": {"name": "Català"}, "it": {"name": "Italiano"}, "iw": {"name": "עברית"}, "hy": {"name": "Հայերեն"}, "cs": {"name": "Čeština"}, "et": {"name": "Eesti"}, "id": {"name": "Indonesia"}, "es": {"name": "Español"}, "ru": {"name": "Русский"}, "nl": {"name": "Nederlands"}, "pt": {"name": "Português"}, "no": {"name": "Norsk"}, "tr": {"name": "Türkçe"}, "lt": {"name": "Lietuvių"}, "lv": {"name": "Latviešu"}, "tl": {"name": "Filipino"}, "zh-TW": {"name": "中文 (繁體)"}, "th": {"name": "ไทย"}, "ro": {"name": "Română"}, "is": {"name": "Íslenska"}, "pl": {"name": "Polski"}, "be": {"name": "Беларуская"}, "fr": {"name": "Français"}, "bg": {"name": "Български"}, "hr": {"name": "Hrvatski"}, "de": {"name": "Deutsch"}, "ko": {"name": "한국어"}, "da": {"name": "Dansk"}, "fa": {"name": "فارسی"}, "hi": {"name": "हिन्दी"}, "fi": {"name": "Suomi"}, "hu": {"name": "Magyar"}, "ja": {"name": "日本語"}, "sr": {"name": "Српски"}, "sw": {"name": "Kiswahili"}, "sv": {"name": "Svenska"}, "sk": {"name": "Slovenčina"}, "zh-CN": {"name": "中文 (简体)"}, "ar": {"name": "العربية"}, "uk": {"name": "Українська"}, "sl": {"name": "Slovenščina"}}, "dailymotion": {"gv": {"english_name": "Manx"}, "gu": {"name": "ગુજરાતી", "english_name": "Gujarati"}, "gd": {"english_name": "Gaelic, Scottish"}, "ga": {"name": "Gaeilge", "english_name": "Irish"}, "gn": {"english_name": "Guarani"}, "gl": {"name": "Galego", "english_name": "Galician"}, "lg": {"english_name": "Ganda"}, "lb": {"english_name": "Luxembourgish"}, "la": {"english_name": "Latin"}, "ln": {"english_name": "Lingala"}, "lo": {"english_name": "Lao"}, "tt": {"name": "Татарча", "english_name": "Tatar"}, "tr": {"name": "Türkçe", "english_name": "Turkish"}, "ts": {"english_name": "Tsonga"}, "li": {"english_name": "Limburgan"}, "lv": {"name": "Latviešu", "english_name": "Latvian"}, "to": {"english_name": "Tonga (Tonga Islands)"}, "lt": {"name": "Lietuvių", "english_name": "Lithuanian"}, "lu": {"english_name": "Luba-Katanga"}, "tk": {"english_name": "Turkmen"}, "th": {"name": "ไทย", "english_name": "Thai"}, "ti": {"name": "ትግርኛ", "english_name": "Tigrinya"}, "tg": {"english_name": "Tajik"}, "te": {"english_name": "Telugu"}, "ta": {"name": "தமிழ்", "english_name": "Tamil"}, "yi": {"english_name": "Yiddish"}, "yo": {"english_name": "Yoruba"}, "de": {"name": "Deutsch", "english_name": "German"}, "da": {"name": "Dansk", "english_name": "Danish"}, "dz": {"english_name": "Dzongkha"}, "st": {"english_name": "Sotho, Southern"}, "dv": {"english_name": "Dhivehi"}, "qu": {"english_name": "Quechua"}, "el": {"name": "Ελληνικά", "english_name": "Greek, Modern (1453-)"}, "eo": {"name": "Esperanto", "english_name": "Esperanto"}, "en": {"english_name": "English"}, "zh": {"name": "中文", "english_name": "Chinese"}, "ee": {"english_name": "Ewe"}, "za": {"english_name": "Zhuang"}, "mh": {"english_name": "Marshallese"}, "uk": {"name": "українська", "english_name": "Ukrainian"}, "eu": {"name": "Euskara", "english_name": "Basque"}, "et": {"name": "Eesti", "english_name": "Estonian"}, "es": {"name": "Español", "english_name": "Spanish"}, "ru": {"name": "русский", "english_name": "Russian"}, "rw": {"name": "Ikinyarwanda", "english_name": "Kinyarwanda"}, "rm": {"english_name": "Romansh"}, "rn": {"english_name": "Rundi"}, "ro": {"name": "Română", "english_name": "Romanian"}, "bn": {"name": "বাংলা", "english_name": "Bengali"}, "be": {"english_name": "Belarusian"}, "bg": {"name": "Български", "english_name": "Bulgarian"}, "ba": {"english_name": "Bashkir"}, "wa": {"name": "Walon", "english_name": "Walloon"}, "wo": {"english_name": "Wolof"}, "bm": {"english_name": "Bambara"}, "jv": {"english_name": "Javanese"}, "bo": {"english_name": "Tibetan"}, "bi": {"english_name": "Bislama"}, "br": {"name": "Brezhoneg", "english_name": "Breton"}, "bs": {"name": "Bosnian", "english_name": "Bosnian"}, "ja": {"name": "日本語", "english_name": "Japanese"}, "om": {"english_name": "Oromo"}, "oj": {"english_name": "Ojibwa"}, "ty": {"english_name": "Tahitian"}, "oc": {"name": "Occitan", "english_name": "Occitan"}, "tw": {"english_name": "Twi"}, "os": {"english_name": "Ossetian"}, "or": {"name": "Oriya", "english_name": "Oriya"}, "xh": {"name": "Xhosa", "english_name": "Xhosa"}, "ch": {"english_name": "Chamorro"}, "co": {"english_name": "Corsican"}, "ca": {"name": "Català", "english_name": "Catalan"}, "ce": {"english_name": "Chechen"}, "cy": {"name": "Cymraeg", "english_name": "Welsh"}, "cs": {"name": "čeština", "english_name": "Czech"}, "cr": {"english_name": "Cree"}, "cv": {"english_name": "Chuvash"}, "cu": {"english_name": "Slavic, Church"}, "ve": {"name": "Venda", "english_name": "Venda"}, "ps": {"name": "Pushto", "english_name": "Pushto"}, "pt": {"name": "Português", "english_name": "Portuguese"}, "tl": {"english_name": "Tagalog"}, "pa": {"name": "ਪੰਜਾਬੀ", "english_name": "Panjabi"}, "vi": {"name": "Tiếng Việt", "english_name": "Vietnamese"}, "pi": {"english_name": "Pali"}, "is": {"name": "Íslenska", "english_name": "Icelandic"}, "pl": {"name": "polski", "english_name": "Polish"}, "hz": {"english_name": "Herero"}, "hy": {"english_name": "Armenian"}, "hr": {"name": "hrvatski", "english_name": "Croatian"}, "iu": {"english_name": "Inuktitut"}, "ht": {"english_name": "Haitian"}, "hu": {"name": "magyar", "english_name": "Hungarian"}, "hi": {"name": "हिंदी", "english_name": "Hindi"}, "ho": {"english_name": "Hiri Motu"}, "ha": {"english_name": "Hausa"}, "he": {"name": "עברית", "english_name": "Hebrew"}, "mg": {"english_name": "Malagasy"}, "uz": {"english_name": "Uzbek"}, "ml": {"english_name": "Malayalam"}, "mn": {"name": "Монгол", "english_name": "Mongolian"}, "mi": {"name": "Reo Māori", "english_name": "Maori"}, "ik": {"english_name": "Inupiaq"}, "mk": {"name": "Македонски", "english_name": "Macedonian"}, "ur": {"english_name": "Urdu"}, "mt": {"name": "Malti", "english_name": "Maltese"}, "ms": {"name": "Malay", "english_name": "Malay"}, "mr": {"name": "मराठी", "english_name": "Marathi"}, "ug": {"english_name": "Uighur"}, "my": {"english_name": "Burmese"}, "sq": {"english_name": "Albanian"}, "ae": {"english_name": "Avestan"}, "ss": {"english_name": "Swati"}, "af": {"name": "Afrikaans", "english_name": "Afrikaans"}, "tn": {"english_name": "Tswana"}, "sw": {"english_name": "Swahili (macrolanguage)"}, "ak": {"english_name": "Akan"}, "am": {"name": "አማርኛ", "english_name": "Amharic"}, "it": {"name": "Italiano", "english_name": "Italian"}, "an": {"english_name": "Aragonese"}, "ii": {"english_name": "Yi, Sichuan"}, "ia": {"english_name": "Interlingua"}, "as": {"english_name": "Assamese"}, "ar": {"name": "العربية", "english_name": "Arabic"}, "su": {"english_name": "Sundanese"}, "io": {"english_name": "Ido"}, "av": {"english_name": "Avaric"}, "ay": {"english_name": "Aymara"}, "az": {"name": "Azerbaijani", "english_name": "Azerbaijani"}, "ie": {"english_name": "Interlingue"}, "id": {"name": "Indonesian", "english_name": "Indonesian"}, "ig": {"english_name": "Igbo"}, "sk": {"name": "Slovenský", "english_name": "Slovak"}, "sr": {"name": "српски", "english_name": "Serbian"}, "nl": {"name": "Nederlands", "english_name": "Dutch"}, "nn": {"name": "Norwegian Nynorsk", "english_name": "Norwegian Nynorsk"}, "no": {"english_name": "Norwegian"}, "na": {"english_name": "Nauru"}, "nb": {"name": "Norwegian Bokmål", "english_name": "Norwegian Bokmål"}, "nd": {"english_name": "Ndebele, North"}, "ne": {"english_name": "Nepali (macrolanguage)"}, "ng": {"english_name": "Ndonga"}, "ny": {"english_name": "Nyanja"}, "vo": {"english_name": "Volapük"}, "zu": {"name": "Isi-Zulu", "english_name": "Zulu"}, "so": {"english_name": "Somali"}, "nr": {"english_name": "Ndebele, South"}, "nv": {"english_name": "Navajo"}, "sn": {"english_name": "Shona"}, "fr": {"name": "français", "english_name": "French"}, "sm": {"english_name": "Samoan"}, "fy": {"english_name": "Frisian, Western"}, "sv": {"name": "Svenska", "english_name": "Swedish"}, "fa": {"name": "فارسی", "english_name": "Persian"}, "ff": {"english_name": "Fulah"}, "fi": {"name": "suomi", "english_name": "Finnish"}, "fj": {"english_name": "Fijian"}, "sa": {"english_name": "Sanskrit"}, "fo": {"english_name": "Faroese"}, "ka": {"english_name": "Georgian"}, "kg": {"english_name": "Kongo"}, "kk": {"english_name": "Kazakh"}, "kj": {"english_name": "Kuanyama"}, "ki": {"english_name": "Kikuyu"}, "ko": {"name": "한국어", "english_name": "Korean"}, "kn": {"name": "ಕನ್ನಡ", "english_name": "Kannada"}, "km": {"english_name": "Khmer, Central"}, "kl": {"english_name": "Kalaallisut"}, "ks": {"english_name": "Kashmiri"}, "kr": {"english_name": "Kanuri"}, "si": {"english_name": "Sinhala"}, "sh": {"name": "Serbo-Croatian", "english_name": "Serbo-Croatian"}, "kw": {"english_name": "Cornish"}, "kv": {"english_name": "Komi"}, "ku": {"english_name": "Kurdish"}, "sl": {"name": "slovenščina", "english_name": "Slovenian"}, "sc": {"english_name": "Sardinian"}, "ky": {"english_name": "Kirghiz"}, "sg": {"english_name": "Sango"}, "se": {"english_name": "Sami, Northern"}, "sd": {"english_name": "Sindhi"}}, "google": {"el": {"name": "Ελληνικά"}, "eo": {"name": "Esperanto"}, "en": {"name": "English"}, "af": {"name": "Afrikaans"}, "vi": {"name": "Tiếng Việt"}, "ca": {"name": "Català"}, "it": {"name": "Italiano"}, "iw": {"name": "עברית"}, "hy": {"name": "Հայերեն"}, "cs": {"name": "Čeština"}, "et": {"name": "Eesti"}, "id": {"name": "Indonesia"}, "es": {"name": "Español"}, "ru": {"name": "Русский"}, "nl": {"name": "Nederlands"}, "pt": {"name": "Português"}, "no": {"name": "Norsk"}, "tr": {"name": "Türkçe"}, "lt": {"name": "Lietuvių"}, "lv": {"name": "Latviešu"}, "tl": {"name": "Filipino"}, "zh-TW": {"name": "中文 (繁體)"}, "th": {"name": "ไทย"}, "ro": {"name": "Română"}, "is": {"name": "Íslenska"}, "pl": {"name": "Polski"}, "be": {"name": "Беларуская"}, "fr": {"name": "Français"}, "bg": {"name": "Български"}, "hr": {"name": "Hrvatski"}, "de": {"name": "Deutsch"}, "ko": {"name": "한국어"}, "da": {"name": "Dansk"}, "fa": {"name": "فارسی"}, "hi": {"name": "हिन्दी"}, "fi": {"name": "Suomi"}, "hu": {"name": "Magyar"}, "ja": {"name": "日本語"}, "sr": {"name": "Српски"}, "sw": {"name": "Kiswahili"}, "sv": {"name": "Svenska"}, "sk": {"name": "Slovenčina"}, "zh-CN": {"name": "中文 (简体)"}, "ar": {"name": "العربية"}, "uk": {"name": "Українська"}, "sl": {"name": "Slovenščina"}}, "duckduckgo": ["da-DK", "vi-VN", "en-SG", "sl-SL", "en-XA", "tzh-HK", "en-UK", "ro-RO", "en-MY", "el-GR", "it-CH", "hu-HU", "fr-FR", "en-PH", "tl-PH", "fr-CA", "fi-FI", "et-EE", "sv-SE", "es-XL", "th-TH", "sk-SK", "es-ES", "en-IE", "es-US", "es-PE", "nl-NL", "en-US", "de-DE", "de-AT", "wt-WT", "no-NO", "tr-TR", "ca-ES", "it-IT", "es-CO", "ru-RU", "ca-CT", "en-ZA", "en-CA", "jp-JP", "es-MX", "id-ID", "es-AR", "he-IL", "kr-KR", "en-AU", "ms-MY", "pl-PL", "lv-LV", "bg-BG", "zh-CN", "en-NZ", "lt-LT", "tzh-TW", "hr-HR", "pt-PT", "fr-BE", "de-CH", "cs-CZ", "en-IN", "nl-BE", "fr-CH", "en-ID", "ar-XA", "pt-BR", "uk-UA", "es-CL"], "bing": ["sq", "de", "ar", "bg", "ca", "cs", "zh-CHS", "zh-CHT", "ko", "hr", "da", "sk", "sl", "es", "et", "fi", "fr", "el", "he", "nl", "hu", "id", "en", "is", "it", "ja", "lv", "lt", "ms", "nb", "fa", "pl", "pt-BR", "pt-PT", "ro", "ru", "sr", "sv", "th", "tr", "uk", "vi"], "wikipedia": {"sco": {"articles": 41758, "name": "Scots", "english_name": "Scots"}, "scn": {"articles": 25373, "name": "Sicilianu", "english_name": "Sicilian"}, "gu": {"articles": 26688, "name": "ગુજરાતી", "english_name": "Gujarati"}, "gd": {"articles": 14250, "name": "Gàidhlig", "english_name": "Scottish Gaelic"}, "ga": {"articles": 38830, "name": "Gaeilge", "english_name": "Irish"}, "gl": {"articles": 134702, "name": "Galego", "english_name": "Galician"}, "als": {"articles": 22350, "name": "Alemannisch", "english_name": "Alemannic"}, "lb": {"articles": 47313, "name": "Lëtzebuergesch", "english_name": "Luxembourgish"}, "la": {"articles": 125692, "name": "Latina", "english_name": "Latin"}, "tt": {"articles": 69908, "name": "Tatarça / Татарча", "english_name": "Tatar"}, "tr": {"articles": 287464, "name": "Türkçe", "english_name": "Turkish"}, "li": {"articles": 11552, "name": "Limburgs", "english_name": "Limburgish"}, "lv": {"articles": 74371, "name": "Latviešu", "english_name": "Latvian"}, "tl": {"articles": 65689, "name": "Tagalog", "english_name": "Tagalog"}, "vec": {"articles": 10855, "name": "Vèneto", "english_name": "Venetian"}, "th": {"articles": 113239, "name": "ไทย", "english_name": "Thai"}, "tg": {"articles": 67388, "name": "Тоҷикӣ", "english_name": "Tajik"}, "te": {"articles": 66228, "name": "తెలుగు", "english_name": "Telugu"}, "ta": {"articles": 89570, "name": "தமிழ்", "english_name": "Tamil"}, "yi": {"articles": 13591, "name": "ייִדיש", "english_name": "Yiddish"}, "ceb": {"articles": 3535780, "name": "Sinugboanong Binisaya", "english_name": "Cebuano"}, "yo": {"articles": 31494, "name": "Yorùbá", "english_name": "Yoruba"}, "de": {"articles": 2009282, "name": "Deutsch", "english_name": "German"}, "da": {"articles": 221813, "name": "Dansk", "english_name": "Danish"}, "qu": {"articles": 19810, "name": "Runa Simi", "english_name": "Quechua"}, "bar": {"articles": 21968, "name": "Boarisch", "english_name": "Bavarian"}, "kn": {"articles": 21607, "name": "ಕನ್ನಡ", "english_name": "Kannada"}, "bpy": {"articles": 25067, "name": "ইমার ঠার/বিষ্ণুপ্রিয়া মণিপুরী", "english_name": "Bishnupriya Manipuri"}, "el": {"articles": 124371, "name": "Ελληνικά", "english_name": "Greek"}, "eo": {"articles": 235590, "name": "Esperanto", "english_name": "Esperanto"}, "en": {"articles": 5308212, "name": "English", "english_name": "English"}, "zh": {"articles": 915374, "name": "中文", "english_name": "Chinese"}, "pms": {"articles": 63988, "name": "Piemontèis", "english_name": "Piedmontese"}, "arz": {"articles": 16103, "name": "مصرى (Maṣri)", "english_name": "Egyptian Arabic"}, "eu": {"articles": 261872, "name": "Euskara", "english_name": "Basque"}, "et": {"articles": 151596, "name": "Eesti", "english_name": "Estonian"}, "es": {"articles": 1301888, "name": "Español", "english_name": "Spanish"}, "ba": {"articles": 36625, "name": "Башҡорт", "english_name": "Bashkir"}, "ru": {"articles": 1359387, "name": "Русский", "english_name": "Russian"}, "new": {"articles": 72176, "name": "नेपाल भाषा", "english_name": "Newar"}, "ro": {"articles": 373081, "name": "Română", "english_name": "Romanian"}, "jv": {"articles": 49676, "name": "Basa Jawa", "english_name": "Javanese"}, "hsb": {"articles": 10909, "name": "Hornjoserbsce", "english_name": "Upper Sorbian"}, "be": {"articles": 123483, "name": "Беларуская", "english_name": "Belarusian"}, "bg": {"articles": 223764, "name": "Български", "english_name": "Bulgarian"}, "uk": {"articles": 667063, "name": "Українська", "english_name": "Ukrainian"}, "wa": {"articles": 14315, "name": "Walon", "english_name": "Walloon"}, "ast": {"articles": 47719, "name": "Asturianu", "english_name": "Asturian"}, "bn": {"articles": 46064, "name": "বাংলা", "english_name": "Bengali"}, "map-bms": {"articles": 13275, "name": "Basa Banyumasan", "english_name": "Banyumasan"}, "br": {"articles": 60626, "name": "Brezhoneg", "english_name": "Breton"}, "bs": {"articles": 72084, "name": "Bosanski", "english_name": "Bosnian"}, "ja": {"articles": 1041648, "name": "日本語", "english_name": "Japanese"}, "oc": {"articles": 84329, "name": "Occitan", "english_name": "Occitan"}, "be-tarask": {"articles": 59873, "name": "Беларуская (тарашкевіца)", "english_name": "Belarusian (Taraškievica)"}, "nds": {"articles": 25733, "name": "Plattdüütsch", "english_name": "Low Saxon"}, "os": {"articles": 10293, "name": "Иронау", "english_name": "Ossetian"}, "or": {"articles": 11725, "name": "ଓଡ଼ିଆ", "english_name": "Oriya"}, "simple": {"articles": 121800, "name": "Simple English", "english_name": "Simple English"}, "ca": {"articles": 528757, "name": "Català", "english_name": "Catalan"}, "lmo": {"articles": 34558, "name": "Lumbaart", "english_name": "Lombard"}, "ce": {"articles": 158923, "name": "Нохчийн", "english_name": "Chechen"}, "cy": {"articles": 89273, "name": "Cymraeg", "english_name": "Welsh"}, "cs": {"articles": 369105, "name": "Čeština", "english_name": "Czech"}, "cv": {"articles": 36501, "name": "Чăваш", "english_name": "Chuvash"}, "pt": {"articles": 949123, "name": "Português", "english_name": "Portuguese"}, "lt": {"articles": 180377, "name": "Lietuvių", "english_name": "Lithuanian"}, "zh-min-nan": {"articles": 201884, "name": "Bân-lâm-gú", "english_name": "Min Nan"}, "pa": {"articles": 24072, "name": "ਪੰਜਾਬੀ", "english_name": "Punjabi"}, "war": {"articles": 1261970, "name": "Winaray", "english_name": "Waray-Waray"}, "pl": {"articles": 1197597, "name": "Polski", "english_name": "Polish"}, "hy": {"articles": 212747, "name": "Հայերեն", "english_name": "Armenian"}, "an": {"articles": 31832, "name": "Aragonés", "english_name": "Aragonese"}, "hr": {"articles": 171047, "name": "Hrvatski", "english_name": "Croatian"}, "ht": {"articles": 51108, "name": "Krèyol ayisyen", "english_name": "Haitian"}, "hu": {"articles": 399927, "name": "Magyar", "english_name": "Hungarian"}, "bat-smg": {"articles": 15940, "name": "Žemaitėška", "english_name": "Samogitian"}, "hi": {"articles": 114396, "name": "हिन्दी", "english_name": "Hindi"}, "pnb": {"articles": 42670, "name": "شاہ مکھی پنجابی (Shāhmukhī Pañjābī)", "english_name": "Western Punjabi"}, "bug": {"articles": 14116, "name": "Basa Ugi", "english_name": "Buginese"}, "he": {"articles": 199250, "name": "עברית", "english_name": "Hebrew"}, "mg": {"articles": 82826, "name": "Malagasy", "english_name": "Malagasy"}, "uz": {"articles": 128744, "name": "O‘zbek", "english_name": "Uzbek"}, "ml": {"articles": 46807, "name": "മലയാളം", "english_name": "Malayalam"}, "azb": {"articles": 11827, "name": "تۆرکجه", "english_name": "South Azerbaijani"}, "mn": {"articles": 16285, "name": "Монгол", "english_name": "Mongolian"}, "mk": {"articles": 87543, "name": "Македонски", "english_name": "Macedonian"}, "ur": {"articles": 110819, "name": "اردو", "english_name": "Urdu"}, "ms": {"articles": 286189, "name": "Bahasa Melayu", "english_name": "Malay"}, "mr": {"articles": 45052, "name": "मराठी", "english_name": "Marathi"}, "my": {"articles": 33576, "name": "မြန်မာဘာသာ", "english_name": "Burmese"}, "sah": {"articles": 10965, "name": "Саха тыла (Saxa Tyla)", "english_name": "Sakha"}, "af": {"articles": 43005, "name": "Afrikaans", "english_name": "Afrikaans"}, "vi": {"articles": 1151596, "name": "Tiếng Việt", "english_name": "Vietnamese"}, "is": {"articles": 41503, "name": "Íslenska", "english_name": "Icelandic"}, "am": {"articles": 13297, "name": "አማርኛ", "english_name": "Amharic"}, "it": {"articles": 1317642, "name": "Italiano", "english_name": "Italian"}, "vo": {"articles": 120413, "name": "Volapük", "english_name": "Volapük"}, "ar": {"articles": 453687, "name": "العربية", "english_name": "Arabic"}, "io": {"articles": 26845, "name": "Ido", "english_name": "Ido"}, "ia": {"articles": 19784, "name": "Interlingua", "english_name": "Interlingua"}, "az": {"articles": 111510, "name": "Azərbaycanca", "english_name": "Azerbaijani"}, "id": {"articles": 390261, "name": "Bahasa Indonesia", "english_name": "Indonesian"}, "nl": {"articles": 1885863, "name": "Nederlands", "english_name": "Dutch"}, "nn": {"articles": 131704, "name": "Nynorsk", "english_name": "Norwegian (Nynorsk)"}, "no": {"articles": 458295, "name": "Norsk (Bokmål)", "english_name": "Norwegian (Bokmål)"}, "nah": {"articles": 10429, "name": "Nāhuatl", "english_name": "Nahuatl"}, "ne": {"articles": 29279, "name": "नेपाली", "english_name": "Nepali"}, "nap": {"articles": 14400, "name": "Nnapulitano", "english_name": "Neapolitan"}, "fr": {"articles": 1823284, "name": "Français", "english_name": "French"}, "mrj": {"articles": 10164, "name": "Кырык Мары (Kyryk Mary)", "english_name": "Hill Mari"}, "zh-yue": {"articles": 49372, "name": "粵語", "english_name": "Cantonese"}, "fy": {"articles": 36467, "name": "Frysk", "english_name": "West Frisian"}, "fa": {"articles": 516655, "name": "فارسی", "english_name": "Persian"}, "fi": {"articles": 405189, "name": "Suomi", "english_name": "Finnish"}, "mzn": {"articles": 12362, "name": "مَزِروني", "english_name": "Mazandarani"}, "sa": {"articles": 10198, "name": "संस्कृतम्", "english_name": "Sanskrit"}, "fo": {"articles": 12373, "name": "Føroyskt", "english_name": "Faroese"}, "ka": {"articles": 111160, "name": "ქართული", "english_name": "Georgian"}, "ckb": {"articles": 18218, "name": "Soranî / کوردی", "english_name": "Sorani"}, "kk": {"articles": 217488, "name": "Қазақша", "english_name": "Kazakh"}, "sr": {"articles": 342526, "name": "Српски / Srpski", "english_name": "Serbian"}, "sq": {"articles": 62453, "name": "Shqip", "english_name": "Albanian"}, "min": {"articles": 221961, "name": "Minangkabau", "english_name": "Minangkabau"}, "ko": {"articles": 367197, "name": "한국어", "english_name": "Korean"}, "sv": {"articles": 3783412, "name": "Svenska", "english_name": "Swedish"}, "su": {"articles": 19163, "name": "Basa Sunda", "english_name": "Sundanese"}, "sk": {"articles": 215364, "name": "Slovenčina", "english_name": "Slovak"}, "si": {"articles": 12831, "name": "සිංහල", "english_name": "Sinhalese"}, "sh": {"articles": 436549, "name": "Srpskohrvatski / Српскохрватски", "english_name": "Serbo-Croatian"}, "ku": {"articles": 22370, "name": "Kurdî / كوردی", "english_name": "Kurdish"}, "sl": {"articles": 153986, "name": "Slovenščina", "english_name": "Slovenian"}, "ky": {"articles": 60035, "name": "Кыргызча", "english_name": "Kirghiz"}, "sw": {"articles": 34775, "name": "Kiswahili", "english_name": "Swahili"}}, "bing news": ["sq", "de", "ar", "bg", "ca", "cs", "zh-CHS", "zh-CHT", "ko", "hr", "da", "sk", "sl", "es", "et", "fi", "fr", "el", "he", "nl", "hu", "id", "en", "is", "it", "ja", "lv", "lt", "ms", "nb", "fa", "pl", "pt-BR", "pt-PT", "ro", "ru", "sr", "sv", "th", "tr", "uk", "vi"], "yahoo news": ["ar", "bg", "zh-chs", "zh-cht", "hr", "cs", "da", "nl", "en", "et", "fi", "fr", "de", "el", "he", "hu", "it", "ja", "ko", "lv", "lt", "no", "pl", "pt", "ro", "ru", "sk", "sl", "es", "sv", "th", "tr"], "swisscows": ["browser", "ar-SA", "es-AR", "en-AU", "de-AT", "fr-BE", "nl-BE", "pt-BR", "en-CA", "fr-CA", "es-CL", "zh-CN", "da-DK", "fi-FI", "fr-FR", "de-DE", "zh-HK", "en-IN", "en-IE", "it-IT", "ja-JP", "ko-KR", "en-MY", "es-MX", "nl-NL", "en-NZ", "nb-NO", "en-PH", "pl-PL", "pt-PT", "ru-RU", "en-ZA", "es-ES", "sv-SE", "de-CH", "fr-CH", "zh-TW", "tr-TR", "en-GB", "en-US", "es-US"], "wikidata": {"sco": {"articles": 41758, "name": "Scots", "english_name": "Scots"}, "scn": {"articles": 25373, "name": "Sicilianu", "english_name": "Sicilian"}, "gu": {"articles": 26688, "name": "ગુજરાતી", "english_name": "Gujarati"}, "gd": {"articles": 14250, "name": "Gàidhlig", "english_name": "Scottish Gaelic"}, "ga": {"articles": 38830, "name": "Gaeilge", "english_name": "Irish"}, "gl": {"articles": 134702, "name": "Galego", "english_name": "Galician"}, "als": {"articles": 22350, "name": "Alemannisch", "english_name": "Alemannic"}, "lb": {"articles": 47313, "name": "Lëtzebuergesch", "english_name": "Luxembourgish"}, "la": {"articles": 125692, "name": "Latina", "english_name": "Latin"}, "tt": {"articles": 69908, "name": "Tatarça / Татарча", "english_name": "Tatar"}, "tr": {"articles": 287464, "name": "Türkçe", "english_name": "Turkish"}, "li": {"articles": 11552, "name": "Limburgs", "english_name": "Limburgish"}, "lv": {"articles": 74371, "name": "Latviešu", "english_name": "Latvian"}, "tl": {"articles": 65689, "name": "Tagalog", "english_name": "Tagalog"}, "vec": {"articles": 10855, "name": "Vèneto", "english_name": "Venetian"}, "th": {"articles": 113239, "name": "ไทย", "english_name": "Thai"}, "tg": {"articles": 67388, "name": "Тоҷикӣ", "english_name": "Tajik"}, "te": {"articles": 66228, "name": "తెలుగు", "english_name": "Telugu"}, "ta": {"articles": 89570, "name": "தமிழ்", "english_name": "Tamil"}, "yi": {"articles": 13591, "name": "ייִדיש", "english_name": "Yiddish"}, "ceb": {"articles": 3535780, "name": "Sinugboanong Binisaya", "english_name": "Cebuano"}, "yo": {"articles": 31494, "name": "Yorùbá", "english_name": "Yoruba"}, "de": {"articles": 2009282, "name": "Deutsch", "english_name": "German"}, "da": {"articles": 221813, "name": "Dansk", "english_name": "Danish"}, "qu": {"articles": 19810, "name": "Runa Simi", "english_name": "Quechua"}, "bar": {"articles": 21968, "name": "Boarisch", "english_name": "Bavarian"}, "kn": {"articles": 21607, "name": "ಕನ್ನಡ", "english_name": "Kannada"}, "bpy": {"articles": 25067, "name": "ইমার ঠার/বিষ্ণুপ্রিয়া মণিপুরী", "english_name": "Bishnupriya Manipuri"}, "el": {"articles": 124371, "name": "Ελληνικά", "english_name": "Greek"}, "eo": {"articles": 235590, "name": "Esperanto", "english_name": "Esperanto"}, "en": {"articles": 5308212, "name": "English", "english_name": "English"}, "zh": {"articles": 915374, "name": "中文", "english_name": "Chinese"}, "pms": {"articles": 63988, "name": "Piemontèis", "english_name": "Piedmontese"}, "arz": {"articles": 16103, "name": "مصرى (Maṣri)", "english_name": "Egyptian Arabic"}, "eu": {"articles": 261872, "name": "Euskara", "english_name": "Basque"}, "et": {"articles": 151596, "name": "Eesti", "english_name": "Estonian"}, "es": {"articles": 1301888, "name": "Español", "english_name": "Spanish"}, "ba": {"articles": 36625, "name": "Башҡорт", "english_name": "Bashkir"}, "ru": {"articles": 1359387, "name": "Русский", "english_name": "Russian"}, "new": {"articles": 72176, "name": "नेपाल भाषा", "english_name": "Newar"}, "ro": {"articles": 373081, "name": "Română", "english_name": "Romanian"}, "jv": {"articles": 49676, "name": "Basa Jawa", "english_name": "Javanese"}, "hsb": {"articles": 10909, "name": "Hornjoserbsce", "english_name": "Upper Sorbian"}, "be": {"articles": 123483, "name": "Беларуская", "english_name": "Belarusian"}, "bg": {"articles": 223764, "name": "Български", "english_name": "Bulgarian"}, "uk": {"articles": 667063, "name": "Українська", "english_name": "Ukrainian"}, "wa": {"articles": 14315, "name": "Walon", "english_name": "Walloon"}, "ast": {"articles": 47719, "name": "Asturianu", "english_name": "Asturian"}, "bn": {"articles": 46064, "name": "বাংলা", "english_name": "Bengali"}, "map-bms": {"articles": 13275, "name": "Basa Banyumasan", "english_name": "Banyumasan"}, "br": {"articles": 60626, "name": "Brezhoneg", "english_name": "Breton"}, "bs": {"articles": 72084, "name": "Bosanski", "english_name": "Bosnian"}, "ja": {"articles": 1041648, "name": "日本語", "english_name": "Japanese"}, "oc": {"articles": 84329, "name": "Occitan", "english_name": "Occitan"}, "be-tarask": {"articles": 59873, "name": "Беларуская (тарашкевіца)", "english_name": "Belarusian (Taraškievica)"}, "nds": {"articles": 25733, "name": "Plattdüütsch", "english_name": "Low Saxon"}, "os": {"articles": 10293, "name": "Иронау", "english_name": "Ossetian"}, "or": {"articles": 11725, "name": "ଓଡ଼ିଆ", "english_name": "Oriya"}, "simple": {"articles": 121800, "name": "Simple English", "english_name": "Simple English"}, "ca": {"articles": 528757, "name": "Català", "english_name": "Catalan"}, "lmo": {"articles": 34558, "name": "Lumbaart", "english_name": "Lombard"}, "ce": {"articles": 158923, "name": "Нохчийн", "english_name": "Chechen"}, "cy": {"articles": 89273, "name": "Cymraeg", "english_name": "Welsh"}, "cs": {"articles": 369105, "name": "Čeština", "english_name": "Czech"}, "cv": {"articles": 36501, "name": "Чăваш", "english_name": "Chuvash"}, "pt": {"articles": 949123, "name": "Português", "english_name": "Portuguese"}, "lt": {"articles": 180377, "name": "Lietuvių", "english_name": "Lithuanian"}, "zh-min-nan": {"articles": 201884, "name": "Bân-lâm-gú", "english_name": "Min Nan"}, "pa": {"articles": 24072, "name": "ਪੰਜਾਬੀ", "english_name": "Punjabi"}, "war": {"articles": 1261970, "name": "Winaray", "english_name": "Waray-Waray"}, "pl": {"articles": 1197597, "name": "Polski", "english_name": "Polish"}, "hy": {"articles": 212747, "name": "Հայերեն", "english_name": "Armenian"}, "an": {"articles": 31832, "name": "Aragonés", "english_name": "Aragonese"}, "hr": {"articles": 171047, "name": "Hrvatski", "english_name": "Croatian"}, "ht": {"articles": 51108, "name": "Krèyol ayisyen", "english_name": "Haitian"}, "hu": {"articles": 399927, "name": "Magyar", "english_name": "Hungarian"}, "bat-smg": {"articles": 15940, "name": "Žemaitėška", "english_name": "Samogitian"}, "hi": {"articles": 114396, "name": "हिन्दी", "english_name": "Hindi"}, "pnb": {"articles": 42670, "name": "شاہ مکھی پنجابی (Shāhmukhī Pañjābī)", "english_name": "Western Punjabi"}, "bug": {"articles": 14116, "name": "Basa Ugi", "english_name": "Buginese"}, "he": {"articles": 199250, "name": "עברית", "english_name": "Hebrew"}, "mg": {"articles": 82826, "name": "Malagasy", "english_name": "Malagasy"}, "uz": {"articles": 128744, "name": "O‘zbek", "english_name": "Uzbek"}, "ml": {"articles": 46807, "name": "മലയാളം", "english_name": "Malayalam"}, "azb": {"articles": 11827, "name": "تۆرکجه", "english_name": "South Azerbaijani"}, "mn": {"articles": 16285, "name": "Монгол", "english_name": "Mongolian"}, "mk": {"articles": 87543, "name": "Македонски", "english_name": "Macedonian"}, "ur": {"articles": 110819, "name": "اردو", "english_name": "Urdu"}, "ms": {"articles": 286189, "name": "Bahasa Melayu", "english_name": "Malay"}, "mr": {"articles": 45052, "name": "मराठी", "english_name": "Marathi"}, "my": {"articles": 33576, "name": "မြန်မာဘာသာ", "english_name": "Burmese"}, "sah": {"articles": 10965, "name": "Саха тыла (Saxa Tyla)", "english_name": "Sakha"}, "af": {"articles": 43005, "name": "Afrikaans", "english_name": "Afrikaans"}, "vi": {"articles": 1151596, "name": "Tiếng Việt", "english_name": "Vietnamese"}, "is": {"articles": 41503, "name": "Íslenska", "english_name": "Icelandic"}, "am": {"articles": 13297, "name": "አማርኛ", "english_name": "Amharic"}, "it": {"articles": 1317642, "name": "Italiano", "english_name": "Italian"}, "vo": {"articles": 120413, "name": "Volapük", "english_name": "Volapük"}, "ar": {"articles": 453687, "name": "العربية", "english_name": "Arabic"}, "io": {"articles": 26845, "name": "Ido", "english_name": "Ido"}, "ia": {"articles": 19784, "name": "Interlingua", "english_name": "Interlingua"}, "az": {"articles": 111510, "name": "Azərbaycanca", "english_name": "Azerbaijani"}, "id": {"articles": 390261, "name": "Bahasa Indonesia", "english_name": "Indonesian"}, "nl": {"articles": 1885863, "name": "Nederlands", "english_name": "Dutch"}, "nn": {"articles": 131704, "name": "Nynorsk", "english_name": "Norwegian (Nynorsk)"}, "no": {"articles": 458295, "name": "Norsk (Bokmål)", "english_name": "Norwegian (Bokmål)"}, "nah": {"articles": 10429, "name": "Nāhuatl", "english_name": "Nahuatl"}, "ne": {"articles": 29279, "name": "नेपाली", "english_name": "Nepali"}, "nap": {"articles": 14400, "name": "Nnapulitano", "english_name": "Neapolitan"}, "fr": {"articles": 1823284, "name": "Français", "english_name": "French"}, "mrj": {"articles": 10164, "name": "Кырык Мары (Kyryk Mary)", "english_name": "Hill Mari"}, "zh-yue": {"articles": 49372, "name": "粵語", "english_name": "Cantonese"}, "fy": {"articles": 36467, "name": "Frysk", "english_name": "West Frisian"}, "fa": {"articles": 516655, "name": "فارسی", "english_name": "Persian"}, "fi": {"articles": 405189, "name": "Suomi", "english_name": "Finnish"}, "mzn": {"articles": 12362, "name": "مَزِروني", "english_name": "Mazandarani"}, "sa": {"articles": 10198, "name": "संस्कृतम्", "english_name": "Sanskrit"}, "fo": {"articles": 12373, "name": "Føroyskt", "english_name": "Faroese"}, "ka": {"articles": 111160, "name": "ქართული", "english_name": "Georgian"}, "ckb": {"articles": 18218, "name": "Soranî / کوردی", "english_name": "Sorani"}, "kk": {"articles": 217488, "name": "Қазақша", "english_name": "Kazakh"}, "sr": {"articles": 342526, "name": "Српски / Srpski", "english_name": "Serbian"}, "sq": {"articles": 62453, "name": "Shqip", "english_name": "Albanian"}, "min": {"articles": 221961, "name": "Minangkabau", "english_name": "Minangkabau"}, "ko": {"articles": 367197, "name": "한국어", "english_name": "Korean"}, "sv": {"articles": 3783412, "name": "Svenska", "english_name": "Swedish"}, "su": {"articles": 19163, "name": "Basa Sunda", "english_name": "Sundanese"}, "sk": {"articles": 215364, "name": "Slovenčina", "english_name": "Slovak"}, "si": {"articles": 12831, "name": "සිංහල", "english_name": "Sinhalese"}, "sh": {"articles": 436549, "name": "Srpskohrvatski / Српскохрватски", "english_name": "Serbo-Croatian"}, "ku": {"articles": 22370, "name": "Kurdî / كوردی", "english_name": "Kurdish"}, "sl": {"articles": 153986, "name": "Slovenščina", "english_name": "Slovenian"}, "ky": {"articles": 60035, "name": "Кыргызча", "english_name": "Kirghiz"}, "sw": {"articles": 34775, "name": "Kiswahili", "english_name": "Swahili"}}, "ddg definitions": ["da-DK", "vi-VN", "en-SG", "sl-SL", "en-XA", "tzh-HK", "en-UK", "ro-RO", "en-MY", "el-GR", "it-CH", "hu-HU", "fr-FR", "en-PH", "tl-PH", "fr-CA", "fi-FI", "et-EE", "sv-SE", "es-XL", "th-TH", "sk-SK", "es-ES", "en-IE", "es-US", "es-PE", "nl-NL", "en-US", "de-DE", "de-AT", "wt-WT", "no-NO", "tr-TR", "ca-ES", "it-IT", "es-CO", "ru-RU", "ca-CT", "en-ZA", "en-CA", "jp-JP", "es-MX", "id-ID", "es-AR", "he-IL", "kr-KR", "en-AU", "ms-MY", "pl-PL", "lv-LV", "bg-BG", "zh-CN", "en-NZ", "lt-LT", "tzh-TW", "hr-HR", "pt-PT", "fr-BE", "de-CH", "cs-CZ", "en-IN", "nl-BE", "fr-CH", "en-ID", "ar-XA", "pt-BR", "uk-UA", "es-CL"], "bing images": ["sq", "de", "ar", "bg", "ca", "cs", "zh-CHS", "zh-CHT", "ko", "hr", "da", "sk", "sl", "es", "et", "fi", "fr", "el", "he", "nl", "hu", "id", "en", "is", "it", "ja", "lv", "lt", "ms", "nb", "fa", "pl", "pt-BR", "pt-PT", "ro", "ru", "sr", "sv", "th", "tr", "uk", "vi"], "yahoo": ["ar", "bg", "zh-chs", "zh-cht", "hr", "cs", "da", "nl", "en", "et", "fi", "fr", "de", "el", "he", "hu", "it", "ja", "ko", "lv", "lt", "no", "pl", "pt", "ro", "ru", "sk", "sl", "es", "sv", "th", "tr"], "gigablast": ["en", "fr", "es", "ru", "tr", "ja", "h_", "tw", "cn", "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"]} \ No newline at end of file diff --git a/searx/engines/.yandex.py.swp b/searx/engines/.yandex.py.swp deleted file mode 100644 index ff2a8f64848312a9beca190fb55cf54fcee8ca14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeHNJ&zkj7@kldJ`z9#QKcAs60;WP-MdQwVaddZD?mz=NL(Pnvdnlrw_a|)n4LXr z%t4VN4bVeHMHPvH4+#)IfsS8*6zBj!K@%aKcRzf0Ap|0-NHfy2>v_NSeV=(}8qav` zhCe7A2PM&)5mZtAeK<~Ux11;lN znlMegTuD8vpDGE$MCIOGCKEMtv-vHfS*2ybGH`ng9AhUp*4M~qrS%v;{_us{bGO!( z0n318z%pPNunbrRECZGS%fKDYfXR-qcTvGzbrt>kedLCBJ+&{(fMvikU>UFsSOzQu zmI2FvWxz6E8L$jk2JS!xGhbzNm(mf{#Yvt?oh$BZnNLNVHRhFFcR6q5cngZJ5+k}? z2>10gOehEB=*}`}rcSLMm9utx@1`+KXd?Ab5lUs_zk0|YU*bK!5QUE5edxOo)jor@ z;l7vA^Qw&PRM!qXO!y>?>wK#qdF|V+xU7Zv)?ipB0DDZPCXU=~oyNJ*VG>Z`nQPR{ zwAn;$Q}`@Ra#hOPUADplWtLJ-j-2kW`qPe9Zxkvw=n{@muQk>}#(60r>3^%`rMB&itk4qvYr zE&Y0YEOT|x%S4l2B$J?k!zh-Si@F^Wv^iJ@H4^o6bX^=$onZ{EL-8_pzRLn3BO9kJ*nwWGKQZ0#ndFi%!fW3s&KHCLb);CIgx=(@Vc5bW^DKn*2~ zrhVt5|MBbZyHo7!kbdVavA>6!Mik?6&yMFe(-o5Z@LXlhf>J9W(S^_j>F`{oHEo)K zYCs;Se(8`GS(a)8&6X|{=PP{c+~zrk;<4RoDf6XKL8`;@EEov%sM0bLLsVYf3P;D$ z*@#1m4#Vv*z!%E%4-x8v5DohLG>j(8bFlKn5y+O?bmmq>@-Qxws$465G>fA~PNza8 z1>;dTZseF%o073stHpR94Ue<78c?qCvb$Ex6C26GA~$jz)h0>Gofo#wp5eYsxIe|7 zQP@8H=4hfYrP?WSBB#!kGL;b-mg0`gLKr3~eO{-#;Y5|9)0n@h#yJ|W%;$z)(uIfC Qxg@74l6Xap+hqlR0ly4Q)Bpeg diff --git a/searx/engines/__init__.py b/searx/engines/__init__.py index 7a64fd25b..cc200a0d1 100644 --- a/searx/engines/__init__.py +++ b/searx/engines/__init__.py @@ -21,6 +21,7 @@ import sys from flask_babel import gettext from operator import itemgetter from json import loads +from requests import get from searx import settings from searx import logger from searx.utils import load_module @@ -79,9 +80,6 @@ def load_engine(engine_data): if not hasattr(engine, arg_name): setattr(engine, arg_name, arg_value) - if engine_data['name'] in languages: - setattr(engine, 'supported_languages', languages[engine_data['name']]) - # checking required variables for engine_attr in dir(engine): if engine_attr.startswith('_'): @@ -91,6 +89,15 @@ def load_engine(engine_data): .format(engine.name, engine_attr)) sys.exit(1) + # assign supported languages from json file + if engine_data['name'] in languages: + setattr(engine, 'supported_languages', languages[engine_data['name']]) + + # assign language fetching method if auxiliary method exists + if hasattr(engine, '_fetch_supported_languages'): + setattr(engine, 'fetch_supported_languages', + lambda: engine._fetch_supported_languages(get(engine.supported_languages_url))) + engine.stats = { 'result_count': 0, 'search_count': 0, diff --git a/searx/engines/bing.py b/searx/engines/bing.py index 354003399..b2ad7b6cf 100644 --- a/searx/engines/bing.py +++ b/searx/engines/bing.py @@ -15,7 +15,6 @@ from urllib import urlencode from lxml import html -from requests import get from searx.engines.xpath import extract_text # engine dependent config @@ -86,10 +85,9 @@ def response(resp): # get supported languages from their site -def fetch_supported_languages(): +def _fetch_supported_languages(resp): supported_languages = [] - response = get(supported_languages_url) - dom = html.fromstring(response.text) + dom = html.fromstring(resp.text) options = dom.xpath('//div[@id="limit-languages"]//input') for option in options: code = option.xpath('./@id')[0].replace('_', '-') diff --git a/searx/engines/bing_images.py b/searx/engines/bing_images.py index 746d3abc4..97f6dca37 100644 --- a/searx/engines/bing_images.py +++ b/searx/engines/bing_images.py @@ -19,7 +19,7 @@ from urllib import urlencode from lxml import html from json import loads import re -from searx.engines.bing import fetch_supported_languages +from searx.engines.bing import _fetch_supported_languages, supported_languages_url # engine dependent config categories = ['images'] diff --git a/searx/engines/bing_news.py b/searx/engines/bing_news.py index 2d936fa53..765bcd38e 100644 --- a/searx/engines/bing_news.py +++ b/searx/engines/bing_news.py @@ -17,7 +17,7 @@ from datetime import datetime from dateutil import parser from lxml import etree from searx.utils import list_get -from searx.engines.bing import fetch_supported_languages +from searx.engines.bing import _fetch_supported_languages, supported_languages_url # engine dependent config categories = ['news'] diff --git a/searx/engines/dailymotion.py b/searx/engines/dailymotion.py index 813dd951f..8c69aafe0 100644 --- a/searx/engines/dailymotion.py +++ b/searx/engines/dailymotion.py @@ -80,11 +80,10 @@ def response(resp): # get supported languages from their site -def fetch_supported_languages(): +def _fetch_supported_languages(resp): supported_languages = {} - response = get(supported_languages_url) - response_json = loads(response.text) + response_json = loads(resp.text) for language in response_json['list']: supported_languages[language['code']] = {} diff --git a/searx/engines/duckduckgo.py b/searx/engines/duckduckgo.py index 9cf5fb339..df230222d 100644 --- a/searx/engines/duckduckgo.py +++ b/searx/engines/duckduckgo.py @@ -119,11 +119,10 @@ def response(resp): # get supported languages from their site -def fetch_supported_languages(): - response = get(supported_languages_url) +def _fetch_supported_languages(resp): # response is a js file with regions as an embedded object - response_page = response.text + response_page = resp.text response_page = response_page[response_page.find('regions:{') + 8:] response_page = response_page[:response_page.find('}') + 1] diff --git a/searx/engines/duckduckgo_definitions.py b/searx/engines/duckduckgo_definitions.py index b965c02e9..dd3f12e1e 100644 --- a/searx/engines/duckduckgo_definitions.py +++ b/searx/engines/duckduckgo_definitions.py @@ -4,7 +4,7 @@ from re import compile, sub from lxml import html from searx.utils import html_to_text from searx.engines.xpath import extract_text -from searx.engines.duckduckgo import fetch_supported_languages +from searx.engines.duckduckgo import _fetch_supported_languages, supported_languages_url url = 'https://api.duckduckgo.com/'\ + '?{query}&format=json&pretty=0&no_redirect=1&d=1' diff --git a/searx/engines/gigablast.py b/searx/engines/gigablast.py index e598e55c4..827b9cd03 100644 --- a/searx/engines/gigablast.py +++ b/searx/engines/gigablast.py @@ -14,7 +14,6 @@ from json import loads from random import randint from time import time from urllib import urlencode -from requests import get from lxml.html import fromstring # engine dependent config @@ -91,10 +90,9 @@ def response(resp): # get supported languages from their site -def fetch_supported_languages(): +def _fetch_supported_languages(resp): supported_languages = [] - response = get(supported_languages_url) - dom = fromstring(response.text) + dom = fromstring(resp.text) links = dom.xpath('//span[@id="menu2"]/a') for link in links: code = link.xpath('./@href')[0][-2:] diff --git a/searx/engines/google.py b/searx/engines/google.py index a82a0b5a7..803cd307e 100644 --- a/searx/engines/google.py +++ b/searx/engines/google.py @@ -12,7 +12,6 @@ import re from urllib import urlencode from urlparse import urlparse, parse_qsl from lxml import html, etree -from requests import get from searx.engines.xpath import extract_text, extract_url from searx.search import logger @@ -364,14 +363,13 @@ def attributes_to_html(attributes): # get supported languages from their site -def fetch_supported_languages(): +def _fetch_supported_languages(resp): supported_languages = {} - response = get(supported_languages_url) - dom = html.fromstring(response.text) - options = dom.xpath('//select[@name="hl"]/option') + dom = html.fromstring(resp.text) + options = dom.xpath('//table//td/font/label/span') for option in options: - code = option.xpath('./@value')[0].split('-')[0] - name = option.text[:-1].title() + code = option.xpath('./@id')[0][1:] + name = option.text.title() supported_languages[code] = {"name": name} return supported_languages diff --git a/searx/engines/google_news.py b/searx/engines/google_news.py index d138f99f5..ddacd1a61 100644 --- a/searx/engines/google_news.py +++ b/searx/engines/google_news.py @@ -13,7 +13,7 @@ from lxml import html from urllib import urlencode from json import loads -from searx.engines.google import fetch_supported_languages +from searx.engines.google import _fetch_supported_languages, supported_languages_url # search-url categories = ['news'] diff --git a/searx/engines/swisscows.py b/searx/engines/swisscows.py index 7f85019a6..d8a454039 100644 --- a/searx/engines/swisscows.py +++ b/searx/engines/swisscows.py @@ -13,7 +13,6 @@ from json import loads from urllib import urlencode, unquote import re -from requests import get from lxml.html import fromstring # engine dependent config @@ -25,6 +24,8 @@ language_support = True base_url = 'https://swisscows.ch/' search_string = '?{query}&page={page}' +supported_languages_url = base_url + # regex regex_json = re.compile(r'initialData: {"Request":(.|\n)*},\s*environment') regex_json_remove_start = re.compile(r'^initialData:\s*') @@ -113,10 +114,9 @@ def response(resp): # get supported languages from their site -def fetch_supported_languages(): +def _fetch_supported_languages(resp): supported_languages = [] - response = get(base_url) - dom = fromstring(response.text) + dom = fromstring(resp.text) options = dom.xpath('//div[@id="regions-popup"]//ul/li/a') for option in options: code = option.xpath('./@data-val')[0] diff --git a/searx/engines/wikidata.py b/searx/engines/wikidata.py index 9c0a768e0..3f849bc7d 100644 --- a/searx/engines/wikidata.py +++ b/searx/engines/wikidata.py @@ -15,7 +15,7 @@ from searx import logger from searx.poolrequests import get from searx.engines.xpath import extract_text from searx.utils import format_date_by_locale -from searx.engines.wikipedia import fetch_supported_languages +from searx.engines.wikipedia import _fetch_supported_languages, supported_languages_url from json import loads from lxml.html import fromstring diff --git a/searx/engines/wikipedia.py b/searx/engines/wikipedia.py index 0dee325a7..322e8d128 100644 --- a/searx/engines/wikipedia.py +++ b/searx/engines/wikipedia.py @@ -12,7 +12,6 @@ from json import loads from urllib import urlencode, quote -from requests import get from lxml.html import fromstring @@ -119,10 +118,9 @@ def response(resp): # get supported languages from their site -def fetch_supported_languages(): +def _fetch_supported_languages(resp): supported_languages = {} - response = get(supported_languages_url) - dom = fromstring(response.text) + dom = fromstring(resp.text) tables = dom.xpath('//table[contains(@class,"sortable")]') for table in tables: # exclude header row diff --git a/searx/engines/yahoo.py b/searx/engines/yahoo.py index db10c8939..5c62c2ed8 100644 --- a/searx/engines/yahoo.py +++ b/searx/engines/yahoo.py @@ -14,7 +14,6 @@ from urllib import urlencode from urlparse import unquote from lxml import html -from requests import get from searx.engines.xpath import extract_text, extract_url # engine dependent config @@ -144,13 +143,12 @@ def response(resp): # get supported languages from their site -def fetch_supported_languages(): +def _fetch_supported_languages(resp): supported_languages = [] - response = get(supported_languages_url) - dom = html.fromstring(response.text) + dom = html.fromstring(resp.text) options = dom.xpath('//div[@id="yschlang"]/span/label/input') for option in options: - code = option.xpath('./@value')[0][5:] + code = option.xpath('./@value')[0][5:].replace('_', '-') supported_languages.append(code) return supported_languages diff --git a/searx/engines/yahoo_news.py b/searx/engines/yahoo_news.py index bc7b5c368..3e4cf02eb 100644 --- a/searx/engines/yahoo_news.py +++ b/searx/engines/yahoo_news.py @@ -12,7 +12,7 @@ from urllib import urlencode from lxml import html from searx.engines.xpath import extract_text, extract_url -from searx.engines.yahoo import parse_url, fetch_supported_languages +from searx.engines.yahoo import parse_url, _fetch_supported_languages, supported_languages_url from datetime import datetime, timedelta import re from dateutil import parser diff --git a/searx/languages.py b/searx/languages.py index 0337947f4..63291ff9d 100644 --- a/searx/languages.py +++ b/searx/languages.py @@ -3,36 +3,27 @@ # this file is generated automatically by utils/update_search_languages.py language_codes = ( - (u"ach", u"Acoli", u"", u""), (u"af", u"Afrikaans", u"", u""), - (u"ak", u"Akan", u"", u""), - (u"am", u"አማርኛ", u"", u""), + (u"am", u"አማርኛ", u"", u"Amharic"), (u"ar-SA", u"العربية", u"المملكة العربية السعودية", u"Arabic"), (u"az", u"Azərbaycanca", u"", u"Azerbaijani"), - (u"ban", u"Balinese", u"", u""), (u"be", u"Беларуская", u"", u"Belarusian"), - (u"bem", u"Ichibemba", u"", u""), (u"bg-BG", u"Български", u"България", u"Bulgarian"), - (u"bn", u"বাংলা", u"", u""), - (u"br", u"Brezhoneg", u"", u""), - (u"bs", u"Bosanski", u"", u""), + (u"bn", u"বাংলা", u"", u"Bengali"), + (u"br", u"Brezhoneg", u"", u"Breton"), + (u"bs", u"Bosnian", u"", u"Bosnian"), (u"ca", u"Català", u"", u"Catalan"), (u"ca-CT", u"Català", u"", u"Catalan"), (u"ca-ES", u"Català", u"Espanya", u"Catalan"), (u"ce", u"Нохчийн", u"", u"Chechen"), (u"ceb", u"Sinugboanong Binisaya", u"", u"Cebuano"), - (u"chr", u"ᏣᎳᎩ", u"", u""), - (u"ckb", u"Central Kurdish", u"", u""), - (u"co", u"Corsican", u"", u""), - (u"crs", u"Seychellois Creole", u"", u""), (u"cs-CZ", u"Čeština", u"Česko", u"Czech"), - (u"cy", u"Cymraeg", u"", u""), + (u"cy", u"Cymraeg", u"", u"Welsh"), (u"da-DK", u"Dansk", u"Danmark", u"Danish"), (u"de", u"Deutsch", u"", u"German"), (u"de-AT", u"Deutsch", u"Österreich", u"German"), (u"de-CH", u"Deutsch", u"Schweiz", u"German"), (u"de-DE", u"Deutsch", u"Deutschland", u"German"), - (u"ee", u"Eʋegbe", u"", u""), (u"el-GR", u"Ελληνικά", u"Ελλάδα", u"Greek"), (u"en", u"English", u"", u"English"), (u"en-AU", u"English", u"Australia", u"English"), @@ -60,30 +51,20 @@ language_codes = ( (u"eu", u"Euskara", u"", u"Basque"), (u"fa", u"فارسی", u"", u"Persian"), (u"fi-FI", u"Suomi", u"Suomi", u"Finnish"), - (u"fo", u"Føroyskt", u"", u""), (u"fr", u"Français", u"", u"French"), (u"fr-BE", u"Français", u"Belgique", u"French"), (u"fr-CA", u"Français", u"Canada", u"French"), (u"fr-CH", u"Français", u"Suisse", u"French"), (u"fr-FR", u"Français", u"France", u"French"), - (u"fy", u"West-Frysk", u"", u""), - (u"ga", u"Gaeilge", u"", u""), - (u"gaa", u"Ga", u"", u""), - (u"gd", u"Gàidhlig", u"", u""), + (u"ga", u"Gaeilge", u"", u"Irish"), (u"gl", u"Galego", u"", u"Galician"), - (u"gn", u"Guarani", u"", u""), - (u"gu", u"ગુજરાતી", u"", u""), - (u"ha", u"Hausa", u"", u""), - (u"haw", u"ʻŌlelo HawaiʻI", u"", u""), + (u"gu", u"ગુજરાતી", u"", u"Gujarati"), (u"he-IL", u"עברית", u"ישראל", u"Hebrew"), (u"hi", u"हिन्दी", u"", u"Hindi"), (u"hr-HR", u"Hrvatski", u"Hrvatska", u"Croatian"), - (u"ht", u"Haitian Creole", u"", u""), (u"hu-HU", u"Magyar", u"Magyarország", u"Hungarian"), (u"hy", u"Հայերեն", u"", u"Armenian"), - (u"ia", u"Interlingua", u"", u""), (u"id-ID", u"Bahasa Indonesia", u"Indonesia", u"Indonesian"), - (u"ig", u"Igbo", u"", u""), (u"is", u"Íslenska", u"", u""), (u"it", u"Italiano", u"", u"Italian"), (u"it-CH", u"Italiano", u"Svizzera", u"Italian"), @@ -91,86 +72,48 @@ language_codes = ( (u"iw", u"עברית", u"", u""), (u"ja-JP", u"日本語", u"日本", u"Japanese"), (u"ka", u"ქართული", u"", u"Georgian"), - (u"kg", u"Kongo", u"", u""), (u"kk", u"Қазақша", u"", u"Kazakh"), - (u"km", u"ខ្មែរ", u"", u""), - (u"kn", u"ಕನ್ನಡ", u"", u""), + (u"kn", u"ಕನ್ನಡ", u"", u"Kannada"), (u"ko-KR", u"한국어", u"대한민국", u"Korean"), - (u"kri", u"Krio", u"", u""), - (u"ky", u"Кыргызча", u"", u""), (u"la", u"Latina", u"", u"Latin"), - (u"lg", u"Luganda", u"", u""), - (u"ln", u"Lingála", u"", u""), - (u"lo", u"ລາວ", u"", u""), - (u"loz", u"Lozi", u"", u""), (u"lt-LT", u"Lietuvių", u"Lietuva", u"Lithuanian"), - (u"lua", u"Luba-Lulua", u"", u""), (u"lv-LV", u"Latviešu", u"Latvijas Republika", u""), - (u"mfe", u"Kreol Morisien", u"", u""), - (u"mg", u"Malagasy", u"", u""), - (u"mi", u"Maori", u"", u""), + (u"mi", u"Reo Māori", u"", u"Maori"), (u"min", u"Minangkabau", u"", u"Minangkabau"), - (u"mk", u"Македонски", u"", u""), - (u"ml", u"മലയാളം", u"", u""), - (u"mn", u"Монгол", u"", u""), - (u"mr", u"मराठी", u"", u""), + (u"mk", u"Македонски", u"", u"Macedonian"), + (u"mn", u"Монгол", u"", u"Mongolian"), + (u"mr", u"मराठी", u"", u"Marathi"), (u"ms-MY", u"Bahasa Melayu", u"Malaysia", u"Malay"), - (u"mt", u"Malti", u"", u""), - (u"my", u"ဗမာ", u"", u""), + (u"mt", u"Malti", u"", u"Maltese"), (u"nb-NO", u"Norwegian Bokmål", u"Norge", u"Norwegian Bokmål"), - (u"ne", u"नेपाली", u"", u""), (u"nl", u"Nederlands", u"", u"Dutch"), (u"nl-BE", u"Nederlands", u"België", u"Dutch"), (u"nl-NL", u"Nederlands", u"Nederland", u"Dutch"), (u"nn", u"Nynorsk", u"", u"Norwegian"), (u"no-NO", u"Norsk", u"Norge", u"Norwegian"), - (u"nso", u"Northern Sotho", u"", u""), - (u"ny", u"Nyanja", u"", u""), - (u"nyn", u"Runyankore", u"", u""), - (u"oc", u"Occitan", u"", u""), - (u"om", u"Oromoo", u"", u""), - (u"or", u"ଓଡ଼ିଆ", u"", u""), - (u"pa", u"ਪੰਜਾਬੀ", u"", u""), - (u"pcm", u"Nigerian Pidgin", u"", u""), + (u"oc", u"Occitan", u"", u"Occitan"), + (u"or", u"Oriya", u"", u"Oriya"), + (u"pa", u"ਪੰਜਾਬੀ", u"", u"Panjabi"), (u"pl-PL", u"Polski", u"Rzeczpospolita Polska", u"Polish"), - (u"ps", u"پښتو", u"", u""), + (u"ps", u"Pushto", u"", u"Pushto"), (u"pt", u"Português", u"", u"Portuguese"), (u"pt-BR", u"Português", u"Brasil", u"Portuguese"), (u"pt-PT", u"Português", u"Portugal", u"Portuguese"), - (u"qu", u"Runasimi", u"", u""), - (u"rm", u"Rumantsch", u"", u""), - (u"rn", u"Ikirundi", u"", u""), (u"ro-RO", u"Română", u"România", u"Romanian"), (u"ru-RU", u"Русский", u"Россия", u"Russian"), - (u"rw", u"Kinyarwanda", u"", u""), - (u"sd", u"Sindhi", u"", u""), + (u"rw", u"Ikinyarwanda", u"", u"Kinyarwanda"), (u"sh", u"Srpskohrvatski / Српскохрватски", u"", u"Serbo-Croatian"), - (u"si", u"සිංහල", u"", u""), (u"sk-SK", u"Slovenčina", u"Slovenská republika", u"Slovak"), (u"sl", u"Slovenščina", u"", u"Slovenian"), - (u"sn", u"Chishona", u"", u""), - (u"so", u"Soomaali", u"", u""), - (u"sq", u"Shqip", u"", u""), (u"sr", u"Српски / Srpski", u"", u"Serbian"), - (u"st", u"Southern Sotho", u"", u""), - (u"su", u"Sundanese", u"", u""), (u"sv-SE", u"Svenska", u"Sverige", u"Swedish"), (u"sw", u"Kiswahili", u"", u""), - (u"ta", u"தமிழ்", u"", u""), - (u"te", u"తెలుగు", u"", u""), - (u"tg", u"Tajik", u"", u""), + (u"ta", u"தமிழ்", u"", u"Tamil"), (u"th-TH", u"ไทย", u"ไทย", u"Thai"), - (u"ti", u"ትግርኛ", u"", u""), - (u"tk", u"Turkmen", u"", u""), + (u"ti", u"ትግርኛ", u"", u"Tigrinya"), (u"tl-PH", u"Filipino", u"Pilipinas", u""), - (u"tlh", u"Klingon", u"", u""), - (u"tn", u"Tswana", u"", u""), - (u"to", u"Lea Fakatonga", u"", u""), (u"tr-TR", u"Türkçe", u"Türkiye", u"Turkish"), - (u"tt", u"Tatar", u"", u""), - (u"tum", u"Tumbuka", u"", u""), - (u"tw", u"Twi", u"", u""), - (u"ug", u"ئۇيغۇرچە", u"", u""), + (u"tt", u"Татарча", u"", u"Tatar"), (u"uk-UA", u"Українська", u"Україна", u"Ukrainian"), (u"ur", u"اردو", u"", u"Urdu"), (u"uz", u"O‘zbek", u"", u"Uzbek"), @@ -179,13 +122,10 @@ language_codes = ( (u"vo", u"Volapük", u"", u"Volapük"), (u"wa", u"Walon", u"", u"Walloon"), (u"war", u"Winaray", u"", u"Waray-Waray"), - (u"wo", u"Wolof", u"", u""), - (u"xh", u"Xhosa", u"", u""), - (u"yi", u"ייִדיש", u"", u""), - (u"yo", u"Èdè Yorùbá", u"", u""), + (u"xh", u"Xhosa", u"", u"Xhosa"), (u"zh", u"中文", u"", u"Chinese"), - (u"zh-CN", u"中文", u"中国", u"Chinese"), + (u"zh-CN", u"中文", u"中国", u""), (u"zh-HK", u"中文", u"香港", u"Chinese"), - (u"zh-TW", u"中文", u"台湾", u"Chinese"), - (u"zu", u"Isizulu", u"", u"") + (u"zh-TW", u"中文", u"台湾", u""), + (u"zu", u"Isi-Zulu", u"", u"Zulu") ) diff --git a/tests/unit/engines/test_bing.py b/tests/unit/engines/test_bing.py index 886584229..61f8629d0 100644 --- a/tests/unit/engines/test_bing.py +++ b/tests/unit/engines/test_bing.py @@ -86,3 +86,35 @@ class TestBingEngine(SearxTestCase): self.assertEqual(results[0]['title'], 'This should be the title') self.assertEqual(results[0]['url'], 'http://this.should.be.the.link/') self.assertEqual(results[0]['content'], 'This should be the content.') + + def test_fetch_supported_languages(self): + html = """""" + response = mock.Mock(text=html) + results = bing._fetch_supported_languages(response) + self.assertEqual(type(results), list) + self.assertEqual(len(results), 0) + + html = """ + + +
+
+
+
+
+
+
+
+
+
+
+ + + """ + response = mock.Mock(text=html) + languages = bing._fetch_supported_languages(response) + self.assertEqual(type(languages), list) + self.assertEqual(len(languages), 3) + self.assertIn('es', languages) + self.assertIn('pt-BR', languages) + self.assertIn('pt-PT', languages) diff --git a/tests/unit/engines/test_dailymotion.py b/tests/unit/engines/test_dailymotion.py index 368b3a7a5..72071af66 100644 --- a/tests/unit/engines/test_dailymotion.py +++ b/tests/unit/engines/test_dailymotion.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- from collections import defaultdict import mock from searx.engines import dailymotion @@ -72,3 +73,39 @@ class TestDailymotionEngine(SearxTestCase): results = dailymotion.response(response) self.assertEqual(type(results), list) self.assertEqual(len(results), 0) + + def test_fetch_supported_languages(self): + json = r""" + {"list":[{"code":"af","name":"Afrikaans","native_name":"Afrikaans", + "localized_name":"Afrikaans","display_name":"Afrikaans"}, + {"code":"ar","name":"Arabic","native_name":"\u0627\u0644\u0639\u0631\u0628\u064a\u0629", + "localized_name":"Arabic","display_name":"Arabic"}, + {"code":"la","name":"Latin","native_name":null, + "localized_name":"Latin","display_name":"Latin"} + ]} + """ + response = mock.Mock(text=json) + languages = dailymotion._fetch_supported_languages(response) + self.assertEqual(type(languages), dict) + self.assertEqual(len(languages), 3) + self.assertIn('af', languages) + self.assertIn('ar', languages) + self.assertIn('la', languages) + + self.assertEqual(type(languages['af']), dict) + self.assertEqual(type(languages['ar']), dict) + self.assertEqual(type(languages['la']), dict) + + self.assertIn('name', languages['af']) + self.assertIn('name', languages['ar']) + self.assertNotIn('name', languages['la']) + + self.assertIn('english_name', languages['af']) + self.assertIn('english_name', languages['ar']) + self.assertIn('english_name', languages['la']) + + self.assertEqual(languages['af']['name'], 'Afrikaans') + self.assertEqual(languages['af']['english_name'], 'Afrikaans') + self.assertEqual(languages['ar']['name'], u'العربية') + self.assertEqual(languages['ar']['english_name'], 'Arabic') + self.assertEqual(languages['la']['english_name'], 'Latin') diff --git a/tests/unit/engines/test_duckduckgo.py b/tests/unit/engines/test_duckduckgo.py index 2aeaa1880..7d6abad22 100644 --- a/tests/unit/engines/test_duckduckgo.py +++ b/tests/unit/engines/test_duckduckgo.py @@ -84,3 +84,17 @@ class TestDuckduckgoEngine(SearxTestCase): self.assertEqual(results[0]['title'], 'This is the title') self.assertEqual(results[0]['url'], u'http://this.should.be.the.link/ű') self.assertEqual(results[0]['content'], 'This should be the content.') + + def test_fetch_supported_languages(self): + js = """some code...regions:{ + "wt-wt":"All Results","ar-es":"Argentina","au-en":"Australia","at-de":"Austria","be-fr":"Belgium (fr)" + }some more code...""" + response = mock.Mock(text=js) + languages = duckduckgo._fetch_supported_languages(response) + self.assertEqual(type(languages), list) + self.assertEqual(len(languages), 5) + self.assertIn('wt-WT', languages) + self.assertIn('es-AR', languages) + self.assertIn('en-AU', languages) + self.assertIn('de-AT', languages) + self.assertIn('fr-BE', languages) diff --git a/tests/unit/engines/test_gigablast.py b/tests/unit/engines/test_gigablast.py index 0723b064c..74bf89333 100644 --- a/tests/unit/engines/test_gigablast.py +++ b/tests/unit/engines/test_gigablast.py @@ -89,3 +89,28 @@ class TestGigablastEngine(SearxTestCase): self.assertEqual(results[0]['title'], 'South by Southwest 2016') self.assertEqual(results[0]['url'], 'www.sxsw.com') self.assertEqual(results[0]['content'], 'This should be the content.') + + def test_fetch_supported_languages(self): + html = """""" + response = mock.Mock(text=html) + results = gigablast._fetch_supported_languages(response) + self.assertEqual(type(results), list) + self.assertEqual(len(results), 0) + + html = """ + + + + + + + + + + """ + response = mock.Mock(text=html) + languages = gigablast._fetch_supported_languages(response) + self.assertEqual(type(languages), list) + self.assertEqual(len(languages), 2) + self.assertIn('en', languages) + self.assertIn('fr', languages) diff --git a/tests/unit/engines/test_google.py b/tests/unit/engines/test_google.py index c83eb3bf0..0d56b1e7b 100644 --- a/tests/unit/engines/test_google.py +++ b/tests/unit/engines/test_google.py @@ -177,3 +177,60 @@ class TestGoogleEngine(SearxTestCase): self.assertEqual(results[0]['title'], '') self.assertEqual(results[0]['content'], '') self.assertEqual(results[0]['img_src'], 'https://this.is.the.image/image.jpg') + + def test_fetch_supported_languages(self): + html = """""" + response = mock.Mock(text=html) + languages = google._fetch_supported_languages(response) + self.assertEqual(type(languages), dict) + self.assertEqual(len(languages), 0) + + html = u""" + + + + + + + + + +
+ + + + + + + + +
+ + + """ + response = mock.Mock(text=html) + languages = google._fetch_supported_languages(response) + self.assertEqual(type(languages), dict) + self.assertEqual(len(languages), 3) + + self.assertIn('en', languages) + self.assertIn('zh-CN', languages) + self.assertIn('zh-TW', languages) + + self.assertEquals(type(languages['en']), dict) + self.assertEquals(type(languages['zh-CN']), dict) + self.assertEquals(type(languages['zh-TW']), dict) + + self.assertIn('name', languages['en']) + self.assertIn('name', languages['zh-CN']) + self.assertIn('name', languages['zh-TW']) + + self.assertEquals(languages['en']['name'], 'English') + self.assertEquals(languages['zh-CN']['name'], u'中文 (简体)') + self.assertEquals(languages['zh-TW']['name'], u'中文 (繁體)') diff --git a/tests/unit/engines/test_swisscows.py b/tests/unit/engines/test_swisscows.py index dbbc044da..27f33d70a 100644 --- a/tests/unit/engines/test_swisscows.py +++ b/tests/unit/engines/test_swisscows.py @@ -126,3 +126,30 @@ class TestSwisscowsEngine(SearxTestCase): self.assertEqual(results[2]['url'], 'http://de.wikipedia.org/wiki/Datei:This should.svg') self.assertEqual(results[2]['img_src'], 'http://ts2.mm.This/should.png') self.assertEqual(results[2]['template'], 'images.html') + + def test_fetch_supported_languages(self): + html = """""" + response = mock.Mock(text=html) + languages = swisscows._fetch_supported_languages(response) + self.assertEqual(type(languages), list) + self.assertEqual(len(languages), 0) + + html = """ + +
+
+
    +
  • +
  • +
  • +
+
+
+ + """ + response = mock.Mock(text=html) + languages = swisscows._fetch_supported_languages(response) + self.assertEqual(type(languages), list) + self.assertEqual(len(languages), 3) + self.assertIn('de-CH', languages) + self.assertIn('fr-CH', languages) diff --git a/tests/unit/engines/test_wikipedia.py b/tests/unit/engines/test_wikipedia.py index 0057277c5..988080b6a 100644 --- a/tests/unit/engines/test_wikipedia.py +++ b/tests/unit/engines/test_wikipedia.py @@ -164,3 +164,96 @@ class TestWikipediaEngine(SearxTestCase): self.assertEqual(len(results), 2) self.assertEqual(results[1]['infobox'], u'披頭四樂隊') self.assertIn(u'披头士乐队...', results[1]['content']) + + def test_fetch_supported_languages(self): + html = u"""""" + response = mock.Mock(text=html) + languages = wikipedia._fetch_supported_languages(response) + self.assertEqual(type(languages), dict) + self.assertEqual(len(languages), 0) + + html = u""" + + +
+
+

Table header

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
NLanguageLanguage (local)WikiArticles
2SwedishSvenskasv3000000
3CebuanoSinugboanong Binisayaceb3000000
+

Table header

+ + + + + + + + + + + + + + + + + + + +
NLanguageLanguage (local)WikiArticles
2Norwegian (Bokmål)Norsk (Bokmål)no100000
+
+
+ + + """ + response = mock.Mock(text=html) + languages = wikipedia._fetch_supported_languages(response) + self.assertEqual(type(languages), dict) + self.assertEqual(len(languages), 3) + + self.assertIn('sv', languages) + self.assertIn('ceb', languages) + self.assertIn('no', languages) + + self.assertEqual(type(languages['sv']), dict) + self.assertEqual(type(languages['ceb']), dict) + self.assertEqual(type(languages['no']), dict) + + self.assertIn('name', languages['sv']) + self.assertIn('english_name', languages['sv']) + self.assertIn('articles', languages['sv']) + + self.assertEqual(languages['sv']['name'], 'Svenska') + self.assertEqual(languages['sv']['english_name'], 'Swedish') + self.assertEqual(languages['sv']['articles'], 3000000) + self.assertEqual(languages['ceb']['name'], 'Sinugboanong Binisaya') + self.assertEqual(languages['ceb']['english_name'], 'Cebuano') + self.assertEqual(languages['ceb']['articles'], 3000000) + self.assertEqual(languages['no']['name'], u'Norsk (Bokmål)') + self.assertEqual(languages['no']['english_name'], u'Norwegian (Bokmål)') + self.assertEqual(languages['no']['articles'], 100000) diff --git a/tests/unit/engines/test_yahoo.py b/tests/unit/engines/test_yahoo.py index 303295e2f..82c4d99bb 100644 --- a/tests/unit/engines/test_yahoo.py +++ b/tests/unit/engines/test_yahoo.py @@ -147,3 +147,33 @@ class TestYahooEngine(SearxTestCase): results = yahoo.response(response) self.assertEqual(type(results), list) self.assertEqual(len(results), 0) + + def test_fetch_supported_languages(self): + html = """""" + response = mock.Mock(text=html) + results = yahoo._fetch_supported_languages(response) + self.assertEqual(type(results), list) + self.assertEqual(len(results), 0) + + html = """ + +
+
+ + + + + + + +
+
+ + """ + response = mock.Mock(text=html) + languages = yahoo._fetch_supported_languages(response) + self.assertEqual(type(languages), list) + self.assertEqual(len(languages), 3) + self.assertIn('ar', languages) + self.assertIn('zh-chs', languages) + self.assertIn('zh-cht', languages) diff --git a/utils/fetch_languages.py b/utils/fetch_languages.py index ae4a2def9..aed875daf 100644 --- a/utils/fetch_languages.py +++ b/utils/fetch_languages.py @@ -84,7 +84,7 @@ def fetch_supported_languages(): # write json file f = io.open(engines_languages_file, "w", encoding="utf-8") - f.write(unicode(dumps(engines_languages, indent=4, ensure_ascii=False, encoding="utf-8"))) + f.write(unicode(dumps(engines_languages, ensure_ascii=False, encoding="utf-8"))) f.close() @@ -110,18 +110,22 @@ def join_language_lists(): else: languages[locale] = {} - # get locales that have no name yet + # get locales that have no name or country yet for locale in languages.keys(): if not languages[locale].get('name'): - # try to get language and country names + # try to get language names name = languages.get(locale.split('-')[0], {}).get('name', None) if name: languages[locale]['name'] = name - languages[locale]['country'] = get_country_name(locale) or '' languages[locale]['english_name'] = languages.get(locale.split('-')[0], {}).get('english_name', '') else: # filter out locales with no name del languages[locale] + continue + + # try to get country name + if locale.find('-') > 0 and not languages[locale].get('country'): + languages[locale]['country'] = get_country_name(locale) or '' # Remove countryless language if language is featured in only one country.