Browse Source

Add country names in language list.

marc 8 years ago
parent
commit
922d51bf0c
2 changed files with 255 additions and 349 deletions
  1. 201 339
      searx/languages.py
  2. 54 10
      utils/update_languages.py

+ 201 - 339
searx/languages.py

@@ -3,358 +3,220 @@
 # this file is generated automatically by utils/update_search_languages.py
 
 language_codes = (
-    (u"gv", u"Gaelg", u"", u"Manx"),
-    (u"sco", u"Scots", u"", u"Scots"),
-    (u"scn", u"Sicilianu", u"", u"Sicilian"),
-    (u"gu", u"ગુજરાતી", u"", u"Gujarati"),
-    (u"gd", u"Gàidhlig", u"", u"Scottish Gaelic"),
-    (u"ga", u"Gaeilge", u"", u"Irish"),
-    (u"gn", u"Avañe'ẽ", u"", u"Guarani"),
-    (u"gl", u"Galego", u"", u"Galician"),
+    (u"ach", u"Acoli", u"", u""),
+    (u"af", u"Afrikaans", u"", u"Afrikaans"),
+    (u"ak", u"Akan", u"", u""),
     (u"als", u"Alemannisch", u"", u"Alemannic"),
-    (u"lt-LT", u"Lietuvių", u"", u"Lithuanian"),
-    (u"vep", u"Vepsän", u"", u"Vepsian"),
-    (u"ty", u"Reo Mā`ohi", u"", u"Tahitian"),
-    (u"tw", u"Twi", u"", u"Twi"),
-    (u"tt", u"Tatarça / Татарча", u"", u"Tatar"),
-    (u"tr", u"Türkçe", u"", u"Turkish"),
-    (u"ts", u"Xitsonga", u"", u"Tsonga"),
-    (u"tn", u"Setswana", u"", u"Tswana"),
-    (u"to", u"faka Tonga", u"", u"Tongan"),
-    (u"tl", u"Tagalog", u"", u"Tagalog"),
-    (u"vec", u"Vèneto", u"", u"Venetian"),
-    (u"th", u"ไทย", u"", u"Thai"),
-    (u"ti", u"ትግርኛ", u"", u"Tigrinya"),
-    (u"tg", u"Тоҷикӣ", u"", u"Tajik"),
-    (u"te", u"తెలుగు", u"", u"Telugu"),
-    (u"ta", u"தமிழ்", u"", u"Tamil"),
-    (u"lrc", u"لۊری شومالی", u"", u"Northern Luri"),
-    (u"en-NZ", u"English", u"", u"English"),
-    (u"got", u"𐌲𐌿𐍄𐌹𐍃𐌺", u"", u"Gothic"),
-    (u"vls", u"West-Vlams", u"", u"West Flemish"),
-    (u"bxr", u"Буряад", u"", u"Buryat"),
-    (u"diq", u"Zazaki", u"", u"Zazaki"),
-    (u"zh", u"中文", u"", u"Chinese"),
-    (u"pms", u"Piemontèis", u"", u"Piedmontese"),
-    (u"za", u"Cuengh", u"", u"Zhuang"),
-    (u"zh-HK", u"中文", u"", u"Chinese"),
-    (u"zu", u"isiZulu", u"", u"Zulu"),
-    (u"tet", u"Tetun", u"", u"Tetum"),
-    (u"zh-CN", u"中文 (简体)", u"", u""),
-    (u"new", u"नेपाल भाषा", u"", u"Newar"),
-    (u"ro-RO", u"Română", u"", u"Romanian"),
-    (u"lez", u"Лезги чІал (Lezgi č’al)", u"", u"Lezgian"),
-    (u"glk", u"گیلکی", u"", u"Gilaki"),
-    (u"ko-KR", u"한국어", u"", u"Korean"),
-    (u"id-ID", u"Bahasa Indonesia", u"", u"Indonesian"),
-    (u"chr", u"ᏣᎳᎩ", u"", u"Cherokee"),
-    (u"vi", u"Tiếng Việt", u"", u"Vietnamese"),
-    (u"chy", u"Tsetsêhestâhese", u"", u"Cheyenne"),
-    (u"tk", u"تركمن / Туркмен", u"", u"Turkmen"),
-    (u"da-DK", u"Dansk", u"", u"Danish"),
-    (u"pfl", u"Pälzisch", u"", u"Palatinate German"),
-    (u"hu-HU", u"Magyar", u"", u"Hungarian"),
-    (u"mg", u"Malagasy", u"", u"Malagasy"),
-    (u"ml", u"മലയാളം", u"", u"Malayalam"),
-    (u"mo", u"Молдовеняскэ", u"", u"Moldovan"),
-    (u"mn", u"Монгол", u"", u"Mongolian"),
-    (u"mi", u"Māori", u"", u"Maori"),
-    (u"mk", u"Македонски", u"", u"Macedonian"),
-    (u"mt", u"Malti", u"", u"Maltese"),
-    (u"ms", u"Bahasa Melayu", u"", u"Malay"),
-    (u"mr", u"मराठी", u"", u"Marathi"),
-    (u"mwl", u"Mirandés", u"", u"Mirandese"),
-    (u"my", u"မြန်မာဘာသာ", u"", u"Burmese"),
-    (u"en-PH", u"English", u"", u"English"),
-    (u"srn", u"Sranantongo", u"", u"Sranan"),
-    (u"pl-PL", u"Polski", u"", u"Polish"),
-    (u"sl-SL", u"Slovenščina", u"", u"Slovenian"),
-    (u"csb", u"Kaszëbsczi", u"", u"Kashubian"),
-    (u"nyn", u"Runyankore", u"", u""),
-    (u"ig", u"Igbo", u"", u"Igbo"),
-    (u"fr", u"Français", u"", u"French"),
-    (u"lad", u"Dzhudezmo", u"", u"Ladino"),
-    (u"fy", u"Frysk", u"", u"West Frisian"),
-    (u"fa", u"فارسی", u"", u"Persian"),
-    (u"ff", u"Fulfulde", u"", u"Fula"),
-    (u"mai", u"मैथिली", u"", u"Maithili"),
-    (u"fi", u"Suomi", u"", u"Finnish"),
-    (u"fj", u"Na Vosa Vakaviti", u"", u"Fijian"),
-    (u"fo", u"Føroyskt", u"", u"Faroese"),
-    (u"ss", u"SiSwati", u"", u"Swati"),
-    (u"sr", u"Српски / Srpski", u"", u"Serbian"),
-    (u"sq", u"Shqip", u"", u"Albanian"),
-    (u"sw", u"Kiswahili", u"", u"Swahili"),
-    (u"sv", u"Svenska", u"", u"Swedish"),
-    (u"su", u"Basa Sunda", u"", u"Sundanese"),
-    (u"st", u"Sesotho", u"", u"Sesotho"),
-    (u"sk", u"Slovenčina", u"", u"Slovak"),
-    (u"si", u"සිංහල", u"", u"Sinhalese"),
-    (u"sh", u"Srpskohrvatski / Српскохрватски", u"", u"Serbo-Croatian"),
-    (u"so", u"Soomaali", u"", u"Somali"),
-    (u"sn", u"chiShona", u"", u"Shona"),
-    (u"sm", u"Gagana Samoa", u"", u"Samoan"),
-    (u"sl", u"Slovenščina", u"", u"Slovenian"),
-    (u"sc", u"Sardu", u"", u"Sardinian"),
-    (u"pt-BR", u"português (Brasil)", u"", u""),
-    (u"sa", u"संस्कृतम्", u"", u"Sanskrit"),
-    (u"he-IL", u"עברית", u"", u"Hebrew"),
-    (u"se", u"Sámegiella", u"", u"Northern Sami"),
-    (u"sd", u"سنڌي ،सिन्ध", u"", u"Sindhi"),
-    (u"fr-CH", u"Français", u"", u"French"),
-    (u"zea", u"Zeêuws", u"", u"Zeelandic"),
-    (u"it-CH", u"Italiano", u"", u"Italian"),
-    (u"wuu", u"吴语", u"", u"Wu"),
-    (u"fr-CA", u"Français", u"", u"French"),
-    (u"kbd", u"Адыгэбзэ (Adighabze)", u"", u"Kabardian Circassian"),
-    (u"no-NO", u"Norsk (Bokmål)", u"", u"Norwegian (Bokmål)"),
-    (u"ca-ES", u"Català", u"", u"Catalan"),
-    (u"lg", u"Luganda", u"", u"Luganda"),
-    (u"lb", u"Lëtzebuergesch", u"", u"Luxembourgish"),
-    (u"la", u"Latina", u"", u"Latin"),
-    (u"ln", u"Lingala", u"", u"Lingala"),
-    (u"lo", u"ລາວ", u"", u"Lao"),
-    (u"de-CH", u"Deutsch", u"", u"German"),
-    (u"li", u"Limburgs", u"", u"Limburgish"),
-    (u"lv", u"Latviešu", u"", u"Latvian"),
-    (u"lt", u"Lietuvių", u"", u"Lithuanian"),
-    (u"pcm", u"Nigerian Pidgin", u"", u""),
-    (u"pcd", u"Picard", u"", u"Picard"),
-    (u"yi", u"ייִדיש", u"", u"Yiddish"),
-    (u"ceb", u"Sinugboanong Binisaya", u"", u"Cebuano"),
-    (u"yo", u"Yorùbá", u"", u"Yoruba"),
-    (u"ru-RU", u"Русский", u"", u"Russian"),
-    (u"bar", u"Boarisch", u"", u"Bavarian"),
-    (u"nov", u"Novial", u"", u"Novial"),
-    (u"sr-ME", u"srpski (Crna Gora)", u"", u""),
-    (u"es-CL", u"Español", u"", u"Spanish"),
-    (u"es-CO", u"Español", u"", u"Spanish"),
-    (u"nl-NL", u"Nederlands", u"", u"Dutch"),
-    (u"el", u"Ελληνικά", u"", u"Greek"),
-    (u"eo", u"Esperanto", u"", u"Esperanto"),
-    (u"en", u"English", u"", u"English"),
-    (u"ee", u"Eʋegbe", u"", u"Ewe"),
-    (u"mdf", u"Мокшень (Mokshanj Kälj)", u"", u"Moksha"),
-    (u"eu", u"Euskara", u"", u"Basque"),
-    (u"et", u"Eesti", u"", u"Estonian"),
-    (u"es", u"Español", u"", u"Spanish"),
-    (u"gom", u"गोवा कोंकणी / Gova Konknni", u"", u"Goan Konkani"),
-    (u"ru", u"Русский", u"", u"Russian"),
-    (u"rw", u"Ikinyarwanda", u"", u"Kinyarwanda"),
-    (u"rm", u"Rumantsch", u"", u"Romansh"),
-    (u"rn", u"Kirundi", u"", u"Kirundi"),
-    (u"ro", u"Română", u"", u"Romanian"),
-    (u"dsb", u"Dolnoserbski", u"", u"Lower Sorbian"),
+    (u"am", u"አማርኛ", u"", u"Amharic"),
+    (u"an", u"Aragonés", u"", u"Aragonese"),
+    (u"ar-SA", u"العربية", u"المملكة العربية السعودية", u"Arabic"),
+    (u"arz", u"مصرى (Maṣri)", u"", u"Egyptian Arabic"),
     (u"ast", u"Asturianu", u"", u"Asturian"),
-    (u"lmo", u"Lumbaart", u"", u"Lombard"),
-    (u"ltg", u"Latgaļu", u"", u"Latgalian"),
-    (u"xh", u"isiXhosa", u"", u"Xhosa"),
-    (u"en-CA", u"English", u"", u"English"),
-    (u"koi", u"Перем Коми (Perem Komi)", u"", u"Komi-Permyak"),
-    (u"tr-TR", u"Türkçe", u"", u"Turkish"),
-    (u"pnt", u"Ποντιακά", u"", u"Pontic"),
-    (u"fi-FI", u"Suomi", u"", u"Finnish"),
-    (u"pnb", u"شاہ مکھی پنجابی (Shāhmukhī Pañjābī)", u"", u"Western Punjabi"),
-    (u"ar-SA", u"العربية", u"", u"Arabic"),
-    (u"bem", u"Ichibemba", u"", u""),
-    (u"en-ZA", u"English", u"", u"English"),
-    (u"stq", u"Seeltersk", u"", u"Saterland Frisian"),
-    (u"ang", u"Englisc", u"", u"Anglo-Saxon"),
-    (u"lbe", u"Лакку", u"", u"Lak"),
-    (u"min", u"Minangkabau", u"", u"Minangkabau"),
-    (u"es-US", u"Español", u"", u"Spanish"),
-    (u"lij", u"Líguru", u"", u"Ligurian"),
-    (u"kab", u"Taqbaylit", u"", u"Kabyle"),
-    (u"kaa", u"Qaraqalpaqsha", u"", u"Karakalpak"),
-    (u"fr-FR", u"Français", u"", u"French"),
-    (u"tyv", u"Тыва", u"", u"Tuvan"),
-    (u"ka", u"ქართული", u"", u"Georgian"),
-    (u"kg", u"KiKongo", u"", u"Kongo"),
-    (u"ckb", u"Soranî / کوردی", u"", u"Sorani"),
-    (u"kk", u"Қазақша", u"", u"Kazakh"),
-    (u"sg", u"Sängö", u"", u"Sango"),
-    (u"ki", u"Gĩkũyũ", u"", u"Kikuyu"),
-    (u"ko", u"한국어", u"", u"Korean"),
-    (u"kn", u"ಕನ್ನಡ", u"", u"Kannada"),
-    (u"tpi", u"Tok Pisin", u"", u"Tok Pisin"),
-    (u"kl", u"Kalaallisut", u"", u"Greenlandic"),
-    (u"ks", u"कश्मीरी / كشميري", u"", u"Kashmiri"),
-    (u"ext", u"Estremeñu", u"", u"Extremaduran"),
-    (u"kw", u"Kernewek/Karnuack", u"", u"Cornish"),
-    (u"kv", u"Коми", u"", u"Komi"),
-    (u"mrj", u"Кырык Мары (Kyryk Mary)", u"", u"Hill Mari"),
-    (u"ky", u"Кыргызча", u"", u"Kirghiz"),
-    (u"szl", u"Ślůnski", u"", u"Silesian"),
-    (u"cdo", u"Mìng-dĕ̤ng-ngṳ̄", u"", u"Min Dong"),
-    (u"en-GB", u"English", u"", u"English"),
-    (u"xmf", u"მარგალური (Margaluri)", u"", u"Mingrelian"),
-    (u"jam", u"Jamaican Creole English", u"", u"Patois"),
-    (u"udm", u"Удмурт кыл", u"", u"Udmurt"),
-    (u"ksh", u"Ripoarisch", u"", u"Ripuarian"),
-    (u"sl-SI", u"Slovenščina", u"", u"Slovenian"),
-    (u"ms-MY", u"Bahasa Melayu", u"", u"Malay"),
-    (u"de", u"Deutsch", u"", u"German"),
-    (u"da", u"Dansk", u"", u"Danish"),
-    (u"dz", u"ཇོང་ཁ", u"", u"Dzongkha"),
-    (u"hif", u"Fiji Hindi", u"", u"Fiji Hindi"),
-    (u"dv", u"ދިވެހިބަސް", u"", u"Divehi"),
-    (u"crs", u"Seychellois Creole", u"", u""),
-    (u"qu", u"Runa Simi", u"", u"Quechua"),
-    (u"eml", u"Emiliàn e rumagnòl", u"", u"Emilian-Romagnol"),
+    (u"az", u"Azərbaycanca", u"", u"Azerbaijani"),
+    (u"azb", u"تۆرکجه", u"", u"South Azerbaijani"),
+    (u"ba", u"Башҡорт", u"", u"Bashkir"),
     (u"ban", u"Balinese", u"", u""),
-    (u"crh", u"Qırımtatarca", u"", u"Crimean Tatar"),
-    (u"arz", u"مصرى (Maṣri)", u"", u"Egyptian Arabic"),
-    (u"rmy", u"romani - रोमानी", u"", u"Romani"),
-    (u"arc", u"ܐܪܡܝܐ", u"", u"Aramaic"),
-    (u"th-TH", u"ไทย", u"", u"Thai"),
-    (u"lua", u"Luba-Lulua", u"", u""),
-    (u"wa", u"Walon", u"", u"Walloon"),
-    (u"wo", u"Wolof", u"", u"Wolof"),
-    (u"jv", u"Basa Jawa", u"", u"Javanese"),
-    (u"fr-BE", u"Français", u"", u"French"),
-    (u"tum", u"chiTumbuka", u"", u"Tumbuka"),
-    (u"ja", u"日本語", u"", u"Japanese"),
-    (u"pt-PT", u"português (Portugal)", u"", u""),
-    (u"ilo", u"Ilokano", u"", u"Ilokano"),
-    (u"tlh", u"Klingon", u"", u""),
-    (u"pdc", u"Deitsch", u"", u"Pennsylvania German"),
-    (u"ch", u"Chamoru", u"", u"Chamorro"),
-    (u"co", u"Corsu", u"", u"Corsican"),
+    (u"bar", u"Boarisch", u"", u"Bavarian"),
+    (u"be", u"Беларуская", u"", u"Belarusian"),
+    (u"bem", u"Ichibemba", u"", u""),
+    (u"bg-BG", u"Български", u"България", u"Bulgarian"),
+    (u"bn", u"বাংলা", u"", u"Bengali"),
+    (u"bpy", u"ইমার ঠার/বিষ্ণুপ্রিয়া মণিপুরী", u"", u"Bishnupriya Manipuri"),
+    (u"br", u"Brezhoneg", u"", u"Breton"),
+    (u"bs", u"Bosanski", u"", u"Bosnian"),
+    (u"bug", u"Basa Ugi", u"", u"Buginese"),
     (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"cy", u"Cymraeg", u"", u"Welsh"),
-    (u"sah", u"Саха тыла (Saxa Tyla)", u"", u"Sakha"),
-    (u"cs", u"Čeština", u"", u"Czech"),
-    (u"cr", u"Nehiyaw", u"", u"Cree"),
-    (u"bg-BG", u"Български", u"", u"Bulgarian"),
+    (u"ceb", u"Sinugboanong Binisaya", u"", u"Cebuano"),
+    (u"chr", u"ᏣᎳᎩ", u"", u""),
+    (u"ckb", u"Soranî / کوردی", u"", u"Sorani"),
+    (u"co", u"Corsican", u"", u""),
+    (u"crs", u"Seychellois Creole", u"", u""),
+    (u"cs-CZ", u"Čeština", u"Česko", u"Czech"),
     (u"cv", u"Чăваш", u"", u"Chuvash"),
-    (u"cu", u"Словѣньскъ", u"", u"Old Church Slavonic"),
-    (u"ps", u"پښتو", u"", u"Pashto"),
-    (u"pt", u"Português", u"", u"Portuguese"),
-    (u"vi-VN", u"Tiếng Việt", u"", u"Vietnamese"),
-    (u"frr", u"Nordfriisk", u"", u"North Frisian"),
-    (u"frp", u"Arpitan", u"", u"Franco-Provençal"),
-    (u"xal", u"Хальмг", u"", u"Kalmyk"),
-    (u"pi", u"पाऴि", u"", u"Pali"),
-    (u"ak", u"Akana", u"", u"Akan"),
-    (u"pl", u"Polski", u"", u"Polish"),
-    (u"nrm", u"Nouormand/Normaund", u"", u"Norman"),
-    (u"en-US", u"English", u"", u"English"),
-    (u"gan", u"贛語", u"", u"Gan"),
-    (u"gag", u"Gagauz", u"", u"Gagauz"),
-    (u"an", u"Aragonés", u"", u"Aragonese"),
+    (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"),
+    (u"en-CA", u"English", u"Canada", u"English"),
+    (u"en-GB", u"English", u"United Kingdom", u"English"),
+    (u"en-ID", u"English", u"Indonesia", u"English"),
+    (u"en-IE", u"English", u"Ireland", u"English"),
+    (u"en-IN", u"English", u"India", u"English"),
+    (u"en-MY", u"English", u"Malaysia", u"English"),
+    (u"en-NZ", u"English", u"New Zealand", u"English"),
+    (u"en-PH", u"English", u"Philippines", u"English"),
+    (u"en-SG", u"English", u"Singapore", u"English"),
+    (u"en-US", u"English", u"United States", u"English"),
+    (u"en-ZA", u"English", u"South Africa", u"English"),
+    (u"eo", u"Esperanto", u"", u"Esperanto"),
+    (u"es", u"Español", u"", u"Spanish"),
+    (u"es-AR", u"Español", u"Argentina", u"Spanish"),
+    (u"es-CL", u"Español", u"Chile", u"Spanish"),
+    (u"es-CO", u"Español", u"Colombia", u"Spanish"),
+    (u"es-ES", u"Español", u"España", u"Spanish"),
+    (u"es-MX", u"Español", u"México", u"Spanish"),
+    (u"es-PE", u"Español", u"Perú", u"Spanish"),
+    (u"es-US", u"Español", u"Estados Unidos", u"Spanish"),
+    (u"et-EE", u"Eesti", u"Eesti", u"Estonian"),
+    (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"Faroese"),
+    (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"Frysk", u"", u"West Frisian"),
+    (u"ga", u"Gaeilge", u"", u"Irish"),
     (u"gaa", u"Ga", u"", u""),
-    (u"fur", u"Furlan", u"", u"Friulian"),
-    (u"es-PE", u"Español", u"", u"Spanish"),
-    (u"tl-PH", u"Tagalog", u"", u"Tagalog"),
-    (u"en-IN", u"English", u"", u"English"),
-    (u"ve", u"Tshivenda", u"", u"Venda"),
-    (u"en-ID", u"English", u"", u"English"),
-    (u"en-IE", u"English", u"", u"English"),
+    (u"gd", u"Gàidhlig", u"", u"Scottish Gaelic"),
+    (u"gl", u"Galego", u"", u"Galician"),
+    (u"gn", u"Guarani", u"", u""),
+    (u"gu", u"ગુજરાતી", u"", u"Gujarati"),
+    (u"ha", u"Hausa", u"", u""),
+    (u"haw", u"ʻŌlelo HawaiʻI", u"", u""),
+    (u"he-IL", u"עברית", u"ישראל", u"Hebrew"),
+    (u"hi", u"हिन्दी", u"", u"Hindi"),
+    (u"hr-HR", u"Hrvatski", u"Hrvatska", u"Croatian"),
+    (u"hsb", u"Hornjoserbsce", u"", u"Upper Sorbian"),
+    (u"ht", u"Krèyol ayisyen", u"", u"Haitian"),
+    (u"hu-HU", u"Magyar", u"Magyarország", u"Hungarian"),
+    (u"hy", u"Հայերեն", u"", u"Armenian"),
+    (u"ia", u"Interlingua", u"", u"Interlingua"),
+    (u"id-ID", u"Bahasa Indonesia", u"Indonesia", u"Indonesian"),
+    (u"ig", u"Igbo", u"", u""),
+    (u"io", u"Ido", u"", u"Ido"),
     (u"is", u"Íslenska", u"", u"Icelandic"),
-    (u"iu", u"ᐃᓄᒃᑎᑐᑦ", u"", u"Inuktitut"),
     (u"it", u"Italiano", u"", u"Italian"),
+    (u"it-CH", u"Italiano", u"Svizzera", u"Italian"),
+    (u"it-IT", u"Italiano", u"Italia", u"Italian"),
     (u"iw", u"עברית", u"", u""),
-    (u"vo", u"Volapük", u"", u"Volapük"),
-    (u"ik", u"Iñupiak", u"", u"Inupiak"),
-    (u"io", u"Ido", u"", u"Ido"),
-    (u"ia", u"Interlingua", u"", u"Interlingua"),
-    (u"ja-JP", u"日本語", u"", u"Japanese"),
-    (u"ie", u"Interlingue", u"", u"Interlingue"),
-    (u"id", u"Bahasa Indonesia", u"", u"Indonesian"),
-    (u"nds-nl", u"Nedersaksisch", u"", u"Dutch Low Saxon"),
-    (u"pap", u"Papiamentu", u"", u"Papiamentu"),
-    (u"pag", u"Pangasinan", u"", u"Pangasinan"),
-    (u"pam", u"Kapampangan", u"", u"Kapampangan"),
-    (u"nl", u"Nederlands", u"", u"Dutch"),
+    (u"ja-JP", u"日本語", u"日本", u"Japanese"),
+    (u"jv", u"Basa Jawa", u"", u"Javanese"),
+    (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"Kannada"),
+    (u"ko-KR", u"한국어", u"대한민국", u"Korean"),
+    (u"kri", u"Krio (Sierra Leone)", u"", u""),
+    (u"ku", u"Kurdî / كوردی", u"", u"Kurdish"),
+    (u"ky", u"Кыргызча", u"", u"Kirghiz"),
+    (u"la", u"Latina", u"", u"Latin"),
+    (u"lb", u"Lëtzebuergesch", u"", u"Luxembourgish"),
+    (u"lg", u"Luganda", u"", u""),
+    (u"li", u"Limburgs", u"", u"Limburgish"),
+    (u"lmo", u"Lumbaart", u"", u"Lombard"),
+    (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"Latvian"),
+    (u"mfe", u"Kreol Morisien", u"", u""),
+    (u"mg", u"Malagasy", u"", u"Malagasy"),
+    (u"mi", u"Maori", u"", u""),
+    (u"min", u"Minangkabau", u"", u"Minangkabau"),
+    (u"mk", u"Македонски", u"", u"Macedonian"),
+    (u"ml", u"മലയാളം", u"", u"Malayalam"),
+    (u"mn", u"Монгол", u"", u"Mongolian"),
+    (u"mr", u"मराठी", u"", u"Marathi"),
+    (u"mrj", u"Кырык Мары (Kyryk Mary)", u"", u"Hill Mari"),
+    (u"ms-MY", u"Bahasa Melayu", u"Malaysia", u"Malay"),
+    (u"mt", u"Malti", u"", u""),
+    (u"my", u"မြန်မာဘာသာ", u"", u"Burmese"),
     (u"mzn", u"مَزِروني", u"", u"Mazandarani"),
-    (u"nl-BE", u"Nederlands", u"", u"Dutch"),
-    (u"sk-SK", u"Slovenčina", u"", u"Slovak"),
-    (u"zh-TW", u"中文 (繁體)", u"", u""),
-    (u"es-MX", u"Español", u"", u"Spanish"),
-    (u"de-DE", u"Deutsch", u"", u"German"),
-    (u"jbo", u"Lojban", u"", u"Lojban"),
-    (u"mfe", u"kreol morisien", u"", u""),
-    (u"tcy", u"Tulu", u"", u"ತುಳು"),
-    (u"hak", u"Hak-kâ-fa / 客家話", u"", u"Hakka"),
-    (u"ny", u"Chichewa", u"", u"Chichewa"),
-    (u"ady", u"Адыгэбзэ", u"", u"Adyghe"),
-    (u"haw", u"Hawai`i", u"", u"Hawaiian"),
-    (u"el-GR", u"Ελληνικά", u"", u"Greek"),
-    (u"bpy", u"ইমার ঠার/বিষ্ণুপ্রিয়া মণিপুরী", u"", u"Bishnupriya Manipuri"),
-    (u"mhr", u"Олык Марий (Olyk Marij)", u"", u"Meadow Mari"),
-    (u"ca-CT", u"Català", u"", u"Catalan"),
-    (u"en-MY", u"English", u"", u"English"),
-    (u"olo", u"Livvi-Karelian", u"", u"Livvinkarjala"),
-    (u"sv-SE", u"Svenska", u"", u"Swedish"),
-    (u"de-AT", u"Deutsch", u"", u"German"),
-    (u"hsb", u"Hornjoserbsce", u"", u"Upper Sorbian"),
-    (u"be", u"Беларуская", u"", u"Belarusian"),
-    (u"bg", u"Български", u"", u"Bulgarian"),
-    (u"ba", u"Башҡорт", u"", u"Bashkir"),
-    (u"bm", u"Bamanankan", u"", u"Bambara"),
-    (u"bn", u"বাংলা", u"", u"Bengali"),
-    (u"bo", u"བོད་སྐད", u"", u"Tibetan"),
-    (u"bh", u"भोजपुरी", u"", u"Bihari"),
-    (u"bi", u"Bislama", u"", u"Bislama"),
-    (u"rue", u"Русиньскый", u"", u"Rusyn"),
-    (u"et-EE", u"Eesti", u"", u"Estonian"),
-    (u"br", u"Brezhoneg", u"", u"Breton"),
-    (u"bs", u"Bosanski", u"", u"Bosnian"),
-    (u"om", u"Oromoo", u"", u"Oromo"),
-    (u"ace", u"Bahsa Acèh", u"", u"Acehnese"),
-    (u"es-AR", u"Español", u"", u"Spanish"),
-    (u"ach", u"Acoli", u"", u""),
+    (u"nah", u"Nāhuatl", u"", u"Nahuatl"),
+    (u"nap", u"Nnapulitano", u"", u"Neapolitan"),
+    (u"nds-nl", u"Plattdüütsch", u"Nedderlannen", u"Low Saxon"),
+    (u"ne", u"नेपाली", u"", u"Nepali"),
+    (u"new", u"नेपाल भाषा", u"", u"Newar"),
+    (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 (Nynorsk)"),
+    (u"no-NO", u"Norsk (Bokmål)", u"Norge", u"Norwegian (Bokmål)"),
+    (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"Occitan"),
-    (u"kri", u"Krio (Sierra Leone)", u"", u""),
-    (u"krc", u"Къарачай-Малкъар (Qarachay-Malqar)", u"", u"Karachay-Balkar"),
-    (u"nds", u"Plattdüütsch", u"", u"Low Saxon"),
-    (u"os", u"Иронау", u"", u"Ossetian"),
+    (u"om", u"Oromoo", u"", u""),
     (u"or", u"ଓଡ଼ିଆ", u"", u"Oriya"),
-    (u"nso", u"Sepedi", u"", u"Northern Sotho"),
-    (u"bjn", u"Bahasa Banjar", u"", u"Banjar"),
+    (u"os", u"Иронау", u"", u"Ossetian"),
     (u"pa", u"ਪੰਜਾਬੀ", u"", u"Punjabi"),
-    (u"loz", u"Lozi", u"", u""),
-    (u"war", u"Winaray", u"", u"Waray-Waray"),
-    (u"hy", u"Հայերեն", u"", u"Armenian"),
-    (u"hr", u"Hrvatski", u"", u"Croatian"),
-    (u"ht", u"Krèyol ayisyen", u"", u"Haitian"),
-    (u"hu", u"Magyar", u"", u"Hungarian"),
-    (u"hi", u"हिन्दी", u"", u"Hindi"),
-    (u"ha", u"هَوُسَ", u"", u"Hausa"),
-    (u"bug", u"Basa Ugi", u"", u"Buginese"),
-    (u"he", u"עברית", u"", u"Hebrew"),
-    (u"hr-HR", u"Hrvatski", u"", u"Croatian"),
-    (u"uz", u"O‘zbek", u"", u"Uzbek"),
-    (u"azb", u"تۆرکجه", u"", u"South Azerbaijani"),
+    (u"pcm", u"Nigerian Pidgin", u"", u""),
+    (u"pl-PL", u"Polski", u"Rzeczpospolita Polska", u"Polish"),
+    (u"pms", u"Piemontèis", u"", u"Piedmontese"),
+    (u"pnb", u"شاہ مکھی پنجابی (Shāhmukhī Pañjābī)", u"", u"Western Punjabi"),
+    (u"ps", u"پښتو", u"", u""),
+    (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"Runa Simi", u"", u"Quechua"),
+    (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"sa", u"संस्कृतम्", u"", u"Sanskrit"),
+    (u"sah", u"Саха тыла (Saxa Tyla)", u"", u"Sakha"),
+    (u"scn", u"Sicilianu", u"", u"Sicilian"),
+    (u"sco", u"Scots", u"", u"Scots"),
+    (u"sd", u"Sindhi", u"", u""),
+    (u"sh", u"Srpskohrvatski / Српскохрватски", u"", u"Serbo-Croatian"),
+    (u"si", u"සිංහල", u"", u"Sinhalese"),
+    (u"sk-SK", u"Slovenčina", u"Slovenská republika", u"Slovak"),
+    (u"sl", u"Slovenščina", u"", u"Slovenian"),
+    (u"sl-SI", u"Slovenščina", u"Slovenija", u"Slovenian"),
+    (u"sl-SL", u"Slovenščina", u"Sierra Leone", u"Slovenian"),
+    (u"sn", u"Chishona", u"", u""),
+    (u"so", u"Soomaali", u"", u""),
+    (u"sq", u"Shqip", u"", u"Albanian"),
+    (u"sr-ME", u"Српски / Srpski", u"Црна Гора", u"Serbian"),
+    (u"st", u"Southern Sotho", u"", u""),
+    (u"su", u"Basa Sunda", u"", u"Sundanese"),
+    (u"sv-SE", u"Svenska", u"Sverige", u"Swedish"),
+    (u"sw", u"Kiswahili", u"", u"Swahili"),
+    (u"ta", u"தமிழ்", u"", u"Tamil"),
+    (u"te", u"తెలుగు", u"", u"Telugu"),
+    (u"tg", u"Тоҷикӣ", u"", u"Tajik"),
+    (u"th-TH", u"ไทย", u"ไทย", u"Thai"),
+    (u"ti", u"ትግርኛ", u"", u""),
+    (u"tk", u"Turkmen", u"", u""),
+    (u"tl-PH", u"Tagalog", u"Pilipinas", u"Tagalog"),
+    (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ça / Татарча", u"", u"Tatar"),
+    (u"tum", u"Tumbuka", u"", u""),
+    (u"tw", u"Twi", u"", u""),
+    (u"ug", u"ئۇيغۇرچە", u"", u""),
+    (u"uk-UA", u"Українська", u"Україна", u"Ukrainian"),
     (u"ur", u"اردو", u"", u"Urdu"),
-    (u"uk", u"Українська", u"", u"Ukrainian"),
-    (u"ug", u"ئۇيغۇر تىلى", u"", u"Uyghur"),
-    (u"pih", u"Norfuk", u"", u"Norfolk"),
-    (u"ab", u"Аҧсуа", u"", u"Abkhazian"),
-    (u"af", u"Afrikaans", u"", u"Afrikaans"),
-    (u"it-IT", u"Italiano", u"", u"Italian"),
-    (u"am", u"አማርኛ", u"", u"Amharic"),
-    (u"myv", u"Эрзянь (Erzjanj Kelj)", u"", u"Erzya"),
-    (u"as", u"অসমীয়া", u"", u"Assamese"),
-    (u"ar", u"العربية", u"", u"Arabic"),
-    (u"km", u"ភាសាខ្មែរ", u"", u"Khmer"),
-    (u"uk-UA", u"Українська", u"", u"Ukrainian"),
-    (u"av", u"Авар", u"", u"Avar"),
-    (u"ay", u"Aymar", u"", u"Aymara"),
-    (u"az", u"Azərbaycanca", u"", u"Azerbaijani"),
-    (u"es-ES", u"Español", u"", u"Spanish"),
-    (u"lv-LV", u"Latviešu", u"", u"Latvian"),
-    (u"nn", u"Nynorsk", u"", u"Norwegian (Nynorsk)"),
-    (u"no", u"Norsk (Bokmål)", u"", u"Norwegian (Bokmål)"),
-    (u"na", u"dorerin Naoero", u"", u"Nauruan"),
-    (u"nah", u"Nāhuatl", u"", u"Nahuatl"),
-    (u"ne", u"नेपाली", u"", u"Nepali"),
-    (u"en-AU", u"English", u"", u"English"),
-    (u"nap", u"Nnapulitano", u"", u"Neapolitan"),
-    (u"nv", u"Diné bizaad", u"", u"Navajo"),
-    (u"ku", u"Kurdî / كوردی", u"", u"Kurdish"),
-    (u"cs-CZ", u"Čeština", u"", u"Czech"),
-    (u"en-SG", u"English", u"", u"English"),
-    (u"bcl", u"Bikol", u"", u"Central Bicolano")
+    (u"uz", u"O‘zbek", u"", u"Uzbek"),
+    (u"vec", u"Vèneto", u"", u"Venetian"),
+    (u"vi-VN", u"Tiếng Việt", u"Công Hòa Xã Hội Chủ Nghĩa Việt Nam", u"Vietnamese"),
+    (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"Yiddish"),
+    (u"yo", u"Yorùbá", u"", u"Yoruba"),
+    (u"zh", u"中文", u"", u"Chinese"),
+    (u"zh-CN", u"中文", u"中国", u"Chinese"),
+    (u"zh-HK", u"中文", u"香港", u"Chinese"),
+    (u"zh-TW", u"中文", u"台湾", u"Chinese"),
+    (u"zu", u"Isizulu", u"", u"")
 )

+ 54 - 10
utils/update_languages.py

@@ -4,22 +4,28 @@
 # intersecting each engine's supported languages.
 #
 # The language's native names are obtained from
-# Wikipedia's supported languages.
+# Wikipedia and Google's supported languages.
+#
+# The country names are obtained from http://api.geonames.org
+# which requires registering as a user.
 #
 # Output file (languages.py) is written in current directory
 # to avoid overwriting in case something goes wrong.
 
 from requests import get
-from re import sub
-from lxml.html import fromstring, tostring
+from urllib import urlencode
+from lxml.html import fromstring
 from json import loads
 from sys import path
 path.append('../searx')
 from searx.engines import engines
 
-# list of language names
+# list of names
 wiki_languages_url = 'https://meta.wikimedia.org/wiki/List_of_Wikipedias'
 google_languages_url = 'https://www.google.com/preferences?#languages'
+country_names_url = 'http://api.geonames.org/countryInfoJSON?{parameters}'
+
+geonames_user = ''  # add user name here
 
 google_json_name = 'google.preferences.langMap'
 
@@ -46,6 +52,29 @@ def valid_code(lang_code):
     return True
 
 
+# Get country name in specified language.
+def get_country_name(locale):
+    if geonames_user is '':
+        return ''
+
+    locale = locale.split('-')
+    if len(locale) != 2:
+        return ''
+
+    url = country_names_url.format(parameters=urlencode({'lang': locale[0],
+                                                         'country': locale[1],
+                                                         'username': geonames_user}))
+    response = get(url)
+    json = loads(response.text)
+    content = json.get('geonames', None)
+    if content is None or len(content) != 1:
+        print "No country name found for " + locale[0] + "-" + locale[1]
+        print json
+        return ''
+
+    return content[0].get('countryName', '')
+
+
 # Get language names from Wikipedia.
 def get_wikipedia_languages():
     response = get(wiki_languages_url)
@@ -62,7 +91,7 @@ def get_wikipedia_languages():
             articles = int(td[4].xpath('./a/b')[0].text.replace(',',''))
             
             # exclude language variants and languages with few articles
-            if code not in languages and articles >= 1000 and valid_code(code):
+            if code not in languages and articles >= 10000 and valid_code(code):
                 languages[code] = (name, '', english_name)
 
 
@@ -72,8 +101,8 @@ def get_google_languages():
     dom = fromstring(response.text)
     options = dom.xpath('//select[@name="hl"]/option')
     for option in options:
-        code = option.xpath('./@value')[0]
-        name = option.text[:-1]
+        code = option.xpath('./@value')[0].split('-')[0]
+        name = option.text[:-1].title()
 
         if code not in languages and valid_code(code):
             languages[code] = (name, '', '')
@@ -92,8 +121,22 @@ def join_language_lists():
                     print engine_name + ": " + locale
                     continue
 
-                (name, country, english) = language
-                languages[locale] = (name, country, english)
+                country = get_country_name(locale)
+                languages[locale] = (language[0], country, language[2])
+
+
+# Remove countryless language if language is featured in only one country.
+def filter_single_country_languages():
+    prev_lang = None
+    for code in sorted(languages):
+        lang = code.split('-')[0]
+        if lang == prev_lang:
+            countries += 1
+        else:
+            if prev_lang is not None and countries == 1:
+                del languages[prev_lang]
+            countries = 0
+            prev_lang = lang
 
 
 # Write languages.py.
@@ -103,7 +146,7 @@ def write_languages_file():
     file_content += '# list of language codes\n'
     file_content += '# this file is generated automatically by utils/update_search_languages.py\n'
     file_content += '\nlanguage_codes = ('
-    for code in languages:
+    for code in sorted(languages):
         (name, country, english) = languages[code]
         file_content += '\n    (u"' + code + '"'\
                         + ', u"' + name + '"'\
@@ -120,4 +163,5 @@ if __name__ == "__main__":
     get_wikipedia_languages()
     get_google_languages()
     join_language_lists()
+    filter_single_country_languages()
     write_languages_file()