summaryrefslogtreecommitdiff
path: root/searx
diff options
context:
space:
mode:
authorJohannes 'josch' Schauer <josch@debian.org>2020-02-01 01:09:45 +0100
committerJohannes 'josch' Schauer <josch@debian.org>2020-02-01 01:09:45 +0100
commit3e49246c2e44159486ea66fed3757cdb4e4d0c50 (patch)
tree73fecfac5dd7475f346d4bff59d78aec04a966a8 /searx
Import Upstream version 0.15.0+dfsg1
Diffstat (limited to 'searx')
-rw-r--r--searx/__init__.py93
-rw-r--r--searx/answerers/__init__.py50
-rw-r--r--searx/answerers/random/answerer.py73
-rw-r--r--searx/answerers/statistics/answerer.py55
-rw-r--r--searx/autocomplete.py197
-rw-r--r--searx/data/currencies.json7667
-rw-r--r--searx/data/engines_languages.json27225
-rw-r--r--searx/data/useragents.json14
-rw-r--r--searx/engines/1337x.py39
-rw-r--r--searx/engines/__init__.py260
-rw-r--r--searx/engines/acgsou.py75
-rw-r--r--searx/engines/archlinux.py142
-rw-r--r--searx/engines/arxiv.py76
-rw-r--r--searx/engines/asksteem.py44
-rwxr-xr-xsearx/engines/base.py121
-rw-r--r--searx/engines/bing.py103
-rw-r--r--searx/engines/bing_images.py125
-rw-r--r--searx/engines/bing_news.py124
-rw-r--r--searx/engines/bing_videos.py88
-rw-r--r--searx/engines/btdigg.py92
-rw-r--r--searx/engines/currency_convert.py99
-rw-r--r--searx/engines/dailymotion.py95
-rw-r--r--searx/engines/deezer.py67
-rw-r--r--searx/engines/deviantart.py84
-rw-r--r--searx/engines/dictzone.py68
-rw-r--r--searx/engines/digbt.py62
-rw-r--r--searx/engines/digg.py81
-rw-r--r--searx/engines/doku.py84
-rw-r--r--searx/engines/duckduckgo.py120
-rw-r--r--searx/engines/duckduckgo_definitions.py158
-rw-r--r--searx/engines/duckduckgo_images.py90
-rw-r--r--searx/engines/duden.py76
-rw-r--r--searx/engines/dummy.py16
-rw-r--r--searx/engines/faroo.py93
-rw-r--r--searx/engines/fdroid.py51
-rw-r--r--searx/engines/filecrop.py88
-rw-r--r--searx/engines/flickr.py90
-rw-r--r--searx/engines/flickr_noapi.py117
-rw-r--r--searx/engines/framalibre.py69
-rw-r--r--searx/engines/frinkiac.py44
-rw-r--r--searx/engines/genius.py88
-rw-r--r--searx/engines/gentoo.py128
-rw-r--r--searx/engines/gigablast.py109
-rw-r--r--searx/engines/github.py60
-rw-r--r--searx/engines/google.py390
-rw-r--r--searx/engines/google_images.py86
-rw-r--r--searx/engines/google_news.py85
-rw-r--r--searx/engines/google_videos.py95
-rw-r--r--searx/engines/ina.py87
-rw-r--r--searx/engines/json_engine.py136
-rw-r--r--searx/engines/kickass.py92
-rw-r--r--searx/engines/mediawiki.py87
-rw-r--r--searx/engines/microsoft_academic.py75
-rw-r--r--searx/engines/mixcloud.py61
-rw-r--r--searx/engines/nyaa.py108
-rw-r--r--searx/engines/openstreetmap.py95
-rw-r--r--searx/engines/pdbe.py112
-rw-r--r--searx/engines/photon.py130
-rw-r--r--searx/engines/piratebay.py96
-rw-r--r--searx/engines/pubmed.py101
-rw-r--r--searx/engines/qwant.py132
-rw-r--r--searx/engines/reddit.py76
-rw-r--r--searx/engines/scanr_structures.py76
-rw-r--r--searx/engines/searchcode_code.py69
-rw-r--r--searx/engines/searchcode_doc.py49
-rw-r--r--searx/engines/searx_engine.py57
-rw-r--r--searx/engines/seedpeer.py75
-rw-r--r--searx/engines/soundcloud.py107
-rw-r--r--searx/engines/spotify.py62
-rw-r--r--searx/engines/stackoverflow.py57
-rw-r--r--searx/engines/startpage.py119
-rw-r--r--searx/engines/subtitleseeker.py86
-rw-r--r--searx/engines/swisscows.py121
-rw-r--r--searx/engines/tokyotoshokan.py99
-rw-r--r--searx/engines/torrentz.py98
-rw-r--r--searx/engines/translated.py68
-rw-r--r--searx/engines/twitter.py82
-rw-r--r--searx/engines/vimeo.py67
-rw-r--r--searx/engines/wikidata.py485
-rw-r--r--searx/engines/wikipedia.py130
-rw-r--r--searx/engines/wolframalpha_api.py129
-rw-r--r--searx/engines/wolframalpha_noapi.py121
-rw-r--r--searx/engines/www1x.py81
-rw-r--r--searx/engines/xpath.py122
-rw-r--r--searx/engines/yacy.py106
-rw-r--r--searx/engines/yahoo.py151
-rw-r--r--searx/engines/yahoo_news.py107
-rw-r--r--searx/engines/yandex.py64
-rw-r--r--searx/engines/youtube_api.py81
-rw-r--r--searx/engines/youtube_noapi.py89
-rw-r--r--searx/exceptions.py32
-rw-r--r--searx/languages.py67
-rw-r--r--searx/plugins/__init__.py88
-rw-r--r--searx/plugins/https_rewrite.py233
-rw-r--r--searx/plugins/https_rules/00README17
-rw-r--r--searx/plugins/https_rules/Bing.xml56
-rw-r--r--searx/plugins/https_rules/Dailymotion.xml69
-rw-r--r--searx/plugins/https_rules/Deviantart.xml53
-rw-r--r--searx/plugins/https_rules/DuckDuckGo.xml38
-rw-r--r--searx/plugins/https_rules/Flickr.xml44
-rw-r--r--searx/plugins/https_rules/Github-Pages.xml11
-rw-r--r--searx/plugins/https_rules/Github.xml94
-rw-r--r--searx/plugins/https_rules/Google-mismatches.xml26
-rw-r--r--searx/plugins/https_rules/Google.org.xml14
-rw-r--r--searx/plugins/https_rules/GoogleAPIs.xml143
-rw-r--r--searx/plugins/https_rules/GoogleCanada.xml6
-rw-r--r--searx/plugins/https_rules/GoogleImages.xml65
-rw-r--r--searx/plugins/https_rules/GoogleMainSearch.xml78
-rw-r--r--searx/plugins/https_rules/GoogleMaps.xml67
-rw-r--r--searx/plugins/https_rules/GoogleMelange.xml6
-rw-r--r--searx/plugins/https_rules/GoogleSearch.xml135
-rw-r--r--searx/plugins/https_rules/GoogleServices.xml345
-rw-r--r--searx/plugins/https_rules/GoogleShopping.xml28
-rw-r--r--searx/plugins/https_rules/GoogleSorry.xml7
-rw-r--r--searx/plugins/https_rules/GoogleTranslate.xml8
-rw-r--r--searx/plugins/https_rules/GoogleVideos.xml83
-rw-r--r--searx/plugins/https_rules/GoogleWatchBlog.xml17
-rw-r--r--searx/plugins/https_rules/Google_App_Engine.xml21
-rw-r--r--searx/plugins/https_rules/Googleplex.com.xml16
-rw-r--r--searx/plugins/https_rules/OpenStreetMap.xml15
-rw-r--r--searx/plugins/https_rules/Rawgithub.com.xml14
-rw-r--r--searx/plugins/https_rules/Soundcloud.xml101
-rw-r--r--searx/plugins/https_rules/ThePirateBay.xml36
-rw-r--r--searx/plugins/https_rules/Torproject.xml18
-rw-r--r--searx/plugins/https_rules/Twitter.xml169
-rw-r--r--searx/plugins/https_rules/Vimeo.xml75
-rw-r--r--searx/plugins/https_rules/WikiLeaks.xml13
-rw-r--r--searx/plugins/https_rules/Wikimedia.xml107
-rw-r--r--searx/plugins/https_rules/Yahoo.xml2450
-rw-r--r--searx/plugins/https_rules/YouTube.xml46
-rw-r--r--searx/plugins/infinite_scroll.py9
-rw-r--r--searx/plugins/oa_doi_rewrite.py45
-rw-r--r--searx/plugins/open_results_on_new_tab.py24
-rw-r--r--searx/plugins/search_on_category_select.py24
-rw-r--r--searx/plugins/self_info.py46
-rw-r--r--searx/plugins/tracker_url_remover.py45
-rw-r--r--searx/plugins/vim_hotkeys.py10
-rw-r--r--searx/poolrequests.py159
-rw-r--r--searx/preferences.py347
-rw-r--r--searx/query.py176
-rw-r--r--searx/results.py321
-rw-r--r--searx/search.py440
-rw-r--r--searx/settings.yml788
-rw-r--r--searx/settings_robot.yml41
-rw-r--r--searx/static/plugins/css/infinite_scroll.css19
-rw-r--r--searx/static/plugins/css/vim_hotkeys.css26
-rw-r--r--searx/static/plugins/js/infinite_scroll.js18
-rw-r--r--searx/static/plugins/js/open_results_on_new_tab.js3
-rw-r--r--searx/static/plugins/js/search_on_category_select.js24
-rw-r--r--searx/static/plugins/js/vim_hotkeys.js337
-rw-r--r--searx/static/themes/courgette/img/favicon.pngbin0 -> 2039 bytes
-rw-r--r--searx/static/themes/courgette/img/preference-icon.pngbin0 -> 1315 bytes
-rw-r--r--searx/static/themes/courgette/img/search-icon.pngbin0 -> 3270 bytes
-rw-r--r--searx/static/themes/courgette/img/searx-mobile.pngbin0 -> 9415 bytes
-rw-r--r--searx/static/themes/courgette/img/searx.pngbin0 -> 3902 bytes
-rw-r--r--searx/static/themes/courgette/img/searx_logo.svg203
-rw-r--r--searx/static/themes/courgette/js/searx.js45
-rw-r--r--searx/static/themes/courgette/less/style-rtl.less42
-rw-r--r--searx/static/themes/courgette/less/style.less691
-rw-r--r--searx/static/themes/legacy/img/favicon.pngbin0 -> 2039 bytes
-rw-r--r--searx/static/themes/legacy/img/preference-icon.pngbin0 -> 532 bytes
-rw-r--r--searx/static/themes/legacy/img/search-icon.pngbin0 -> 2329 bytes
-rw-r--r--searx/static/themes/legacy/img/searx.pngbin0 -> 3902 bytes
-rw-r--r--searx/static/themes/legacy/img/searx_logo.svg203
-rw-r--r--searx/static/themes/legacy/js/searx.js49
-rw-r--r--searx/static/themes/legacy/less/autocompleter.less61
-rw-r--r--searx/static/themes/legacy/less/code.less83
-rw-r--r--searx/static/themes/legacy/less/definitions.less119
-rw-r--r--searx/static/themes/legacy/less/mixins.less27
-rw-r--r--searx/static/themes/legacy/less/search.less68
-rw-r--r--searx/static/themes/legacy/less/style-rtl.less11
-rw-r--r--searx/static/themes/legacy/less/style.less739
-rw-r--r--searx/static/themes/oscar/.gitignore1
-rw-r--r--searx/static/themes/oscar/README.rst17
-rw-r--r--searx/static/themes/oscar/gruntfile.js96
-rw-r--r--searx/static/themes/oscar/img/favicon.pngbin0 -> 1853 bytes
-rw-r--r--searx/static/themes/oscar/img/loader.gifbin0 -> 8314 bytes
-rw-r--r--searx/static/themes/oscar/img/logo_searx_a.pngbin0 -> 9557 bytes
-rw-r--r--searx/static/themes/oscar/img/logo_searx_a_n.pngbin0 -> 9704 bytes
-rw-r--r--searx/static/themes/oscar/img/map/layers-2x.pngbin0 -> 1763 bytes
-rw-r--r--searx/static/themes/oscar/img/map/layers.pngbin0 -> 1142 bytes
-rw-r--r--searx/static/themes/oscar/img/map/marker-icon-2x-green.pngbin0 -> 3753 bytes
-rw-r--r--searx/static/themes/oscar/img/map/marker-icon-2x-orange.pngbin0 -> 3691 bytes
-rw-r--r--searx/static/themes/oscar/img/map/marker-icon-2x-red.pngbin0 -> 3692 bytes
-rw-r--r--searx/static/themes/oscar/img/map/marker-icon-2x.pngbin0 -> 4033 bytes
-rw-r--r--searx/static/themes/oscar/img/map/marker-icon-green.pngbin0 -> 1696 bytes
-rw-r--r--searx/static/themes/oscar/img/map/marker-icon-orange.pngbin0 -> 1714 bytes
-rw-r--r--searx/static/themes/oscar/img/map/marker-icon-red.pngbin0 -> 1690 bytes
-rw-r--r--searx/static/themes/oscar/img/map/marker-icon.pngbin0 -> 1747 bytes
-rw-r--r--searx/static/themes/oscar/img/map/marker-shadow.pngbin0 -> 797 bytes
-rw-r--r--searx/static/themes/oscar/img/searx_logo.pngbin0 -> 10611 bytes
-rw-r--r--searx/static/themes/oscar/js/searx_src/00_requirejs_config.js23
-rw-r--r--searx/static/themes/oscar/js/searx_src/autocompleter.js37
-rw-r--r--searx/static/themes/oscar/js/searx_src/element_modifiers.js99
-rw-r--r--searx/static/themes/oscar/js/searx_src/leaflet_map.js167
-rw-r--r--searx/static/themes/oscar/less/logicodev-dark/oscar.less245
-rw-r--r--searx/static/themes/oscar/less/logicodev/advanced.less49
-rw-r--r--searx/static/themes/oscar/less/logicodev/checkbox.less9
-rw-r--r--searx/static/themes/oscar/less/logicodev/code.less103
-rw-r--r--searx/static/themes/oscar/less/logicodev/cursor.less8
-rw-r--r--searx/static/themes/oscar/less/logicodev/footer.less30
-rw-r--r--searx/static/themes/oscar/less/logicodev/infobox.less37
-rw-r--r--searx/static/themes/oscar/less/logicodev/navbar.less31
-rw-r--r--searx/static/themes/oscar/less/logicodev/onoff.less57
-rw-r--r--searx/static/themes/oscar/less/logicodev/oscar.less23
-rw-r--r--searx/static/themes/oscar/less/logicodev/preferences.less3
-rw-r--r--searx/static/themes/oscar/less/logicodev/results.less177
-rw-r--r--searx/static/themes/oscar/less/logicodev/search.less80
-rw-r--r--searx/static/themes/oscar/less/logicodev/variables.less13
-rw-r--r--searx/static/themes/oscar/less/pointhi/advanced.less49
-rw-r--r--searx/static/themes/oscar/less/pointhi/checkbox.less9
-rw-r--r--searx/static/themes/oscar/less/pointhi/code.less79
-rw-r--r--searx/static/themes/oscar/less/pointhi/cursor.less8
-rw-r--r--searx/static/themes/oscar/less/pointhi/footer.less19
-rw-r--r--searx/static/themes/oscar/less/pointhi/infobox.less11
-rw-r--r--searx/static/themes/oscar/less/pointhi/navbar.less20
-rw-r--r--searx/static/themes/oscar/less/pointhi/onoff.less57
-rw-r--r--searx/static/themes/oscar/less/pointhi/oscar.less21
-rw-r--r--searx/static/themes/oscar/less/pointhi/preferences.less3
-rw-r--r--searx/static/themes/oscar/less/pointhi/results.less109
-rw-r--r--searx/static/themes/oscar/less/pointhi/search.less33
-rw-r--r--searx/static/themes/oscar/package.json16
-rw-r--r--searx/static/themes/pix-art/img/favicon.pngbin0 -> 2039 bytes
-rw-r--r--searx/static/themes/pix-art/img/preference-icon-pixel.pngbin0 -> 242 bytes
-rw-r--r--searx/static/themes/pix-art/img/search-icon-pixel.pngbin0 -> 204 bytes
-rw-r--r--searx/static/themes/pix-art/img/searx-pixel-small.pngbin0 -> 236 bytes
-rw-r--r--searx/static/themes/pix-art/img/searx-pixel.pngbin0 -> 435 bytes
-rw-r--r--searx/static/themes/pix-art/js/searx.js141
-rw-r--r--searx/static/themes/pix-art/less/definitions.less119
-rw-r--r--searx/static/themes/pix-art/less/mixins.less27
-rw-r--r--searx/static/themes/pix-art/less/search.less57
-rw-r--r--searx/static/themes/pix-art/less/style.less451
-rw-r--r--searx/static/themes/simple/.jshintignore1
-rw-r--r--searx/static/themes/simple/gruntfile.js158
-rw-r--r--searx/static/themes/simple/img/favicon.pngbin0 -> 1474 bytes
-rw-r--r--searx/static/themes/simple/img/logo_searx_a.pngbin0 -> 8390 bytes
-rw-r--r--searx/static/themes/simple/img/searx.pngbin0 -> 2130 bytes
-rw-r--r--searx/static/themes/simple/img/searx_logo.svg203
-rw-r--r--searx/static/themes/simple/js/searx_src/00_searx_toolkit.js164
-rw-r--r--searx/static/themes/simple/js/searx_src/autocomplete.js536
-rw-r--r--searx/static/themes/simple/js/searx_src/searx_imageresult.js151
-rw-r--r--searx/static/themes/simple/js/searx_src/searx_keyboard.js366
-rw-r--r--searx/static/themes/simple/js/searx_src/searx_mapresult.js176
-rw-r--r--searx/static/themes/simple/js/searx_src/searx_results.js63
-rw-r--r--searx/static/themes/simple/js/searx_src/searx_search.js117
-rw-r--r--searx/static/themes/simple/less/autocomplete.less69
-rw-r--r--searx/static/themes/simple/less/code.less83
-rw-r--r--searx/static/themes/simple/less/definitions.less135
-rw-r--r--searx/static/themes/simple/less/index.less43
-rw-r--r--searx/static/themes/simple/less/mixins.less62
-rw-r--r--searx/static/themes/simple/less/normalize.less341
-rw-r--r--searx/static/themes/simple/less/preferences.less103
-rw-r--r--searx/static/themes/simple/less/search.less264
-rw-r--r--searx/static/themes/simple/less/stats.less8
-rw-r--r--searx/static/themes/simple/less/style-rtl.less6
-rw-r--r--searx/static/themes/simple/less/style.less721
-rw-r--r--searx/static/themes/simple/less/toolkit.less468
-rw-r--r--searx/static/themes/simple/less/toolkit_loader.less41
-rw-r--r--searx/static/themes/simple/magnet.svg1
-rw-r--r--searx/static/themes/simple/package.json20
-rw-r--r--searx/templates/__common__/about.html63
-rw-r--r--searx/templates/__common__/opensearch.xml28
-rw-r--r--searx/templates/__common__/opensearch_response_rss.xml29
-rw-r--r--searx/templates/courgette/404.html9
-rw-r--r--searx/templates/courgette/about.html5
-rw-r--r--searx/templates/courgette/base.html43
-rw-r--r--searx/templates/courgette/categories.html9
-rw-r--r--searx/templates/courgette/color.css34
-rw-r--r--searx/templates/courgette/github_ribbon.html3
-rw-r--r--searx/templates/courgette/index.html17
-rw-r--r--searx/templates/courgette/preferences.html131
-rw-r--r--searx/templates/courgette/result_templates/code.html11
-rw-r--r--searx/templates/courgette/result_templates/default.html13
-rw-r--r--searx/templates/courgette/result_templates/images.html6
-rw-r--r--searx/templates/courgette/result_templates/map.html13
-rw-r--r--searx/templates/courgette/result_templates/torrent.html13
-rw-r--r--searx/templates/courgette/result_templates/videos.html10
-rw-r--r--searx/templates/courgette/results.html87
-rw-r--r--searx/templates/courgette/search.html7
-rw-r--r--searx/templates/courgette/stats.html22
-rw-r--r--searx/templates/legacy/404.html9
-rw-r--r--searx/templates/legacy/about.html5
-rw-r--r--searx/templates/legacy/base.html38
-rw-r--r--searx/templates/legacy/categories.html10
-rw-r--r--searx/templates/legacy/github_ribbon.html3
-rw-r--r--searx/templates/legacy/index.html18
-rw-r--r--searx/templates/legacy/infobox.html51
-rw-r--r--searx/templates/legacy/preferences.html128
-rw-r--r--searx/templates/legacy/result_templates/code.html11
-rw-r--r--searx/templates/legacy/result_templates/default.html6
-rw-r--r--searx/templates/legacy/result_templates/images.html6
-rw-r--r--searx/templates/legacy/result_templates/map.html13
-rw-r--r--searx/templates/legacy/result_templates/torrent.html13
-rw-r--r--searx/templates/legacy/result_templates/videos.html6
-rw-r--r--searx/templates/legacy/results.html100
-rw-r--r--searx/templates/legacy/search.html8
-rw-r--r--searx/templates/legacy/stats.html22
-rw-r--r--searx/templates/oscar/404.html9
-rw-r--r--searx/templates/oscar/about.html5
-rw-r--r--searx/templates/oscar/advanced.html16
-rw-r--r--searx/templates/oscar/base.html114
-rw-r--r--searx/templates/oscar/categories.html13
-rw-r--r--searx/templates/oscar/index.html22
-rw-r--r--searx/templates/oscar/infobox.html35
-rw-r--r--searx/templates/oscar/languages.html11
-rw-r--r--searx/templates/oscar/macros.html99
-rw-r--r--searx/templates/oscar/messages/first_time.html8
-rw-r--r--searx/templates/oscar/messages/no_cookies.html5
-rw-r--r--searx/templates/oscar/messages/no_data_available.html5
-rw-r--r--searx/templates/oscar/messages/no_results.html17
-rw-r--r--searx/templates/oscar/messages/save_settings_successfull.html9
-rw-r--r--searx/templates/oscar/messages/unknow_error.html9
-rw-r--r--searx/templates/oscar/navbar.html9
-rw-r--r--searx/templates/oscar/preferences.html311
-rw-r--r--searx/templates/oscar/result_templates/code.html18
-rw-r--r--searx/templates/oscar/result_templates/default.html31
-rw-r--r--searx/templates/oscar/result_templates/images.html39
-rw-r--r--searx/templates/oscar/result_templates/map.html72
-rw-r--r--searx/templates/oscar/result_templates/torrent.html25
-rw-r--r--searx/templates/oscar/result_templates/videos.html27
-rw-r--r--searx/templates/oscar/results.html155
-rw-r--r--searx/templates/oscar/search.html24
-rw-r--r--searx/templates/oscar/search_full.html18
-rw-r--r--searx/templates/oscar/stats.html33
-rw-r--r--searx/templates/oscar/time-range.html17
-rw-r--r--searx/templates/pix-art/404.html9
-rw-r--r--searx/templates/pix-art/about.html4
-rw-r--r--searx/templates/pix-art/base.html35
-rw-r--r--searx/templates/pix-art/index.html12
-rw-r--r--searx/templates/pix-art/preferences.html81
-rw-r--r--searx/templates/pix-art/result_templates/default.html7
-rw-r--r--searx/templates/pix-art/result_templates/images.html6
-rw-r--r--searx/templates/pix-art/results.html32
-rw-r--r--searx/templates/pix-art/search.html9
-rw-r--r--searx/templates/pix-art/stats.html22
-rw-r--r--searx/templates/simple/404.html9
-rw-r--r--searx/templates/simple/about.html4
-rw-r--r--searx/templates/simple/base.html66
-rw-r--r--searx/templates/simple/categories.html8
-rw-r--r--searx/templates/simple/index.html12
-rw-r--r--searx/templates/simple/infobox.html46
-rw-r--r--searx/templates/simple/languages.html8
-rw-r--r--searx/templates/simple/macros.html85
-rw-r--r--searx/templates/simple/messages/no_results.html17
-rw-r--r--searx/templates/simple/preferences.html236
-rw-r--r--searx/templates/simple/result_templates/code.html13
-rw-r--r--searx/templates/simple/result_templates/default.html17
-rw-r--r--searx/templates/simple/result_templates/images.html4
-rw-r--r--searx/templates/simple/result_templates/map.html68
-rw-r--r--searx/templates/simple/result_templates/torrent.html24
-rw-r--r--searx/templates/simple/result_templates/videos.html15
-rw-r--r--searx/templates/simple/results.html158
-rw-r--r--searx/templates/simple/search.html17
-rw-r--r--searx/templates/simple/simple.spec.txt40
-rw-r--r--searx/templates/simple/stats.html25
-rw-r--r--searx/templates/simple/time-range.html17
-rw-r--r--searx/testing.py98
-rw-r--r--searx/translations/ar/LC_MESSAGES/messages.po1014
-rw-r--r--searx/translations/bg/LC_MESSAGES/messages.po1014
-rw-r--r--searx/translations/ca/LC_MESSAGES/messages.po1014
-rw-r--r--searx/translations/cs/LC_MESSAGES/messages.po1014
-rw-r--r--searx/translations/cy/LC_MESSAGES/messages.po1013
-rw-r--r--searx/translations/da/LC_MESSAGES/messages.po1014
-rw-r--r--searx/translations/de/LC_MESSAGES/messages.po1026
-rw-r--r--searx/translations/el_GR/LC_MESSAGES/messages.po1014
-rw-r--r--searx/translations/en/LC_MESSAGES/messages.po695
-rw-r--r--searx/translations/eo/LC_MESSAGES/messages.po1016
-rw-r--r--searx/translations/es/LC_MESSAGES/messages.po1023
-rw-r--r--searx/translations/eu/LC_MESSAGES/messages.po1015
-rw-r--r--searx/translations/fa_IR/LC_MESSAGES/messages.po1015
-rw-r--r--searx/translations/fi/LC_MESSAGES/messages.po1013
-rw-r--r--searx/translations/fil/LC_MESSAGES/messages.po1014
-rw-r--r--searx/translations/fr/LC_MESSAGES/messages.po1020
-rw-r--r--searx/translations/gl/LC_MESSAGES/messages.po1013
-rw-r--r--searx/translations/he/LC_MESSAGES/messages.po1017
-rw-r--r--searx/translations/hr/LC_MESSAGES/messages.po1013
-rw-r--r--searx/translations/hu/LC_MESSAGES/messages.po1016
-rw-r--r--searx/translations/it/LC_MESSAGES/messages.po1021
-rw-r--r--searx/translations/ja/LC_MESSAGES/messages.po1020
-rw-r--r--searx/translations/nl/LC_MESSAGES/messages.po1015
-rw-r--r--searx/translations/nl_BE/LC_MESSAGES/messages.po1013
-rw-r--r--searx/translations/pl/LC_MESSAGES/messages.po1014
-rw-r--r--searx/translations/pt/LC_MESSAGES/messages.po1014
-rw-r--r--searx/translations/pt_BR/LC_MESSAGES/messages.po1019
-rw-r--r--searx/translations/ro/LC_MESSAGES/messages.po1014
-rw-r--r--searx/translations/ru/LC_MESSAGES/messages.po1018
-rw-r--r--searx/translations/sk/LC_MESSAGES/messages.po1013
-rw-r--r--searx/translations/sl/LC_MESSAGES/messages.po1013
-rw-r--r--searx/translations/sr/LC_MESSAGES/messages.po1013
-rw-r--r--searx/translations/sv/LC_MESSAGES/messages.po1015
-rw-r--r--searx/translations/te/LC_MESSAGES/messages.po1013
-rw-r--r--searx/translations/tr/LC_MESSAGES/messages.po1015
-rw-r--r--searx/translations/uk/LC_MESSAGES/messages.po1015
-rw-r--r--searx/translations/vi/LC_MESSAGES/messages.po1013
-rw-r--r--searx/translations/zh_CN/LC_MESSAGES/messages.po1017
-rw-r--r--searx/translations/zh_Hant_TW/LC_MESSAGES/messages.po1014
-rw-r--r--searx/translations/zh_TW/LC_MESSAGES/messages.po1015
-rw-r--r--searx/url_utils.py30
-rw-r--r--searx/utils.py401
-rw-r--r--searx/version.py26
-rw-r--r--searx/webapp.py929
401 files changed, 105733 insertions, 0 deletions
diff --git a/searx/__init__.py b/searx/__init__.py
new file mode 100644
index 0000000..b1010f2
--- /dev/null
+++ b/searx/__init__.py
@@ -0,0 +1,93 @@
+'''
+searx is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+searx is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with searx. If not, see < http://www.gnu.org/licenses/ >.
+
+(C) 2013- by Adam Tauber, <asciimoo@gmail.com>
+'''
+
+import certifi
+import logging
+from os import environ
+from os.path import realpath, dirname, join, abspath, isfile
+from io import open
+from ssl import OPENSSL_VERSION_INFO, OPENSSL_VERSION
+try:
+ from yaml import load
+except:
+ from sys import exit, stderr
+ stderr.write('[E] install pyyaml\n')
+ exit(2)
+
+searx_dir = abspath(dirname(__file__))
+engine_dir = dirname(realpath(__file__))
+
+
+def check_settings_yml(file_name):
+ if isfile(file_name):
+ return file_name
+ else:
+ return None
+
+# find location of settings.yml
+if 'SEARX_SETTINGS_PATH' in environ:
+ # if possible set path to settings using the
+ # enviroment variable SEARX_SETTINGS_PATH
+ settings_path = check_settings_yml(environ['SEARX_SETTINGS_PATH'])
+else:
+ # if not, get it from searx code base or last solution from /etc/searx
+ settings_path = check_settings_yml(join(searx_dir, 'settings.yml')) or check_settings_yml('/etc/searx/settings.yml')
+
+if not settings_path:
+ raise Exception('settings.yml not found')
+
+# load settings
+with open(settings_path, 'r', encoding='utf-8') as settings_yaml:
+ settings = load(settings_yaml)
+
+'''
+enable debug if
+the environnement variable SEARX_DEBUG is 1 or true
+(whatever the value in settings.yml)
+or general.debug=True in settings.yml
+
+disable debug if
+the environnement variable SEARX_DEBUG is 0 or false
+(whatever the value in settings.yml)
+or general.debug=False in settings.yml
+'''
+searx_debug_env = environ.get('SEARX_DEBUG', '').lower()
+if searx_debug_env == 'true' or searx_debug_env == '1':
+ searx_debug = True
+elif searx_debug_env == 'false' or searx_debug_env == '0':
+ searx_debug = False
+else:
+ searx_debug = settings.get('general', {}).get('debug')
+
+if searx_debug:
+ logging.basicConfig(level=logging.DEBUG)
+else:
+ logging.basicConfig(level=logging.WARNING)
+
+logger = logging.getLogger('searx')
+logger.debug('read configuration from %s', settings_path)
+# Workaround for openssl versions <1.0.2
+# https://github.com/certifi/python-certifi/issues/26
+if OPENSSL_VERSION_INFO[0:3] < (1, 0, 2):
+ if hasattr(certifi, 'old_where'):
+ environ['REQUESTS_CA_BUNDLE'] = certifi.old_where()
+ logger.warning('You are using an old openssl version({0}), please upgrade above 1.0.2!'.format(OPENSSL_VERSION))
+
+logger.info('Initialisation done')
+
+if 'SEARX_SECRET' in environ:
+ settings['server']['secret_key'] = environ['SEARX_SECRET']
diff --git a/searx/answerers/__init__.py b/searx/answerers/__init__.py
new file mode 100644
index 0000000..444316f
--- /dev/null
+++ b/searx/answerers/__init__.py
@@ -0,0 +1,50 @@
+from os import listdir
+from os.path import realpath, dirname, join, isdir
+from sys import version_info
+from searx.utils import load_module
+from collections import defaultdict
+
+if version_info[0] == 3:
+ unicode = str
+
+
+answerers_dir = dirname(realpath(__file__))
+
+
+def load_answerers():
+ answerers = []
+ for filename in listdir(answerers_dir):
+ if not isdir(join(answerers_dir, filename)) or filename.startswith('_'):
+ continue
+ module = load_module('answerer.py', join(answerers_dir, filename))
+ if not hasattr(module, 'keywords') or not isinstance(module.keywords, tuple) or not len(module.keywords):
+ exit(2)
+ answerers.append(module)
+ return answerers
+
+
+def get_answerers_by_keywords(answerers):
+ by_keyword = defaultdict(list)
+ for answerer in answerers:
+ for keyword in answerer.keywords:
+ for keyword in answerer.keywords:
+ by_keyword[keyword].append(answerer.answer)
+ return by_keyword
+
+
+def ask(query):
+ results = []
+ query_parts = list(filter(None, query.query.split()))
+
+ if query_parts[0].decode('utf-8') not in answerers_by_keywords:
+ return results
+
+ for answerer in answerers_by_keywords[query_parts[0].decode('utf-8')]:
+ result = answerer(query)
+ if result:
+ results.append(result)
+ return results
+
+
+answerers = load_answerers()
+answerers_by_keywords = get_answerers_by_keywords(answerers)
diff --git a/searx/answerers/random/answerer.py b/searx/answerers/random/answerer.py
new file mode 100644
index 0000000..b6e8422
--- /dev/null
+++ b/searx/answerers/random/answerer.py
@@ -0,0 +1,73 @@
+import hashlib
+import random
+import string
+import sys
+import uuid
+from flask_babel import gettext
+
+# required answerer attribute
+# specifies which search query keywords triggers this answerer
+keywords = ('random',)
+
+random_int_max = 2**31
+
+if sys.version_info[0] == 2:
+ random_string_letters = string.lowercase + string.digits + string.uppercase
+else:
+ unicode = str
+ random_string_letters = string.ascii_lowercase + string.digits + string.ascii_uppercase
+
+
+def random_characters():
+ return [random.choice(random_string_letters)
+ for _ in range(random.randint(8, 32))]
+
+
+def random_string():
+ return u''.join(random_characters())
+
+
+def random_float():
+ return unicode(random.random())
+
+
+def random_int():
+ return unicode(random.randint(-random_int_max, random_int_max))
+
+
+def random_sha256():
+ m = hashlib.sha256()
+ m.update(b''.join(random_characters()))
+ return unicode(m.hexdigest())
+
+
+def random_uuid():
+ return unicode(uuid.uuid4())
+
+
+random_types = {b'string': random_string,
+ b'int': random_int,
+ b'float': random_float,
+ b'sha256': random_sha256,
+ b'uuid': random_uuid}
+
+
+# required answerer function
+# can return a list of results (any result type) for a given query
+def answer(query):
+ parts = query.query.split()
+ if len(parts) != 2:
+ return []
+
+ if parts[1] not in random_types:
+ return []
+
+ return [{'answer': random_types[parts[1]]()}]
+
+
+# required answerer function
+# returns information about the answerer
+def self_info():
+ return {'name': gettext('Random value generator'),
+ 'description': gettext('Generate different random values'),
+ 'examples': [u'random {}'.format(x) for x in random_types]}
diff --git a/searx/answerers/statistics/answerer.py b/searx/answerers/statistics/answerer.py
new file mode 100644
index 0000000..73dd25c
--- /dev/null
+++ b/searx/answerers/statistics/answerer.py
@@ -0,0 +1,55 @@
+from sys import version_info
+from functools import reduce
+from operator import mul
+
+from flask_babel import gettext
+
+if version_info[0] == 3:
+ unicode = str
+
+keywords = ('min',
+ 'max',
+ 'avg',
+ 'sum',
+ 'prod')
+
+
+# required answerer function
+# can return a list of results (any result type) for a given query
+def answer(query):
+ parts = query.query.split()
+
+ if len(parts) < 2:
+ return []
+
+ try:
+ args = list(map(float, parts[1:]))
+ except:
+ return []
+
+ func = parts[0]
+ answer = None
+
+ if func == b'min':
+ answer = min(args)
+ elif func == b'max':
+ answer = max(args)
+ elif func == b'avg':
+ answer = sum(args) / len(args)
+ elif func == b'sum':
+ answer = sum(args)
+ elif func == b'prod':
+ answer = reduce(mul, args, 1)
+
+ if answer is None:
+ return []
+
+ return [{'answer': unicode(answer)}]
+
+
+# required answerer function
+# returns information about the answerer
+def self_info():
+ return {'name': gettext('Statistics functions'),
+ 'description': gettext('Compute {functions} of the arguments').format(functions='/'.join(keywords)),
+ 'examples': ['avg 123 548 2.04 24.2']}
diff --git a/searx/autocomplete.py b/searx/autocomplete.py
new file mode 100644
index 0000000..f8a45b3
--- /dev/null
+++ b/searx/autocomplete.py
@@ -0,0 +1,197 @@
+'''
+searx is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+searx is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with searx. If not, see < http://www.gnu.org/licenses/ >.
+
+(C) 2013- by Adam Tauber, <asciimoo@gmail.com>
+'''
+
+
+from lxml import etree
+from json import loads
+from searx import settings
+from searx.languages import language_codes
+from searx.engines import (
+ categories, engines, engine_shortcuts
+)
+from searx.poolrequests import get as http_get
+from searx.url_utils import urlencode
+
+
+def get(*args, **kwargs):
+ if 'timeout' not in kwargs:
+ kwargs['timeout'] = settings['outgoing']['request_timeout']
+
+ return http_get(*args, **kwargs)
+
+
+def searx_bang(full_query):
+ '''check if the searchQuery contain a bang, and create fitting autocompleter results'''
+ # check if there is a query which can be parsed
+ if len(full_query.getSearchQuery()) == 0:
+ return []
+
+ results = []
+
+ # check if current query stats with !bang
+ first_char = full_query.getSearchQuery()[0]
+ if first_char == '!' or first_char == '?':
+ if len(full_query.getSearchQuery()) == 1:
+ # show some example queries
+ # TODO, check if engine is not avaliable
+ results.append(first_char + "images")
+ results.append(first_char + "wikipedia")
+ results.append(first_char + "osm")
+ else:
+ engine_query = full_query.getSearchQuery()[1:]
+
+ # check if query starts with categorie name
+ for categorie in categories:
+ if categorie.startswith(engine_query):
+ results.append(first_char + '{categorie}'.format(categorie=categorie))
+
+ # check if query starts with engine name
+ for engine in engines:
+ if engine.startswith(engine_query.replace('_', ' ')):
+ results.append(first_char + '{engine}'.format(engine=engine.replace(' ', '_')))
+
+ # check if query starts with engine shortcut
+ for engine_shortcut in engine_shortcuts:
+ if engine_shortcut.startswith(engine_query):
+ results.append(first_char + '{engine_shortcut}'.format(engine_shortcut=engine_shortcut))
+
+ # check if current query stats with :bang
+ elif first_char == ':':
+ if len(full_query.getSearchQuery()) == 1:
+ # show some example queries
+ results.append(":en")
+ results.append(":en_us")
+ results.append(":english")
+ results.append(":united_kingdom")
+ else:
+ engine_query = full_query.getSearchQuery()[1:]
+
+ for lc in language_codes:
+ lang_id, lang_name, country, english_name = map(unicode.lower, lc)
+
+ # check if query starts with language-id
+ if lang_id.startswith(engine_query):
+ if len(engine_query) <= 2:
+ results.append(u':{lang_id}'.format(lang_id=lang_id.split('-')[0]))
+ else:
+ results.append(u':{lang_id}'.format(lang_id=lang_id))
+
+ # check if query starts with language name
+ if lang_name.startswith(engine_query) or english_name.startswith(engine_query):
+ results.append(u':{lang_name}'.format(lang_name=lang_name))
+
+ # check if query starts with country
+ if country.startswith(engine_query.replace('_', ' ')):
+ results.append(u':{country}'.format(country=country.replace(' ', '_')))
+
+ # remove duplicates
+ result_set = set(results)
+
+ # remove results which are already contained in the query
+ for query_part in full_query.query_parts:
+ if query_part in result_set:
+ result_set.remove(query_part)
+
+ # convert result_set back to list
+ return list(result_set)
+
+
+def dbpedia(query, lang):
+ # dbpedia autocompleter, no HTTPS
+ autocomplete_url = 'http://lookup.dbpedia.org/api/search.asmx/KeywordSearch?'
+
+ response = get(autocomplete_url + urlencode(dict(QueryString=query)))
+
+ results = []
+
+ if response.ok:
+ dom = etree.fromstring(response.content)
+ results = dom.xpath('//a:Result/a:Label//text()',
+ namespaces={'a': 'http://lookup.dbpedia.org/'})
+
+ return results
+
+
+def duckduckgo(query, lang):
+ # duckduckgo autocompleter
+ url = 'https://ac.duckduckgo.com/ac/?{0}&type=list'
+
+ resp = loads(get(url.format(urlencode(dict(q=query)))).text)
+ if len(resp) > 1:
+ return resp[1]
+ return []
+
+
+def google(query, lang):
+ # google autocompleter
+ autocomplete_url = 'https://suggestqueries.google.com/complete/search?client=toolbar&'
+
+ response = get(autocomplete_url + urlencode(dict(hl=lang, q=query)))
+
+ results = []
+
+ if response.ok:
+ dom = etree.fromstring(response.text)
+ results = dom.xpath('//suggestion/@data')
+
+ return results
+
+
+def startpage(query, lang):
+ # startpage autocompleter
+ url = 'https://startpage.com/do/suggest?{query}'
+
+ resp = get(url.format(query=urlencode({'query': query}))).text.split('\n')
+ if len(resp) > 1:
+ return resp
+ return []
+
+
+def qwant(query, lang):
+ # qwant autocompleter (additional parameter : lang=en_en&count=xxx )
+ url = 'https://api.qwant.com/api/suggest?{query}'
+
+ resp = get(url.format(query=urlencode({'q': query, 'lang': lang})))
+
+ results = []
+
+ if resp.ok:
+ data = loads(resp.text)
+ if data['status'] == 'success':
+ for item in data['data']['items']:
+ results.append(item['value'])
+
+ return results
+
+
+def wikipedia(query, lang):
+ # wikipedia autocompleter
+ url = 'https://' + lang + '.wikipedia.org/w/api.php?action=opensearch&{0}&limit=10&namespace=0&format=json'
+
+ resp = loads(get(url.format(urlencode(dict(search=query)))).text)
+ if len(resp) > 1:
+ return resp[1]
+ return []
+
+
+backends = {'dbpedia': dbpedia,
+ 'duckduckgo': duckduckgo,
+ 'google': google,
+ 'startpage': startpage,
+ 'qwant': qwant,
+ 'wikipedia': wikipedia
+ }
diff --git a/searx/data/currencies.json b/searx/data/currencies.json
new file mode 100644
index 0000000..ad4e08f
--- /dev/null
+++ b/searx/data/currencies.json
@@ -0,0 +1,7667 @@
+{
+ "names": {
+ "francos franceses": [
+ "FRF"
+ ],
+ "bulgarischer lew": [
+ "BGN"
+ ],
+ "o\u0308rme\u0301ny dram": [
+ "AMD"
+ ],
+ "oekrai\u0308ense hryvnja": [
+ "UAH"
+ ],
+ "guatemalan quetzal": [
+ "GTQ"
+ ],
+ "ghana cedi": [
+ "GHS"
+ ],
+ "livre de sainte helene": [
+ "SHP"
+ ],
+ "papua new guinean kina": [
+ "PGK"
+ ],
+ "aud": [
+ "AUD"
+ ],
+ "\u20ab": [
+ "VND"
+ ],
+ "olasz li\u0301ra": [
+ "ITL"
+ ],
+ "aserbaidschan manat": [
+ "AZN"
+ ],
+ "ethiopian dollar": [
+ "ETB"
+ ],
+ "norwegische krone": [
+ "NOK"
+ ],
+ "papoea nieuw guinese kina": [
+ "PGK"
+ ],
+ "som uzbeko": [
+ "UZS"
+ ],
+ "yuan chino": [
+ "CNY"
+ ],
+ "nuevo dolar de taiwan": [
+ "TWD"
+ ],
+ "zweedse kronen": [
+ "SEK"
+ ],
+ "dollar des i\u0302les cai\u0308mans": [
+ "KYD"
+ ],
+ "do\u0301lar de singapur": [
+ "SGD"
+ ],
+ "gru\u0301z lari": [
+ "GEL"
+ ],
+ "escudo mozambiquen\u0303o": [
+ "MZE"
+ ],
+ "peso filipino": [
+ "PHP"
+ ],
+ "grivnia ucraniana": [
+ "UAH"
+ ],
+ "salamon szigeteki dolla\u0301r": [
+ "SBD"
+ ],
+ "barbados dollar": [
+ "BBD"
+ ],
+ "fuang": [
+ "THB"
+ ],
+ "dirham marroqui": [
+ "MAD"
+ ],
+ "sri lankan rupees": [
+ "LKR"
+ ],
+ "qindarka": [
+ "ALL"
+ ],
+ "dinaro macedone": [
+ "MKD"
+ ],
+ "togrog": [
+ "MNT"
+ ],
+ "q\u0259pik": [
+ "AZN"
+ ],
+ "special drawing rights": [
+ "XDR"
+ ],
+ "gibralta\u0301ri font": [
+ "GIP"
+ ],
+ "dinar bahraini": [
+ "BHD"
+ ],
+ "marokkaanse dirham": [
+ "MAD"
+ ],
+ "rouble sovie\u0301tique": [
+ "SUR"
+ ],
+ "tanzanian shilling": [
+ "TZS"
+ ],
+ "libra de siria": [
+ "SYP"
+ ],
+ "rand sudafricano": [
+ "ZAR"
+ ],
+ "seychelse roepie": [
+ "SCR"
+ ],
+ "seychelse roepia": [
+ "SCR"
+ ],
+ "forint": [
+ "HUF"
+ ],
+ "dinar algerino": [
+ "DZD"
+ ],
+ "roupie du sri lanka": [
+ "LKR"
+ ],
+ "katar riyal": [
+ "QAR"
+ ],
+ "schekalim": [
+ "ILS"
+ ],
+ "corona checoslovaca": [
+ "CSK"
+ ],
+ "baht tailande\u0301s": [
+ "THB"
+ ],
+ "nuevo peso": [
+ "ARS",
+ "UYU"
+ ],
+ "cuna croata": [
+ "HRK"
+ ],
+ "nieuwe israe\u0308lische shekel": [
+ "ILS"
+ ],
+ "nieuwe israelische shekel": [
+ "ILS"
+ ],
+ "dollar des i\u0302les fidji": [
+ "FJD"
+ ],
+ "nieuw zeelandse dollar": [
+ "NZD"
+ ],
+ "tanza\u0301niai shilling": [
+ "TZS"
+ ],
+ "gold franc": [
+ "XFO"
+ ],
+ "tongan pa`anga": [
+ "TOP"
+ ],
+ "francia frank": [
+ "FRF"
+ ],
+ "brl": [
+ "BRL"
+ ],
+ "isla\u0308ndische wa\u0308hrung": [
+ "ISK"
+ ],
+ "guyana dollar": [
+ "GYD"
+ ],
+ "dollaro australiano": [
+ "AUD"
+ ],
+ "nakfa e\u0301rythre\u0301en": [
+ "ERN"
+ ],
+ "kap verde escudo": [
+ "CVE"
+ ],
+ "dinar iraqui\u0301": [
+ "IQD"
+ ],
+ "vietnamese dong": [
+ "VND"
+ ],
+ "neuer sol": [
+ "PEN"
+ ],
+ "peso de argentina": [
+ "ARS"
+ ],
+ "ddr mark": [
+ "DDM"
+ ],
+ "br$": [
+ "BND"
+ ],
+ "e\u0301szak koreai von": [
+ "KPW"
+ ],
+ "japanse yen": [
+ "JPY"
+ ],
+ "franco svizzero": [
+ "CHF"
+ ],
+ "afghani afgano": [
+ "AFN"
+ ],
+ "lira siriana": [
+ "SYP"
+ ],
+ "boliviano": [
+ "BOB"
+ ],
+ "vanuatui vatu": [
+ "VUV"
+ ],
+ "tnd": [
+ "TND"
+ ],
+ "manat turkmene": [
+ "TMT"
+ ],
+ "namibia dollar": [
+ "NAD"
+ ],
+ "ern": [
+ "ERN"
+ ],
+ "manat turkmeno": [
+ "TMT"
+ ],
+ "bds$": [
+ "BBD"
+ ],
+ "bhutaanse ngultrum": [
+ "BTN"
+ ],
+ "peso chilien": [
+ "CLP"
+ ],
+ "dolar jamaicano": [
+ "JMD"
+ ],
+ "bahamas dollar": [
+ "BSD"
+ ],
+ "eritrese nakfa": [
+ "ERN"
+ ],
+ "czk": [
+ "CZK"
+ ],
+ "engels pond": [
+ "GBP"
+ ],
+ "dolar de bermudas": [
+ "BMD"
+ ],
+ "taka bangladeshi\u0301": [
+ "BDT"
+ ],
+ "riyal del qatar": [
+ "QAR"
+ ],
+ "kuwaiti dinar": [
+ "KWD"
+ ],
+ "seychellen rupie": [
+ "SCR"
+ ],
+ "boli\u0301var ve\u0301ne\u0301zue\u0301lien": [
+ "VEF"
+ ],
+ "sri lanka rupie": [
+ "LKR"
+ ],
+ "do\u0301lar de brunei": [
+ "BND"
+ ],
+ "do\u0301lar de las islas salomo\u0301n": [
+ "SBD"
+ ],
+ "lak": [
+ "LAK"
+ ],
+ "sum uzbeko": [
+ "UZS"
+ ],
+ "kurus\u0327": [
+ "TRY"
+ ],
+ "iraqi dinar": [
+ "IQD"
+ ],
+ "livre sterling": [
+ "GBP"
+ ],
+ "angolai kwanza": [
+ "AOA"
+ ],
+ "lat": [
+ "LVL"
+ ],
+ "lek albanais": [
+ "ALL"
+ ],
+ "brunei dolla\u0301r": [
+ "BND"
+ ],
+ "tetri": [
+ "GEL"
+ ],
+ "sterlina sudsudanese": [
+ "SSP"
+ ],
+ "mo\u0308ngo\u0308": [
+ "MNT"
+ ],
+ "mexican un peso coinage": [
+ "MXN"
+ ],
+ "djiboutische frank": [
+ "DJF"
+ ],
+ "seychelle i ru\u0301pia": [
+ "SCR"
+ ],
+ "litauischer litas": [
+ "LTL"
+ ],
+ "zambiaanse kwacha": [
+ "ZMW"
+ ],
+ "maldi\u0301v szigeteki ru\u0301fia": [
+ "MVR"
+ ],
+ "dinar bahreini\u0301": [
+ "BHD"
+ ],
+ "barbadiaanse dollar": [
+ "BBD"
+ ],
+ "drachme": [
+ "GRD"
+ ],
+ "emalangeni": [
+ "SZL"
+ ],
+ "canadese dollar": [
+ "CAD"
+ ],
+ "mx$": [
+ "MXN"
+ ],
+ "chinesischer renminbi": [
+ "CNY"
+ ],
+ "macedonian denar": [
+ "MKD"
+ ],
+ "uic franc": [
+ "XFU"
+ ],
+ "won surcoreano": [
+ "KRW"
+ ],
+ "nuevo shekel": [
+ "ILS"
+ ],
+ "arubaanse florin": [
+ "AWG"
+ ],
+ "ruanda franc": [
+ "RWF"
+ ],
+ "franco burundes": [
+ "BIF"
+ ],
+ "makao\u0301i pataca": [
+ "MOP"
+ ],
+ "koruna c\u030ceska\u0301": [
+ "CZK"
+ ],
+ "dirham des e\u0301mirats": [
+ "AED"
+ ],
+ "mozambiki metical": [
+ "MZN"
+ ],
+ "panamanian balboa": [
+ "PAB"
+ ],
+ "syrian pound": [
+ "SYP"
+ ],
+ "ki\u0301nai ju\u0308an": [
+ "CNY"
+ ],
+ "mxn": [
+ "MXN"
+ ],
+ "dolar fijiano": [
+ "FJD"
+ ],
+ "a\u0308thiopischer birr": [
+ "ETB"
+ ],
+ "kirgiz szom": [
+ "KGS"
+ ],
+ "dinar du ye\u0301men du sud": [
+ "YER"
+ ],
+ "peso moneda nacional": [
+ "ARS"
+ ],
+ "scellino somalo": [
+ "SOS"
+ ],
+ "cseh korona": [
+ "CZK"
+ ],
+ "uruguayan peso": [
+ "UYU"
+ ],
+ "cl$": [
+ "CLP"
+ ],
+ "convertibele peso": [
+ "CUC"
+ ],
+ "britisches pfund": [
+ "GBP"
+ ],
+ "tonga dollar": [
+ "TOP"
+ ],
+ "peso cubain convertible": [
+ "CUC"
+ ],
+ "argentin peso": [
+ "ARS"
+ ],
+ "lira maltesa": [
+ "MTL"
+ ],
+ "bosnische konvertibilna marka": [
+ "BAM"
+ ],
+ "francs suisse": [
+ "CHF"
+ ],
+ "gourde haitienne": [
+ "HTG"
+ ],
+ "shilling somali": [
+ "SOS"
+ ],
+ "nt$": [
+ "TWD"
+ ],
+ "rp": [
+ "IDR"
+ ],
+ "dolar de las bahamas": [
+ "BSD"
+ ],
+ "rs": [
+ "BRL"
+ ],
+ "monnaie danoise": [
+ "DKK"
+ ],
+ "swaziland lilangeni": [
+ "SZL"
+ ],
+ "tugrig": [
+ "MNT"
+ ],
+ "gersh": [
+ "ETB"
+ ],
+ "rouble russe": [
+ "RUB"
+ ],
+ "tugrik": [
+ "MNT"
+ ],
+ "kip": [
+ "LAK"
+ ],
+ "dirham de los emiratos arabes unidos": [
+ "AED"
+ ],
+ "escudo capverdien": [
+ "CVE"
+ ],
+ "jemeni ria\u0301l": [
+ "YER"
+ ],
+ "fcfp": [
+ "XPF"
+ ],
+ "rwanda franc": [
+ "RWF"
+ ],
+ "bolivar venezolano": [
+ "VEF"
+ ],
+ "zambiai kwacha": [
+ "ZMW"
+ ],
+ "lev bulgaro": [
+ "BGN"
+ ],
+ "lev bulgare": [
+ "BGN"
+ ],
+ "nakfa eritreo": [
+ "ERN"
+ ],
+ "danish krone": [
+ "DKK"
+ ],
+ "monnaie britannique": [
+ "GBP"
+ ],
+ "r$": [
+ "BRL"
+ ],
+ "di\u0301rham marroqui\u0301": [
+ "MAD"
+ ],
+ "institut d'e\u0301mission d'outre mer": [
+ "XPF"
+ ],
+ "manat azerbaiyano": [
+ "AZN"
+ ],
+ "vietnami \u0111o\u0302\u0300ng": [
+ "VND"
+ ],
+ "riyal iraniano": [
+ "IRR"
+ ],
+ "franco guineano": [
+ "GNF"
+ ],
+ "fiorino arubano": [
+ "AWG"
+ ],
+ "rand": [
+ "ZAR"
+ ],
+ "schekel": [
+ "ILS"
+ ],
+ "sterlina di sant'elena": [
+ "SHP"
+ ],
+ "pound sterling": [
+ "GBP"
+ ],
+ "nacfa eritreo": [
+ "ERN"
+ ],
+ "dolar taiwanes": [
+ "TWD"
+ ],
+ "koruna c\u030ceska": [
+ "CZK"
+ ],
+ "\u20ad": [
+ "LAK"
+ ],
+ "kro\u0301na": [
+ "ISK"
+ ],
+ "denar macedonio": [
+ "MKD"
+ ],
+ "libra libanesa": [
+ "LBP"
+ ],
+ "dolar belicen\u0303o": [
+ "BZD"
+ ],
+ "lesotho\u0301i loti": [
+ "LSL"
+ ],
+ "colombian peso": [
+ "COP"
+ ],
+ "do\u0301lar de brune\u0301i": [
+ "BND"
+ ],
+ "szingapu\u0301ri dolla\u0301r": [
+ "SGD"
+ ],
+ "franc poincare": [
+ "XFO"
+ ],
+ "metical mozambiqueno": [
+ "MZN"
+ ],
+ "filipijnse peso": [
+ "PHP"
+ ],
+ "somoni": [
+ "TJS"
+ ],
+ "lempire hondurien": [
+ "HNL"
+ ],
+ "angolan kwanza": [
+ "AOA"
+ ],
+ "schwedenkrone": [
+ "SEK"
+ ],
+ "lire maltaise": [
+ "MTL"
+ ],
+ "balboa paname\u0301en": [
+ "PAB"
+ ],
+ "israelische lire": [
+ "ILS"
+ ],
+ "nzd": [
+ "NZD"
+ ],
+ "hryvnia ucraina": [
+ "UAH"
+ ],
+ "pataca": [
+ "MOP"
+ ],
+ "coronas suecas": [
+ "SEK"
+ ],
+ "cape verde escudo": [
+ "CVE"
+ ],
+ "rupia pakistani": [
+ "PKR"
+ ],
+ "hungarian forint": [
+ "HUF"
+ ],
+ "rupia pakistana": [
+ "PKR"
+ ],
+ "bs.": [
+ "BOB"
+ ],
+ "kopeken": [
+ "RUB"
+ ],
+ "dolar bahameno": [
+ "BSD"
+ ],
+ "de\u0301l koreai von": [
+ "KRW"
+ ],
+ "zo\u0308ld foki ko\u0308zta\u0301rsasa\u0301gi escudo": [
+ "CVE"
+ ],
+ "romanian leu": [
+ "RON"
+ ],
+ "etio\u0301p birr": [
+ "ETB"
+ ],
+ "indiai ru\u0301pia": [
+ "INR"
+ ],
+ "livre de gibraltar": [
+ "GIP"
+ ],
+ "pa\u2019anga": [
+ "TOP"
+ ],
+ "mexiko\u0301i pezo\u0301": [
+ "MXN"
+ ],
+ "tansania schilling": [
+ "TZS"
+ ],
+ "omanitische rial": [
+ "OMR"
+ ],
+ "rial omani\u0301": [
+ "OMR"
+ ],
+ "milandor": [
+ "RSD"
+ ],
+ "canadischer dollar": [
+ "CAD"
+ ],
+ "dollaro delle isole salomone": [
+ "SBD"
+ ],
+ "noorse kronen": [
+ "NOK"
+ ],
+ "samoan ta\u0304la\u0304": [
+ "WST"
+ ],
+ "aruban florin": [
+ "AWG"
+ ],
+ "iraakse dinar": [
+ "IQD"
+ ],
+ "malaysian ringgit": [
+ "MYR"
+ ],
+ "som usbeco": [
+ "UZS"
+ ],
+ "ariary": [
+ "MGA"
+ ],
+ "kyat": [
+ "MMK"
+ ],
+ "austral (moneda de argentina)": [
+ "ARA"
+ ],
+ "bruneise dollar": [
+ "BND"
+ ],
+ "leu romeno": [
+ "RON"
+ ],
+ "kolumbiai peso": [
+ "COP"
+ ],
+ "oezbeekse sum": [
+ "UZS"
+ ],
+ "burundese frank": [
+ "BIF"
+ ],
+ "austral (argentina)": [
+ "ARA"
+ ],
+ "riyal qatarien": [
+ "QAR"
+ ],
+ "quetzal guatemalteque": [
+ "GTQ"
+ ],
+ "taiwan dollar": [
+ "TWD"
+ ],
+ "dolar de namibia": [
+ "NAD"
+ ],
+ "indiase rupee": [
+ "INR"
+ ],
+ "dollaro delle figi": [
+ "FJD"
+ ],
+ "cfa franc beac": [
+ "XAF"
+ ],
+ "hrk": [
+ "HRK"
+ ],
+ "peso dominicano": [
+ "DOP"
+ ],
+ "sh.so.": [
+ "SOS"
+ ],
+ "kwacha zambiano": [
+ "ZMW"
+ ],
+ "\u0441\u043e\u043c": [
+ "KGS"
+ ],
+ "roupie nepalaise": [
+ "NPR"
+ ],
+ "bermudian dollar": [
+ "BMD"
+ ],
+ "cookinseln dollar": [
+ "NZD"
+ ],
+ "bam": [
+ "BAM"
+ ],
+ "kwanza angolen\u0303o": [
+ "AOA"
+ ],
+ "dinaro libico": [
+ "LYD"
+ ],
+ "malagasy ariary": [
+ "MGA"
+ ],
+ "dolar liberiano": [
+ "LRD"
+ ],
+ "falklandeilands pond": [
+ "FKP"
+ ],
+ "nouvelle livre turque": [
+ "TRY"
+ ],
+ "szovjet rubel": [
+ "SUR"
+ ],
+ "magyar forint": [
+ "HUF"
+ ],
+ "peso cubain": [
+ "CUP"
+ ],
+ "xfo": [
+ "XFO"
+ ],
+ "pakiszta\u0301ni ru\u0301pia": [
+ "PKR"
+ ],
+ "georgische lari": [
+ "GEL"
+ ],
+ "loti": [
+ "LSL"
+ ],
+ "moldawischer leu": [
+ "MDL"
+ ],
+ "dollaro statunitense": [
+ "USD"
+ ],
+ "do\u0301lar bahame\u0301s": [
+ "BSD"
+ ],
+ "lat leto\u0301n": [
+ "LVL"
+ ],
+ "peso cileno": [
+ "CLP"
+ ],
+ "dinar libio": [
+ "LYD"
+ ],
+ "salomon dollar": [
+ "SBD"
+ ],
+ "rupia nepali": [
+ "NPR"
+ ],
+ "cop": [
+ "COP"
+ ],
+ "sri\u0301 lanka i ru\u0301pia": [
+ "LKR"
+ ],
+ "maloti": [
+ "LSL"
+ ],
+ "drtrigonbot:exchange rate data:hrk": [
+ "HRK"
+ ],
+ "franco ruandese": [
+ "RWF"
+ ],
+ "ils": [
+ "ILS"
+ ],
+ "bangladeshi taka": [
+ "BDT"
+ ],
+ "konvertierbarer peso": [
+ "CUC"
+ ],
+ "she\u0301kel": [
+ "ILS"
+ ],
+ "kwd": [
+ "KWD"
+ ],
+ "bahrain dinar": [
+ "BHD"
+ ],
+ "sfr.": [
+ "CHF"
+ ],
+ "livre syrienne": [
+ "SYP"
+ ],
+ "macao pataca": [
+ "MOP"
+ ],
+ "dolar de las islas caiman": [
+ "KYD"
+ ],
+ "dollaro del brunei": [
+ "BND"
+ ],
+ "chil$": [
+ "CLP"
+ ],
+ "honduranischer lempira": [
+ "HNL"
+ ],
+ "frf": [
+ "FRF"
+ ],
+ "nakfa": [
+ "ERN"
+ ],
+ "ghanese cedi": [
+ "GHS"
+ ],
+ "dalasi gambien": [
+ "GMD"
+ ],
+ "braziliaanse real": [
+ "BRL"
+ ],
+ "frw": [
+ "RWF"
+ ],
+ "libra falkland": [
+ "FKP"
+ ],
+ "algerijnse dinar": [
+ "DZD"
+ ],
+ "dinar du bahrei\u0308n": [
+ "BHD"
+ ],
+ "dinar serbio": [
+ "RSD"
+ ],
+ "rupias indias": [
+ "INR"
+ ],
+ "lesotho loti": [
+ "LSL"
+ ],
+ "do\u0301lar guyane\u0301s": [
+ "GYD"
+ ],
+ "mauritanian ouguiya": [
+ "MRO"
+ ],
+ "greek drachma": [
+ "GRD"
+ ],
+ "east caribbean dollar": [
+ "XCD"
+ ],
+ "dirham de emiratos a\u0301rabes unidos": [
+ "AED"
+ ],
+ "scellino tanzaniano": [
+ "TZS"
+ ],
+ "aurar": [
+ "ISK"
+ ],
+ "oost duitse mark": [
+ "DDM"
+ ],
+ "franc guine\u0301en": [
+ "GNF"
+ ],
+ "dollaro hongkonghese": [
+ "HKD"
+ ],
+ "sll": [
+ "SLL"
+ ],
+ "\u09f3": [
+ "BDT"
+ ],
+ "rial saudita": [
+ "SAR"
+ ],
+ "tzs": [
+ "TZS"
+ ],
+ "real bresilien": [
+ "BRL"
+ ],
+ "irakischer dinar": [
+ "IQD"
+ ],
+ "rupias": [
+ "INR"
+ ],
+ "sistema u\u0301nico de compensacio\u0301n regional": [
+ "XSU"
+ ],
+ "franco frances": [
+ "FRF"
+ ],
+ "costaricaanse colo\u0301n": [
+ "CRC"
+ ],
+ "lita lituano": [
+ "LTL"
+ ],
+ "\u20ae": [
+ "MNT"
+ ],
+ "\u0434\u043e\u043b\u0430\u0440": [
+ "MKD"
+ ],
+ "peso filippino": [
+ "PHP"
+ ],
+ "dolar neocelandes": [
+ "NZD"
+ ],
+ "to\u0308gro\u0308g": [
+ "MNT"
+ ],
+ "rupiah": [
+ "IDR"
+ ],
+ "zersto\u0308\u00dft sterling": [
+ "GBP"
+ ],
+ "can$": [
+ "CAD"
+ ],
+ "pgk": [
+ "PGK"
+ ],
+ "rupia india": [
+ "INR"
+ ],
+ "do\u0301lar belicen\u0303o": [
+ "BZD"
+ ],
+ "nis": [
+ "ILS"
+ ],
+ "letse lats": [
+ "LVL"
+ ],
+ "slrs": [
+ "LKR"
+ ],
+ "dominikanischer peso": [
+ "DOP"
+ ],
+ "emira\u0301tusi dirham": [
+ "AED"
+ ],
+ "litas lituano": [
+ "LTL"
+ ],
+ "litas lituana": [
+ "LTL"
+ ],
+ "rupia nepali\u0301": [
+ "NPR"
+ ],
+ "thb": [
+ "THB"
+ ],
+ "swazi lilangeni": [
+ "SZL"
+ ],
+ "yen": [
+ "JPY"
+ ],
+ "flori\u0301n hungaro": [
+ "HUF"
+ ],
+ "gourde hai\u0308tienne": [
+ "HTG"
+ ],
+ "yer": [
+ "YER"
+ ],
+ "argentinischer austral": [
+ "ARA"
+ ],
+ "bolivar ve\u0301ne\u0301zue\u0301lien": [
+ "VEF"
+ ],
+ "bolivianischer boliviano": [
+ "BOB"
+ ],
+ "sheqalim": [
+ "ILS"
+ ],
+ "\u20af": [
+ "GRD"
+ ],
+ "brits pond": [
+ "GBP"
+ ],
+ "sterlina sudanese": [
+ "SDG"
+ ],
+ "koruna cesko slovenska": [
+ "CSK"
+ ],
+ "argent chinois": [
+ "CNY"
+ ],
+ "libische dinar": [
+ "LYD"
+ ],
+ "libanese pond": [
+ "LBP"
+ ],
+ "burundian franc": [
+ "BIF"
+ ],
+ "nuevo sol peruano": [
+ "PEN"
+ ],
+ "singapore dollar": [
+ "SGD"
+ ],
+ "dollar hai\u0308tien": [
+ "HTG"
+ ],
+ "balboa panameen": [
+ "PAB"
+ ],
+ "aserbaidschanischer manat": [
+ "AZN"
+ ],
+ "co\u0301rdoba": [
+ "NIO"
+ ],
+ "sterlina delle falkland": [
+ "FKP"
+ ],
+ "peso messicano": [
+ "MXN"
+ ],
+ "millime": [
+ "TND"
+ ],
+ "omaanse rial": [
+ "OMR"
+ ],
+ "sjekel": [
+ "ILS"
+ ],
+ "vatu": [
+ "VUV"
+ ],
+ "colo\u0301n": [
+ "CRC"
+ ],
+ "bosnisch herzegowinische konvertible mark": [
+ "BAM"
+ ],
+ "dollar guyanien": [
+ "GYD"
+ ],
+ "cedi": [
+ "GHS"
+ ],
+ "rupia de mauricio": [
+ "MUR"
+ ],
+ "cny": [
+ "CNY"
+ ],
+ "pataca di macao": [
+ "MOP"
+ ],
+ "argentine austral": [
+ "ARA"
+ ],
+ "austral (wa\u0308hrung)": [
+ "ARA"
+ ],
+ "nuevo do\u0301lar taiwane\u0301s": [
+ "TWD"
+ ],
+ "dinar bahraini\u0301": [
+ "BHD"
+ ],
+ "som kirghizo": [
+ "KGS"
+ ],
+ "baht": [
+ "THB"
+ ],
+ "sri lanka rupee": [
+ "LKR"
+ ],
+ "zsenminpi": [
+ "CNY"
+ ],
+ "ryal saoudien": [
+ "SAR"
+ ],
+ "djibouti franc": [
+ "DJF"
+ ],
+ "pula del botswana": [
+ "BWP"
+ ],
+ "mauritiaanse rupee": [
+ "MUR"
+ ],
+ "syrische lira": [
+ "SYP"
+ ],
+ "centas": [
+ "LTL"
+ ],
+ "dollars": [
+ "USD"
+ ],
+ "guineai frank": [
+ "GNF"
+ ],
+ "panamai balboa": [
+ "PAB"
+ ],
+ "dollaro": [
+ "BBD",
+ "BZD"
+ ],
+ "us dollar": [
+ "USD"
+ ],
+ "ta\u0304la\u0304": [
+ "WST"
+ ],
+ "peso dominicain": [
+ "DOP"
+ ],
+ "\u4eba\u6c11\u5e01": [
+ "CNY"
+ ],
+ "libra de gibraltar": [
+ "GIP"
+ ],
+ "mark est allemand": [
+ "DDM"
+ ],
+ "libra jamaicana": [
+ "JMD"
+ ],
+ "eritrean nakfa": [
+ "ERN"
+ ],
+ "som": [
+ "KGS",
+ "UZS"
+ ],
+ "sol": [
+ "PEN"
+ ],
+ "bath": [
+ "THB"
+ ],
+ "do\u0301lar surinames": [
+ "SRD"
+ ],
+ "srilankaanse roepie": [
+ "LKR"
+ ],
+ "oma\u0301ni ria\u0301l": [
+ "OMR"
+ ],
+ "dolar guyane\u0301s": [
+ "GYD"
+ ],
+ "dollaro delle bahamas": [
+ "BSD"
+ ],
+ "georgischer lari": [
+ "GEL"
+ ],
+ "sa\u0303o tome\u0301 e\u0301s pri\u0301ncipe i dobra": [
+ "STD"
+ ],
+ "namibische dollar": [
+ "NAD"
+ ],
+ "lira turca": [
+ "TRY"
+ ],
+ "austral": [
+ "ARA"
+ ],
+ "tune\u0301ziai dina\u0301r": [
+ "TND"
+ ],
+ "pyg": [
+ "PYG"
+ ],
+ "\u060b": [
+ "AFN"
+ ],
+ "tajikistani somoni": [
+ "TJS"
+ ],
+ "fiji dollar": [
+ "FJD"
+ ],
+ "south african rand": [
+ "ZAR"
+ ],
+ "seychelse rupee": [
+ "SCR"
+ ],
+ "anciens francs": [
+ "FRF"
+ ],
+ "nuevo sheqel": [
+ "ILS"
+ ],
+ "amerikai dolla\u0301r": [
+ "USD"
+ ],
+ "do\u0301lar canadiense": [
+ "CAD"
+ ],
+ "turkmenistan manat": [
+ "TMT"
+ ],
+ "litas": [
+ "LTL"
+ ],
+ "peso cubano": [
+ "CUP"
+ ],
+ "maltese lira": [
+ "MTL"
+ ],
+ "azn": [
+ "AZN"
+ ],
+ "maltese lire": [
+ "MTL"
+ ],
+ "sve\u0301d korona": [
+ "SEK"
+ ],
+ "konvertibilna marka": [
+ "BAM"
+ ],
+ "peso": [
+ "COP",
+ "DOP",
+ "MXN"
+ ],
+ "franse frank": [
+ "FRF"
+ ],
+ "mexiko\u0301i peso": [
+ "MXN"
+ ],
+ "pesos": [
+ "MXN"
+ ],
+ "shilling kenyan": [
+ "KES"
+ ],
+ "iqd": [
+ "IQD"
+ ],
+ "colo\u0301n costaricain": [
+ "CRC"
+ ],
+ "dinar soudanais": [
+ "SDG"
+ ],
+ "peso colombien": [
+ "COP"
+ ],
+ "renminbi cinese": [
+ "CNY"
+ ],
+ "mark der deutschen notenbank": [
+ "DDM"
+ ],
+ "re\u0301al": [
+ "BRL"
+ ],
+ "mauritius rupie": [
+ "MUR"
+ ],
+ "tongai pa'anga": [
+ "TOP"
+ ],
+ "deutsche mark der deutschen notenbank": [
+ "DDM"
+ ],
+ "ddr geld": [
+ "DDM"
+ ],
+ "usbekistan som": [
+ "UZS"
+ ],
+ "trinidad und tobago dollar": [
+ "TTD"
+ ],
+ "guyanai dolla\u0301r": [
+ "GYD"
+ ],
+ "do\u0301lar de bermuda": [
+ "BMD"
+ ],
+ "peso convertible": [
+ "CUC"
+ ],
+ "livre britannique": [
+ "GBP"
+ ],
+ "italienische lira": [
+ "ITL"
+ ],
+ "italienische lire": [
+ "ITL"
+ ],
+ "kenyai shilling": [
+ "KES"
+ ],
+ "li\u0301biai dina\u0301r": [
+ "LYD"
+ ],
+ "nuevo dolar taiwanes": [
+ "TWD"
+ ],
+ "fijan dollar": [
+ "FJD"
+ ],
+ "uruguayischer peso": [
+ "UYU"
+ ],
+ "neuseela\u0308ndischer dollar": [
+ "NZD"
+ ],
+ "csendes o\u0301cea\u0301ni valutako\u0308zo\u0308sse\u0301gi frank": [
+ "XPF"
+ ],
+ "poisha": [
+ "BDT"
+ ],
+ "lat letton": [
+ "LVL"
+ ],
+ "n$": [
+ "NAD"
+ ],
+ "rwandan franc": [
+ "RWF"
+ ],
+ "lempira": [
+ "HNL"
+ ],
+ "speciale trekkingsrechten": [
+ "XDR"
+ ],
+ "maldivian rufiyaa": [
+ "MVR"
+ ],
+ "rwandan frank": [
+ "RWF"
+ ],
+ "israe\u0308lische lire": [
+ "ILS"
+ ],
+ "afgani": [
+ "AFN"
+ ],
+ "rol": [
+ "RON"
+ ],
+ "u+20bd": [
+ "RUB"
+ ],
+ "s\u0192": [
+ "SRD"
+ ],
+ "dinar bahreini": [
+ "BHD"
+ ],
+ "tongai pa\u02bbanga": [
+ "TOP"
+ ],
+ "franco suizo": [
+ "CHF"
+ ],
+ "marco convertible": [
+ "BAM"
+ ],
+ "forint hongrois": [
+ "HUF"
+ ],
+ "som kirguis": [
+ "KGS"
+ ],
+ "israeli new shekel": [
+ "ILS"
+ ],
+ "som kirguiz": [
+ "KGS"
+ ],
+ "albanischer lek": [
+ "ALL"
+ ],
+ "vef": [
+ "VEF"
+ ],
+ "kongo franc": [
+ "CDF"
+ ],
+ "mexicaanse peso": [
+ "MXN"
+ ],
+ "argentine peso": [
+ "ARS"
+ ],
+ "guatemaltekischer quetzal": [
+ "GTQ"
+ ],
+ "novo kwanza": [
+ "AOA"
+ ],
+ "zuid soedanese pond": [
+ "SSP"
+ ],
+ "horva\u0301t kuna": [
+ "HRK"
+ ],
+ "dolar neozelandes": [
+ "NZD"
+ ],
+ "tu\u0308rkme\u0301n manat": [
+ "TMT"
+ ],
+ "lilangeni sign": [
+ "SZL"
+ ],
+ "new taiwan dollar": [
+ "TWD"
+ ],
+ "swazische lilangeni": [
+ "SZL"
+ ],
+ "stotinki": [
+ "BGN"
+ ],
+ "\u0111o\u0302\u0300ng vietnamita": [
+ "VND"
+ ],
+ "franco burunde\u0301s": [
+ "BIF"
+ ],
+ "stotinka": [
+ "BGN"
+ ],
+ "cordoba nicaragu\u0308ense": [
+ "NIO"
+ ],
+ "lebanese pound": [
+ "LBP"
+ ],
+ "flori\u0301n aruben\u0303o": [
+ "AWG"
+ ],
+ "algerian dinar": [
+ "DZD"
+ ],
+ "dinar jordano": [
+ "JOD"
+ ],
+ "rial saoudien": [
+ "SAR"
+ ],
+ "litva\u0301n litas": [
+ "LTL"
+ ],
+ "scellino ugandese": [
+ "UGX"
+ ],
+ "zai\u0308re": [
+ "CDF"
+ ],
+ "florin d\u2019aruba": [
+ "AWG"
+ ],
+ "grivnia ucraina": [
+ "UAH"
+ ],
+ "sambischer kwacha": [
+ "ZMW"
+ ],
+ "filler": [
+ "HUF"
+ ],
+ "ringgit": [
+ "MYR"
+ ],
+ "rupia del pakistan": [
+ "PKR"
+ ],
+ "nieuwe turkse lira": [
+ "TRY"
+ ],
+ "chilei peso": [
+ "CLP"
+ ],
+ "iranian rial": [
+ "IRR"
+ ],
+ "tadzjiekse somoni": [
+ "TJS"
+ ],
+ "metical mozambiquen\u0303o": [
+ "MZN"
+ ],
+ "sterlina inglese": [
+ "GBP"
+ ],
+ "mauritian rupee": [
+ "MUR"
+ ],
+ "dinaro del bahrain": [
+ "BHD"
+ ],
+ "venezuelai boli\u0301var": [
+ "VEF"
+ ],
+ "ruma\u0308nischer ban": [
+ "RON"
+ ],
+ "dolar de las islas salomo\u0301n": [
+ "SBD"
+ ],
+ "roepiah": [
+ "IDR"
+ ],
+ "dinaro serbo": [
+ "RSD"
+ ],
+ "riyal catari\u0301": [
+ "QAR"
+ ],
+ "dollaro surinamese": [
+ "SRD"
+ ],
+ "libra sursudanesa": [
+ "SSP"
+ ],
+ "south sudanese pound": [
+ "SSP"
+ ],
+ "boli\u0301var venezuelano": [
+ "VEF"
+ ],
+ "shilling ke\u0301nyan": [
+ "KES"
+ ],
+ "dolar suriname\u0301s": [
+ "SRD"
+ ],
+ "bolivares fuertes": [
+ "VEF"
+ ],
+ "francos suizos": [
+ "CHF"
+ ],
+ "botsuanischer pula": [
+ "BWP"
+ ],
+ "nieuwe israe\u0308lische sjekel": [
+ "ILS"
+ ],
+ "bahama dollar": [
+ "BSD"
+ ],
+ "sierra leonischer leone": [
+ "SLL"
+ ],
+ "bob": [
+ "BOB"
+ ],
+ "botswana pula": [
+ "BWP"
+ ],
+ "nepa\u0301li ru\u0301pia": [
+ "NPR"
+ ],
+ "dollaro taiwanese": [
+ "TWD"
+ ],
+ "dolar de belice": [
+ "BZD"
+ ],
+ "sierra leonean leone": [
+ "SLL"
+ ],
+ "franco gibutiano": [
+ "DJF"
+ ],
+ "franco": [
+ "RWF",
+ "DJF",
+ "CDF",
+ "XPF"
+ ],
+ "nouveau dollar de tai\u0308wan": [
+ "TWD"
+ ],
+ "libras esterlinas": [
+ "GBP"
+ ],
+ "paraguayischer guarani\u0301": [
+ "PYG"
+ ],
+ "drachme (antike)": [
+ "GRD"
+ ],
+ "\u20b1": [
+ "PHP"
+ ],
+ "s\u20a3": [
+ "CHF"
+ ],
+ "csehszlova\u0301k korona": [
+ "CSK"
+ ],
+ "lithuanian litas": [
+ "LTL"
+ ],
+ "malagassische ariary": [
+ "MGA"
+ ],
+ "afl.": [
+ "AWG"
+ ],
+ "flori\u0301n hu\u0301ngaro": [
+ "HUF"
+ ],
+ "izraeli u\u0301j se\u0301kel": [
+ "ILS"
+ ],
+ "nigeriaanse naira": [
+ "NGN"
+ ],
+ "kazakhstani tenge": [
+ "KZT"
+ ],
+ "south korean won": [
+ "KRW"
+ ],
+ "dollar de hong kong": [
+ "HKD"
+ ],
+ "su\u0308dkoreanischer won": [
+ "KRW"
+ ],
+ "peso mejicano": [
+ "MXN"
+ ],
+ "won nordcoreano": [
+ "KPW"
+ ],
+ "mark der ddr": [
+ "DDM"
+ ],
+ "tschechische krone": [
+ "CZK"
+ ],
+ "solomon islands dollar": [
+ "SBD"
+ ],
+ "boli\u0301viai boliviano": [
+ "BOB"
+ ],
+ "costaricaanse colon": [
+ "CRC"
+ ],
+ "jemen rial": [
+ "YER"
+ ],
+ "mga": [
+ "MGA"
+ ],
+ "kyd": [
+ "KYD"
+ ],
+ "mauritaanse ouguiya": [
+ "MRO"
+ ],
+ "gambiaanse dalasi": [
+ "GMD"
+ ],
+ "gibraltar pound": [
+ "GIP"
+ ],
+ "tsjechoslowaakse kroon": [
+ "CSK"
+ ],
+ "gourde": [
+ "HTG"
+ ],
+ "corona sueca": [
+ "SEK"
+ ],
+ "colon costaricano": [
+ "CRC"
+ ],
+ "franc congolais": [
+ "CDF"
+ ],
+ "florin arubeno": [
+ "AWG"
+ ],
+ "kaapverdische escudo": [
+ "CVE"
+ ],
+ "venezolaanse bolivar": [
+ "VEF"
+ ],
+ "s/": [
+ "PEN"
+ ],
+ "dolar de nueva zelanda": [
+ "NZD"
+ ],
+ "do\u0301lar suriname\u0301s": [
+ "SRD"
+ ],
+ "francs suisses": [
+ "CHF"
+ ],
+ "s$": [
+ "SGD"
+ ],
+ "italiaanse lire": [
+ "ITL"
+ ],
+ "italiaanse lira": [
+ "ITL"
+ ],
+ "bahreinse dinar": [
+ "BHD"
+ ],
+ "sr": [
+ "SAR"
+ ],
+ "corona": [
+ "SEK"
+ ],
+ "font sterling": [
+ "GBP"
+ ],
+ "peso chileno": [
+ "CLP"
+ ],
+ "tala": [
+ "WST"
+ ],
+ "libra gibraltarena": [
+ "GIP"
+ ],
+ "saoedi arabische riyal": [
+ "SAR"
+ ],
+ "guinese frank": [
+ "GNF"
+ ],
+ "dracma (moderna)": [
+ "GRD"
+ ],
+ "franco de burundi": [
+ "BIF"
+ ],
+ "thaise baht": [
+ "THB"
+ ],
+ "koruna": [
+ "CZK"
+ ],
+ "koruna ceska": [
+ "CZK"
+ ],
+ "dram armeno": [
+ "AMD"
+ ],
+ "st. helena pfund": [
+ "SHP"
+ ],
+ "lek albanese": [
+ "ALL"
+ ],
+ "trinidad en tobagodollar": [
+ "TTD"
+ ],
+ "cuban peso": [
+ "CUP"
+ ],
+ "gtq": [
+ "GTQ"
+ ],
+ "djf": [
+ "DJF"
+ ],
+ "east german mark": [
+ "DDM"
+ ],
+ "yuan cinese": [
+ "CNY"
+ ],
+ "jordaanse dinar": [
+ "JOD"
+ ],
+ "guinean franc": [
+ "GNF"
+ ],
+ "szoma\u0301liai shilling": [
+ "SOS"
+ ],
+ "nok": [
+ "NOK"
+ ],
+ "do\u0301lar de namibia": [
+ "NAD"
+ ],
+ "shilingi": [
+ "TZS"
+ ],
+ "franco yibuti": [
+ "DJF"
+ ],
+ "rufiyah": [
+ "MVR"
+ ],
+ "col$": [
+ "COP"
+ ],
+ "rufiyaa": [
+ "MVR"
+ ],
+ "tt$": [
+ "TTD"
+ ],
+ "cheli\u0301n": [
+ "UGX",
+ "TZS",
+ "SOS"
+ ],
+ "gryvnia": [
+ "UAH"
+ ],
+ "cfp franc": [
+ "XPF"
+ ],
+ "real brasiliano": [
+ "BRL"
+ ],
+ "cfp frank": [
+ "XPF"
+ ],
+ "taka bengalese": [
+ "BDT"
+ ],
+ "ngwee": [
+ "ZMW"
+ ],
+ "metical mozambicano": [
+ "MZN"
+ ],
+ "lempira honduregna": [
+ "HNL"
+ ],
+ "libra malvinense": [
+ "FKP"
+ ],
+ "nuevo she\u0301quel": [
+ "ILS"
+ ],
+ "rial omanais": [
+ "OMR"
+ ],
+ "arg$": [
+ "ARS"
+ ],
+ "nicaraguanischer co\u0301rdoba": [
+ "NIO"
+ ],
+ "colon costaricien": [
+ "CRC"
+ ],
+ "drtrigonbot:exchange rate data:dkk": [
+ "DKK"
+ ],
+ "goldfranken": [
+ "XFO"
+ ],
+ "roupie indienne": [
+ "INR"
+ ],
+ "afghani": [
+ "AFN"
+ ],
+ "franc cfp": [
+ "XPF"
+ ],
+ "seychelle szigeteki ru\u0301pia": [
+ "SCR"
+ ],
+ "franco ruandes": [
+ "RWF"
+ ],
+ "pesification": [
+ "ARS"
+ ],
+ "dirham des emirats arabes unis": [
+ "AED"
+ ],
+ "$can": [
+ "CAD"
+ ],
+ "franc cfa": [
+ "XAF",
+ "XOF"
+ ],
+ "nepalese roepie": [
+ "NPR"
+ ],
+ "lwei": [
+ "AOA"
+ ],
+ "nuovo peso argentino": [
+ "ARS"
+ ],
+ "indonesian rupiah": [
+ "IDR"
+ ],
+ "guatemalai quetzal": [
+ "GTQ"
+ ],
+ "dolar de singapur": [
+ "SGD"
+ ],
+ "peso de me\u0301xico": [
+ "MXN"
+ ],
+ "surinamese guilder": [
+ "SRG"
+ ],
+ "nigerian naira": [
+ "NGN"
+ ],
+ "peso philippin": [
+ "PHP"
+ ],
+ "mongoolse tugrik": [
+ "MNT"
+ ],
+ "franc pacifique": [
+ "XPF"
+ ],
+ "haitianischer gourde": [
+ "HTG"
+ ],
+ "jemenitische rial": [
+ "YER"
+ ],
+ "do\u0301lar": [
+ "USD",
+ "FJD"
+ ],
+ "kolumbianischer peso": [
+ "COP"
+ ],
+ "co\u0301rdoba nicaraguense": [
+ "NIO"
+ ],
+ "dollar ne\u0301oze\u0301landais": [
+ "NZD"
+ ],
+ "meticais": [
+ "MZN"
+ ],
+ "uqiya": [
+ "MRO"
+ ],
+ "grivnia": [
+ "UAH"
+ ],
+ "lakhs": [
+ "BDT"
+ ],
+ "zar": [
+ "ZAR"
+ ],
+ "bahamian dollar": [
+ "BSD"
+ ],
+ "qa\u0308pik": [
+ "AZN"
+ ],
+ "ukp": [
+ "GBP"
+ ],
+ "paraguayaanse guarani\u0301": [
+ "PYG"
+ ],
+ "mauritiusi ru\u0301pia": [
+ "MUR"
+ ],
+ "philippinischer peso": [
+ "PHP"
+ ],
+ "kambodschanischer riel": [
+ "KHR"
+ ],
+ "huf": [
+ "HUF"
+ ],
+ "dollar de singapour": [
+ "SGD"
+ ],
+ "dom$": [
+ "DOP"
+ ],
+ "dinar du kowei\u0308t": [
+ "KWD"
+ ],
+ "australian dollar": [
+ "AUD"
+ ],
+ "namibian dollar": [
+ "NAD"
+ ],
+ "arubaanse gulden": [
+ "AWG"
+ ],
+ "drachme moderne grecque": [
+ "GRD"
+ ],
+ "dinar kowe\u0301itien": [
+ "KWD"
+ ],
+ "nieuwe israelische sheqel": [
+ "ILS"
+ ],
+ "salyn": [
+ "THB"
+ ],
+ "moldova\u0301n lej": [
+ "MDL"
+ ],
+ "nepalesische rupie": [
+ "NPR"
+ ],
+ "marka convertible": [
+ "BAM"
+ ],
+ "bulgarian lev": [
+ "BGN"
+ ],
+ "tengue": [
+ "KZT"
+ ],
+ "currency of somalia": [
+ "SOS"
+ ],
+ "franc franc\u0327ais": [
+ "FRF"
+ ],
+ "do\u0301lar bahames": [
+ "BSD"
+ ],
+ "som de kirguistan": [
+ "KGS"
+ ],
+ "kip laotiano": [
+ "LAK"
+ ],
+ "sar": [
+ "SAR"
+ ],
+ "ngultrum butane\u0301s": [
+ "BTN"
+ ],
+ "birr etiope": [
+ "ETB"
+ ],
+ "fening": [
+ "BAM"
+ ],
+ "dominicaanse peso": [
+ "DOP"
+ ],
+ "taka": [
+ "BDT"
+ ],
+ "\u20b2": [
+ "PYG"
+ ],
+ "do\u0301lar neozelandes": [
+ "NZD"
+ ],
+ "rial ye\u0301me\u0301nite": [
+ "YER"
+ ],
+ "sterlina sud sudanese": [
+ "SSP"
+ ],
+ "dolar de bermuda": [
+ "BMD"
+ ],
+ "dollar taiwanais": [
+ "TWD"
+ ],
+ "afghanis": [
+ "AFN"
+ ],
+ "uyu": [
+ "UYU"
+ ],
+ "cordoba": [
+ "NIO"
+ ],
+ "bahamaanse dollar": [
+ "BSD"
+ ],
+ "\u0111ong": [
+ "VND"
+ ],
+ "baiza": [
+ "OMR"
+ ],
+ "kazachse tenge": [
+ "KZT"
+ ],
+ "vietnamesischer \u0111o\u0302\u0300ng": [
+ "VND"
+ ],
+ "dollar de brunei": [
+ "BND"
+ ],
+ "dollar du belize": [
+ "BZD"
+ ],
+ "jordanian dinar": [
+ "JOD"
+ ],
+ "nuevo sol peruviano": [
+ "PEN"
+ ],
+ "livre turque": [
+ "TRY"
+ ],
+ "fidschi dollar": [
+ "FJD"
+ ],
+ "franco cfa de africa central": [
+ "XAF"
+ ],
+ "kyrgyzstani som": [
+ "KGS"
+ ],
+ "dolar taiwane\u0301s": [
+ "TWD"
+ ],
+ "quetzales": [
+ "GTQ"
+ ],
+ "pa\u0301pua u\u0301j guineai kina": [
+ "PGK"
+ ],
+ "won nord core\u0301en": [
+ "KPW"
+ ],
+ "couronne danoise": [
+ "DKK"
+ ],
+ "nuevo do\u0301lar de taiwa\u0301n": [
+ "TWD"
+ ],
+ "uruguay peso": [
+ "UYU"
+ ],
+ "boli\u0301vares fuertes": [
+ "VEF"
+ ],
+ "rupia de pakistan": [
+ "PKR"
+ ],
+ "lilangeni": [
+ "SZL"
+ ],
+ "rupia dell'india": [
+ "INR"
+ ],
+ "libra esterlina": [
+ "GBP"
+ ],
+ "koruna ceska\u0301": [
+ "CZK"
+ ],
+ "\u20b3": [
+ "ARA"
+ ],
+ "co\u0301rdoba nicaragu\u0308ense": [
+ "NIO"
+ ],
+ "hongaarse forint": [
+ "HUF"
+ ],
+ "loti lesothan": [
+ "LSL"
+ ],
+ "baht thailandese": [
+ "THB"
+ ],
+ "real brasileno": [
+ "BRL"
+ ],
+ "katari ria\u0301l": [
+ "QAR"
+ ],
+ "uzbekistani som": [
+ "UZS"
+ ],
+ "armenischer dram": [
+ "AMD"
+ ],
+ "jorda\u0301n dina\u0301r": [
+ "JOD"
+ ],
+ "bulgaarse lev": [
+ "BGN"
+ ],
+ "hondurasi lempira": [
+ "HNL"
+ ],
+ "do\u0302\u0300ng vietnamita": [
+ "VND"
+ ],
+ "gel": [
+ "GEL"
+ ],
+ "trinidad en tobago dollar": [
+ "TTD"
+ ],
+ "rupia de maldivas": [
+ "MVR"
+ ],
+ "do\u0301lar liberiano": [
+ "LRD"
+ ],
+ "vanuatuaanse vatu": [
+ "VUV"
+ ],
+ "libe\u0301riai dolla\u0301r": [
+ "LRD"
+ ],
+ "colon costarricense": [
+ "CRC"
+ ],
+ "dobra di sa\u0303o tome\u0301 e pri\u0301ncipe": [
+ "STD"
+ ],
+ "croatian kuna": [
+ "HRK"
+ ],
+ "nouveau sol": [
+ "PEN"
+ ],
+ "wo\u0306n norcoreano": [
+ "KPW"
+ ],
+ "de\u0301l afrikai rand": [
+ "ZAR"
+ ],
+ "dolar bermuden\u0303o": [
+ "BMD"
+ ],
+ "tu\u0308rkische lira": [
+ "TRY"
+ ],
+ "rmb": [
+ "CNY"
+ ],
+ "ringgit malese": [
+ "MYR"
+ ],
+ "marco de la republica democra\u0301tica alemana": [
+ "DDM"
+ ],
+ "j$": [
+ "JMD"
+ ],
+ "lire turque": [
+ "TRY"
+ ],
+ "tunisian dinar": [
+ "TND"
+ ],
+ "falkland pfund": [
+ "FKP"
+ ],
+ "pakistani rupee": [
+ "PKR"
+ ],
+ "central african cfa franc": [
+ "XAF"
+ ],
+ "rouble": [
+ "SUR"
+ ],
+ "ytl": [
+ "TRY"
+ ],
+ "trinidad e\u0301s tobago\u0301 i dolla\u0301r": [
+ "TTD"
+ ],
+ "orosz rubel": [
+ "RUB"
+ ],
+ "dollar de surinam": [
+ "SRD"
+ ],
+ "franco delle comore": [
+ "KMF"
+ ],
+ "so\u02bbm": [
+ "UZS"
+ ],
+ "franse franc": [
+ "FRF"
+ ],
+ "kuna croata": [
+ "HRK"
+ ],
+ "droits de tirage spe\u0301ciaux": [
+ "XDR"
+ ],
+ "kuna croate": [
+ "HRK"
+ ],
+ "dinar de kuwait": [
+ "KWD"
+ ],
+ "dschibuti franc": [
+ "DJF"
+ ],
+ "guinea franc": [
+ "GNF"
+ ],
+ "kwacha zambese": [
+ "ZMW"
+ ],
+ "guatemalteekse quetzal": [
+ "GTQ"
+ ],
+ "chelin keniano": [
+ "KES"
+ ],
+ "livre libanaise": [
+ "LBP"
+ ],
+ "dkk": [
+ "DKK"
+ ],
+ "ouguiya della mauritana": [
+ "MRO"
+ ],
+ "kaaimaneilandse dollar": [
+ "KYD"
+ ],
+ "drtrigonbot:exchange rate data:ltl": [
+ "LTL"
+ ],
+ "comorese frank": [
+ "KMF"
+ ],
+ "us $": [
+ "USD"
+ ],
+ "lats lettone": [
+ "LVL"
+ ],
+ "griwna": [
+ "UAH"
+ ],
+ "qatari riyal": [
+ "QAR"
+ ],
+ "colon": [
+ "CRC"
+ ],
+ "franc germinal": [
+ "FRF",
+ "XFO"
+ ],
+ "roupie ne\u0301palaise": [
+ "NPR"
+ ],
+ "dollar jamai\u0308cain": [
+ "JMD"
+ ],
+ "mark": [
+ "DDM"
+ ],
+ "indische rupie": [
+ "INR"
+ ],
+ "angolese kwanza": [
+ "AOA"
+ ],
+ "dollar de fidji": [
+ "FJD"
+ ],
+ "khr": [
+ "KHR"
+ ],
+ "krona": [
+ "SEK"
+ ],
+ "dollaro di trinidad e tobago": [
+ "TTD"
+ ],
+ "krone": [
+ "DKK"
+ ],
+ "szoma\u0301li shilling": [
+ "SOS"
+ ],
+ "rupia indiana": [
+ "INR"
+ ],
+ "bolivar fuerte": [
+ "VEF"
+ ],
+ "euro\u0301": [
+ "EUR"
+ ],
+ "rupia de indonesia": [
+ "IDR"
+ ],
+ "libra gibraltaren\u0303a": [
+ "GIP"
+ ],
+ "indonesische rupiah": [
+ "IDR"
+ ],
+ "panamaischer balboa": [
+ "PAB"
+ ],
+ "ethiopian birr": [
+ "ETB"
+ ],
+ "kubai konvertibilis peso": [
+ "CUC"
+ ],
+ "clp": [
+ "CLP"
+ ],
+ "florin d'aruba": [
+ "AWG"
+ ],
+ "dolar bahames": [
+ "BSD"
+ ],
+ "ouguiya mauritanien": [
+ "MRO"
+ ],
+ "salomonen dollar": [
+ "SBD"
+ ],
+ "chavito": [
+ "CUC"
+ ],
+ "kanadai dolla\u0301r": [
+ "CAD"
+ ],
+ "britische pfund": [
+ "GBP"
+ ],
+ "singaporese dollar": [
+ "SGD"
+ ],
+ "chinese renminbi": [
+ "CNY"
+ ],
+ "saudische riyal": [
+ "SAR"
+ ],
+ "neuer taiwan dollar": [
+ "TWD"
+ ],
+ "do\u0301lar taiwanes": [
+ "TWD"
+ ],
+ "keniaanse shilling": [
+ "KES"
+ ],
+ "do\u0301lar de bahamas": [
+ "BSD"
+ ],
+ "bhutanese ngultrum": [
+ "BTN"
+ ],
+ "corona noruega": [
+ "NOK"
+ ],
+ "dollaro giamaicano": [
+ "JMD"
+ ],
+ "afgani afgano": [
+ "AFN"
+ ],
+ "pab": [
+ "PAB"
+ ],
+ "aruba florin": [
+ "AWG"
+ ],
+ "tajikistani ruble": [
+ "TJR"
+ ],
+ "franzo\u0308sischer franc": [
+ "FRF"
+ ],
+ "lira italiana": [
+ "ITL"
+ ],
+ "$ can": [
+ "CAD"
+ ],
+ "marco de la rda": [
+ "DDM"
+ ],
+ "ostkaribische wa\u0308hrungsunion": [
+ "XCD"
+ ],
+ "naf": [
+ "ANG"
+ ],
+ "drtrigonbot:exchange rate data:jpy": [
+ "JPY"
+ ],
+ "afghaanse afghani": [
+ "AFN"
+ ],
+ "peruviaanse sol": [
+ "PEN"
+ ],
+ "livre de sainte he\u0301le\u0300ne": [
+ "SHP"
+ ],
+ "sa\u0303o tome\u0301 and pri\u0301ncipe dobra": [
+ "STD"
+ ],
+ "co\u0301rdoba oro": [
+ "NIO"
+ ],
+ "moneda nacional": [
+ "CUP"
+ ],
+ "macanese pataca": [
+ "MOP"
+ ],
+ "couronne tcheque": [
+ "CZK"
+ ],
+ "chelin ugande\u0301s": [
+ "UGX"
+ ],
+ "peso cubano convertible": [
+ "CUC"
+ ],
+ "eritreai nakfa": [
+ "ERN"
+ ],
+ "ira\u0301ni ria\u0301l": [
+ "IRR"
+ ],
+ "dollar canadien": [
+ "CAD"
+ ],
+ "litouwse litas": [
+ "LTL"
+ ],
+ "venezuelan boli\u0301var": [
+ "VEF"
+ ],
+ "lib$": [
+ "LRD"
+ ],
+ "cheli\u0301n keniata": [
+ "KES"
+ ],
+ "riyal saoudien": [
+ "SAR"
+ ],
+ "usbekistan sum": [
+ "UZS"
+ ],
+ "chelin keniata": [
+ "KES"
+ ],
+ "peso cubano convertibile": [
+ "CUC"
+ ],
+ "euros": [
+ "EUR"
+ ],
+ "dollar des bermudes": [
+ "BMD"
+ ],
+ "liberianischer dollar": [
+ "LRD"
+ ],
+ "peso convertibile": [
+ "CUC"
+ ],
+ "grd": [
+ "GRD"
+ ],
+ "tschechoslowakische krone": [
+ "CSK"
+ ],
+ "tongan pa'anga": [
+ "TOP"
+ ],
+ "szamoai tala": [
+ "WST"
+ ],
+ "namibischer dollar": [
+ "NAD"
+ ],
+ "manat azerbai\u0308djanais": [
+ "AZN"
+ ],
+ "real": [
+ "BRL"
+ ],
+ "tanzanian shilingi": [
+ "TZS"
+ ],
+ "dollar liberien": [
+ "LRD"
+ ],
+ "do\u0301lar neocelandes": [
+ "NZD"
+ ],
+ "do\u0301lar taiwane\u0301s": [
+ "TWD"
+ ],
+ "dinaro del bahrein": [
+ "BHD"
+ ],
+ "florin hu\u0301ngaro": [
+ "HUF"
+ ],
+ "zambian kwacha": [
+ "ZMW"
+ ],
+ "dracma greca": [
+ "GRD"
+ ],
+ "italian lira": [
+ "ITL"
+ ],
+ "antilliaanse gulden": [
+ "ANG"
+ ],
+ "som uzbeco": [
+ "UZS"
+ ],
+ "yuan renminbi": [
+ "CNY"
+ ],
+ "tenge kazajo": [
+ "KZT"
+ ],
+ "dolar trinitense": [
+ "TTD"
+ ],
+ "dollaro bahamense": [
+ "BSD"
+ ],
+ "yeni kurus\u0327": [
+ "TRY"
+ ],
+ "brunei dollar": [
+ "BND"
+ ],
+ "lek albanes": [
+ "ALL"
+ ],
+ "yua\u0301n chino": [
+ "CNY"
+ ],
+ "\u20adn": [
+ "LAK"
+ ],
+ "som kirgui\u0301s": [
+ "KGS"
+ ],
+ "britse pond": [
+ "GBP"
+ ],
+ "\u20b4": [
+ "UAH"
+ ],
+ "nuevo dolar de taiwa\u0301n": [
+ "TWD"
+ ],
+ "dominican peso": [
+ "DOP"
+ ],
+ "mosambikanischer escudo": [
+ "MZE"
+ ],
+ "do\u0301lar de las islas caima\u0301n": [
+ "KYD"
+ ],
+ "gibraltar pfund": [
+ "GIP"
+ ],
+ "lats leto\u0301n": [
+ "LVL"
+ ],
+ "kanadische dollar": [
+ "CAD"
+ ],
+ "srd": [
+ "SRD"
+ ],
+ "sre": [
+ "SCR"
+ ],
+ "comore i frank": [
+ "KMF"
+ ],
+ "peso colombiano": [
+ "COP"
+ ],
+ "leke\u0308": [
+ "ALL"
+ ],
+ "\u0433\u0440\u0438\u0432\u043d\u044f": [
+ "UAH"
+ ],
+ "alu chip": [
+ "DDM"
+ ],
+ "kanadischer dollar": [
+ "CAD"
+ ],
+ "suriname dollar": [
+ "SRD"
+ ],
+ "corona ceca": [
+ "CZK"
+ ],
+ "serbischer dinar": [
+ "RSD"
+ ],
+ "dollar de brune\u0301i": [
+ "BND"
+ ],
+ "denar": [
+ "MKD"
+ ],
+ "dinar macedonio": [
+ "MKD"
+ ],
+ "lira maltese": [
+ "MTL"
+ ],
+ "frans geld": [
+ "FRF"
+ ],
+ "naira nigeriana": [
+ "NGN"
+ ],
+ "nuevo do\u0301lar taiwanes": [
+ "TWD"
+ ],
+ "dollaro neozelandese": [
+ "NZD"
+ ],
+ "dinar bahrei\u0308nien": [
+ "BHD"
+ ],
+ "zweedse kroon": [
+ "SEK"
+ ],
+ "swedish krona": [
+ "SEK"
+ ],
+ "new israeli shekel": [
+ "ILS"
+ ],
+ "leu moldave": [
+ "MDL"
+ ],
+ "rupia de nepal": [
+ "NPR"
+ ],
+ "leu moldavo": [
+ "MDL"
+ ],
+ "fidzsi dolla\u0301r": [
+ "FJD"
+ ],
+ "pula": [
+ "BWP"
+ ],
+ "drachmai": [
+ "GRD"
+ ],
+ "marco bosnio": [
+ "BAM"
+ ],
+ "roupie seychelloise": [
+ "SCR"
+ ],
+ "u\u0308zbe\u0301g szom": [
+ "UZS"
+ ],
+ "tanzanian schilling": [
+ "TZS"
+ ],
+ "gib\u00a3": [
+ "GIP"
+ ],
+ "lett lat": [
+ "LVL"
+ ],
+ "kc\u030cs": [
+ "CSK"
+ ],
+ "mark der deutschen demokratischen republik": [
+ "DDM"
+ ],
+ "yeni tu\u0308rk liras\u0131": [
+ "TRY"
+ ],
+ "\u3012": [
+ "KZT"
+ ],
+ "bosnische convertibele mark": [
+ "BAM"
+ ],
+ "libra siria": [
+ "SYP"
+ ],
+ "peso oro": [
+ "DOP"
+ ],
+ "rupia indonesia": [
+ "IDR"
+ ],
+ "pakistaanse rupee": [
+ "PKR"
+ ],
+ "riel cambogiano": [
+ "KHR"
+ ],
+ "haitian gourde": [
+ "HTG"
+ ],
+ "tschechische wa\u0308hrung": [
+ "CZK"
+ ],
+ "bosnia and herzegovina convertible mark": [
+ "BAM"
+ ],
+ "francs franc\u0327ais": [
+ "FRF"
+ ],
+ "griechische drachme": [
+ "GRD"
+ ],
+ "nuovo sol": [
+ "PEN"
+ ],
+ "swiss franc": [
+ "CHF"
+ ],
+ "swiss frank": [
+ "CHF"
+ ],
+ "somoni tayiko": [
+ "TJS"
+ ],
+ "rial yemeni\u0301": [
+ "YER"
+ ],
+ "nueva lira turca": [
+ "TRY"
+ ],
+ "engelse pond": [
+ "GBP"
+ ],
+ "chelin tanzano": [
+ "TZS"
+ ],
+ "peso de repu\u0301blica dominicana": [
+ "DOP"
+ ],
+ "dalasi gambese": [
+ "GMD"
+ ],
+ "nicaraguaanse co\u0301rdoba": [
+ "NIO"
+ ],
+ "lira libanese": [
+ "LBP"
+ ],
+ "baht tailandes": [
+ "THB"
+ ],
+ "khoum": [
+ "MRO"
+ ],
+ "lek albane\u0301s": [
+ "ALL"
+ ],
+ "botswanischer pula": [
+ "BWP"
+ ],
+ "dinar mace\u0301donien": [
+ "MKD"
+ ],
+ "dollar": [
+ "USD"
+ ],
+ "dolar bahame\u0301s": [
+ "BSD"
+ ],
+ "\u20ac": [
+ "EUR"
+ ],
+ "dollar singapourien": [
+ "SGD"
+ ],
+ "israe\u0308lische sjekel": [
+ "ILS"
+ ],
+ "wo\u0306n surcoreano": [
+ "KRW"
+ ],
+ "ukra\u0301n hrivnya": [
+ "UAH"
+ ],
+ "dinar algerien": [
+ "DZD"
+ ],
+ "cedi ghanese": [
+ "GHS"
+ ],
+ "cfa franc bceao": [
+ "XOF"
+ ],
+ "scr": [
+ "SCR"
+ ],
+ "\u0442\u04e9\u0433\u0440\u04e9\u0433": [
+ "MNT"
+ ],
+ "izlandi korona": [
+ "ISK"
+ ],
+ "englisches pfund": [
+ "GBP"
+ ],
+ "ws$": [
+ "WST"
+ ],
+ "wikipedia:raadsel/netties20070405": [
+ "GRD"
+ ],
+ "dolar neozelande\u0301s": [
+ "NZD"
+ ],
+ "samoanischer tala": [
+ "WST"
+ ],
+ "syrisch pond": [
+ "SYP"
+ ],
+ "caymaneilandse dollar": [
+ "KYD"
+ ],
+ "cordoba oro": [
+ "NIO"
+ ],
+ "kina papuana": [
+ "PGK"
+ ],
+ "szent ilona i font": [
+ "SHP"
+ ],
+ "sudanese pound": [
+ "SDG"
+ ],
+ "gourde haitiano": [
+ "HTG"
+ ],
+ "dollar hongkongais": [
+ "HKD"
+ ],
+ "haiti gourde": [
+ "HTG"
+ ],
+ "eyrir": [
+ "ISK"
+ ],
+ "australes": [
+ "ARA"
+ ],
+ "livres turques": [
+ "TRY"
+ ],
+ "dollar barbadien": [
+ "BBD"
+ ],
+ "congolese franc": [
+ "CDF"
+ ],
+ "wst": [
+ "WST"
+ ],
+ "t$": [
+ "TOP"
+ ],
+ "congolese frank": [
+ "CDF"
+ ],
+ "nafka": [
+ "ERN"
+ ],
+ "dansk krone": [
+ "DKK"
+ ],
+ "jordanischer dinar": [
+ "JOD"
+ ],
+ "dolar de bahamas": [
+ "BSD"
+ ],
+ "brasilianischer real": [
+ "BRL"
+ ],
+ "nz$": [
+ "NZD"
+ ],
+ "leone sierra le\u0301onais": [
+ "SLL"
+ ],
+ "tunesische dinar": [
+ "TND"
+ ],
+ "do\u0301lar namibio": [
+ "NAD"
+ ],
+ "$ca": [
+ "CAD"
+ ],
+ "bengalese taka": [
+ "BDT"
+ ],
+ "dollar fidjien": [
+ "FJD"
+ ],
+ "ungarischer forint": [
+ "HUF"
+ ],
+ "dinar serbe": [
+ "RSD"
+ ],
+ "do\u0301lar de trinidad y tobago": [
+ "TTD"
+ ],
+ "belize dollar": [
+ "BZD"
+ ],
+ "sum": [
+ "UZS"
+ ],
+ "franc rwandais": [
+ "RWF"
+ ],
+ "dinar jordanien": [
+ "JOD"
+ ],
+ "moldauischer leu": [
+ "MDL"
+ ],
+ "dolar de las islas salomon": [
+ "SBD"
+ ],
+ "lire italienne": [
+ "ITL"
+ ],
+ "ang": [
+ "ANG"
+ ],
+ "\u0e3f": [
+ "THB"
+ ],
+ "sucre": [
+ "XSU"
+ ],
+ "kzt": [
+ "KZT"
+ ],
+ "kronor": [
+ "SEK"
+ ],
+ "somalische shilling": [
+ "SOS"
+ ],
+ "dollaro namibiano": [
+ "NAD"
+ ],
+ "omanischer rial": [
+ "OMR"
+ ],
+ "do\u0301lar bermuden\u0303o": [
+ "BMD"
+ ],
+ "marka": [
+ "BAM"
+ ],
+ "marco convertibile": [
+ "BAM"
+ ],
+ "rublo ruso": [
+ "RUB"
+ ],
+ "uae dirham": [
+ "AED"
+ ],
+ "vae dirham": [
+ "AED"
+ ],
+ "ngultrum del bhutan": [
+ "BTN"
+ ],
+ "samoaanse tala": [
+ "WST"
+ ],
+ "maltesische lira": [
+ "MTL"
+ ],
+ "couronne norvegienne": [
+ "NOK"
+ ],
+ "franc burundais": [
+ "BIF"
+ ],
+ "flori\u0301n arubeno": [
+ "AWG"
+ ],
+ "georgian kupon lari": [
+ "GEL"
+ ],
+ "dollar de trinidad et tobago": [
+ "TTD"
+ ],
+ "t\u0323a\u0304ka\u0304": [
+ "BDT"
+ ],
+ "tonga pa\u02bbanga": [
+ "TOP"
+ ],
+ "dinar kuwaiti": [
+ "KWD"
+ ],
+ "kenia schilling": [
+ "KES"
+ ],
+ "\u20a1": [
+ "CRC"
+ ],
+ "guarani paraguayen": [
+ "PYG"
+ ],
+ "lats letton": [
+ "LVL"
+ ],
+ "quetzal guate\u0301malte\u0300que": [
+ "GTQ"
+ ],
+ "netherlands antillean guilder": [
+ "ANG"
+ ],
+ "balboa panamen\u0303o": [
+ "PAB"
+ ],
+ "dolar de brune\u0301i": [
+ "BND"
+ ],
+ "sheqel": [
+ "ILS"
+ ],
+ "escudo capoverdiano": [
+ "CVE"
+ ],
+ "boli\u0301var fuerte": [
+ "VEF"
+ ],
+ "franco della guinea": [
+ "GNF"
+ ],
+ "boli\u0301var": [
+ "VEF"
+ ],
+ "lilangeni swazilandais": [
+ "SZL"
+ ],
+ "dracma griega moderna": [
+ "GRD"
+ ],
+ "tenge kazako": [
+ "KZT"
+ ],
+ "tenge kazakh": [
+ "KZT"
+ ],
+ "mexican centavo": [
+ "MXN"
+ ],
+ "peso uruguaiano": [
+ "UYU"
+ ],
+ "franco cfp": [
+ "XPF"
+ ],
+ "so'm": [
+ "UZS"
+ ],
+ "drtrigonbot:exchange rate data:chf": [
+ "CHF"
+ ],
+ "konvertible mark": [
+ "BAM"
+ ],
+ "nouveau manat aze\u0301ri": [
+ "AZN"
+ ],
+ "nordjemenitischer rial": [
+ "YER"
+ ],
+ "bolivares": [
+ "VEF"
+ ],
+ "\u043b\u0435\u0432": [
+ "BGN"
+ ],
+ "deg": [
+ "XDR"
+ ],
+ "guarani paraguaiano": [
+ "PYG"
+ ],
+ "scellino keniano": [
+ "KES"
+ ],
+ "f$": [
+ "FJD"
+ ],
+ "couronne islandaise": [
+ "ISK"
+ ],
+ "dollar de la barbade": [
+ "BBD"
+ ],
+ "macause pataca": [
+ "MOP"
+ ],
+ "do\u0301lar bermudeno": [
+ "BMD"
+ ],
+ "isk": [
+ "ISK"
+ ],
+ "west african cfa franc": [
+ "XOF"
+ ],
+ "armeense dram": [
+ "AMD"
+ ],
+ "renminbi yuan": [
+ "CNY"
+ ],
+ "aussie dollar": [
+ "AUD"
+ ],
+ "franco francese": [
+ "FRF"
+ ],
+ "tetradrachmon": [
+ "GRD"
+ ],
+ "dinar irakien": [
+ "IQD"
+ ],
+ "tongan pa\u02bbanga": [
+ "TOP"
+ ],
+ "fr": [
+ "FRF"
+ ],
+ "ft": [
+ "HUF"
+ ],
+ "nuevo sol": [
+ "PEN"
+ ],
+ "peso convertible argentino": [
+ "ARS"
+ ],
+ "ff": [
+ "FRF"
+ ],
+ "dollar de taiwan": [
+ "TWD"
+ ],
+ "azerbaijani manat": [
+ "AZN"
+ ],
+ "dirham": [
+ "AED"
+ ],
+ "antillen gulden": [
+ "ANG"
+ ],
+ "lari ge\u0301orgien": [
+ "GEL"
+ ],
+ "fijian dollar": [
+ "FJD"
+ ],
+ "mark convertible de bosnie herze\u0301govine": [
+ "BAM"
+ ],
+ "nuovo siclo israeliano": [
+ "ILS"
+ ],
+ "bhuta\u0301ni ngultrum": [
+ "BTN"
+ ],
+ "guarani\u0301 paraguayen": [
+ "PYG"
+ ],
+ "jamaican dollar": [
+ "JMD"
+ ],
+ "rupia": [
+ "LKR",
+ "SCR",
+ "INR",
+ "NPR"
+ ],
+ "dinar libyen": [
+ "LYD"
+ ],
+ "dinaro giordano": [
+ "JOD"
+ ],
+ "paraguayan guarani\u0301": [
+ "PYG"
+ ],
+ "maldivische rufiyaa": [
+ "MVR"
+ ],
+ "marokkanischer dirham": [
+ "MAD"
+ ],
+ "franco pacifico": [
+ "XPF"
+ ],
+ "lats": [
+ "LVL"
+ ],
+ "forinto": [
+ "HUF"
+ ],
+ "dollar be\u0301lizien": [
+ "BZD"
+ ],
+ "forints": [
+ "HUF"
+ ],
+ "do\u0301lar bahameno": [
+ "BSD"
+ ],
+ "hrywen": [
+ "UAH"
+ ],
+ "roupie pakistanaise": [
+ "PKR"
+ ],
+ "rwf": [
+ "RWF"
+ ],
+ "iraanse rial": [
+ "IRR"
+ ],
+ "chetrum": [
+ "BTN"
+ ],
+ "do\u0301lar de las bahamas": [
+ "BSD"
+ ],
+ "lesothischer loti": [
+ "LSL"
+ ],
+ "djiboutian franc": [
+ "DJF"
+ ],
+ "soviet ruble": [
+ "SUR"
+ ],
+ "madagascan ariary": [
+ "MGA"
+ ],
+ "hryvna": [
+ "UAH"
+ ],
+ "komoren franc": [
+ "KMF"
+ ],
+ "sterlina britannica": [
+ "GBP"
+ ],
+ "sonderziehungsrecht": [
+ "XDR"
+ ],
+ "jamaicai dolla\u0301r": [
+ "JMD"
+ ],
+ "sierra leone i leone": [
+ "SLL"
+ ],
+ "laoszi kip": [
+ "LAK"
+ ],
+ "ma\u0301ltai li\u0301ra": [
+ "MTL"
+ ],
+ "dolar de fiji": [
+ "FJD"
+ ],
+ "dirham de los emiratos a\u0301rabes unidos": [
+ "AED"
+ ],
+ "dollaro della namibia": [
+ "NAD"
+ ],
+ "vn\u0111": [
+ "VND"
+ ],
+ "dollar des carai\u0308bes orientales": [
+ "XCD"
+ ],
+ "kelet karibi dolla\u0301r": [
+ "XCD"
+ ],
+ "dinar argelino": [
+ "DZD"
+ ],
+ "dolar de barbados": [
+ "BBD"
+ ],
+ "sbd": [
+ "SBD"
+ ],
+ "saoedische riyal": [
+ "SAR"
+ ],
+ "dinar bareini\u0301": [
+ "BHD"
+ ],
+ "do\u0301lar de guyana": [
+ "GYD"
+ ],
+ "won norcoreano": [
+ "KPW"
+ ],
+ "dram arme\u0301nien": [
+ "AMD"
+ ],
+ "peso de me\u0301jico": [
+ "MXN"
+ ],
+ "kuna": [
+ "HRK"
+ ],
+ "kubanischer peso": [
+ "CUP"
+ ],
+ "sambia kwacha": [
+ "ZMW"
+ ],
+ "sri lankaanse roepie": [
+ "LKR"
+ ],
+ "neue tu\u0308rkische lira": [
+ "TRY"
+ ],
+ "algerischer dinar": [
+ "DZD"
+ ],
+ "hong kong dollar": [
+ "HKD"
+ ],
+ "$a": [
+ "ARP"
+ ],
+ "rupia nepalese": [
+ "NPR"
+ ],
+ "bhat": [
+ "THB"
+ ],
+ "maleisische ringgit": [
+ "MYR"
+ ],
+ "rupia nepalesa": [
+ "NPR"
+ ],
+ "tsjechische kroon": [
+ "CZK"
+ ],
+ "dong": [
+ "VND"
+ ],
+ "xof": [
+ "XOF"
+ ],
+ "chilean peso": [
+ "CLP"
+ ],
+ "nordkoreanischer won": [
+ "KPW"
+ ],
+ "soedanese pond": [
+ "SDG"
+ ],
+ "angol font": [
+ "GBP"
+ ],
+ "kip laosiano": [
+ "LAK"
+ ],
+ "dollaro delle barbados": [
+ "BBD"
+ ],
+ "gpb": [
+ "GBP"
+ ],
+ "nuovo dollaro taiwanese": [
+ "TWD"
+ ],
+ "pond sterling": [
+ "GBP"
+ ],
+ "nouveau shekel": [
+ "ILS"
+ ],
+ "libanees pond": [
+ "LBP"
+ ],
+ "kuvaiti dina\u0301r": [
+ "KWD"
+ ],
+ "kenyan shilling": [
+ "KES"
+ ],
+ "dolar bahamen\u0303o": [
+ "BSD"
+ ],
+ "surinaamse gulden": [
+ "SRG"
+ ],
+ "tschang": [
+ "THB"
+ ],
+ "north korean won": [
+ "KPW"
+ ],
+ "fiorino ungherese": [
+ "HUF"
+ ],
+ "franco yibuti\u0301": [
+ "DJF"
+ ],
+ "servische dinar": [
+ "RSD"
+ ],
+ "manat turkme\u0300ne": [
+ "TMT"
+ ],
+ "swiss franken": [
+ "CHF"
+ ],
+ "costa rica colo\u0301n": [
+ "CRC"
+ ],
+ "franco yibutiense": [
+ "DJF"
+ ],
+ "venezolaanse boli\u0301var": [
+ "VEF"
+ ],
+ "marco de la repu\u0301blica democratica alemana": [
+ "DDM"
+ ],
+ "karod": [
+ "NPR"
+ ],
+ "riyal": [
+ "SAR"
+ ],
+ "birr e\u0301thiopien": [
+ "ETB"
+ ],
+ "francs pacifique": [
+ "XPF"
+ ],
+ "rufiyaa delle maldive": [
+ "MVR"
+ ],
+ "libyan dinar": [
+ "LYD"
+ ],
+ "siclo israeliano": [
+ "ILS"
+ ],
+ "santomese dobra": [
+ "STD"
+ ],
+ "mauritiaanse roepie": [
+ "MUR"
+ ],
+ "srilankaanse rupee": [
+ "LKR"
+ ],
+ "sum uzbeco": [
+ "UZS"
+ ],
+ "laari": [
+ "MVR"
+ ],
+ "dolar de trinidad y tobago": [
+ "TTD"
+ ],
+ "austral argentino": [
+ "ARA"
+ ],
+ "do\u0301lar fijiano": [
+ "FJD"
+ ],
+ "bz$": [
+ "BZD"
+ ],
+ "argentijnse peso": [
+ "ARS"
+ ],
+ "vnd": [
+ "VND"
+ ],
+ "dong vietnamien": [
+ "VND"
+ ],
+ "ngultrum butanes": [
+ "BTN"
+ ],
+ "do\u0301lar del caribe este": [
+ "XCD"
+ ],
+ "pakistaanse roepie": [
+ "PKR"
+ ],
+ "drtrigonbot:exchange rate data:usd": [
+ "USD"
+ ],
+ "indone\u0301z ru\u0301pia": [
+ "IDR"
+ ],
+ "riyal dell'oman": [
+ "OMR"
+ ],
+ "gambiai dalasi": [
+ "GMD"
+ ],
+ "dollaro delle salomone": [
+ "SBD"
+ ],
+ "bermuda dollar": [
+ "BMD"
+ ],
+ "km": [
+ "BAM"
+ ],
+ "kr": [
+ "DKK"
+ ],
+ "mozambican escudo": [
+ "MZE"
+ ],
+ "samoan tala": [
+ "WST"
+ ],
+ "brazil real": [
+ "BRL"
+ ],
+ "dollaro della guyana": [
+ "GYD"
+ ],
+ "norve\u0301g korona": [
+ "NOK"
+ ],
+ "dobra di sao tome\u0301 e principe": [
+ "STD"
+ ],
+ "cdf": [
+ "CDF"
+ ],
+ "azerbeidzjaanse manat": [
+ "AZN"
+ ],
+ "droits de tirage speciaux": [
+ "XDR"
+ ],
+ "paanga": [
+ "TOP"
+ ],
+ "livre des i\u0302les malouines": [
+ "FKP"
+ ],
+ "ugx": [
+ "UGX"
+ ],
+ "holland antilla\u0301kbeli forint": [
+ "ANG"
+ ],
+ "\u20a3": [
+ "FRF"
+ ],
+ "costa rican colo\u0301n": [
+ "CRC"
+ ],
+ "roupie indone\u0301sienne": [
+ "IDR"
+ ],
+ "rd$": [
+ "DOP"
+ ],
+ "dollar australien": [
+ "AUD"
+ ],
+ "russian ruble": [
+ "RUB"
+ ],
+ "mianmari kjap": [
+ "MMK"
+ ],
+ "nicaraguan co\u0301rdoba": [
+ "NIO"
+ ],
+ "florin aruben\u0303o": [
+ "AWG"
+ ],
+ "rupie indiane": [
+ "INR"
+ ],
+ "florin arubain": [
+ "AWG"
+ ],
+ "dinar kuwaiti\u0301": [
+ "KWD"
+ ],
+ "hryvnya": [
+ "UAH"
+ ],
+ "tamil rupee": [
+ "LKR"
+ ],
+ "oegandese shilling": [
+ "UGX"
+ ],
+ "corona cecoslovacca": [
+ "CSK"
+ ],
+ "clp$": [
+ "CLP"
+ ],
+ "cheli\u0301n ugandes": [
+ "UGX"
+ ],
+ "kina": [
+ "PGK"
+ ],
+ "noord koreaanse won": [
+ "KPW"
+ ],
+ "chilenischer peso": [
+ "CLP"
+ ],
+ "uganda schilling": [
+ "UGX"
+ ],
+ "uruguayaanse peso": [
+ "UYU"
+ ],
+ "metical": [
+ "MZN"
+ ],
+ "\u0440\u0443\u0431": [
+ "RUB"
+ ],
+ "marokko\u0301i dirham": [
+ "MAD"
+ ],
+ "ars": [
+ "ARS"
+ ],
+ "iraki dina\u0301r": [
+ "IQD"
+ ],
+ "tugrik mongolo": [
+ "MNT"
+ ],
+ "soedanees pond": [
+ "SDG"
+ ],
+ "honduran lempira": [
+ "HNL"
+ ],
+ "rial dell'oman": [
+ "OMR"
+ ],
+ "sek": [
+ "SEK"
+ ],
+ "franc malgache": [
+ "MGA"
+ ],
+ "fille\u0301r": [
+ "HUF"
+ ],
+ "piso": [
+ "PHP"
+ ],
+ "cayman islands dollar": [
+ "KYD"
+ ],
+ "guyaanse dollar": [
+ "GYD"
+ ],
+ "won": [
+ "KRW"
+ ],
+ "barbadosi dolla\u0301r": [
+ "BBD"
+ ],
+ "bosnische inwisselbare mark": [
+ "BAM"
+ ],
+ "\u20b8": [
+ "KZT"
+ ],
+ "dollar neo zelandais": [
+ "NZD"
+ ],
+ "leone sierraleonese": [
+ "SLL"
+ ],
+ "franco comorano": [
+ "KMF"
+ ],
+ "guineese frank": [
+ "GNF"
+ ],
+ "renminbi": [
+ "CNY"
+ ],
+ "alba\u0301n lek": [
+ "ALL"
+ ],
+ "ethiopische birr": [
+ "ETB"
+ ],
+ "sterlina di sant\u2019elena": [
+ "SHP"
+ ],
+ "corona islandesa": [
+ "ISK"
+ ],
+ "corona islandese": [
+ "ISK"
+ ],
+ "dolar bermudeno": [
+ "BMD"
+ ],
+ "surinamese dollar": [
+ "SRD"
+ ],
+ "nicaraguaanse cordoba": [
+ "NIO"
+ ],
+ "loti lesothiano": [
+ "LSL"
+ ],
+ "australischer dollar": [
+ "AUD"
+ ],
+ "canadian dollar": [
+ "CAD"
+ ],
+ "yen giapponese": [
+ "JPY"
+ ],
+ "mongolian to\u0308gro\u0308g": [
+ "MNT"
+ ],
+ "chelin ugandes": [
+ "UGX"
+ ],
+ "chinese yuan": [
+ "CNY"
+ ],
+ "shilling somalien": [
+ "SOS"
+ ],
+ "hongkongse dollar": [
+ "HKD"
+ ],
+ "bolivar": [
+ "VEF"
+ ],
+ "riyal yemenita": [
+ "YER"
+ ],
+ "florin des antilles ne\u0301erlandaises": [
+ "ANG"
+ ],
+ "\u20b9": [
+ "INR"
+ ],
+ "xaf": [
+ "XAF"
+ ],
+ "philippine peso": [
+ "PHP"
+ ],
+ "afghan afghani": [
+ "AFN"
+ ],
+ "dominikai peso": [
+ "DOP"
+ ],
+ "zuid koreaanse won": [
+ "KRW"
+ ],
+ "cubaanse peso": [
+ "CUP"
+ ],
+ "nepalese rupee": [
+ "NPR"
+ ],
+ "kyat birmano": [
+ "MMK"
+ ],
+ "franc or": [
+ "XFO"
+ ],
+ "fiorino surinamese": [
+ "SRG"
+ ],
+ "czech koruna": [
+ "CZK"
+ ],
+ "verenigde arabische emiraten dirham": [
+ "AED"
+ ],
+ "tanzaniaanse shilling": [
+ "TZS"
+ ],
+ "rupia mauriziana": [
+ "MUR"
+ ],
+ "monnaie canadienne": [
+ "CAD"
+ ],
+ "do\u0301lar bruneano": [
+ "BND"
+ ],
+ "koruna c\u030cesko slovenska\u0301": [
+ "CSK"
+ ],
+ "pound": [
+ "GBP"
+ ],
+ "pounds sterling": [
+ "GBP"
+ ],
+ "jpy": [
+ "JPY"
+ ],
+ "bs$": [
+ "BSD"
+ ],
+ "pula botswanais": [
+ "BWP"
+ ],
+ "haitiaanse gourde": [
+ "HTG"
+ ],
+ "dinar de bahrein": [
+ "BHD"
+ ],
+ "dollar jamaicain": [
+ "JMD"
+ ],
+ "peso ley": [
+ "ARS"
+ ],
+ "do\u0301lares neozelandeses": [
+ "NZD"
+ ],
+ "ten\u030cn\u030ce": [
+ "TMT"
+ ],
+ "pondteken": [
+ "GBP"
+ ],
+ "\u5143": [
+ "CNY"
+ ],
+ "franc uic": [
+ "XFU"
+ ],
+ "syp": [
+ "SYP"
+ ],
+ "dzsibuti frank": [
+ "DJF"
+ ],
+ "dollar de la jamai\u0308que": [
+ "JMD"
+ ],
+ "dinaro tunisino": [
+ "TND"
+ ],
+ "yuan": [
+ "CNY"
+ ],
+ "sudanesisches pfund": [
+ "SDG"
+ ],
+ "euro": [
+ "EUR"
+ ],
+ "peruanischer nuevo sol": [
+ "PEN"
+ ],
+ "falkland pound": [
+ "FKP"
+ ],
+ "forint hungaro": [
+ "HUF"
+ ],
+ "couronne suedoise": [
+ "SEK"
+ ],
+ "peso uruguayen": [
+ "UYU"
+ ],
+ "nami\u0301biai dolla\u0301r": [
+ "NAD"
+ ],
+ "do\u0301lar bahamen\u0303o": [
+ "BSD"
+ ],
+ "leone": [
+ "SLL"
+ ],
+ "libanon pfund": [
+ "LBP"
+ ],
+ "riyal saudi": [
+ "SAR"
+ ],
+ "mozambican metical": [
+ "MZN"
+ ],
+ "dollaro liberiano": [
+ "LRD"
+ ],
+ "dolar de guyana": [
+ "GYD"
+ ],
+ "brazilian real": [
+ "BRL"
+ ],
+ "do\u0301lar de las islas caiman": [
+ "KYD"
+ ],
+ "$": [
+ "USD",
+ "MXN",
+ "ARS",
+ "CAD"
+ ],
+ "cup": [
+ "CUP"
+ ],
+ "real brasilen\u0303o": [
+ "BRL"
+ ],
+ "peso mexicain": [
+ "MXN"
+ ],
+ "cuc": [
+ "CUC"
+ ],
+ "\u0433\u0440\u043d": [
+ "UAH"
+ ],
+ "monnaie franc\u0327aise": [
+ "FRF"
+ ],
+ "guarani\u0301 de paraguay": [
+ "PYG"
+ ],
+ "pa\u02bbanga": [
+ "TOP"
+ ],
+ "marco": [
+ "DDM"
+ ],
+ "panamese balboa": [
+ "PAB"
+ ],
+ "dolar caimano": [
+ "KYD"
+ ],
+ "feninga": [
+ "BAM"
+ ],
+ "kazah tenge": [
+ "KZT"
+ ],
+ "na\u0192": [
+ "ANG"
+ ],
+ "belgian congolese franc": [
+ "CDF"
+ ],
+ "jamaika dollar": [
+ "JMD"
+ ],
+ "to\u0308ro\u0308k u\u0301j li\u0301ra": [
+ "TRY"
+ ],
+ "nige\u0301riai naira": [
+ "NGN"
+ ],
+ "oude metical": [
+ "MZN"
+ ],
+ "singapur dollar": [
+ "SGD"
+ ],
+ "b$": [
+ "BSD"
+ ],
+ "metical del mozambico": [
+ "MZN"
+ ],
+ "ariary malgascio": [
+ "MGA"
+ ],
+ "bolivar venezuelano": [
+ "VEF"
+ ],
+ "corona norvegese": [
+ "NOK"
+ ],
+ "s/.": [
+ "PEN"
+ ],
+ "franco del burundi": [
+ "BIF"
+ ],
+ "yemeni rial": [
+ "YER"
+ ],
+ "dirham de emiratos arabes unidos": [
+ "AED"
+ ],
+ "riel": [
+ "KHR"
+ ],
+ "venezolanischer boli\u0301var": [
+ "VEF"
+ ],
+ "de\u0301l szuda\u0301ni font": [
+ "SSP"
+ ],
+ "\u20a4": [
+ "ITL"
+ ],
+ "dolar de brunei": [
+ "BND"
+ ],
+ "colo\u0301n costaricano": [
+ "CRC"
+ ],
+ "dinaro kuwaitiano": [
+ "KWD"
+ ],
+ "re\u0301aux bre\u0301siliens": [
+ "BRL"
+ ],
+ "pen": [
+ "PEN"
+ ],
+ "indiase roepie": [
+ "INR"
+ ],
+ "rupia delle seychelles": [
+ "SCR"
+ ],
+ "lari": [
+ "GEL"
+ ],
+ "dollaro di barbados": [
+ "BBD"
+ ],
+ "xang": [
+ "THB"
+ ],
+ "taiwanese dollar": [
+ "TWD"
+ ],
+ "paraguayi guarani\u0301": [
+ "PYG"
+ ],
+ "cambodian riel": [
+ "KHR"
+ ],
+ "rub": [
+ "RUB"
+ ],
+ "dinaro algerino": [
+ "DZD"
+ ],
+ "bs": [
+ "BSD",
+ "BOB"
+ ],
+ "syrisches pfund": [
+ "SYP"
+ ],
+ "rial iranien": [
+ "IRR"
+ ],
+ "dollar namibien": [
+ "NAD"
+ ],
+ "couronne tche\u0301coslovaque": [
+ "CSK"
+ ],
+ "couronne tchecoslovaque": [
+ "CSK"
+ ],
+ "peruvian nuevo sol": [
+ "PEN"
+ ],
+ "lat leton": [
+ "LVL"
+ ],
+ "costa ricaanse colon": [
+ "CRC"
+ ],
+ "schweizer franken": [
+ "CHF"
+ ],
+ "dollar tai\u0308wanais": [
+ "TWD"
+ ],
+ "japanese yen": [
+ "JPY"
+ ],
+ "malediven rupie": [
+ "MVR"
+ ],
+ "arubaanse florijn": [
+ "AWG"
+ ],
+ "grivna": [
+ "UAH"
+ ],
+ "ostkaribischer dollar": [
+ "XCD"
+ ],
+ "mkd": [
+ "MKD"
+ ],
+ "\u00a5": [
+ "JPY"
+ ],
+ "ci$": [
+ "KYD"
+ ],
+ "yuans": [
+ "CNY"
+ ],
+ "xpf": [
+ "XPF"
+ ],
+ "lao kip": [
+ "LAK"
+ ],
+ "franco congoleno": [
+ "CDF"
+ ],
+ "marco bosnioherzegovino": [
+ "BAM"
+ ],
+ "sdr": [
+ "XDR"
+ ],
+ "dollaro del belize": [
+ "BZD"
+ ],
+ "peso argentino": [
+ "ARP"
+ ],
+ "dinaro iracheno": [
+ "IQD"
+ ],
+ "hongkong dollar": [
+ "HKD"
+ ],
+ "guarani\u0301 paraguaiano": [
+ "PYG"
+ ],
+ "flori\u0301n antillano neerlande\u0301s": [
+ "ANG"
+ ],
+ "dirham marocain": [
+ "MAD"
+ ],
+ "rial irani": [
+ "IRR"
+ ],
+ "peso d'uruguay": [
+ "UYU"
+ ],
+ "forinto hu\u0301ngaro": [
+ "HUF"
+ ],
+ "escudo cap verdien": [
+ "CVE"
+ ],
+ "mongol tugrik": [
+ "MNT"
+ ],
+ "gha\u0301nai cedi": [
+ "GHS"
+ ],
+ "do\u0301lar del caribe oriental": [
+ "XCD"
+ ],
+ "riyal saudita": [
+ "SAR"
+ ],
+ "omani rial": [
+ "OMR"
+ ],
+ "dinar tunisien": [
+ "TND"
+ ],
+ "cape verdean escudo": [
+ "CVE"
+ ],
+ "peso do\u0301lar": [
+ "ARS"
+ ],
+ "dolar namibio": [
+ "NAD"
+ ],
+ "lyd": [
+ "LYD"
+ ],
+ "sint heleens pond": [
+ "SHP"
+ ],
+ "nieuwe israe\u0308lische sheqel": [
+ "ILS"
+ ],
+ "laotiaanse kip": [
+ "LAK"
+ ],
+ "bolivian boliviano": [
+ "BOB"
+ ],
+ "kirgizische som": [
+ "KGS"
+ ],
+ "denaro macedone": [
+ "MKD"
+ ],
+ "swiss franco": [
+ "CHF"
+ ],
+ "birr eti\u0301ope": [
+ "ETB"
+ ],
+ "barbadian dollar": [
+ "BBD"
+ ],
+ "dolar canadiense": [
+ "CAD"
+ ],
+ "swiss francs": [
+ "CHF"
+ ],
+ "tonga pa`anga": [
+ "TOP"
+ ],
+ "dinar de bahrei\u0308n": [
+ "BHD"
+ ],
+ "dollar des iles salomon": [
+ "SBD"
+ ],
+ "dobra santotomense": [
+ "STD"
+ ],
+ "leu rumano": [
+ "RON"
+ ],
+ "lisente": [
+ "LSL"
+ ],
+ "manat turcomano": [
+ "TMT"
+ ],
+ "taka bangladeshi": [
+ "BDT"
+ ],
+ "dram": [
+ "AMD"
+ ],
+ "macedonische denar": [
+ "MKD"
+ ],
+ "israelische sjekel": [
+ "ILS"
+ ],
+ "dop": [
+ "DOP"
+ ],
+ "vanuatu vatu": [
+ "VUV"
+ ],
+ "dollar des i\u0302les salomon": [
+ "SBD"
+ ],
+ "franzo\u0308sischer franken": [
+ "FRF"
+ ],
+ "guarani": [
+ "PYG"
+ ],
+ "su\u0308dsudan pfund": [
+ "SSP"
+ ],
+ "roemeense leu": [
+ "RON"
+ ],
+ "mark convertible": [
+ "BAM"
+ ],
+ "franco de djibouti": [
+ "DJF"
+ ],
+ "ugandan shilling": [
+ "UGX"
+ ],
+ "pazifik franc": [
+ "XPF"
+ ],
+ "rublo tayiko": [
+ "TJR"
+ ],
+ "argentinischer peso": [
+ "ARS"
+ ],
+ "bahraini dinar": [
+ "BHD"
+ ],
+ "amerikaanse dollar": [
+ "USD"
+ ],
+ "franc comorien": [
+ "KMF"
+ ],
+ "dolar neocelande\u0301s": [
+ "NZD"
+ ],
+ "libra sudanesa": [
+ "SDG"
+ ],
+ "ugandai shilling": [
+ "UGX"
+ ],
+ "peso argentin": [
+ "ARS"
+ ],
+ "tugrik mongol": [
+ "MNT"
+ ],
+ "fiorino delle antille olandesi": [
+ "ANG"
+ ],
+ "hryvnia": [
+ "UAH"
+ ],
+ "ma\u0308tonya": [
+ "ETB"
+ ],
+ "dalasi": [
+ "GMD"
+ ],
+ "couronne tche\u0300que": [
+ "CZK"
+ ],
+ "lkr": [
+ "LKR"
+ ],
+ "clps": [
+ "CLP"
+ ],
+ "dolar surinames": [
+ "SRD"
+ ],
+ "kuwait dinar": [
+ "KWD"
+ ],
+ "ruma\u0308nischer leu": [
+ "RON"
+ ],
+ "do\u0301lar jamaicano": [
+ "JMD"
+ ],
+ "nuevo dolar taiwane\u0301s": [
+ "TWD"
+ ],
+ "venezolanischer bolivar": [
+ "VEF"
+ ],
+ "qatarese rial": [
+ "QAR"
+ ],
+ "do\u0301lar de surinam": [
+ "SRD"
+ ],
+ "livres sterling": [
+ "GBP"
+ ],
+ "g$": [
+ "GYD"
+ ],
+ "ruma\u0308nischer lei": [
+ "RON"
+ ],
+ "leone della sierra leone": [
+ "SLL"
+ ],
+ "manat azero": [
+ "AZN"
+ ],
+ "rwandese frank": [
+ "RWF"
+ ],
+ "ancien franc": [
+ "FRF"
+ ],
+ "naira": [
+ "NGN"
+ ],
+ "koruna ceskoslovenska": [
+ "CSK"
+ ],
+ "colo\u0301n costarricense": [
+ "CRC"
+ ],
+ "kubai peso": [
+ "CUP"
+ ],
+ "riel camboyano": [
+ "KHR"
+ ],
+ "pa'anga tongano": [
+ "TOP"
+ ],
+ "sri lankan rupee": [
+ "LKR"
+ ],
+ "hk$": [
+ "HKD"
+ ],
+ "dollar libe\u0301rien": [
+ "LRD"
+ ],
+ "pa'anga di tonga": [
+ "TOP"
+ ],
+ "norwegian krone": [
+ "NOK"
+ ],
+ "scudo capoverdiano": [
+ "CVE"
+ ],
+ "franco congolese": [
+ "CDF"
+ ],
+ "birr": [
+ "ETB"
+ ],
+ "schwedische krone": [
+ "SEK"
+ ],
+ "boliviano bolivien": [
+ "BOB"
+ ],
+ "bdt": [
+ "BTN"
+ ],
+ "do\u0301lar guyanes": [
+ "GYD"
+ ],
+ "lilangeni dello swaziland": [
+ "SZL"
+ ],
+ "libanesisches pfund": [
+ "LBP"
+ ],
+ "schottische pfund": [
+ "GBP"
+ ],
+ "griekse drachme": [
+ "GRD"
+ ],
+ "moldovan leu": [
+ "MDL"
+ ],
+ "lek": [
+ "ALL"
+ ],
+ "\u00a3": [
+ "GBP"
+ ],
+ "do\u0301lar australiano": [
+ "AUD"
+ ],
+ "lev": [
+ "BGN"
+ ],
+ "lew": [
+ "BGN"
+ ],
+ "uganda shilling": [
+ "UGX"
+ ],
+ "hkd": [
+ "HKD"
+ ],
+ "bd$": [
+ "BMD"
+ ],
+ "re\u0301al bre\u0301silien": [
+ "BRL"
+ ],
+ "tunesischer dinar": [
+ "TND"
+ ],
+ "austral (monnaie)": [
+ "ARA"
+ ],
+ "tongaanse pa'anga": [
+ "TOP"
+ ],
+ "couronne sue\u0301doise": [
+ "SEK"
+ ],
+ "franc de djibouti": [
+ "DJF"
+ ],
+ "madagaszka\u0301ri ariary": [
+ "MGA"
+ ],
+ "rupia mauricia": [
+ "MUR"
+ ],
+ "solomon dollar": [
+ "SBD"
+ ],
+ "kro\u0301nur": [
+ "ISK"
+ ],
+ "khoums": [
+ "MRO"
+ ],
+ "su\u0308dsudan pound": [
+ "SSP"
+ ],
+ "sgd": [
+ "SGD"
+ ],
+ "russischer rubel": [
+ "RUB"
+ ],
+ "usd": [
+ "USD"
+ ],
+ "livre des i\u0302les falkland": [
+ "FKP"
+ ],
+ "comorian franc": [
+ "KMF"
+ ],
+ "chf": [
+ "CHF"
+ ],
+ "ush": [
+ "UGX"
+ ],
+ "costa rica colon": [
+ "CRC"
+ ],
+ "rial yemenita": [
+ "YER"
+ ],
+ "marco bosniaco": [
+ "BAM"
+ ],
+ "rial yemenite": [
+ "YER"
+ ],
+ "brit font": [
+ "GBP"
+ ],
+ "tercera dracma griega": [
+ "GRD"
+ ],
+ "tala samoano": [
+ "WST"
+ ],
+ "manat azeri": [
+ "AZN"
+ ],
+ "santi\u0304ms": [
+ "LVL"
+ ],
+ "ostmark": [
+ "DDM"
+ ],
+ "f": [
+ "ANG"
+ ],
+ "nuova lira turca": [
+ "TRY"
+ ],
+ "zuid soedanees pond": [
+ "SSP"
+ ],
+ "turkish lira": [
+ "TRY"
+ ],
+ "rupia indonesiana": [
+ "IDR"
+ ],
+ "da\u0308nische krone": [
+ "DKK"
+ ],
+ "diritti speciali di prelievo": [
+ "XDR"
+ ],
+ "do\u0301lar de nueva zelanda": [
+ "NZD"
+ ],
+ "aluchip": [
+ "DDM"
+ ],
+ "peso uruguayo": [
+ "UYU"
+ ],
+ "xcd": [
+ "XCD"
+ ],
+ "nuevo do\u0301lar de taiwan": [
+ "TWD"
+ ],
+ "k.s.": [
+ "KGS"
+ ],
+ "dinars alge\u0301rien": [
+ "DZD"
+ ],
+ "russische roebel": [
+ "RUB"
+ ],
+ "afn": [
+ "AFN"
+ ],
+ "\u20a6": [
+ "NGN"
+ ],
+ "corona danese": [
+ "DKK"
+ ],
+ "corona danesa": [
+ "DKK"
+ ],
+ "moneda canadiense": [
+ "CAD"
+ ],
+ "ruandai frank": [
+ "RWF"
+ ],
+ "libra de santa helena": [
+ "SHP"
+ ],
+ "manat azeri\u0301": [
+ "AZN"
+ ],
+ "do\u0301lar de hong kong": [
+ "HKD"
+ ],
+ "armenian dram": [
+ "AMD"
+ ],
+ "tetradrachme": [
+ "GRD"
+ ],
+ "chileense peso": [
+ "CLP"
+ ],
+ "franchi svizzeri": [
+ "CHF"
+ ],
+ "boliviaanse boliviano": [
+ "BOB"
+ ],
+ "do\u0301lar de bermudas": [
+ "BMD"
+ ],
+ "colon costaricain": [
+ "CRC"
+ ],
+ "dollar bahame\u0301en": [
+ "BSD"
+ ],
+ "dollaro delle cayman": [
+ "KYD"
+ ],
+ "do\u0301lar neozelande\u0301s": [
+ "NZD"
+ ],
+ "riyal saudi\u0301": [
+ "SAR"
+ ],
+ "georgian lari": [
+ "GEL"
+ ],
+ "kiwi dollar": [
+ "NZD"
+ ],
+ "shekkel": [
+ "ILS"
+ ],
+ "si$": [
+ "SBD"
+ ],
+ "dobra santome\u0301en": [
+ "STD"
+ ],
+ "dolar neoze\u0301landes": [
+ "NZD"
+ ],
+ "fiorino di aruba": [
+ "AWG"
+ ],
+ "dobra": [
+ "STD"
+ ],
+ "british pound": [
+ "GBP"
+ ],
+ "to\u0308mling": [
+ "THB"
+ ],
+ "afg": [
+ "AFN"
+ ],
+ "thai ba\u0301t": [
+ "THB"
+ ],
+ "fu\u0308lo\u0308p szigeteki peso": [
+ "PHP"
+ ],
+ "noorse kroon": [
+ "NOK"
+ ],
+ "dollar de trinite\u0301 et tobago": [
+ "TTD"
+ ],
+ "tsh": [
+ "TZS"
+ ],
+ "lm": [
+ "MTL"
+ ],
+ "saudi arabische riyal": [
+ "SAR"
+ ],
+ "ausztra\u0301l dolla\u0301r": [
+ "AUD"
+ ],
+ "oekraiense hryvnja": [
+ "UAH"
+ ],
+ "deense kroon": [
+ "DKK"
+ ],
+ "eur": [
+ "EUR"
+ ],
+ "uruguayi peso": [
+ "UYU"
+ ],
+ "liberian dollar": [
+ "LRD"
+ ],
+ "livre sud soudanaise": [
+ "SSP"
+ ],
+ "do\u0301lar de fiji": [
+ "FJD"
+ ],
+ "dollar de la carai\u0308be orientale": [
+ "XCD"
+ ],
+ "franc poincare\u0301": [
+ "XFO"
+ ],
+ "gepik": [
+ "AZN"
+ ],
+ "fl\u00a3": [
+ "FKP"
+ ],
+ "mexican peso": [
+ "MXN"
+ ],
+ "diram": [
+ "TJS"
+ ],
+ "denar mace\u0301donien": [
+ "MKD"
+ ],
+ "hongkongi dolla\u0301r": [
+ "HKD"
+ ],
+ "belizaanse dollar": [
+ "BZD"
+ ],
+ "azeri manat": [
+ "AZN"
+ ],
+ "dong vietnamita": [
+ "VND"
+ ],
+ "rublo russo": [
+ "RUB"
+ ],
+ "dolar beliceno": [
+ "BZD"
+ ],
+ "su\u0308dsudanesisches pfund": [
+ "SSP"
+ ],
+ "dolar de las islas caima\u0301n": [
+ "KYD"
+ ],
+ "ec$": [
+ "XCD"
+ ],
+ "dirham degli emirati arabi uniti": [
+ "AED"
+ ],
+ "surinaamse dollar": [
+ "SRD"
+ ],
+ "franco cfa de africa occidental": [
+ "XOF"
+ ],
+ "french franc": [
+ "FRF"
+ ],
+ "\u0192": [
+ "ANG"
+ ],
+ "roma\u0301n lej": [
+ "RON"
+ ],
+ "pa'anga": [
+ "TOP"
+ ],
+ "dollaro dei caraibi orientali": [
+ "XCD"
+ ],
+ "tyiyn": [
+ "KGS"
+ ],
+ "cuban convertible peso": [
+ "CUC"
+ ],
+ "dirham des e\u0301mirats arabes unis": [
+ "AED"
+ ],
+ "japa\u0301n jen": [
+ "JPY"
+ ],
+ "kroatische kuna": [
+ "HRK"
+ ],
+ "sowjetischer rubel": [
+ "SUR"
+ ],
+ "won sudcoreano": [
+ "KRW"
+ ],
+ "chelin somali\u0301": [
+ "SOS"
+ ],
+ "santims": [
+ "LVL"
+ ],
+ "franc": [
+ "CHF",
+ "FRF"
+ ],
+ "halalas": [
+ "SAR"
+ ],
+ "sva\u0301jci frank": [
+ "CHF"
+ ],
+ "shekel": [
+ "ILS"
+ ],
+ "dinar kowei\u0308tien": [
+ "KWD"
+ ],
+ "l\u00a3": [
+ "LBP"
+ ],
+ "moroccan dirham": [
+ "MAD"
+ ],
+ "goldfranc": [
+ "XFO"
+ ],
+ "jod": [
+ "JOD"
+ ],
+ "oost carai\u0308bische dollar": [
+ "XCD"
+ ],
+ "ouguiya mauritana": [
+ "MRO"
+ ],
+ "cambodjaanse riel": [
+ "KHR"
+ ],
+ "taka bangladesi\u0301": [
+ "BDT"
+ ],
+ "ltl": [
+ "LTL"
+ ],
+ "lettischer lat": [
+ "LVL"
+ ],
+ "santi\u0304mu": [
+ "LVL"
+ ],
+ "marco de la repu\u0301blica democra\u0301tica alemana": [
+ "DDM"
+ ],
+ "franco di gibuti": [
+ "DJF"
+ ],
+ "santi\u0304mi": [
+ "LVL"
+ ],
+ "couronne norve\u0301gienne": [
+ "NOK"
+ ],
+ "libanoni font": [
+ "LBP"
+ ],
+ "belize i dolla\u0301r": [
+ "BZD"
+ ],
+ "da\u0301n korona": [
+ "DKK"
+ ],
+ "serbian dinar": [
+ "RSD"
+ ],
+ "rial omani": [
+ "OMR"
+ ],
+ "mark convertible bosniaque": [
+ "BAM"
+ ],
+ "dollar du be\u0301lize": [
+ "BZD"
+ ],
+ "pesos argentinos": [
+ "ARS"
+ ],
+ "lesothaanse loti": [
+ "LSL"
+ ],
+ "tu\u0308rk liras\u0131": [
+ "TRY"
+ ],
+ "kwacha zambien": [
+ "ZMW"
+ ],
+ "dollar trinidadien": [
+ "TTD"
+ ],
+ "moldavische leu": [
+ "MDL"
+ ],
+ "tughrik": [
+ "MNT"
+ ],
+ "leu roumain": [
+ "RON"
+ ],
+ "szva\u0301zifo\u0308ldi lilangeni": [
+ "SZL"
+ ],
+ "morocota": [
+ "VEF"
+ ],
+ "haitianische gourde": [
+ "HTG"
+ ],
+ "eritreischer nakfa": [
+ "ERN"
+ ],
+ "mongolischer to\u0308gro\u0308g": [
+ "MNT"
+ ],
+ "escudo di capo verde": [
+ "CVE"
+ ],
+ "zwitserse frank": [
+ "CHF"
+ ],
+ "afga\u0301n afga\u0301ni": [
+ "AFN"
+ ],
+ "neet": [
+ "GBP"
+ ],
+ "zwitserse franc": [
+ "CHF"
+ ],
+ "roupie mauricienne": [
+ "MUR"
+ ],
+ "do\u0301lar trinitense": [
+ "TTD"
+ ],
+ "marco de la republica democratica alemana": [
+ "DDM"
+ ],
+ "tongai pa\u2019anga": [
+ "TOP"
+ ],
+ "israeli new sheqel": [
+ "ILS"
+ ],
+ "bermudai dolla\u0301r": [
+ "BMD"
+ ],
+ "\u20ba": [
+ "TRY"
+ ],
+ "oost caribische dollar": [
+ "XCD"
+ ],
+ "ugandese shilling": [
+ "UGX"
+ ],
+ "derechos especiales de giro": [
+ "XDR"
+ ],
+ "rupaya": [
+ "INR"
+ ],
+ "suriname gulden": [
+ "SRD"
+ ],
+ "tajvani u\u0301j dolla\u0301r": [
+ "TWD"
+ ],
+ "costa rica i colo\u0301n": [
+ "CRC"
+ ],
+ "pakistanische rupie": [
+ "PKR"
+ ],
+ "irak dinar": [
+ "IQD"
+ ],
+ "alge\u0301riai dina\u0301r": [
+ "DZD"
+ ],
+ "perui u\u0301j sol": [
+ "PEN"
+ ],
+ "do\u0301lar caribe este": [
+ "XCD"
+ ],
+ "kurus": [
+ "TRY"
+ ],
+ "sfr": [
+ "CHF"
+ ],
+ "huard canadien": [
+ "CAD"
+ ],
+ "new zealand dollar": [
+ "NZD"
+ ],
+ "so\u0308m": [
+ "UZS"
+ ],
+ "awg": [
+ "AWG"
+ ],
+ "dollar de guyana": [
+ "GYD"
+ ],
+ "bosnya\u0301k konvertibilis ma\u0301rka": [
+ "BAM"
+ ],
+ "suriname i dolla\u0301r": [
+ "SRD"
+ ],
+ "ukrainische hrywnja": [
+ "UAH"
+ ],
+ "ngultrum": [
+ "BTN"
+ ],
+ "gde.": [
+ "HTG"
+ ],
+ "mexican nuevo peso": [
+ "MXN"
+ ],
+ "fjd": [
+ "FJD"
+ ],
+ "dolar jamaiquino": [
+ "JMD"
+ ],
+ "libyscher dinar": [
+ "LYD"
+ ],
+ "nuevo shequel": [
+ "ILS"
+ ],
+ "cheli\u0301n keniano": [
+ "KES"
+ ],
+ "dollar surinamien": [
+ "SRD"
+ ],
+ "rublo sovietico": [
+ "SUR"
+ ],
+ "kaiman dollar": [
+ "KYD"
+ ],
+ "dollar ne\u0301o ze\u0301landais": [
+ "NZD"
+ ],
+ "bolga\u0301r leva": [
+ "BGN"
+ ],
+ "cub$": [
+ "CUP"
+ ],
+ "szl": [
+ "SZL"
+ ],
+ "aruba gulden": [
+ "AWG"
+ ],
+ "mexikanischer peso": [
+ "MXN"
+ ],
+ "australische dollar": [
+ "AUD"
+ ],
+ "roupie indonesienne": [
+ "IDR"
+ ],
+ "albanese lek": [
+ "ALL"
+ ],
+ "lettische wa\u0308hrung": [
+ "LVL"
+ ],
+ "dollar ame\u0301ricain": [
+ "USD"
+ ],
+ "zo\u0308ld foki szigeteki escudo": [
+ "CVE"
+ ],
+ "saudi riyal": [
+ "SAR"
+ ],
+ "libra": [
+ "GBP"
+ ],
+ "isla\u0308ndische krone": [
+ "ISK"
+ ],
+ "saudi rial": [
+ "SAR"
+ ],
+ "dollaro della bermuda": [
+ "BMD"
+ ],
+ "macedo\u0301n de\u0301na\u0301r": [
+ "MKD"
+ ],
+ "kwanza": [
+ "AOA"
+ ],
+ "dollar du guyana": [
+ "GYD"
+ ],
+ "nuevo peso argentino": [
+ "ARS"
+ ],
+ "dollaro del suriname": [
+ "SRD"
+ ],
+ "ariary malgache": [
+ "MGA"
+ ],
+ "saint helena pound": [
+ "SHP"
+ ],
+ "kambodzsai riel": [
+ "KHR"
+ ],
+ "surinam dollar": [
+ "SRD"
+ ],
+ "ouguiya": [
+ "MRO"
+ ],
+ "mala\u0301j ringgit": [
+ "MYR"
+ ],
+ "united states dollar": [
+ "USD"
+ ],
+ "icelandic kro\u0301na": [
+ "ISK"
+ ],
+ "gbp": [
+ "GBP"
+ ],
+ "falkland szigeteki font": [
+ "FKP"
+ ],
+ "sa\u0303o tome\u0301ischer dobra": [
+ "STD"
+ ],
+ "kwanza angolano": [
+ "AOA"
+ ],
+ "scellino": [
+ "KES"
+ ],
+ "dollars canadiens": [
+ "CAD"
+ ],
+ "guarani\u0301": [
+ "PYG"
+ ],
+ "kwanza angolana": [
+ "AOA"
+ ],
+ "litas lituanien": [
+ "LTL"
+ ],
+ "kajma\u0301n szigeteki dolla\u0301r": [
+ "KYD"
+ ],
+ "som de kirguista\u0301n": [
+ "KGS"
+ ],
+ "btn": [
+ "BTN"
+ ],
+ "chelin somali": [
+ "SOS"
+ ],
+ "dracma griego moderno": [
+ "GRD"
+ ],
+ "hai\u0308tiaanse gourde": [
+ "HTG"
+ ],
+ "kc\u030c": [
+ "CZK"
+ ],
+ "peso de chile": [
+ "CLP"
+ ],
+ "mazedonischer denar": [
+ "MKD"
+ ],
+ "sierra leoonse leone": [
+ "SLL"
+ ],
+ "franco france\u0301s": [
+ "FRF"
+ ],
+ "marco della germania est": [
+ "DDM"
+ ],
+ "cordoba nicaraguense": [
+ "NIO"
+ ],
+ "do\u0301lar jamaiquino": [
+ "JMD"
+ ],
+ "cordoba nicaraguayen": [
+ "NIO"
+ ],
+ "rupia de pakista\u0301n": [
+ "PKR"
+ ],
+ "pfund sterling": [
+ "GBP"
+ ],
+ "dollar jamai\u0308quain": [
+ "JMD"
+ ],
+ "koruna c\u030ceskoslovenska\u0301": [
+ "CSK"
+ ],
+ "vatu di vanuatu": [
+ "VUV"
+ ],
+ "nicaraguai co\u0301rdoba": [
+ "NIO"
+ ],
+ "salu\u0308ng": [
+ "THB"
+ ],
+ "drachmon": [
+ "GRD"
+ ],
+ "somalia schilling": [
+ "SOS"
+ ],
+ "dinar iraqui": [
+ "IQD"
+ ],
+ "escudo": [
+ "CVE"
+ ],
+ "hrywni": [
+ "UAH"
+ ],
+ "libra de santa elena": [
+ "SHP"
+ ],
+ "couronnes tche\u0300ques": [
+ "CZK"
+ ],
+ "dolar fiyiano": [
+ "FJD"
+ ],
+ "\u20a9": [
+ "KRW"
+ ],
+ "rial iraniano": [
+ "IRR"
+ ],
+ "bbd": [
+ "BBD"
+ ],
+ "e\u0301szak i\u0301r font": [
+ "GBP"
+ ],
+ "$ ca": [
+ "CAD"
+ ],
+ "quid": [
+ "GBP"
+ ],
+ "ta\u0301dzsik szomoni": [
+ "TJS"
+ ],
+ "dram armenio": [
+ "AMD"
+ ],
+ "rupia singalese": [
+ "LKR"
+ ],
+ "botswaanse pula": [
+ "BWP"
+ ],
+ "co\u0301rdoba nicaraguayen": [
+ "NIO"
+ ],
+ "c$": [
+ "NIO",
+ "CAD"
+ ],
+ "oost caraibische dollar": [
+ "XCD"
+ ],
+ "guyanese dollar": [
+ "GYD"
+ ],
+ "indonesische roepia": [
+ "IDR"
+ ],
+ "corone ceche": [
+ "CZK"
+ ],
+ "franco cfa de a\u0301frica occidental": [
+ "XOF"
+ ],
+ "currency of mexico": [
+ "MXN"
+ ],
+ "kwanza reajustado": [
+ "AOA"
+ ],
+ "botswanai pula": [
+ "BWP"
+ ],
+ "reais": [
+ "BRL"
+ ],
+ "cve": [
+ "CVE"
+ ],
+ "flori\u0301n suriname\u0301s": [
+ "SRG"
+ ],
+ "franc djibouti": [
+ "DJF"
+ ],
+ "do\u0301lar beliceno": [
+ "BZD"
+ ],
+ "forint hu\u0301ngaro": [
+ "HUF"
+ ],
+ "iranischer rial": [
+ "IRR"
+ ],
+ "tenge": [
+ "KZT"
+ ],
+ "czechoslovak koruna": [
+ "CSK"
+ ],
+ "grivna ucraniana": [
+ "UAH"
+ ],
+ "dinar alge\u0301rien": [
+ "DZD"
+ ],
+ "rupia esrilanquesa": [
+ "LKR"
+ ],
+ "kyrgyz som": [
+ "KGS"
+ ],
+ "turkmeense manat": [
+ "TMT"
+ ],
+ "hryvnia ukrainienne": [
+ "UAH"
+ ],
+ "dollaro di singapore": [
+ "SGD"
+ ],
+ "dolar de belize": [
+ "BZD"
+ ],
+ "boli\u0301vares": [
+ "VEF"
+ ],
+ "sterlina di gibilterra": [
+ "GIP"
+ ],
+ "shilling ougandais": [
+ "UGX"
+ ],
+ "rupia pakistani\u0301": [
+ "PKR"
+ ],
+ "united arab emirates dirham": [
+ "AED"
+ ],
+ "php": [
+ "PHP"
+ ],
+ "\u03b4\u03c1": [
+ "GRD"
+ ],
+ "lari georgiano": [
+ "GEL"
+ ],
+ "kip laotien": [
+ "LAK"
+ ],
+ "uquiya": [
+ "MRO"
+ ],
+ "francs or": [
+ "XFO"
+ ],
+ "dinar": [
+ "TND",
+ "DZD"
+ ],
+ "shilling tanzanien": [
+ "TZS"
+ ],
+ "kongo\u0301i frank": [
+ "CDF"
+ ],
+ "franco de yibuti": [
+ "DJF"
+ ],
+ "dirham marroqui\u0301": [
+ "MAD"
+ ],
+ "florin hungaro": [
+ "HUF"
+ ],
+ "tyjyn": [
+ "KGS"
+ ],
+ "di\u0301rham de los emiratos a\u0301rabes unidos": [
+ "AED"
+ ],
+ "florin arubais": [
+ "AWG"
+ ],
+ "la couronne danoise": [
+ "DKK"
+ ],
+ "gambian dalasi": [
+ "GMD"
+ ],
+ "szuda\u0301ni font": [
+ "SDG"
+ ],
+ "corona svedese": [
+ "SEK"
+ ],
+ "colombiaanse peso": [
+ "COP"
+ ],
+ "dirham marocchino": [
+ "MAD"
+ ],
+ "won sud core\u0301en": [
+ "KRW"
+ ],
+ "seychellois rupee": [
+ "SCR"
+ ],
+ "gibraltarees pond": [
+ "GIP"
+ ],
+ "franc fort": [
+ "FRF"
+ ],
+ "schweizerfranken": [
+ "CHF"
+ ],
+ "livre soudanaise": [
+ "SDG"
+ ],
+ "manat aze\u0301ri": [
+ "AZN"
+ ],
+ "nuevo she\u0301kel": [
+ "ILS"
+ ],
+ "paraguayaanse guarani": [
+ "PYG"
+ ],
+ "trinidad and tobago dollar": [
+ "TTD"
+ ],
+ "tiyin": [
+ "UZS"
+ ],
+ "dollar de belize": [
+ "BZD"
+ ],
+ "nuovo siclo": [
+ "ILS"
+ ],
+ "pyas": [
+ "MMK"
+ ],
+ "liberiaanse dollar": [
+ "LRD"
+ ],
+ "quetzal guatemalteco": [
+ "GTQ"
+ ],
+ "naira nige\u0301rian": [
+ "NGN"
+ ],
+ "balboa panameno": [
+ "PAB"
+ ],
+ "indian rupee": [
+ "INR"
+ ],
+ "bahreini dina\u0301r": [
+ "BHD"
+ ],
+ "zuid afrikaanse rand": [
+ "ZAR"
+ ],
+ "roepia": [
+ "IDR"
+ ],
+ "dollar bermudien": [
+ "BMD"
+ ],
+ "loti del lesotho": [
+ "LSL"
+ ],
+ "hondurese lempira": [
+ "HNL"
+ ],
+ "tsjecho slowaakse kroon": [
+ "CSK"
+ ],
+ "do\u0301lar de barbados": [
+ "BBD"
+ ],
+ "su\u0308dafrikanischer rand": [
+ "ZAR"
+ ],
+ "szau\u0301di ria\u0301l": [
+ "SAR"
+ ],
+ "szerb dina\u0301r": [
+ "RSD"
+ ],
+ "roupie du ne\u0301pal": [
+ "NPR"
+ ],
+ "dinaro": [
+ "BHD"
+ ],
+ "balboa": [
+ "PAB"
+ ],
+ "rublo sovie\u0301tico": [
+ "SUR"
+ ],
+ "dollar de la caraibe orientale": [
+ "XCD"
+ ],
+ "dolar bruneano": [
+ "BND"
+ ],
+ "dollaro canadese": [
+ "CAD"
+ ],
+ "arubai florin": [
+ "AWG"
+ ],
+ "somali shilling": [
+ "SOS"
+ ],
+ "peso oro dominicano": [
+ "DOP"
+ ],
+ "bangladesi taka": [
+ "BDT"
+ ],
+ "lettischer lats": [
+ "LVL"
+ ],
+ "marco della repubblica democratica tedesca": [
+ "DDM"
+ ],
+ "ijslandse kroon": [
+ "ISK"
+ ],
+ "burundi franc": [
+ "BIF"
+ ],
+ "rand sud africain": [
+ "ZAR"
+ ],
+ "corone norvegesi": [
+ "NOK"
+ ],
+ "do\u0301lar caimano": [
+ "KYD"
+ ],
+ "burundi frank": [
+ "BIF"
+ ],
+ "new israeli sheqel": [
+ "ILS"
+ ],
+ "metical mozambicain": [
+ "MZN"
+ ],
+ "dolar de surinam": [
+ "SRD"
+ ],
+ "falkland islands pound": [
+ "FKP"
+ ],
+ "maurita\u0301niai ouguiya": [
+ "MRO"
+ ],
+ "u\u0301j ze\u0301landi dolla\u0301r": [
+ "NZD"
+ ],
+ "lats leton": [
+ "LVL"
+ ],
+ "somoni tagico": [
+ "TJS"
+ ],
+ "mozambikaanse metical": [
+ "MZN"
+ ],
+ "dollaro delle bermuda": [
+ "BMD"
+ ],
+ "dolar de hong kong": [
+ "HKD"
+ ],
+ "dollaro delle bermude": [
+ "BMD"
+ ],
+ "balboa panamense": [
+ "PAB"
+ ],
+ "roupie srilankaise": [
+ "LKR"
+ ],
+ "fya\u0308n": [
+ "THB"
+ ],
+ "dolar guyanes": [
+ "GYD"
+ ],
+ "franc suisse": [
+ "CHF"
+ ],
+ "rial irani\u0301": [
+ "IRR"
+ ],
+ "myanmarese kyat": [
+ "MMK"
+ ],
+ "costa ricaanse colo\u0301n": [
+ "CRC"
+ ],
+ "corona checa": [
+ "CZK"
+ ],
+ "thai baht": [
+ "THB"
+ ],
+ "djiboutiaanse frank": [
+ "DJF"
+ ],
+ "schkalim": [
+ "ILS"
+ ],
+ "\u17db": [
+ "KHR"
+ ],
+ "franc djiboutien": [
+ "DJF"
+ ],
+ "dinar koweitien": [
+ "KWD"
+ ],
+ "loonie": [
+ "CAD"
+ ],
+ "denari": [
+ "MKD"
+ ],
+ "lvl": [
+ "LVL"
+ ],
+ "hryvnja": [
+ "UAH"
+ ],
+ "lempira hondurien": [
+ "HNL"
+ ],
+ "franc guineen": [
+ "GNF"
+ ],
+ "seychelles rupee": [
+ "SCR"
+ ],
+ "leu rumeno": [
+ "RON"
+ ],
+ "dirham emirati": [
+ "AED"
+ ],
+ "co\u0301rdoba nicarague\u0301en": [
+ "NIO"
+ ],
+ "neuseeland dollar": [
+ "NZD"
+ ],
+ "\u20aa": [
+ "ILS"
+ ],
+ "bahamai dolla\u0301r": [
+ "BSD"
+ ],
+ "szi\u0301r font": [
+ "SYP"
+ ],
+ "nieuwe israelische sjekel": [
+ "ILS"
+ ],
+ "franc francais": [
+ "FRF"
+ ],
+ "jamaicaanse dollar": [
+ "JMD"
+ ],
+ "burmese kyat": [
+ "MMK"
+ ],
+ "do\u0301lar de belize": [
+ "BZD"
+ ],
+ "tunis dinar": [
+ "TND"
+ ],
+ "hrywnja": [
+ "UAH"
+ ],
+ "do\u0301lar de belice": [
+ "BZD"
+ ],
+ "koeweitse dinar": [
+ "KWD"
+ ],
+ "rial yemeni": [
+ "YER"
+ ],
+ "quetzal": [
+ "GTQ"
+ ],
+ "livres sterlings": [
+ "GBP"
+ ],
+ "hnl": [
+ "HNL"
+ ],
+ "franco cfa de a\u0301frica central": [
+ "XAF"
+ ],
+ "scellino keniota": [
+ "KES"
+ ],
+ "bitcoin": [
+ "XBT"
+ ]
+ },
+ "iso4217": {
+ "XBT":{
+ "fr": "Bitcoin",
+ "en": "Bitcoin",
+ "nl": "Bitcoin",
+ "de": "Bitcoin",
+ "it": "Bitcoin",
+ "hu": "Bitcoin",
+ "es": "Bitcoin"
+ },
+ "DZD": {
+ "fr": "Dinar alg\u00e9rien",
+ "en": "Algerian dinar",
+ "nl": "Algerijnse dinar",
+ "de": "Algerischer Dinar",
+ "it": "Dinaro algerino",
+ "hu": "alg\u00e9riai din\u00e1r",
+ "es": "Dinar argelino"
+ },
+ "NAD": {
+ "fr": "Dollar namibien",
+ "en": "Namibian dollar",
+ "nl": "Namibische dollar",
+ "de": "Namibia-Dollar",
+ "it": "Dollaro namibiano",
+ "hu": "Nam\u00edbiai doll\u00e1r",
+ "es": "D\u00f3lar namibio"
+ },
+ "GHS": {
+ "fr": "Cedi",
+ "en": "Ghana cedi",
+ "nl": "Ghanese cedi",
+ "de": "Cedi",
+ "it": "Cedi ghanese",
+ "hu": "Gh\u00e1nai cedi",
+ "es": "Cedi"
+ },
+ "BZD": {
+ "fr": "Dollar b\u00e9lizien",
+ "en": "Belize dollar",
+ "nl": "Belizaanse dollar",
+ "de": "Belize-Dollar",
+ "it": "Dollaro del Belize",
+ "hu": "Belize-i doll\u00e1r",
+ "es": "D\u00f3lar belice\u00f1o"
+ },
+ "BGN": {
+ "fr": "Lev bulgare",
+ "en": "Bulgarian lev",
+ "nl": "Bulgaarse lev",
+ "de": "Lew",
+ "it": "Lev bulgaro",
+ "hu": "bolg\u00e1r leva",
+ "es": "Lev"
+ },
+ "PAB": {
+ "fr": "Balboa",
+ "en": "Panamanian balboa",
+ "nl": "Panamese balboa",
+ "de": "Panamaischer Balboa",
+ "it": "Balboa panamense",
+ "hu": "Panamai balboa",
+ "es": "Balboa"
+ },
+ "BOB": {
+ "fr": "boliviano",
+ "en": "boliviano",
+ "nl": "Boliviaanse boliviano",
+ "de": "Boliviano",
+ "it": "boliviano",
+ "hu": "bol\u00edviai boliviano",
+ "es": "boliviano"
+ },
+ "DKK": {
+ "fr": "Couronne danoise",
+ "en": "Danish krone",
+ "nl": "Deense kroon",
+ "de": "D\u00e4nische Krone",
+ "it": "Corona danese",
+ "hu": "d\u00e1n korona",
+ "es": "Corona danesa"
+ },
+ "BWP": {
+ "fr": "Pula",
+ "en": "Botswana pula",
+ "nl": "Botswaanse pula",
+ "de": "Botswanischer Pula",
+ "it": "Pula del Botswana",
+ "hu": "Botswanai pula",
+ "es": "Pula"
+ },
+ "LBP": {
+ "fr": "livre libanaise",
+ "en": "Lebanese pound",
+ "nl": "Libanees pond",
+ "de": "Libanesisches Pfund",
+ "it": "Lira libanese",
+ "hu": "libanoni font",
+ "es": "Libra libanesa"
+ },
+ "TZS": {
+ "fr": "shilling tanzanien",
+ "en": "Tanzanian shilling",
+ "nl": "Tanzaniaanse shilling",
+ "de": "Tansania-Schilling",
+ "it": "Scellino tanzaniano",
+ "hu": "Tanz\u00e1niai shilling",
+ "es": "chel\u00edn"
+ },
+ "VND": {
+ "fr": "Dong",
+ "en": "Vietnamese dong",
+ "nl": "Vietnamese dong",
+ "de": "Vietnamesischer \u0110\u1ed3ng",
+ "it": "\u0110\u1ed3ng vietnamita",
+ "hu": "vietnami \u0111\u1ed3ng",
+ "es": "\u0111\u1ed3ng vietnamita"
+ },
+ "AOA": {
+ "fr": "Kwanza",
+ "en": "Angolan kwanza",
+ "nl": "Angolese kwanza",
+ "de": "Kwanza",
+ "it": "Kwanza angolano",
+ "hu": "angolai kwanza",
+ "es": "Kwanza angole\u00f1o"
+ },
+ "KHR": {
+ "fr": "Riel",
+ "en": "riel",
+ "nl": "Cambodjaanse riel",
+ "de": "Kambodschanischer Riel",
+ "it": "Riel cambogiano",
+ "hu": "kambodzsai riel",
+ "es": "Riel camboyano"
+ },
+ "MYR": {
+ "fr": "Ringgit",
+ "en": "Malaysian ringgit",
+ "nl": "Maleisische ringgit",
+ "de": "Ringgit",
+ "it": "Ringgit malese",
+ "hu": "mal\u00e1j ringgit",
+ "es": "Ringgit"
+ },
+ "KYD": {
+ "fr": "Dollar des \u00eeles Ca\u00efmans",
+ "en": "Cayman Islands dollar",
+ "nl": "Kaaimaneilandse dollar",
+ "de": "Kaiman-Dollar",
+ "it": "Dollaro delle Cayman",
+ "hu": "Kajm\u00e1n-szigeteki doll\u00e1r",
+ "es": "D\u00f3lar de las Islas Caim\u00e1n"
+ },
+ "LYD": {
+ "fr": "Dinar libyen",
+ "en": "Libyan dinar",
+ "nl": "Libische dinar",
+ "de": "Libyscher Dinar",
+ "it": "Dinaro libico",
+ "hu": "L\u00edbiai din\u00e1r",
+ "es": "Dinar libio"
+ },
+ "UAH": {
+ "fr": "Hryvnia",
+ "en": "hryvnia",
+ "nl": "Oekra\u00efense hryvnja",
+ "de": "Hrywnja",
+ "it": "Grivnia ucraina",
+ "hu": "ukr\u00e1n hrivnya",
+ "es": "Grivna"
+ },
+ "JOD": {
+ "fr": "Dinar jordanien",
+ "en": "Jordanian dinar",
+ "nl": "Jordaanse dinar",
+ "de": "Jordanischer Dinar",
+ "it": "Dinaro giordano",
+ "hu": "jord\u00e1n din\u00e1r",
+ "es": "Dinar jordano"
+ },
+ "SUR": {
+ "fr": "Rouble sovi\u00e9tique",
+ "en": "Soviet ruble",
+ "de": "Sowjetischer Rubel",
+ "it": "Rublo sovietico",
+ "hu": "Szovjet rubel",
+ "es": "Rublo sovi\u00e9tico"
+ },
+ "AWG": {
+ "fr": "Florin arubais",
+ "en": "Aruban florin",
+ "nl": "Arubaanse florin",
+ "de": "Aruba-Florin",
+ "it": "Fiorino arubano",
+ "hu": "Arubai florin",
+ "es": "Flor\u00edn arube\u00f1o"
+ },
+ "SAR": {
+ "fr": "Riyal saoudien",
+ "en": "Saudi riyal",
+ "nl": "Saoedi-Arabische riyal",
+ "de": "Saudi-Rial",
+ "it": "Riyal saudita",
+ "hu": "sza\u00fadi ri\u00e1l",
+ "es": "Riyal saud\u00ed"
+ },
+ "EUR": {
+ "fr": "euro",
+ "en": "euro",
+ "nl": "euro",
+ "de": "Euro",
+ "it": "euro",
+ "hu": "eur\u00f3",
+ "es": "euro"
+ },
+ "HKD": {
+ "fr": "Dollar de Hong Kong",
+ "en": "Hong Kong dollar",
+ "nl": "Hongkongse dollar",
+ "de": "Hongkong-Dollar",
+ "it": "dollaro hongkonghese",
+ "hu": "hongkongi doll\u00e1r",
+ "es": "D\u00f3lar de Hong Kong"
+ },
+ "SRG": {
+ "en": "Surinamese guilder",
+ "nl": "Surinaamse gulden",
+ "it": "Fiorino surinamese",
+ "es": "Flor\u00edn surinam\u00e9s"
+ },
+ "CHF": {
+ "fr": "Franc suisse",
+ "en": "Swiss franc",
+ "nl": "Zwitserse frank",
+ "de": "Schweizer Franken",
+ "it": "franco svizzero",
+ "hu": "sv\u00e1jci frank",
+ "es": "franco suizo"
+ },
+ "GIP": {
+ "fr": "Livre de Gibraltar",
+ "en": "Gibraltar pound",
+ "nl": "Gibraltarees pond",
+ "de": "Gibraltar-Pfund",
+ "it": "Sterlina di Gibilterra",
+ "hu": "Gibralt\u00e1ri font",
+ "es": "Libra gibraltare\u00f1a"
+ },
+ "ALL": {
+ "fr": "Lek",
+ "en": "lek",
+ "nl": "Albanese lek",
+ "de": "Albanischer Lek",
+ "it": "Lek albanese",
+ "hu": "alb\u00e1n lek",
+ "es": "Lek alban\u00e9s"
+ },
+ "MRO": {
+ "fr": "Ouguiya",
+ "en": "Mauritanian ouguiya",
+ "nl": "Mauritaanse ouguiya",
+ "de": "Ouguiya",
+ "it": "Ouguiya mauritana",
+ "hu": "Maurit\u00e1niai ouguiya",
+ "es": "Uquiya"
+ },
+ "HRK": {
+ "fr": "Kuna croate",
+ "en": "Croatian kuna",
+ "nl": "Kroatische kuna",
+ "de": "Kroatische Kuna",
+ "it": "Kuna croata",
+ "hu": "horv\u00e1t kuna",
+ "es": "Kuna croata"
+ },
+ "DJF": {
+ "fr": "franc Djibouti",
+ "en": "Djiboutian franc",
+ "nl": "Djiboutiaanse frank",
+ "de": "Dschibuti-Franc",
+ "it": "Franco gibutiano",
+ "hu": "Dzsibuti frank",
+ "es": "franco"
+ },
+ "THB": {
+ "fr": "Baht",
+ "en": "Thai baht",
+ "nl": "Thaise baht",
+ "de": "Baht",
+ "it": "Baht thailandese",
+ "hu": "thai b\u00e1t",
+ "es": "Baht tailand\u00e9s"
+ },
+ "XAF": {
+ "fr": "Franc CFA",
+ "en": "Central African CFA franc",
+ "de": "CFA-Franc BEAC",
+ "es": "Franco CFA de \u00c1frica Central"
+ },
+ "BND": {
+ "fr": "Dollar de Brunei",
+ "en": "Brunei dollar",
+ "nl": "Bruneise dollar",
+ "de": "Brunei-Dollar",
+ "it": "Dollaro del Brunei",
+ "hu": "brunei doll\u00e1r",
+ "es": "D\u00f3lar de Brun\u00e9i"
+ },
+ "VUV": {
+ "fr": "Vatu",
+ "en": "Vanuatu vatu",
+ "nl": "Vanuatuaanse vatu",
+ "de": "Vatu",
+ "it": "Vatu di Vanuatu",
+ "hu": "Vanuatui vatu",
+ "es": "Vatu"
+ },
+ "UYU": {
+ "fr": "Peso uruguayen",
+ "en": "Uruguayan peso",
+ "nl": "Uruguayaanse peso",
+ "de": "Uruguayischer Peso",
+ "it": "Peso uruguaiano",
+ "hu": "Uruguayi peso",
+ "es": "peso"
+ },
+ "NIO": {
+ "fr": "C\u00f3rdoba",
+ "en": "Nicaraguan c\u00f3rdoba",
+ "nl": "Nicaraguaanse c\u00f3rdoba",
+ "de": "C\u00f3rdoba Oro",
+ "it": "C\u00f3rdoba nicaraguense",
+ "hu": "Nicaraguai c\u00f3rdoba",
+ "es": "C\u00f3rdoba"
+ },
+ "LAK": {
+ "fr": "Kip laotien",
+ "en": "Lao kip",
+ "nl": "Laotiaanse kip",
+ "de": "Kip",
+ "it": "Kip laotiano",
+ "hu": "laoszi kip",
+ "es": "Kip laosiano"
+ },
+ "MZE": {
+ "de": "Mosambikanischer Escudo",
+ "en": "Mozambican escudo",
+ "es": "Escudo mozambique\u00f1o"
+ },
+ "SYP": {
+ "fr": "Livre syrienne",
+ "en": "Syrian pound",
+ "nl": "Syrisch pond",
+ "de": "Syrische Lira",
+ "it": "Lira siriana",
+ "hu": "Sz\u00edr font",
+ "es": "Libra siria"
+ },
+ "MAD": {
+ "fr": "Dirham marocain",
+ "en": "Moroccan dirham",
+ "nl": "Marokkaanse dirham",
+ "de": "Marokkanischer Dirham",
+ "it": "Dirham marocchino",
+ "hu": "Marokk\u00f3i dirham",
+ "es": "D\u00edrham marroqu\u00ed"
+ },
+ "MZN": {
+ "fr": "Metical",
+ "en": "Mozambican metical",
+ "nl": "Mozambikaanse metical",
+ "de": "Metical",
+ "it": "Metical mozambicano",
+ "hu": "Mozambiki metical",
+ "es": "Metical mozambique\u00f1o"
+ },
+ "SCR": {
+ "fr": "roupie seychelloise",
+ "en": "Seychellois rupee",
+ "nl": "Seychelse roepie",
+ "de": "Seychellen-Rupie",
+ "it": "Rupia delle Seychelles",
+ "hu": "Seychelle-i r\u00fapia",
+ "es": "rupia"
+ },
+ "ZAR": {
+ "fr": "rand",
+ "en": "South African rand",
+ "nl": "Zuid-Afrikaanse rand",
+ "de": "S\u00fcdafrikanischer Rand",
+ "it": "Rand sudafricano",
+ "hu": "D\u00e9l-afrikai rand",
+ "es": "Rand sudafricano"
+ },
+ "NPR": {
+ "fr": "Roupie n\u00e9palaise",
+ "en": "Nepalese rupee",
+ "nl": "Nepalese roepie",
+ "de": "Nepalesische Rupie",
+ "it": "Rupia nepalese",
+ "hu": "nep\u00e1li r\u00fapia",
+ "es": "Rupia nepal\u00ed"
+ },
+ "XSU": {
+ "fr": "Sucre",
+ "en": "SUCRE",
+ "nl": "SUCRE",
+ "es": "SUCRE",
+ "de": "SUCRE"
+ },
+ "NGN": {
+ "fr": "Naira",
+ "en": "Nigerian naira",
+ "nl": "Nigeriaanse naira",
+ "de": "Naira",
+ "it": "Naira nigeriana",
+ "hu": "Nig\u00e9riai naira",
+ "es": "Naira"
+ },
+ "CRC": {
+ "fr": "col\u00f3n",
+ "en": "Costa Rican col\u00f3n",
+ "nl": "Costa Ricaanse colon",
+ "de": "Costa-Rica-Col\u00f3n",
+ "it": "Col\u00f3n costaricano",
+ "hu": "Costa Rica-i col\u00f3n",
+ "es": "Col\u00f3n"
+ },
+ "AED": {
+ "fr": "Dirham des \u00c9mirats arabes unis",
+ "en": "United Arab Emirates dirham",
+ "nl": "VAE-Dirham",
+ "de": "VAE-Dirham",
+ "it": "Dirham degli Emirati Arabi Uniti",
+ "hu": "emir\u00e1tusi dirham",
+ "es": "D\u00edrham de los Emiratos \u00c1rabes Unidos"
+ },
+ "GBP": {
+ "fr": "livre sterling",
+ "en": "pound sterling",
+ "nl": "pond sterling",
+ "de": "Pfund Sterling",
+ "it": "sterlina britannica",
+ "hu": "font sterling",
+ "es": "libra esterlina"
+ },
+ "LKR": {
+ "fr": "roupie srilankaise",
+ "en": "Sri Lankan rupee",
+ "nl": "Sri Lankaanse roepie",
+ "de": "Sri-Lanka-Rupie",
+ "it": "Rupia singalese",
+ "hu": "Sr\u00ed Lanka-i r\u00fapia",
+ "es": "rupia"
+ },
+ "PKR": {
+ "fr": "Roupie pakistanaise",
+ "en": "Pakistani rupee",
+ "nl": "Pakistaanse roepie",
+ "de": "Pakistanische Rupie",
+ "it": "Rupia pakistana",
+ "hu": "pakiszt\u00e1ni r\u00fapia",
+ "es": "Rupia pakistan\u00ed"
+ },
+ "HUF": {
+ "fr": "Forint",
+ "en": "Hungarian forint",
+ "nl": "Hongaarse forint",
+ "de": "Forint",
+ "it": "Fiorino ungherese",
+ "hu": "magyar forint",
+ "es": "Forinto h\u00fangaro"
+ },
+ "SZL": {
+ "fr": "Lilangeni",
+ "en": "Swazi lilangeni",
+ "nl": "Swazische lilangeni",
+ "de": "Lilangeni",
+ "it": "Lilangeni dello Swaziland",
+ "hu": "Szv\u00e1zif\u00f6ldi lilangeni",
+ "es": "lilangeni"
+ },
+ "LSL": {
+ "fr": "Loti",
+ "en": "Lesotho loti",
+ "nl": "Lesothaanse loti",
+ "de": "Lesothischer Loti",
+ "it": "Loti lesothiano",
+ "hu": "Lesoth\u00f3i loti",
+ "es": "Loti"
+ },
+ "MNT": {
+ "fr": "Tugrik",
+ "en": "Mongolian t\u00f6gr\u00f6g",
+ "nl": "Mongoolse tugrik",
+ "de": "T\u00f6gr\u00f6g",
+ "it": "Tugrik mongolo",
+ "hu": "mongol tugrik",
+ "es": "Tugrik mongol"
+ },
+ "AMD": {
+ "fr": "Dram",
+ "en": "Armenian dram",
+ "nl": "Armeense dram",
+ "de": "Armenischer Dram",
+ "it": "Dram armeno",
+ "hu": "\u00f6rm\u00e9ny dram",
+ "es": "Dram armenio"
+ },
+ "UGX": {
+ "fr": "shilling ougandais",
+ "en": "Ugandan shilling",
+ "nl": "Oegandese shilling",
+ "de": "Uganda-Schilling",
+ "it": "Scellino ugandese",
+ "hu": "Ugandai shilling",
+ "es": "chel\u00edn"
+ },
+ "QAR": {
+ "fr": "Riyal qatarien",
+ "en": "Qatari riyal",
+ "nl": "Qatarese rial",
+ "de": "Katar-Riyal",
+ "it": "Riyal del Qatar",
+ "hu": "katari ri\u00e1l",
+ "es": "Riyal catar\u00ed"
+ },
+ "XDR": {
+ "fr": "Droits de tirage sp\u00e9ciaux",
+ "en": "Special drawing rights",
+ "nl": "Speciale trekkingsrechten",
+ "de": "Sonderziehungsrecht",
+ "it": "Diritti speciali di prelievo",
+ "hu": "SDR",
+ "es": "Derechos Especiales de Giro"
+ },
+ "ITL": {
+ "fr": "Lire italienne",
+ "en": "Italian lira",
+ "nl": "Italiaanse lire",
+ "de": "Italienische Lira",
+ "it": "lira italiana",
+ "hu": "Olasz l\u00edra",
+ "es": "Lira italiana"
+ },
+ "JMD": {
+ "fr": "Dollar jama\u00efcain",
+ "en": "Jamaican dollar",
+ "nl": "Jamaicaanse dollar",
+ "de": "Jamaika-Dollar",
+ "it": "Dollaro giamaicano",
+ "hu": "Jamaicai doll\u00e1r",
+ "es": "D\u00f3lar jamaiquino"
+ },
+ "GEL": {
+ "fr": "lari",
+ "en": "Georgian lari",
+ "nl": "Georgische lari",
+ "de": "Georgischer Lari",
+ "it": "Lari georgiano",
+ "hu": "gr\u00faz lari",
+ "es": "lari"
+ },
+ "SHP": {
+ "fr": "Livre de Sainte-H\u00e9l\u00e8ne",
+ "en": "Saint Helena pound",
+ "nl": "Sint-Heleens pond",
+ "de": "St.-Helena-Pfund",
+ "it": "Sterlina di Sant'Elena",
+ "hu": "Szent Ilona-i font",
+ "es": "Libra de Santa Elena"
+ },
+ "AFN": {
+ "fr": "Afghani",
+ "en": "Afghan afghani",
+ "nl": "Afghaanse afghani",
+ "de": "Afghani",
+ "it": "Afghani afgano",
+ "hu": "afg\u00e1n afg\u00e1ni",
+ "es": "Afgani afgano"
+ },
+ "MMK": {
+ "fr": "Kyat",
+ "en": "kyat",
+ "nl": "Myanmarese kyat",
+ "de": "Kyat",
+ "it": "Kyat birmano",
+ "hu": "mianmari kjap",
+ "es": "Kyat birmano"
+ },
+ "CSK": {
+ "fr": "couronne tch\u00e9coslovaque",
+ "en": "Czechoslovak koruna",
+ "nl": "Tsjecho-Slowaakse kroon",
+ "de": "Tschechoslowakische Krone",
+ "it": "Corona cecoslovacca",
+ "hu": "csehszlov\u00e1k korona",
+ "es": "Corona checoslovaca"
+ },
+ "KPW": {
+ "fr": "Won nord-cor\u00e9en",
+ "en": "North Korean won",
+ "nl": "Noord-Koreaanse won",
+ "de": "Nordkoreanischer Won",
+ "it": "Won nordcoreano",
+ "hu": "\u00e9szak-koreai von",
+ "es": "W\u014fn norcoreano"
+ },
+ "TRY": {
+ "fr": "Livre turque",
+ "en": "Turkish lira",
+ "nl": "Nieuwe Turkse lira",
+ "de": "T\u00fcrkische Lira",
+ "it": "Nuova lira turca",
+ "hu": "t\u00f6r\u00f6k \u00faj l\u00edra",
+ "es": "Lira turca"
+ },
+ "BDT": {
+ "fr": "Taka",
+ "en": "taka",
+ "nl": "Bengalese taka",
+ "de": "Taka",
+ "it": "Taka bengalese",
+ "hu": "bangladesi taka",
+ "es": "Taka banglades\u00ed"
+ },
+ "GRD": {
+ "fr": "Drachme moderne grecque",
+ "en": "Greek drachma",
+ "nl": "Drachme",
+ "de": "Griechische Drachme",
+ "it": "Dracma greca",
+ "es": "Dracma griega moderna"
+ },
+ "YER": {
+ "fr": "rial y\u00e9m\u00e9nite",
+ "en": "Yemeni rial",
+ "nl": "Jemenitische rial",
+ "de": "Jemen-Rial",
+ "it": "riyal yemenita",
+ "hu": "Jemeni ri\u00e1l",
+ "es": "rial yemen\u00ed"
+ },
+ "DDM": {
+ "fr": "Mark est-allemand",
+ "en": "East German mark",
+ "nl": "Oost-Duitse mark",
+ "de": "Mark",
+ "it": "Marco della Repubblica Democratica Tedesca",
+ "es": "Marco de la Rep\u00fablica Democr\u00e1tica Alemana"
+ },
+ "HTG": {
+ "fr": "Gourde",
+ "en": "Haitian gourde",
+ "nl": "Ha\u00eftiaanse gourde",
+ "de": "Gourde",
+ "it": "Gourde haitiano",
+ "hu": "haiti gourde",
+ "es": "Gourde"
+ },
+ "XOF": {
+ "fr": "Franc CFA",
+ "en": "West African CFA franc",
+ "de": "CFA-Franc BCEAO",
+ "es": "Franco CFA de \u00c1frica Occidental"
+ },
+ "MGA": {
+ "fr": "ariary",
+ "en": "Malagasy ariary",
+ "nl": "Malagassische ariary",
+ "de": "Ariary",
+ "it": "Ariary malgascio",
+ "hu": "Madagaszk\u00e1ri ariary",
+ "es": "ariary"
+ },
+ "PHP": {
+ "fr": "peso philippin",
+ "en": "Philippine peso",
+ "nl": "Filipijnse peso",
+ "de": "Philippinischer Peso",
+ "it": "peso filippino",
+ "hu": "F\u00fcl\u00f6p-szigeteki peso",
+ "es": "peso"
+ },
+ "LRD": {
+ "fr": "Dollar lib\u00e9rien",
+ "en": "Liberian dollar",
+ "nl": "Liberiaanse dollar",
+ "de": "Liberianischer Dollar",
+ "it": "Dollaro liberiano",
+ "hu": "Lib\u00e9riai doll\u00e1r",
+ "es": "D\u00f3lar liberiano"
+ },
+ "RWF": {
+ "fr": "franc rwandais",
+ "en": "Rwandan franc",
+ "nl": "Rwandese frank",
+ "de": "Ruanda-Franc",
+ "it": "Franco ruandese",
+ "hu": "Ruandai frank",
+ "es": "franco"
+ },
+ "NOK": {
+ "fr": "Couronne norv\u00e9gienne",
+ "en": "Norwegian krone",
+ "nl": "Noorse kroon",
+ "de": "Norwegische Krone",
+ "it": "Corona norvegese",
+ "hu": "norv\u00e9g korona",
+ "es": "Corona noruega"
+ },
+ "MOP": {
+ "fr": "Pataca",
+ "en": "Macanese pataca",
+ "nl": "Macause pataca",
+ "de": "Macao-Pataca",
+ "it": "Pataca di Macao",
+ "hu": "Maka\u00f3i pataca",
+ "es": "Pataca"
+ },
+ "SSP": {
+ "fr": "Livre sud-soudanaise",
+ "en": "South Sudanese pound",
+ "nl": "Zuid-Soedanees pond",
+ "de": "S\u00fcdsudanesisches Pfund",
+ "it": "Sterlina sudsudanese",
+ "hu": "D\u00e9l-szud\u00e1ni font",
+ "es": "Libra sursudanesa"
+ },
+ "INR": {
+ "fr": "Roupie indienne",
+ "en": "Indian rupee",
+ "nl": "Indiase roepie",
+ "de": "Indische Rupie",
+ "it": "rupia indiana",
+ "hu": "Indiai r\u00fapia",
+ "es": "Rupia india"
+ },
+ "MXN": {
+ "fr": "peso mexicain",
+ "en": "Mexican peso",
+ "nl": "Mexicaanse peso",
+ "de": "Mexikanischer Peso",
+ "it": "Peso messicano",
+ "hu": "mexik\u00f3i peso",
+ "es": "peso"
+ },
+ "CZK": {
+ "fr": "Couronne tch\u00e8que",
+ "en": "Czech koruna",
+ "nl": "Tsjechische kroon",
+ "de": "Tschechische Krone",
+ "it": "Corona ceca",
+ "hu": "cseh korona",
+ "es": "Corona checa"
+ },
+ "TJS": {
+ "fr": "Somoni",
+ "en": "Tajikistani somoni",
+ "nl": "Tadzjiekse somoni",
+ "de": "Somoni",
+ "it": "Somoni tagico",
+ "hu": "t\u00e1dzsik szomoni",
+ "es": "Somoni tayiko"
+ },
+ "TJR": {
+ "en": "Tajikistani ruble",
+ "es": "Rublo tayiko"
+ },
+ "BTN": {
+ "fr": "ngultrum",
+ "en": "Bhutanese ngultrum",
+ "nl": "Bhutaanse ngultrum",
+ "de": "Ngultrum",
+ "it": "Ngultrum del Bhutan",
+ "hu": "bhut\u00e1ni ngultrum",
+ "es": "Ngultrum butan\u00e9s"
+ },
+ "KMF": {
+ "fr": "Franc comorien",
+ "en": "Comorian franc",
+ "nl": "Comorese frank",
+ "de": "Komoren-Franc",
+ "it": "Franco delle Comore",
+ "hu": "Comore-i frank",
+ "es": "Franco comorano"
+ },
+ "TMT": {
+ "fr": "Manat turkm\u00e8ne",
+ "en": "Turkmenistan manat",
+ "nl": "Turkmeense manat",
+ "de": "Turkmenistan-Manat",
+ "it": "Manat turkmeno",
+ "hu": "T\u00fcrkm\u00e9n manat",
+ "es": "Manat turkmeno"
+ },
+ "MUR": {
+ "fr": "Roupie mauricienne",
+ "en": "Mauritian rupee",
+ "nl": "Mauritiaanse roepie",
+ "de": "Mauritius-Rupie",
+ "it": "Rupia mauriziana",
+ "hu": "Mauritiusi r\u00fapia",
+ "es": "Rupia de Mauricio"
+ },
+ "IDR": {
+ "fr": "Roupie indon\u00e9sienne",
+ "en": "Indonesian Rupiah",
+ "nl": "Indonesische roepia",
+ "de": "Indonesische Rupiah",
+ "it": "Rupia indonesiana",
+ "hu": "indon\u00e9z r\u00fapia",
+ "es": "Rupia indonesia"
+ },
+ "HNL": {
+ "fr": "Lempira",
+ "en": "Honduran lempira",
+ "nl": "Hondurese lempira",
+ "de": "Lempira",
+ "it": "Lempira honduregna",
+ "hu": "hondurasi lempira",
+ "es": "lempira"
+ },
+ "ETB": {
+ "fr": "Birr",
+ "en": "Ethiopian birr",
+ "nl": "Ethiopische birr",
+ "de": "\u00c4thiopischer Birr",
+ "it": "Birr etiope",
+ "hu": "eti\u00f3p birr",
+ "es": "Birr et\u00edope"
+ },
+ "FJD": {
+ "fr": "dollar de Fidji",
+ "en": "Fijian dollar",
+ "nl": "Fiji-dollar",
+ "de": "Fidschi-Dollar",
+ "it": "Dollaro delle Figi",
+ "hu": "Fidzsi doll\u00e1r",
+ "es": "d\u00f3lar"
+ },
+ "ISK": {
+ "fr": "Couronne islandaise",
+ "en": "Icelandic kr\u00f3na",
+ "nl": "IJslandse kroon",
+ "de": "Isl\u00e4ndische Krone",
+ "it": "Corona islandese",
+ "hu": "izlandi korona",
+ "es": "corona islandesa"
+ },
+ "PEN": {
+ "fr": "nouveau sol",
+ "en": "Peruvian nuevo sol",
+ "nl": "Peruviaanse sol",
+ "de": "Nuevo Sol",
+ "it": "nuevo sol peruviano",
+ "hu": "perui \u00faj sol",
+ "es": "nuevo sol"
+ },
+ "MKD": {
+ "fr": "Dinar mac\u00e9donien",
+ "en": "Macedonian denar",
+ "nl": "Macedonische denar",
+ "de": "Mazedonischer Denar",
+ "it": "Denaro macedone",
+ "hu": "maced\u00f3n d\u00e9n\u00e1r",
+ "es": "Denar macedonio"
+ },
+ "ILS": {
+ "fr": "Shekel",
+ "en": "Israeli new shekel",
+ "nl": "Isra\u00eblische sjekel",
+ "de": "Schekel",
+ "it": "nuovo siclo israeliano",
+ "hu": "izraeli \u00faj s\u00e9kel",
+ "es": "Nuevo sh\u00e9quel"
+ },
+ "DOP": {
+ "fr": "Peso dominicain",
+ "en": "Dominican peso",
+ "nl": "Dominicaanse peso",
+ "de": "Dominikanischer Peso",
+ "it": "Peso dominicano",
+ "hu": "Dominikai peso",
+ "es": "peso"
+ },
+ "AZN": {
+ "fr": "Manat azerba\u00efdjanais",
+ "en": "Azerbaijani manat",
+ "nl": "Azerbeidzjaanse manat",
+ "de": "Aserbaidschan-Manat",
+ "it": "Manat azero",
+ "hu": "Azeri manat",
+ "es": "Manat azerbaiyano"
+ },
+ "MDL": {
+ "fr": "Leu moldave",
+ "en": "Moldovan leu",
+ "nl": "Moldavische leu",
+ "de": "Moldauischer Leu",
+ "it": "Leu moldavo",
+ "hu": "moldov\u00e1n lej",
+ "es": "Leu moldavo"
+ },
+ "BSD": {
+ "fr": "Dollar baham\u00e9en",
+ "en": "Bahamian dollar",
+ "nl": "Bahamaanse dollar",
+ "de": "Bahama-Dollar",
+ "it": "Dollaro delle Bahamas",
+ "hu": "bahamai doll\u00e1r",
+ "es": "D\u00f3lar bahame\u00f1o"
+ },
+ "SEK": {
+ "fr": "Couronne su\u00e9doise",
+ "en": "Swedish krona",
+ "nl": "Zweedse kroon",
+ "de": "Schwedische Krone",
+ "it": "Corona svedese",
+ "hu": "Sv\u00e9d korona",
+ "es": "Corona sueca"
+ },
+ "MVR": {
+ "fr": "Rufiyaa",
+ "en": "Maldivian rufiyaa",
+ "nl": "Maldivische rufiyaa",
+ "de": "Rufiyaa",
+ "it": "Rufiyaa delle Maldive",
+ "hu": "Mald\u00edv-szigeteki r\u00fafia",
+ "es": "Rupia de Maldivas"
+ },
+ "FRF": {
+ "fr": "Franc fran\u00e7ais",
+ "en": "French franc",
+ "nl": "Franse frank",
+ "de": "Franz\u00f6sischer Franc",
+ "it": "Franco francese",
+ "hu": "Francia frank",
+ "es": "Franco franc\u00e9s"
+ },
+ "SRD": {
+ "fr": "Dollar de Surinam",
+ "en": "Surinamese dollar",
+ "nl": "Surinaamse dollar",
+ "de": "Suriname-Dollar",
+ "it": "Dollaro surinamese",
+ "hu": "suriname-i doll\u00e1r",
+ "es": "D\u00f3lar surinam\u00e9s"
+ },
+ "CUP": {
+ "fr": "peso cubain",
+ "en": "Cuban peso",
+ "nl": "Cubaanse peso",
+ "de": "Kubanischer Peso",
+ "it": "peso cubano",
+ "hu": "kubai peso",
+ "es": "peso"
+ },
+ "BBD": {
+ "fr": "dollar barbadien",
+ "en": "Barbadian dollar",
+ "nl": "Barbadiaanse dollar",
+ "de": "Barbados-Dollar",
+ "it": "Dollaro di Barbados",
+ "hu": "barbadosi doll\u00e1r",
+ "es": "D\u00f3lar de Barbados"
+ },
+ "KRW": {
+ "fr": "Won sud-cor\u00e9en",
+ "en": "South Korean won",
+ "nl": "Zuid-Koreaanse won",
+ "de": "S\u00fcdkoreanischer Won",
+ "it": "Won sudcoreano",
+ "hu": "D\u00e9l-koreai von",
+ "es": "W\u014fn surcoreano"
+ },
+ "GMD": {
+ "fr": "Dalasi",
+ "en": "Gambian dalasi",
+ "nl": "Gambiaanse dalasi",
+ "de": "Dalasi",
+ "it": "Dalasi gambese",
+ "hu": "Gambiai dalasi",
+ "es": "Dalasi"
+ },
+ "VEF": {
+ "fr": "Bol\u00edvar v\u00e9n\u00e9zu\u00e9lien",
+ "en": "Venezuelan bol\u00edvar",
+ "nl": "Venezolaanse bol\u00edvar",
+ "de": "Venezolanischer Bol\u00edvar",
+ "it": "Bol\u00edvar venezuelano",
+ "hu": "venezuelai bol\u00edvar",
+ "es": "Bol\u00edvar"
+ },
+ "GTQ": {
+ "fr": "Quetzal",
+ "en": "Guatemalan quetzal",
+ "nl": "Guatemalteekse quetzal",
+ "de": "Guatemaltekischer Quetzal",
+ "it": "Quetzal guatemalteco",
+ "hu": "Guatemalai quetzal",
+ "es": "Quetzal"
+ },
+ "ANG": {
+ "fr": "Florin des Antilles n\u00e9erlandaises",
+ "en": "Netherlands Antillean guilder",
+ "nl": "Antilliaanse gulden",
+ "de": "Antillen-Gulden",
+ "it": "Fiorino delle Antille Olandesi",
+ "hu": "Holland antill\u00e1kbeli forint",
+ "es": "Flor\u00edn antillano neerland\u00e9s"
+ },
+ "CUC": {
+ "fr": "Peso cubain convertible",
+ "en": "Cuban convertible peso",
+ "nl": "Convertibele peso",
+ "de": "Peso convertible",
+ "it": "Peso cubano convertibile",
+ "hu": "Kubai konvertibilis peso",
+ "es": "peso convertible"
+ },
+ "CLP": {
+ "fr": "Peso chilien",
+ "en": "Chilean peso",
+ "nl": "Chileense peso",
+ "de": "Chilenischer Peso",
+ "it": "Peso cileno",
+ "hu": "chilei peso",
+ "es": "peso"
+ },
+ "ZMW": {
+ "fr": "Kwacha zambien",
+ "en": "Zambian kwacha",
+ "nl": "Zambiaanse kwacha",
+ "de": "Sambischer Kwacha",
+ "it": "Kwacha zambiano",
+ "hu": "Zambiai kwacha",
+ "es": "Kwacha zambiano"
+ },
+ "LTL": {
+ "fr": "Litas",
+ "en": "Lithuanian litas",
+ "nl": "Litouwse litas",
+ "de": "Litas",
+ "it": "Litas lituano",
+ "hu": "litv\u00e1n litas",
+ "es": "Litas lituana"
+ },
+ "CDF": {
+ "fr": "Franc congolais",
+ "en": "Congolese franc",
+ "nl": "Congolese frank",
+ "de": "Kongo-Franc",
+ "it": "Franco congolese",
+ "hu": "Kong\u00f3i frank",
+ "es": "franco"
+ },
+ "XCD": {
+ "fr": "dollar des Cara\u00efbes orientales",
+ "en": "East Caribbean dollar",
+ "nl": "Oost-Caribische dollar",
+ "de": "ostkaribischer Dollar",
+ "it": "dollaro dei Caraibi Orientali",
+ "hu": "kelet-karibi doll\u00e1r",
+ "es": "d\u00f3lar del Caribe Oriental"
+ },
+ "KZT": {
+ "fr": "Tenge kazakh",
+ "en": "Kazakhstani tenge",
+ "nl": "Kazachse tenge",
+ "de": "Tenge",
+ "it": "Tenge kazako",
+ "hu": "kazah tenge",
+ "es": "Tenge kazajo"
+ },
+ "XPF": {
+ "fr": "Franc Pacifique",
+ "en": "CFP Franc",
+ "nl": "CFP-frank",
+ "de": "CFP-Franc",
+ "it": "Franco CFP",
+ "hu": "Csendes-\u00f3ce\u00e1ni valutak\u00f6z\u00f6ss\u00e9gi frank",
+ "es": "Franco CFP"
+ },
+ "RUB": {
+ "fr": "Rouble russe",
+ "en": "Russian ruble",
+ "nl": "Russische roebel",
+ "de": "Russischer Rubel",
+ "it": "Rublo russo",
+ "hu": "orosz rubel",
+ "es": "Rublo ruso"
+ },
+ "XFU": {
+ "fr": "Franc UIC",
+ "en": "UIC franc"
+ },
+ "TTD": {
+ "fr": "Dollar de Trinit\u00e9-et-Tobago",
+ "en": "Trinidad and Tobago dollar",
+ "nl": "Trinidad en Tobagodollar",
+ "de": "Trinidad-und-Tobago-Dollar",
+ "it": "Dollaro di Trinidad e Tobago",
+ "hu": "Trinidad \u00e9s Tobag\u00f3-i doll\u00e1r",
+ "es": "D\u00f3lar trinitense"
+ },
+ "RON": {
+ "fr": "Leu roumain",
+ "en": "Romanian leu",
+ "nl": "Roemeense leu",
+ "de": "Rum\u00e4nischer Leu",
+ "it": "Leu romeno",
+ "hu": "rom\u00e1n lej",
+ "es": "Leu rumano"
+ },
+ "OMR": {
+ "fr": "Rial omanais",
+ "en": "Omani rial",
+ "nl": "Omaanse rial",
+ "de": "Omanischer Rial",
+ "it": "Riyal dell'Oman",
+ "hu": "Om\u00e1ni ri\u00e1l",
+ "es": "Rial oman\u00ed"
+ },
+ "BRL": {
+ "fr": "r\u00e9al br\u00e9silien",
+ "en": "Brazilian real",
+ "nl": "Braziliaanse real",
+ "de": "Brasilianischer Real",
+ "it": "Real brasiliano",
+ "hu": "brazil real",
+ "es": "Real brasile\u00f1o"
+ },
+ "SBD": {
+ "fr": "dollar des \u00eeles Salomon",
+ "en": "Solomon Islands dollar",
+ "nl": "Salomon-dollar",
+ "de": "Salomonen-Dollar",
+ "it": "Dollaro delle Salomone",
+ "hu": "Salamon-szigeteki doll\u00e1r",
+ "es": "d\u00f3lar de las Islas Salom\u00f3n"
+ },
+ "PYG": {
+ "fr": "Guaran\u00ed",
+ "en": "Paraguayan guaran\u00ed",
+ "nl": "Paraguayaanse guaran\u00ed",
+ "de": "Paraguayischer Guaran\u00ed",
+ "it": "Guaran\u00ed paraguaiano",
+ "hu": "Paraguayi guaran\u00ed",
+ "es": "Guaran\u00ed"
+ },
+ "KES": {
+ "fr": "Shilling k\u00e9nyan",
+ "en": "Kenyan shilling",
+ "nl": "Keniaanse shilling",
+ "de": "Kenia-Schilling",
+ "it": "Scellino keniota",
+ "hu": "Kenyai shilling",
+ "es": "Chel\u00edn keniano"
+ },
+ "USD": {
+ "fr": "dollar am\u00e9ricain",
+ "en": "United States dollar",
+ "nl": "Amerikaanse dollar",
+ "de": "US-Dollar",
+ "it": "dollaro statunitense",
+ "hu": "amerikai doll\u00e1r",
+ "es": "d\u00f3lar"
+ },
+ "TWD": {
+ "fr": "Nouveau dollar de Ta\u00efwan",
+ "en": "New Taiwan dollar",
+ "nl": "Taiwanese dollar",
+ "de": "Neuer Taiwan-Dollar",
+ "it": "Dollaro taiwanese",
+ "hu": "Tajvani \u00faj doll\u00e1r",
+ "es": "Nuevo d\u00f3lar taiwan\u00e9s"
+ },
+ "TOP": {
+ "fr": "pa\u2019anga",
+ "en": "Tongan pa\u02bbanga",
+ "nl": "Tongaanse pa'anga",
+ "de": "Pa\u02bbanga",
+ "it": "Pa'anga tongano",
+ "hu": "Tongai pa\u02bbanga",
+ "es": "pa\u02bbanga"
+ },
+ "COP": {
+ "fr": "Peso colombien",
+ "en": "peso",
+ "nl": "Colombiaanse peso",
+ "de": "Kolumbianischer Peso",
+ "it": "Peso colombiano",
+ "hu": "Kolumbiai peso",
+ "es": "peso"
+ },
+ "GNF": {
+ "fr": "Franc guin\u00e9en",
+ "en": "Guinean franc",
+ "nl": "Guineese frank",
+ "de": "Franc Guin\u00e9en",
+ "it": "Franco guineano",
+ "hu": "Guineai frank",
+ "es": "Franco guineano"
+ },
+ "WST": {
+ "fr": "Tala",
+ "en": "Samoan t\u0101l\u0101",
+ "nl": "Samoaanse tala",
+ "de": "Samoanischer Tala",
+ "it": "Tala samoano",
+ "hu": "Szamoai tala",
+ "es": "tala"
+ },
+ "IQD": {
+ "fr": "Dinar irakien",
+ "en": "Iraqi dinar",
+ "nl": "Iraakse dinar",
+ "de": "Irakischer Dinar",
+ "it": "Dinaro iracheno",
+ "hu": "iraki din\u00e1r",
+ "es": "Dinar iraqu\u00ed"
+ },
+ "ERN": {
+ "fr": "Nakfa \u00e9rythr\u00e9en",
+ "en": "Eritrean nakfa",
+ "nl": "Eritrese nakfa",
+ "de": "Eritreischer Nakfa",
+ "it": "Nacfa eritreo",
+ "hu": "Eritreai nakfa",
+ "es": "Nakfa"
+ },
+ "CVE": {
+ "fr": "Escudo cap-verdien",
+ "en": "Cape Verdean escudo",
+ "nl": "Kaapverdische escudo",
+ "de": "Kap-Verde-Escudo",
+ "it": "Escudo capoverdiano",
+ "hu": "Z\u00f6ld-foki k\u00f6zt\u00e1rsas\u00e1gi escudo",
+ "es": "escudo"
+ },
+ "AUD": {
+ "fr": "dollar australien",
+ "en": "Australian dollar",
+ "nl": "Australische dollar",
+ "de": "Australischer Dollar",
+ "it": "Dollaro australiano",
+ "hu": "Ausztr\u00e1l doll\u00e1r",
+ "es": "D\u00f3lar australiano"
+ },
+ "BAM": {
+ "fr": "Mark convertible de Bosnie-Herz\u00e9govine",
+ "en": "Bosnia and Herzegovina convertible mark",
+ "nl": "Bosnische inwisselbare mark",
+ "de": "Konvertible Mark",
+ "it": "Marco bosniaco",
+ "hu": "bosny\u00e1k konvertibilis m\u00e1rka",
+ "es": "Marco bosnioherzegovino"
+ },
+ "KWD": {
+ "fr": "Dinar kowe\u00eftien",
+ "en": "Kuwaiti dinar",
+ "nl": "Koeweitse dinar",
+ "de": "Kuwait-Dinar",
+ "it": "Dinaro kuwaitiano",
+ "hu": "kuvaiti din\u00e1r",
+ "es": "Dinar kuwait\u00ed"
+ },
+ "BIF": {
+ "fr": "Franc burundais",
+ "en": "Burundian franc",
+ "nl": "Burundese frank",
+ "de": "Burundi-Franc",
+ "it": "Franco del Burundi",
+ "hu": "Burundi frank",
+ "es": "Franco de Burundi"
+ },
+ "PGK": {
+ "fr": "Kina",
+ "en": "Papua New Guinean kina",
+ "nl": "Papoea-Nieuw-Guinese kina",
+ "de": "Kina",
+ "it": "Kina papuana",
+ "hu": "P\u00e1pua \u00faj-guineai kina",
+ "es": "Kina"
+ },
+ "SOS": {
+ "fr": "shilling somalien",
+ "en": "Somali shilling",
+ "nl": "Somalische shilling",
+ "de": "Somalia-Schilling",
+ "it": "Scellino somalo",
+ "hu": "Szom\u00e1liai shilling",
+ "es": "chel\u00edn"
+ },
+ "CAD": {
+ "fr": "Dollar canadien",
+ "en": "Canadian dollar",
+ "nl": "Canadese dollar",
+ "de": "Kanadischer Dollar",
+ "it": "Dollaro canadese",
+ "hu": "kanadai doll\u00e1r",
+ "es": "D\u00f3lar canadiense"
+ },
+ "SGD": {
+ "fr": "Dollar de Singapour",
+ "en": "Singapore dollar",
+ "nl": "Singaporese dollar",
+ "de": "Singapur-Dollar",
+ "it": "Dollaro di Singapore",
+ "hu": "szingap\u00fari doll\u00e1r",
+ "es": "D\u00f3lar de Singapur"
+ },
+ "UZS": {
+ "fr": "Sum",
+ "en": "Uzbekistani som",
+ "nl": "Oezbeekse sum",
+ "de": "So\u02bbm",
+ "it": "Som uzbeco",
+ "hu": "\u00dczb\u00e9g szom",
+ "es": "som"
+ },
+ "STD": {
+ "fr": "Dobra",
+ "en": "S\u00e3o Tom\u00e9 and Pr\u00edncipe dobra",
+ "nl": "Santomese dobra",
+ "de": "S\u00e3o-tom\u00e9ischer Dobra",
+ "it": "Dobra di S\u00e3o Tom\u00e9 e Pr\u00edncipe",
+ "hu": "S\u00e3o Tom\u00e9 \u00e9s Pr\u00edncipe-i dobra",
+ "es": "Dobra santotomense"
+ },
+ "XFO": {
+ "fr": "Franc-or",
+ "en": "Gold franc",
+ "de": "Goldfranken"
+ },
+ "IRR": {
+ "fr": "Rial iranien",
+ "en": "Iranian rial",
+ "nl": "Iraanse rial",
+ "de": "Iranischer Rial",
+ "it": "Riyal iraniano",
+ "hu": "ir\u00e1ni ri\u00e1l",
+ "es": "Rial iran\u00ed"
+ },
+ "CNY": {
+ "fr": "Yuan",
+ "en": "renminbi",
+ "nl": "Chinese renminbi",
+ "de": "Renminbi",
+ "it": "Renminbi cinese",
+ "hu": "Renminbi",
+ "es": "Yuan chino"
+ },
+ "SLL": {
+ "fr": "leone",
+ "en": "Sierra Leonean leone",
+ "nl": "Sierra Leoonse leone",
+ "de": "Sierra-leonischer Leone",
+ "it": "Leone sierraleonese",
+ "hu": "Sierra Leone-i leone",
+ "es": "leone"
+ },
+ "TND": {
+ "fr": "Dinar tunisien",
+ "en": "Tunisian dinar",
+ "nl": "Tunesische dinar",
+ "de": "Tunesischer Dinar",
+ "it": "Dinaro tunisino",
+ "hu": "Tun\u00e9ziai din\u00e1r",
+ "es": "dinar"
+ },
+ "GYD": {
+ "fr": "Dollar guyanien",
+ "en": "Guyanese dollar",
+ "nl": "Guyaanse dollar",
+ "de": "Guyana-Dollar",
+ "it": "Dollaro della Guyana",
+ "hu": "Guyanai doll\u00e1r",
+ "es": "D\u00f3lar guyan\u00e9s"
+ },
+ "MTL": {
+ "fr": "Lire maltaise",
+ "en": "Maltese lira",
+ "nl": "Maltese lire",
+ "de": "Maltesische Lira",
+ "it": "Lira maltese",
+ "hu": "M\u00e1ltai l\u00edra",
+ "es": "Lira maltesa"
+ },
+ "NZD": {
+ "fr": "dollar n\u00e9o-z\u00e9landais",
+ "en": "New Zealand dollar",
+ "nl": "Nieuw-Zeelandse dollar",
+ "de": "Neuseeland-Dollar",
+ "it": "Dollaro neozelandese",
+ "hu": "\u00faj-z\u00e9landi doll\u00e1r",
+ "es": "D\u00f3lar neozeland\u00e9s"
+ },
+ "FKP": {
+ "fr": "Livre des \u00celes Malouines",
+ "en": "Falkland Islands pound",
+ "nl": "Falklandeilands pond",
+ "de": "Falkland-Pfund",
+ "it": "Sterlina delle Falkland",
+ "hu": "Falkland-szigeteki font",
+ "es": "Libra malvinense"
+ },
+ "LVL": {
+ "fr": "Lats",
+ "en": "lats",
+ "nl": "Letse lats",
+ "de": "Lats",
+ "it": "Lats lettone",
+ "hu": "lett lat",
+ "es": "Lats let\u00f3n"
+ },
+ "ARP": {
+ "fr": "peso argentino",
+ "en": "peso argentino",
+ "nl": "peso argentino",
+ "it": "peso argentino",
+ "es": "peso argentino"
+ },
+ "KGS": {
+ "fr": "Som",
+ "en": "Kyrgyzstani som",
+ "nl": "Kirgizische som",
+ "de": "Som",
+ "it": "som kirghizo",
+ "hu": "kirgiz szom",
+ "es": "Som kirgu\u00eds"
+ },
+ "ARS": {
+ "fr": "peso argentin",
+ "en": "peso",
+ "nl": "Argentijnse peso",
+ "de": "Argentinischer Peso",
+ "it": "peso argentino",
+ "hu": "argentin peso",
+ "es": "peso"
+ },
+ "BMD": {
+ "fr": "Dollar bermudien",
+ "en": "Bermudian dollar",
+ "nl": "Bermuda-dollar",
+ "de": "Bermuda-Dollar",
+ "it": "Dollaro della Bermuda",
+ "hu": "bermudai doll\u00e1r",
+ "es": "D\u00f3lar bermude\u00f1o"
+ },
+ "RSD": {
+ "fr": "Dinar serbe",
+ "en": "Serbian dinar",
+ "nl": "Servische dinar",
+ "de": "Serbischer Dinar",
+ "it": "Dinaro serbo",
+ "hu": "szerb din\u00e1r",
+ "es": "Dinar serbio"
+ },
+ "BHD": {
+ "fr": "Dinar bahre\u00efnien",
+ "en": "Bahraini dinar",
+ "nl": "Bahreinse dinar",
+ "de": "Bahrain-Dinar",
+ "it": "Dinaro del Bahrain",
+ "hu": "bahreini din\u00e1r",
+ "es": "Dinar barein\u00ed"
+ },
+ "JPY": {
+ "fr": "Yen",
+ "en": "Japanese yen",
+ "nl": "Japanse yen",
+ "de": "Yen",
+ "it": "Yen giapponese",
+ "hu": "Jap\u00e1n jen",
+ "es": "yen"
+ },
+ "ARA": {
+ "fr": "Austral (monnaie)",
+ "en": "Argentine austral",
+ "de": "Austral (W\u00e4hrung)",
+ "it": "Austral argentino",
+ "es": "Austral"
+ },
+ "SDG": {
+ "fr": "Livre soudanaise",
+ "en": "Sudanese pound",
+ "nl": "Soedanees pond",
+ "de": "Sudanesisches Pfund",
+ "it": "Sterlina sudanese",
+ "hu": "Szud\u00e1ni font",
+ "es": "Libra sudanesa"
+ }
+ }
+}
diff --git a/searx/data/engines_languages.json b/searx/data/engines_languages.json
new file mode 100644
index 0000000..2a5eb4e
--- /dev/null
+++ b/searx/data/engines_languages.json
@@ -0,0 +1,27225 @@
+{
+ "duckduckgo images": [
+ "ar-XA",
+ "bg-BG",
+ "ca-CT",
+ "ca-ES",
+ "cs-CZ",
+ "da-DK",
+ "de-AT",
+ "de-CH",
+ "de-DE",
+ "el-GR",
+ "en-AU",
+ "en-CA",
+ "en-ID",
+ "en-IE",
+ "en-IN",
+ "en-MY",
+ "en-NZ",
+ "en-PH",
+ "en-SG",
+ "en-UK",
+ "en-US",
+ "en-ZA",
+ "es-AR",
+ "es-CL",
+ "es-CO",
+ "es-ES",
+ "es-MX",
+ "es-PE",
+ "es-US",
+ "et-EE",
+ "fi-FI",
+ "fr-BE",
+ "fr-CA",
+ "fr-CH",
+ "fr-FR",
+ "he-IL",
+ "hr-HR",
+ "hu-HU",
+ "id-ID",
+ "it-CH",
+ "it-IT",
+ "jp-JP",
+ "kr-KR",
+ "lt-LT",
+ "lv-LV",
+ "ms-MY",
+ "nl-BE",
+ "nl-NL",
+ "no-NO",
+ "pl-PL",
+ "pt-BR",
+ "pt-PT",
+ "ro-RO",
+ "ru-RU",
+ "sk-SK",
+ "sl-SL",
+ "sv-SE",
+ "th-TH",
+ "tl-PH",
+ "tr-TR",
+ "tzh-HK",
+ "tzh-TW",
+ "vi-VN",
+ "wt-WT",
+ "zh-CN"
+ ],
+ "dailymotion": {
+ "xtw": {
+ "english_name": "Tawandê"
+ },
+ "xtv": {
+ "english_name": "Thawa"
+ },
+ "xtu": {
+ "english_name": "Mixtec, Cuyamecalco"
+ },
+ "xtt": {
+ "english_name": "Mixtec, Tacahua"
+ },
+ "xts": {
+ "english_name": "Mixtec, Sindihui"
+ },
+ "xtr": {
+ "english_name": "Tripuri, Early"
+ },
+ "xtq": {
+ "english_name": "Tumshuqese"
+ },
+ "xtp": {
+ "english_name": "Mixtec, San Miguel Piedras"
+ },
+ "xtz": {
+ "english_name": "Tasmanian"
+ },
+ "xty": {
+ "english_name": "Mixtec, Yoloxochitl"
+ },
+ "xtg": {
+ "english_name": "Gaulish, Transalpine"
+ },
+ "xte": {
+ "english_name": "Ketengban"
+ },
+ "xtd": {
+ "english_name": "Mixtec, Diuxi-Tilantongo"
+ },
+ "xtc": {
+ "english_name": "Katcha-Kadugli-Miri"
+ },
+ "xtb": {
+ "english_name": "Mixtec, Chazumba"
+ },
+ "xta": {
+ "english_name": "Mixtec, Alcozauca"
+ },
+ "xto": {
+ "english_name": "Tokharian A"
+ },
+ "xtn": {
+ "english_name": "Mixtec, Northern Tlaxiaco"
+ },
+ "xtm": {
+ "english_name": "Mixtec, Magdalena Peñasco"
+ },
+ "xtl": {
+ "english_name": "Mixtec, Tijaltepec"
+ },
+ "xtj": {
+ "english_name": "Mixtec, San Juan Teita"
+ },
+ "xti": {
+ "english_name": "Mixtec, Sinicahua"
+ },
+ "xth": {
+ "english_name": "Yitha Yitha"
+ },
+ "wji": {
+ "english_name": "Warji"
+ },
+ "wja": {
+ "english_name": "Waja"
+ },
+ "tmv": {
+ "english_name": "Tembo (Motembo)"
+ },
+ "txo": {
+ "english_name": "Toto"
+ },
+ "txn": {
+ "english_name": "Tarangan, West"
+ },
+ "txm": {
+ "english_name": "Tomini"
+ },
+ "txi": {
+ "english_name": "Ikpeng"
+ },
+ "txh": {
+ "english_name": "Thracian"
+ },
+ "txg": {
+ "english_name": "Tangut"
+ },
+ "txe": {
+ "english_name": "Totoli"
+ },
+ "txc": {
+ "english_name": "Tsetsaut"
+ },
+ "txb": {
+ "english_name": "Tokharian B"
+ },
+ "txa": {
+ "english_name": "Tombonuo"
+ },
+ "txy": {
+ "english_name": "Malagasy, Tanosy"
+ },
+ "txx": {
+ "english_name": "Tatana"
+ },
+ "txu": {
+ "english_name": "Kayapó"
+ },
+ "txt": {
+ "english_name": "Citak"
+ },
+ "txs": {
+ "english_name": "Tonsea"
+ },
+ "txr": {
+ "english_name": "Tartessian"
+ },
+ "txq": {
+ "english_name": "Tii"
+ },
+ "dne": {
+ "english_name": "Ndendeule"
+ },
+ "dnd": {
+ "english_name": "Daonda"
+ },
+ "dng": {
+ "english_name": "Dungan"
+ },
+ "dna": {
+ "english_name": "Dani, Upper Grand Valley"
+ },
+ "dnn": {
+ "english_name": "Dzùùngoo"
+ },
+ "dni": {
+ "english_name": "Dani, Lower Grand Valley"
+ },
+ "dnk": {
+ "english_name": "Dengka"
+ },
+ "dnj": {
+ "english_name": "Dan"
+ },
+ "dnu": {
+ "english_name": "Danau"
+ },
+ "dnt": {
+ "english_name": "Dani, Mid Grand Valley"
+ },
+ "dnw": {
+ "english_name": "Dani, Western"
+ },
+ "dnv": {
+ "english_name": "Danu"
+ },
+ "dnr": {
+ "english_name": "Danaru"
+ },
+ "dny": {
+ "english_name": "Dení"
+ },
+ "jmx": {
+ "english_name": "Mixtec, Western Juxtlahuaca"
+ },
+ "jmr": {
+ "english_name": "Kamara"
+ },
+ "jms": {
+ "english_name": "Mashi (Nigeria)"
+ },
+ "jmw": {
+ "english_name": "Mouwase"
+ },
+ "jmi": {
+ "english_name": "Jimi (Nigeria)"
+ },
+ "jmn": {
+ "english_name": "Naga, Makuri"
+ },
+ "jml": {
+ "english_name": "Jumli"
+ },
+ "jmb": {
+ "english_name": "Zumbun"
+ },
+ "jmc": {
+ "english_name": "Machame"
+ },
+ "jma": {
+ "english_name": "Dima"
+ },
+ "jmd": {
+ "english_name": "Yamdena"
+ },
+ "czt": {
+ "english_name": "Chin, Zotung"
+ },
+ "czk": {
+ "english_name": "Knaanic"
+ },
+ "czh": {
+ "english_name": "Chinese, Huizhou"
+ },
+ "czn": {
+ "english_name": "Chatino, Zenzontepec"
+ },
+ "czo": {
+ "english_name": "Chinese, Min Zhong"
+ },
+ "hod": {
+ "english_name": "Holma"
+ },
+ "hoe": {
+ "english_name": "Horom"
+ },
+ "hob": {
+ "english_name": "Mari (Madang Province)"
+ },
+ "hoc": {
+ "english_name": "Ho"
+ },
+ "hoa": {
+ "english_name": "Hoava"
+ },
+ "hoo": {
+ "english_name": "Holoholo"
+ },
+ "hol": {
+ "english_name": "Holu"
+ },
+ "hom": {
+ "english_name": "Homa"
+ },
+ "hoj": {
+ "english_name": "Hadothi"
+ },
+ "hoh": {
+ "english_name": "Hobyót"
+ },
+ "hoi": {
+ "english_name": "Holikachuk"
+ },
+ "hov": {
+ "english_name": "Hovongan"
+ },
+ "how": {
+ "english_name": "Honi"
+ },
+ "hot": {
+ "english_name": "Hote"
+ },
+ "hor": {
+ "english_name": "Horo"
+ },
+ "hos": {
+ "english_name": "Ho Chi Minh City Sign Language"
+ },
+ "hop": {
+ "english_name": "Hopi"
+ },
+ "hoz": {
+ "english_name": "Hozo"
+ },
+ "hoy": {
+ "english_name": "Holiya"
+ },
+ "tqm": {
+ "english_name": "Turumsa"
+ },
+ "zal": {
+ "english_name": "Zauzou"
+ },
+ "fir": {
+ "english_name": "Firan"
+ },
+ "fip": {
+ "english_name": "Fipa"
+ },
+ "fiw": {
+ "english_name": "Fiwaga"
+ },
+ "fit": {
+ "english_name": "Finnish, Tornedalen"
+ },
+ "fia": {
+ "english_name": "Nobiin"
+ },
+ "fie": {
+ "english_name": "Fyer"
+ },
+ "fil": {
+ "english_name": "Filipino"
+ },
+ "tqq": {
+ "english_name": "Tunni"
+ },
+ "tch": {
+ "english_name": "Creole English, Turks And Caicos"
+ },
+ "mdj": {
+ "english_name": "Mangbetu"
+ },
+ "mdk": {
+ "english_name": "Mangbutu"
+ },
+ "mdh": {
+ "english_name": "Maguindanaon"
+ },
+ "mdi": {
+ "english_name": "Mamvu"
+ },
+ "mdn": {
+ "english_name": "Mbati"
+ },
+ "mdl": {
+ "english_name": "Maltese Sign Language"
+ },
+ "mdm": {
+ "english_name": "Mayogo"
+ },
+ "mdb": {
+ "english_name": "Morigi"
+ },
+ "mdc": {
+ "english_name": "Male (Papua New Guinea)"
+ },
+ "mda": {
+ "english_name": "Mada (Nigeria)"
+ },
+ "mdf": {
+ "english_name": "Moksha"
+ },
+ "mdg": {
+ "english_name": "Massalat"
+ },
+ "mdd": {
+ "english_name": "Mbum"
+ },
+ "mde": {
+ "english_name": "Maba (Chad)"
+ },
+ "mdz": {
+ "english_name": "Suruí Do Pará"
+ },
+ "mdx": {
+ "english_name": "Dizin"
+ },
+ "mdy": {
+ "english_name": "Male (Ethiopia)"
+ },
+ "mdr": {
+ "english_name": "Mandar"
+ },
+ "mds": {
+ "english_name": "Maria (Papua New Guinea)"
+ },
+ "mdp": {
+ "english_name": "Mbala"
+ },
+ "mdq": {
+ "english_name": "Mbole"
+ },
+ "mdv": {
+ "english_name": "Mixtec, Santa Lucía Monteverde"
+ },
+ "mdw": {
+ "english_name": "Mbosi"
+ },
+ "mdt": {
+ "english_name": "Mbere"
+ },
+ "mdu": {
+ "english_name": "Mboko"
+ },
+ "ru": {
+ "name": "русский",
+ "english_name": "Russian"
+ },
+ "rw": {
+ "name": "Ikinyarwanda",
+ "english_name": "Kinyarwanda"
+ },
+ "smz": {
+ "english_name": "Simeku"
+ },
+ "smy": {
+ "english_name": "Semnani"
+ },
+ "smx": {
+ "english_name": "Samba"
+ },
+ "smw": {
+ "english_name": "Sumbawa"
+ },
+ "smv": {
+ "english_name": "Samvedi"
+ },
+ "smu": {
+ "english_name": "Somray"
+ },
+ "smt": {
+ "english_name": "Simte"
+ },
+ "sms": {
+ "english_name": "Sami, Skolt"
+ },
+ "smr": {
+ "english_name": "Simeulue"
+ },
+ "smq": {
+ "english_name": "Samo"
+ },
+ "dsq": {
+ "english_name": "Tadaksahak"
+ },
+ "dsn": {
+ "english_name": "Dusner"
+ },
+ "dso": {
+ "english_name": "Desiya"
+ },
+ "dsl": {
+ "english_name": "Danish Sign Language"
+ },
+ "sml": {
+ "english_name": "Sama, Central"
+ },
+ "smk": {
+ "english_name": "Bolinao"
+ },
+ "smj": {
+ "english_name": "Lule Sami"
+ },
+ "dsh": {
+ "english_name": "Daasanach"
+ },
+ "dsi": {
+ "english_name": "Disa"
+ },
+ "smg": {
+ "english_name": "Simbali"
+ },
+ "rm": {
+ "english_name": "Romansh"
+ },
+ "rn": {
+ "english_name": "Rundi"
+ },
+ "ro": {
+ "name": "Română",
+ "english_name": "Romanian"
+ },
+ "dsb": {
+ "english_name": "Sorbian, Lower"
+ },
+ "smb": {
+ "english_name": "Simbari"
+ },
+ "sma": {
+ "english_name": "Sami, Southern"
+ },
+ "syo": {
+ "english_name": "Suoy"
+ },
+ "syn": {
+ "english_name": "Senaya"
+ },
+ "sym": {
+ "english_name": "Samo, Maya"
+ },
+ "atg": {
+ "english_name": "Ivbie North-Okpela-Arhe"
+ },
+ "atd": {
+ "english_name": "Manobo, Ata"
+ },
+ "ate": {
+ "english_name": "Atemble"
+ },
+ "atb": {
+ "english_name": "Zaiwa"
+ },
+ "atc": {
+ "english_name": "Atsahuaca"
+ },
+ "ata": {
+ "english_name": "Pele-Ata"
+ },
+ "atn": {
+ "english_name": "Ashtiani"
+ },
+ "ato": {
+ "english_name": "Atong"
+ },
+ "atl": {
+ "english_name": "Agta, Mt. Iraya"
+ },
+ "atm": {
+ "english_name": "Ata"
+ },
+ "atj": {
+ "english_name": "Atikamekw"
+ },
+ "atk": {
+ "english_name": "Ati"
+ },
+ "ati": {
+ "english_name": "Attié"
+ },
+ "atv": {
+ "english_name": "Altai, Northern"
+ },
+ "atw": {
+ "english_name": "Atsugewi"
+ },
+ "att": {
+ "english_name": "Atta, Pamplona"
+ },
+ "atu": {
+ "english_name": "Reel"
+ },
+ "atr": {
+ "english_name": "Waimiri-Atroari"
+ },
+ "ats": {
+ "english_name": "Gros Ventre"
+ },
+ "atp": {
+ "english_name": "Atta, Pudtol"
+ },
+ "atq": {
+ "english_name": "Aralle-Tabulahan"
+ },
+ "atz": {
+ "english_name": "Arta"
+ },
+ "atx": {
+ "english_name": "Arutani"
+ },
+ "aty": {
+ "english_name": "Aneityum"
+ },
+ "kfv": {
+ "english_name": "Kurmukar"
+ },
+ "kfw": {
+ "english_name": "Naga, Kharam"
+ },
+ "kft": {
+ "english_name": "Kanjari"
+ },
+ "kfu": {
+ "english_name": "Katkari"
+ },
+ "kfr": {
+ "english_name": "Kachchi"
+ },
+ "kfs": {
+ "english_name": "Bilaspuri"
+ },
+ "kfp": {
+ "english_name": "Korwa"
+ },
+ "kfq": {
+ "english_name": "Korku"
+ },
+ "kfz": {
+ "english_name": "Koromfé"
+ },
+ "kfx": {
+ "english_name": "Pahari, Kullu"
+ },
+ "kfy": {
+ "english_name": "Kumaoni"
+ },
+ "kff": {
+ "english_name": "Koya"
+ },
+ "kfg": {
+ "english_name": "Kudiya"
+ },
+ "kfd": {
+ "english_name": "Koraga, Korra"
+ },
+ "kfe": {
+ "english_name": "Kota (India)"
+ },
+ "kfb": {
+ "english_name": "Kolami, Northwestern"
+ },
+ "kfc": {
+ "english_name": "Konda-Dora"
+ },
+ "kfa": {
+ "english_name": "Kodava"
+ },
+ "kfn": {
+ "english_name": "Kuk"
+ },
+ "kfo": {
+ "english_name": "Koro (Côte d'Ivoire)"
+ },
+ "kfl": {
+ "english_name": "Kung"
+ },
+ "kfm": {
+ "english_name": "Khunsari"
+ },
+ "kfj": {
+ "english_name": "Kemiehua"
+ },
+ "kfk": {
+ "english_name": "Kinnauri"
+ },
+ "kfh": {
+ "english_name": "Kurichiya"
+ },
+ "kfi": {
+ "english_name": "Kurumba, Kannada"
+ },
+ "xib": {
+ "english_name": "Iberian"
+ },
+ "xii": {
+ "english_name": "Xiri"
+ },
+ "xil": {
+ "english_name": "Illyrian"
+ },
+ "xin": {
+ "english_name": "Xinca"
+ },
+ "xip": {
+ "english_name": "Xipináwa"
+ },
+ "xir": {
+ "english_name": "Xiriâna"
+ },
+ "xiv": {
+ "english_name": "Indus Valley Language"
+ },
+ "xiy": {
+ "english_name": "Xipaya"
+ },
+ "nzs": {
+ "english_name": "New Zealand Sign Language"
+ },
+ "nzu": {
+ "english_name": "Teke-Nzikou"
+ },
+ "nzz": {
+ "english_name": "Dogon, Nanga Dama"
+ },
+ "nzy": {
+ "english_name": "Nzakambay"
+ },
+ "nzb": {
+ "english_name": "Njebi"
+ },
+ "nza": {
+ "english_name": "Mbembe, Tigon"
+ },
+ "nzk": {
+ "english_name": "Nzakara"
+ },
+ "nzi": {
+ "english_name": "Nzima"
+ },
+ "nzm": {
+ "english_name": "Naga, Zeme"
+ },
+ "tnr": {
+ "english_name": "Ménik"
+ },
+ "vgr": {
+ "english_name": "Vaghri"
+ },
+ "lpx": {
+ "english_name": "Lopit"
+ },
+ "lpo": {
+ "english_name": "Lipo"
+ },
+ "lpn": {
+ "english_name": "Naga, Long Phuri"
+ },
+ "lpe": {
+ "english_name": "Lepki"
+ },
+ "lpa": {
+ "english_name": "Lelepa"
+ },
+ "ztm": {
+ "english_name": "Zapotec, San Agustín Mixtepec"
+ },
+ "ztl": {
+ "english_name": "Zapotec, Lapaguía-Guivini"
+ },
+ "ztn": {
+ "english_name": "Zapotec, Santa Catarina Albarradas"
+ },
+ "zte": {
+ "english_name": "Zapotec, Elotepec"
+ },
+ "ztg": {
+ "english_name": "Zapotec, Xanaguía"
+ },
+ "zty": {
+ "english_name": "Zapotec, Yatee"
+ },
+ "ztx": {
+ "english_name": "Zapotec, Zaachila"
+ },
+ "ztu": {
+ "english_name": "Zapotec, Güilá"
+ },
+ "ztt": {
+ "english_name": "Zapotec, Tejalapan"
+ },
+ "ztq": {
+ "english_name": "Zapotec, Quioquitani-Quierí"
+ },
+ "ztp": {
+ "english_name": "Zapotec, Loxicha"
+ },
+ "zts": {
+ "english_name": "Zapotec, Tilquiapan"
+ },
+ "smp": {
+ "english_name": "Samaritan"
+ },
+ "irx": {
+ "english_name": "Kamberau"
+ },
+ "iry": {
+ "english_name": "Iraya"
+ },
+ "irr": {
+ "english_name": "Ir"
+ },
+ "iru": {
+ "english_name": "Irula"
+ },
+ "irh": {
+ "english_name": "Irarutu"
+ },
+ "iri": {
+ "english_name": "Irigwe"
+ },
+ "irk": {
+ "english_name": "Iraqw"
+ },
+ "irn": {
+ "english_name": "Irántxe"
+ },
+ "xvn": {
+ "english_name": "Vandalic"
+ },
+ "xve": {
+ "english_name": "Venetic"
+ },
+ "ire": {
+ "english_name": "Iresim"
+ },
+ "wtw": {
+ "english_name": "Wotu"
+ },
+ "rgr": {
+ "english_name": "Resígaro"
+ },
+ "rgs": {
+ "english_name": "Roglai, Southern"
+ },
+ "wtf": {
+ "english_name": "Watiwa"
+ },
+ "wth": {
+ "english_name": "Wathawurrung"
+ },
+ "smn": {
+ "english_name": "Sami, Inari"
+ },
+ "wtk": {
+ "english_name": "Watakataui"
+ },
+ "wtm": {
+ "english_name": "Mewati"
+ },
+ "rgu": {
+ "english_name": "Ringgou"
+ },
+ "smm": {
+ "english_name": "Musasa"
+ },
+ "and": {
+ "english_name": "Ansus"
+ },
+ "prd": {
+ "english_name": "Parsi-Dari"
+ },
+ "anf": {
+ "english_name": "Animere"
+ },
+ "prf": {
+ "english_name": "Paranan"
+ },
+ "gxx": {
+ "english_name": "Wè Southern"
+ },
+ "frc": {
+ "english_name": "French, Cajun"
+ },
+ "anb": {
+ "english_name": "Andoa"
+ },
+ "frd": {
+ "english_name": "Fordata"
+ },
+ "frk": {
+ "english_name": "Frankish"
+ },
+ "anc": {
+ "english_name": "Ngas"
+ },
+ "fro": {
+ "english_name": "French, Old (842-ca. 1400)"
+ },
+ "frm": {
+ "english_name": "French, Middle (ca. 1400-1600)"
+ },
+ "frs": {
+ "english_name": "Frisian, Eastern"
+ },
+ "frr": {
+ "english_name": "Frisian, Northern"
+ },
+ "frq": {
+ "english_name": "Forak"
+ },
+ "frp": {
+ "english_name": "Arpitan"
+ },
+ "frt": {
+ "english_name": "Fortsenal"
+ },
+ "pro": {
+ "english_name": "Provençal, Old (to 1500)"
+ },
+ "rge": {
+ "english_name": "Romano-Greek"
+ },
+ "prn": {
+ "english_name": "Prasuni"
+ },
+ "pri": {
+ "english_name": "Paicî"
+ },
+ "ani": {
+ "english_name": "Andi"
+ },
+ "prk": {
+ "english_name": "Parauk"
+ },
+ "ant": {
+ "english_name": "Antakarinya"
+ },
+ "rgk": {
+ "english_name": "Rangkas"
+ },
+ "prt": {
+ "english_name": "Phai"
+ },
+ "prw": {
+ "english_name": "Parawen"
+ },
+ "sjr": {
+ "english_name": "Siar-Lak"
+ },
+ "rgn": {
+ "english_name": "Romagnol"
+ },
+ "anp": {
+ "english_name": "Angika"
+ },
+ "sjp": {
+ "english_name": "Surjapuri"
+ },
+ "prp": {
+ "english_name": "Parsi"
+ },
+ "anr": {
+ "english_name": "Andh"
+ },
+ "tzx": {
+ "english_name": "Tabriak"
+ },
+ "ans": {
+ "english_name": "Anserma"
+ },
+ "qwm": {
+ "english_name": "Kuman (Russia)"
+ },
+ "sjw": {
+ "english_name": "Shawnee"
+ },
+ "tza": {
+ "english_name": "Tanzanian Sign Language"
+ },
+ "tzh": {
+ "english_name": "Tzeltal"
+ },
+ "tzj": {
+ "english_name": "Tz'utujil"
+ },
+ "tzm": {
+ "english_name": "Tamazight, Central Atlas"
+ },
+ "tzl": {
+ "english_name": "Talossan"
+ },
+ "tzo": {
+ "english_name": "Tzotzil"
+ },
+ "tzn": {
+ "english_name": "Tugun"
+ },
+ "dho": {
+ "english_name": "Dhodia"
+ },
+ "dhn": {
+ "english_name": "Dhanki"
+ },
+ "dhm": {
+ "english_name": "Zemba"
+ },
+ "dhl": {
+ "english_name": "Dhalandji"
+ },
+ "dhi": {
+ "english_name": "Dhimal"
+ },
+ "dhg": {
+ "english_name": "Djangu"
+ },
+ "anx": {
+ "english_name": "Andra-Hus"
+ },
+ "dhd": {
+ "english_name": "Dhundari"
+ },
+ "any": {
+ "english_name": "Anyin"
+ },
+ "dhx": {
+ "english_name": "Dhungaloo"
+ },
+ "dhw": {
+ "english_name": "Dhanwar (Nepal)"
+ },
+ "dhv": {
+ "english_name": "Dehu"
+ },
+ "dhu": {
+ "english_name": "Dhurga"
+ },
+ "dhs": {
+ "english_name": "Dhaiso"
+ },
+ "dhr": {
+ "english_name": "Dhargari"
+ },
+ "sjo": {
+ "english_name": "Xibe"
+ },
+ "sjl": {
+ "english_name": "Sajalong"
+ },
+ "jku": {
+ "english_name": "Labir"
+ },
+ "sjm": {
+ "english_name": "Mapun"
+ },
+ "jkp": {
+ "english_name": "Karen, Paku"
+ },
+ "jkr": {
+ "english_name": "Koro (India)"
+ },
+ "jkm": {
+ "english_name": "Karen, Mobwa"
+ },
+ "jko": {
+ "english_name": "Kubo"
+ },
+ "sja": {
+ "english_name": "Epena"
+ },
+ "sjg": {
+ "english_name": "Assangori"
+ },
+ "sjd": {
+ "english_name": "Sami, Kildin"
+ },
+ "smd": {
+ "english_name": "Sama"
+ },
+ "hah": {
+ "english_name": "Hahon"
+ },
+ "bnz": {
+ "english_name": "Beezen"
+ },
+ "bny": {
+ "english_name": "Bintulu"
+ },
+ "bnx": {
+ "english_name": "Bangubangu"
+ },
+ "hal": {
+ "english_name": "Halang"
+ },
+ "ham": {
+ "english_name": "Hewa"
+ },
+ "han": {
+ "english_name": "Hangaza"
+ },
+ "hao": {
+ "english_name": "Hakö"
+ },
+ "bns": {
+ "english_name": "Bundeli"
+ },
+ "bnr": {
+ "english_name": "Butmas-Tur"
+ },
+ "bnq": {
+ "english_name": "Bantik"
+ },
+ "hac": {
+ "english_name": "Gurani"
+ },
+ "had": {
+ "english_name": "Hatam"
+ },
+ "hae": {
+ "english_name": "Oromo, Eastern"
+ },
+ "haf": {
+ "english_name": "Haiphong Sign Language"
+ },
+ "hag": {
+ "english_name": "Hanga"
+ },
+ "hax": {
+ "english_name": "Haida, Southern"
+ },
+ "bnj": {
+ "english_name": "Tawbuid, Eastern"
+ },
+ "bni": {
+ "english_name": "Bangi"
+ },
+ "bno": {
+ "english_name": "Bantoanon"
+ },
+ "bnn": {
+ "english_name": "Bunun"
+ },
+ "bnm": {
+ "english_name": "Batanga"
+ },
+ "bnl": {
+ "english_name": "Boon"
+ },
+ "hap": {
+ "english_name": "Hupla"
+ },
+ "haq": {
+ "english_name": "Ha"
+ },
+ "har": {
+ "english_name": "Harari"
+ },
+ "has": {
+ "english_name": "Haisla"
+ },
+ "bng": {
+ "english_name": "Benga"
+ },
+ "bnf": {
+ "english_name": "Masiwang"
+ },
+ "bne": {
+ "english_name": "Bintauna"
+ },
+ "bnd": {
+ "english_name": "Banda (Indonesia)"
+ },
+ "ola": {
+ "english_name": "Walungge"
+ },
+ "old": {
+ "english_name": "Mochi"
+ },
+ "ole": {
+ "english_name": "Olekha"
+ },
+ "olk": {
+ "english_name": "Olkol"
+ },
+ "olm": {
+ "english_name": "Oloma"
+ },
+ "olo": {
+ "english_name": "Livvi"
+ },
+ "olr": {
+ "english_name": "Olrat"
+ },
+ "umu": {
+ "english_name": "Munsee"
+ },
+ "ump": {
+ "english_name": "Umpila"
+ },
+ "for": {
+ "english_name": "Fore"
+ },
+ "fos": {
+ "english_name": "Siraya"
+ },
+ "fod": {
+ "english_name": "Foodo"
+ },
+ "umd": {
+ "english_name": "Umbindhamu"
+ },
+ "umg": {
+ "english_name": "Umbuygamu"
+ },
+ "uma": {
+ "english_name": "Umatilla"
+ },
+ "umc": {
+ "english_name": "Marrucinian"
+ },
+ "umb": {
+ "english_name": "Umbundu"
+ },
+ "umm": {
+ "english_name": "Umon"
+ },
+ "fom": {
+ "english_name": "Foma"
+ },
+ "fon": {
+ "english_name": "Fon"
+ },
+ "umn": {
+ "english_name": "Naga, Makyan"
+ },
+ "umi": {
+ "english_name": "Ukit"
+ },
+ "foi": {
+ "english_name": "Foi"
+ },
+ "mbl": {
+ "english_name": "Maxakalí"
+ },
+ "mbm": {
+ "english_name": "Ombamba"
+ },
+ "mbn": {
+ "english_name": "Macaguán"
+ },
+ "mbo": {
+ "english_name": "Mbo (Cameroon)"
+ },
+ "mbh": {
+ "english_name": "Mangseng"
+ },
+ "mbi": {
+ "english_name": "Manobo, Ilianen"
+ },
+ "mbj": {
+ "english_name": "Nadëb"
+ },
+ "mbk": {
+ "english_name": "Malol"
+ },
+ "mbd": {
+ "english_name": "Manobo, Dibabawon"
+ },
+ "mbe": {
+ "english_name": "Molale"
+ },
+ "mbf": {
+ "english_name": "Malay, Baba"
+ },
+ "soj": {
+ "english_name": "Soi"
+ },
+ "mba": {
+ "english_name": "Higaonon"
+ },
+ "mbb": {
+ "english_name": "Manobo, Western Bukidnon"
+ },
+ "mbc": {
+ "english_name": "Macushi"
+ },
+ "soq": {
+ "english_name": "Kanasi"
+ },
+ "sop": {
+ "english_name": "Songe"
+ },
+ "sos": {
+ "english_name": "Seeku"
+ },
+ "sor": {
+ "english_name": "Somrai"
+ },
+ "mbx": {
+ "english_name": "Mari (East Sepik Province)"
+ },
+ "mby": {
+ "english_name": "Memoni"
+ },
+ "mbz": {
+ "english_name": "Mixtec, Amoltepec"
+ },
+ "sov": {
+ "english_name": "Sonsorol"
+ },
+ "mbt": {
+ "english_name": "Manobo, Matigsalug"
+ },
+ "mbu": {
+ "english_name": "Mbula-Bwazza"
+ },
+ "mbv": {
+ "english_name": "Mbulungish"
+ },
+ "mbw": {
+ "english_name": "Maring"
+ },
+ "mbp": {
+ "english_name": "Malayo"
+ },
+ "mbq": {
+ "english_name": "Maisin"
+ },
+ "mbr": {
+ "english_name": "Nukak Makú"
+ },
+ "mbs": {
+ "english_name": "Manobo, Sarangani"
+ },
+ "azj": {
+ "english_name": "Azerbaijani, North"
+ },
+ "azm": {
+ "english_name": "Amuzgo, Ipalapa"
+ },
+ "azn": {
+ "english_name": "Nahuatl, Western Durango"
+ },
+ "azo": {
+ "english_name": "Awing"
+ },
+ "aza": {
+ "english_name": "Azha"
+ },
+ "azb": {
+ "english_name": "Azerbaijani, South"
+ },
+ "azd": {
+ "english_name": "Nahuatl, Eastern Durango"
+ },
+ "azg": {
+ "english_name": "Amuzgo, San Pedro Amuzgos"
+ },
+ "azz": {
+ "english_name": "Nahuatl, Highland Puebla"
+ },
+ "azt": {
+ "english_name": "Atta, Faire"
+ },
+ "khx": {
+ "english_name": "Kanu"
+ },
+ "khy": {
+ "english_name": "Kele (Democratic Republic of Congo)"
+ },
+ "khz": {
+ "english_name": "Keapara"
+ },
+ "khp": {
+ "english_name": "Kapori"
+ },
+ "khq": {
+ "english_name": "Songhay, Koyra Chiini"
+ },
+ "khr": {
+ "english_name": "Kharia"
+ },
+ "khs": {
+ "english_name": "Kasua"
+ },
+ "kht": {
+ "english_name": "Khamti"
+ },
+ "khu": {
+ "english_name": "Nkhumbi"
+ },
+ "khv": {
+ "english_name": "Khvarshi"
+ },
+ "khw": {
+ "english_name": "Khowar"
+ },
+ "khh": {
+ "english_name": "Kehu"
+ },
+ "khj": {
+ "english_name": "Kuturmi"
+ },
+ "khk": {
+ "english_name": "Mongolian, Halh"
+ },
+ "khl": {
+ "english_name": "Lusi"
+ },
+ "khn": {
+ "english_name": "Khandesi"
+ },
+ "kho": {
+ "english_name": "Khotanese"
+ },
+ "kha": {
+ "english_name": "Khasi"
+ },
+ "khb": {
+ "english_name": "Lü"
+ },
+ "khc": {
+ "english_name": "Tukang Besi North"
+ },
+ "khd": {
+ "english_name": "Kanum, Bädi"
+ },
+ "khe": {
+ "english_name": "Korowai"
+ },
+ "khf": {
+ "english_name": "Khuen"
+ },
+ "khg": {
+ "english_name": "Tibetan, Khams"
+ },
+ "xkj": {
+ "english_name": "Kajali"
+ },
+ "xkk": {
+ "english_name": "Kaco'"
+ },
+ "xkh": {
+ "english_name": "Karahawyana"
+ },
+ "xki": {
+ "english_name": "Kenyan Sign Language"
+ },
+ "xkn": {
+ "english_name": "Kayan, Kayan River"
+ },
+ "xko": {
+ "english_name": "Kiorr"
+ },
+ "xkl": {
+ "english_name": "Mainstream Kenyah"
+ },
+ "xkb": {
+ "english_name": "Nago, Northern"
+ },
+ "xkc": {
+ "english_name": "Kho'ini"
+ },
+ "xka": {
+ "english_name": "Kalkoti"
+ },
+ "xkf": {
+ "english_name": "Khengkha"
+ },
+ "xkg": {
+ "english_name": "Kagoro"
+ },
+ "xkd": {
+ "english_name": "Kayan, Mendalam"
+ },
+ "xke": {
+ "english_name": "Kereho"
+ },
+ "xkz": {
+ "english_name": "Kurtokha"
+ },
+ "xkx": {
+ "english_name": "Karore"
+ },
+ "xky": {
+ "english_name": "Uma' Lasan"
+ },
+ "xkr": {
+ "english_name": "Xakriabá"
+ },
+ "xks": {
+ "english_name": "Kumbewaha"
+ },
+ "xkp": {
+ "english_name": "Kabatei"
+ },
+ "xkq": {
+ "english_name": "Koroni"
+ },
+ "xkv": {
+ "english_name": "Kgalagadi"
+ },
+ "xkw": {
+ "english_name": "Kembra"
+ },
+ "xkt": {
+ "english_name": "Kantosi"
+ },
+ "xku": {
+ "english_name": "Kaamba"
+ },
+ "nxu": {
+ "english_name": "Narau"
+ },
+ "nxq": {
+ "english_name": "Naxi"
+ },
+ "nxr": {
+ "english_name": "Ninggerum"
+ },
+ "nxx": {
+ "english_name": "Nafri"
+ },
+ "nxe": {
+ "english_name": "Nage"
+ },
+ "nxd": {
+ "english_name": "Ngando (Democratic Republic of Congo)"
+ },
+ "nxg": {
+ "english_name": "Ngad'a"
+ },
+ "nxa": {
+ "english_name": "Nauete"
+ },
+ "nxm": {
+ "english_name": "Numidian"
+ },
+ "nxl": {
+ "english_name": "Nuaulu, South"
+ },
+ "nxn": {
+ "english_name": "Ngawun"
+ },
+ "nxi": {
+ "english_name": "Nindi"
+ },
+ "nxk": {
+ "english_name": "Naga, Koki"
+ },
+ "osx": {
+ "english_name": "Saxon, Old"
+ },
+ "osp": {
+ "english_name": "Spanish, Old"
+ },
+ "osu": {
+ "english_name": "One, Southern"
+ },
+ "ost": {
+ "english_name": "Osatu"
+ },
+ "osi": {
+ "english_name": "Osing"
+ },
+ "oso": {
+ "english_name": "Ososo"
+ },
+ "osa": {
+ "english_name": "Osage"
+ },
+ "tkb": {
+ "english_name": "Buksa"
+ },
+ "osc": {
+ "english_name": "Oscan"
+ },
+ "ver": {
+ "english_name": "Mom Jango"
+ },
+ "vep": {
+ "english_name": "Veps"
+ },
+ "tka": {
+ "english_name": "Truká"
+ },
+ "tkn": {
+ "english_name": "Toku-No-Shima"
+ },
+ "ved": {
+ "english_name": "Veddah"
+ },
+ "vec": {
+ "english_name": "Venetian"
+ },
+ "veo": {
+ "english_name": "Ventureño"
+ },
+ "vel": {
+ "english_name": "Veluws"
+ },
+ "vem": {
+ "english_name": "Vemgo-Mabas"
+ },
+ "lra": {
+ "english_name": "Rara Bakati'"
+ },
+ "lrc": {
+ "english_name": "Luri, Northern"
+ },
+ "tkm": {
+ "english_name": "Takelma"
+ },
+ "lre": {
+ "english_name": "Laurentian"
+ },
+ "lrg": {
+ "english_name": "Laragia"
+ },
+ "lri": {
+ "english_name": "Marachi"
+ },
+ "lrk": {
+ "english_name": "Loarki"
+ },
+ "lrm": {
+ "english_name": "Marama"
+ },
+ "lrl": {
+ "english_name": "Lari"
+ },
+ "lro": {
+ "english_name": "Laro"
+ },
+ "lrn": {
+ "english_name": "Lorang"
+ },
+ "lrr": {
+ "english_name": "Yamphu, Southern"
+ },
+ "lrt": {
+ "english_name": "Malay, Larantuka"
+ },
+ "lrv": {
+ "english_name": "Larevat"
+ },
+ "lrz": {
+ "english_name": "Lemerig"
+ },
+ "tkt": {
+ "english_name": "Tharu, Kathoriya"
+ },
+ "tkr": {
+ "english_name": "Tsakhur"
+ },
+ "tkp": {
+ "english_name": "Tikopia"
+ },
+ "zrs": {
+ "english_name": "Mairasi"
+ },
+ "zrp": {
+ "english_name": "Zarphatic"
+ },
+ "zrg": {
+ "english_name": "Mirgan"
+ },
+ "tkx": {
+ "english_name": "Tangko"
+ },
+ "zra": {
+ "english_name": "Kara (Korea)"
+ },
+ "zro": {
+ "english_name": "Záparo"
+ },
+ "zrn": {
+ "english_name": "Zerenkel"
+ },
+ "rea": {
+ "english_name": "Rerau"
+ },
+ "ydg": {
+ "english_name": "Yidgha"
+ },
+ "ydd": {
+ "english_name": "Yiddish, Eastern"
+ },
+ "yde": {
+ "english_name": "Yangum Dey"
+ },
+ "yda": {
+ "english_name": "Yanda"
+ },
+ "ipi": {
+ "english_name": "Ipili"
+ },
+ "ipo": {
+ "english_name": "Ipiko"
+ },
+ "gzn": {
+ "english_name": "Gane"
+ },
+ "gzi": {
+ "english_name": "Gazi"
+ },
+ "gza": {
+ "english_name": "Ganza"
+ },
+ "ssx": {
+ "english_name": "Samberigi"
+ },
+ "fpe": {
+ "english_name": "Creole English, Fernando Po"
+ },
+ "sst": {
+ "english_name": "Sinasina"
+ },
+ "ssl": {
+ "english_name": "Sisaala, Western"
+ },
+ "ss": {
+ "english_name": "Swati"
+ },
+ "sr": {
+ "name": "српски",
+ "english_name": "Serbian"
+ },
+ "sq": {
+ "english_name": "Albanian"
+ },
+ "sw": {
+ "english_name": "Swahili (macrolanguage)"
+ },
+ "sv": {
+ "name": "Svenska",
+ "english_name": "Swedish"
+ },
+ "su": {
+ "english_name": "Sundanese"
+ },
+ "st": {
+ "english_name": "Sotho, Southern"
+ },
+ "sk": {
+ "name": "Slovenský",
+ "english_name": "Slovak"
+ },
+ "si": {
+ "english_name": "Sinhala"
+ },
+ "ssn": {
+ "english_name": "Waata"
+ },
+ "so": {
+ "english_name": "Somali"
+ },
+ "sn": {
+ "english_name": "Shona"
+ },
+ "sm": {
+ "english_name": "Samoan"
+ },
+ "sl": {
+ "name": "slovenščina",
+ "english_name": "Slovenian"
+ },
+ "sc": {
+ "english_name": "Sardinian"
+ },
+ "sa": {
+ "english_name": "Sanskrit"
+ },
+ "sg": {
+ "english_name": "Sango"
+ },
+ "se": {
+ "english_name": "Sami, Northern"
+ },
+ "sd": {
+ "english_name": "Sindhi"
+ },
+ "ttz": {
+ "english_name": "Tsum"
+ },
+ "tty": {
+ "english_name": "Sikaritai"
+ },
+ "tts": {
+ "english_name": "Thai, Northeastern"
+ },
+ "ttr": {
+ "english_name": "Tera"
+ },
+ "ttq": {
+ "english_name": "Tamajaq, Tawallammat"
+ },
+ "ttp": {
+ "english_name": "Tombelala"
+ },
+ "ttw": {
+ "english_name": "Long Wat"
+ },
+ "ttv": {
+ "english_name": "Titan"
+ },
+ "ttu": {
+ "english_name": "Torau"
+ },
+ "ttt": {
+ "english_name": "Tat, Muslim"
+ },
+ "ttk": {
+ "english_name": "Totoro"
+ },
+ "sse": {
+ "english_name": "Balangingi"
+ },
+ "tti": {
+ "english_name": "Tobati"
+ },
+ "tth": {
+ "english_name": "Ta'oih, Upper"
+ },
+ "tto": {
+ "english_name": "Ta'oih, Lower"
+ },
+ "ttn": {
+ "english_name": "Towei"
+ },
+ "ttm": {
+ "english_name": "Tutchone, Northern"
+ },
+ "ttl": {
+ "english_name": "Totela"
+ },
+ "ttc": {
+ "english_name": "Tektiteko"
+ },
+ "ttb": {
+ "english_name": "Gaa"
+ },
+ "tta": {
+ "english_name": "Tutelo"
+ },
+ "ttg": {
+ "english_name": "Tutong"
+ },
+ "ttf": {
+ "english_name": "Tuotomb"
+ },
+ "tte": {
+ "english_name": "Bwanabwana"
+ },
+ "ttd": {
+ "english_name": "Tauade"
+ },
+ "jig": {
+ "english_name": "Djingili"
+ },
+ "jid": {
+ "english_name": "Bu"
+ },
+ "djr": {
+ "english_name": "Djambarrpuyngu"
+ },
+ "dju": {
+ "english_name": "Kapriman"
+ },
+ "jic": {
+ "english_name": "Tol"
+ },
+ "djw": {
+ "english_name": "Djawi"
+ },
+ "jia": {
+ "english_name": "Jina"
+ },
+ "jio": {
+ "english_name": "Jiamao"
+ },
+ "jil": {
+ "english_name": "Jilim"
+ },
+ "jim": {
+ "english_name": "Jimi (Cameroon)"
+ },
+ "jih": {
+ "english_name": "sTodsde"
+ },
+ "jii": {
+ "english_name": "Jiiddu"
+ },
+ "dja": {
+ "english_name": "Djadjawurrung"
+ },
+ "djc": {
+ "english_name": "Daju, Dar Daju"
+ },
+ "djb": {
+ "english_name": "Djinba"
+ },
+ "dje": {
+ "english_name": "Zarma"
+ },
+ "djd": {
+ "english_name": "Djamindjung"
+ },
+ "djf": {
+ "english_name": "Djangun"
+ },
+ "dji": {
+ "english_name": "Djinang"
+ },
+ "djk": {
+ "english_name": "Eastern Maroon Creole"
+ },
+ "djj": {
+ "english_name": "Djeebbana"
+ },
+ "djm": {
+ "english_name": "Dogon, Jamsay"
+ },
+ "djo": {
+ "english_name": "Jangkang"
+ },
+ "djn": {
+ "english_name": "Djauan"
+ },
+ "bly": {
+ "english_name": "Notre"
+ },
+ "blx": {
+ "english_name": "Ayta, Mag-Indi"
+ },
+ "blz": {
+ "english_name": "Balantak"
+ },
+ "blt": {
+ "english_name": "Tai Dam"
+ },
+ "blw": {
+ "english_name": "Balangao"
+ },
+ "blv": {
+ "english_name": "Bolo"
+ },
+ "blq": {
+ "english_name": "Baluan-Pam"
+ },
+ "blp": {
+ "english_name": "Blablanga"
+ },
+ "bls": {
+ "english_name": "Balaesang"
+ },
+ "blr": {
+ "english_name": "Blang"
+ },
+ "blm": {
+ "english_name": "Beli (Sudan)"
+ },
+ "bll": {
+ "english_name": "Biloxi"
+ },
+ "blo": {
+ "english_name": "Anii"
+ },
+ "hca": {
+ "english_name": "Creole Hindi, Andaman"
+ },
+ "bli": {
+ "english_name": "Bolia"
+ },
+ "blh": {
+ "english_name": "Kuwaa"
+ },
+ "blk": {
+ "english_name": "Karen, Pa'o"
+ },
+ "blj": {
+ "english_name": "Bolongan"
+ },
+ "ble": {
+ "english_name": "Balanta-Kentohe"
+ },
+ "bld": {
+ "english_name": "Bolango"
+ },
+ "hch": {
+ "english_name": "Huichol"
+ },
+ "blf": {
+ "english_name": "Buol"
+ },
+ "bla": {
+ "english_name": "Siksika"
+ },
+ "blc": {
+ "english_name": "Bella Coola"
+ },
+ "blb": {
+ "english_name": "Bilua"
+ },
+ "onj": {
+ "english_name": "Onjob"
+ },
+ "onk": {
+ "english_name": "One, Kabore"
+ },
+ "oni": {
+ "english_name": "Onin"
+ },
+ "onn": {
+ "english_name": "Onobasulu"
+ },
+ "ono": {
+ "english_name": "Onondaga"
+ },
+ "onb": {
+ "english_name": "Lingao"
+ },
+ "ona": {
+ "english_name": "Ona"
+ },
+ "ong": {
+ "english_name": "Olo"
+ },
+ "one": {
+ "english_name": "Oneida"
+ },
+ "onx": {
+ "english_name": "Onin Based Pidgin"
+ },
+ "onr": {
+ "english_name": "One, Northern"
+ },
+ "ons": {
+ "english_name": "Ono"
+ },
+ "onp": {
+ "english_name": "Sartang"
+ },
+ "onw": {
+ "english_name": "Nubian, Old"
+ },
+ "ont": {
+ "english_name": "Ontenu"
+ },
+ "onu": {
+ "english_name": "Unua"
+ },
+ "uky": {
+ "english_name": "Kuuk-Yak"
+ },
+ "ukw": {
+ "english_name": "Ukwuani-Aboh-Ndoni"
+ },
+ "uku": {
+ "english_name": "Ukue"
+ },
+ "fmu": {
+ "english_name": "Muria, Far Western"
+ },
+ "uks": {
+ "english_name": "Urubú-Kaapor Sign Language"
+ },
+ "fmp": {
+ "english_name": "Fe'fe'"
+ },
+ "ukp": {
+ "english_name": "Ukpe-Bayobiri"
+ },
+ "rmz": {
+ "english_name": "Marma"
+ },
+ "ukl": {
+ "english_name": "Ukrainian Sign Language"
+ },
+ "ukh": {
+ "english_name": "Ukhwejo"
+ },
+ "ukg": {
+ "english_name": "Ukuriguma"
+ },
+ "rmx": {
+ "english_name": "Romam"
+ },
+ "uka": {
+ "english_name": "Kaburi"
+ },
+ "rmb": {
+ "english_name": "Rembarunga"
+ },
+ "tkf": {
+ "english_name": "Tukumanféd"
+ },
+ "rmc": {
+ "english_name": "Romani, Carpathian"
+ },
+ "rma": {
+ "english_name": "Rama"
+ },
+ "rmf": {
+ "english_name": "Romani, Kalo Finnish"
+ },
+ "rmg": {
+ "english_name": "Norwegian, Traveller"
+ },
+ "sak": {
+ "english_name": "Sake"
+ },
+ "saj": {
+ "english_name": "Sahu"
+ },
+ "sah": {
+ "english_name": "Yakut"
+ },
+ "sao": {
+ "english_name": "Sause"
+ },
+ "sam": {
+ "english_name": "Aramaic, Samaritan"
+ },
+ "sac": {
+ "english_name": "Meskwaki"
+ },
+ "sab": {
+ "english_name": "Buglere"
+ },
+ "saa": {
+ "english_name": "Saba"
+ },
+ "rme": {
+ "english_name": "Angloromani"
+ },
+ "saf": {
+ "english_name": "Safaliba"
+ },
+ "sae": {
+ "english_name": "Sabanê"
+ },
+ "sad": {
+ "english_name": "Sandawe"
+ },
+ "saz": {
+ "english_name": "Saurashtra"
+ },
+ "say": {
+ "english_name": "Saya"
+ },
+ "sax": {
+ "english_name": "Sa"
+ },
+ "rmk": {
+ "english_name": "Romkun"
+ },
+ "sas": {
+ "english_name": "Sasak"
+ },
+ "sar": {
+ "english_name": "Saraveca"
+ },
+ "saq": {
+ "english_name": "Samburu"
+ },
+ "saw": {
+ "english_name": "Sawi"
+ },
+ "rmh": {
+ "english_name": "Murkim"
+ },
+ "sau": {
+ "english_name": "Saleman"
+ },
+ "sat": {
+ "english_name": "Santali"
+ },
+ "zoc": {
+ "english_name": "Zoque, Copainalá"
+ },
+ "zoh": {
+ "english_name": "Zoque, Chimalapa"
+ },
+ "rmn": {
+ "english_name": "Romani, Balkan"
+ },
+ "zom": {
+ "english_name": "Zou"
+ },
+ "zoo": {
+ "english_name": "Zapotec, Asunción Mixtepec"
+ },
+ "zoq": {
+ "english_name": "Zoque, Tabasco"
+ },
+ "zor": {
+ "english_name": "Zoque, Rayón"
+ },
+ "zos": {
+ "english_name": "Zoque, Francisco León"
+ },
+ "rmm": {
+ "english_name": "Roma"
+ },
+ "axx": {
+ "english_name": "Xârâgurè"
+ },
+ "axb": {
+ "english_name": "Abipon"
+ },
+ "axg": {
+ "english_name": "Arára, Mato Grosso"
+ },
+ "axe": {
+ "english_name": "Ayerrerenge"
+ },
+ "axk": {
+ "english_name": "Yaka (Central African Republic)"
+ },
+ "axl": {
+ "english_name": "Aranda, Lower Southern"
+ },
+ "axm": {
+ "english_name": "Armenian, Middle"
+ },
+ "xml": {
+ "english_name": "Malaysian Sign Language"
+ },
+ "xmm": {
+ "english_name": "Malay, Manado"
+ },
+ "xmn": {
+ "english_name": "Persian, Manichaean Middle"
+ },
+ "xmo": {
+ "english_name": "Morerebi"
+ },
+ "xmh": {
+ "english_name": "Kuku-Muminh"
+ },
+ "xmj": {
+ "english_name": "Majera"
+ },
+ "xmk": {
+ "english_name": "Macedonian, Ancient"
+ },
+ "xmd": {
+ "english_name": "Mbudum"
+ },
+ "xme": {
+ "english_name": "Median"
+ },
+ "xmf": {
+ "english_name": "Mingrelian"
+ },
+ "xmg": {
+ "english_name": "Mengaka"
+ },
+ "xma": {
+ "english_name": "Mushungulu"
+ },
+ "xmb": {
+ "english_name": "Mbonga"
+ },
+ "xmc": {
+ "english_name": "Makhuwa-Marrevone"
+ },
+ "xmx": {
+ "english_name": "Maden"
+ },
+ "xmy": {
+ "english_name": "Mayaguduna"
+ },
+ "xmz": {
+ "english_name": "Mori Bawah"
+ },
+ "xmt": {
+ "english_name": "Matbat"
+ },
+ "xmu": {
+ "english_name": "Kamu"
+ },
+ "xmv": {
+ "english_name": "Malagasy, Antankarana"
+ },
+ "xmw": {
+ "english_name": "Malagasy, Tsimihety"
+ },
+ "xmp": {
+ "english_name": "Kuku-Mu'inh"
+ },
+ "xmq": {
+ "english_name": "Kuku-Mangk"
+ },
+ "xmr": {
+ "english_name": "Meroitic"
+ },
+ "xms": {
+ "english_name": "Moroccan Sign Language"
+ },
+ "uz": {
+ "english_name": "Uzbek"
+ },
+ "vkp": {
+ "english_name": "Creole Portuguese, Korlai"
+ },
+ "vkt": {
+ "english_name": "Malay, Tenggarong Kutai"
+ },
+ "vku": {
+ "english_name": "Kurrama"
+ },
+ "vki": {
+ "english_name": "Ija-Zuba"
+ },
+ "vkj": {
+ "english_name": "Kujarge"
+ },
+ "vkk": {
+ "english_name": "Kaur"
+ },
+ "vkl": {
+ "english_name": "Kulisusu"
+ },
+ "vkm": {
+ "english_name": "Kamakan"
+ },
+ "vko": {
+ "english_name": "Kodeoha"
+ },
+ "vka": {
+ "english_name": "Kariyarra"
+ },
+ "ug": {
+ "english_name": "Uighur"
+ },
+ "kjb": {
+ "english_name": "Q'anjob'al"
+ },
+ "kjc": {
+ "english_name": "Konjo, Coastal"
+ },
+ "kja": {
+ "english_name": "Mlap"
+ },
+ "kjf": {
+ "english_name": "Khalaj"
+ },
+ "kjg": {
+ "english_name": "Khmu"
+ },
+ "kjd": {
+ "english_name": "Kiwai, Southern"
+ },
+ "kje": {
+ "english_name": "Kisar"
+ },
+ "kjj": {
+ "english_name": "Khinalugh"
+ },
+ "kjk": {
+ "english_name": "Konjo, Highland"
+ },
+ "kjh": {
+ "english_name": "Khakas"
+ },
+ "kji": {
+ "english_name": "Zabana"
+ },
+ "kjn": {
+ "english_name": "Kunjen"
+ },
+ "kjo": {
+ "english_name": "Kinnauri, Harijan"
+ },
+ "kjl": {
+ "english_name": "Kham, Western Parbate"
+ },
+ "kjm": {
+ "english_name": "Kháng"
+ },
+ "kjr": {
+ "english_name": "Kurudu"
+ },
+ "kjs": {
+ "english_name": "Kewa, East"
+ },
+ "kjp": {
+ "english_name": "Karen, Pwo Eastern"
+ },
+ "kjq": {
+ "english_name": "Keres, Western"
+ },
+ "kjt": {
+ "english_name": "Karen, Phrae Pwo"
+ },
+ "kju": {
+ "english_name": "Kashaya"
+ },
+ "kjz": {
+ "english_name": "Bumthangkha"
+ },
+ "kjx": {
+ "english_name": "Ramopa"
+ },
+ "kjy": {
+ "english_name": "Erave"
+ },
+ "zpy": {
+ "english_name": "Zapotec, Mazaltepec"
+ },
+ "zpx": {
+ "english_name": "Zapotec, San Baltazar Loxicha"
+ },
+ "zpz": {
+ "english_name": "Zapotec, Texmelucan"
+ },
+ "zpq": {
+ "english_name": "Zapotec, Zoogocho"
+ },
+ "zpp": {
+ "english_name": "Zapotec, El Alto"
+ },
+ "zps": {
+ "english_name": "Zapotec, Coatlán"
+ },
+ "zpr": {
+ "english_name": "Zapotec, Santiago Xanica"
+ },
+ "zpu": {
+ "english_name": "Zapotec, Yalálag"
+ },
+ "zpt": {
+ "english_name": "Zapotec, San Vicente Coatlán"
+ },
+ "zpw": {
+ "english_name": "Zapotec, Zaniza"
+ },
+ "zpv": {
+ "english_name": "Zapotec, Chichicapan"
+ },
+ "zpi": {
+ "english_name": "Zapotec, Santa María Quiegolani"
+ },
+ "zph": {
+ "english_name": "Zapotec, Totomachapan"
+ },
+ "zpk": {
+ "english_name": "Zapotec, Tlacolulita"
+ },
+ "zpj": {
+ "english_name": "Zapotec, Quiavicuzas"
+ },
+ "zpm": {
+ "english_name": "Zapotec, Mixtepec"
+ },
+ "zpl": {
+ "english_name": "Zapotec, Lachixío"
+ },
+ "zpo": {
+ "english_name": "Zapotec, Amatlán"
+ },
+ "zpn": {
+ "english_name": "Zapotec, Santa Inés Yatzechi"
+ },
+ "zpa": {
+ "english_name": "Zapotec, Lachiguiri"
+ },
+ "zpc": {
+ "english_name": "Zapotec, Choapan"
+ },
+ "zpb": {
+ "english_name": "Zapotec, Yautepec"
+ },
+ "zpe": {
+ "english_name": "Zapotec, Petapa"
+ },
+ "zpd": {
+ "english_name": "Zapotec, Southeastern Ixtlán"
+ },
+ "zpg": {
+ "english_name": "Zapotec, Guevea De Humboldt"
+ },
+ "zpf": {
+ "english_name": "Zapotec, San Pedro Quiatoni"
+ },
+ "yzg": {
+ "english_name": "Buyang, E'ma"
+ },
+ "yzk": {
+ "english_name": "Zokhuo"
+ },
+ "vun": {
+ "english_name": "Vunjo"
+ },
+ "vum": {
+ "english_name": "Vumbu"
+ },
+ "ivb": {
+ "english_name": "Ibatan"
+ },
+ "ivv": {
+ "english_name": "Ivatan"
+ },
+ "vut": {
+ "english_name": "Vute"
+ },
+ "wpc": {
+ "english_name": "Maco"
+ },
+ "gdq": {
+ "english_name": "Mehri"
+ },
+ "gdr": {
+ "english_name": "Wipi"
+ },
+ "gds": {
+ "english_name": "Ghandruk Sign Language"
+ },
+ "gdt": {
+ "english_name": "Kungardutyi"
+ },
+ "gdu": {
+ "english_name": "Gudu"
+ },
+ "gdx": {
+ "english_name": "Godwari"
+ },
+ "gda": {
+ "english_name": "Lohar, Gade"
+ },
+ "gdb": {
+ "english_name": "Gadaba, Pottangi Ollar"
+ },
+ "gdc": {
+ "english_name": "Gugu Badhun"
+ },
+ "gdd": {
+ "english_name": "Gedaged"
+ },
+ "gde": {
+ "english_name": "Gude"
+ },
+ "gdf": {
+ "english_name": "Guduf-Gava"
+ },
+ "gdg": {
+ "english_name": "Ga'dang"
+ },
+ "gdh": {
+ "english_name": "Gadjerawang"
+ },
+ "gdi": {
+ "english_name": "Gundi"
+ },
+ "gdj": {
+ "english_name": "Gurdjar"
+ },
+ "gdk": {
+ "english_name": "Gadang"
+ },
+ "gdl": {
+ "english_name": "Dirasha"
+ },
+ "gdm": {
+ "english_name": "Laal"
+ },
+ "gdn": {
+ "english_name": "Umanakaina"
+ },
+ "gdo": {
+ "english_name": "Ghodoberi"
+ },
+ "fvr": {
+ "english_name": "Fur"
+ },
+ "tvy": {
+ "english_name": "Pidgin, Timor"
+ },
+ "tvu": {
+ "english_name": "Tunen"
+ },
+ "tvt": {
+ "english_name": "Naga, Tutsa"
+ },
+ "tvw": {
+ "english_name": "Sedoa"
+ },
+ "tvs": {
+ "english_name": "Taveta"
+ },
+ "tvm": {
+ "english_name": "Tela-Masbuar"
+ },
+ "tvl": {
+ "english_name": "Tuvalu"
+ },
+ "tvo": {
+ "english_name": "Tidore"
+ },
+ "tvn": {
+ "english_name": "Tavoyan"
+ },
+ "tvk": {
+ "english_name": "Ambrym, Southeast"
+ },
+ "tve": {
+ "english_name": "Te'un"
+ },
+ "eze": {
+ "english_name": "Uzekwe"
+ },
+ "tva": {
+ "english_name": "Vaghua"
+ },
+ "eza": {
+ "english_name": "Ezaa"
+ },
+ "jgk": {
+ "english_name": "Gwak"
+ },
+ "jgo": {
+ "english_name": "Ngomba"
+ },
+ "dds": {
+ "english_name": "Dogon, Donno So"
+ },
+ "ddr": {
+ "english_name": "Dhudhuroa"
+ },
+ "jgb": {
+ "english_name": "Ngbee"
+ },
+ "ddw": {
+ "english_name": "Dawera-Daweloor"
+ },
+ "jge": {
+ "english_name": "Judeo-Georgian"
+ },
+ "ddj": {
+ "english_name": "Jaru"
+ },
+ "ddi": {
+ "english_name": "Goodenough, West"
+ },
+ "ddo": {
+ "english_name": "Dido"
+ },
+ "ddn": {
+ "english_name": "Dendi (Benin)"
+ },
+ "dda": {
+ "english_name": "Dadi Dadi"
+ },
+ "ddg": {
+ "english_name": "Fataluku"
+ },
+ "dde": {
+ "english_name": "Doondo"
+ },
+ "ddd": {
+ "english_name": "Dongotono"
+ },
+ "acb": {
+ "english_name": "Áncá"
+ },
+ "aca": {
+ "english_name": "Achagua"
+ },
+ "acf": {
+ "english_name": "Creole French, Saint Lucian"
+ },
+ "ace": {
+ "english_name": "Achinese"
+ },
+ "acd": {
+ "english_name": "Gikyode"
+ },
+ "ack": {
+ "english_name": "Aka-Kora"
+ },
+ "aci": {
+ "english_name": "Aka-Cari"
+ },
+ "ach": {
+ "english_name": "Acoli"
+ },
+ "acn": {
+ "english_name": "Achang"
+ },
+ "acm": {
+ "english_name": "Arabic, Mesopotamian"
+ },
+ "acl": {
+ "english_name": "Akar-Bale"
+ },
+ "acs": {
+ "english_name": "Acroá"
+ },
+ "acr": {
+ "english_name": "Achi"
+ },
+ "acq": {
+ "english_name": "Arabic, Ta'izzi-Adeni"
+ },
+ "acp": {
+ "english_name": "Acipa, Eastern"
+ },
+ "acw": {
+ "english_name": "Arabic, Hijazi"
+ },
+ "acv": {
+ "english_name": "Achumawi"
+ },
+ "acu": {
+ "english_name": "Achuar-Shiwiar"
+ },
+ "act": {
+ "english_name": "Achterhoeks"
+ },
+ "acz": {
+ "english_name": "Acheron"
+ },
+ "acy": {
+ "english_name": "Arabic, Cypriot"
+ },
+ "acx": {
+ "english_name": "Arabic, Omani"
+ },
+ "bjg": {
+ "english_name": "Bidyogo"
+ },
+ "bjf": {
+ "english_name": "Neo-Aramaic, Barzani Jewish"
+ },
+ "bje": {
+ "english_name": "Mien, Biao-Jiao"
+ },
+ "bjc": {
+ "english_name": "Bariji"
+ },
+ "bjb": {
+ "english_name": "Banggarla"
+ },
+ "bja": {
+ "english_name": "Budza"
+ },
+ "bjo": {
+ "english_name": "Banda, Mid-Southern"
+ },
+ "bjn": {
+ "english_name": "Banjar"
+ },
+ "bjm": {
+ "english_name": "Bajelani"
+ },
+ "bjl": {
+ "english_name": "Bulu (Papua New Guinea)"
+ },
+ "bjk": {
+ "english_name": "Barok"
+ },
+ "bjj": {
+ "english_name": "Kanauji"
+ },
+ "bji": {
+ "english_name": "Burji"
+ },
+ "bjh": {
+ "english_name": "Bahinemo"
+ },
+ "bjw": {
+ "english_name": "Bakwé"
+ },
+ "bjv": {
+ "english_name": "Bedjond"
+ },
+ "bju": {
+ "english_name": "Busuu"
+ },
+ "bjt": {
+ "english_name": "Balanta-Ganja"
+ },
+ "bjs": {
+ "english_name": "Bajan"
+ },
+ "bjr": {
+ "english_name": "Binumarien"
+ },
+ "bjp": {
+ "english_name": "Fanamaket"
+ },
+ "bjz": {
+ "english_name": "Baruga"
+ },
+ "bjy": {
+ "english_name": "Bayali"
+ },
+ "bjx": {
+ "english_name": "Itneg, Banao"
+ },
+ "hed": {
+ "english_name": "Herdé"
+ },
+ "heg": {
+ "english_name": "Helong"
+ },
+ "hea": {
+ "english_name": "Miao, Northern Qiandong"
+ },
+ "hem": {
+ "english_name": "Hemba"
+ },
+ "heh": {
+ "english_name": "Hehe"
+ },
+ "hei": {
+ "english_name": "Heiltsuk"
+ },
+ "aa": {
+ "english_name": "Afar"
+ },
+ "ab": {
+ "english_name": "Abkhazian"
+ },
+ "ae": {
+ "english_name": "Avestan"
+ },
+ "af": {
+ "name": "Afrikaans",
+ "english_name": "Afrikaans"
+ },
+ "ak": {
+ "english_name": "Akan"
+ },
+ "am": {
+ "name": "አማርኛ",
+ "english_name": "Amharic"
+ },
+ "an": {
+ "english_name": "Aragonese"
+ },
+ "as": {
+ "english_name": "Assamese"
+ },
+ "ar": {
+ "name": "العربية",
+ "english_name": "Arabic"
+ },
+ "av": {
+ "english_name": "Avaric"
+ },
+ "oht": {
+ "english_name": "Hittite, Old"
+ },
+ "ohu": {
+ "english_name": "Hungarian, Old"
+ },
+ "az": {
+ "name": "Azerbaijani",
+ "english_name": "Azerbaijani"
+ },
+ "cpi": {
+ "english_name": "Pidgin English, Chinese"
+ },
+ "cpn": {
+ "english_name": "Cherepon"
+ },
+ "cpo": {
+ "english_name": "Kpeego"
+ },
+ "cpa": {
+ "english_name": "Chinantec, Palantla"
+ },
+ "cpb": {
+ "english_name": "Ashéninka, Ucayali-Yurúa"
+ },
+ "cpc": {
+ "english_name": "Ajyíninka Apurucayali"
+ },
+ "rxd": {
+ "english_name": "Ngardi"
+ },
+ "cpg": {
+ "english_name": "Greek, Cappadocian"
+ },
+ "cpx": {
+ "english_name": "Chinese, Pu-Xian"
+ },
+ "cpy": {
+ "english_name": "Ashéninka, South Ucayali"
+ },
+ "cps": {
+ "english_name": "Capiznon"
+ },
+ "cpu": {
+ "english_name": "Ashéninka, Pichis"
+ },
+ "rxw": {
+ "english_name": "Karuwali"
+ },
+ "mnx": {
+ "english_name": "Manikion"
+ },
+ "mny": {
+ "english_name": "Manyawa"
+ },
+ "mnz": {
+ "english_name": "Moni"
+ },
+ "scn": {
+ "english_name": "Sicilian"
+ },
+ "sci": {
+ "english_name": "Creole Malay, Sri Lankan"
+ },
+ "sch": {
+ "english_name": "Sakachep"
+ },
+ "sck": {
+ "english_name": "Sadri"
+ },
+ "qvm": {
+ "english_name": "Quechua, Margos-Yarowilca-Lauricocha"
+ },
+ "mnp": {
+ "english_name": "Chinese, Min Bei"
+ },
+ "mnq": {
+ "english_name": "Minriq"
+ },
+ "mnr": {
+ "english_name": "Mono (USA)"
+ },
+ "mns": {
+ "english_name": "Mansi"
+ },
+ "mnu": {
+ "english_name": "Mer"
+ },
+ "mnv": {
+ "english_name": "Rennell-Bellona"
+ },
+ "mnw": {
+ "english_name": "Mon"
+ },
+ "mnh": {
+ "english_name": "Mono (Democratic Republic of Congo)"
+ },
+ "mni": {
+ "english_name": "Manipuri"
+ },
+ "mnj": {
+ "english_name": "Munji"
+ },
+ "mnk": {
+ "english_name": "Mandinka"
+ },
+ "mnl": {
+ "english_name": "Tiale"
+ },
+ "mnm": {
+ "english_name": "Mapena"
+ },
+ "mnn": {
+ "english_name": "Mnong, Southern"
+ },
+ "scu": {
+ "english_name": "Shumcho"
+ },
+ "mna": {
+ "english_name": "Mbula"
+ },
+ "mnb": {
+ "english_name": "Muna"
+ },
+ "mnc": {
+ "english_name": "Manchu"
+ },
+ "mnd": {
+ "english_name": "Mondé"
+ },
+ "mne": {
+ "english_name": "Naba"
+ },
+ "mnf": {
+ "english_name": "Mundani"
+ },
+ "mng": {
+ "english_name": "Mnong, Eastern"
+ },
+ "zmj": {
+ "english_name": "Maridjabin"
+ },
+ "zmk": {
+ "english_name": "Mandandanyi"
+ },
+ "zmh": {
+ "english_name": "Makolkol"
+ },
+ "zmi": {
+ "english_name": "Negeri Sembilan Malay"
+ },
+ "zmn": {
+ "english_name": "Mbangwe"
+ },
+ "qvj": {
+ "english_name": "Quichua, Loja Highland"
+ },
+ "zml": {
+ "english_name": "Madngele"
+ },
+ "ty": {
+ "english_name": "Tahitian"
+ },
+ "zmb": {
+ "english_name": "Zimba"
+ },
+ "tw": {
+ "english_name": "Twi"
+ },
+ "tt": {
+ "name": "Татарча",
+ "english_name": "Tatar"
+ },
+ "zma": {
+ "english_name": "Manda (Australia)"
+ },
+ "tr": {
+ "name": "Türkçe",
+ "english_name": "Turkish"
+ },
+ "ts": {
+ "english_name": "Tsonga"
+ },
+ "zmd": {
+ "english_name": "Maridan"
+ },
+ "zme": {
+ "english_name": "Mangerr"
+ },
+ "tn": {
+ "english_name": "Tswana"
+ },
+ "to": {
+ "english_name": "Tonga (Tonga Islands)"
+ },
+ "tl": {
+ "english_name": "Tagalog"
+ },
+ "zmy": {
+ "english_name": "Mariyedi"
+ },
+ "tk": {
+ "english_name": "Turkmen"
+ },
+ "th": {
+ "name": "ไทย",
+ "english_name": "Thai"
+ },
+ "ti": {
+ "name": "ትግርኛ",
+ "english_name": "Tigrinya"
+ },
+ "zmr": {
+ "english_name": "Maranunggu"
+ },
+ "tg": {
+ "english_name": "Tajik"
+ },
+ "zmp": {
+ "english_name": "Mpuono"
+ },
+ "te": {
+ "english_name": "Telugu"
+ },
+ "zmv": {
+ "english_name": "Mbariman-Gudhinma"
+ },
+ "zmw": {
+ "english_name": "Mbo (Democratic Republic of Congo)"
+ },
+ "zmt": {
+ "english_name": "Maringarr"
+ },
+ "ta": {
+ "name": "தமிழ்",
+ "english_name": "Tamil"
+ },
+ "smh": {
+ "english_name": "Samei"
+ },
+ "smf": {
+ "english_name": "Auwe"
+ },
+ "pbu": {
+ "english_name": "Pashto, Northern"
+ },
+ "pbt": {
+ "english_name": "Pashto, Southern"
+ },
+ "pbv": {
+ "english_name": "Pnar"
+ },
+ "pbp": {
+ "english_name": "Badyara"
+ },
+ "pbs": {
+ "english_name": "Pame, Central"
+ },
+ "pbr": {
+ "english_name": "Pangwa"
+ },
+ "smc": {
+ "english_name": "Som"
+ },
+ "pby": {
+ "english_name": "Pyu"
+ },
+ "pbe": {
+ "english_name": "Popoloca, Mezontla"
+ },
+ "pbg": {
+ "english_name": "Paraujano"
+ },
+ "pbf": {
+ "english_name": "Popoloca, Coyotepec"
+ },
+ "pbc": {
+ "english_name": "Patamona"
+ },
+ "pbb": {
+ "english_name": "Páez"
+ },
+ "pbl": {
+ "english_name": "Mak (Nigeria)"
+ },
+ "pbo": {
+ "english_name": "Papel"
+ },
+ "pbn": {
+ "english_name": "Kpasam"
+ },
+ "pbi": {
+ "english_name": "Parkwa"
+ },
+ "pbh": {
+ "english_name": "E'ñapa Woromaipu"
+ },
+ "qvy": {
+ "english_name": "Queyu"
+ },
+ "qvz": {
+ "english_name": "Quichua, Northern Pastaza"
+ },
+ "xow": {
+ "english_name": "Kowaki"
+ },
+ "qvw": {
+ "english_name": "Quechua, Huaylla Wanca"
+ },
+ "haw": {
+ "english_name": "Hawaiian"
+ },
+ "xop": {
+ "english_name": "Kopar"
+ },
+ "qvp": {
+ "english_name": "Quechua, Pacaraos"
+ },
+ "xog": {
+ "english_name": "Soga"
+ },
+ "xod": {
+ "english_name": "Kokoda"
+ },
+ "xoc": {
+ "english_name": "O'chi'chi'"
+ },
+ "xon": {
+ "english_name": "Konkomba"
+ },
+ "xoo": {
+ "english_name": "Xukurú"
+ },
+ "qvs": {
+ "english_name": "Quechua, San Martín"
+ },
+ "xok": {
+ "english_name": "Xokleng"
+ },
+ "xoi": {
+ "english_name": "Kominimung"
+ },
+ "pyn": {
+ "english_name": "Poyanáwa"
+ },
+ "vic": {
+ "english_name": "Creole English, Virgin Islands"
+ },
+ "vif": {
+ "english_name": "Vili"
+ },
+ "vig": {
+ "english_name": "Viemo"
+ },
+ "vid": {
+ "english_name": "Vidunda"
+ },
+ "vin": {
+ "english_name": "Vinza"
+ },
+ "vil": {
+ "english_name": "Vilela"
+ },
+ "vis": {
+ "english_name": "Vishavan"
+ },
+ "viv": {
+ "english_name": "Iduna"
+ },
+ "vit": {
+ "english_name": "Viti"
+ },
+ "kld": {
+ "english_name": "Gamilaraay"
+ },
+ "kle": {
+ "english_name": "Kulung (Nepal)"
+ },
+ "klf": {
+ "english_name": "Kendeje"
+ },
+ "klg": {
+ "english_name": "Tagakaulo"
+ },
+ "kla": {
+ "english_name": "Klamath-Modoc"
+ },
+ "klb": {
+ "english_name": "Kiliwa"
+ },
+ "klc": {
+ "english_name": "Kolbila"
+ },
+ "kll": {
+ "english_name": "Kalagan, Kagan"
+ },
+ "klm": {
+ "english_name": "Migum"
+ },
+ "kln": {
+ "english_name": "Kalenjin"
+ },
+ "klo": {
+ "english_name": "Kapya"
+ },
+ "klh": {
+ "english_name": "Weliki"
+ },
+ "kli": {
+ "english_name": "Kalumpang"
+ },
+ "klj": {
+ "english_name": "Khalaj, Turkic"
+ },
+ "klk": {
+ "english_name": "Kono (Nigeria)"
+ },
+ "klt": {
+ "english_name": "Nukna"
+ },
+ "klu": {
+ "english_name": "Klao"
+ },
+ "klv": {
+ "english_name": "Maskelynes"
+ },
+ "klw": {
+ "english_name": "Lindu"
+ },
+ "klp": {
+ "english_name": "Kamasa"
+ },
+ "klq": {
+ "english_name": "Rumu"
+ },
+ "klr": {
+ "english_name": "Khaling"
+ },
+ "kls": {
+ "english_name": "Kalasha"
+ },
+ "klx": {
+ "english_name": "Koluwawa"
+ },
+ "kly": {
+ "english_name": "Kalao"
+ },
+ "klz": {
+ "english_name": "Kabola"
+ },
+ "swh": {
+ "english_name": "Swahili (individual language)"
+ },
+ "xud": {
+ "english_name": "Umiida"
+ },
+ "tsi": {
+ "english_name": "Tsimshian"
+ },
+ "xug": {
+ "english_name": "Kunigami"
+ },
+ "xua": {
+ "english_name": "Kurumba, Alu"
+ },
+ "yxy": {
+ "english_name": "Yabula Yabula"
+ },
+ "xub": {
+ "english_name": "Kurumba, Betta"
+ },
+ "pye": {
+ "english_name": "Krumen, Pye"
+ },
+ "yxu": {
+ "english_name": "Yuyu"
+ },
+ "xul": {
+ "english_name": "Ngunawal"
+ },
+ "yxl": {
+ "english_name": "Yardliyawarra"
+ },
+ "yxm": {
+ "english_name": "Yinwum"
+ },
+ "yxa": {
+ "english_name": "Mayawali"
+ },
+ "xun": {
+ "english_name": "Unggaranggu"
+ },
+ "xuj": {
+ "english_name": "Kurumba, Jennu"
+ },
+ "ito": {
+ "english_name": "Itonama"
+ },
+ "itl": {
+ "english_name": "Itelmen"
+ },
+ "itm": {
+ "english_name": "Itu Mbon Uzo"
+ },
+ "itk": {
+ "english_name": "Judeo-Italian"
+ },
+ "iti": {
+ "english_name": "Itneg, Inlaod"
+ },
+ "ite": {
+ "english_name": "Itene"
+ },
+ "itb": {
+ "english_name": "Itneg, Binongan"
+ },
+ "itz": {
+ "english_name": "Itzá"
+ },
+ "itx": {
+ "english_name": "Itik"
+ },
+ "ity": {
+ "english_name": "Itneg, Moyadan"
+ },
+ "itv": {
+ "english_name": "Itawit"
+ },
+ "itw": {
+ "english_name": "Ito"
+ },
+ "itt": {
+ "english_name": "Itneg, Maeng"
+ },
+ "itr": {
+ "english_name": "Iteri"
+ },
+ "its": {
+ "english_name": "Isekiri"
+ },
+ "wrg": {
+ "english_name": "Warungu"
+ },
+ "wrd": {
+ "english_name": "Warduji"
+ },
+ "swo": {
+ "english_name": "Shanenawa"
+ },
+ "wrb": {
+ "english_name": "Warluwara"
+ },
+ "wra": {
+ "english_name": "Warapu"
+ },
+ "wrn": {
+ "english_name": "Warnang"
+ },
+ "wro": {
+ "english_name": "Worrorra"
+ },
+ "wrl": {
+ "english_name": "Warlmanpa"
+ },
+ "wrm": {
+ "english_name": "Warumungu"
+ },
+ "wrk": {
+ "english_name": "Garrwa"
+ },
+ "wrh": {
+ "english_name": "Wiradhuri"
+ },
+ "wri": {
+ "english_name": "Wariyangga"
+ },
+ "wrv": {
+ "english_name": "Waruna"
+ },
+ "wrw": {
+ "english_name": "Gugu Warra"
+ },
+ "wru": {
+ "english_name": "Waru"
+ },
+ "wrr": {
+ "english_name": "Wardaman"
+ },
+ "wrs": {
+ "english_name": "Waris"
+ },
+ "wrp": {
+ "english_name": "Waropen"
+ },
+ "wrz": {
+ "english_name": "Waray (Australia)"
+ },
+ "wrx": {
+ "english_name": "Wae Rana"
+ },
+ "wry": {
+ "english_name": "Merwari"
+ },
+ "tri": {
+ "english_name": "Trió"
+ },
+ "tro": {
+ "english_name": "Naga, Tarao"
+ },
+ "tra": {
+ "english_name": "Tirahi"
+ },
+ "gft": {
+ "english_name": "Gafat"
+ },
+ "trd": {
+ "english_name": "Turi"
+ },
+ "gfk": {
+ "english_name": "Patpatar"
+ },
+ "jer": {
+ "english_name": "Jere"
+ },
+ "jet": {
+ "english_name": "Manem"
+ },
+ "jeu": {
+ "english_name": "Jonkor Bourmataguil"
+ },
+ "jeb": {
+ "english_name": "Jebero"
+ },
+ "jeg": {
+ "english_name": "Jeng"
+ },
+ "jee": {
+ "english_name": "Jerung"
+ },
+ "jek": {
+ "english_name": "Jeri Kuo"
+ },
+ "jeh": {
+ "english_name": "Jeh"
+ },
+ "jei": {
+ "english_name": "Yei"
+ },
+ "jen": {
+ "english_name": "Dza"
+ },
+ "jel": {
+ "english_name": "Yelmek"
+ },
+ "aae": {
+ "english_name": "Albanian, Arbëreshë"
+ },
+ "aad": {
+ "english_name": "Amal"
+ },
+ "aag": {
+ "english_name": "Ambrak"
+ },
+ "aaf": {
+ "english_name": "Aranadan"
+ },
+ "aaa": {
+ "english_name": "Ghotuo"
+ },
+ "aac": {
+ "english_name": "Ari"
+ },
+ "aab": {
+ "english_name": "Alumu-Tesu"
+ },
+ "aal": {
+ "english_name": "Afade"
+ },
+ "aao": {
+ "english_name": "Arabic, Algerian Saharan"
+ },
+ "aan": {
+ "english_name": "Anambé"
+ },
+ "aai": {
+ "english_name": "Arifama-Miniafia"
+ },
+ "aah": {
+ "english_name": "Arapesh, Abu'"
+ },
+ "aak": {
+ "english_name": "Ankave"
+ },
+ "aau": {
+ "english_name": "Abau"
+ },
+ "aat": {
+ "english_name": "Albanian, Arvanitika"
+ },
+ "aaw": {
+ "english_name": "Solong"
+ },
+ "aaq": {
+ "english_name": "Abnaki, Eastern"
+ },
+ "aap": {
+ "english_name": "Arára, Pará"
+ },
+ "aas": {
+ "english_name": "Aasáx"
+ },
+ "aax": {
+ "english_name": "Mandobo Atas"
+ },
+ "aaz": {
+ "english_name": "Amarasi"
+ },
+ "bhi": {
+ "english_name": "Bhilali"
+ },
+ "bhh": {
+ "english_name": "Bukharic"
+ },
+ "bhj": {
+ "english_name": "Bahing"
+ },
+ "bhm": {
+ "english_name": "Bathari"
+ },
+ "bhl": {
+ "english_name": "Bimin"
+ },
+ "bho": {
+ "english_name": "Bhojpuri"
+ },
+ "bhn": {
+ "english_name": "Neo-Aramaic, Bohtan"
+ },
+ "bha": {
+ "english_name": "Bharia"
+ },
+ "bhc": {
+ "english_name": "Biga"
+ },
+ "bhb": {
+ "english_name": "Bhili"
+ },
+ "bhe": {
+ "english_name": "Bhaya"
+ },
+ "bhd": {
+ "english_name": "Bhadrawahi"
+ },
+ "bhg": {
+ "english_name": "Binandere"
+ },
+ "bhf": {
+ "english_name": "Odiai"
+ },
+ "bhy": {
+ "english_name": "Bhele"
+ },
+ "bhx": {
+ "english_name": "Bhalay"
+ },
+ "bhz": {
+ "english_name": "Bada (Indonesia)"
+ },
+ "bhq": {
+ "english_name": "Tukang Besi South"
+ },
+ "bhp": {
+ "english_name": "Bima"
+ },
+ "bhs": {
+ "english_name": "Buwal"
+ },
+ "bhr": {
+ "english_name": "Malagasy, Bara"
+ },
+ "bhu": {
+ "english_name": "Bhunjia"
+ },
+ "bht": {
+ "english_name": "Bhattiyali"
+ },
+ "bhw": {
+ "english_name": "Biak"
+ },
+ "bhv": {
+ "english_name": "Bahau"
+ },
+ "hgw": {
+ "english_name": "Haigwai"
+ },
+ "hgm": {
+ "english_name": "Hai//om"
+ },
+ "tpg": {
+ "english_name": "Kula"
+ },
+ "tpf": {
+ "english_name": "Tarpia"
+ },
+ "tpe": {
+ "english_name": "Tippera"
+ },
+ "tpc": {
+ "english_name": "Me'phaa, Azoyú"
+ },
+ "tpa": {
+ "english_name": "Taupota"
+ },
+ "tpo": {
+ "english_name": "Tai Pao"
+ },
+ "tpn": {
+ "english_name": "Tupinambá"
+ },
+ "tpm": {
+ "english_name": "Tampulma"
+ },
+ "tpl": {
+ "english_name": "Me'phaa, Tlacoapa"
+ },
+ "tpk": {
+ "english_name": "Tupinikin"
+ },
+ "tpj": {
+ "english_name": "Tapieté"
+ },
+ "tpi": {
+ "english_name": "Tok Pisin"
+ },
+ "tpw": {
+ "english_name": "Tupí"
+ },
+ "tpv": {
+ "english_name": "Tanapag"
+ },
+ "ext": {
+ "english_name": "Extremaduran"
+ },
+ "tpt": {
+ "english_name": "Tepehua, Tlachichilco"
+ },
+ "tpr": {
+ "english_name": "Tuparí"
+ },
+ "tpq": {
+ "english_name": "Tukpa"
+ },
+ "tpp": {
+ "english_name": "Tepehua, Pisaflores"
+ },
+ "tpz": {
+ "english_name": "Tinputz"
+ },
+ "tpy": {
+ "english_name": "Trumai"
+ },
+ "tpx": {
+ "english_name": "Me'phaa, Acatepec"
+ },
+ "ojv": {
+ "english_name": "Ontong Java"
+ },
+ "ojw": {
+ "english_name": "Ojibwa, Western"
+ },
+ "ugo": {
+ "english_name": "Ugong"
+ },
+ "ojs": {
+ "english_name": "Ojibwa, Severn"
+ },
+ "ojp": {
+ "english_name": "Japanese, Old"
+ },
+ "ugb": {
+ "english_name": "Kuku-Ugbanh"
+ },
+ "uga": {
+ "english_name": "Ugaritic"
+ },
+ "uge": {
+ "english_name": "Ughele"
+ },
+ "ojg": {
+ "english_name": "Ojibwa, Eastern"
+ },
+ "ugy": {
+ "english_name": "Uruguayan Sign Language"
+ },
+ "ojb": {
+ "english_name": "Ojibwa, Northwestern"
+ },
+ "ojc": {
+ "english_name": "Ojibwa, Central"
+ },
+ "crr": {
+ "english_name": "Algonquian, Carolina"
+ },
+ "crs": {
+ "english_name": "Creole French, Seselwa"
+ },
+ "crq": {
+ "english_name": "Chorote, Iyo'wujwa"
+ },
+ "crv": {
+ "english_name": "Chaura"
+ },
+ "crw": {
+ "english_name": "Chrau"
+ },
+ "crt": {
+ "english_name": "Chorote, Iyojwa'ja"
+ },
+ "crz": {
+ "english_name": "Cruzeño"
+ },
+ "crx": {
+ "english_name": "Carrier"
+ },
+ "cry": {
+ "english_name": "Cori"
+ },
+ "crb": {
+ "english_name": "Carib, Island"
+ },
+ "crc": {
+ "english_name": "Lonwolwol"
+ },
+ "cra": {
+ "english_name": "Chara"
+ },
+ "crf": {
+ "english_name": "Caramanta"
+ },
+ "crg": {
+ "english_name": "Michif"
+ },
+ "crd": {
+ "english_name": "Coeur d'Alene"
+ },
+ "crj": {
+ "english_name": "Cree, Southern East"
+ },
+ "crk": {
+ "english_name": "Cree, Plains"
+ },
+ "crh": {
+ "name": "Tatar, Crimean",
+ "english_name": "Tatar, Crimean"
+ },
+ "cri": {
+ "english_name": "Sãotomense"
+ },
+ "crn": {
+ "english_name": "Cora, El Nayar"
+ },
+ "cro": {
+ "english_name": "Crow"
+ },
+ "crl": {
+ "english_name": "Cree, Northern East"
+ },
+ "crm": {
+ "english_name": "Cree, Moose"
+ },
+ "sew": {
+ "english_name": "Sewa Bay"
+ },
+ "sev": {
+ "english_name": "Senoufo, Nyarafolo"
+ },
+ "seu": {
+ "english_name": "Serui-Laut"
+ },
+ "set": {
+ "english_name": "Sentani"
+ },
+ "ses": {
+ "english_name": "Songhai, Koyraboro Senni"
+ },
+ "ser": {
+ "english_name": "Serrano"
+ },
+ "seq": {
+ "english_name": "Sénoufo, Senara"
+ },
+ "sep": {
+ "english_name": "Sénoufo, Sìcìté"
+ },
+ "sez": {
+ "english_name": "Chin, Senthang"
+ },
+ "sey": {
+ "english_name": "Secoya"
+ },
+ "seg": {
+ "english_name": "Segeju"
+ },
+ "sef": {
+ "english_name": "Senoufo, Cebaara"
+ },
+ "see": {
+ "english_name": "Seneca"
+ },
+ "sed": {
+ "english_name": "Sedang"
+ },
+ "sec": {
+ "english_name": "Sechelt"
+ },
+ "seb": {
+ "english_name": "Senoufo, Shempire"
+ },
+ "sea": {
+ "english_name": "Semai"
+ },
+ "seo": {
+ "english_name": "Suarmin"
+ },
+ "sen": {
+ "english_name": "Sénoufo, Nanerigé"
+ },
+ "sel": {
+ "english_name": "Selkup"
+ },
+ "sek": {
+ "english_name": "Sekani"
+ },
+ "sej": {
+ "english_name": "Sene"
+ },
+ "sei": {
+ "english_name": "Seri"
+ },
+ "seh": {
+ "english_name": "Sena"
+ },
+ "zkn": {
+ "english_name": "Kanan"
+ },
+ "zko": {
+ "english_name": "Kott"
+ },
+ "zkh": {
+ "english_name": "Khorezmian"
+ },
+ "zkk": {
+ "english_name": "Karankawa"
+ },
+ "zkd": {
+ "english_name": "Kadu"
+ },
+ "zkg": {
+ "english_name": "Koguryo"
+ },
+ "zka": {
+ "english_name": "Kaimbulawa"
+ },
+ "zkb": {
+ "english_name": "Koibal"
+ },
+ "zkz": {
+ "english_name": "Khazar"
+ },
+ "zkt": {
+ "english_name": "Kitan"
+ },
+ "zku": {
+ "english_name": "Kaurna"
+ },
+ "zkv": {
+ "english_name": "Krevinian"
+ },
+ "zkp": {
+ "english_name": "Kaingáng, São Paulo"
+ },
+ "zkr": {
+ "english_name": "Zakhring"
+ },
+ "swt": {
+ "english_name": "Sawila"
+ },
+ "pdu": {
+ "english_name": "Kayan"
+ },
+ "pdt": {
+ "english_name": "Plautdietsch"
+ },
+ "pdo": {
+ "english_name": "Padoe"
+ },
+ "pdn": {
+ "english_name": "Podena"
+ },
+ "sww": {
+ "english_name": "Sowa"
+ },
+ "pdi": {
+ "english_name": "Pa Di"
+ },
+ "pdc": {
+ "english_name": "German, Pennsylvania"
+ },
+ "pda": {
+ "english_name": "Anam"
+ },
+ "xay": {
+ "english_name": "Kayan Mahakam"
+ },
+ "xap": {
+ "english_name": "Apalachee"
+ },
+ "xaq": {
+ "english_name": "Aquitanian"
+ },
+ "xar": {
+ "english_name": "Karami"
+ },
+ "xas": {
+ "english_name": "Kamas"
+ },
+ "xat": {
+ "english_name": "Katawixi"
+ },
+ "xau": {
+ "english_name": "Kauwera"
+ },
+ "xav": {
+ "english_name": "Xavánte"
+ },
+ "xaw": {
+ "english_name": "Kawaiisu"
+ },
+ "xai": {
+ "english_name": "Kaimbé"
+ },
+ "xal": {
+ "english_name": "Kalmyk"
+ },
+ "xam": {
+ "english_name": "/Xam"
+ },
+ "xan": {
+ "english_name": "Xamtanga"
+ },
+ "xao": {
+ "english_name": "Khao"
+ },
+ "xaa": {
+ "english_name": "Arabic, Andalusian"
+ },
+ "xab": {
+ "english_name": "Sambe"
+ },
+ "xac": {
+ "english_name": "Kachari"
+ },
+ "xad": {
+ "english_name": "Adai"
+ },
+ "xae": {
+ "english_name": "Aequian"
+ },
+ "xag": {
+ "english_name": "Aghwan"
+ },
+ "nrk": {
+ "english_name": "Ngarla"
+ },
+ "nri": {
+ "english_name": "Naga, Chokri"
+ },
+ "nrn": {
+ "english_name": "Norn"
+ },
+ "nrm": {
+ "english_name": "Narom"
+ },
+ "nrl": {
+ "english_name": "Ngarluma"
+ },
+ "nrc": {
+ "english_name": "Noric"
+ },
+ "nrb": {
+ "english_name": "Nara"
+ },
+ "nra": {
+ "english_name": "Ngom"
+ },
+ "nrg": {
+ "english_name": "Narango"
+ },
+ "nre": {
+ "english_name": "Naga, Southern Rengma"
+ },
+ "nrz": {
+ "english_name": "Lala"
+ },
+ "nrx": {
+ "english_name": "Ngurmbur"
+ },
+ "nrr": {
+ "english_name": "Norra"
+ },
+ "nrp": {
+ "english_name": "Picene, North"
+ },
+ "nru": {
+ "english_name": "Narua"
+ },
+ "nrt": {
+ "english_name": "Kalapuya, Northern"
+ },
+ "mlb": {
+ "english_name": "Mbule"
+ },
+ "mlc": {
+ "english_name": "Cao Lan"
+ },
+ "mla": {
+ "english_name": "Malo"
+ },
+ "mlf": {
+ "english_name": "Mal"
+ },
+ "mle": {
+ "english_name": "Manambu"
+ },
+ "mlj": {
+ "english_name": "Miltu"
+ },
+ "mlk": {
+ "english_name": "Ilwana"
+ },
+ "mlh": {
+ "english_name": "Mape"
+ },
+ "mli": {
+ "english_name": "Malimpung"
+ },
+ "mln": {
+ "english_name": "Malango"
+ },
+ "mlo": {
+ "english_name": "Mlomp"
+ },
+ "mll": {
+ "english_name": "Malua Bay"
+ },
+ "mlm": {
+ "english_name": "Mulam"
+ },
+ "mlr": {
+ "english_name": "Vame"
+ },
+ "mls": {
+ "english_name": "Masalit"
+ },
+ "mlp": {
+ "english_name": "Bargam"
+ },
+ "mlq": {
+ "english_name": "Maninkakan, Western"
+ },
+ "mlv": {
+ "english_name": "Motlav"
+ },
+ "mlw": {
+ "english_name": "Moloko"
+ },
+ "mlu": {
+ "english_name": "To'abaita"
+ },
+ "mlz": {
+ "english_name": "Malaynon"
+ },
+ "mlx": {
+ "english_name": "Malfaxal"
+ },
+ "psh": {
+ "english_name": "Pashayi, Southwest"
+ },
+ "vot": {
+ "english_name": "Votic"
+ },
+ "amj": {
+ "english_name": "Amdang"
+ },
+ "vor": {
+ "english_name": "Voro"
+ },
+ "amm": {
+ "english_name": "Ama (Papua New Guinea)"
+ },
+ "pso": {
+ "english_name": "Polish Sign Language"
+ },
+ "psl": {
+ "english_name": "Puerto Rican Sign Language"
+ },
+ "psm": {
+ "english_name": "Pauserna"
+ },
+ "psa": {
+ "english_name": "Awyu, Asue"
+ },
+ "rdb": {
+ "english_name": "Rudbari"
+ },
+ "psd": {
+ "english_name": "Plains Indian Sign Language"
+ },
+ "amf": {
+ "english_name": "Hamer-Banna"
+ },
+ "knn": {
+ "english_name": "Konkani (individual language)"
+ },
+ "kno": {
+ "english_name": "Kono (Sierra Leone)"
+ },
+ "knl": {
+ "english_name": "Keninjal"
+ },
+ "knm": {
+ "english_name": "Kanamarí"
+ },
+ "knj": {
+ "english_name": "Kanjobal, Western"
+ },
+ "knk": {
+ "english_name": "Kuranko"
+ },
+ "kni": {
+ "english_name": "Kanufi"
+ },
+ "knf": {
+ "english_name": "Mankanya"
+ },
+ "kng": {
+ "english_name": "Koongo"
+ },
+ "knd": {
+ "english_name": "Konda"
+ },
+ "kne": {
+ "english_name": "Kankanaey"
+ },
+ "knb": {
+ "english_name": "Kalinga, Lubuagan"
+ },
+ "knc": {
+ "english_name": "Kanuri, Central"
+ },
+ "kna": {
+ "english_name": "Dera (Nigeria)"
+ },
+ "psy": {
+ "english_name": "Piscataway"
+ },
+ "knz": {
+ "english_name": "Kalamsé"
+ },
+ "knx": {
+ "english_name": "Kendayan"
+ },
+ "kny": {
+ "english_name": "Kanyok"
+ },
+ "knv": {
+ "english_name": "Tabo"
+ },
+ "knw": {
+ "english_name": "Kung-Ekoka"
+ },
+ "knt": {
+ "english_name": "Katukína, Panoan"
+ },
+ "knu": {
+ "english_name": "Kono (Guinea)"
+ },
+ "knr": {
+ "english_name": "Kaningra"
+ },
+ "kns": {
+ "english_name": "Kensiu"
+ },
+ "knp": {
+ "english_name": "Kwanja"
+ },
+ "knq": {
+ "english_name": "Kintaq"
+ },
+ "psr": {
+ "english_name": "Portuguese Sign Language"
+ },
+ "pss": {
+ "english_name": "Kaulong"
+ },
+ "ams": {
+ "english_name": "Amami-Oshima, Southern"
+ },
+ "amr": {
+ "english_name": "Amarakaeri"
+ },
+ "amt": {
+ "english_name": "Amto"
+ },
+ "pst": {
+ "english_name": "Pashto, Central"
+ },
+ "amv": {
+ "english_name": "Ambelau"
+ },
+ "vgt": {
+ "english_name": "Vlaamse Gebarentaal"
+ },
+ "ijs": {
+ "english_name": "Ijo, Southeast"
+ },
+ "ijc": {
+ "english_name": "Izon"
+ },
+ "ije": {
+ "english_name": "Biseni"
+ },
+ "ijj": {
+ "english_name": "Ede Ije"
+ },
+ "ijn": {
+ "english_name": "Kalabari"
+ },
+ "be": {
+ "english_name": "Belarusian"
+ },
+ "bg": {
+ "name": "Български",
+ "english_name": "Bulgarian"
+ },
+ "ba": {
+ "english_name": "Bashkir"
+ },
+ "bm": {
+ "english_name": "Bambara"
+ },
+ "bn": {
+ "name": "বাংলা",
+ "english_name": "Bengali"
+ },
+ "bo": {
+ "english_name": "Tibetan"
+ },
+ "bi": {
+ "english_name": "Bislama"
+ },
+ "chc": {
+ "english_name": "Catawba"
+ },
+ "br": {
+ "name": "Brezhoneg",
+ "english_name": "Breton"
+ },
+ "bs": {
+ "name": "Bosnian",
+ "english_name": "Bosnian"
+ },
+ "cic": {
+ "english_name": "Chickasaw"
+ },
+ "cib": {
+ "english_name": "Gbe, Ci"
+ },
+ "cia": {
+ "english_name": "Cia-Cia"
+ },
+ "zim": {
+ "english_name": "Mesme"
+ },
+ "cie": {
+ "english_name": "Cineni"
+ },
+ "cid": {
+ "english_name": "Chimariko"
+ },
+ "cik": {
+ "english_name": "Kinnauri, Chitkuli"
+ },
+ "cih": {
+ "english_name": "Chinali"
+ },
+ "cin": {
+ "english_name": "Cinta Larga"
+ },
+ "cim": {
+ "english_name": "Cimbrian"
+ },
+ "ur": {
+ "english_name": "Urdu"
+ },
+ "cir": {
+ "english_name": "Tiri"
+ },
+ "cip": {
+ "english_name": "Chiapanec"
+ },
+ "ciw": {
+ "english_name": "Chippewa"
+ },
+ "uk": {
+ "name": "українська",
+ "english_name": "Ukrainian"
+ },
+ "quc": {
+ "english_name": "K'iche'"
+ },
+ "ciy": {
+ "english_name": "Chaima"
+ },
+ "sxb": {
+ "english_name": "Suba"
+ },
+ "sxc": {
+ "english_name": "Sicanian"
+ },
+ "sxe": {
+ "english_name": "Sighu"
+ },
+ "sxg": {
+ "english_name": "Shixing"
+ },
+ "sxk": {
+ "english_name": "Kalapuya, Southern"
+ },
+ "sxl": {
+ "english_name": "Selian"
+ },
+ "sxm": {
+ "english_name": "Samre"
+ },
+ "sxn": {
+ "english_name": "Sangir"
+ },
+ "sxo": {
+ "english_name": "Sorothaptic"
+ },
+ "sxr": {
+ "english_name": "Saaroa"
+ },
+ "sxs": {
+ "english_name": "Sasaru"
+ },
+ "sxu": {
+ "english_name": "Saxon, Upper"
+ },
+ "qub": {
+ "english_name": "Quechua, Huallaga Huánuco"
+ },
+ "sxw": {
+ "english_name": "Gbe, Saxwe"
+ },
+ "jct": {
+ "english_name": "Krymchak"
+ },
+ "jcs": {
+ "english_name": "Jamaican Country Sign Language"
+ },
+ "qud": {
+ "english_name": "Quichua, Calderón Highland"
+ },
+ "ago": {
+ "english_name": "Tainae"
+ },
+ "agn": {
+ "english_name": "Agutaynen"
+ },
+ "agm": {
+ "english_name": "Angaataha"
+ },
+ "agl": {
+ "english_name": "Fembe"
+ },
+ "agk": {
+ "english_name": "Agta, Isarog"
+ },
+ "agj": {
+ "english_name": "Argobba"
+ },
+ "agi": {
+ "english_name": "Agariya"
+ },
+ "agh": {
+ "english_name": "Ngelima"
+ },
+ "agg": {
+ "english_name": "Angor"
+ },
+ "agf": {
+ "english_name": "Arguni"
+ },
+ "age": {
+ "english_name": "Angal"
+ },
+ "agd": {
+ "english_name": "Agarabi"
+ },
+ "agc": {
+ "english_name": "Agatu"
+ },
+ "agb": {
+ "english_name": "Legbo"
+ },
+ "aga": {
+ "english_name": "Aguano"
+ },
+ "qug": {
+ "english_name": "Quichua, Chimborazo Highland"
+ },
+ "agz": {
+ "english_name": "Agta, Mt. Iriga"
+ },
+ "agy": {
+ "english_name": "Alta, Southern"
+ },
+ "agx": {
+ "english_name": "Aghul"
+ },
+ "agw": {
+ "english_name": "Kahua"
+ },
+ "agv": {
+ "english_name": "Dumagat, Remontado"
+ },
+ "agu": {
+ "english_name": "Aguacateco"
+ },
+ "agt": {
+ "english_name": "Agta, Central Cagayan"
+ },
+ "ags": {
+ "english_name": "Esimbi"
+ },
+ "agr": {
+ "english_name": "Aguaruna"
+ },
+ "agq": {
+ "english_name": "Aghem"
+ },
+ "qvl": {
+ "english_name": "Quechua, Cajatambo North Lima"
+ },
+ "bvr": {
+ "english_name": "Burarra"
+ },
+ "bvq": {
+ "english_name": "Birri"
+ },
+ "bvp": {
+ "english_name": "Bumang"
+ },
+ "bvw": {
+ "english_name": "Boga"
+ },
+ "bvv": {
+ "english_name": "Baniva"
+ },
+ "bvu": {
+ "english_name": "Malay, Bukit"
+ },
+ "bvt": {
+ "english_name": "Bati (Indonesia)"
+ },
+ "bvz": {
+ "english_name": "Bauzi"
+ },
+ "bvy": {
+ "english_name": "Baybayanon"
+ },
+ "bvx": {
+ "english_name": "Dibole"
+ },
+ "qva": {
+ "english_name": "Quechua, Ambo-Pasco"
+ },
+ "quf": {
+ "english_name": "Quechua, Lambayeque"
+ },
+ "qvc": {
+ "english_name": "Quechua, Cajamarca"
+ },
+ "bvc": {
+ "english_name": "Baelelea"
+ },
+ "bvb": {
+ "english_name": "Bube"
+ },
+ "bva": {
+ "english_name": "Barein"
+ },
+ "bvg": {
+ "english_name": "Bonkeng"
+ },
+ "bvf": {
+ "english_name": "Boor"
+ },
+ "bve": {
+ "english_name": "Malay, Berau"
+ },
+ "bvd": {
+ "english_name": "Baeggu"
+ },
+ "bvk": {
+ "english_name": "Bukat"
+ },
+ "bvj": {
+ "english_name": "Baan"
+ },
+ "bvi": {
+ "english_name": "Belanda Viri"
+ },
+ "bvh": {
+ "english_name": "Bure"
+ },
+ "bvo": {
+ "english_name": "Bolgo"
+ },
+ "bvn": {
+ "english_name": "Buna"
+ },
+ "bvm": {
+ "english_name": "Bamunka"
+ },
+ "bvl": {
+ "english_name": "Bolivian Sign Language"
+ },
+ "qui": {
+ "english_name": "Quileute"
+ },
+ "suv": {
+ "english_name": "Puroik"
+ },
+ "quh": {
+ "english_name": "Quechua, South Bolivian"
+ },
+ "evh": {
+ "english_name": "Uvbie"
+ },
+ "trh": {
+ "english_name": "Turaka"
+ },
+ "trj": {
+ "english_name": "Toram"
+ },
+ "trm": {
+ "english_name": "Tregami"
+ },
+ "trl": {
+ "english_name": "Scottish, Traveller"
+ },
+ "evn": {
+ "english_name": "Evenki"
+ },
+ "trn": {
+ "english_name": "Trinitario"
+ },
+ "quk": {
+ "english_name": "Quechua, Chachapoyas"
+ },
+ "trc": {
+ "english_name": "Triqui, Copala"
+ },
+ "trb": {
+ "english_name": "Terebu"
+ },
+ "tre": {
+ "english_name": "Tarangan, East"
+ },
+ "eve": {
+ "english_name": "Even"
+ },
+ "trg": {
+ "english_name": "Lishán Didán"
+ },
+ "trf": {
+ "english_name": "Creole English, Trinidadian"
+ },
+ "try": {
+ "english_name": "Turung"
+ },
+ "trx": {
+ "english_name": "Bidayuh, Tringgus-Sembaan"
+ },
+ "trz": {
+ "english_name": "Torá"
+ },
+ "trq": {
+ "english_name": "Triqui, San Martín Itunyoso"
+ },
+ "trp": {
+ "english_name": "Kok Borok"
+ },
+ "trs": {
+ "english_name": "Triqui, Chicahuaxtla"
+ },
+ "trr": {
+ "english_name": "Taushiro"
+ },
+ "tru": {
+ "english_name": "Turoyo"
+ },
+ "trt": {
+ "english_name": "Tunggare"
+ },
+ "trw": {
+ "english_name": "Torwali"
+ },
+ "trv": {
+ "english_name": "Taroko"
+ },
+ "tdk": {
+ "english_name": "Tambas"
+ },
+ "tdj": {
+ "english_name": "Tajio"
+ },
+ "odt": {
+ "english_name": "Dutch, Old"
+ },
+ "odu": {
+ "english_name": "Odual"
+ },
+ "odk": {
+ "english_name": "Od"
+ },
+ "oda": {
+ "english_name": "Odut"
+ },
+ "ues": {
+ "english_name": "Kioko"
+ },
+ "tdn": {
+ "english_name": "Tondano"
+ },
+ "tdl": {
+ "english_name": "Sur"
+ },
+ "lea": {
+ "english_name": "Lega-Shabunda"
+ },
+ "leb": {
+ "english_name": "Lala-Bisa"
+ },
+ "lec": {
+ "english_name": "Leco"
+ },
+ "led": {
+ "english_name": "Lendu"
+ },
+ "lee": {
+ "english_name": "Lyélé"
+ },
+ "lef": {
+ "english_name": "Lelemi"
+ },
+ "leh": {
+ "english_name": "Lenje"
+ },
+ "lei": {
+ "english_name": "Lemio"
+ },
+ "lej": {
+ "english_name": "Lengola"
+ },
+ "lek": {
+ "english_name": "Leipon"
+ },
+ "lel": {
+ "english_name": "Lele (Democratic Republic of Congo)"
+ },
+ "lem": {
+ "english_name": "Nomaande"
+ },
+ "len": {
+ "english_name": "Lenca"
+ },
+ "leo": {
+ "english_name": "Leti (Cameroon)"
+ },
+ "lep": {
+ "english_name": "Lepcha"
+ },
+ "leq": {
+ "english_name": "Lembena"
+ },
+ "ler": {
+ "english_name": "Lenkau"
+ },
+ "les": {
+ "english_name": "Lese"
+ },
+ "let": {
+ "english_name": "Lesing-Gelimi"
+ },
+ "leu": {
+ "english_name": "Kara (Papua New Guinea)"
+ },
+ "lev": {
+ "english_name": "Lamma"
+ },
+ "lew": {
+ "english_name": "Kaili, Ledo"
+ },
+ "lex": {
+ "english_name": "Luang"
+ },
+ "ley": {
+ "english_name": "Lemolang"
+ },
+ "lez": {
+ "english_name": "Lezghian"
+ },
+ "tdd": {
+ "english_name": "Tai Nüa"
+ },
+ "ctt": {
+ "english_name": "Chetti, Wayanad"
+ },
+ "ctu": {
+ "english_name": "Chol"
+ },
+ "ctp": {
+ "english_name": "Chatino, Western Highland"
+ },
+ "cts": {
+ "english_name": "Bikol, Northern Catanduanes"
+ },
+ "tdy": {
+ "english_name": "Tadyawan"
+ },
+ "ctz": {
+ "english_name": "Chatino, Zacatepec"
+ },
+ "ctd": {
+ "english_name": "Chin, Tedim"
+ },
+ "cte": {
+ "english_name": "Chinantec, Tepinapa"
+ },
+ "ctg": {
+ "english_name": "Chittagonian"
+ },
+ "cta": {
+ "english_name": "Chatino, Tataltepec"
+ },
+ "ctc": {
+ "english_name": "Chetco"
+ },
+ "ctl": {
+ "english_name": "Chinantec, Tlacoatzintepec"
+ },
+ "ctm": {
+ "english_name": "Chitimacha"
+ },
+ "ctn": {
+ "english_name": "Chhintange"
+ },
+ "cto": {
+ "english_name": "Emberá-Catío"
+ },
+ "cth": {
+ "english_name": "Chin, Thaiphum"
+ },
+ "sgy": {
+ "english_name": "Sanglechi"
+ },
+ "sgx": {
+ "english_name": "Sierra Leone Sign Language"
+ },
+ "sgz": {
+ "english_name": "Sursurunga"
+ },
+ "sgp": {
+ "english_name": "Singpho"
+ },
+ "sgs": {
+ "english_name": "Samogitian"
+ },
+ "sgr": {
+ "english_name": "Sangisari"
+ },
+ "sgu": {
+ "english_name": "Salas"
+ },
+ "sgt": {
+ "english_name": "Brokpake"
+ },
+ "sgw": {
+ "english_name": "Sebat Bet Gurage"
+ },
+ "sgi": {
+ "english_name": "Suga"
+ },
+ "sgh": {
+ "english_name": "Shughni"
+ },
+ "sgk": {
+ "english_name": "Sangkong"
+ },
+ "sgj": {
+ "english_name": "Surgujia"
+ },
+ "sgm": {
+ "english_name": "Singa"
+ },
+ "tdr": {
+ "english_name": "Todrah"
+ },
+ "sga": {
+ "english_name": "Irish, Old (to 900)"
+ },
+ "sgc": {
+ "english_name": "Kipsigis"
+ },
+ "sgb": {
+ "english_name": "Ayta, Mag-antsi"
+ },
+ "sge": {
+ "english_name": "Segai"
+ },
+ "sgd": {
+ "english_name": "Surigaonon"
+ },
+ "sgg": {
+ "english_name": "Swiss-German Sign Language"
+ },
+ "ziw": {
+ "english_name": "Zigula"
+ },
+ "zir": {
+ "english_name": "Ziriya"
+ },
+ "ziz": {
+ "english_name": "Zizilivakan"
+ },
+ "tdv": {
+ "english_name": "Toro"
+ },
+ "zib": {
+ "english_name": "Zimbabwe Sign Language"
+ },
+ "tdu": {
+ "english_name": "Dusun, Tempasuk"
+ },
+ "zia": {
+ "english_name": "Zia"
+ },
+ "zin": {
+ "english_name": "Zinza"
+ },
+ "zil": {
+ "english_name": "Zialo"
+ },
+ "tdt": {
+ "english_name": "Tetun Dili"
+ },
+ "zik": {
+ "english_name": "Zimakani"
+ },
+ "pfa": {
+ "english_name": "Pááfang"
+ },
+ "srb": {
+ "english_name": "Sora"
+ },
+ "pfe": {
+ "english_name": "Peere"
+ },
+ "pfl": {
+ "english_name": "Pfaelzisch"
+ },
+ "srf": {
+ "english_name": "Nafi"
+ },
+ "xcm": {
+ "english_name": "Comecrudo"
+ },
+ "pug": {
+ "english_name": "Phuie"
+ },
+ "xcb": {
+ "english_name": "Cumbric"
+ },
+ "xcc": {
+ "english_name": "Camunic"
+ },
+ "xcg": {
+ "english_name": "Gaulish, Cisalpine"
+ },
+ "xce": {
+ "english_name": "Celtiberian"
+ },
+ "xch": {
+ "english_name": "Chemakum"
+ },
+ "xcn": {
+ "english_name": "Cotoname"
+ },
+ "xco": {
+ "english_name": "Chorasmian"
+ },
+ "xcl": {
+ "english_name": "Armenian, Classical"
+ },
+ "sro": {
+ "english_name": "Sardinian, Campidanese"
+ },
+ "xcr": {
+ "english_name": "Carian"
+ },
+ "xcv": {
+ "english_name": "Chuvantsy"
+ },
+ "xcw": {
+ "english_name": "Coahuilteco"
+ },
+ "xct": {
+ "english_name": "Tibetan, Classical"
+ },
+ "xcu": {
+ "english_name": "Curonian"
+ },
+ "srm": {
+ "english_name": "Saramaccan"
+ },
+ "xcy": {
+ "english_name": "Cayuse"
+ },
+ "npl": {
+ "english_name": "Nahuatl, Southeastern Puebla"
+ },
+ "npo": {
+ "english_name": "Naga, Pochuri"
+ },
+ "npn": {
+ "english_name": "Mondropolon"
+ },
+ "npi": {
+ "english_name": "Nepali (individual language)"
+ },
+ "nph": {
+ "english_name": "Naga, Phom"
+ },
+ "npg": {
+ "english_name": "Naga, Ponyo-Gongwang"
+ },
+ "npa": {
+ "english_name": "Nar Phu"
+ },
+ "gcc": {
+ "english_name": "Mali"
+ },
+ "npb": {
+ "english_name": "Nupbikha"
+ },
+ "npy": {
+ "english_name": "Napu"
+ },
+ "npu": {
+ "english_name": "Naga, Puimei"
+ },
+ "gce": {
+ "english_name": "Galice"
+ },
+ "nps": {
+ "english_name": "Nipsan"
+ },
+ "gcd": {
+ "english_name": "Ganggalida"
+ },
+ "mjd": {
+ "english_name": "Maidu, Northwest"
+ },
+ "mje": {
+ "english_name": "Muskum"
+ },
+ "mjg": {
+ "english_name": "Tu"
+ },
+ "mjc": {
+ "english_name": "Mixtec, San Juan Colorado"
+ },
+ "mjl": {
+ "english_name": "Mandeali"
+ },
+ "mjm": {
+ "english_name": "Medebur"
+ },
+ "mjn": {
+ "english_name": "Ma (Papua New Guinea)"
+ },
+ "gcf": {
+ "english_name": "Creole French, Guadeloupean"
+ },
+ "mjh": {
+ "english_name": "Mwera (Nyasa)"
+ },
+ "mji": {
+ "english_name": "Kim Mun"
+ },
+ "mjj": {
+ "english_name": "Mawak"
+ },
+ "mjk": {
+ "english_name": "Matukar"
+ },
+ "mjt": {
+ "english_name": "Sauria Paharia"
+ },
+ "mju": {
+ "english_name": "Manna-Dora"
+ },
+ "mjv": {
+ "english_name": "Mannan"
+ },
+ "mjw": {
+ "english_name": "Karbi"
+ },
+ "mjp": {
+ "english_name": "Malapandaram"
+ },
+ "mjq": {
+ "english_name": "Malaryan"
+ },
+ "mjr": {
+ "english_name": "Malavedan"
+ },
+ "mjs": {
+ "english_name": "Miship"
+ },
+ "mjx": {
+ "english_name": "Mahali"
+ },
+ "mjy": {
+ "english_name": "Mahican"
+ },
+ "mjz": {
+ "english_name": "Majhi"
+ },
+ "vml": {
+ "english_name": "Malgana"
+ },
+ "vmm": {
+ "english_name": "Mixtec, Mitlatongo"
+ },
+ "vmj": {
+ "english_name": "Mixtec, Ixtayutla"
+ },
+ "vmk": {
+ "english_name": "Makhuwa-Shirima"
+ },
+ "vmh": {
+ "english_name": "Maraghei"
+ },
+ "vmi": {
+ "english_name": "Miwa"
+ },
+ "vmf": {
+ "english_name": "Mainfränkisch"
+ },
+ "vmg": {
+ "english_name": "Lungalunga"
+ },
+ "vmd": {
+ "english_name": "Koraga, Mudu"
+ },
+ "vme": {
+ "english_name": "Masela, East"
+ },
+ "vmb": {
+ "english_name": "Barbaram"
+ },
+ "vmc": {
+ "english_name": "Mixtec, Juxtlahuaca"
+ },
+ "vma": {
+ "english_name": "Martuyhunira"
+ },
+ "vmz": {
+ "english_name": "Mazatec, Mazatlán"
+ },
+ "vmx": {
+ "english_name": "Mixtec, Tamazola"
+ },
+ "vmy": {
+ "english_name": "Mazatec, Ayautla"
+ },
+ "vmv": {
+ "english_name": "Maidu, Valley"
+ },
+ "vmw": {
+ "english_name": "Makhuwa"
+ },
+ "vmu": {
+ "english_name": "Muluridyi"
+ },
+ "vmr": {
+ "english_name": "Marenje"
+ },
+ "vms": {
+ "english_name": "Moksela"
+ },
+ "vmp": {
+ "english_name": "Mazatec, Soyaltepec"
+ },
+ "vmq": {
+ "english_name": "Mixtec, Soyaltepec"
+ },
+ "lzz": {
+ "english_name": "Laz"
+ },
+ "lzh": {
+ "english_name": "Chinese, Literary"
+ },
+ "lzl": {
+ "english_name": "Litzlitz"
+ },
+ "lzn": {
+ "english_name": "Naga, Leinong"
+ },
+ "kpq": {
+ "english_name": "Korupun-Sela"
+ },
+ "kpr": {
+ "english_name": "Korafe-Yegha"
+ },
+ "kps": {
+ "english_name": "Tehit"
+ },
+ "kpt": {
+ "english_name": "Karata"
+ },
+ "kpu": {
+ "english_name": "Kafoa"
+ },
+ "kpv": {
+ "english_name": "Komi-Zyrian"
+ },
+ "kpw": {
+ "english_name": "Kobon"
+ },
+ "kpx": {
+ "english_name": "Koiali, Mountain"
+ },
+ "kpy": {
+ "english_name": "Koryak"
+ },
+ "kpz": {
+ "english_name": "Kupsabiny"
+ },
+ "kpa": {
+ "english_name": "Kutto"
+ },
+ "kpb": {
+ "english_name": "Kurumba, Mullu"
+ },
+ "kpc": {
+ "english_name": "Curripaco"
+ },
+ "kpd": {
+ "english_name": "Koba"
+ },
+ "kpe": {
+ "english_name": "Kpelle"
+ },
+ "kpf": {
+ "english_name": "Komba"
+ },
+ "kpg": {
+ "english_name": "Kapingamarangi"
+ },
+ "kph": {
+ "english_name": "Kplang"
+ },
+ "kpi": {
+ "english_name": "Kofei"
+ },
+ "kpj": {
+ "english_name": "Karajá"
+ },
+ "kpk": {
+ "english_name": "Kpan"
+ },
+ "kpl": {
+ "english_name": "Kpala"
+ },
+ "kpm": {
+ "english_name": "Koho"
+ },
+ "kpn": {
+ "english_name": "Kepkiriwát"
+ },
+ "kpo": {
+ "english_name": "Ikposo"
+ },
+ "ihp": {
+ "english_name": "Iha"
+ },
+ "ihw": {
+ "english_name": "Bidhawal"
+ },
+ "ihi": {
+ "english_name": "Ihievbe"
+ },
+ "ihb": {
+ "english_name": "Iha Based Pidgin"
+ },
+ "mjo": {
+ "english_name": "Malankuravan"
+ },
+ "qwc": {
+ "english_name": "Quechua, Classical"
+ },
+ "xor": {
+ "english_name": "Korubo"
+ },
+ "ckb": {
+ "english_name": "Kurdish, Central"
+ },
+ "ckl": {
+ "english_name": "Cibak"
+ },
+ "cko": {
+ "english_name": "Anufo"
+ },
+ "ckn": {
+ "english_name": "Chin, Kaang"
+ },
+ "ckh": {
+ "english_name": "Chak"
+ },
+ "cku": {
+ "english_name": "Koasati"
+ },
+ "ckt": {
+ "english_name": "Chukot"
+ },
+ "ckv": {
+ "english_name": "Kavalan"
+ },
+ "ckq": {
+ "english_name": "Kajakse"
+ },
+ "cks": {
+ "english_name": "Tayo"
+ },
+ "ckr": {
+ "english_name": "Kairak"
+ },
+ "cky": {
+ "english_name": "Cakfem-Mushere"
+ },
+ "ckx": {
+ "english_name": "Caka"
+ },
+ "ckz": {
+ "english_name": "Cakchiquel-Quiché Mixed Language"
+ },
+ "dbi": {
+ "english_name": "Doka"
+ },
+ "dbj": {
+ "english_name": "Ida'an"
+ },
+ "dbm": {
+ "english_name": "Duguri"
+ },
+ "dbl": {
+ "english_name": "Dyirbal"
+ },
+ "dbo": {
+ "english_name": "Dulbu"
+ },
+ "dbn": {
+ "english_name": "Duriankere"
+ },
+ "dba": {
+ "english_name": "Bangime"
+ },
+ "szc": {
+ "english_name": "Semaq Beri"
+ },
+ "dbb": {
+ "english_name": "Deno"
+ },
+ "dbe": {
+ "english_name": "Dabe"
+ },
+ "dbd": {
+ "english_name": "Dadiya"
+ },
+ "dbg": {
+ "english_name": "Dogon, Dogul Dom"
+ },
+ "dbf": {
+ "english_name": "Edopi"
+ },
+ "dby": {
+ "english_name": "Dibiyaso"
+ },
+ "dbq": {
+ "english_name": "Daba"
+ },
+ "dbp": {
+ "english_name": "Duwai"
+ },
+ "szp": {
+ "english_name": "Suabo"
+ },
+ "dbr": {
+ "english_name": "Dabarre"
+ },
+ "dbu": {
+ "english_name": "Dogon, Bondum Dom"
+ },
+ "dbt": {
+ "english_name": "Dogon, Ben Tey"
+ },
+ "dbw": {
+ "english_name": "Dogon, Bankan Tey"
+ },
+ "dbv": {
+ "english_name": "Dungu"
+ },
+ "xvi": {
+ "english_name": "Kamviri"
+ },
+ "jaz": {
+ "english_name": "Jawe"
+ },
+ "jax": {
+ "english_name": "Malay, Jambi"
+ },
+ "jay": {
+ "english_name": "Yan-nhangu"
+ },
+ "jat": {
+ "english_name": "Jakati"
+ },
+ "jau": {
+ "english_name": "Yaur"
+ },
+ "jas": {
+ "english_name": "Javanese, New Caledonian"
+ },
+ "jaq": {
+ "english_name": "Yaqay"
+ },
+ "jan": {
+ "english_name": "Jandai"
+ },
+ "jao": {
+ "english_name": "Yanyuwa"
+ },
+ "jal": {
+ "english_name": "Yalahatan"
+ },
+ "jam": {
+ "english_name": "Creole English, Jamaican"
+ },
+ "jaj": {
+ "english_name": "Zazao"
+ },
+ "jak": {
+ "english_name": "Jakun"
+ },
+ "jah": {
+ "english_name": "Jah Hut"
+ },
+ "jaf": {
+ "english_name": "Jara"
+ },
+ "jad": {
+ "english_name": "Jahanka"
+ },
+ "jae": {
+ "english_name": "Yabem"
+ },
+ "jab": {
+ "english_name": "Hyam"
+ },
+ "jac": {
+ "english_name": "Popti'"
+ },
+ "jaa": {
+ "english_name": "Jamamadí"
+ },
+ "xvo": {
+ "english_name": "Volscian"
+ },
+ "gbf": {
+ "english_name": "Gaikundi"
+ },
+ "gbg": {
+ "english_name": "Gbanziri"
+ },
+ "gbd": {
+ "english_name": "Karadjeri"
+ },
+ "gbe": {
+ "english_name": "Niksek"
+ },
+ "aeu": {
+ "english_name": "Akeu"
+ },
+ "aew": {
+ "english_name": "Ambakich"
+ },
+ "gba": {
+ "english_name": "Gbaya (Central African Republic)"
+ },
+ "gbn": {
+ "english_name": "Mo'da"
+ },
+ "gbo": {
+ "english_name": "Grebo, Northern"
+ },
+ "gbl": {
+ "english_name": "Gamit"
+ },
+ "gbm": {
+ "english_name": "Garhwali"
+ },
+ "gbj": {
+ "english_name": "Gadaba, Bodo"
+ },
+ "gbk": {
+ "english_name": "Gaddi"
+ },
+ "gbh": {
+ "english_name": "Gbe, Defi"
+ },
+ "gbi": {
+ "english_name": "Galela"
+ },
+ "gbv": {
+ "english_name": "Gbanu"
+ },
+ "gbw": {
+ "english_name": "Gabi-Gabi"
+ },
+ "aec": {
+ "english_name": "Arabic, Saidi"
+ },
+ "gbu": {
+ "english_name": "Gagadu"
+ },
+ "gbr": {
+ "english_name": "Gbagyi"
+ },
+ "gbs": {
+ "english_name": "Gbe, Gbesi"
+ },
+ "gbp": {
+ "english_name": "Gbaya-Bossangoa"
+ },
+ "gbq": {
+ "english_name": "Gbaya-Bozoum"
+ },
+ "aek": {
+ "english_name": "Haeke"
+ },
+ "gbz": {
+ "english_name": "Dari, Zoroastrian"
+ },
+ "ael": {
+ "english_name": "Ambele"
+ },
+ "gbx": {
+ "english_name": "Gbe, Eastern Xwla"
+ },
+ "gby": {
+ "english_name": "Gbari"
+ },
+ "btu": {
+ "english_name": "Batu"
+ },
+ "btt": {
+ "english_name": "Bete-Bendi"
+ },
+ "btw": {
+ "english_name": "Butuanon"
+ },
+ "btv": {
+ "english_name": "Bateri"
+ },
+ "btq": {
+ "english_name": "Batek"
+ },
+ "btp": {
+ "english_name": "Budibud"
+ },
+ "bts": {
+ "english_name": "Batak Simalungun"
+ },
+ "btr": {
+ "english_name": "Baetora"
+ },
+ "bty": {
+ "english_name": "Bobot"
+ },
+ "btx": {
+ "english_name": "Batak Karo"
+ },
+ "btz": {
+ "english_name": "Batak Alas-Kluet"
+ },
+ "bte": {
+ "english_name": "Gamo-Ningi"
+ },
+ "btd": {
+ "english_name": "Batak Dairi"
+ },
+ "btg": {
+ "english_name": "Bété, Gagnoa"
+ },
+ "btf": {
+ "english_name": "Birgit"
+ },
+ "bta": {
+ "english_name": "Bata"
+ },
+ "btc": {
+ "english_name": "Bati (Cameroon)"
+ },
+ "btm": {
+ "english_name": "Batak Mandailing"
+ },
+ "btl": {
+ "english_name": "Bhatola"
+ },
+ "bto": {
+ "english_name": "Bikol, Rinconada"
+ },
+ "btn": {
+ "english_name": "Ratagnon"
+ },
+ "bti": {
+ "english_name": "Burate"
+ },
+ "bth": {
+ "english_name": "Bidayuh, Biatah"
+ },
+ "btj": {
+ "english_name": "Malay, Bacanese"
+ },
+ "tsj": {
+ "english_name": "Tshangla"
+ },
+ "etr": {
+ "english_name": "Edolo"
+ },
+ "ets": {
+ "english_name": "Yekhee"
+ },
+ "tlq": {
+ "english_name": "Tai Loi"
+ },
+ "tlp": {
+ "english_name": "Totonac, Filomena Mata-Coahuitlán"
+ },
+ "tlv": {
+ "english_name": "Taliabu"
+ },
+ "ett": {
+ "english_name": "Etruscan"
+ },
+ "etu": {
+ "english_name": "Ejagham"
+ },
+ "etz": {
+ "english_name": "Semimi"
+ },
+ "etx": {
+ "english_name": "Eten"
+ },
+ "tlx": {
+ "english_name": "Khehek"
+ },
+ "etb": {
+ "english_name": "Etebi"
+ },
+ "etc": {
+ "english_name": "Etchemin"
+ },
+ "tla": {
+ "english_name": "Tepehuan, Southwestern"
+ },
+ "tlg": {
+ "english_name": "Tofanma"
+ },
+ "tlf": {
+ "english_name": "Telefol"
+ },
+ "tld": {
+ "english_name": "Talaud"
+ },
+ "tlk": {
+ "english_name": "Taloki"
+ },
+ "tlj": {
+ "english_name": "Talinga-Bwisi"
+ },
+ "eth": {
+ "english_name": "Ethiopian Sign Language"
+ },
+ "tlh": {
+ "english_name": "Klingon"
+ },
+ "etn": {
+ "english_name": "Eton (Vanuatu)"
+ },
+ "eto": {
+ "english_name": "Eton (Cameroon)"
+ },
+ "tlm": {
+ "english_name": "Tolomako"
+ },
+ "tll": {
+ "english_name": "Tetela"
+ },
+ "ch": {
+ "english_name": "Chamorro"
+ },
+ "co": {
+ "english_name": "Corsican"
+ },
+ "ca": {
+ "name": "Català",
+ "english_name": "Catalan"
+ },
+ "ce": {
+ "english_name": "Chechen"
+ },
+ "cy": {
+ "name": "Cymraeg",
+ "english_name": "Welsh"
+ },
+ "wti": {
+ "english_name": "Berta"
+ },
+ "cs": {
+ "name": "čeština",
+ "english_name": "Czech"
+ },
+ "cr": {
+ "english_name": "Cree"
+ },
+ "tsa": {
+ "english_name": "Tsaangi"
+ },
+ "cv": {
+ "english_name": "Chuvash"
+ },
+ "cu": {
+ "english_name": "Slavic, Church"
+ },
+ "lgk": {
+ "english_name": "Lingarak"
+ },
+ "lgh": {
+ "english_name": "Laghuu"
+ },
+ "lgi": {
+ "english_name": "Lengilu"
+ },
+ "lgn": {
+ "english_name": "Opuuo"
+ },
+ "tsx": {
+ "english_name": "Mubami"
+ },
+ "lgl": {
+ "english_name": "Wala"
+ },
+ "lgm": {
+ "english_name": "Lega-Mwenga"
+ },
+ "lgb": {
+ "english_name": "Laghu"
+ },
+ "lga": {
+ "english_name": "Lungga"
+ },
+ "lgg": {
+ "english_name": "Lugbara"
+ },
+ "lgz": {
+ "english_name": "Ligenza"
+ },
+ "lgr": {
+ "english_name": "Lengo"
+ },
+ "lgq": {
+ "english_name": "Logba"
+ },
+ "lgt": {
+ "english_name": "Pahi"
+ },
+ "lgu": {
+ "english_name": "Longgu"
+ },
+ "qwt": {
+ "english_name": "Kwalhioqua-Tlatskanai"
+ },
+ "rbp": {
+ "english_name": "Barababaraba"
+ },
+ "cvn": {
+ "english_name": "Chinantec, Valle Nacional"
+ },
+ "rbl": {
+ "english_name": "Bikol, Miraya"
+ },
+ "rbk": {
+ "english_name": "Bontok, Northern"
+ },
+ "cvg": {
+ "english_name": "Chug"
+ },
+ "rbb": {
+ "english_name": "Palaung, Rumai"
+ },
+ "qws": {
+ "english_name": "Quechua, Sihuas Ancash"
+ },
+ "ve": {
+ "name": "Venda",
+ "english_name": "Venda"
+ },
+ "vi": {
+ "name": "Tiếng Việt",
+ "english_name": "Vietnamese"
+ },
+ "vo": {
+ "english_name": "Volapük"
+ },
+ "zgr": {
+ "english_name": "Magori"
+ },
+ "zgh": {
+ "english_name": "Tamazight, Standard Moroccan"
+ },
+ "zgm": {
+ "english_name": "Zhuang, Minz"
+ },
+ "zgn": {
+ "english_name": "Zhuang, Guibian"
+ },
+ "zga": {
+ "english_name": "Kinga"
+ },
+ "zgb": {
+ "english_name": "Zhuang, Guibei"
+ },
+ "phk": {
+ "english_name": "Phake"
+ },
+ "phh": {
+ "english_name": "Phukha"
+ },
+ "pho": {
+ "english_name": "Phunoi"
+ },
+ "phn": {
+ "english_name": "Phoenician"
+ },
+ "phm": {
+ "english_name": "Phimbi"
+ },
+ "phl": {
+ "english_name": "Phalura"
+ },
+ "pha": {
+ "english_name": "Pa-Hng"
+ },
+ "phg": {
+ "english_name": "Phuong"
+ },
+ "phd": {
+ "english_name": "Phudagi"
+ },
+ "phr": {
+ "english_name": "Pahari-Potwari"
+ },
+ "phq": {
+ "english_name": "Phana'"
+ },
+ "phw": {
+ "english_name": "Phangduwali"
+ },
+ "phv": {
+ "english_name": "Pahlavani"
+ },
+ "phu": {
+ "english_name": "Phuan"
+ },
+ "pht": {
+ "english_name": "Phu Thai"
+ },
+ "ofo": {
+ "english_name": "Ofo"
+ },
+ "ofs": {
+ "english_name": "Frisian, Old"
+ },
+ "unn": {
+ "english_name": "Kurnai"
+ },
+ "ofu": {
+ "english_name": "Efutop"
+ },
+ "xed": {
+ "english_name": "Hdi"
+ },
+ "xeg": {
+ "english_name": "//Xegwi"
+ },
+ "xeb": {
+ "english_name": "Eblan"
+ },
+ "xel": {
+ "english_name": "Kelo"
+ },
+ "xem": {
+ "english_name": "Kembayan"
+ },
+ "xet": {
+ "english_name": "Xetá"
+ },
+ "xeu": {
+ "english_name": "Keoru-Ahia"
+ },
+ "xep": {
+ "english_name": "Epi-Olmec"
+ },
+ "xer": {
+ "english_name": "Xerénte"
+ },
+ "xes": {
+ "english_name": "Kesawai"
+ },
+ "wec": {
+ "english_name": "Wè Western"
+ },
+ "wea": {
+ "english_name": "Wewaw"
+ },
+ "weg": {
+ "english_name": "Wergaia"
+ },
+ "wed": {
+ "english_name": "Wedau"
+ },
+ "wei": {
+ "english_name": "Kiunum"
+ },
+ "weh": {
+ "english_name": "Weh"
+ },
+ "weo": {
+ "english_name": "Wemale"
+ },
+ "wem": {
+ "english_name": "Gbe, Weme"
+ },
+ "wes": {
+ "english_name": "Pidgin, Cameroon"
+ },
+ "wer": {
+ "english_name": "Weri"
+ },
+ "wep": {
+ "english_name": "Westphalien"
+ },
+ "wew": {
+ "english_name": "Wejewa"
+ },
+ "weu": {
+ "english_name": "Chin, Rawngtu"
+ },
+ "wet": {
+ "english_name": "Perai"
+ },
+ "nvo": {
+ "english_name": "Nyokon"
+ },
+ "nvm": {
+ "english_name": "Namiae"
+ },
+ "nvh": {
+ "english_name": "Nasarian"
+ },
+ "mhn": {
+ "english_name": "Mócheno"
+ },
+ "mho": {
+ "english_name": "Mashi (Zambia)"
+ },
+ "mhl": {
+ "english_name": "Mauwake"
+ },
+ "mhm": {
+ "english_name": "Makhuwa-Moniga"
+ },
+ "mhj": {
+ "english_name": "Mogholi"
+ },
+ "mhk": {
+ "english_name": "Mungaka"
+ },
+ "mhi": {
+ "english_name": "Ma'di"
+ },
+ "mhf": {
+ "english_name": "Mamaa"
+ },
+ "mhg": {
+ "english_name": "Margu"
+ },
+ "mhd": {
+ "english_name": "Mbugu"
+ },
+ "mhe": {
+ "english_name": "Besisi"
+ },
+ "mhb": {
+ "english_name": "Mahongwe"
+ },
+ "mhc": {
+ "english_name": "Mocho"
+ },
+ "mha": {
+ "english_name": "Manda (India)"
+ },
+ "mhz": {
+ "english_name": "Mor (Mor Islands)"
+ },
+ "mhx": {
+ "english_name": "Maru"
+ },
+ "mhy": {
+ "english_name": "Ma'anyan"
+ },
+ "mhw": {
+ "english_name": "Mbukushu"
+ },
+ "mht": {
+ "english_name": "Mandahuaca"
+ },
+ "mhu": {
+ "english_name": "Digaro-Mishmi"
+ },
+ "mhr": {
+ "english_name": "Mari, Eastern"
+ },
+ "mhs": {
+ "english_name": "Buru (Indonesia)"
+ },
+ "mhp": {
+ "english_name": "Malay, Balinese"
+ },
+ "mhq": {
+ "english_name": "Mandan"
+ },
+ "vsv": {
+ "english_name": "Valencian Sign Language"
+ },
+ "vsi": {
+ "english_name": "Moldova Sign Language"
+ },
+ "vsl": {
+ "english_name": "Venezuelan Sign Language"
+ },
+ "krz": {
+ "english_name": "Kanum, Sota"
+ },
+ "krx": {
+ "english_name": "Karon"
+ },
+ "kry": {
+ "english_name": "Kryts"
+ },
+ "krr": {
+ "english_name": "Kru'ng 2"
+ },
+ "krs": {
+ "english_name": "Gbaya (Sudan)"
+ },
+ "krp": {
+ "english_name": "Korop"
+ },
+ "krv": {
+ "english_name": "Kavet"
+ },
+ "krw": {
+ "english_name": "Krahn, Western"
+ },
+ "krt": {
+ "english_name": "Kanuri, Tumari"
+ },
+ "kru": {
+ "english_name": "Kurukh"
+ },
+ "krj": {
+ "english_name": "Kinaray-A"
+ },
+ "krk": {
+ "english_name": "Kerek"
+ },
+ "krh": {
+ "english_name": "Kurama"
+ },
+ "kri": {
+ "english_name": "Krio"
+ },
+ "krn": {
+ "english_name": "Sapo"
+ },
+ "krl": {
+ "english_name": "Karelian"
+ },
+ "krm": {
+ "english_name": "Krim"
+ },
+ "krb": {
+ "english_name": "Karkin"
+ },
+ "krc": {
+ "english_name": "Karachay-Balkar"
+ },
+ "kra": {
+ "english_name": "Kumhali"
+ },
+ "krf": {
+ "english_name": "Koro (Vanuatu)"
+ },
+ "krd": {
+ "english_name": "Kairui-Midiki"
+ },
+ "kre": {
+ "english_name": "Panará"
+ },
+ "yri": {
+ "english_name": "Yarí"
+ },
+ "yrk": {
+ "english_name": "Nenets"
+ },
+ "yrl": {
+ "english_name": "Nhengatu"
+ },
+ "yrm": {
+ "english_name": "Yirrk-Mel"
+ },
+ "yrn": {
+ "english_name": "Yerong"
+ },
+ "yra": {
+ "english_name": "Yerakai"
+ },
+ "yrb": {
+ "english_name": "Yareba"
+ },
+ "yre": {
+ "english_name": "Yaouré"
+ },
+ "yry": {
+ "english_name": "Yarluyandi"
+ },
+ "yrs": {
+ "english_name": "Yarsun"
+ },
+ "yrw": {
+ "english_name": "Yarawata"
+ },
+ "inz": {
+ "english_name": "Ineseño"
+ },
+ "int": {
+ "english_name": "Intha"
+ },
+ "inp": {
+ "english_name": "Iñapari"
+ },
+ "ins": {
+ "english_name": "Indian Sign Language"
+ },
+ "inl": {
+ "english_name": "Indonesian Sign Language"
+ },
+ "inm": {
+ "english_name": "Minaean"
+ },
+ "inn": {
+ "english_name": "Isinai"
+ },
+ "ino": {
+ "english_name": "Inoke-Yate"
+ },
+ "inh": {
+ "english_name": "Ingush"
+ },
+ "inj": {
+ "english_name": "Inga, Jungle"
+ },
+ "ing": {
+ "english_name": "Degexit'an"
+ },
+ "inb": {
+ "english_name": "Inga"
+ },
+ "wxw": {
+ "english_name": "Wardandi"
+ },
+ "hps": {
+ "english_name": "Hawai'i Pidgin Sign Language"
+ },
+ "mch": {
+ "english_name": "Maquiritari"
+ },
+ "hpo": {
+ "english_name": "Hpon"
+ },
+ "wxa": {
+ "english_name": "Waxianghua"
+ },
+ "mcb": {
+ "english_name": "Machiguenga"
+ },
+ "tmb": {
+ "english_name": "Katbol"
+ },
+ "eot": {
+ "english_name": "Beti (Côte d'Ivoire)"
+ },
+ "aln": {
+ "english_name": "Albanian, Gheg"
+ },
+ "tcq": {
+ "english_name": "Kaiy"
+ },
+ "alo": {
+ "english_name": "Larike-Wakasihu"
+ },
+ "alh": {
+ "english_name": "Alawa"
+ },
+ "pth": {
+ "english_name": "Pataxó Hã-Ha-Hãe"
+ },
+ "reb": {
+ "english_name": "Rembong"
+ },
+ "cmo": {
+ "english_name": "Mnong, Central"
+ },
+ "cmn": {
+ "english_name": "Chinese, Mandarin"
+ },
+ "cmm": {
+ "english_name": "Michigamea"
+ },
+ "cml": {
+ "english_name": "Campalagian"
+ },
+ "cmi": {
+ "english_name": "Emberá-Chamí"
+ },
+ "cmg": {
+ "english_name": "Mongolian, Classical"
+ },
+ "cme": {
+ "english_name": "Cerma"
+ },
+ "cma": {
+ "english_name": "Maa"
+ },
+ "reg": {
+ "english_name": "Kara (Tanzania)"
+ },
+ "cmt": {
+ "english_name": "Camtho"
+ },
+ "cms": {
+ "english_name": "Messapic"
+ },
+ "cmr": {
+ "english_name": "Chin, Mro-Khimi"
+ },
+ "quq": {
+ "english_name": "Quinqui"
+ },
+ "alx": {
+ "english_name": "Amol"
+ },
+ "qup": {
+ "english_name": "Quechua, Southern Pastaza"
+ },
+ "tmh": {
+ "english_name": "Tamashek"
+ },
+ "qus": {
+ "english_name": "Quichua, Santiago del Estero"
+ },
+ "qur": {
+ "english_name": "Quechua, Yanahuanca Pasco"
+ },
+ "alw": {
+ "english_name": "Alaba-K’abeena"
+ },
+ "alt": {
+ "english_name": "Altai, Southern"
+ },
+ "ptt": {
+ "english_name": "Enrekang"
+ },
+ "tmi": {
+ "english_name": "Tutuba"
+ },
+ "quv": {
+ "english_name": "Sacapulteco"
+ },
+ "als": {
+ "english_name": "Albanian, Tosk"
+ },
+ "quy": {
+ "english_name": "Quechua, Ayacucho"
+ },
+ "qux": {
+ "english_name": "Quechua, Yauyos"
+ },
+ "ptp": {
+ "english_name": "Patep"
+ },
+ "tmj": {
+ "english_name": "Samarokena"
+ },
+ "glh": {
+ "english_name": "Pashayi, Northwest"
+ },
+ "akz": {
+ "english_name": "Alabama"
+ },
+ "aky": {
+ "english_name": "Aka-Kol"
+ },
+ "akx": {
+ "english_name": "Aka-Kede"
+ },
+ "gll": {
+ "english_name": "Garlali"
+ },
+ "tmk": {
+ "english_name": "Tamang, Northwestern"
+ },
+ "glo": {
+ "english_name": "Galambu"
+ },
+ "aks": {
+ "english_name": "Akaselem"
+ },
+ "akr": {
+ "english_name": "Araki"
+ },
+ "akq": {
+ "english_name": "Ak"
+ },
+ "akp": {
+ "english_name": "Siwu"
+ },
+ "akw": {
+ "english_name": "Akwa"
+ },
+ "akv": {
+ "english_name": "Akhvakh"
+ },
+ "aku": {
+ "english_name": "Akum"
+ },
+ "akt": {
+ "english_name": "Akolet"
+ },
+ "akk": {
+ "english_name": "Akkadian"
+ },
+ "akj": {
+ "english_name": "Aka-Jeru"
+ },
+ "aki": {
+ "english_name": "Aiome"
+ },
+ "akh": {
+ "english_name": "Angal Heneng"
+ },
+ "ako": {
+ "english_name": "Akurio"
+ },
+ "akm": {
+ "english_name": "Aka-Bo"
+ },
+ "akl": {
+ "english_name": "Aklanon"
+ },
+ "akc": {
+ "english_name": "Mpur"
+ },
+ "akb": {
+ "english_name": "Batak Angkola"
+ },
+ "glr": {
+ "english_name": "Glaro-Twabo"
+ },
+ "akg": {
+ "english_name": "Anakalangu"
+ },
+ "akf": {
+ "english_name": "Akpa"
+ },
+ "ake": {
+ "english_name": "Akawaio"
+ },
+ "akd": {
+ "english_name": "Ukpet-Ehom"
+ },
+ "tml": {
+ "english_name": "Citak, Tamnim"
+ },
+ "sso": {
+ "english_name": "Sissano"
+ },
+ "brz": {
+ "english_name": "Bilbil"
+ },
+ "bry": {
+ "english_name": "Burui"
+ },
+ "brx": {
+ "english_name": "Bodo (India)"
+ },
+ "brw": {
+ "english_name": "Bellari"
+ },
+ "brv": {
+ "english_name": "Bru, Western"
+ },
+ "bru": {
+ "english_name": "Bru, Eastern"
+ },
+ "brt": {
+ "english_name": "Bitare"
+ },
+ "brs": {
+ "english_name": "Baras"
+ },
+ "brr": {
+ "english_name": "Birao"
+ },
+ "brq": {
+ "english_name": "Breri"
+ },
+ "brp": {
+ "english_name": "Barapasi"
+ },
+ "bro": {
+ "english_name": "Brokkat"
+ },
+ "brn": {
+ "english_name": "Boruca"
+ },
+ "brm": {
+ "english_name": "Barambu"
+ },
+ "brl": {
+ "english_name": "Birwa"
+ },
+ "brk": {
+ "english_name": "Birked"
+ },
+ "brj": {
+ "english_name": "Bieria"
+ },
+ "bri": {
+ "english_name": "Mokpwe"
+ },
+ "brh": {
+ "english_name": "Brahui"
+ },
+ "brg": {
+ "english_name": "Baure"
+ },
+ "brf": {
+ "english_name": "Bera"
+ },
+ "brd": {
+ "english_name": "Baraamu"
+ },
+ "brc": {
+ "english_name": "Creole Dutch, Berbice"
+ },
+ "brb": {
+ "english_name": "Lave"
+ },
+ "bra": {
+ "english_name": "Braj"
+ },
+ "qum": {
+ "english_name": "Sipacapense"
+ },
+ "qul": {
+ "english_name": "Quechua, North Bolivian"
+ },
+ "qun": {
+ "english_name": "Quinault"
+ },
+ "tmn": {
+ "english_name": "Taman (Indonesia)"
+ },
+ "nka": {
+ "english_name": "Nkoya"
+ },
+ "nkb": {
+ "english_name": "Naga, Khoibu"
+ },
+ "nkc": {
+ "english_name": "Nkongho"
+ },
+ "nkd": {
+ "english_name": "Koireng"
+ },
+ "nke": {
+ "english_name": "Duke"
+ },
+ "nkf": {
+ "english_name": "Naga, Inpui"
+ },
+ "nkg": {
+ "english_name": "Nekgini"
+ },
+ "nkh": {
+ "english_name": "Naga, Khezha"
+ },
+ "nki": {
+ "english_name": "Naga, Thangal"
+ },
+ "nkj": {
+ "english_name": "Nakai"
+ },
+ "nkk": {
+ "english_name": "Nokuku"
+ },
+ "nkm": {
+ "english_name": "Namat"
+ },
+ "nkn": {
+ "english_name": "Nkangala"
+ },
+ "nko": {
+ "english_name": "Nkonya"
+ },
+ "nkp": {
+ "english_name": "Niuatoputapu"
+ },
+ "nkq": {
+ "english_name": "Nkami"
+ },
+ "nkr": {
+ "english_name": "Nukuoro"
+ },
+ "nks": {
+ "english_name": "Asmat, North"
+ },
+ "nkt": {
+ "english_name": "Nyika (Tanzania)"
+ },
+ "nku": {
+ "english_name": "Kulango, Bouna"
+ },
+ "nkv": {
+ "english_name": "Nyika (Malawi and Zambia)"
+ },
+ "nkw": {
+ "english_name": "Nkutu"
+ },
+ "nkx": {
+ "english_name": "Nkoroo"
+ },
+ "nkz": {
+ "english_name": "Nkari"
+ },
+ "tmo": {
+ "english_name": "Temoq"
+ },
+ "ssh": {
+ "english_name": "Arabic, Shihhi"
+ },
+ "ert": {
+ "english_name": "Eritai"
+ },
+ "tnt": {
+ "english_name": "Tontemboan"
+ },
+ "tnw": {
+ "english_name": "Tonsawang"
+ },
+ "erw": {
+ "english_name": "Erokwanas"
+ },
+ "tnq": {
+ "english_name": "Taino"
+ },
+ "tnp": {
+ "english_name": "Whitesands"
+ },
+ "err": {
+ "english_name": "Erre"
+ },
+ "ers": {
+ "english_name": "Ersu"
+ },
+ "tny": {
+ "english_name": "Tongwe"
+ },
+ "tnx": {
+ "english_name": "Tanema"
+ },
+ "tnz": {
+ "english_name": "Tonga (Thailand)"
+ },
+ "tne": {
+ "english_name": "Kallahan, Tinoc"
+ },
+ "tnd": {
+ "english_name": "Tunebo, Angosturas"
+ },
+ "tng": {
+ "english_name": "Tobanga"
+ },
+ "erg": {
+ "english_name": "Sie"
+ },
+ "tna": {
+ "english_name": "Tacana"
+ },
+ "era": {
+ "english_name": "Eravallan"
+ },
+ "tnc": {
+ "english_name": "Tanimuca-Retuarã"
+ },
+ "tnb": {
+ "english_name": "Tunebo, Western"
+ },
+ "tnm": {
+ "english_name": "Tabla"
+ },
+ "tnl": {
+ "english_name": "Lenakel"
+ },
+ "tno": {
+ "english_name": "Toromono"
+ },
+ "ero": {
+ "english_name": "Horpa"
+ },
+ "erh": {
+ "english_name": "Eruwa"
+ },
+ "eri": {
+ "english_name": "Ogea"
+ },
+ "tnk": {
+ "english_name": "Kwamera"
+ },
+ "erk": {
+ "english_name": "Efate, South"
+ },
+ "uar": {
+ "english_name": "Tairuma"
+ },
+ "uam": {
+ "english_name": "Uamué"
+ },
+ "uan": {
+ "english_name": "Kuan"
+ },
+ "lal": {
+ "english_name": "Lalia"
+ },
+ "lam": {
+ "english_name": "Lamba"
+ },
+ "lan": {
+ "english_name": "Laru"
+ },
+ "lah": {
+ "english_name": "Lahnda"
+ },
+ "lai": {
+ "english_name": "Lambya"
+ },
+ "laj": {
+ "english_name": "Lango (Uganda)"
+ },
+ "lak": {
+ "english_name": "Laka (Nigeria)"
+ },
+ "lad": {
+ "english_name": "Ladino"
+ },
+ "lae": {
+ "english_name": "Pattani"
+ },
+ "laf": {
+ "english_name": "Lafofa"
+ },
+ "lag": {
+ "english_name": "Langi"
+ },
+ "laa": {
+ "english_name": "Subanen, Southern"
+ },
+ "lab": {
+ "english_name": "Linear A"
+ },
+ "lac": {
+ "english_name": "Lacandon"
+ },
+ "lax": {
+ "english_name": "Tiwa"
+ },
+ "lay": {
+ "english_name": "Lama (Myanmar)"
+ },
+ "laz": {
+ "english_name": "Aribwatsa"
+ },
+ "lau": {
+ "english_name": "Laba"
+ },
+ "law": {
+ "english_name": "Lauje"
+ },
+ "lap": {
+ "english_name": "Laka (Chad)"
+ },
+ "laq": {
+ "english_name": "Qabiao"
+ },
+ "lar": {
+ "english_name": "Larteh"
+ },
+ "las": {
+ "english_name": "Lama (Togo)"
+ },
+ "zea": {
+ "english_name": "Zeeuws"
+ },
+ "zeg": {
+ "english_name": "Zenag"
+ },
+ "zeh": {
+ "english_name": "Zhuang, Eastern Hongshuihe"
+ },
+ "zen": {
+ "english_name": "Zenaga"
+ },
+ "ssf": {
+ "english_name": "Thao"
+ },
+ "pjt": {
+ "english_name": "Pitjantjatjara"
+ },
+ "ssc": {
+ "english_name": "Suba-Simbiti"
+ },
+ "xgl": {
+ "english_name": "Galindan"
+ },
+ "xgm": {
+ "english_name": "Guwinmal"
+ },
+ "xgi": {
+ "english_name": "Garingbal"
+ },
+ "xgf": {
+ "english_name": "Gabrielino-Fernandeño"
+ },
+ "xgg": {
+ "english_name": "Goreng"
+ },
+ "xgd": {
+ "english_name": "Gudang"
+ },
+ "xgb": {
+ "english_name": "Gbin"
+ },
+ "xga": {
+ "english_name": "Galatian"
+ },
+ "xgw": {
+ "english_name": "Guwa"
+ },
+ "xgu": {
+ "english_name": "Unggumi"
+ },
+ "xgr": {
+ "english_name": "Garza"
+ },
+ "wgg": {
+ "english_name": "Wangganguru"
+ },
+ "wga": {
+ "english_name": "Wagaya"
+ },
+ "wgb": {
+ "english_name": "Wagawaga"
+ },
+ "wgo": {
+ "english_name": "Waigeo"
+ },
+ "wgi": {
+ "english_name": "Wahgi"
+ },
+ "wgu": {
+ "english_name": "Wirangu"
+ },
+ "wgy": {
+ "english_name": "Warrgamay"
+ },
+ "nty": {
+ "english_name": "Mantsi"
+ },
+ "ntx": {
+ "english_name": "Naga, Tangkhul (Myanmar)"
+ },
+ "ntz": {
+ "english_name": "Natanzi"
+ },
+ "ntp": {
+ "english_name": "Tepehuan, Northern"
+ },
+ "nts": {
+ "english_name": "Natagaimas"
+ },
+ "ntr": {
+ "english_name": "Delo"
+ },
+ "ntu": {
+ "english_name": "Natügu"
+ },
+ "ntw": {
+ "english_name": "Nottoway"
+ },
+ "nti": {
+ "english_name": "Natioro"
+ },
+ "ntk": {
+ "english_name": "Ikoma-Nata-Isenye"
+ },
+ "ntj": {
+ "english_name": "Ngaanyatjarra"
+ },
+ "ntm": {
+ "english_name": "Nateni"
+ },
+ "nto": {
+ "english_name": "Ntomba"
+ },
+ "nte": {
+ "english_name": "Nathembo"
+ },
+ "ntg": {
+ "english_name": "Ngantangarra"
+ },
+ "mvp": {
+ "english_name": "Duri"
+ },
+ "mvq": {
+ "english_name": "Moere"
+ },
+ "mvr": {
+ "english_name": "Marau"
+ },
+ "mvs": {
+ "english_name": "Massep"
+ },
+ "mvt": {
+ "english_name": "Mpotovoro"
+ },
+ "mvu": {
+ "english_name": "Marfa"
+ },
+ "mvv": {
+ "english_name": "Murut, Tagal"
+ },
+ "mvw": {
+ "english_name": "Machinga"
+ },
+ "mvx": {
+ "english_name": "Meoswar"
+ },
+ "mvy": {
+ "english_name": "Kohistani, Indus"
+ },
+ "mvz": {
+ "english_name": "Mesqan"
+ },
+ "mva": {
+ "english_name": "Manam"
+ },
+ "mvb": {
+ "english_name": "Mattole"
+ },
+ "mvd": {
+ "english_name": "Mamboru"
+ },
+ "mve": {
+ "english_name": "Marwari (Pakistan)"
+ },
+ "mvf": {
+ "english_name": "Mongolian, Peripheral"
+ },
+ "mvg": {
+ "english_name": "Mixtec, Yucuañe"
+ },
+ "mvh": {
+ "english_name": "Mulgi"
+ },
+ "mvi": {
+ "english_name": "Miyako"
+ },
+ "mvk": {
+ "english_name": "Mekmek"
+ },
+ "mvl": {
+ "english_name": "Mbara (Australia)"
+ },
+ "mvm": {
+ "english_name": "Muya"
+ },
+ "mvn": {
+ "english_name": "Minaveha"
+ },
+ "mvo": {
+ "english_name": "Marovo"
+ },
+ "tea": {
+ "english_name": "Temiar"
+ },
+ "teb": {
+ "english_name": "Tetete"
+ },
+ "tec": {
+ "english_name": "Terik"
+ },
+ "ted": {
+ "english_name": "Krumen, Tepo"
+ },
+ "tee": {
+ "english_name": "Tepehua, Huehuetla"
+ },
+ "tef": {
+ "english_name": "Teressa"
+ },
+ "teg": {
+ "english_name": "Teke-Tege"
+ },
+ "tex": {
+ "english_name": "Tennet"
+ },
+ "ktx": {
+ "english_name": "Kaxararí"
+ },
+ "kty": {
+ "english_name": "Kango (Bas-Uélé District)"
+ },
+ "ktz": {
+ "english_name": "Ju/'hoan"
+ },
+ "tey": {
+ "english_name": "Tulishi"
+ },
+ "ktt": {
+ "english_name": "Ketum"
+ },
+ "ktu": {
+ "english_name": "Kituba (Democratic Republic of Congo)"
+ },
+ "ktv": {
+ "english_name": "Katu, Eastern"
+ },
+ "ktw": {
+ "english_name": "Kato"
+ },
+ "ktp": {
+ "english_name": "Kaduo"
+ },
+ "ktq": {
+ "english_name": "Katabaga"
+ },
+ "ktr": {
+ "english_name": "Kota Marudu Tinagas"
+ },
+ "kts": {
+ "english_name": "Muyu, South"
+ },
+ "ktl": {
+ "english_name": "Koroshi"
+ },
+ "ktm": {
+ "english_name": "Kurti"
+ },
+ "ktn": {
+ "english_name": "Karitiâna"
+ },
+ "kto": {
+ "english_name": "Kuot"
+ },
+ "kth": {
+ "english_name": "Karanga"
+ },
+ "kti": {
+ "english_name": "Muyu, North"
+ },
+ "ktj": {
+ "english_name": "Krumen, Plapo"
+ },
+ "ktk": {
+ "english_name": "Kaniet"
+ },
+ "ktd": {
+ "english_name": "Kokata"
+ },
+ "kte": {
+ "english_name": "Nubri"
+ },
+ "ktf": {
+ "english_name": "Kwami"
+ },
+ "ktg": {
+ "english_name": "Kalkutung"
+ },
+ "kta": {
+ "english_name": "Katua"
+ },
+ "ktb": {
+ "english_name": "Kambaata"
+ },
+ "ktc": {
+ "english_name": "Kholok"
+ },
+ "tep": {
+ "english_name": "Tepecano"
+ },
+ "teq": {
+ "english_name": "Temein"
+ },
+ "ter": {
+ "english_name": "Tereno"
+ },
+ "ypp": {
+ "english_name": "Phupa"
+ },
+ "tsg": {
+ "english_name": "Tausug"
+ },
+ "ypz": {
+ "english_name": "Phuza"
+ },
+ "tet": {
+ "english_name": "Tetum"
+ },
+ "teu": {
+ "english_name": "Soo"
+ },
+ "ypb": {
+ "english_name": "Phowa, Labo"
+ },
+ "ypa": {
+ "english_name": "Phala"
+ },
+ "tev": {
+ "english_name": "Teor"
+ },
+ "yph": {
+ "english_name": "Phupha"
+ },
+ "tew": {
+ "english_name": "Tewa (USA)"
+ },
+ "ypn": {
+ "english_name": "Phowa, Ani"
+ },
+ "ypo": {
+ "english_name": "Phola, Alo"
+ },
+ "ypm": {
+ "english_name": "Phuma"
+ },
+ "udj": {
+ "english_name": "Ujir"
+ },
+ "hrx": {
+ "english_name": "Hunsrik"
+ },
+ "hrz": {
+ "english_name": "Harzani"
+ },
+ "hru": {
+ "english_name": "Hruso"
+ },
+ "hrt": {
+ "english_name": "Hértevin"
+ },
+ "hrw": {
+ "english_name": "Warwar Feni"
+ },
+ "hrp": {
+ "english_name": "Nhirrpi"
+ },
+ "hrm": {
+ "english_name": "Miao, Horned"
+ },
+ "hro": {
+ "english_name": "Haroi"
+ },
+ "udl": {
+ "english_name": "Wuzlam"
+ },
+ "hrk": {
+ "english_name": "Haruku"
+ },
+ "hre": {
+ "english_name": "Hre"
+ },
+ "udm": {
+ "english_name": "Udmurt"
+ },
+ "hra": {
+ "english_name": "Hrangkhol"
+ },
+ "hrc": {
+ "english_name": "Niwer Mil"
+ },
+ "de": {
+ "name": "Deutsch",
+ "english_name": "German"
+ },
+ "da": {
+ "name": "Dansk",
+ "english_name": "Danish"
+ },
+ "dz": {
+ "english_name": "Dzongkha"
+ },
+ "dv": {
+ "english_name": "Dhivehi"
+ },
+ "eme": {
+ "english_name": "Emerillon"
+ },
+ "emg": {
+ "english_name": "Meohang, Eastern"
+ },
+ "ema": {
+ "english_name": "Emai-Iuleha-Ora"
+ },
+ "emb": {
+ "english_name": "Embaloh"
+ },
+ "emm": {
+ "english_name": "Mamulique"
+ },
+ "emn": {
+ "english_name": "Eman"
+ },
+ "emi": {
+ "english_name": "Mussau-Emira"
+ },
+ "emk": {
+ "english_name": "Maninkakan, Eastern"
+ },
+ "suz": {
+ "english_name": "Sunwar"
+ },
+ "emu": {
+ "english_name": "Muria, Eastern"
+ },
+ "emw": {
+ "english_name": "Emplawas"
+ },
+ "emp": {
+ "english_name": "Emberá, Northern"
+ },
+ "ems": {
+ "english_name": "Yupik, Pacific Gulf"
+ },
+ "emy": {
+ "english_name": "Mayan, Epigraphic"
+ },
+ "emx": {
+ "english_name": "Erromintxela"
+ },
+ "wa": {
+ "name": "Walon",
+ "english_name": "Walloon"
+ },
+ "hai": {
+ "english_name": "Haida"
+ },
+ "wo": {
+ "english_name": "Wolof"
+ },
+ "haj": {
+ "english_name": "Hajong"
+ },
+ "hak": {
+ "english_name": "Chinese, Hakka"
+ },
+ "coq": {
+ "english_name": "Coquille"
+ },
+ "cop": {
+ "english_name": "Coptic"
+ },
+ "cou": {
+ "english_name": "Wamey"
+ },
+ "cot": {
+ "english_name": "Caquinte"
+ },
+ "cow": {
+ "english_name": "Cowlitz"
+ },
+ "cov": {
+ "english_name": "Cao Miao"
+ },
+ "coy": {
+ "english_name": "Coyaima"
+ },
+ "cox": {
+ "english_name": "Nanti"
+ },
+ "ill": {
+ "english_name": "Iranun"
+ },
+ "coz": {
+ "english_name": "Chochotec"
+ },
+ "ilk": {
+ "english_name": "Ilongot"
+ },
+ "ili": {
+ "english_name": "Ili Turki"
+ },
+ "ilv": {
+ "english_name": "Ilue"
+ },
+ "coc": {
+ "english_name": "Cocopa"
+ },
+ "cob": {
+ "english_name": "Chicomuceltec"
+ },
+ "coe": {
+ "english_name": "Koreguaje"
+ },
+ "cod": {
+ "english_name": "Cocama-Cocamilla"
+ },
+ "cog": {
+ "english_name": "Chong"
+ },
+ "cof": {
+ "english_name": "Colorado"
+ },
+ "coh": {
+ "english_name": "Chonyi-Dzihana-Kauma"
+ },
+ "cok": {
+ "english_name": "Cora, Santa Teresa"
+ },
+ "coj": {
+ "english_name": "Cochimi"
+ },
+ "com": {
+ "english_name": "Comanche"
+ },
+ "col": {
+ "english_name": "Columbia-Wenatchi"
+ },
+ "coo": {
+ "english_name": "Comox"
+ },
+ "con": {
+ "english_name": "Cofán"
+ },
+ "bnp": {
+ "english_name": "Bola"
+ },
+ "bnw": {
+ "english_name": "Bisis"
+ },
+ "bnv": {
+ "english_name": "Bonerif"
+ },
+ "bnu": {
+ "english_name": "Bentong"
+ },
+ "bnk": {
+ "english_name": "Bierebo"
+ },
+ "hay": {
+ "english_name": "Haya"
+ },
+ "haz": {
+ "english_name": "Hazaragi"
+ },
+ "bnc": {
+ "english_name": "Bontok"
+ },
+ "bnb": {
+ "english_name": "Bookan"
+ },
+ "bna": {
+ "english_name": "Bonerate"
+ },
+ "gnr": {
+ "english_name": "Gureng Gureng"
+ },
+ "gnq": {
+ "english_name": "Gana"
+ },
+ "aiy": {
+ "english_name": "Ali"
+ },
+ "gnw": {
+ "english_name": "Guaraní, Western Bolivian"
+ },
+ "gnt": {
+ "english_name": "Guntai"
+ },
+ "gnu": {
+ "english_name": "Gnau"
+ },
+ "gnz": {
+ "english_name": "Ganzi"
+ },
+ "ait": {
+ "english_name": "Arikem"
+ },
+ "aiw": {
+ "english_name": "Aari"
+ },
+ "aiq": {
+ "english_name": "Aimaq"
+ },
+ "aip": {
+ "english_name": "Burumakok"
+ },
+ "ais": {
+ "english_name": "Amis, Nataoran"
+ },
+ "air": {
+ "english_name": "Airoran"
+ },
+ "gnb": {
+ "english_name": "Gangte"
+ },
+ "gnc": {
+ "english_name": "Guanche"
+ },
+ "aio": {
+ "english_name": "Aiton"
+ },
+ "gna": {
+ "english_name": "Kaansa"
+ },
+ "aii": {
+ "english_name": "Neo-Aramaic, Assyrian"
+ },
+ "gng": {
+ "english_name": "Ngangam"
+ },
+ "gnd": {
+ "english_name": "Zulgo-Gemzek"
+ },
+ "gne": {
+ "english_name": "Ganang"
+ },
+ "aie": {
+ "english_name": "Amara"
+ },
+ "gnk": {
+ "english_name": "//Gana"
+ },
+ "aig": {
+ "english_name": "Creole English, Antigua and Barbuda"
+ },
+ "aif": {
+ "english_name": "Agi"
+ },
+ "gnn": {
+ "english_name": "Gumatj"
+ },
+ "gno": {
+ "english_name": "Gondi, Northern"
+ },
+ "aic": {
+ "english_name": "Ainbai"
+ },
+ "aib": {
+ "english_name": "Ainu (China)"
+ },
+ "nij": {
+ "english_name": "Ngaju"
+ },
+ "nik": {
+ "english_name": "Nicobarese, Southern"
+ },
+ "nih": {
+ "english_name": "Nyiha (Tanzania)"
+ },
+ "nii": {
+ "english_name": "Nii"
+ },
+ "nin": {
+ "english_name": "Ninzo"
+ },
+ "nio": {
+ "english_name": "Nganasan"
+ },
+ "nil": {
+ "english_name": "Nila"
+ },
+ "nim": {
+ "english_name": "Nilamba"
+ },
+ "nib": {
+ "english_name": "Nakame"
+ },
+ "nia": {
+ "english_name": "Nias"
+ },
+ "nif": {
+ "english_name": "Nek"
+ },
+ "nig": {
+ "english_name": "Ngalakan"
+ },
+ "nid": {
+ "english_name": "Ngandi"
+ },
+ "nie": {
+ "english_name": "Niellim"
+ },
+ "niz": {
+ "english_name": "Ningil"
+ },
+ "nix": {
+ "english_name": "Hema"
+ },
+ "niy": {
+ "english_name": "Ngiti"
+ },
+ "nir": {
+ "english_name": "Nimboran"
+ },
+ "nis": {
+ "english_name": "Nimi"
+ },
+ "niq": {
+ "english_name": "Nandi"
+ },
+ "niv": {
+ "english_name": "Gilyak"
+ },
+ "niw": {
+ "english_name": "Nimo"
+ },
+ "nit": {
+ "english_name": "Kolami, Southeastern"
+ },
+ "niu": {
+ "english_name": "Niuean"
+ },
+ "thz": {
+ "english_name": "Tamajeq, Tayart"
+ },
+ "thy": {
+ "english_name": "Tha"
+ },
+ "thw": {
+ "english_name": "Thudam"
+ },
+ "thv": {
+ "english_name": "Tamahaq, Tahaggart"
+ },
+ "thu": {
+ "english_name": "Thuri"
+ },
+ "tht": {
+ "english_name": "Tahltan"
+ },
+ "ths": {
+ "english_name": "Thakali"
+ },
+ "thr": {
+ "english_name": "Tharu, Rana"
+ },
+ "thq": {
+ "english_name": "Tharu, Kochila"
+ },
+ "thp": {
+ "english_name": "Thompson"
+ },
+ "thn": {
+ "english_name": "Thachanadan"
+ },
+ "thm": {
+ "english_name": "Aheu"
+ },
+ "thl": {
+ "english_name": "Tharu, Dangaura"
+ },
+ "thk": {
+ "english_name": "Tharaka"
+ },
+ "thi": {
+ "english_name": "Tai Long"
+ },
+ "epi": {
+ "english_name": "Epie"
+ },
+ "thf": {
+ "english_name": "Thangmi"
+ },
+ "the": {
+ "english_name": "Tharu, Chitwania"
+ },
+ "thd": {
+ "english_name": "Thayore"
+ },
+ "thc": {
+ "english_name": "Tai Hang Tong"
+ },
+ "dse": {
+ "english_name": "Dutch Sign Language"
+ },
+ "lcs": {
+ "english_name": "Lisabata-Nuniali"
+ },
+ "lcp": {
+ "english_name": "Lawa, Western"
+ },
+ "lcq": {
+ "english_name": "Luhu"
+ },
+ "rna": {
+ "english_name": "Runa"
+ },
+ "rng": {
+ "english_name": "Ronga"
+ },
+ "rnd": {
+ "english_name": "Ruund"
+ },
+ "lcf": {
+ "english_name": "Lubu"
+ },
+ "lcd": {
+ "english_name": "Lola"
+ },
+ "lce": {
+ "english_name": "Loncong"
+ },
+ "lcc": {
+ "english_name": "Legenyem"
+ },
+ "rnr": {
+ "english_name": "Nari Nari"
+ },
+ "lcl": {
+ "english_name": "Lisela"
+ },
+ "lcm": {
+ "english_name": "Tungag"
+ },
+ "rnw": {
+ "english_name": "Rungwa"
+ },
+ "lch": {
+ "english_name": "Luchazi"
+ },
+ "bpa": {
+ "english_name": "Daakaka"
+ },
+ "qxc": {
+ "english_name": "Quechua, Chincha"
+ },
+ "bpb": {
+ "english_name": "Barbacoas"
+ },
+ "bpd": {
+ "english_name": "Banda-Banda"
+ },
+ "bpg": {
+ "english_name": "Bonggo"
+ },
+ "bpi": {
+ "english_name": "Bagupi"
+ },
+ "bph": {
+ "english_name": "Botlikh"
+ },
+ "bpk": {
+ "english_name": "Orowe"
+ },
+ "bpj": {
+ "english_name": "Binji"
+ },
+ "bpm": {
+ "english_name": "Biyom"
+ },
+ "bpl": {
+ "english_name": "Broome Pearling Lugger Pidgin"
+ },
+ "bpo": {
+ "english_name": "Anasi"
+ },
+ "bpn": {
+ "english_name": "Dzao Min"
+ },
+ "bpq": {
+ "english_name": "Malay, Banda"
+ },
+ "bpp": {
+ "english_name": "Kaure"
+ },
+ "bps": {
+ "english_name": "Blaan, Sarangani"
+ },
+ "bpr": {
+ "english_name": "Blaan, Koronadal"
+ },
+ "bpu": {
+ "english_name": "Bongu"
+ },
+ "bpt": {
+ "english_name": "Barrow Point"
+ },
+ "bpw": {
+ "english_name": "Bo (Papua New Guinea)"
+ },
+ "bpv": {
+ "english_name": "Marind, Bian"
+ },
+ "bpy": {
+ "english_name": "Bishnupriya"
+ },
+ "bpx": {
+ "english_name": "Bareli, Palya"
+ },
+ "bpz": {
+ "english_name": "Bilba"
+ },
+ "zca": {
+ "english_name": "Zapotec, Coatecas Altas"
+ },
+ "zch": {
+ "english_name": "Zhuang, Central Hongshuihe"
+ },
+ "yka": {
+ "english_name": "Yakan"
+ },
+ "ykg": {
+ "english_name": "Yukaghir, Northern"
+ },
+ "ykk": {
+ "english_name": "Yakaikeke"
+ },
+ "yki": {
+ "english_name": "Yoke"
+ },
+ "yko": {
+ "english_name": "Yasa"
+ },
+ "ykn": {
+ "english_name": "Kua-nsi"
+ },
+ "ykm": {
+ "english_name": "Kap"
+ },
+ "ykl": {
+ "english_name": "Khlula"
+ },
+ "ykr": {
+ "english_name": "Yekora"
+ },
+ "yku": {
+ "english_name": "Kuamasi"
+ },
+ "ykt": {
+ "english_name": "Kathu"
+ },
+ "yky": {
+ "english_name": "Yakoma"
+ },
+ "plw": {
+ "english_name": "Palawano, Brooke's Point"
+ },
+ "plv": {
+ "english_name": "Palawano, Southwest"
+ },
+ "plu": {
+ "english_name": "Palikúr"
+ },
+ "plt": {
+ "english_name": "Malagasy, Plateau"
+ },
+ "pls": {
+ "english_name": "Popoloca, San Marcos Tlalcoyalco"
+ },
+ "plr": {
+ "english_name": "Senoufo, Palaka"
+ },
+ "plq": {
+ "english_name": "Palaic"
+ },
+ "plp": {
+ "english_name": "Palpa"
+ },
+ "plz": {
+ "english_name": "Paluan"
+ },
+ "ply": {
+ "english_name": "Bolyu"
+ },
+ "plg": {
+ "english_name": "Pilagá"
+ },
+ "ple": {
+ "english_name": "Palu'e"
+ },
+ "pld": {
+ "english_name": "Polari"
+ },
+ "plc": {
+ "english_name": "Palawano, Central"
+ },
+ "plb": {
+ "english_name": "Polonombauk"
+ },
+ "pla": {
+ "english_name": "Miani"
+ },
+ "plo": {
+ "english_name": "Popoluca, Oluta"
+ },
+ "pln": {
+ "english_name": "Palenquero"
+ },
+ "pll": {
+ "english_name": "Palaung, Shwe"
+ },
+ "plk": {
+ "english_name": "Shina, Kohistani"
+ },
+ "plj": {
+ "english_name": "Polci"
+ },
+ "plh": {
+ "english_name": "Paulohi"
+ },
+ "obo": {
+ "english_name": "Manobo, Obo"
+ },
+ "obl": {
+ "english_name": "Oblo"
+ },
+ "obm": {
+ "english_name": "Moabite"
+ },
+ "obk": {
+ "english_name": "Bontok, Southern"
+ },
+ "obi": {
+ "english_name": "Obispeño"
+ },
+ "obt": {
+ "english_name": "Breton, Old"
+ },
+ "obu": {
+ "english_name": "Obulom"
+ },
+ "obr": {
+ "english_name": "Burmese, Old"
+ },
+ "xyt": {
+ "english_name": "Mayi-Thakurti"
+ },
+ "xyy": {
+ "english_name": "Yorta Yorta"
+ },
+ "xya": {
+ "english_name": "Yaygir"
+ },
+ "xyb": {
+ "english_name": "Yandjibara"
+ },
+ "xyj": {
+ "english_name": "Mayi-Yapi"
+ },
+ "xyk": {
+ "english_name": "Mayi-Kulan"
+ },
+ "xyl": {
+ "english_name": "Yalakalore"
+ },
+ "wao": {
+ "english_name": "Wappo"
+ },
+ "wan": {
+ "english_name": "Wan"
+ },
+ "wam": {
+ "english_name": "Wampanoag"
+ },
+ "wal": {
+ "english_name": "Wolaytta"
+ },
+ "waj": {
+ "english_name": "Waffa"
+ },
+ "wai": {
+ "english_name": "Wares"
+ },
+ "wah": {
+ "english_name": "Watubela"
+ },
+ "wag": {
+ "english_name": "Wa'ema"
+ },
+ "waf": {
+ "english_name": "Wakoná"
+ },
+ "wae": {
+ "english_name": "Walser"
+ },
+ "wad": {
+ "english_name": "Wandamen"
+ },
+ "wac": {
+ "english_name": "Wasco-Wishram"
+ },
+ "wab": {
+ "english_name": "Wab"
+ },
+ "waa": {
+ "english_name": "Walla Walla"
+ },
+ "waz": {
+ "english_name": "Wampur"
+ },
+ "way": {
+ "english_name": "Wayana"
+ },
+ "wax": {
+ "english_name": "Watam"
+ },
+ "waw": {
+ "english_name": "Waiwai"
+ },
+ "wav": {
+ "english_name": "Waka"
+ },
+ "wau": {
+ "english_name": "Waurá"
+ },
+ "wat": {
+ "english_name": "Kaninuwa"
+ },
+ "was": {
+ "english_name": "Washo"
+ },
+ "war": {
+ "english_name": "Waray (Philippines)"
+ },
+ "waq": {
+ "english_name": "Wageman"
+ },
+ "wap": {
+ "english_name": "Wapishana"
+ },
+ "mtx": {
+ "english_name": "Mixtec, Tidaá"
+ },
+ "mty": {
+ "english_name": "Nabi"
+ },
+ "mtr": {
+ "english_name": "Mewari"
+ },
+ "mts": {
+ "english_name": "Yora"
+ },
+ "mtp": {
+ "english_name": "Wichí Lhamtés Nocten"
+ },
+ "mtq": {
+ "english_name": "Muong"
+ },
+ "mtv": {
+ "english_name": "Asaro'o"
+ },
+ "mtw": {
+ "english_name": "Binukidnon, Southern"
+ },
+ "mtt": {
+ "english_name": "Mota"
+ },
+ "mtu": {
+ "english_name": "Mixtec, Tututepec"
+ },
+ "mtj": {
+ "english_name": "Moskona"
+ },
+ "mtk": {
+ "english_name": "Mbe'"
+ },
+ "mth": {
+ "english_name": "Munggui"
+ },
+ "mti": {
+ "english_name": "Maiwa (Papua New Guinea)"
+ },
+ "mtn": {
+ "english_name": "Matagalpa"
+ },
+ "mto": {
+ "english_name": "Mixe, Totontepec"
+ },
+ "mtl": {
+ "english_name": "Montol"
+ },
+ "mtm": {
+ "english_name": "Mator"
+ },
+ "mtb": {
+ "english_name": "Anyin Morofo"
+ },
+ "mtc": {
+ "english_name": "Munit"
+ },
+ "mta": {
+ "english_name": "Manobo, Cotabato"
+ },
+ "mtf": {
+ "english_name": "Murik (Papua New Guinea)"
+ },
+ "mtg": {
+ "english_name": "Una"
+ },
+ "mtd": {
+ "english_name": "Mualang"
+ },
+ "mte": {
+ "english_name": "Mono (Solomon Islands)"
+ },
+ "vwa": {
+ "english_name": "Awa (China)"
+ },
+ "kvf": {
+ "english_name": "Kabalai"
+ },
+ "kvg": {
+ "english_name": "Kuni-Boazi"
+ },
+ "kvd": {
+ "english_name": "Kui (Indonesia)"
+ },
+ "kve": {
+ "english_name": "Kalabakan"
+ },
+ "kvb": {
+ "english_name": "Kubu"
+ },
+ "kvc": {
+ "english_name": "Kove"
+ },
+ "kva": {
+ "english_name": "Bagvalal"
+ },
+ "kvn": {
+ "english_name": "Kuna, Border"
+ },
+ "kvo": {
+ "english_name": "Dobel"
+ },
+ "kvl": {
+ "english_name": "Kayaw"
+ },
+ "kvm": {
+ "english_name": "Kendem"
+ },
+ "kvj": {
+ "english_name": "Psikye"
+ },
+ "kvk": {
+ "english_name": "Korean Sign Language"
+ },
+ "kvh": {
+ "english_name": "Komodo"
+ },
+ "kvi": {
+ "english_name": "Kwang"
+ },
+ "kvv": {
+ "english_name": "Kola"
+ },
+ "kvw": {
+ "english_name": "Wersing"
+ },
+ "kvt": {
+ "english_name": "Karen, Lahta"
+ },
+ "kvu": {
+ "english_name": "Karen, Yinbaw"
+ },
+ "kvr": {
+ "english_name": "Kerinci"
+ },
+ "kvs": {
+ "english_name": "Kunggara"
+ },
+ "kvp": {
+ "english_name": "Kompane"
+ },
+ "kvq": {
+ "english_name": "Karen, Geba"
+ },
+ "kvz": {
+ "english_name": "Tsakwambo"
+ },
+ "kvx": {
+ "english_name": "Koli, Parkari"
+ },
+ "kvy": {
+ "english_name": "Karen, Yintale"
+ },
+ "ums": {
+ "english_name": "Pendau"
+ },
+ "umr": {
+ "english_name": "Umbugarla"
+ },
+ "szn": {
+ "english_name": "Sula"
+ },
+ "yvt": {
+ "english_name": "Yavitero"
+ },
+ "szl": {
+ "english_name": "Silesian"
+ },
+ "szb": {
+ "english_name": "Ngalum"
+ },
+ "jvn": {
+ "english_name": "Javanese, Caribbean"
+ },
+ "jvd": {
+ "english_name": "Javindo"
+ },
+ "sza": {
+ "english_name": "Semelai"
+ },
+ "szg": {
+ "english_name": "Sengele"
+ },
+ "szd": {
+ "english_name": "Seru"
+ },
+ "sze": {
+ "english_name": "Seze"
+ },
+ "umo": {
+ "english_name": "Umotína"
+ },
+ "guc": {
+ "english_name": "Wayuu"
+ },
+ "gub": {
+ "english_name": "Guajajára"
+ },
+ "gua": {
+ "english_name": "Shiki"
+ },
+ "gug": {
+ "english_name": "Guaraní, Paraguayan"
+ },
+ "guf": {
+ "english_name": "Gupapuyngu"
+ },
+ "gue": {
+ "english_name": "Gurinji"
+ },
+ "gud": {
+ "english_name": "Dida, Yocoboué"
+ },
+ "guk": {
+ "english_name": "Gumuz"
+ },
+ "gui": {
+ "english_name": "Guaraní, Eastern Bolivian"
+ },
+ "guh": {
+ "english_name": "Guahibo"
+ },
+ "guo": {
+ "english_name": "Guayabero"
+ },
+ "gun": {
+ "english_name": "Guaraní, Mbyá"
+ },
+ "gum": {
+ "english_name": "Guambiano"
+ },
+ "gul": {
+ "english_name": "Creole English, Sea Island"
+ },
+ "gus": {
+ "english_name": "Guinean Sign Language"
+ },
+ "gur": {
+ "english_name": "Farefare"
+ },
+ "guq": {
+ "english_name": "Aché"
+ },
+ "gup": {
+ "english_name": "Gunwinggu"
+ },
+ "guw": {
+ "english_name": "Gun"
+ },
+ "guv": {
+ "english_name": "Gey"
+ },
+ "guu": {
+ "english_name": "Yanomamö"
+ },
+ "gut": {
+ "english_name": "Maléku Jaíka"
+ },
+ "guz": {
+ "english_name": "Gusii"
+ },
+ "gux": {
+ "english_name": "Gourmanchéma"
+ },
+ "hto": {
+ "english_name": "Huitoto, Minica"
+ },
+ "hti": {
+ "english_name": "Hoti"
+ },
+ "htu": {
+ "english_name": "Hitu"
+ },
+ "hts": {
+ "english_name": "Hadza"
+ },
+ "htx": {
+ "english_name": "Hittite, Middle"
+ },
+ "szv": {
+ "english_name": "Isu (Fako Division)"
+ },
+ "szw": {
+ "english_name": "Sawai"
+ },
+ "eko": {
+ "english_name": "Koti"
+ },
+ "ekm": {
+ "english_name": "Elip"
+ },
+ "ekl": {
+ "english_name": "Kol (Bangladesh)"
+ },
+ "ekk": {
+ "english_name": "Estonian, Standard"
+ },
+ "eki": {
+ "english_name": "Eki"
+ },
+ "ekg": {
+ "english_name": "Ekari"
+ },
+ "eke": {
+ "english_name": "Ekit"
+ },
+ "ekc": {
+ "english_name": "Karnic, Eastern"
+ },
+ "eka": {
+ "english_name": "Ekajuk"
+ },
+ "eky": {
+ "english_name": "Kayah, Eastern"
+ },
+ "ekr": {
+ "english_name": "Yace"
+ },
+ "ekp": {
+ "english_name": "Ekpeye"
+ },
+ "uzn": {
+ "english_name": "Uzbek, Northern"
+ },
+ "fbl": {
+ "english_name": "Bikol, West Albay"
+ },
+ "caz": {
+ "english_name": "Canichana"
+ },
+ "cay": {
+ "english_name": "Cayuga"
+ },
+ "cax": {
+ "english_name": "Chiquitano"
+ },
+ "ibl": {
+ "english_name": "Ibaloi"
+ },
+ "ibm": {
+ "english_name": "Agoi"
+ },
+ "ibn": {
+ "english_name": "Ibino"
+ },
+ "cas": {
+ "english_name": "Tsimané"
+ },
+ "car": {
+ "english_name": "Carib, Galibi"
+ },
+ "caq": {
+ "english_name": "Nicobarese, Car"
+ },
+ "cap": {
+ "english_name": "Chipaya"
+ },
+ "caw": {
+ "english_name": "Callawalla"
+ },
+ "cav": {
+ "english_name": "Cavineña"
+ },
+ "ibg": {
+ "english_name": "Ibanag"
+ },
+ "cak": {
+ "english_name": "Kaqchikel"
+ },
+ "iby": {
+ "english_name": "Ibani"
+ },
+ "cah": {
+ "english_name": "Cahuarano"
+ },
+ "cao": {
+ "english_name": "Chácobo"
+ },
+ "can": {
+ "english_name": "Chambri"
+ },
+ "cam": {
+ "english_name": "Cemuhî"
+ },
+ "cal": {
+ "english_name": "Carolinian"
+ },
+ "cac": {
+ "english_name": "Chuj"
+ },
+ "cab": {
+ "english_name": "Garifuna"
+ },
+ "caa": {
+ "english_name": "Chortí"
+ },
+ "cag": {
+ "english_name": "Nivaclé"
+ },
+ "caf": {
+ "english_name": "Carrier, Southern"
+ },
+ "cae": {
+ "english_name": "Lehar"
+ },
+ "cad": {
+ "english_name": "Caddo"
+ },
+ "spx": {
+ "english_name": "Picene, South"
+ },
+ "spy": {
+ "english_name": "Sabaot"
+ },
+ "spp": {
+ "english_name": "Senoufo, Supyire"
+ },
+ "spq": {
+ "english_name": "Spanish, Loreto-Ucayali"
+ },
+ "spr": {
+ "english_name": "Saparua"
+ },
+ "sps": {
+ "english_name": "Saposa"
+ },
+ "spt": {
+ "english_name": "Bhoti, Spiti"
+ },
+ "spu": {
+ "english_name": "Sapuan"
+ },
+ "spv": {
+ "english_name": "Sambalpuri"
+ },
+ "spi": {
+ "english_name": "Saponi"
+ },
+ "spk": {
+ "english_name": "Sengo"
+ },
+ "spl": {
+ "english_name": "Selepet"
+ },
+ "spm": {
+ "english_name": "Akukem"
+ },
+ "spo": {
+ "english_name": "Spokane"
+ },
+ "spb": {
+ "english_name": "Sepa (Indonesia)"
+ },
+ "spc": {
+ "english_name": "Sapé"
+ },
+ "spd": {
+ "english_name": "Saep"
+ },
+ "spe": {
+ "english_name": "Sepa (Papua New Guinea)"
+ },
+ "spg": {
+ "english_name": "Sian"
+ },
+ "aog": {
+ "english_name": "Angoram"
+ },
+ "aof": {
+ "english_name": "Bragat"
+ },
+ "aoe": {
+ "english_name": "Angal Enen"
+ },
+ "aod": {
+ "english_name": "Andarum"
+ },
+ "aoc": {
+ "english_name": "Pemon"
+ },
+ "aob": {
+ "english_name": "Abom"
+ },
+ "aoa": {
+ "english_name": "Angolar"
+ },
+ "aon": {
+ "english_name": "Arapesh, Bumbita"
+ },
+ "aom": {
+ "english_name": "Ömie"
+ },
+ "aol": {
+ "english_name": "Alor"
+ },
+ "aok": {
+ "english_name": "Arhö"
+ },
+ "aoj": {
+ "english_name": "Mufian"
+ },
+ "aoi": {
+ "english_name": "Anindilyakwa"
+ },
+ "aoh": {
+ "english_name": "Arma"
+ },
+ "aou": {
+ "english_name": "A'ou"
+ },
+ "aot": {
+ "english_name": "A'tong"
+ },
+ "aos": {
+ "english_name": "Taikat"
+ },
+ "aor": {
+ "english_name": "Aore"
+ },
+ "aoz": {
+ "english_name": "Uab Meto"
+ },
+ "aox": {
+ "english_name": "Atorada"
+ },
+ "ght": {
+ "english_name": "Kuke"
+ },
+ "ghr": {
+ "english_name": "Ghera"
+ },
+ "ghs": {
+ "english_name": "Guhu-Samane"
+ },
+ "ghe": {
+ "english_name": "Ghale, Southern"
+ },
+ "gha": {
+ "english_name": "Ghadamès"
+ },
+ "ghc": {
+ "english_name": "Gaelic, Hiberno-Scottish"
+ },
+ "ghl": {
+ "english_name": "Ghulfan"
+ },
+ "ghn": {
+ "english_name": "Ghanongga"
+ },
+ "gho": {
+ "english_name": "Ghomara"
+ },
+ "ghh": {
+ "english_name": "Ghale, Northern"
+ },
+ "ghk": {
+ "english_name": "Karen, Geko"
+ },
+ "soa": {
+ "english_name": "Thai Song"
+ },
+ "soc": {
+ "english_name": "So (Democratic Republic of Congo)"
+ },
+ "sob": {
+ "english_name": "Sobei"
+ },
+ "soe": {
+ "english_name": "Songomeno"
+ },
+ "sod": {
+ "english_name": "Songoora"
+ },
+ "sog": {
+ "english_name": "Sogdian"
+ },
+ "soi": {
+ "english_name": "Sonha"
+ },
+ "soh": {
+ "english_name": "Aka"
+ },
+ "sok": {
+ "english_name": "Sokoro"
+ },
+ "nol": {
+ "english_name": "Nomlaki"
+ },
+ "aeq": {
+ "english_name": "Aer"
+ },
+ "non": {
+ "english_name": "Norse, Old"
+ },
+ "noh": {
+ "english_name": "Nomu"
+ },
+ "noi": {
+ "english_name": "Noiri"
+ },
+ "noj": {
+ "english_name": "Nonuya"
+ },
+ "nok": {
+ "english_name": "Nooksack"
+ },
+ "nod": {
+ "english_name": "Thai, Northern"
+ },
+ "noe": {
+ "english_name": "Nimadi"
+ },
+ "nof": {
+ "english_name": "Nomane"
+ },
+ "nog": {
+ "english_name": "Nogai"
+ },
+ "tjm": {
+ "english_name": "Timucua"
+ },
+ "noa": {
+ "english_name": "Woun Meu"
+ },
+ "tjo": {
+ "english_name": "Tamazight, Temacine"
+ },
+ "noc": {
+ "english_name": "Nuk"
+ },
+ "tjs": {
+ "english_name": "Tujia, Southern"
+ },
+ "aer": {
+ "english_name": "Arrernte, Eastern"
+ },
+ "tju": {
+ "english_name": "Tjurruru"
+ },
+ "noy": {
+ "english_name": "Noy"
+ },
+ "noz": {
+ "english_name": "Nayi"
+ },
+ "not": {
+ "english_name": "Nomatsiguenga"
+ },
+ "nou": {
+ "english_name": "Ewage-Notu"
+ },
+ "nov": {
+ "english_name": "Novial"
+ },
+ "now": {
+ "english_name": "Nyambo"
+ },
+ "nop": {
+ "english_name": "Numanggang"
+ },
+ "noq": {
+ "english_name": "Ngongo"
+ },
+ "nos": {
+ "english_name": "Nisu, Eastern"
+ },
+ "aey": {
+ "english_name": "Amele"
+ },
+ "sou": {
+ "english_name": "Thai, Southern"
+ },
+ "el": {
+ "name": "Ελληνικά",
+ "english_name": "Greek, Modern (1453-)"
+ },
+ "eo": {
+ "name": "Esperanto",
+ "english_name": "Esperanto"
+ },
+ "en": {
+ "english_name": "English"
+ },
+ "sow": {
+ "english_name": "Sowanda"
+ },
+ "ee": {
+ "english_name": "Ewe"
+ },
+ "soy": {
+ "english_name": "Miyobe"
+ },
+ "sox": {
+ "english_name": "Swo"
+ },
+ "eu": {
+ "name": "Euskara",
+ "english_name": "Basque"
+ },
+ "et": {
+ "name": "Eesti",
+ "english_name": "Estonian"
+ },
+ "es": {
+ "name": "Español",
+ "english_name": "Spanish"
+ },
+ "aea": {
+ "english_name": "Areba"
+ },
+ "soz": {
+ "english_name": "Temi"
+ },
+ "aeb": {
+ "english_name": "Arabic, Tunisian"
+ },
+ "aee": {
+ "english_name": "Pashayi, Northeast"
+ },
+ "aed": {
+ "english_name": "Argentine Sign Language"
+ },
+ "lmx": {
+ "english_name": "Laimbue"
+ },
+ "lmy": {
+ "english_name": "Lamboya"
+ },
+ "lmz": {
+ "english_name": "Lumbee"
+ },
+ "lmp": {
+ "english_name": "Limbum"
+ },
+ "lmq": {
+ "english_name": "Lamatuka"
+ },
+ "lmr": {
+ "english_name": "Lamalera"
+ },
+ "lmu": {
+ "english_name": "Lamenu"
+ },
+ "lmv": {
+ "english_name": "Lomaiviti"
+ },
+ "lmw": {
+ "english_name": "Miwok, Lake"
+ },
+ "lmh": {
+ "english_name": "Lambichhong"
+ },
+ "lmi": {
+ "english_name": "Lombi"
+ },
+ "lmj": {
+ "english_name": "Lembata, West"
+ },
+ "lmk": {
+ "english_name": "Lamkang"
+ },
+ "lml": {
+ "english_name": "Hano"
+ },
+ "lmn": {
+ "english_name": "Lambadi"
+ },
+ "lmo": {
+ "english_name": "Lombard"
+ },
+ "lma": {
+ "english_name": "Limba, East"
+ },
+ "lmb": {
+ "english_name": "Merei"
+ },
+ "lmc": {
+ "english_name": "Limilngan"
+ },
+ "lmd": {
+ "english_name": "Lumun"
+ },
+ "lme": {
+ "english_name": "Pévé"
+ },
+ "lmf": {
+ "english_name": "Lembata, South"
+ },
+ "lmg": {
+ "english_name": "Lamogai"
+ },
+ "aem": {
+ "english_name": "Arem"
+ },
+ "aen": {
+ "english_name": "Armenian Sign Language"
+ },
+ "zao": {
+ "english_name": "Zapotec, Ozolotepec"
+ },
+ "xh": {
+ "name": "Xhosa",
+ "english_name": "Xhosa"
+ },
+ "zam": {
+ "english_name": "Zapotec, Miahuatlán"
+ },
+ "zaj": {
+ "english_name": "Zaramo"
+ },
+ "zak": {
+ "english_name": "Zanaki"
+ },
+ "zah": {
+ "english_name": "Zangwal"
+ },
+ "zai": {
+ "english_name": "Zapotec, Isthmus"
+ },
+ "zaf": {
+ "english_name": "Zapotec, Ayoquesco"
+ },
+ "zag": {
+ "english_name": "Zaghawa"
+ },
+ "zad": {
+ "english_name": "Zapotec, Cajonos"
+ },
+ "zae": {
+ "english_name": "Zapotec, Yareni"
+ },
+ "zab": {
+ "english_name": "Zapotec, San Juan Guelavía"
+ },
+ "zac": {
+ "english_name": "Zapotec, Ocotlán"
+ },
+ "zaa": {
+ "english_name": "Zapotec, Sierra de Juárez"
+ },
+ "zaz": {
+ "english_name": "Zari"
+ },
+ "zax": {
+ "english_name": "Zapotec, Xadani"
+ },
+ "zay": {
+ "english_name": "Zayse-Zergulla"
+ },
+ "zav": {
+ "english_name": "Zapotec, Yatzachi"
+ },
+ "zaw": {
+ "english_name": "Zapotec, Mitla"
+ },
+ "zat": {
+ "english_name": "Zapotec, Tabaa"
+ },
+ "zau": {
+ "english_name": "Zangskari"
+ },
+ "zar": {
+ "english_name": "Zapotec, Rincón"
+ },
+ "zas": {
+ "english_name": "Zapotec, Santo Domingo Albarradas"
+ },
+ "zap": {
+ "english_name": "Zapotec"
+ },
+ "zaq": {
+ "english_name": "Zapotec, Aloápam"
+ },
+ "yig": {
+ "english_name": "Nasu, Wusa"
+ },
+ "yif": {
+ "english_name": "Ache"
+ },
+ "yia": {
+ "english_name": "Yinggarda"
+ },
+ "yim": {
+ "english_name": "Naga, Yimchungru"
+ },
+ "yil": {
+ "english_name": "Yindjilandji"
+ },
+ "yin": {
+ "english_name": "Yinchia"
+ },
+ "yii": {
+ "english_name": "Yidiny"
+ },
+ "yih": {
+ "english_name": "Yiddish, Western"
+ },
+ "yik": {
+ "english_name": "Lalo, Dongshanba"
+ },
+ "yij": {
+ "english_name": "Yindjibarndi"
+ },
+ "yiu": {
+ "english_name": "Awu"
+ },
+ "yit": {
+ "english_name": "Lalu, Eastern"
+ },
+ "yiv": {
+ "english_name": "Nisu, Northern"
+ },
+ "yiq": {
+ "english_name": "Miqie"
+ },
+ "yip": {
+ "english_name": "Pholo"
+ },
+ "yis": {
+ "english_name": "Yis"
+ },
+ "yir": {
+ "english_name": "Awyu, North"
+ },
+ "yix": {
+ "english_name": "Yi, Axi"
+ },
+ "yiz": {
+ "english_name": "Azhe"
+ },
+ "pny": {
+ "english_name": "Pinyin"
+ },
+ "pnx": {
+ "english_name": "Phong-Kniang"
+ },
+ "pnz": {
+ "english_name": "Pana (Central African Republic)"
+ },
+ "pnq": {
+ "english_name": "Pana (Burkina Faso)"
+ },
+ "pnp": {
+ "english_name": "Pancana"
+ },
+ "pns": {
+ "english_name": "Ponosakan"
+ },
+ "pnr": {
+ "english_name": "Panim"
+ },
+ "pnu": {
+ "english_name": "Bunu, Jiongnai"
+ },
+ "pnt": {
+ "english_name": "Pontic"
+ },
+ "pnw": {
+ "english_name": "Panytyima"
+ },
+ "pnv": {
+ "english_name": "Pinigura"
+ },
+ "pni": {
+ "english_name": "Aoheng"
+ },
+ "pnh": {
+ "english_name": "Penrhyn"
+ },
+ "pnk": {
+ "english_name": "Paunaka"
+ },
+ "pnj": {
+ "english_name": "Pinjarup"
+ },
+ "pnm": {
+ "english_name": "Punan Batu 1"
+ },
+ "pnl": {
+ "english_name": "Paleni"
+ },
+ "pno": {
+ "english_name": "Panobo"
+ },
+ "pnn": {
+ "english_name": "Pinai-Hagahai"
+ },
+ "pna": {
+ "english_name": "Punan Bah-Biau"
+ },
+ "pnc": {
+ "english_name": "Pannei"
+ },
+ "pnb": {
+ "english_name": "Panjabi, Western"
+ },
+ "pne": {
+ "english_name": "Penan, Western"
+ },
+ "png": {
+ "english_name": "Pongu"
+ },
+ "wca": {
+ "english_name": "Yanomámi"
+ },
+ "wci": {
+ "english_name": "Gbe, Waci"
+ },
+ "mrx": {
+ "english_name": "Maremgi"
+ },
+ "mry": {
+ "english_name": "Mandaya"
+ },
+ "mrz": {
+ "english_name": "Marind"
+ },
+ "mrt": {
+ "english_name": "Marghi Central"
+ },
+ "mru": {
+ "english_name": "Mono (Cameroon)"
+ },
+ "mrv": {
+ "english_name": "Mangareva"
+ },
+ "mrw": {
+ "english_name": "Maranao"
+ },
+ "mrp": {
+ "english_name": "Morouas"
+ },
+ "mrq": {
+ "english_name": "Marquesan, North"
+ },
+ "mrr": {
+ "english_name": "Maria (India)"
+ },
+ "mrs": {
+ "english_name": "Maragus"
+ },
+ "mrl": {
+ "english_name": "Mortlockese"
+ },
+ "mrm": {
+ "english_name": "Merlav"
+ },
+ "mrn": {
+ "english_name": "Cheke Holo"
+ },
+ "mro": {
+ "english_name": "Mru"
+ },
+ "mrh": {
+ "english_name": "Chin, Mara"
+ },
+ "mrj": {
+ "english_name": "Mari, Western"
+ },
+ "mrk": {
+ "english_name": "Hmwaveke"
+ },
+ "mrd": {
+ "english_name": "Magar, Western"
+ },
+ "mre": {
+ "english_name": "Martha's Vineyard Sign Language"
+ },
+ "mrf": {
+ "english_name": "Elseng"
+ },
+ "mrg": {
+ "english_name": "Mising"
+ },
+ "mra": {
+ "english_name": "Mlabri"
+ },
+ "mrb": {
+ "english_name": "Marino"
+ },
+ "mrc": {
+ "english_name": "Maricopa"
+ },
+ "xvs": {
+ "english_name": "Vestinian"
+ },
+ "kxh": {
+ "english_name": "Karo (Ethiopia)"
+ },
+ "kxi": {
+ "english_name": "Murut, Keningau"
+ },
+ "kxj": {
+ "english_name": "Kulfa"
+ },
+ "kxk": {
+ "english_name": "Karen, Zayein"
+ },
+ "kxl": {
+ "english_name": "Kurux, Nepali"
+ },
+ "kxm": {
+ "english_name": "Khmer, Northern"
+ },
+ "kxn": {
+ "english_name": "Melanau, Kanowit-Tanjong"
+ },
+ "kxo": {
+ "english_name": "Kanoé"
+ },
+ "kxa": {
+ "english_name": "Kairiru"
+ },
+ "kxb": {
+ "english_name": "Krobu"
+ },
+ "kxc": {
+ "english_name": "Konso"
+ },
+ "kxd": {
+ "english_name": "Brunei"
+ },
+ "kxf": {
+ "english_name": "Karen, Manumanaw"
+ },
+ "kxx": {
+ "english_name": "Likuba"
+ },
+ "kxy": {
+ "english_name": "Kayong"
+ },
+ "kxz": {
+ "english_name": "Kerewo"
+ },
+ "kxp": {
+ "english_name": "Koli, Wadiyara"
+ },
+ "kxq": {
+ "english_name": "Kanum, Smärky"
+ },
+ "kxr": {
+ "english_name": "Koro (Papua New Guinea)"
+ },
+ "kxs": {
+ "english_name": "Kangjia"
+ },
+ "kxt": {
+ "english_name": "Koiwat"
+ },
+ "kxu": {
+ "english_name": "Kui (India)"
+ },
+ "kxv": {
+ "english_name": "Kuvi"
+ },
+ "kxw": {
+ "english_name": "Konai"
+ },
+ "xwt": {
+ "english_name": "Wotjobaluk"
+ },
+ "gbb": {
+ "english_name": "Kaytetye"
+ },
+ "yty": {
+ "english_name": "Yatay"
+ },
+ "ytw": {
+ "english_name": "Yout Wam"
+ },
+ "ytp": {
+ "english_name": "Thopho"
+ },
+ "ytl": {
+ "english_name": "Tanglang"
+ },
+ "yta": {
+ "english_name": "Talu"
+ },
+ "jib": {
+ "english_name": "Jibu"
+ },
+ "gwe": {
+ "english_name": "Gweno"
+ },
+ "gwd": {
+ "english_name": "Gawwada"
+ },
+ "gwg": {
+ "english_name": "Moo"
+ },
+ "gwf": {
+ "english_name": "Gowro"
+ },
+ "gwa": {
+ "english_name": "Mbato"
+ },
+ "gwc": {
+ "english_name": "Kalami"
+ },
+ "gwb": {
+ "english_name": "Gwa"
+ },
+ "gwm": {
+ "english_name": "Awngthim"
+ },
+ "gwn": {
+ "english_name": "Gwandara"
+ },
+ "gwi": {
+ "english_name": "Gwichʼin"
+ },
+ "gwj": {
+ "english_name": "/Gwi"
+ },
+ "gwu": {
+ "english_name": "Guwamu"
+ },
+ "gwt": {
+ "english_name": "Gawar-Bati"
+ },
+ "gww": {
+ "english_name": "Kwini"
+ },
+ "gwr": {
+ "english_name": "Gwere"
+ },
+ "gwx": {
+ "english_name": "Gua"
+ },
+ "hvk": {
+ "english_name": "Haveke"
+ },
+ "hvn": {
+ "english_name": "Sabu"
+ },
+ "hvc": {
+ "english_name": "Haitian Vodoun Culture Language"
+ },
+ "hve": {
+ "english_name": "Huave, San Dionisio Del Mar"
+ },
+ "hvv": {
+ "english_name": "Huave, Santa María Del Mar"
+ },
+ "tls": {
+ "english_name": "Tambotalo"
+ },
+ "tlr": {
+ "english_name": "Talise"
+ },
+ "eip": {
+ "english_name": "Eipomek"
+ },
+ "eit": {
+ "english_name": "Eitiep"
+ },
+ "eiv": {
+ "english_name": "Askopan"
+ },
+ "tlt": {
+ "english_name": "Teluti"
+ },
+ "tly": {
+ "english_name": "Talysh"
+ },
+ "yi": {
+ "english_name": "Yiddish"
+ },
+ "tlc": {
+ "english_name": "Totonac, Yecuatla"
+ },
+ "yo": {
+ "english_name": "Yoruba"
+ },
+ "tlb": {
+ "english_name": "Tobelo"
+ },
+ "tli": {
+ "english_name": "Tlingit"
+ },
+ "tlo": {
+ "english_name": "Talodi"
+ },
+ "ccp": {
+ "english_name": "Chakma"
+ },
+ "ccr": {
+ "english_name": "Cacaopera"
+ },
+ "ccm": {
+ "english_name": "Creole Malay, Malaccan"
+ },
+ "ccl": {
+ "english_name": "Cutchi-Swahili"
+ },
+ "cco": {
+ "english_name": "Chinantec, Comaltepec"
+ },
+ "cch": {
+ "english_name": "Atsam"
+ },
+ "ccj": {
+ "english_name": "Kasanga"
+ },
+ "cce": {
+ "english_name": "Chopi"
+ },
+ "ccd": {
+ "english_name": "Creole, Cafundo"
+ },
+ "ccg": {
+ "english_name": "Daka, Samba"
+ },
+ "cca": {
+ "english_name": "Cauca"
+ },
+ "ccc": {
+ "english_name": "Chamicuro"
+ },
+ "ami": {
+ "english_name": "Amis"
+ },
+ "amk": {
+ "english_name": "Ambai"
+ },
+ "psi": {
+ "english_name": "Pashayi, Southeast"
+ },
+ "psn": {
+ "english_name": "Panasuan"
+ },
+ "aml": {
+ "english_name": "War-Jaintia"
+ },
+ "amo": {
+ "english_name": "Amo"
+ },
+ "amn": {
+ "english_name": "Amanab"
+ },
+ "ama": {
+ "english_name": "Amanayé"
+ },
+ "psc": {
+ "english_name": "Persian Sign Language"
+ },
+ "amc": {
+ "english_name": "Amahuaca"
+ },
+ "amb": {
+ "english_name": "Ambo"
+ },
+ "ame": {
+ "english_name": "Yanesha'"
+ },
+ "psg": {
+ "english_name": "Penang Sign Language"
+ },
+ "amg": {
+ "english_name": "Amurdak"
+ },
+ "pse": {
+ "english_name": "Malay, Central"
+ },
+ "amy": {
+ "english_name": "Ami"
+ },
+ "amx": {
+ "english_name": "Anmatyerre"
+ },
+ "amz": {
+ "english_name": "Atampaya"
+ },
+ "amq": {
+ "english_name": "Amahai"
+ },
+ "amp": {
+ "english_name": "Alamblak"
+ },
+ "psp": {
+ "english_name": "Philippine Sign Language"
+ },
+ "psq": {
+ "english_name": "Pasi"
+ },
+ "amu": {
+ "english_name": "Amuzgo, Guerrero"
+ },
+ "psw": {
+ "english_name": "Port Sandwich"
+ },
+ "amw": {
+ "english_name": "Neo-Aramaic, Western"
+ },
+ "psu": {
+ "english_name": "Prākrit, Sauraseni"
+ },
+ "gju": {
+ "english_name": "Gujari"
+ },
+ "gjn": {
+ "english_name": "Gonja"
+ },
+ "gjm": {
+ "english_name": "Gunditjmara"
+ },
+ "gjk": {
+ "english_name": "Koli, Kachi"
+ },
+ "gji": {
+ "english_name": "Geji"
+ },
+ "nmv": {
+ "english_name": "Ngamini"
+ },
+ "nmw": {
+ "english_name": "Nimoa"
+ },
+ "nmt": {
+ "english_name": "Namonuito"
+ },
+ "nmu": {
+ "english_name": "Maidu, Northeast"
+ },
+ "nmr": {
+ "english_name": "Nimbari"
+ },
+ "nms": {
+ "english_name": "Letemboi"
+ },
+ "nmp": {
+ "english_name": "Nimanbur"
+ },
+ "nmq": {
+ "english_name": "Nambya"
+ },
+ "tdc": {
+ "english_name": "Emberá-Tadó"
+ },
+ "tdb": {
+ "english_name": "Panchpargania"
+ },
+ "tda": {
+ "english_name": "Tagdal"
+ },
+ "nmz": {
+ "english_name": "Nawdm"
+ },
+ "tdf": {
+ "english_name": "Talieng"
+ },
+ "nmx": {
+ "english_name": "Nama (Papua New Guinea)"
+ },
+ "nmy": {
+ "english_name": "Namuyi"
+ },
+ "nmf": {
+ "english_name": "Naga, Tangkhul (India)"
+ },
+ "nmg": {
+ "english_name": "Kwasio"
+ },
+ "nmd": {
+ "english_name": "Ndumu"
+ },
+ "nme": {
+ "english_name": "Naga, Mzieme"
+ },
+ "nmb": {
+ "english_name": "Nambas, Big"
+ },
+ "nmc": {
+ "english_name": "Ngam"
+ },
+ "nma": {
+ "english_name": "Naga, Maram"
+ },
+ "nmn": {
+ "english_name": "!Xóõ"
+ },
+ "nmo": {
+ "english_name": "Naga, Moyon"
+ },
+ "nml": {
+ "english_name": "Ndemli"
+ },
+ "nmm": {
+ "english_name": "Manangba"
+ },
+ "nmj": {
+ "english_name": "Ngombe (Central African Republic)"
+ },
+ "nmk": {
+ "english_name": "Namakura"
+ },
+ "nmh": {
+ "english_name": "Naga, Monsang"
+ },
+ "nmi": {
+ "english_name": "Nyam"
+ },
+ "dza": {
+ "english_name": "Tunzu"
+ },
+ "src": {
+ "english_name": "Sardinian, Logudorese"
+ },
+ "sra": {
+ "english_name": "Saruga"
+ },
+ "dze": {
+ "english_name": "Djiwarli"
+ },
+ "srg": {
+ "english_name": "Sulod"
+ },
+ "dzg": {
+ "english_name": "Dazaga"
+ },
+ "sre": {
+ "english_name": "Sara"
+ },
+ "srk": {
+ "english_name": "Serudung Murut"
+ },
+ "srh": {
+ "english_name": "Sarikoli"
+ },
+ "sri": {
+ "english_name": "Siriano"
+ },
+ "srn": {
+ "english_name": "Sranan Tongo"
+ },
+ "dzl": {
+ "english_name": "Dzalakha"
+ },
+ "srl": {
+ "english_name": "Isirawa"
+ },
+ "dzn": {
+ "english_name": "Dzando"
+ },
+ "srr": {
+ "english_name": "Serer"
+ },
+ "srs": {
+ "english_name": "Sarsi"
+ },
+ "srq": {
+ "english_name": "Sirionó"
+ },
+ "srv": {
+ "english_name": "Sorsoganon, Southern"
+ },
+ "srw": {
+ "english_name": "Serua"
+ },
+ "srt": {
+ "english_name": "Sauri"
+ },
+ "sru": {
+ "english_name": "Suruí"
+ },
+ "srz": {
+ "english_name": "Shahmirzadi"
+ },
+ "srx": {
+ "english_name": "Sirmauri"
+ },
+ "sry": {
+ "english_name": "Sera"
+ },
+ "lob": {
+ "english_name": "Lobi"
+ },
+ "loc": {
+ "english_name": "Inonhan"
+ },
+ "loa": {
+ "english_name": "Loloda"
+ },
+ "lof": {
+ "english_name": "Logol"
+ },
+ "log": {
+ "english_name": "Logo"
+ },
+ "loe": {
+ "english_name": "Saluan"
+ },
+ "loj": {
+ "english_name": "Lou"
+ },
+ "lok": {
+ "english_name": "Loko"
+ },
+ "loh": {
+ "english_name": "Narim"
+ },
+ "loi": {
+ "english_name": "Loma (Côte d'Ivoire)"
+ },
+ "lon": {
+ "english_name": "Lomwe, Malawi"
+ },
+ "loo": {
+ "english_name": "Lombo"
+ },
+ "lol": {
+ "english_name": "Mongo"
+ },
+ "lom": {
+ "english_name": "Loma (Liberia)"
+ },
+ "lor": {
+ "english_name": "Téén"
+ },
+ "los": {
+ "english_name": "Loniu"
+ },
+ "lop": {
+ "english_name": "Lopa"
+ },
+ "loq": {
+ "english_name": "Lobala"
+ },
+ "lov": {
+ "english_name": "Lopi"
+ },
+ "low": {
+ "english_name": "Lobu, Tampias"
+ },
+ "lot": {
+ "english_name": "Otuho"
+ },
+ "lou": {
+ "english_name": "Creole French, Louisiana"
+ },
+ "loz": {
+ "english_name": "Lozi"
+ },
+ "lox": {
+ "english_name": "Loun"
+ },
+ "loy": {
+ "english_name": "Loke"
+ },
+ "rjs": {
+ "english_name": "Rajbanshi"
+ },
+ "rjg": {
+ "english_name": "Rajong"
+ },
+ "rji": {
+ "english_name": "Raji"
+ },
+ "yon": {
+ "english_name": "Yongkom"
+ },
+ "yom": {
+ "english_name": "Yombe"
+ },
+ "yol": {
+ "english_name": "Yola"
+ },
+ "yok": {
+ "english_name": "Yokuts"
+ },
+ "yoi": {
+ "english_name": "Yonaguni"
+ },
+ "yog": {
+ "english_name": "Yogad"
+ },
+ "yob": {
+ "english_name": "Yoba"
+ },
+ "yoy": {
+ "english_name": "Yoy"
+ },
+ "yox": {
+ "english_name": "Yoron"
+ },
+ "yot": {
+ "english_name": "Yotti"
+ },
+ "wmx": {
+ "english_name": "Womo"
+ },
+ "wms": {
+ "english_name": "Wambon"
+ },
+ "wmw": {
+ "english_name": "Mwani"
+ },
+ "wmt": {
+ "english_name": "Walmajarri"
+ },
+ "wmi": {
+ "english_name": "Wamin"
+ },
+ "wmh": {
+ "english_name": "Waima'a"
+ },
+ "wmo": {
+ "english_name": "Wom (Papua New Guinea)"
+ },
+ "wmn": {
+ "english_name": "Waamwang"
+ },
+ "wmm": {
+ "english_name": "Maiwa (Indonesia)"
+ },
+ "wmc": {
+ "english_name": "Wamas"
+ },
+ "wmb": {
+ "english_name": "Wambaya"
+ },
+ "wma": {
+ "english_name": "Mawa (Nigeria)"
+ },
+ "wme": {
+ "english_name": "Wambule"
+ },
+ "wmd": {
+ "english_name": "Mamaindé"
+ },
+ "mpg": {
+ "english_name": "Marba"
+ },
+ "mpd": {
+ "english_name": "Machinere"
+ },
+ "mpe": {
+ "english_name": "Majang"
+ },
+ "mpb": {
+ "english_name": "Mullukmulluk"
+ },
+ "mpc": {
+ "english_name": "Mangarayi"
+ },
+ "mpa": {
+ "english_name": "Mpoto"
+ },
+ "mpn": {
+ "english_name": "Mindiri"
+ },
+ "mpo": {
+ "english_name": "Miu"
+ },
+ "mpl": {
+ "english_name": "Watut, Middle"
+ },
+ "mpm": {
+ "english_name": "Mixtec, Yosondúa"
+ },
+ "mpj": {
+ "english_name": "Martu Wangka"
+ },
+ "mpk": {
+ "english_name": "Mbara (Chad)"
+ },
+ "mph": {
+ "english_name": "Maung"
+ },
+ "mpi": {
+ "english_name": "Mpade"
+ },
+ "mpv": {
+ "english_name": "Mungkip"
+ },
+ "mpw": {
+ "english_name": "Mapidian"
+ },
+ "mpt": {
+ "english_name": "Mian"
+ },
+ "mpu": {
+ "english_name": "Makuráp"
+ },
+ "mpr": {
+ "english_name": "Vangunu"
+ },
+ "mps": {
+ "english_name": "Dadibi"
+ },
+ "mpp": {
+ "english_name": "Migabac"
+ },
+ "mpq": {
+ "english_name": "Matís"
+ },
+ "mpz": {
+ "english_name": "Mpi"
+ },
+ "mpx": {
+ "english_name": "Misima-Panaeati"
+ },
+ "mpy": {
+ "english_name": "Mapia"
+ },
+ "asr": {
+ "english_name": "Asuri"
+ },
+ "puo": {
+ "english_name": "Puoc"
+ },
+ "pui": {
+ "english_name": "Puinave"
+ },
+ "asu": {
+ "english_name": "Asurini, Tocantins"
+ },
+ "puk": {
+ "english_name": "Pu Ko"
+ },
+ "pue": {
+ "english_name": "Puelche"
+ },
+ "puf": {
+ "english_name": "Punan Merah"
+ },
+ "kzr": {
+ "english_name": "Karang"
+ },
+ "kzs": {
+ "english_name": "Dusun, Sugut"
+ },
+ "kzp": {
+ "english_name": "Kaidipang"
+ },
+ "kzq": {
+ "english_name": "Kaike"
+ },
+ "kzv": {
+ "english_name": "Komyandaret"
+ },
+ "kzw": {
+ "english_name": "Karirí-Xocó"
+ },
+ "kzt": {
+ "english_name": "Dusun, Tambunan"
+ },
+ "kzu": {
+ "english_name": "Kayupulau"
+ },
+ "kzz": {
+ "english_name": "Kalabra"
+ },
+ "kzx": {
+ "english_name": "Kamarian"
+ },
+ "kzy": {
+ "english_name": "Kango (Tshopo District)"
+ },
+ "kzb": {
+ "english_name": "Kaibobo"
+ },
+ "kzc": {
+ "english_name": "Kulango, Bondoukou"
+ },
+ "kza": {
+ "english_name": "Karaboro, Western"
+ },
+ "kzf": {
+ "english_name": "Kaili, Da'a"
+ },
+ "kzg": {
+ "english_name": "Kikai"
+ },
+ "kzd": {
+ "english_name": "Kadai"
+ },
+ "kze": {
+ "english_name": "Kosena"
+ },
+ "kzj": {
+ "english_name": "Kadazan, Coastal"
+ },
+ "kzk": {
+ "english_name": "Kazukuru"
+ },
+ "kzi": {
+ "english_name": "Kelabit"
+ },
+ "kzn": {
+ "english_name": "Kokola"
+ },
+ "kzo": {
+ "english_name": "Kaningi"
+ },
+ "kzl": {
+ "english_name": "Kayeli"
+ },
+ "kzm": {
+ "english_name": "Kais"
+ },
+ "pux": {
+ "english_name": "Puare"
+ },
+ "puy": {
+ "english_name": "Purisimeño"
+ },
+ "jrb": {
+ "english_name": "Judeo-Arabic"
+ },
+ "jra": {
+ "english_name": "Jarai"
+ },
+ "put": {
+ "english_name": "Putoh"
+ },
+ "jru": {
+ "english_name": "Japrería"
+ },
+ "jrt": {
+ "english_name": "Jorto"
+ },
+ "jrr": {
+ "english_name": "Jiru"
+ },
+ "puu": {
+ "english_name": "Punu"
+ },
+ "puw": {
+ "english_name": "Puluwatese"
+ },
+ "pup": {
+ "english_name": "Pulabu"
+ },
+ "asn": {
+ "english_name": "Asuriní, Xingú"
+ },
+ "gqn": {
+ "english_name": "Guana (Brazil)"
+ },
+ "gqi": {
+ "english_name": "Guiqiong"
+ },
+ "gqa": {
+ "english_name": "Ga'anda"
+ },
+ "gqu": {
+ "english_name": "Qau"
+ },
+ "gqr": {
+ "english_name": "Gor"
+ },
+ "hhr": {
+ "english_name": "Kerak"
+ },
+ "hhy": {
+ "english_name": "Hoyahoya"
+ },
+ "hhi": {
+ "english_name": "Hoia Hoia"
+ },
+ "fr": {
+ "name": "français",
+ "english_name": "French"
+ },
+ "cjk": {
+ "english_name": "Chokwe"
+ },
+ "fy": {
+ "english_name": "Frisian, Western"
+ },
+ "fa": {
+ "name": "فارسی",
+ "english_name": "Persian"
+ },
+ "ff": {
+ "english_name": "Fulah"
+ },
+ "fi": {
+ "name": "suomi",
+ "english_name": "Finnish"
+ },
+ "fj": {
+ "english_name": "Fijian"
+ },
+ "fo": {
+ "english_name": "Faroese"
+ },
+ "egy": {
+ "english_name": "Egyptian (Ancient)"
+ },
+ "ego": {
+ "english_name": "Eggon"
+ },
+ "egl": {
+ "english_name": "Emilian"
+ },
+ "ega": {
+ "english_name": "Ega"
+ },
+ "uvh": {
+ "english_name": "Uri"
+ },
+ "ffm": {
+ "english_name": "Fulfulde, Maasina"
+ },
+ "uvl": {
+ "english_name": "Lote"
+ },
+ "ffi": {
+ "english_name": "Foia Foia"
+ },
+ "uve": {
+ "english_name": "Uvean, West"
+ },
+ "cjy": {
+ "english_name": "Chinese, Jinyu"
+ },
+ "ceg": {
+ "english_name": "Chamacoco"
+ },
+ "rwa": {
+ "english_name": "Rawo"
+ },
+ "ceb": {
+ "english_name": "Cebuano"
+ },
+ "cea": {
+ "english_name": "Chehalis, Lower"
+ },
+ "cen": {
+ "english_name": "Cen"
+ },
+ "rwk": {
+ "english_name": "Rwa"
+ },
+ "cek": {
+ "english_name": "Chin, Eastern Khumi"
+ },
+ "rwm": {
+ "english_name": "Amba (Uganda)"
+ },
+ "rwo": {
+ "english_name": "Rawa"
+ },
+ "rwr": {
+ "english_name": "Marwari (India)"
+ },
+ "cet": {
+ "english_name": "Centúúm"
+ },
+ "ifu": {
+ "english_name": "Ifugao, Mayoyao"
+ },
+ "ify": {
+ "english_name": "Kallahan, Keley-I"
+ },
+ "ife": {
+ "english_name": "Ifè"
+ },
+ "iff": {
+ "english_name": "Ifo"
+ },
+ "ifa": {
+ "english_name": "Ifugao, Amganad"
+ },
+ "ifb": {
+ "english_name": "Ifugao, Batad"
+ },
+ "ifm": {
+ "english_name": "Teke-Fuumu"
+ },
+ "ifk": {
+ "english_name": "Ifugao, Tuwali"
+ },
+ "ass": {
+ "english_name": "Ipulo"
+ },
+ "pum": {
+ "english_name": "Puma"
+ },
+ "asq": {
+ "english_name": "Austrian Sign Language"
+ },
+ "asp": {
+ "english_name": "Algerian Sign Language"
+ },
+ "asw": {
+ "english_name": "Australian Aborigines Sign Language"
+ },
+ "asv": {
+ "english_name": "Asoa"
+ },
+ "puj": {
+ "english_name": "Punan Tubu"
+ },
+ "ast": {
+ "name": "Asturianu",
+ "english_name": "Asturian"
+ },
+ "pud": {
+ "english_name": "Punan Aput"
+ },
+ "asz": {
+ "english_name": "As"
+ },
+ "asy": {
+ "english_name": "Asmat, Yaosakor"
+ },
+ "asx": {
+ "english_name": "Muratayak"
+ },
+ "pua": {
+ "english_name": "Purepecha, Western Highland"
+ },
+ "pub": {
+ "english_name": "Purum"
+ },
+ "puc": {
+ "english_name": "Punan Merap"
+ },
+ "asc": {
+ "english_name": "Asmat, Casuarina Coast"
+ },
+ "asb": {
+ "english_name": "Assiniboine"
+ },
+ "asa": {
+ "english_name": "Asu (Tanzania)"
+ },
+ "asg": {
+ "english_name": "Cishingini"
+ },
+ "asf": {
+ "english_name": "Australian Sign Language"
+ },
+ "ase": {
+ "english_name": "American Sign Language"
+ },
+ "asd": {
+ "english_name": "Asas"
+ },
+ "ask": {
+ "english_name": "Ashkun"
+ },
+ "asj": {
+ "english_name": "Sari"
+ },
+ "asi": {
+ "english_name": "Buruwai"
+ },
+ "ash": {
+ "english_name": "Abishira"
+ },
+ "aso": {
+ "english_name": "Dano"
+ },
+ "puq": {
+ "english_name": "Puquina"
+ },
+ "pur": {
+ "english_name": "Puruborá"
+ },
+ "asl": {
+ "english_name": "Asilulu"
+ },
+ "ncx": {
+ "english_name": "Nahuatl, Central Puebla"
+ },
+ "ncz": {
+ "english_name": "Natchez"
+ },
+ "tfn": {
+ "english_name": "Tanaina"
+ },
+ "tfi": {
+ "english_name": "Gbe, Tofin"
+ },
+ "ncp": {
+ "english_name": "Ndaktup"
+ },
+ "ncr": {
+ "english_name": "Ncane"
+ },
+ "ncs": {
+ "english_name": "Nicaraguan Sign Language"
+ },
+ "nct": {
+ "english_name": "Naga, Chothe"
+ },
+ "ncu": {
+ "english_name": "Chumburung"
+ },
+ "nch": {
+ "english_name": "Nahuatl, Central Huasteca"
+ },
+ "nci": {
+ "english_name": "Nahuatl, Classical"
+ },
+ "ncj": {
+ "english_name": "Nahuatl, Northern Puebla"
+ },
+ "nck": {
+ "english_name": "Nakara"
+ },
+ "ncl": {
+ "english_name": "Nahuatl, Michoacán"
+ },
+ "ncm": {
+ "english_name": "Nambo"
+ },
+ "ncn": {
+ "english_name": "Nauna"
+ },
+ "nco": {
+ "english_name": "Sibe"
+ },
+ "nca": {
+ "english_name": "Iyo"
+ },
+ "ncb": {
+ "english_name": "Nicobarese, Central"
+ },
+ "ncc": {
+ "english_name": "Ponam"
+ },
+ "ncd": {
+ "english_name": "Nachering"
+ },
+ "nce": {
+ "english_name": "Yale"
+ },
+ "ncf": {
+ "english_name": "Notsi"
+ },
+ "ncg": {
+ "english_name": "Nisga'a"
+ },
+ "dtk": {
+ "english_name": "Dogon, Tene Kan"
+ },
+ "ste": {
+ "english_name": "Liana-Seti"
+ },
+ "dti": {
+ "english_name": "Dogon, Ana Tinga"
+ },
+ "dth": {
+ "english_name": "Adithinngithigh"
+ },
+ "dto": {
+ "english_name": "Dogon, Tommo So"
+ },
+ "sta": {
+ "english_name": "Settla"
+ },
+ "dtm": {
+ "english_name": "Dogon, Tomo Kan"
+ },
+ "stl": {
+ "english_name": "Stellingwerfs"
+ },
+ "dtb": {
+ "english_name": "Kadazan, Labuk-Kinabatangan"
+ },
+ "dta": {
+ "english_name": "Daur"
+ },
+ "sto": {
+ "english_name": "Stoney"
+ },
+ "sth": {
+ "english_name": "Shelta"
+ },
+ "sti": {
+ "english_name": "Stieng, Bulo"
+ },
+ "stj": {
+ "english_name": "Samo, Matya"
+ },
+ "dtd": {
+ "english_name": "Ditidaht"
+ },
+ "stt": {
+ "english_name": "Stieng, Budeh"
+ },
+ "stu": {
+ "english_name": "Samtao"
+ },
+ "dty": {
+ "english_name": "Dotyali"
+ },
+ "stw": {
+ "english_name": "Satawalese"
+ },
+ "stp": {
+ "english_name": "Tepehuan, Southeastern"
+ },
+ "stq": {
+ "english_name": "Saterfriesisch"
+ },
+ "str": {
+ "english_name": "Salish, Straits"
+ },
+ "sts": {
+ "english_name": "Shumashti"
+ },
+ "dts": {
+ "english_name": "Dogon, Toro So"
+ },
+ "dtr": {
+ "english_name": "Lotud"
+ },
+ "dtp": {
+ "english_name": "Dusun, Central"
+ },
+ "sty": {
+ "english_name": "Tatar, Siberian"
+ },
+ "dtu": {
+ "english_name": "Dogon, Tebul Ure"
+ },
+ "dtt": {
+ "english_name": "Dogon, Toro Tegu"
+ },
+ "tfo": {
+ "english_name": "Tefaro"
+ },
+ "lid": {
+ "english_name": "Nyindrou"
+ },
+ "lie": {
+ "english_name": "Likila"
+ },
+ "lif": {
+ "english_name": "Limbu"
+ },
+ "lig": {
+ "english_name": "Ligbi"
+ },
+ "lia": {
+ "english_name": "Limba, West-Central"
+ },
+ "lib": {
+ "english_name": "Likum"
+ },
+ "lic": {
+ "english_name": "Hlai"
+ },
+ "lil": {
+ "english_name": "Lillooet"
+ },
+ "lio": {
+ "english_name": "Liki"
+ },
+ "lih": {
+ "english_name": "Lihir"
+ },
+ "lij": {
+ "english_name": "Ligurian"
+ },
+ "lik": {
+ "english_name": "Lika"
+ },
+ "liu": {
+ "english_name": "Logorik"
+ },
+ "liv": {
+ "english_name": "Liv"
+ },
+ "liw": {
+ "english_name": "Col"
+ },
+ "lip": {
+ "english_name": "Sekpele"
+ },
+ "liq": {
+ "english_name": "Libido"
+ },
+ "lir": {
+ "english_name": "English, Liberian"
+ },
+ "lis": {
+ "english_name": "Lisu"
+ },
+ "lix": {
+ "english_name": "Liabuku"
+ },
+ "liy": {
+ "english_name": "Banda-Bambari"
+ },
+ "liz": {
+ "english_name": "Libinza"
+ },
+ "kac": {
+ "english_name": "Kachin"
+ },
+ "kab": {
+ "english_name": "Kabyle"
+ },
+ "kaa": {
+ "english_name": "Kara-Kalpak"
+ },
+ "kag": {
+ "english_name": "Kajaman"
+ },
+ "kaf": {
+ "english_name": "Katso"
+ },
+ "kae": {
+ "english_name": "Ketangalan"
+ },
+ "kad": {
+ "english_name": "Adara"
+ },
+ "kak": {
+ "english_name": "Kallahan, Kayapa"
+ },
+ "kaj": {
+ "english_name": "Jju"
+ },
+ "kai": {
+ "english_name": "Karekare"
+ },
+ "kah": {
+ "english_name": "Kara (Central African Republic)"
+ },
+ "kao": {
+ "english_name": "Xaasongaxango"
+ },
+ "kam": {
+ "english_name": "Kamba (Kenya)"
+ },
+ "kaq": {
+ "english_name": "Capanahua"
+ },
+ "kap": {
+ "english_name": "Bezhta"
+ },
+ "kaw": {
+ "english_name": "Kawi"
+ },
+ "kav": {
+ "english_name": "Katukína"
+ },
+ "kay": {
+ "english_name": "Kamayurá"
+ },
+ "kax": {
+ "english_name": "Kao"
+ },
+ "rhg": {
+ "english_name": "Rohingya"
+ },
+ "bzw": {
+ "english_name": "Basa (Nigeria)"
+ },
+ "bzv": {
+ "english_name": "Naami"
+ },
+ "bzu": {
+ "english_name": "Burmeso"
+ },
+ "bzt": {
+ "english_name": "Brithenig"
+ },
+ "bzs": {
+ "english_name": "Brazilian Sign Language"
+ },
+ "bzr": {
+ "english_name": "Biri"
+ },
+ "bzq": {
+ "english_name": "Buli (Indonesia)"
+ },
+ "bzp": {
+ "english_name": "Kemberano"
+ },
+ "bzz": {
+ "english_name": "Evant"
+ },
+ "bzy": {
+ "english_name": "Obanliku"
+ },
+ "bzx": {
+ "english_name": "Bozo, Kɛlɛngaxo"
+ },
+ "bzg": {
+ "english_name": "Babuza"
+ },
+ "bzf": {
+ "english_name": "Boikin"
+ },
+ "bze": {
+ "english_name": "Bozo, Jenaama"
+ },
+ "bzd": {
+ "english_name": "Bribri"
+ },
+ "bzc": {
+ "english_name": "Malagasy, Southern Betsimisaraka"
+ },
+ "bzb": {
+ "english_name": "Andio"
+ },
+ "bza": {
+ "english_name": "Bandi"
+ },
+ "bzo": {
+ "english_name": "Bozaba"
+ },
+ "bzn": {
+ "english_name": "Boano (Maluku)"
+ },
+ "bzm": {
+ "english_name": "Bolondo"
+ },
+ "bzl": {
+ "english_name": "Boano (Sulawesi)"
+ },
+ "bzk": {
+ "english_name": "Creole English, Nicaragua"
+ },
+ "bzj": {
+ "english_name": "Kriol English, Belize"
+ },
+ "bzi": {
+ "english_name": "Bisu"
+ },
+ "bzh": {
+ "english_name": "Buang, Mapos"
+ },
+ "tft": {
+ "english_name": "Ternate"
+ },
+ "ymq": {
+ "english_name": "Muji, Qila"
+ },
+ "ymp": {
+ "english_name": "Yamap"
+ },
+ "yms": {
+ "english_name": "Mysian"
+ },
+ "ymr": {
+ "english_name": "Malasar"
+ },
+ "ymx": {
+ "english_name": "Muji, Northern"
+ },
+ "ymz": {
+ "english_name": "Muzi"
+ },
+ "ymc": {
+ "english_name": "Muji, Southern"
+ },
+ "ymb": {
+ "english_name": "Yambes"
+ },
+ "yme": {
+ "english_name": "Yameo"
+ },
+ "ymd": {
+ "english_name": "Muda"
+ },
+ "ymg": {
+ "english_name": "Yamongeri"
+ },
+ "ymi": {
+ "english_name": "Moji"
+ },
+ "ymh": {
+ "english_name": "Mili"
+ },
+ "ymk": {
+ "english_name": "Makwe"
+ },
+ "tfr": {
+ "english_name": "Teribe"
+ },
+ "ymm": {
+ "english_name": "Maay"
+ },
+ "yml": {
+ "english_name": "Iamalele"
+ },
+ "ymo": {
+ "english_name": "Yangum Mon"
+ },
+ "ymn": {
+ "english_name": "Yamna"
+ },
+ "std": {
+ "english_name": "Sentinel"
+ },
+ "stf": {
+ "english_name": "Seta"
+ },
+ "stg": {
+ "english_name": "Trieng"
+ },
+ "ypg": {
+ "english_name": "Phola"
+ },
+ "stb": {
+ "english_name": "Subanen, Northern"
+ },
+ "stm": {
+ "english_name": "Setaman"
+ },
+ "stn": {
+ "english_name": "Owa"
+ },
+ "stk": {
+ "english_name": "Arammba"
+ },
+ "ydk": {
+ "english_name": "Yoidik"
+ },
+ "woy": {
+ "english_name": "Weyto"
+ },
+ "wow": {
+ "english_name": "Wawonii"
+ },
+ "stv": {
+ "english_name": "Silt'e"
+ },
+ "wos": {
+ "english_name": "Hanga Hundi"
+ },
+ "wor": {
+ "english_name": "Woria"
+ },
+ "wom": {
+ "english_name": "Wom (Nigeria)"
+ },
+ "woo": {
+ "english_name": "Manombai"
+ },
+ "won": {
+ "english_name": "Wongo"
+ },
+ "woi": {
+ "english_name": "Kamang"
+ },
+ "wok": {
+ "english_name": "Longto"
+ },
+ "woe": {
+ "english_name": "Woleaian"
+ },
+ "wod": {
+ "english_name": "Wolani"
+ },
+ "wog": {
+ "english_name": "Wogamusin"
+ },
+ "wof": {
+ "english_name": "Wolof, Gambian"
+ },
+ "woa": {
+ "english_name": "Tyaraity"
+ },
+ "woc": {
+ "english_name": "Wogeo"
+ },
+ "wob": {
+ "english_name": "Wè Northern"
+ },
+ "adu": {
+ "english_name": "Aduge"
+ },
+ "ads": {
+ "english_name": "Adamorobe Sign Language"
+ },
+ "adq": {
+ "english_name": "Adangbe"
+ },
+ "ady": {
+ "english_name": "Adyghe"
+ },
+ "adg": {
+ "english_name": "Andegerebinha"
+ },
+ "add": {
+ "english_name": "Dzodinka"
+ },
+ "ade": {
+ "english_name": "Adele"
+ },
+ "boz": {
+ "english_name": "Bozo, Tiéyaxo"
+ },
+ "iya": {
+ "english_name": "Iyayu"
+ },
+ "iyo": {
+ "english_name": "Mesaka"
+ },
+ "adh": {
+ "english_name": "Adhola"
+ },
+ "iyx": {
+ "english_name": "Yaka (Congo)"
+ },
+ "jpa": {
+ "english_name": "Aramaic, Jewish Palestinian"
+ },
+ "hba": {
+ "english_name": "Hamba"
+ },
+ "hbb": {
+ "english_name": "Huba"
+ },
+ "tdq": {
+ "english_name": "Tita"
+ },
+ "gsp": {
+ "english_name": "Wasembo"
+ },
+ "gss": {
+ "english_name": "Greek Sign Language"
+ },
+ "gsw": {
+ "english_name": "German, Swiss"
+ },
+ "gse": {
+ "english_name": "Ghanaian Sign Language"
+ },
+ "hbs": {
+ "english_name": "Serbo-Croatian"
+ },
+ "gsg": {
+ "english_name": "German Sign Language"
+ },
+ "gsm": {
+ "english_name": "Guatemalan Sign Language"
+ },
+ "gsl": {
+ "english_name": "Gusilay"
+ },
+ "gso": {
+ "english_name": "Gbaya, Southwest"
+ },
+ "gsn": {
+ "english_name": "Gusan"
+ },
+ "hji": {
+ "english_name": "Haji"
+ },
+ "qxr": {
+ "english_name": "Quichua, Cañar Highland"
+ },
+ "eee": {
+ "english_name": "E"
+ },
+ "kux": {
+ "english_name": "Kukatja"
+ },
+ "rhp": {
+ "english_name": "Yahang"
+ },
+ "ruk": {
+ "english_name": "Che"
+ },
+ "cgk": {
+ "english_name": "Chocangacakha"
+ },
+ "rui": {
+ "english_name": "Rufiji"
+ },
+ "ruo": {
+ "english_name": "Romanian, Istro"
+ },
+ "cga": {
+ "english_name": "Changriwa"
+ },
+ "ruc": {
+ "english_name": "Ruuli"
+ },
+ "cgc": {
+ "english_name": "Kagayanen"
+ },
+ "ruf": {
+ "english_name": "Luguru"
+ },
+ "rug": {
+ "english_name": "Roviana"
+ },
+ "cgg": {
+ "english_name": "Chiga"
+ },
+ "rue": {
+ "english_name": "Rusyn"
+ },
+ "ruz": {
+ "english_name": "Ruma"
+ },
+ "ruy": {
+ "english_name": "Mala (Nigeria)"
+ },
+ "rup": {
+ "english_name": "Romanian, Macedo-"
+ },
+ "ruq": {
+ "english_name": "Romanian, Megleno"
+ },
+ "rut": {
+ "english_name": "Rutul"
+ },
+ "ruu": {
+ "english_name": "Lobu, Lanas"
+ },
+ "bga": {
+ "english_name": "Gwamhi-Wuri"
+ },
+ "bgb": {
+ "english_name": "Bobongko"
+ },
+ "bgc": {
+ "english_name": "Haryanvi"
+ },
+ "bgd": {
+ "english_name": "Bareli, Rathwi"
+ },
+ "bge": {
+ "english_name": "Bauria"
+ },
+ "bgf": {
+ "english_name": "Bangandu"
+ },
+ "bgg": {
+ "english_name": "Bugun"
+ },
+ "bgi": {
+ "english_name": "Giangan"
+ },
+ "idt": {
+ "english_name": "Idaté"
+ },
+ "idu": {
+ "english_name": "Idoma"
+ },
+ "idr": {
+ "english_name": "Indri"
+ },
+ "ids": {
+ "english_name": "Idesa"
+ },
+ "bgn": {
+ "english_name": "Balochi, Western"
+ },
+ "bgo": {
+ "english_name": "Baga Koga"
+ },
+ "bgp": {
+ "english_name": "Balochi, Eastern"
+ },
+ "bgq": {
+ "english_name": "Bagri"
+ },
+ "bgr": {
+ "english_name": "Chin, Bawm"
+ },
+ "bgs": {
+ "english_name": "Tagabawa"
+ },
+ "bgt": {
+ "english_name": "Bughotu"
+ },
+ "bgu": {
+ "english_name": "Mbongno"
+ },
+ "bgv": {
+ "english_name": "Warkay-Bipim"
+ },
+ "idi": {
+ "english_name": "Idi"
+ },
+ "bgx": {
+ "english_name": "Turkish, Balkan Gagauz"
+ },
+ "bgy": {
+ "english_name": "Benggoi"
+ },
+ "idd": {
+ "english_name": "Ede Idaca"
+ },
+ "ide": {
+ "english_name": "Idere"
+ },
+ "idb": {
+ "english_name": "Indo-Portuguese"
+ },
+ "idc": {
+ "english_name": "Idon"
+ },
+ "ida": {
+ "english_name": "Idakho-Isukha-Tiriki"
+ },
+ "syc": {
+ "english_name": "Syriac, Classical"
+ },
+ "pww": {
+ "english_name": "Karen, Pwo Northern"
+ },
+ "pwr": {
+ "english_name": "Powari"
+ },
+ "aqp": {
+ "english_name": "Atakapa"
+ },
+ "aqr": {
+ "english_name": "Arhâ"
+ },
+ "aqz": {
+ "english_name": "Akuntsu"
+ },
+ "aqd": {
+ "english_name": "Dogon, Ampari"
+ },
+ "aqg": {
+ "english_name": "Arigidi"
+ },
+ "pwb": {
+ "english_name": "Panawa"
+ },
+ "aqc": {
+ "english_name": "Archi"
+ },
+ "pwa": {
+ "english_name": "Pawaia"
+ },
+ "aqm": {
+ "english_name": "Atohwaim"
+ },
+ "pwo": {
+ "english_name": "Karen, Pwo Western"
+ },
+ "aqn": {
+ "english_name": "Alta, Northern"
+ },
+ "pwi": {
+ "english_name": "Patwin"
+ },
+ "uta": {
+ "english_name": "Otank"
+ },
+ "ute": {
+ "english_name": "Ute-Southern Paiute"
+ },
+ "utr": {
+ "english_name": "Etulo"
+ },
+ "utp": {
+ "english_name": "Amba (Solomon Islands)"
+ },
+ "utu": {
+ "english_name": "Utu"
+ },
+ "nab": {
+ "english_name": "Nambikuára, Southern"
+ },
+ "nac": {
+ "english_name": "Narak"
+ },
+ "naa": {
+ "english_name": "Namla"
+ },
+ "naf": {
+ "english_name": "Nabak"
+ },
+ "nag": {
+ "english_name": "Naga Pidgin"
+ },
+ "nad": {
+ "english_name": "Nijadali"
+ },
+ "nae": {
+ "english_name": "Naka'ela"
+ },
+ "naj": {
+ "english_name": "Nalu"
+ },
+ "nak": {
+ "english_name": "Nakanai"
+ },
+ "nan": {
+ "english_name": "Chinese, Min Nan"
+ },
+ "nao": {
+ "english_name": "Naaba"
+ },
+ "nal": {
+ "english_name": "Nalik"
+ },
+ "nam": {
+ "english_name": "Ngan'gityemerri"
+ },
+ "nar": {
+ "english_name": "Iguta"
+ },
+ "nas": {
+ "english_name": "Naasioi"
+ },
+ "nap": {
+ "english_name": "Neapolitan"
+ },
+ "naq": {
+ "english_name": "Nama (Namibia)"
+ },
+ "naw": {
+ "english_name": "Nawuri"
+ },
+ "nat": {
+ "english_name": "Hungworo"
+ },
+ "naz": {
+ "english_name": "Nahuatl, Coatepec"
+ },
+ "nax": {
+ "english_name": "Nakwi"
+ },
+ "nay": {
+ "english_name": "Narrinyeri"
+ },
+ "tmr": {
+ "english_name": "Aramaic, Jewish Babylonian (ca. 200-1200 CE)"
+ },
+ "tmt": {
+ "english_name": "Tasmate"
+ },
+ "svm": {
+ "english_name": "Slavomolisano"
+ },
+ "svk": {
+ "english_name": "Slovakian Sign Language"
+ },
+ "sve": {
+ "english_name": "Serili"
+ },
+ "dva": {
+ "english_name": "Duau"
+ },
+ "svc": {
+ "english_name": "Creole English, Vincentian"
+ },
+ "sva": {
+ "english_name": "Svan"
+ },
+ "svx": {
+ "english_name": "Skalvian"
+ },
+ "svr": {
+ "english_name": "Savara"
+ },
+ "svs": {
+ "english_name": "Savosavo"
+ },
+ "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"
+ },
+ "lkn": {
+ "english_name": "Lakon"
+ },
+ "lko": {
+ "english_name": "Khayo"
+ },
+ "lkl": {
+ "english_name": "Laeko-Libuat"
+ },
+ "lkm": {
+ "english_name": "Kalaamaya"
+ },
+ "lkj": {
+ "english_name": "Remun"
+ },
+ "lkh": {
+ "english_name": "Lakha"
+ },
+ "lki": {
+ "english_name": "Laki"
+ },
+ "lkd": {
+ "english_name": "Lakondê"
+ },
+ "lke": {
+ "english_name": "Kenyi"
+ },
+ "lkb": {
+ "english_name": "Kabras"
+ },
+ "lkc": {
+ "english_name": "Kucong"
+ },
+ "lka": {
+ "english_name": "Lakalei"
+ },
+ "lky": {
+ "english_name": "Lokoya"
+ },
+ "lkt": {
+ "english_name": "Lakota"
+ },
+ "lku": {
+ "english_name": "Kungkari"
+ },
+ "lkr": {
+ "english_name": "Päri"
+ },
+ "lks": {
+ "english_name": "Kisa"
+ },
+ "kce": {
+ "english_name": "Kaivi"
+ },
+ "kcd": {
+ "english_name": "Kanum, Ngkâlmpw"
+ },
+ "kcg": {
+ "english_name": "Tyap"
+ },
+ "kcf": {
+ "english_name": "Ukaan"
+ },
+ "kca": {
+ "english_name": "Khanty"
+ },
+ "kcc": {
+ "english_name": "Lubila"
+ },
+ "kcb": {
+ "english_name": "Kawacha"
+ },
+ "kcm": {
+ "english_name": "Gula (Central African Republic)"
+ },
+ "kcl": {
+ "english_name": "Kela (Papua New Guinea)"
+ },
+ "kco": {
+ "english_name": "Kinalakna"
+ },
+ "kcn": {
+ "english_name": "Nubi"
+ },
+ "kci": {
+ "english_name": "Kamantan"
+ },
+ "kch": {
+ "english_name": "Vono"
+ },
+ "kck": {
+ "english_name": "Kalanga"
+ },
+ "kcj": {
+ "english_name": "Kobiana"
+ },
+ "kcu": {
+ "english_name": "Kami (Tanzania)"
+ },
+ "kct": {
+ "english_name": "Kaian"
+ },
+ "kcw": {
+ "english_name": "Kabwari"
+ },
+ "kcv": {
+ "english_name": "Kete"
+ },
+ "kcq": {
+ "english_name": "Kamo"
+ },
+ "kcp": {
+ "english_name": "Kanga"
+ },
+ "kcs": {
+ "english_name": "Koenoem"
+ },
+ "kcr": {
+ "english_name": "Katla"
+ },
+ "kcy": {
+ "english_name": "Korandje"
+ },
+ "kcx": {
+ "english_name": "Kachama-Ganjule"
+ },
+ "kcz": {
+ "english_name": "Konongo"
+ },
+ "syi": {
+ "english_name": "Seki"
+ },
+ "bxz": {
+ "english_name": "Binahari"
+ },
+ "bxq": {
+ "english_name": "Beele"
+ },
+ "bxp": {
+ "english_name": "Bebil"
+ },
+ "bxs": {
+ "english_name": "Busam"
+ },
+ "bxr": {
+ "english_name": "Buriat, Russia"
+ },
+ "bxu": {
+ "english_name": "Buriat, China"
+ },
+ "bxw": {
+ "english_name": "Bankagooma"
+ },
+ "bxv": {
+ "english_name": "Berakou"
+ },
+ "bxi": {
+ "english_name": "Pirlatapa"
+ },
+ "bxh": {
+ "english_name": "Buhutu"
+ },
+ "bxk": {
+ "english_name": "Bukusu"
+ },
+ "bxj": {
+ "english_name": "Bayungu"
+ },
+ "bxm": {
+ "english_name": "Buriat, Mongolia"
+ },
+ "bxl": {
+ "english_name": "Jalkunan"
+ },
+ "bxo": {
+ "english_name": "Barikanchi"
+ },
+ "bxn": {
+ "english_name": "Burduna"
+ },
+ "bxa": {
+ "english_name": "Tairaha"
+ },
+ "bxc": {
+ "english_name": "Molengue"
+ },
+ "bxb": {
+ "english_name": "Bor, Belanda"
+ },
+ "bxe": {
+ "english_name": "Birale"
+ },
+ "bxd": {
+ "english_name": "Pela"
+ },
+ "bxg": {
+ "english_name": "Bangala"
+ },
+ "bxf": {
+ "english_name": "Bilur"
+ },
+ "zh": {
+ "name": "中文",
+ "english_name": "Chinese"
+ },
+ "za": {
+ "english_name": "Zhuang"
+ },
+ "zu": {
+ "name": "Isi-Zulu",
+ "english_name": "Zulu"
+ },
+ "ulk": {
+ "english_name": "Meriam"
+ },
+ "ycp": {
+ "english_name": "Chepya"
+ },
+ "ych": {
+ "english_name": "Chesu"
+ },
+ "ycn": {
+ "english_name": "Yucuna"
+ },
+ "ycl": {
+ "english_name": "Lolopo"
+ },
+ "ozm": {
+ "english_name": "Koonzime"
+ },
+ "ulb": {
+ "english_name": "Ulukwumi"
+ },
+ "vbb": {
+ "english_name": "Babar, Southeast"
+ },
+ "vbk": {
+ "english_name": "Bontok, Southwestern"
+ },
+ "wig": {
+ "english_name": "Wik-Ngathana"
+ },
+ "wif": {
+ "english_name": "Wik-Keyangan"
+ },
+ "wie": {
+ "english_name": "Wik-Epa"
+ },
+ "wic": {
+ "english_name": "Wichita"
+ },
+ "wib": {
+ "english_name": "Toussian, Southern"
+ },
+ "win": {
+ "english_name": "Ho-Chunk"
+ },
+ "wim": {
+ "english_name": "Wik-Mungkan"
+ },
+ "wil": {
+ "english_name": "Wilawila"
+ },
+ "wik": {
+ "english_name": "Wikalkan"
+ },
+ "wij": {
+ "english_name": "Wik-Iiyanh"
+ },
+ "wii": {
+ "english_name": "Minidien"
+ },
+ "wih": {
+ "english_name": "Wik-Me'anha"
+ },
+ "wiv": {
+ "english_name": "Vitu"
+ },
+ "wiu": {
+ "english_name": "Wiru"
+ },
+ "sys": {
+ "english_name": "Sinyar"
+ },
+ "wir": {
+ "english_name": "Wiraféd"
+ },
+ "zmm": {
+ "english_name": "Marimanindji"
+ },
+ "wiy": {
+ "english_name": "Wiyot"
+ },
+ "syr": {
+ "english_name": "Syriac"
+ },
+ "xqa": {
+ "english_name": "Karakhanid"
+ },
+ "xqt": {
+ "english_name": "Qatabanian"
+ },
+ "jns": {
+ "english_name": "Jaunsari"
+ },
+ "jna": {
+ "english_name": "Jangshung"
+ },
+ "jng": {
+ "english_name": "Yangman"
+ },
+ "jnd": {
+ "english_name": "Jandavra"
+ },
+ "jnj": {
+ "english_name": "Yemsa"
+ },
+ "jni": {
+ "english_name": "Janji"
+ },
+ "jnl": {
+ "english_name": "Rawat"
+ },
+ "syy": {
+ "english_name": "Al-Sayyid Bedouin Sign Language"
+ },
+ "snf": {
+ "english_name": "Noon"
+ },
+ "hlu": {
+ "english_name": "Luwian, Hieroglyphic"
+ },
+ "hlt": {
+ "english_name": "Chin, Matu"
+ },
+ "snb": {
+ "english_name": "Sebuyau"
+ },
+ "hle": {
+ "english_name": "Hlersu"
+ },
+ "hld": {
+ "english_name": "Halang Doan"
+ },
+ "hlb": {
+ "english_name": "Halbi"
+ },
+ "hla": {
+ "english_name": "Halia"
+ },
+ "snc": {
+ "english_name": "Sinaugoro"
+ },
+ "sno": {
+ "english_name": "Snohomish"
+ },
+ "snm": {
+ "english_name": "Ma'di, Southern"
+ },
+ "ecs": {
+ "english_name": "Ecuadorian Sign Language"
+ },
+ "ecr": {
+ "english_name": "Eteocretan"
+ },
+ "ecy": {
+ "english_name": "Eteocypriot"
+ },
+ "snv": {
+ "english_name": "Sa'ban"
+ },
+ "snu": {
+ "english_name": "Senggi"
+ },
+ "snr": {
+ "english_name": "Sihan"
+ },
+ "sns": {
+ "english_name": "South West Bay"
+ },
+ "snp": {
+ "english_name": "Siane"
+ },
+ "snq": {
+ "english_name": "Sangu (Gabon)"
+ },
+ "snz": {
+ "english_name": "Sinsauru"
+ },
+ "sny": {
+ "english_name": "Saniyo-Hiyewe"
+ },
+ "rsl": {
+ "english_name": "Russian Sign Language"
+ },
+ "rsi": {
+ "english_name": "Rennellese Sign Language"
+ },
+ "rsb": {
+ "english_name": "Romano-Serbian"
+ },
+ "cyb": {
+ "english_name": "Cayubaba"
+ },
+ "cya": {
+ "english_name": "Chatino, Nopala"
+ },
+ "cyo": {
+ "english_name": "Cuyonon"
+ },
+ "bej": {
+ "english_name": "Beja"
+ },
+ "bek": {
+ "english_name": "Bebeli"
+ },
+ "beh": {
+ "english_name": "Biali"
+ },
+ "bei": {
+ "english_name": "Bekati'"
+ },
+ "beo": {
+ "english_name": "Beami"
+ },
+ "bem": {
+ "english_name": "Bemba (Zambia)"
+ },
+ "beb": {
+ "english_name": "Bebele"
+ },
+ "bec": {
+ "english_name": "Iceve-Maci"
+ },
+ "bea": {
+ "english_name": "Beaver"
+ },
+ "bef": {
+ "english_name": "Benabena"
+ },
+ "beg": {
+ "english_name": "Belait"
+ },
+ "bed": {
+ "english_name": "Bedoanas"
+ },
+ "bee": {
+ "english_name": "Byangsi"
+ },
+ "bez": {
+ "english_name": "Bena (Tanzania)"
+ },
+ "bex": {
+ "english_name": "Jur Modo"
+ },
+ "bey": {
+ "english_name": "Beli (Papua New Guinea)"
+ },
+ "bes": {
+ "english_name": "Besme"
+ },
+ "bep": {
+ "english_name": "Besoa"
+ },
+ "beq": {
+ "english_name": "Beembe"
+ },
+ "bev": {
+ "english_name": "Bété, Daloa"
+ },
+ "bew": {
+ "english_name": "Betawi"
+ },
+ "bet": {
+ "english_name": "Béte, Guiberoua"
+ },
+ "beu": {
+ "english_name": "Blagar"
+ },
+ "pyx": {
+ "english_name": "Pyu (Myanmar)"
+ },
+ "pyy": {
+ "english_name": "Pyen"
+ },
+ "awy": {
+ "english_name": "Awyu, Edera"
+ },
+ "awx": {
+ "english_name": "Awara"
+ },
+ "aww": {
+ "english_name": "Awun"
+ },
+ "awv": {
+ "english_name": "Awyu, Jair"
+ },
+ "awu": {
+ "english_name": "Awyu, Central"
+ },
+ "awt": {
+ "english_name": "Araweté"
+ },
+ "aws": {
+ "english_name": "Awyu, South"
+ },
+ "awr": {
+ "english_name": "Awera"
+ },
+ "awo": {
+ "english_name": "Awak"
+ },
+ "awn": {
+ "english_name": "Awngi"
+ },
+ "awm": {
+ "english_name": "Arawum"
+ },
+ "awk": {
+ "english_name": "Awabakal"
+ },
+ "pym": {
+ "english_name": "Fyam"
+ },
+ "awi": {
+ "english_name": "Aekyom"
+ },
+ "awh": {
+ "english_name": "Awbono"
+ },
+ "awg": {
+ "english_name": "Anguthimri"
+ },
+ "awe": {
+ "english_name": "Awetí"
+ },
+ "awc": {
+ "english_name": "Cicipu"
+ },
+ "awb": {
+ "english_name": "Awa (Papua New Guinea)"
+ },
+ "awa": {
+ "english_name": "Awadhi"
+ },
+ "ure": {
+ "english_name": "Uru"
+ },
+ "urf": {
+ "english_name": "Uradhi"
+ },
+ "urg": {
+ "english_name": "Urigina"
+ },
+ "ura": {
+ "english_name": "Urarina"
+ },
+ "urb": {
+ "english_name": "Urubú-Kaapor"
+ },
+ "urc": {
+ "english_name": "Urningangg"
+ },
+ "url": {
+ "english_name": "Urali"
+ },
+ "urm": {
+ "english_name": "Urapmin"
+ },
+ "urn": {
+ "english_name": "Uruangnirin"
+ },
+ "uro": {
+ "english_name": "Ura (Papua New Guinea)"
+ },
+ "urh": {
+ "english_name": "Urhobo"
+ },
+ "uri": {
+ "english_name": "Urim"
+ },
+ "urk": {
+ "english_name": "Urak Lawoi'"
+ },
+ "urt": {
+ "english_name": "Urat"
+ },
+ "uru": {
+ "english_name": "Urumi"
+ },
+ "urv": {
+ "english_name": "Uruava"
+ },
+ "urw": {
+ "english_name": "Sop"
+ },
+ "urp": {
+ "english_name": "Uru-Pa-In"
+ },
+ "urr": {
+ "english_name": "Lehalurup"
+ },
+ "ibd": {
+ "english_name": "Iwaidja"
+ },
+ "urx": {
+ "english_name": "Urimo"
+ },
+ "ury": {
+ "english_name": "Orya"
+ },
+ "urz": {
+ "english_name": "Uru-Eu-Wau-Wau"
+ },
+ "ibe": {
+ "english_name": "Akpes"
+ },
+ "ngd": {
+ "english_name": "Ngando (Central African Republic)"
+ },
+ "nge": {
+ "english_name": "Ngemba"
+ },
+ "ngg": {
+ "english_name": "Ngbaka Manza"
+ },
+ "nga": {
+ "english_name": "Ngbaka"
+ },
+ "ngb": {
+ "english_name": "Ngbandi, Northern"
+ },
+ "ngc": {
+ "english_name": "Ngombe (Democratic Republic of Congo)"
+ },
+ "ngl": {
+ "english_name": "Lomwe"
+ },
+ "ngm": {
+ "english_name": "Ngatik Men's Creole"
+ },
+ "ngn": {
+ "english_name": "Ngwo"
+ },
+ "ngo": {
+ "english_name": "Ngoni"
+ },
+ "ngh": {
+ "english_name": "N/u"
+ },
+ "ngi": {
+ "english_name": "Ngizim"
+ },
+ "ngj": {
+ "english_name": "Ngie"
+ },
+ "ngk": {
+ "english_name": "Dalabon"
+ },
+ "ngt": {
+ "english_name": "Ngeq"
+ },
+ "ngu": {
+ "english_name": "Nahuatl, Guerrero"
+ },
+ "ngv": {
+ "english_name": "Nagumi"
+ },
+ "ngw": {
+ "english_name": "Ngwaba"
+ },
+ "ngp": {
+ "english_name": "Ngulu"
+ },
+ "ngq": {
+ "english_name": "Ngurimi"
+ },
+ "ngr": {
+ "english_name": "Engdewu"
+ },
+ "ngs": {
+ "english_name": "Gvoko"
+ },
+ "ngx": {
+ "english_name": "Nggwahyi"
+ },
+ "ngy": {
+ "english_name": "Tibea"
+ },
+ "ngz": {
+ "english_name": "Ngungwel"
+ },
+ "mgc": {
+ "english_name": "Morokodo"
+ },
+ "mgb": {
+ "english_name": "Mararit"
+ },
+ "mga": {
+ "english_name": "Irish, Middle (900-1200)"
+ },
+ "tbz": {
+ "english_name": "Ditammari"
+ },
+ "mgg": {
+ "english_name": "Mpumpong"
+ },
+ "mgf": {
+ "english_name": "Maklew"
+ },
+ "mge": {
+ "english_name": "Mango"
+ },
+ "mgd": {
+ "english_name": "Moru"
+ },
+ "mgk": {
+ "english_name": "Mawes"
+ },
+ "mgj": {
+ "english_name": "Abureni"
+ },
+ "mgi": {
+ "english_name": "Lijili"
+ },
+ "mgh": {
+ "english_name": "Makhuwa-Meetto"
+ },
+ "mgo": {
+ "english_name": "Meta'"
+ },
+ "mgn": {
+ "english_name": "Mbangi"
+ },
+ "mgm": {
+ "english_name": "Mambae"
+ },
+ "mgl": {
+ "english_name": "Maleu-Kilenge"
+ },
+ "mgs": {
+ "english_name": "Manda (Tanzania)"
+ },
+ "mgr": {
+ "english_name": "Mambwe-Lungu"
+ },
+ "mgq": {
+ "english_name": "Malila"
+ },
+ "mgp": {
+ "english_name": "Magar, Eastern"
+ },
+ "mgw": {
+ "english_name": "Matumbi"
+ },
+ "mgv": {
+ "english_name": "Matengo"
+ },
+ "mgu": {
+ "english_name": "Mailu"
+ },
+ "mgt": {
+ "english_name": "Mongol"
+ },
+ "tba": {
+ "english_name": "Aikanã"
+ },
+ "mgz": {
+ "english_name": "Mbugwe"
+ },
+ "mgy": {
+ "english_name": "Mbunga"
+ },
+ "tbb": {
+ "english_name": "Tapeba"
+ },
+ "tbe": {
+ "english_name": "Tanimbili"
+ },
+ "tbd": {
+ "english_name": "Kaki Ae"
+ },
+ "tbg": {
+ "english_name": "Tairora, North"
+ },
+ "tbf": {
+ "english_name": "Mandara"
+ },
+ "shp": {
+ "english_name": "Shipibo-Conibo"
+ },
+ "shq": {
+ "english_name": "Sala"
+ },
+ "shr": {
+ "english_name": "Shi"
+ },
+ "shs": {
+ "english_name": "Shuswap"
+ },
+ "sht": {
+ "english_name": "Shasta"
+ },
+ "shu": {
+ "english_name": "Arabic, Chadian"
+ },
+ "shv": {
+ "english_name": "Shehri"
+ },
+ "dpp": {
+ "english_name": "Papar"
+ },
+ "shx": {
+ "english_name": "She"
+ },
+ "shy": {
+ "english_name": "Tachawit"
+ },
+ "shz": {
+ "english_name": "Senoufo, Syenara"
+ },
+ "sha": {
+ "english_name": "Shall-Zwall"
+ },
+ "shb": {
+ "english_name": "Ninam"
+ },
+ "shc": {
+ "english_name": "Sonde"
+ },
+ "shd": {
+ "english_name": "Kundal Shahi"
+ },
+ "she": {
+ "english_name": "Sheko"
+ },
+ "shg": {
+ "english_name": "Shua"
+ },
+ "shh": {
+ "english_name": "Shoshoni"
+ },
+ "shi": {
+ "english_name": "Tachelhit"
+ },
+ "shj": {
+ "english_name": "Shatt"
+ },
+ "shk": {
+ "english_name": "Shilluk"
+ },
+ "shl": {
+ "english_name": "Shendu"
+ },
+ "shm": {
+ "english_name": "Shahrudi"
+ },
+ "shn": {
+ "english_name": "Shan"
+ },
+ "sho": {
+ "english_name": "Shanga"
+ },
+ "lup": {
+ "english_name": "Lumbu"
+ },
+ "luq": {
+ "english_name": "Lucumi"
+ },
+ "lur": {
+ "english_name": "Laura"
+ },
+ "lus": {
+ "english_name": "Lushai"
+ },
+ "lut": {
+ "english_name": "Lushootseed"
+ },
+ "luu": {
+ "english_name": "Lumba-Yakkha"
+ },
+ "luv": {
+ "english_name": "Luwati"
+ },
+ "luw": {
+ "english_name": "Luo (Cameroon)"
+ },
+ "luy": {
+ "english_name": "Luyia"
+ },
+ "luz": {
+ "english_name": "Luri, Southern"
+ },
+ "lua": {
+ "english_name": "Luba-Lulua"
+ },
+ "luc": {
+ "english_name": "Aringa"
+ },
+ "lud": {
+ "english_name": "Ludian"
+ },
+ "lue": {
+ "english_name": "Luvale"
+ },
+ "luf": {
+ "english_name": "Laua"
+ },
+ "lui": {
+ "english_name": "Luiseno"
+ },
+ "luj": {
+ "english_name": "Luna"
+ },
+ "luk": {
+ "english_name": "Lunanakha"
+ },
+ "lul": {
+ "english_name": "Olu'bo"
+ },
+ "lum": {
+ "english_name": "Luimbi"
+ },
+ "lun": {
+ "english_name": "Lunda"
+ },
+ "luo": {
+ "english_name": "Luo (Kenya and Tanzania)"
+ },
+ "keo": {
+ "english_name": "Kakwa"
+ },
+ "ken": {
+ "english_name": "Kenyang"
+ },
+ "kem": {
+ "english_name": "Kemak"
+ },
+ "kel": {
+ "english_name": "Kela (Democratic Republic of Congo)"
+ },
+ "kek": {
+ "english_name": "Kekchí"
+ },
+ "kej": {
+ "english_name": "Kadar"
+ },
+ "kei": {
+ "english_name": "Kei"
+ },
+ "keh": {
+ "english_name": "Keak"
+ },
+ "keg": {
+ "english_name": "Tese"
+ },
+ "kef": {
+ "english_name": "Kpessi"
+ },
+ "kee": {
+ "english_name": "Keres, Eastern"
+ },
+ "ked": {
+ "english_name": "Kerewe"
+ },
+ "kec": {
+ "english_name": "Keiga"
+ },
+ "keb": {
+ "english_name": "Kélé"
+ },
+ "kea": {
+ "english_name": "Kabuverdianu"
+ },
+ "jie": {
+ "english_name": "Jilbe"
+ },
+ "kez": {
+ "english_name": "Kukele"
+ },
+ "key": {
+ "english_name": "Kupia"
+ },
+ "kex": {
+ "english_name": "Kukna"
+ },
+ "kew": {
+ "english_name": "Kewa, West"
+ },
+ "kev": {
+ "english_name": "Kanikkaran"
+ },
+ "keu": {
+ "english_name": "Akebu"
+ },
+ "ket": {
+ "english_name": "Ket"
+ },
+ "kes": {
+ "english_name": "Kugbo"
+ },
+ "ker": {
+ "english_name": "Kera"
+ },
+ "keq": {
+ "english_name": "Kamar"
+ },
+ "kep": {
+ "english_name": "Kaikadi"
+ },
+ "jiv": {
+ "english_name": "Shuar"
+ },
+ "yay": {
+ "english_name": "Agwagwune"
+ },
+ "yax": {
+ "english_name": "Yauma"
+ },
+ "yaz": {
+ "english_name": "Lokaa"
+ },
+ "yau": {
+ "english_name": "Yuwana"
+ },
+ "yat": {
+ "english_name": "Yambeta"
+ },
+ "yaw": {
+ "english_name": "Yawalapití"
+ },
+ "yav": {
+ "english_name": "Yangben"
+ },
+ "yaq": {
+ "english_name": "Yaqui"
+ },
+ "jit": {
+ "english_name": "Jita"
+ },
+ "yas": {
+ "english_name": "Nugunu (Cameroon)"
+ },
+ "yar": {
+ "english_name": "Yabarana"
+ },
+ "yam": {
+ "english_name": "Yamba"
+ },
+ "yal": {
+ "english_name": "Yalunka"
+ },
+ "yao": {
+ "english_name": "Yao"
+ },
+ "jiu": {
+ "english_name": "Jinuo, Youle"
+ },
+ "yai": {
+ "english_name": "Yagnobi"
+ },
+ "yah": {
+ "english_name": "Yazgulyam"
+ },
+ "yak": {
+ "english_name": "Yakama"
+ },
+ "yaj": {
+ "english_name": "Banda-Yangere"
+ },
+ "yae": {
+ "english_name": "Pumé"
+ },
+ "yad": {
+ "english_name": "Yagua"
+ },
+ "yag": {
+ "english_name": "Yámana"
+ },
+ "yaf": {
+ "english_name": "Yaka (Democratic Republic of Congo)"
+ },
+ "yaa": {
+ "english_name": "Yaminahua"
+ },
+ "yac": {
+ "english_name": "Yali, Pass Valley"
+ },
+ "yab": {
+ "english_name": "Yuhup"
+ },
+ "oti": {
+ "english_name": "Oti"
+ },
+ "otk": {
+ "english_name": "Turkish, Old"
+ },
+ "otl": {
+ "english_name": "Otomi, Tilapa"
+ },
+ "otm": {
+ "english_name": "Otomi, Eastern Highland"
+ },
+ "otn": {
+ "english_name": "Otomi, Tenango"
+ },
+ "ota": {
+ "english_name": "Turkish, Ottoman (1500-1928)"
+ },
+ "otb": {
+ "english_name": "Tibetan, Old"
+ },
+ "jiq": {
+ "english_name": "Guanyinqiao"
+ },
+ "otd": {
+ "english_name": "Ot Danum"
+ },
+ "ote": {
+ "english_name": "Otomi, Mezquital"
+ },
+ "otx": {
+ "english_name": "Otomi, Texcatepec"
+ },
+ "oty": {
+ "english_name": "Tamil, Old"
+ },
+ "otz": {
+ "english_name": "Otomi, Ixtenco"
+ },
+ "otq": {
+ "english_name": "Otomi, Querétaro"
+ },
+ "otr": {
+ "english_name": "Otoro"
+ },
+ "ots": {
+ "english_name": "Otomi, Estado de México"
+ },
+ "ott": {
+ "english_name": "Otomi, Temoaya"
+ },
+ "otu": {
+ "english_name": "Otuke"
+ },
+ "otw": {
+ "english_name": "Ottawa"
+ },
+ "jiy": {
+ "english_name": "Jinuo, Buyuan"
+ },
+ "wkl": {
+ "english_name": "Kalanadi"
+ },
+ "wka": {
+ "english_name": "Kw'adza"
+ },
+ "wkb": {
+ "english_name": "Kumbaran"
+ },
+ "wkd": {
+ "english_name": "Wakde"
+ },
+ "wky": {
+ "english_name": "Wangkayutyuru"
+ },
+ "sbv": {
+ "english_name": "Sabine"
+ },
+ "wku": {
+ "english_name": "Kunduvadi"
+ },
+ "wkw": {
+ "english_name": "Wakawaka"
+ },
+ "sbw": {
+ "english_name": "Simba"
+ },
+ "mzt": {
+ "english_name": "Mintil"
+ },
+ "mzu": {
+ "english_name": "Inapang"
+ },
+ "mzv": {
+ "english_name": "Manza"
+ },
+ "mzw": {
+ "english_name": "Deg"
+ },
+ "mzp": {
+ "english_name": "Movima"
+ },
+ "mzq": {
+ "english_name": "Mori Atas"
+ },
+ "mzr": {
+ "english_name": "Marúbo"
+ },
+ "mzs": {
+ "english_name": "Macanese"
+ },
+ "mzx": {
+ "english_name": "Mawayana"
+ },
+ "mzy": {
+ "english_name": "Mozambican Sign Language"
+ },
+ "mzz": {
+ "english_name": "Maiadomu"
+ },
+ "mzd": {
+ "english_name": "Malimba"
+ },
+ "mze": {
+ "english_name": "Morawa"
+ },
+ "mzg": {
+ "english_name": "Monastic Sign Language"
+ },
+ "mza": {
+ "english_name": "Mixtec, Santa María Zacatepec"
+ },
+ "mzb": {
+ "english_name": "Tumzabt"
+ },
+ "mzc": {
+ "english_name": "Madagascar Sign Language"
+ },
+ "mzl": {
+ "english_name": "Mixe, Mazatlán"
+ },
+ "mzm": {
+ "english_name": "Mumuye"
+ },
+ "mzn": {
+ "english_name": "Mazanderani"
+ },
+ "mzo": {
+ "english_name": "Matipuhy"
+ },
+ "mzh": {
+ "english_name": "Wichí Lhamtés Güisnay"
+ },
+ "mzi": {
+ "english_name": "Mazatec, Ixcatlán"
+ },
+ "mzj": {
+ "english_name": "Manya"
+ },
+ "mzk": {
+ "english_name": "Mambila, Nigeria"
+ },
+ "zyg": {
+ "english_name": "Zhuang, Yang"
+ },
+ "zyb": {
+ "english_name": "Zhuang, Yongbei"
+ },
+ "zyn": {
+ "english_name": "Zhuang, Yongnan"
+ },
+ "zyj": {
+ "english_name": "Zhuang, Youjiang"
+ },
+ "syb": {
+ "english_name": "Subanen, Central"
+ },
+ "zyp": {
+ "english_name": "Chin, Zyphe"
+ },
+ "xsr": {
+ "english_name": "Sherpa"
+ },
+ "xss": {
+ "english_name": "Assan"
+ },
+ "xsp": {
+ "english_name": "Silopi"
+ },
+ "xsq": {
+ "english_name": "Makhuwa-Saka"
+ },
+ "xsv": {
+ "english_name": "Sudovian"
+ },
+ "xsu": {
+ "english_name": "Sanumá"
+ },
+ "xsy": {
+ "english_name": "Saisiyat"
+ },
+ "xsb": {
+ "english_name": "Sambal"
+ },
+ "xsc": {
+ "english_name": "Scythian"
+ },
+ "xsa": {
+ "english_name": "Sabaean"
+ },
+ "xsd": {
+ "english_name": "Sidetic"
+ },
+ "xse": {
+ "english_name": "Sempan"
+ },
+ "xsh": {
+ "english_name": "Shamang"
+ },
+ "xsi": {
+ "english_name": "Sio"
+ },
+ "xsn": {
+ "english_name": "Sanga (Nigeria)"
+ },
+ "xso": {
+ "english_name": "Solano"
+ },
+ "xsl": {
+ "english_name": "Slavey, South"
+ },
+ "xsm": {
+ "english_name": "Kasem"
+ },
+ "jls": {
+ "english_name": "Jamaican Sign Language"
+ },
+ "jle": {
+ "english_name": "Ngile"
+ },
+ "swi": {
+ "english_name": "Sui"
+ },
+ "dui": {
+ "english_name": "Dumun"
+ },
+ "swk": {
+ "english_name": "Sena, Malawi"
+ },
+ "swj": {
+ "english_name": "Sira"
+ },
+ "swm": {
+ "english_name": "Samosa"
+ },
+ "swl": {
+ "english_name": "Swedish Sign Language"
+ },
+ "dun": {
+ "english_name": "Dusun Deyah"
+ },
+ "swn": {
+ "english_name": "Sawknah"
+ },
+ "swc": {
+ "english_name": "Swahili, Congo"
+ },
+ "swb": {
+ "english_name": "Comorian, Maore"
+ },
+ "swg": {
+ "english_name": "Swabian"
+ },
+ "swf": {
+ "english_name": "Sere"
+ },
+ "swy": {
+ "english_name": "Sarua"
+ },
+ "swx": {
+ "english_name": "Suruahá"
+ },
+ "hz": {
+ "english_name": "Herero"
+ },
+ "hy": {
+ "english_name": "Armenian"
+ },
+ "eaa": {
+ "english_name": "Karenggapa"
+ },
+ "ht": {
+ "english_name": "Haitian"
+ },
+ "hu": {
+ "name": "magyar",
+ "english_name": "Hungarian"
+ },
+ "swq": {
+ "english_name": "Sharwa"
+ },
+ "hi": {
+ "name": "हिंदी",
+ "english_name": "Hindi"
+ },
+ "ho": {
+ "english_name": "Hiri Motu"
+ },
+ "swp": {
+ "english_name": "Suau"
+ },
+ "ha": {
+ "english_name": "Hausa"
+ },
+ "sws": {
+ "english_name": "Seluwasan"
+ },
+ "he": {
+ "name": "עברית",
+ "english_name": "Hebrew"
+ },
+ "dma": {
+ "english_name": "Duma"
+ },
+ "dmb": {
+ "english_name": "Dogon, Mombo"
+ },
+ "pi": {
+ "english_name": "Pali"
+ },
+ "dmd": {
+ "english_name": "Madhi Madhi"
+ },
+ "dme": {
+ "english_name": "Dugwor"
+ },
+ "dmg": {
+ "english_name": "Kinabatangan, Upper"
+ },
+ "dmk": {
+ "english_name": "Domaaki"
+ },
+ "dml": {
+ "english_name": "Dameli"
+ },
+ "dmm": {
+ "english_name": "Dama"
+ },
+ "dmo": {
+ "english_name": "Kemedzung"
+ },
+ "dmr": {
+ "english_name": "Damar, East"
+ },
+ "dms": {
+ "english_name": "Dampelas"
+ },
+ "pl": {
+ "name": "polski",
+ "english_name": "Polish"
+ },
+ "dmv": {
+ "english_name": "Dumpas"
+ },
+ "dmw": {
+ "english_name": "Mudburra"
+ },
+ "dmx": {
+ "english_name": "Dema"
+ },
+ "dmy": {
+ "english_name": "Demta"
+ },
+ "swv": {
+ "english_name": "Shekhawati"
+ },
+ "hna": {
+ "english_name": "Mina (Cameroon)"
+ },
+ "bcm": {
+ "english_name": "Bannoni"
+ },
+ "bcn": {
+ "english_name": "Bali (Nigeria)"
+ },
+ "bco": {
+ "english_name": "Kaluli"
+ },
+ "hne": {
+ "english_name": "Chhattisgarhi"
+ },
+ "hnd": {
+ "english_name": "Hindko, Southern"
+ },
+ "bcj": {
+ "english_name": "Bardi"
+ },
+ "bck": {
+ "english_name": "Bunaba"
+ },
+ "hni": {
+ "english_name": "Hani"
+ },
+ "hnh": {
+ "english_name": "//Ani"
+ },
+ "bcf": {
+ "english_name": "Bamu"
+ },
+ "hnj": {
+ "english_name": "Hmong Njua"
+ },
+ "bca": {
+ "english_name": "Bai, Central"
+ },
+ "hno": {
+ "english_name": "Hindko, Northern"
+ },
+ "hnn": {
+ "english_name": "Hanunoo"
+ },
+ "hns": {
+ "english_name": "Hindustani, Caribbean"
+ },
+ "hnu": {
+ "english_name": "Hung"
+ },
+ "bcy": {
+ "english_name": "Bacama"
+ },
+ "bcz": {
+ "english_name": "Bainouk-Gunyaamolo"
+ },
+ "bct": {
+ "english_name": "Bendi"
+ },
+ "bcu": {
+ "english_name": "Awad Bing"
+ },
+ "bcv": {
+ "english_name": "Shoo-Minda-Nye"
+ },
+ "bcw": {
+ "english_name": "Bana"
+ },
+ "bcp": {
+ "english_name": "Bali (Democratic Republic of Congo)"
+ },
+ "bcq": {
+ "english_name": "Bench"
+ },
+ "bcr": {
+ "english_name": "Babine"
+ },
+ "bcs": {
+ "english_name": "Kohumono"
+ },
+ "aua": {
+ "english_name": "Asumboa"
+ },
+ "auc": {
+ "english_name": "Waorani"
+ },
+ "aub": {
+ "english_name": "Alugu"
+ },
+ "aud": {
+ "english_name": "Anuta"
+ },
+ "aug": {
+ "english_name": "Aguna"
+ },
+ "aui": {
+ "english_name": "Anuki"
+ },
+ "auh": {
+ "english_name": "Aushi"
+ },
+ "auk": {
+ "english_name": "Heyo"
+ },
+ "auj": {
+ "english_name": "Awjilah"
+ },
+ "aum": {
+ "english_name": "Asu (Nigeria)"
+ },
+ "aul": {
+ "english_name": "Aulua"
+ },
+ "auo": {
+ "english_name": "Auyokawa"
+ },
+ "aun": {
+ "english_name": "One, Molmo"
+ },
+ "auq": {
+ "english_name": "Anus"
+ },
+ "aup": {
+ "english_name": "Makayam"
+ },
+ "aur": {
+ "english_name": "Aruek"
+ },
+ "auu": {
+ "english_name": "Auye"
+ },
+ "aut": {
+ "english_name": "Austral"
+ },
+ "auw": {
+ "english_name": "Awyi"
+ },
+ "auy": {
+ "english_name": "Awiyaana"
+ },
+ "aux": {
+ "english_name": "Aurá"
+ },
+ "auz": {
+ "english_name": "Arabic, Uzbeki"
+ },
+ "blg": {
+ "english_name": "Balau"
+ },
+ "upi": {
+ "english_name": "Umeda"
+ },
+ "upv": {
+ "english_name": "Uripiv-Wala-Rano-Atchin"
+ },
+ "nen": {
+ "english_name": "Nengone"
+ },
+ "neo": {
+ "english_name": "Ná-Meo"
+ },
+ "nem": {
+ "english_name": "Nemi"
+ },
+ "nej": {
+ "english_name": "Neko"
+ },
+ "nek": {
+ "english_name": "Neku"
+ },
+ "neh": {
+ "english_name": "Nyenkha"
+ },
+ "nei": {
+ "english_name": "Hittite, Neo-"
+ },
+ "nef": {
+ "english_name": "Nefamese"
+ },
+ "neg": {
+ "english_name": "Negidal"
+ },
+ "ned": {
+ "english_name": "Nde-Gbite"
+ },
+ "nee": {
+ "english_name": "Nêlêmwa-Nixumwak"
+ },
+ "neb": {
+ "english_name": "Toura (Côte d'Ivoire)"
+ },
+ "nec": {
+ "english_name": "Nedebang"
+ },
+ "nea": {
+ "english_name": "Ngad'a, Eastern"
+ },
+ "nez": {
+ "english_name": "Nez Perce"
+ },
+ "nex": {
+ "english_name": "Neme"
+ },
+ "ney": {
+ "english_name": "Neyo"
+ },
+ "nev": {
+ "english_name": "Nyaheun"
+ },
+ "new": {
+ "english_name": "Newari"
+ },
+ "net": {
+ "english_name": "Nete"
+ },
+ "neu": {
+ "english_name": "Neo"
+ },
+ "ner": {
+ "english_name": "Yahadian"
+ },
+ "nes": {
+ "english_name": "Kinnauri, Bhoti"
+ },
+ "neq": {
+ "english_name": "Mixe, North Central"
+ },
+ "mee": {
+ "english_name": "Mengen"
+ },
+ "med": {
+ "english_name": "Melpa"
+ },
+ "mef": {
+ "english_name": "Megam"
+ },
+ "mea": {
+ "english_name": "Menka"
+ },
+ "mec": {
+ "english_name": "Mara"
+ },
+ "meb": {
+ "english_name": "Ikobi"
+ },
+ "mem": {
+ "english_name": "Mangala"
+ },
+ "mel": {
+ "english_name": "Melanau, Central"
+ },
+ "meo": {
+ "english_name": "Malay, Kedah"
+ },
+ "men": {
+ "english_name": "Mende (Sierra Leone)"
+ },
+ "mei": {
+ "english_name": "Midob"
+ },
+ "meh": {
+ "english_name": "Mixtec, Southwestern Tlaxiaco"
+ },
+ "mek": {
+ "english_name": "Mekeo"
+ },
+ "mej": {
+ "english_name": "Meyah"
+ },
+ "meu": {
+ "english_name": "Motu"
+ },
+ "met": {
+ "english_name": "Mato"
+ },
+ "mew": {
+ "english_name": "Maaka"
+ },
+ "mev": {
+ "english_name": "Mano"
+ },
+ "meq": {
+ "english_name": "Merey"
+ },
+ "mep": {
+ "english_name": "Miriwung"
+ },
+ "mes": {
+ "english_name": "Masmaje"
+ },
+ "mer": {
+ "english_name": "Meru"
+ },
+ "mey": {
+ "english_name": "Hassaniyya"
+ },
+ "mez": {
+ "english_name": "Menominee"
+ },
+ "dry": {
+ "english_name": "Darai"
+ },
+ "drq": {
+ "english_name": "Dura"
+ },
+ "sjs": {
+ "english_name": "Senhaja De Srair"
+ },
+ "drs": {
+ "english_name": "Gedeo"
+ },
+ "drr": {
+ "english_name": "Dororo"
+ },
+ "dru": {
+ "english_name": "Rukai"
+ },
+ "drt": {
+ "english_name": "Drents"
+ },
+ "sjt": {
+ "english_name": "Sami, Ter"
+ },
+ "sju": {
+ "english_name": "Sami, Ume"
+ },
+ "dri": {
+ "english_name": "C'lela"
+ },
+ "sjk": {
+ "english_name": "Sami, Kemi"
+ },
+ "sjn": {
+ "english_name": "Sindarin"
+ },
+ "drl": {
+ "english_name": "Paakantyi"
+ },
+ "dro": {
+ "english_name": "Melanau, Daro-Matu"
+ },
+ "drn": {
+ "english_name": "Damar, West"
+ },
+ "sjb": {
+ "english_name": "Sajau Basap"
+ },
+ "drc": {
+ "english_name": "Minderico"
+ },
+ "drb": {
+ "english_name": "Dair"
+ },
+ "dre": {
+ "english_name": "Dolpo"
+ },
+ "drd": {
+ "english_name": "Darmiya"
+ },
+ "drg": {
+ "english_name": "Rungus"
+ },
+ "sje": {
+ "english_name": "Sami, Pite"
+ },
+ "lww": {
+ "english_name": "Lewo"
+ },
+ "lwt": {
+ "english_name": "Lewotobi"
+ },
+ "lwu": {
+ "english_name": "Lawu"
+ },
+ "lwh": {
+ "english_name": "Lachi, White"
+ },
+ "lwo": {
+ "english_name": "Luwo"
+ },
+ "lwl": {
+ "english_name": "Lawa, Eastern"
+ },
+ "lwm": {
+ "english_name": "Laomian"
+ },
+ "lwa": {
+ "english_name": "Lwalu"
+ },
+ "lwg": {
+ "english_name": "Wanga"
+ },
+ "lwe": {
+ "english_name": "Lewo Eleng"
+ },
+ "kgq": {
+ "english_name": "Kamoro"
+ },
+ "kgp": {
+ "english_name": "Kaingang"
+ },
+ "kgs": {
+ "english_name": "Kumbainggar"
+ },
+ "kgr": {
+ "english_name": "Abun"
+ },
+ "kgu": {
+ "english_name": "Kobol"
+ },
+ "kgt": {
+ "english_name": "Somyev"
+ },
+ "kgw": {
+ "english_name": "Karon Dori"
+ },
+ "kgv": {
+ "english_name": "Karas"
+ },
+ "kgy": {
+ "english_name": "Kyerung"
+ },
+ "kgx": {
+ "english_name": "Kamaru"
+ },
+ "kga": {
+ "english_name": "Koyaga"
+ },
+ "kgc": {
+ "english_name": "Kasseng"
+ },
+ "kgb": {
+ "english_name": "Kawe"
+ },
+ "kge": {
+ "english_name": "Komering"
+ },
+ "kgd": {
+ "english_name": "Kataang"
+ },
+ "kgg": {
+ "english_name": "Kusunda"
+ },
+ "kgf": {
+ "english_name": "Kube"
+ },
+ "kgi": {
+ "english_name": "Selangor Sign Language"
+ },
+ "kgk": {
+ "english_name": "Kaiwá"
+ },
+ "kgj": {
+ "english_name": "Kham, Gamale"
+ },
+ "kgm": {
+ "english_name": "Karipúna"
+ },
+ "kgl": {
+ "english_name": "Kunggari"
+ },
+ "kgo": {
+ "english_name": "Krongo"
+ },
+ "kgn": {
+ "english_name": "Karingani"
+ },
+ "xhc": {
+ "english_name": "Hunnic"
+ },
+ "xha": {
+ "english_name": "Harami"
+ },
+ "xhe": {
+ "english_name": "Khetrani"
+ },
+ "xhd": {
+ "english_name": "Hadrami"
+ },
+ "xhr": {
+ "english_name": "Hernican"
+ },
+ "xhv": {
+ "english_name": "Khua"
+ },
+ "xhu": {
+ "english_name": "Hurrian"
+ },
+ "xht": {
+ "english_name": "Hattic"
+ },
+ "yga": {
+ "english_name": "Malyangapa"
+ },
+ "ygm": {
+ "english_name": "Yagomi"
+ },
+ "ygl": {
+ "english_name": "Yangum Gel"
+ },
+ "ygi": {
+ "english_name": "Yiningayi"
+ },
+ "ygw": {
+ "english_name": "Yagwoia"
+ },
+ "ygu": {
+ "english_name": "Yugul"
+ },
+ "ygr": {
+ "english_name": "Yagaria"
+ },
+ "ygp": {
+ "english_name": "Gepo"
+ },
+ "jpr": {
+ "english_name": "Judeo-Persian"
+ },
+ "wur": {
+ "english_name": "Wurrugu"
+ },
+ "wuv": {
+ "english_name": "Wuvulu-Aua"
+ },
+ "wuu": {
+ "english_name": "Chinese, Wu"
+ },
+ "wut": {
+ "english_name": "Wutung"
+ },
+ "wuy": {
+ "english_name": "Wauyai"
+ },
+ "wux": {
+ "english_name": "Wulna"
+ },
+ "wub": {
+ "english_name": "Wunambal"
+ },
+ "wua": {
+ "english_name": "Wikngenchera"
+ },
+ "wud": {
+ "english_name": "Wudu"
+ },
+ "wuh": {
+ "english_name": "Wutunhua"
+ },
+ "wun": {
+ "english_name": "Bungu"
+ },
+ "wum": {
+ "english_name": "Wumbvu"
+ },
+ "wul": {
+ "english_name": "Silimo"
+ },
+ "mxz": {
+ "english_name": "Masela, Central"
+ },
+ "mxx": {
+ "english_name": "Mahou"
+ },
+ "mxy": {
+ "english_name": "Mixtec, Southeastern Nochixtlán"
+ },
+ "mxv": {
+ "english_name": "Mixtec, Metlatónoc"
+ },
+ "mxw": {
+ "english_name": "Namo"
+ },
+ "mxt": {
+ "english_name": "Mixtec, Jamiltepec"
+ },
+ "mxu": {
+ "english_name": "Mada (Cameroon)"
+ },
+ "mxr": {
+ "english_name": "Murik (Malaysia)"
+ },
+ "mxs": {
+ "english_name": "Mixtec, Huitepec"
+ },
+ "mxp": {
+ "english_name": "Mixe, Tlahuitoltepec"
+ },
+ "mxq": {
+ "english_name": "Mixe, Juquila"
+ },
+ "mxn": {
+ "english_name": "Moi (Indonesia)"
+ },
+ "mxo": {
+ "english_name": "Mbowe"
+ },
+ "mxl": {
+ "english_name": "Gbe, Maxi"
+ },
+ "mxm": {
+ "english_name": "Meramera"
+ },
+ "mxj": {
+ "english_name": "Miju-Mishmi"
+ },
+ "mxk": {
+ "english_name": "Monumbo"
+ },
+ "mxh": {
+ "english_name": "Mvuba"
+ },
+ "mxi": {
+ "english_name": "Mozarabic"
+ },
+ "mxf": {
+ "english_name": "Malgbe"
+ },
+ "mxg": {
+ "english_name": "Mbangala"
+ },
+ "mxd": {
+ "english_name": "Modang"
+ },
+ "mxe": {
+ "english_name": "Mele-Fila"
+ },
+ "mxb": {
+ "english_name": "Mixtec, Tezoatlán"
+ },
+ "mxc": {
+ "english_name": "Manyika"
+ },
+ "mxa": {
+ "english_name": "Mixtec, Northwest Oaxaca"
+ },
+ "zwa": {
+ "english_name": "Zay"
+ },
+ "xut": {
+ "english_name": "Kuthant"
+ },
+ "xuu": {
+ "english_name": "Kxoe"
+ },
+ "xup": {
+ "english_name": "Umpqua, Upper"
+ },
+ "xur": {
+ "english_name": "Urartian"
+ },
+ "isr": {
+ "english_name": "Israeli Sign Language"
+ },
+ "isu": {
+ "english_name": "Isu (Menchum Division)"
+ },
+ "ist": {
+ "english_name": "Istriot"
+ },
+ "isk": {
+ "english_name": "Ishkashimi"
+ },
+ "isi": {
+ "english_name": "Nkem-Nkum"
+ },
+ "ish": {
+ "english_name": "Esan"
+ },
+ "iso": {
+ "english_name": "Isoko"
+ },
+ "isn": {
+ "english_name": "Isanzu"
+ },
+ "ism": {
+ "english_name": "Masimasi"
+ },
+ "isc": {
+ "english_name": "Isconahua"
+ },
+ "xum": {
+ "english_name": "Umbrian"
+ },
+ "isa": {
+ "english_name": "Isabi"
+ },
+ "xuo": {
+ "english_name": "Kuo"
+ },
+ "isg": {
+ "english_name": "Irish Sign Language"
+ },
+ "ise": {
+ "english_name": "Italian Sign Language"
+ },
+ "isd": {
+ "english_name": "Isnag"
+ },
+ "jjr": {
+ "english_name": "Bankal"
+ },
+ "ukq": {
+ "english_name": "Ukwa"
+ },
+ "gyg": {
+ "english_name": "Gbayi"
+ },
+ "gyf": {
+ "english_name": "Gungabula"
+ },
+ "gye": {
+ "english_name": "Gyem"
+ },
+ "gyd": {
+ "english_name": "Kayardild"
+ },
+ "gyb": {
+ "english_name": "Garus"
+ },
+ "gya": {
+ "english_name": "Gbaya, Northwest"
+ },
+ "gyn": {
+ "english_name": "Creole English, Guyanese"
+ },
+ "gym": {
+ "english_name": "Ngäbere"
+ },
+ "gyl": {
+ "english_name": "Gayil"
+ },
+ "gyi": {
+ "english_name": "Gyele"
+ },
+ "gyr": {
+ "english_name": "Guarayu"
+ },
+ "gyy": {
+ "english_name": "Gunya"
+ },
+ "tyl": {
+ "english_name": "Thu Lao"
+ },
+ "tyn": {
+ "english_name": "Kombai"
+ },
+ "tyh": {
+ "english_name": "O'du"
+ },
+ "tyi": {
+ "english_name": "Teke-Tsaayi"
+ },
+ "tyj": {
+ "english_name": "Tai Do"
+ },
+ "tye": {
+ "english_name": "Kyanga"
+ },
+ "tya": {
+ "english_name": "Tauya"
+ },
+ "tyx": {
+ "english_name": "Teke-Tyee"
+ },
+ "tyz": {
+ "english_name": "Tày"
+ },
+ "tyt": {
+ "english_name": "Tày Tac"
+ },
+ "tyu": {
+ "english_name": "Kua"
+ },
+ "tyv": {
+ "english_name": "Tuvinian"
+ },
+ "typ": {
+ "english_name": "Thaypan"
+ },
+ "tyr": {
+ "english_name": "Tai Daeng"
+ },
+ "tys": {
+ "english_name": "Tày Sa Pa"
+ },
+ "dok": {
+ "english_name": "Dondo"
+ },
+ "doh": {
+ "english_name": "Dong"
+ },
+ "doi": {
+ "english_name": "Dogri (macrolanguage)"
+ },
+ "don": {
+ "english_name": "Toura (Papua New Guinea)"
+ },
+ "doo": {
+ "english_name": "Dongo"
+ },
+ "dol": {
+ "english_name": "Doso"
+ },
+ "dob": {
+ "english_name": "Dobu"
+ },
+ "doc": {
+ "english_name": "Dong, Northern"
+ },
+ "doa": {
+ "english_name": "Dom"
+ },
+ "dof": {
+ "english_name": "Domu"
+ },
+ "doe": {
+ "english_name": "Doe"
+ },
+ "doz": {
+ "english_name": "Dorze"
+ },
+ "dox": {
+ "english_name": "Bussa"
+ },
+ "doy": {
+ "english_name": "Dompo"
+ },
+ "dor": {
+ "english_name": "Dori'o"
+ },
+ "dos": {
+ "english_name": "Dogosé"
+ },
+ "dop": {
+ "english_name": "Lukpa"
+ },
+ "doq": {
+ "english_name": "Dominican Sign Language"
+ },
+ "dov": {
+ "english_name": "Dombe"
+ },
+ "dow": {
+ "english_name": "Doyayo"
+ },
+ "dot": {
+ "english_name": "Dass"
+ },
+ "bav": {
+ "english_name": "Vengo"
+ },
+ "baw": {
+ "english_name": "Bambili-Bambui"
+ },
+ "bau": {
+ "english_name": "Bada (Nigeria)"
+ },
+ "bar": {
+ "english_name": "Bavarian"
+ },
+ "bas": {
+ "english_name": "Basa (Cameroon)"
+ },
+ "bap": {
+ "english_name": "Bantawa"
+ },
+ "bax": {
+ "english_name": "Bamun"
+ },
+ "bay": {
+ "english_name": "Batuley"
+ },
+ "baf": {
+ "english_name": "Nubaca"
+ },
+ "bag": {
+ "english_name": "Tuki"
+ },
+ "bae": {
+ "english_name": "Baré"
+ },
+ "bab": {
+ "english_name": "Bainouk-Gunyuño"
+ },
+ "bac": {
+ "english_name": "Badui"
+ },
+ "baa": {
+ "english_name": "Babatana"
+ },
+ "ban": {
+ "english_name": "Balinese"
+ },
+ "bao": {
+ "english_name": "Waimaha"
+ },
+ "bal": {
+ "english_name": "Baluchi"
+ },
+ "baj": {
+ "english_name": "Barakai"
+ },
+ "bah": {
+ "english_name": "Creole English, Bahamas"
+ },
+ "omc": {
+ "english_name": "Mochica"
+ },
+ "omb": {
+ "english_name": "Ambae, East"
+ },
+ "oma": {
+ "english_name": "Omaha-Ponca"
+ },
+ "omg": {
+ "english_name": "Omagua"
+ },
+ "ome": {
+ "english_name": "Omejes"
+ },
+ "omk": {
+ "english_name": "Omok"
+ },
+ "omi": {
+ "english_name": "Omi"
+ },
+ "omo": {
+ "english_name": "Utarmbung"
+ },
+ "omn": {
+ "english_name": "Minoan"
+ },
+ "oml": {
+ "english_name": "Ombo"
+ },
+ "omr": {
+ "english_name": "Marathi, Old"
+ },
+ "omp": {
+ "english_name": "Manipuri, Old"
+ },
+ "omw": {
+ "english_name": "Tairora, South"
+ },
+ "omu": {
+ "english_name": "Omurano"
+ },
+ "omt": {
+ "english_name": "Omotik"
+ },
+ "omx": {
+ "english_name": "Mon, Old"
+ },
+ "unr": {
+ "english_name": "Mundari"
+ },
+ "unu": {
+ "english_name": "Unubahe"
+ },
+ "unx": {
+ "english_name": "Munda"
+ },
+ "unz": {
+ "english_name": "Kaili, Unde"
+ },
+ "fng": {
+ "english_name": "Fanagalo"
+ },
+ "una": {
+ "english_name": "Watut, North"
+ },
+ "und": {
+ "english_name": "Undetermined"
+ },
+ "une": {
+ "english_name": "Uneme"
+ },
+ "ung": {
+ "english_name": "Ngarinyin"
+ },
+ "unk": {
+ "english_name": "Enawené-Nawé"
+ },
+ "unm": {
+ "english_name": "Unami"
+ },
+ "fni": {
+ "english_name": "Fania"
+ },
+ "scg": {
+ "english_name": "Sanggau"
+ },
+ "mco": {
+ "english_name": "Mixe, Coatlán"
+ },
+ "mcn": {
+ "english_name": "Masana"
+ },
+ "mcm": {
+ "english_name": "Creole Portuguese, Malaccan"
+ },
+ "mcl": {
+ "english_name": "Macaguaje"
+ },
+ "mck": {
+ "english_name": "Mbunda"
+ },
+ "mcj": {
+ "english_name": "Mvanip"
+ },
+ "mci": {
+ "english_name": "Mese"
+ },
+ "gli": {
+ "english_name": "Guliguli"
+ },
+ "mcg": {
+ "english_name": "Mapoyo"
+ },
+ "mcf": {
+ "english_name": "Matsés"
+ },
+ "mce": {
+ "english_name": "Mixtec, Itundujia"
+ },
+ "mcd": {
+ "english_name": "Sharanahua"
+ },
+ "mcc": {
+ "english_name": "Bitur"
+ },
+ "glj": {
+ "english_name": "Gula Iro"
+ },
+ "mca": {
+ "english_name": "Maca"
+ },
+ "glk": {
+ "english_name": "Gilaki"
+ },
+ "mcz": {
+ "english_name": "Mawan"
+ },
+ "mcy": {
+ "english_name": "Watut, South"
+ },
+ "mcx": {
+ "english_name": "Mpiemo"
+ },
+ "mcw": {
+ "english_name": "Mawa (Chad)"
+ },
+ "mcv": {
+ "english_name": "Minanibai"
+ },
+ "mcu": {
+ "english_name": "Mambila, Cameroon"
+ },
+ "mct": {
+ "english_name": "Mengisa"
+ },
+ "mcs": {
+ "english_name": "Mambai"
+ },
+ "mcr": {
+ "english_name": "Menya"
+ },
+ "mcq": {
+ "english_name": "Ese"
+ },
+ "mcp": {
+ "english_name": "Makaa"
+ },
+ "slx": {
+ "english_name": "Salampasu"
+ },
+ "sly": {
+ "english_name": "Selayar"
+ },
+ "slz": {
+ "english_name": "Ma'ya"
+ },
+ "slt": {
+ "english_name": "Sila"
+ },
+ "slu": {
+ "english_name": "Selaru"
+ },
+ "slw": {
+ "english_name": "Sialum"
+ },
+ "slp": {
+ "english_name": "Lamaholot"
+ },
+ "slq": {
+ "english_name": "Salchuq"
+ },
+ "slr": {
+ "english_name": "Salar"
+ },
+ "sls": {
+ "english_name": "Singapore Sign Language"
+ },
+ "sll": {
+ "english_name": "Salt-Yui"
+ },
+ "slm": {
+ "english_name": "Sama, Pangutaran"
+ },
+ "sln": {
+ "english_name": "Salinan"
+ },
+ "slh": {
+ "english_name": "Salish, Southern Puget Sound"
+ },
+ "sli": {
+ "english_name": "Silesian, Lower"
+ },
+ "slj": {
+ "english_name": "Salumá"
+ },
+ "sld": {
+ "english_name": "Sissala"
+ },
+ "sle": {
+ "english_name": "Sholaga"
+ },
+ "slf": {
+ "english_name": "Swiss-Italian Sign Language"
+ },
+ "slg": {
+ "english_name": "Selungai Murut"
+ },
+ "slc": {
+ "english_name": "Sáliba"
+ },
+ "glc": {
+ "english_name": "Bon Gula"
+ },
+ "gld": {
+ "english_name": "Nanai"
+ },
+ "is": {
+ "name": "Íslenska",
+ "english_name": "Icelandic"
+ },
+ "iu": {
+ "english_name": "Inuktitut"
+ },
+ "it": {
+ "name": "Italiano",
+ "english_name": "Italian"
+ },
+ "ii": {
+ "english_name": "Yi, Sichuan"
+ },
+ "ik": {
+ "english_name": "Inupiaq"
+ },
+ "io": {
+ "english_name": "Ido"
+ },
+ "ia": {
+ "english_name": "Interlingua (International Auxiliary Language Association)"
+ },
+ "ie": {
+ "english_name": "Interlingue"
+ },
+ "id": {
+ "name": "Indonesian",
+ "english_name": "Indonesian"
+ },
+ "ig": {
+ "english_name": "Igbo"
+ },
+ "gly": {
+ "english_name": "Gule"
+ },
+ "sav": {
+ "english_name": "Saafi-Saafi"
+ },
+ "swr": {
+ "english_name": "Saweru"
+ },
+ "wdu": {
+ "english_name": "Wadjigu"
+ },
+ "kiz": {
+ "english_name": "Kisi"
+ },
+ "kiy": {
+ "english_name": "Kirikiri"
+ },
+ "kix": {
+ "english_name": "Naga, Khiamniungan"
+ },
+ "kis": {
+ "english_name": "Kis"
+ },
+ "kiq": {
+ "english_name": "Kosadle"
+ },
+ "kip": {
+ "english_name": "Kham, Sheshi"
+ },
+ "kiw": {
+ "english_name": "Kiwai, Northeast"
+ },
+ "kiv": {
+ "english_name": "Kimbu"
+ },
+ "kiu": {
+ "english_name": "Kirmanjki (individual language)"
+ },
+ "kit": {
+ "english_name": "Agob"
+ },
+ "kij": {
+ "english_name": "Kilivila"
+ },
+ "kii": {
+ "english_name": "Kitsai"
+ },
+ "kih": {
+ "english_name": "Kilmeri"
+ },
+ "kio": {
+ "english_name": "Kiowa"
+ },
+ "kim": {
+ "english_name": "Karagas"
+ },
+ "kil": {
+ "english_name": "Kariya"
+ },
+ "kic": {
+ "english_name": "Kickapoo"
+ },
+ "kib": {
+ "english_name": "Koalib"
+ },
+ "kia": {
+ "english_name": "Kim"
+ },
+ "kig": {
+ "english_name": "Kimaama"
+ },
+ "kif": {
+ "english_name": "Kham, Eastern Parbate"
+ },
+ "kie": {
+ "english_name": "Kibet"
+ },
+ "kid": {
+ "english_name": "Koshin"
+ },
+ "xjb": {
+ "english_name": "Minjungbal"
+ },
+ "glu": {
+ "english_name": "Gula (Chad)"
+ },
+ "xjt": {
+ "english_name": "Jaitmatang"
+ },
+ "glw": {
+ "english_name": "Glavda"
+ },
+ "yei": {
+ "english_name": "Yeni"
+ },
+ "yej": {
+ "english_name": "Yevanic"
+ },
+ "yel": {
+ "english_name": "Yela"
+ },
+ "yea": {
+ "english_name": "Ravula"
+ },
+ "yec": {
+ "english_name": "Yeniche"
+ },
+ "yee": {
+ "english_name": "Yimas"
+ },
+ "yey": {
+ "english_name": "Yeyi"
+ },
+ "yes": {
+ "english_name": "Nyankpa"
+ },
+ "yer": {
+ "english_name": "Tarok"
+ },
+ "yeu": {
+ "english_name": "Yerukula"
+ },
+ "yet": {
+ "english_name": "Yetfa"
+ },
+ "yev": {
+ "english_name": "Yapunda"
+ },
+ "opt": {
+ "english_name": "Opata"
+ },
+ "opy": {
+ "english_name": "Ofayé"
+ },
+ "opa": {
+ "english_name": "Okpamheri"
+ },
+ "opm": {
+ "english_name": "Oksapmin"
+ },
+ "opo": {
+ "english_name": "Opao"
+ },
+ "opk": {
+ "english_name": "Kopkaka"
+ },
+ "www": {
+ "english_name": "Wawa"
+ },
+ "wwr": {
+ "english_name": "Warrwa"
+ },
+ "wwa": {
+ "english_name": "Waama"
+ },
+ "wwb": {
+ "english_name": "Wakabunga"
+ },
+ "wwo": {
+ "english_name": "Wetamut"
+ },
+ "zuy": {
+ "english_name": "Zumaya"
+ },
+ "zua": {
+ "english_name": "Zeem"
+ },
+ "zuh": {
+ "english_name": "Tokano"
+ },
+ "zun": {
+ "english_name": "Zuni"
+ },
+ "zum": {
+ "english_name": "Kumzari"
+ },
+ "iqu": {
+ "english_name": "Iquito"
+ },
+ "xww": {
+ "english_name": "Wemba Wemba"
+ },
+ "iqw": {
+ "english_name": "Ikwo"
+ },
+ "xwr": {
+ "english_name": "Kwerba Mamberamo"
+ },
+ "xwo": {
+ "english_name": "Oirat, Written"
+ },
+ "xwl": {
+ "english_name": "Gbe, Western Xwla"
+ },
+ "xwj": {
+ "english_name": "Wajuk"
+ },
+ "xwk": {
+ "english_name": "Wangkumara"
+ },
+ "xwg": {
+ "english_name": "Kwegu"
+ },
+ "xwd": {
+ "english_name": "Wadi Wadi"
+ },
+ "xwe": {
+ "english_name": "Gbe, Xwela"
+ },
+ "xwc": {
+ "english_name": "Woccon"
+ },
+ "xwa": {
+ "english_name": "Kwaza"
+ },
+ "rnp": {
+ "english_name": "Rongpo"
+ },
+ "fse": {
+ "english_name": "Finnish Sign Language"
+ },
+ "fsl": {
+ "english_name": "French Sign Language"
+ },
+ "fss": {
+ "english_name": "Finland-Swedish Sign Language"
+ },
+ "tnu": {
+ "english_name": "Tay Khang"
+ },
+ "tnv": {
+ "english_name": "Tangchangya"
+ },
+ "dil": {
+ "english_name": "Dilling"
+ },
+ "dim": {
+ "english_name": "Dime"
+ },
+ "din": {
+ "english_name": "Dinka"
+ },
+ "dio": {
+ "english_name": "Dibo"
+ },
+ "dih": {
+ "english_name": "Kumiai"
+ },
+ "dii": {
+ "english_name": "Dimbong"
+ },
+ "dij": {
+ "english_name": "Dai"
+ },
+ "dik": {
+ "english_name": "Dinka, Southwestern"
+ },
+ "jhi": {
+ "english_name": "Jehai"
+ },
+ "dif": {
+ "english_name": "Dieri"
+ },
+ "dig": {
+ "english_name": "Digo"
+ },
+ "dia": {
+ "english_name": "Dia"
+ },
+ "dib": {
+ "english_name": "Dinka, South Central"
+ },
+ "dic": {
+ "english_name": "Dida, Lakota"
+ },
+ "jhs": {
+ "english_name": "Jhankot Sign Language"
+ },
+ "dix": {
+ "english_name": "Dixon Reef"
+ },
+ "diy": {
+ "english_name": "Diuwe"
+ },
+ "diz": {
+ "english_name": "Ding"
+ },
+ "dit": {
+ "english_name": "Dirari"
+ },
+ "diu": {
+ "english_name": "Diriku"
+ },
+ "diw": {
+ "english_name": "Dinka, Northwestern"
+ },
+ "dip": {
+ "english_name": "Dinka, Northeastern"
+ },
+ "diq": {
+ "english_name": "Dimli (individual language)"
+ },
+ "dir": {
+ "english_name": "Dirim"
+ },
+ "dis": {
+ "english_name": "Dimasa"
+ },
+ "ruh": {
+ "english_name": "Ruga"
+ },
+ "rub": {
+ "english_name": "Gungu"
+ },
+ "box": {
+ "english_name": "Buamu"
+ },
+ "boy": {
+ "english_name": "Bodo (Central African Republic)"
+ },
+ "hbo": {
+ "english_name": "Hebrew, Ancient"
+ },
+ "hbn": {
+ "english_name": "Heiban"
+ },
+ "bop": {
+ "english_name": "Bonkiman"
+ },
+ "boq": {
+ "english_name": "Bogaya"
+ },
+ "bor": {
+ "english_name": "Borôro"
+ },
+ "bot": {
+ "english_name": "Bongo"
+ },
+ "bou": {
+ "english_name": "Bondei"
+ },
+ "bov": {
+ "english_name": "Tuwuli"
+ },
+ "bow": {
+ "english_name": "Rema"
+ },
+ "boh": {
+ "english_name": "Boma"
+ },
+ "boi": {
+ "english_name": "Barbareño"
+ },
+ "boj": {
+ "english_name": "Anjam"
+ },
+ "bok": {
+ "english_name": "Bonjo"
+ },
+ "bol": {
+ "english_name": "Bole"
+ },
+ "bom": {
+ "english_name": "Berom"
+ },
+ "bon": {
+ "english_name": "Bine"
+ },
+ "boo": {
+ "english_name": "Bozo, Tiemacèwè"
+ },
+ "hbu": {
+ "english_name": "Habu"
+ },
+ "boa": {
+ "english_name": "Bora"
+ },
+ "bob": {
+ "english_name": "Aweer"
+ },
+ "boe": {
+ "english_name": "Mundabli"
+ },
+ "bof": {
+ "english_name": "Bolon"
+ },
+ "bog": {
+ "english_name": "Bamako Sign Language"
+ },
+ "qvn": {
+ "english_name": "Quechua, North Junín"
+ },
+ "qvo": {
+ "english_name": "Quechua, Napo Lowland"
+ },
+ "ayl": {
+ "english_name": "Arabic, Libyan"
+ },
+ "ayo": {
+ "english_name": "Ayoreo"
+ },
+ "ayn": {
+ "english_name": "Arabic, Sanaani"
+ },
+ "ayi": {
+ "english_name": "Leyigha"
+ },
+ "ayh": {
+ "english_name": "Arabic, Hadrami"
+ },
+ "ayk": {
+ "english_name": "Akuku"
+ },
+ "aye": {
+ "english_name": "Ayere"
+ },
+ "ayd": {
+ "english_name": "Ayabadhu"
+ },
+ "ayg": {
+ "english_name": "Ginyanga"
+ },
+ "aya": {
+ "english_name": "Awar"
+ },
+ "ayc": {
+ "english_name": "Aymara, Southern"
+ },
+ "ayb": {
+ "english_name": "Gbe, Ayizo"
+ },
+ "ayy": {
+ "english_name": "Ayta, Tayabas"
+ },
+ "ayz": {
+ "english_name": "Mai Brat"
+ },
+ "ayu": {
+ "english_name": "Ayu"
+ },
+ "ayt": {
+ "english_name": "Ayta, Magbukun"
+ },
+ "ayq": {
+ "english_name": "Ayi (Papua New Guinea)"
+ },
+ "ayp": {
+ "english_name": "Arabic, North Mesopotamian"
+ },
+ "ays": {
+ "english_name": "Ayta, Sorsogon"
+ },
+ "ayr": {
+ "english_name": "Aymara, Central"
+ },
+ "ood": {
+ "english_name": "Tohono O'odham"
+ },
+ "oog": {
+ "english_name": "Ong"
+ },
+ "oon": {
+ "english_name": "Önge"
+ },
+ "oos": {
+ "english_name": "Ossetic, Old"
+ },
+ "oor": {
+ "english_name": "Oorlams"
+ },
+ "qvi": {
+ "english_name": "Quichua, Imbabura Highland"
+ },
+ "fly": {
+ "english_name": "Tsotsitaal"
+ },
+ "tby": {
+ "english_name": "Tabaru"
+ },
+ "flr": {
+ "english_name": "Fuliiru"
+ },
+ "ulw": {
+ "english_name": "Ulwa"
+ },
+ "ulu": {
+ "english_name": "Uma' Lung"
+ },
+ "fli": {
+ "english_name": "Fali"
+ },
+ "flh": {
+ "english_name": "Foau"
+ },
+ "uli": {
+ "english_name": "Ulithian"
+ },
+ "uln": {
+ "english_name": "Unserdeutsch"
+ },
+ "fll": {
+ "english_name": "Fali, North"
+ },
+ "ull": {
+ "english_name": "Ullatan"
+ },
+ "fln": {
+ "english_name": "Flinders Island"
+ },
+ "fla": {
+ "english_name": "Kalispel-Pend d'Oreille"
+ },
+ "ulc": {
+ "english_name": "Ulch"
+ },
+ "ula": {
+ "english_name": "Fungwa"
+ },
+ "ulf": {
+ "english_name": "Usku"
+ },
+ "bgj": {
+ "english_name": "Bangolan"
+ },
+ "ule": {
+ "english_name": "Lule"
+ },
+ "bgk": {
+ "english_name": "Bit"
+ },
+ "tbx": {
+ "english_name": "Kapin"
+ },
+ "bgl": {
+ "english_name": "Bo (Laos)"
+ },
+ "bgm": {
+ "english_name": "Baga Mboteni"
+ },
+ "nyx": {
+ "english_name": "Nganyaywana"
+ },
+ "nyy": {
+ "english_name": "Nyakyusa-Ngonde"
+ },
+ "nyr": {
+ "english_name": "Nyiha (Malawi)"
+ },
+ "nys": {
+ "english_name": "Nyunga"
+ },
+ "nyp": {
+ "english_name": "Nyang'i"
+ },
+ "nyq": {
+ "english_name": "Nayini"
+ },
+ "nyv": {
+ "english_name": "Nyulnyul"
+ },
+ "nyw": {
+ "english_name": "Nyaw"
+ },
+ "nyt": {
+ "english_name": "Nyawaygi"
+ },
+ "nyu": {
+ "english_name": "Nyungwe"
+ },
+ "nyj": {
+ "english_name": "Nyanga"
+ },
+ "nyk": {
+ "english_name": "Nyaneka"
+ },
+ "nyh": {
+ "english_name": "Nyigina"
+ },
+ "nyi": {
+ "english_name": "Ama (Sudan)"
+ },
+ "nyn": {
+ "english_name": "Nyankole"
+ },
+ "nyo": {
+ "english_name": "Nyoro"
+ },
+ "nyl": {
+ "english_name": "Nyeu"
+ },
+ "nym": {
+ "english_name": "Nyamwezi"
+ },
+ "nyb": {
+ "english_name": "Nyangbo"
+ },
+ "nyc": {
+ "english_name": "Nyanga-li"
+ },
+ "nyf": {
+ "english_name": "Giryama"
+ },
+ "nyg": {
+ "english_name": "Nyindu"
+ },
+ "nyd": {
+ "english_name": "Nyore"
+ },
+ "nye": {
+ "english_name": "Nyengo"
+ },
+ "maq": {
+ "english_name": "Mazatec, Chiquihuitlán"
+ },
+ "sng": {
+ "english_name": "Sanga (Democratic Republic of Congo)"
+ },
+ "mas": {
+ "english_name": "Masai"
+ },
+ "sne": {
+ "english_name": "Bidayuh, Bau"
+ },
+ "mau": {
+ "english_name": "Mazatec, Huautla"
+ },
+ "mat": {
+ "english_name": "Matlatzinca, San Francisco"
+ },
+ "maw": {
+ "english_name": "Mampruli"
+ },
+ "mav": {
+ "english_name": "Sateré-Mawé"
+ },
+ "snn": {
+ "english_name": "Siona"
+ },
+ "max": {
+ "english_name": "Malay, North Moluccan"
+ },
+ "snl": {
+ "english_name": "Sangil"
+ },
+ "maz": {
+ "english_name": "Mazahua, Central"
+ },
+ "snj": {
+ "english_name": "Sango, Riverain"
+ },
+ "snk": {
+ "english_name": "Soninke"
+ },
+ "snh": {
+ "english_name": "Shinabo"
+ },
+ "sni": {
+ "english_name": "Sensi"
+ },
+ "maa": {
+ "english_name": "Mazatec, San Jerónimo Tecóatl"
+ },
+ "snw": {
+ "english_name": "Selee"
+ },
+ "mab": {
+ "english_name": "Mixtec, Yutanduchi"
+ },
+ "mae": {
+ "english_name": "Bo-Rukul"
+ },
+ "mad": {
+ "english_name": "Madurese"
+ },
+ "mag": {
+ "english_name": "Magahi"
+ },
+ "maf": {
+ "english_name": "Mafa"
+ },
+ "mai": {
+ "english_name": "Maithili"
+ },
+ "mak": {
+ "english_name": "Makasar"
+ },
+ "maj": {
+ "english_name": "Mazatec, Jalapa De Díaz"
+ },
+ "mam": {
+ "english_name": "Mam"
+ },
+ "bgz": {
+ "english_name": "Banggai"
+ },
+ "snx": {
+ "english_name": "Sam"
+ },
+ "man": {
+ "english_name": "Mandingo"
+ },
+ "zna": {
+ "english_name": "Zan Gula"
+ },
+ "zng": {
+ "english_name": "Mang"
+ },
+ "zne": {
+ "english_name": "Zande (individual language)"
+ },
+ "znk": {
+ "english_name": "Manangkari"
+ },
+ "zns": {
+ "english_name": "Mangas"
+ },
+ "lsg": {
+ "english_name": "Lyons Sign Language"
+ },
+ "lsd": {
+ "english_name": "Lishana Deni"
+ },
+ "lse": {
+ "english_name": "Lusengo"
+ },
+ "lsa": {
+ "english_name": "Lasgerdi"
+ },
+ "lso": {
+ "english_name": "Laos Sign Language"
+ },
+ "lsl": {
+ "english_name": "Latvian Sign Language"
+ },
+ "lsm": {
+ "english_name": "Saamia"
+ },
+ "lsh": {
+ "english_name": "Lish"
+ },
+ "lsi": {
+ "english_name": "Lashi"
+ },
+ "lst": {
+ "english_name": "Trinidad and Tobago Sign Language"
+ },
+ "lsr": {
+ "english_name": "Aruop"
+ },
+ "lss": {
+ "english_name": "Lasi"
+ },
+ "lsp": {
+ "english_name": "Panamanian Sign Language"
+ },
+ "lsy": {
+ "english_name": "Mauritian Sign Language"
+ },
+ "kky": {
+ "english_name": "Guguyimidjir"
+ },
+ "kkx": {
+ "english_name": "Kohin"
+ },
+ "kkz": {
+ "english_name": "Kaska"
+ },
+ "kku": {
+ "english_name": "Tumi"
+ },
+ "kkt": {
+ "english_name": "Koi"
+ },
+ "kkw": {
+ "english_name": "Teke-Kukuya"
+ },
+ "kkv": {
+ "english_name": "Kangean"
+ },
+ "kkq": {
+ "english_name": "Kaiku"
+ },
+ "kkp": {
+ "english_name": "Gugubera"
+ },
+ "kks": {
+ "english_name": "Giiwo"
+ },
+ "kkr": {
+ "english_name": "Kir-Balar"
+ },
+ "kkm": {
+ "english_name": "Kiong"
+ },
+ "kkl": {
+ "english_name": "Yale, Kosarek"
+ },
+ "kko": {
+ "english_name": "Karko"
+ },
+ "kkn": {
+ "english_name": "Kon Keu"
+ },
+ "kki": {
+ "english_name": "Kagulu"
+ },
+ "kkh": {
+ "english_name": "Khün"
+ },
+ "kkk": {
+ "english_name": "Kokota"
+ },
+ "kkj": {
+ "english_name": "Kako"
+ },
+ "kke": {
+ "english_name": "Kakabe"
+ },
+ "kkd": {
+ "english_name": "Kinuku"
+ },
+ "kkg": {
+ "english_name": "Kalinga, Mabaka Valley"
+ },
+ "kkf": {
+ "english_name": "Monpa, Kalaktang"
+ },
+ "kka": {
+ "english_name": "Kakanda"
+ },
+ "kkc": {
+ "english_name": "Odoodee"
+ },
+ "kkb": {
+ "english_name": "Kwerisa"
+ },
+ "xlo": {
+ "english_name": "Loup A"
+ },
+ "xln": {
+ "english_name": "Alanic"
+ },
+ "xli": {
+ "english_name": "Liburnian"
+ },
+ "xlg": {
+ "english_name": "Ligurian (Ancient)"
+ },
+ "xle": {
+ "english_name": "Lemnian"
+ },
+ "xld": {
+ "english_name": "Lydian"
+ },
+ "xlc": {
+ "english_name": "Lycian"
+ },
+ "xlb": {
+ "english_name": "Loup B"
+ },
+ "xla": {
+ "english_name": "Kamula"
+ },
+ "xly": {
+ "english_name": "Elymian"
+ },
+ "xlu": {
+ "english_name": "Luwian, Cuneiform"
+ },
+ "xls": {
+ "english_name": "Lusitanian"
+ },
+ "xlp": {
+ "english_name": "Lepontic"
+ },
+ "orz": {
+ "english_name": "Ormu"
+ },
+ "orx": {
+ "english_name": "Oro"
+ },
+ "ory": {
+ "english_name": "Oriya (individual language)"
+ },
+ "orv": {
+ "english_name": "Russian, Old"
+ },
+ "orw": {
+ "english_name": "Oro Win"
+ },
+ "ort": {
+ "english_name": "Oriya, Adivasi"
+ },
+ "oru": {
+ "english_name": "Ormuri"
+ },
+ "orr": {
+ "english_name": "Oruma"
+ },
+ "ors": {
+ "english_name": "Orang Seletar"
+ },
+ "orn": {
+ "english_name": "Orang Kanaq"
+ },
+ "oro": {
+ "english_name": "Orokolo"
+ },
+ "orh": {
+ "english_name": "Oroqen"
+ },
+ "org": {
+ "english_name": "Oring"
+ },
+ "ore": {
+ "english_name": "Orejón"
+ },
+ "orc": {
+ "english_name": "Orma"
+ },
+ "ora": {
+ "english_name": "Oroha"
+ },
+ "xpm": {
+ "english_name": "Pumpokol"
+ },
+ "zsu": {
+ "english_name": "Sukurum"
+ },
+ "zsr": {
+ "english_name": "Zapotec, Southern Rincon"
+ },
+ "zsa": {
+ "english_name": "Sarasira"
+ },
+ "zsl": {
+ "english_name": "Zambian Sign Language"
+ },
+ "zsm": {
+ "english_name": "Malay, Standard"
+ },
+ "zsk": {
+ "english_name": "Kaskean"
+ },
+ "iwo": {
+ "english_name": "Iwur"
+ },
+ "iwm": {
+ "english_name": "Iwam"
+ },
+ "iwk": {
+ "english_name": "I-Wak"
+ },
+ "iws": {
+ "english_name": "Iwam, Sepik"
+ },
+ "pwg": {
+ "english_name": "Gapapaiwa"
+ },
+ "pwn": {
+ "english_name": "Paiwan"
+ },
+ "pwm": {
+ "english_name": "Molbog"
+ },
+ "ges": {
+ "english_name": "Geser-Gorom"
+ },
+ "geq": {
+ "english_name": "Geme"
+ },
+ "gew": {
+ "english_name": "Gera"
+ },
+ "gez": {
+ "name": "ግዕዝኛ",
+ "english_name": "Geez"
+ },
+ "gey": {
+ "english_name": "Enya"
+ },
+ "gex": {
+ "english_name": "Garre"
+ },
+ "gec": {
+ "english_name": "Grebo, Gboloo"
+ },
+ "geb": {
+ "english_name": "Kire"
+ },
+ "gea": {
+ "english_name": "Geruma"
+ },
+ "geg": {
+ "english_name": "Gengle"
+ },
+ "ged": {
+ "english_name": "Gade"
+ },
+ "gek": {
+ "english_name": "Yiwom"
+ },
+ "gej": {
+ "english_name": "Gen"
+ },
+ "gei": {
+ "english_name": "Gebe"
+ },
+ "geh": {
+ "english_name": "German, Hutterite"
+ },
+ "gel": {
+ "english_name": "ut-Ma'in"
+ },
+ "fqs": {
+ "english_name": "Fas"
+ },
+ "tuy": {
+ "english_name": "Tugen"
+ },
+ "ain": {
+ "english_name": "Ainu (Japan)"
+ },
+ "tux": {
+ "english_name": "Tuxináwa"
+ },
+ "ima": {
+ "english_name": "Malasar, Mala"
+ },
+ "tuz": {
+ "english_name": "Turka"
+ },
+ "tuq": {
+ "english_name": "Tedaga"
+ },
+ "jv": {
+ "english_name": "Javanese"
+ },
+ "tus": {
+ "english_name": "Tuscarora"
+ },
+ "tuu": {
+ "english_name": "Tututni"
+ },
+ "tuv": {
+ "english_name": "Turkana"
+ },
+ "tuh": {
+ "english_name": "Taulil"
+ },
+ "tui": {
+ "english_name": "Tupuri"
+ },
+ "tuj": {
+ "english_name": "Tugutil"
+ },
+ "tul": {
+ "english_name": "Tula"
+ },
+ "tum": {
+ "english_name": "Tumbuka"
+ },
+ "tun": {
+ "english_name": "Tunica"
+ },
+ "tuo": {
+ "english_name": "Tucano"
+ },
+ "tua": {
+ "english_name": "Wiarumus"
+ },
+ "tub": {
+ "english_name": "Tübatulabal"
+ },
+ "tuc": {
+ "english_name": "Mutu"
+ },
+ "tud": {
+ "english_name": "Tuxá"
+ },
+ "ja": {
+ "name": "日本語",
+ "english_name": "Japanese"
+ },
+ "tuf": {
+ "english_name": "Tunebo, Central"
+ },
+ "tug": {
+ "english_name": "Tunia"
+ },
+ "dkr": {
+ "english_name": "Kuijau"
+ },
+ "dks": {
+ "english_name": "Dinka, Southeastern"
+ },
+ "dkx": {
+ "english_name": "Mazagway"
+ },
+ "imi": {
+ "english_name": "Anamgura"
+ },
+ "dka": {
+ "english_name": "Dakpakha"
+ },
+ "dkk": {
+ "english_name": "Dakka"
+ },
+ "iml": {
+ "english_name": "Miluk"
+ },
+ "imn": {
+ "english_name": "Imonda"
+ },
+ "cqd": {
+ "english_name": "Miao, Chuanqiandian Cluster"
+ },
+ "cqu": {
+ "english_name": "Quechua, Chilean"
+ },
+ "bmb": {
+ "english_name": "Bembe"
+ },
+ "bmc": {
+ "english_name": "Biem"
+ },
+ "bma": {
+ "english_name": "Lame"
+ },
+ "bmf": {
+ "english_name": "Bom"
+ },
+ "bmg": {
+ "english_name": "Bamwe"
+ },
+ "bmd": {
+ "english_name": "Manduri, Baga"
+ },
+ "bme": {
+ "english_name": "Limassa"
+ },
+ "bmj": {
+ "english_name": "Bote-Majhi"
+ },
+ "bmk": {
+ "english_name": "Ghayavi"
+ },
+ "bmh": {
+ "english_name": "Kein"
+ },
+ "bmi": {
+ "english_name": "Bagirmi"
+ },
+ "bmn": {
+ "english_name": "Bina (Papua New Guinea)"
+ },
+ "bmo": {
+ "english_name": "Bambalang"
+ },
+ "bml": {
+ "english_name": "Bomboli"
+ },
+ "bmm": {
+ "english_name": "Malagasy, Northern Betsimisaraka"
+ },
+ "bmr": {
+ "english_name": "Muinane"
+ },
+ "bms": {
+ "english_name": "Kanuri, Bilma"
+ },
+ "bmp": {
+ "english_name": "Bulgebi"
+ },
+ "bmq": {
+ "english_name": "Bomu"
+ },
+ "bmv": {
+ "english_name": "Bum"
+ },
+ "bmw": {
+ "english_name": "Bomwali"
+ },
+ "bmt": {
+ "english_name": "Biao Mon"
+ },
+ "bmu": {
+ "english_name": "Somba-Siawari"
+ },
+ "bmz": {
+ "english_name": "Baramu"
+ },
+ "bmx": {
+ "english_name": "Baimak"
+ },
+ "hds": {
+ "english_name": "Honduras Sign Language"
+ },
+ "hdy": {
+ "english_name": "Hadiyya"
+ },
+ "hdn": {
+ "english_name": "Haida, Northern"
+ },
+ "pap": {
+ "english_name": "Papiamento"
+ },
+ "paq": {
+ "english_name": "Parya"
+ },
+ "par": {
+ "english_name": "Panamint"
+ },
+ "pas": {
+ "english_name": "Papasena"
+ },
+ "pat": {
+ "english_name": "Papitalai"
+ },
+ "pau": {
+ "english_name": "Palauan"
+ },
+ "pav": {
+ "english_name": "Pakaásnovos"
+ },
+ "paw": {
+ "english_name": "Pawnee"
+ },
+ "pax": {
+ "english_name": "Pankararé"
+ },
+ "pay": {
+ "english_name": "Pech"
+ },
+ "paz": {
+ "english_name": "Pankararú"
+ },
+ "pab": {
+ "english_name": "Parecís"
+ },
+ "pac": {
+ "english_name": "Pacoh"
+ },
+ "pad": {
+ "english_name": "Paumarí"
+ },
+ "pae": {
+ "english_name": "Pagibete"
+ },
+ "paf": {
+ "english_name": "Paranawát"
+ },
+ "pag": {
+ "english_name": "Pangasinan"
+ },
+ "pah": {
+ "english_name": "Tenharim"
+ },
+ "pai": {
+ "english_name": "Pe"
+ },
+ "pak": {
+ "english_name": "Parakanã"
+ },
+ "pal": {
+ "english_name": "Pahlavi"
+ },
+ "pam": {
+ "english_name": "Pampanga"
+ },
+ "pao": {
+ "english_name": "Paiute, Northern"
+ },
+ "oin": {
+ "english_name": "One, Inebu"
+ },
+ "oia": {
+ "english_name": "Oirata"
+ },
+ "uji": {
+ "english_name": "Tanjijili"
+ },
+ "moz": {
+ "english_name": "Mukulu"
+ },
+ "moy": {
+ "english_name": "Shekkacho"
+ },
+ "mox": {
+ "english_name": "Molima"
+ },
+ "mos": {
+ "english_name": "Mossi"
+ },
+ "mor": {
+ "english_name": "Moro"
+ },
+ "moq": {
+ "english_name": "Mor (Bomberai Peninsula)"
+ },
+ "mop": {
+ "english_name": "Mopán Maya"
+ },
+ "mow": {
+ "english_name": "Moi (Congo)"
+ },
+ "mov": {
+ "english_name": "Mohave"
+ },
+ "mou": {
+ "english_name": "Mogum"
+ },
+ "mot": {
+ "english_name": "Barí"
+ },
+ "mok": {
+ "english_name": "Morori"
+ },
+ "moj": {
+ "english_name": "Monzombo"
+ },
+ "moi": {
+ "english_name": "Mboi"
+ },
+ "moh": {
+ "english_name": "Mohawk"
+ },
+ "moo": {
+ "english_name": "Monom"
+ },
+ "mom": {
+ "english_name": "Mangue"
+ },
+ "moc": {
+ "english_name": "Mocoví"
+ },
+ "moa": {
+ "english_name": "Mwan"
+ },
+ "mog": {
+ "english_name": "Mongondow"
+ },
+ "moe": {
+ "english_name": "Montagnais"
+ },
+ "mod": {
+ "english_name": "Mobilian"
+ },
+ "zlm": {
+ "english_name": "Malay (individual language)"
+ },
+ "zln": {
+ "english_name": "Zhuang, Lianshan"
+ },
+ "zlj": {
+ "english_name": "Zhuang, Liujiang"
+ },
+ "zlq": {
+ "english_name": "Zhuang, Liuqian"
+ },
+ "kmg": {
+ "english_name": "Kâte"
+ },
+ "kmf": {
+ "english_name": "Kare (Papua New Guinea)"
+ },
+ "kme": {
+ "english_name": "Bakole"
+ },
+ "kmd": {
+ "english_name": "Kalinga, Majukayang"
+ },
+ "kmc": {
+ "english_name": "Dong, Southern"
+ },
+ "kmb": {
+ "english_name": "Kimbundu"
+ },
+ "kma": {
+ "english_name": "Konni"
+ },
+ "kmo": {
+ "english_name": "Kwoma"
+ },
+ "kmn": {
+ "english_name": "Awtuw"
+ },
+ "kmm": {
+ "english_name": "Kom (India)"
+ },
+ "kml": {
+ "english_name": "Kalinga, Tanudan"
+ },
+ "kmk": {
+ "english_name": "Kalinga, Limos"
+ },
+ "kmj": {
+ "english_name": "Kumarbhag Paharia"
+ },
+ "kmi": {
+ "english_name": "Kami (Nigeria)"
+ },
+ "kmh": {
+ "english_name": "Kalam"
+ },
+ "kmw": {
+ "english_name": "Komo (Democratic Republic of Congo)"
+ },
+ "kmv": {
+ "english_name": "Creole French, Karipúna"
+ },
+ "kmu": {
+ "english_name": "Kanite"
+ },
+ "kmt": {
+ "english_name": "Kemtuik"
+ },
+ "kms": {
+ "english_name": "Kamasau"
+ },
+ "kmr": {
+ "english_name": "Kurdish, Northern"
+ },
+ "kmq": {
+ "english_name": "Kwama"
+ },
+ "kmp": {
+ "english_name": "Gimme"
+ },
+ "kmz": {
+ "english_name": "Khorasani Turkish"
+ },
+ "kmy": {
+ "english_name": "Koma"
+ },
+ "kmx": {
+ "english_name": "Waboda"
+ },
+ "xns": {
+ "english_name": "Kanashi"
+ },
+ "xnr": {
+ "english_name": "Kangri"
+ },
+ "xnu": {
+ "english_name": "Nukunul"
+ },
+ "xnt": {
+ "english_name": "Narragansett"
+ },
+ "xny": {
+ "english_name": "Nyiyaparli"
+ },
+ "xnz": {
+ "english_name": "Kenzi"
+ },
+ "xna": {
+ "english_name": "North Arabian, Ancient"
+ },
+ "xnb": {
+ "english_name": "Kanakanabu"
+ },
+ "xng": {
+ "english_name": "Mongolian, Middle"
+ },
+ "xni": {
+ "english_name": "Ngarigu"
+ },
+ "xnh": {
+ "english_name": "Kuanhua"
+ },
+ "xnk": {
+ "english_name": "Nganakarti"
+ },
+ "xno": {
+ "english_name": "Anglo-Norman"
+ },
+ "xnn": {
+ "english_name": "Kankanay, Northern"
+ },
+ "yyu": {
+ "english_name": "Yau (Sandaun Province)"
+ },
+ "yyr": {
+ "english_name": "Yir Yoront"
+ },
+ "yyz": {
+ "english_name": "Ayizi"
+ },
+ "svb": {
+ "english_name": "Ulau-Suain"
+ },
+ "goo": {
+ "english_name": "Gone Dau"
+ },
+ "goe": {
+ "english_name": "Gongduk"
+ },
+ "zqe": {
+ "english_name": "Zhuang, Qiubei"
+ },
+ "goa": {
+ "english_name": "Guro"
+ },
+ "gob": {
+ "english_name": "Playero"
+ },
+ "ium": {
+ "english_name": "Mien, Iu"
+ },
+ "got": {
+ "english_name": "Gothic"
+ },
+ "wsa": {
+ "english_name": "Warembori"
+ },
+ "hya": {
+ "english_name": "Hya"
+ },
+ "wsi": {
+ "english_name": "Wusi"
+ },
+ "wsk": {
+ "english_name": "Waskia"
+ },
+ "wss": {
+ "english_name": "Wasa"
+ },
+ "wsr": {
+ "english_name": "Owenia"
+ },
+ "wsu": {
+ "english_name": "Wasu"
+ },
+ "wsv": {
+ "english_name": "Wotapuri-Katarqalai"
+ },
+ "gor": {
+ "english_name": "Gorontalo"
+ },
+ "aba": {
+ "english_name": "Abé"
+ },
+ "abb": {
+ "english_name": "Bankon"
+ },
+ "abc": {
+ "english_name": "Ayta, Ambala"
+ },
+ "abd": {
+ "english_name": "Manide"
+ },
+ "abe": {
+ "english_name": "Abnaki, Western"
+ },
+ "abf": {
+ "english_name": "Abai Sungai"
+ },
+ "abg": {
+ "english_name": "Abaga"
+ },
+ "abh": {
+ "english_name": "Arabic, Tajiki"
+ },
+ "abi": {
+ "english_name": "Abidji"
+ },
+ "abj": {
+ "english_name": "Aka-Bea"
+ },
+ "abl": {
+ "english_name": "Lampung Nyo"
+ },
+ "abm": {
+ "english_name": "Abanyom"
+ },
+ "abn": {
+ "english_name": "Abua"
+ },
+ "abo": {
+ "english_name": "Abon"
+ },
+ "abp": {
+ "english_name": "Ayta, Abellen"
+ },
+ "abq": {
+ "english_name": "Abaza"
+ },
+ "abr": {
+ "english_name": "Abron"
+ },
+ "abs": {
+ "english_name": "Malay, Ambonese"
+ },
+ "abt": {
+ "english_name": "Ambulas"
+ },
+ "abu": {
+ "english_name": "Abure"
+ },
+ "abv": {
+ "english_name": "Arabic, Baharna"
+ },
+ "abw": {
+ "english_name": "Pal"
+ },
+ "abx": {
+ "english_name": "Inabaknon"
+ },
+ "aby": {
+ "english_name": "Aneme Wake"
+ },
+ "abz": {
+ "english_name": "Abui"
+ },
+ "ggu": {
+ "english_name": "Gagu"
+ },
+ "ggt": {
+ "english_name": "Gitua"
+ },
+ "ggw": {
+ "english_name": "Gogodala"
+ },
+ "gge": {
+ "english_name": "Guragone"
+ },
+ "ggd": {
+ "english_name": "Gugadj"
+ },
+ "ggg": {
+ "english_name": "Gurgula"
+ },
+ "gga": {
+ "english_name": "Gao"
+ },
+ "ggb": {
+ "english_name": "Gbii"
+ },
+ "ggl": {
+ "english_name": "Ganglau"
+ },
+ "ggo": {
+ "english_name": "Gondi, Southern"
+ },
+ "ggn": {
+ "english_name": "Gurung, Eastern"
+ },
+ "ggk": {
+ "english_name": "Kungarakany"
+ },
+ "fwe": {
+ "english_name": "Fwe"
+ },
+ "fwa": {
+ "english_name": "Fwâi"
+ },
+ "sbh": {
+ "english_name": "Sori-Harengan"
+ },
+ "eya": {
+ "english_name": "Eyak"
+ },
+ "twc": {
+ "english_name": "Teshenawa"
+ },
+ "twa": {
+ "english_name": "Twana"
+ },
+ "twf": {
+ "english_name": "Tiwa, Northern"
+ },
+ "twg": {
+ "english_name": "Tereweng"
+ },
+ "twd": {
+ "english_name": "Twents"
+ },
+ "twe": {
+ "english_name": "Tewa (Indonesia)"
+ },
+ "twh": {
+ "english_name": "Tai Dón"
+ },
+ "twn": {
+ "english_name": "Twendi"
+ },
+ "two": {
+ "english_name": "Tswapong"
+ },
+ "eyo": {
+ "english_name": "Keiyo"
+ },
+ "twm": {
+ "english_name": "Monpa, Tawang"
+ },
+ "twr": {
+ "english_name": "Tarahumara, Southwestern"
+ },
+ "twp": {
+ "english_name": "Ere"
+ },
+ "twq": {
+ "english_name": "Tasawaq"
+ },
+ "tww": {
+ "english_name": "Tuwari"
+ },
+ "twt": {
+ "english_name": "Turiwára"
+ },
+ "twu": {
+ "english_name": "Termanu"
+ },
+ "twx": {
+ "english_name": "Tewe"
+ },
+ "twy": {
+ "english_name": "Tawoyan"
+ },
+ "prm": {
+ "english_name": "Kibiri"
+ },
+ "dez": {
+ "english_name": "Dengese"
+ },
+ "dep": {
+ "english_name": "Delaware, Pidgin"
+ },
+ "deq": {
+ "english_name": "Dendi (Central African Republic)"
+ },
+ "der": {
+ "english_name": "Deori"
+ },
+ "des": {
+ "english_name": "Desano"
+ },
+ "jda": {
+ "english_name": "Jad"
+ },
+ "dev": {
+ "english_name": "Domung"
+ },
+ "prl": {
+ "english_name": "Peruvian Sign Language"
+ },
+ "dei": {
+ "english_name": "Demisa"
+ },
+ "dek": {
+ "english_name": "Dek"
+ },
+ "del": {
+ "english_name": "Delaware"
+ },
+ "dem": {
+ "english_name": "Dem"
+ },
+ "den": {
+ "english_name": "Slave (Athapascan)"
+ },
+ "jdt": {
+ "english_name": "Judeo-Tat"
+ },
+ "dec": {
+ "english_name": "Dagik"
+ },
+ "ded": {
+ "english_name": "Dedua"
+ },
+ "dee": {
+ "english_name": "Dewoin"
+ },
+ "def": {
+ "english_name": "Dezfuli"
+ },
+ "deg": {
+ "english_name": "Degema"
+ },
+ "csm": {
+ "english_name": "Miwok, Central Sierra"
+ },
+ "csl": {
+ "english_name": "Chinese Sign Language"
+ },
+ "cso": {
+ "english_name": "Chinantec, Sochiapam"
+ },
+ "csn": {
+ "english_name": "Colombian Sign Language"
+ },
+ "csi": {
+ "english_name": "Miwok, Coast"
+ },
+ "csh": {
+ "english_name": "Chin, Asho"
+ },
+ "csk": {
+ "english_name": "Jola-Kasa"
+ },
+ "csj": {
+ "english_name": "Chin, Songlai"
+ },
+ "cse": {
+ "english_name": "Czech Sign Language"
+ },
+ "csd": {
+ "english_name": "Chiangmai Sign Language"
+ },
+ "csg": {
+ "english_name": "Chilean Sign Language"
+ },
+ "csf": {
+ "english_name": "Cuba Sign Language"
+ },
+ "csa": {
+ "english_name": "Chinantec, Chiltepec"
+ },
+ "csc": {
+ "english_name": "Catalan Sign Language"
+ },
+ "csb": {
+ "english_name": "Kashubian"
+ },
+ "csy": {
+ "english_name": "Chin, Siyin"
+ },
+ "csz": {
+ "english_name": "Coos"
+ },
+ "cst": {
+ "english_name": "Ohlone, Northern"
+ },
+ "csw": {
+ "english_name": "Cree, Swampy"
+ },
+ "csv": {
+ "english_name": "Chin, Sumtu"
+ },
+ "csq": {
+ "english_name": "Croatia Sign Language"
+ },
+ "rys": {
+ "english_name": "Yaeyama"
+ },
+ "css": {
+ "english_name": "Ohlone, Southern"
+ },
+ "csr": {
+ "english_name": "Costa Rican Sign Language"
+ },
+ "bkd": {
+ "english_name": "Binukid"
+ },
+ "bkf": {
+ "english_name": "Beeke"
+ },
+ "bkg": {
+ "english_name": "Buraka"
+ },
+ "bka": {
+ "english_name": "Kyak"
+ },
+ "bkc": {
+ "english_name": "Baka (Cameroon)"
+ },
+ "bkl": {
+ "english_name": "Berik"
+ },
+ "bkm": {
+ "english_name": "Kom (Cameroon)"
+ },
+ "bkn": {
+ "english_name": "Bukitan"
+ },
+ "bko": {
+ "english_name": "Kwa'"
+ },
+ "bkh": {
+ "english_name": "Bakoko"
+ },
+ "bki": {
+ "english_name": "Baki"
+ },
+ "bkj": {
+ "english_name": "Pande"
+ },
+ "bkk": {
+ "english_name": "Brokskat"
+ },
+ "bkt": {
+ "english_name": "Boloki"
+ },
+ "bku": {
+ "english_name": "Buhid"
+ },
+ "bkv": {
+ "english_name": "Bekwarra"
+ },
+ "bkw": {
+ "english_name": "Bekwel"
+ },
+ "bkp": {
+ "english_name": "Boko (Democratic Republic of Congo)"
+ },
+ "bkq": {
+ "english_name": "Bakairí"
+ },
+ "bkr": {
+ "english_name": "Bakumpai"
+ },
+ "bks": {
+ "english_name": "Sorsoganon, Northern"
+ },
+ "bkx": {
+ "english_name": "Baikeno"
+ },
+ "bky": {
+ "english_name": "Bokyi"
+ },
+ "bkz": {
+ "english_name": "Bungku"
+ },
+ "pcp": {
+ "english_name": "Pacahuara"
+ },
+ "pcw": {
+ "english_name": "Pyapun"
+ },
+ "pcj": {
+ "english_name": "Parenga"
+ },
+ "pck": {
+ "english_name": "Chin, Paite"
+ },
+ "pch": {
+ "english_name": "Pardhan"
+ },
+ "pci": {
+ "english_name": "Duruwa"
+ },
+ "pcn": {
+ "english_name": "Piti"
+ },
+ "pcl": {
+ "english_name": "Pardhi"
+ },
+ "pcm": {
+ "english_name": "Pidgin, Nigerian"
+ },
+ "pcb": {
+ "english_name": "Pear"
+ },
+ "pcc": {
+ "english_name": "Bouyei"
+ },
+ "pca": {
+ "english_name": "Popoloca, Santa Inés Ahuatempan"
+ },
+ "pcf": {
+ "english_name": "Paliyan"
+ },
+ "pcg": {
+ "english_name": "Paniya"
+ },
+ "pcd": {
+ "english_name": "Picard"
+ },
+ "pce": {
+ "english_name": "Palaung, Ruching"
+ },
+ "oks": {
+ "english_name": "Oko-Eni-Osayen"
+ },
+ "okr": {
+ "english_name": "Kirike"
+ },
+ "oku": {
+ "english_name": "Oku"
+ },
+ "okv": {
+ "english_name": "Orokaiva"
+ },
+ "uhn": {
+ "english_name": "Damal"
+ },
+ "okx": {
+ "english_name": "Okpe (Northwestern Edo)"
+ },
+ "oka": {
+ "english_name": "Okanagan"
+ },
+ "okb": {
+ "english_name": "Okobo"
+ },
+ "oke": {
+ "english_name": "Okpe (Southwestern Edo)"
+ },
+ "okd": {
+ "english_name": "Okodia"
+ },
+ "okg": {
+ "english_name": "Koko Babangk"
+ },
+ "oki": {
+ "english_name": "Okiek"
+ },
+ "okh": {
+ "english_name": "Koresh-e Rostam"
+ },
+ "okk": {
+ "english_name": "One, Kwamtim"
+ },
+ "okj": {
+ "english_name": "Oko-Juwoi"
+ },
+ "okm": {
+ "english_name": "Korean, Middle (10th-16th cent.)"
+ },
+ "okl": {
+ "english_name": "Kentish Sign Language, Old"
+ },
+ "oko": {
+ "english_name": "Korean, Old (3rd-9th cent.)"
+ },
+ "okn": {
+ "english_name": "Oki-No-Erabu"
+ },
+ "sbr": {
+ "english_name": "Sembakung Murut"
+ },
+ "sbs": {
+ "english_name": "Subiya"
+ },
+ "sbp": {
+ "english_name": "Sangu (Tanzania)"
+ },
+ "sbq": {
+ "english_name": "Sileibi"
+ },
+ "mmy": {
+ "english_name": "Migaama"
+ },
+ "mmx": {
+ "english_name": "Madak"
+ },
+ "sbt": {
+ "english_name": "Kimki"
+ },
+ "mmz": {
+ "english_name": "Mabaale"
+ },
+ "mmu": {
+ "english_name": "Mmaala"
+ },
+ "mmt": {
+ "english_name": "Malalamai"
+ },
+ "mmw": {
+ "english_name": "Emae"
+ },
+ "mmv": {
+ "english_name": "Miriti"
+ },
+ "mmq": {
+ "english_name": "Musak"
+ },
+ "mmp": {
+ "english_name": "Siawi"
+ },
+ "mmr": {
+ "english_name": "Miao, Western Xiangxi"
+ },
+ "mmm": {
+ "english_name": "Maii"
+ },
+ "mml": {
+ "english_name": "Man Met"
+ },
+ "mmo": {
+ "english_name": "Buang, Mangga"
+ },
+ "mmn": {
+ "english_name": "Mamanwa"
+ },
+ "mmi": {
+ "english_name": "Musar"
+ },
+ "mmh": {
+ "english_name": "Mehináku"
+ },
+ "mmk": {
+ "english_name": "Mukha-Dora"
+ },
+ "mmj": {
+ "english_name": "Majhwar"
+ },
+ "mme": {
+ "english_name": "Mae"
+ },
+ "mmd": {
+ "english_name": "Maonan"
+ },
+ "mmg": {
+ "english_name": "Ambrym, North"
+ },
+ "mmf": {
+ "english_name": "Mundat"
+ },
+ "mma": {
+ "english_name": "Mama"
+ },
+ "sbo": {
+ "english_name": "Sabüm"
+ },
+ "mmc": {
+ "english_name": "Mazahua, Michoacán"
+ },
+ "mmb": {
+ "english_name": "Momina"
+ },
+ "koi": {
+ "english_name": "Komi-Permyak"
+ },
+ "koh": {
+ "english_name": "Koyo"
+ },
+ "kok": {
+ "name": "Konkani (macrolanguage)",
+ "english_name": "Konkani (macrolanguage)"
+ },
+ "kol": {
+ "english_name": "Kol (Papua New Guinea)"
+ },
+ "koo": {
+ "english_name": "Konzo"
+ },
+ "koa": {
+ "english_name": "Konomala"
+ },
+ "koc": {
+ "english_name": "Kpati"
+ },
+ "koe": {
+ "english_name": "Kacipo-Balesi"
+ },
+ "kod": {
+ "english_name": "Kodi"
+ },
+ "kog": {
+ "english_name": "Cogui"
+ },
+ "kof": {
+ "english_name": "Kubi"
+ },
+ "koy": {
+ "english_name": "Koyukon"
+ },
+ "kox": {
+ "english_name": "Coxima"
+ },
+ "koz": {
+ "english_name": "Korak"
+ },
+ "koq": {
+ "english_name": "Kota (Gabon)"
+ },
+ "kop": {
+ "english_name": "Waube"
+ },
+ "kos": {
+ "english_name": "Kosraean"
+ },
+ "kou": {
+ "english_name": "Koke"
+ },
+ "kot": {
+ "english_name": "Lagwan"
+ },
+ "kow": {
+ "english_name": "Kugama"
+ },
+ "kov": {
+ "english_name": "Kudu-Camo"
+ },
+ "vnm": {
+ "english_name": "Vinmavis"
+ },
+ "vnk": {
+ "english_name": "Vano"
+ },
+ "vnp": {
+ "english_name": "Vunapu"
+ },
+ "ka": {
+ "english_name": "Georgian"
+ },
+ "kg": {
+ "english_name": "Kongo"
+ },
+ "kk": {
+ "english_name": "Kazakh"
+ },
+ "kj": {
+ "english_name": "Kuanyama"
+ },
+ "ki": {
+ "english_name": "Kikuyu"
+ },
+ "bdb": {
+ "english_name": "Basap"
+ },
+ "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"
+ },
+ "kw": {
+ "english_name": "Cornish"
+ },
+ "kv": {
+ "english_name": "Komi"
+ },
+ "ku": {
+ "english_name": "Kurdish"
+ },
+ "scs": {
+ "english_name": "Slavey, North"
+ },
+ "ky": {
+ "english_name": "Kirghiz"
+ },
+ "aes": {
+ "english_name": "Alsea"
+ },
+ "ikr": {
+ "english_name": "Ikaranggal"
+ },
+ "ikp": {
+ "english_name": "Ikpeshi"
+ },
+ "ikw": {
+ "english_name": "Ikwere"
+ },
+ "ikv": {
+ "english_name": "Iku-Gora-Ankwa"
+ },
+ "ikt": {
+ "english_name": "Inuinnaqtun"
+ },
+ "ikz": {
+ "english_name": "Ikizu"
+ },
+ "ikx": {
+ "english_name": "Ik"
+ },
+ "ike": {
+ "english_name": "Inuktitut, Eastern Canadian"
+ },
+ "ikk": {
+ "english_name": "Ika"
+ },
+ "iki": {
+ "english_name": "Iko"
+ },
+ "iko": {
+ "english_name": "Olulumo-Ikom"
+ },
+ "ikl": {
+ "english_name": "Ikulu"
+ },
+ "raf": {
+ "english_name": "Meohang, Western"
+ },
+ "rad": {
+ "english_name": "Rade"
+ },
+ "rab": {
+ "english_name": "Camling"
+ },
+ "rac": {
+ "english_name": "Rasawa"
+ },
+ "raa": {
+ "english_name": "Dungmali"
+ },
+ "ran": {
+ "english_name": "Riantana"
+ },
+ "rao": {
+ "english_name": "Rao"
+ },
+ "ram": {
+ "english_name": "Canela"
+ },
+ "gaz": {
+ "english_name": "Oromo, West Central"
+ },
+ "gay": {
+ "english_name": "Gayo"
+ },
+ "gax": {
+ "english_name": "Oromo, Borana-Arsi-Guji"
+ },
+ "gaw": {
+ "english_name": "Nobonob"
+ },
+ "gau": {
+ "english_name": "Gadaba, Mudhili"
+ },
+ "gat": {
+ "english_name": "Kenati"
+ },
+ "gas": {
+ "english_name": "Garasia, Adiwasi"
+ },
+ "gar": {
+ "english_name": "Galeya"
+ },
+ "gaq": {
+ "english_name": "Gata'"
+ },
+ "gap": {
+ "english_name": "Gal"
+ },
+ "gao": {
+ "english_name": "Gants"
+ },
+ "gan": {
+ "english_name": "Chinese, Gan"
+ },
+ "gam": {
+ "english_name": "Kandawo"
+ },
+ "gal": {
+ "english_name": "Galolen"
+ },
+ "gak": {
+ "english_name": "Gamkonora"
+ },
+ "gaj": {
+ "english_name": "Gadsup"
+ },
+ "gai": {
+ "english_name": "Borei"
+ },
+ "gah": {
+ "english_name": "Alekano"
+ },
+ "gag": {
+ "english_name": "Gagauz"
+ },
+ "gaf": {
+ "english_name": "Gende"
+ },
+ "gae": {
+ "english_name": "Guarequena"
+ },
+ "gad": {
+ "english_name": "Gaddang"
+ },
+ "gac": {
+ "english_name": "Great Andamanese, Mixed"
+ },
+ "gab": {
+ "english_name": "Gabri"
+ },
+ "gaa": {
+ "english_name": "Ga"
+ },
+ "fuv": {
+ "english_name": "Fulfulde, Nigerian"
+ },
+ "rav": {
+ "english_name": "Sampang"
+ },
+ "fut": {
+ "english_name": "Futuna-Aniwa"
+ },
+ "fuu": {
+ "english_name": "Furu"
+ },
+ "fur": {
+ "english_name": "Friulian"
+ },
+ "fuq": {
+ "english_name": "Fulfulde, Central-Eastern Niger"
+ },
+ "rat": {
+ "english_name": "Razajerdi"
+ },
+ "fuy": {
+ "english_name": "Fuyug"
+ },
+ "fuf": {
+ "english_name": "Pular"
+ },
+ "fud": {
+ "english_name": "Futuna, East"
+ },
+ "fue": {
+ "english_name": "Fulfulde, Borgu"
+ },
+ "fub": {
+ "english_name": "Fulfulde, Adamawa"
+ },
+ "fuc": {
+ "english_name": "Pulaar"
+ },
+ "fun": {
+ "english_name": "Fulniô"
+ },
+ "rar": {
+ "english_name": "Rarotongan"
+ },
+ "fum": {
+ "english_name": "Fum"
+ },
+ "fuj": {
+ "english_name": "Ko"
+ },
+ "fuh": {
+ "english_name": "Fulfulde, Western Niger"
+ },
+ "fui": {
+ "english_name": "Fulfulde, Bagirmi"
+ },
+ "rap": {
+ "english_name": "Rapanui"
+ },
+ "raq": {
+ "english_name": "Saam"
+ },
+ "ewo": {
+ "english_name": "Ewondo"
+ },
+ "tqb": {
+ "english_name": "Tembé"
+ },
+ "tql": {
+ "english_name": "Lehali"
+ },
+ "raz": {
+ "english_name": "Rahambuu"
+ },
+ "tqn": {
+ "english_name": "Tenino"
+ },
+ "tqo": {
+ "english_name": "Toaripi"
+ },
+ "tqt": {
+ "english_name": "Totonac, Western"
+ },
+ "tqu": {
+ "english_name": "Touo"
+ },
+ "tqw": {
+ "english_name": "Tonkawa"
+ },
+ "tqp": {
+ "english_name": "Tomoip"
+ },
+ "rax": {
+ "english_name": "Rang"
+ },
+ "tqr": {
+ "english_name": "Torona"
+ },
+ "ray": {
+ "english_name": "Rapa"
+ },
+ "dgb": {
+ "english_name": "Dogon, Bunoge"
+ },
+ "dgc": {
+ "english_name": "Agta, Casiguran Dumagat"
+ },
+ "sya": {
+ "english_name": "Siang"
+ },
+ "dga": {
+ "english_name": "Dagaare, Southern"
+ },
+ "dgg": {
+ "english_name": "Doga"
+ },
+ "dgd": {
+ "english_name": "Dagaari Dioula"
+ },
+ "dge": {
+ "english_name": "Degenan"
+ },
+ "syk": {
+ "english_name": "Sukur"
+ },
+ "dgk": {
+ "english_name": "Dagba"
+ },
+ "dgh": {
+ "english_name": "Dghwede"
+ },
+ "dgi": {
+ "english_name": "Dagara, Northern"
+ },
+ "dgn": {
+ "english_name": "Dagoman"
+ },
+ "dgo": {
+ "english_name": "Dogri (individual language)"
+ },
+ "dgl": {
+ "english_name": "Andaandi"
+ },
+ "syl": {
+ "english_name": "Sylheti"
+ },
+ "dgr": {
+ "english_name": "Dogrib"
+ },
+ "dgs": {
+ "english_name": "Dogoso"
+ },
+ "syw": {
+ "english_name": "Kagate"
+ },
+ "dgw": {
+ "english_name": "Daungwurrung"
+ },
+ "dgt": {
+ "english_name": "Ndra'ngith"
+ },
+ "dgu": {
+ "english_name": "Degaru"
+ },
+ "dgz": {
+ "english_name": "Daga"
+ },
+ "dgx": {
+ "english_name": "Doghoro"
+ },
+ "jbw": {
+ "english_name": "Yawijibaya"
+ },
+ "jbu": {
+ "english_name": "Jukun Takum"
+ },
+ "jbt": {
+ "english_name": "Jabutí"
+ },
+ "jbr": {
+ "english_name": "Jofotek-Bromnya"
+ },
+ "jbe": {
+ "english_name": "Judeo-Berber"
+ },
+ "jbo": {
+ "english_name": "Lojban"
+ },
+ "jbn": {
+ "english_name": "Nafusi"
+ },
+ "jbk": {
+ "english_name": "Barikewa"
+ },
+ "jbj": {
+ "english_name": "Arandai"
+ },
+ "jbi": {
+ "english_name": "Badjiri"
+ },
+ "ldb": {
+ "english_name": "Dũya"
+ },
+ "lda": {
+ "english_name": "Kla-Dan"
+ },
+ "ldg": {
+ "english_name": "Lenyima"
+ },
+ "ldd": {
+ "english_name": "Luri"
+ },
+ "ldk": {
+ "english_name": "Leelau"
+ },
+ "ldj": {
+ "english_name": "Lemoro"
+ },
+ "ldi": {
+ "english_name": "Laari"
+ },
+ "ldh": {
+ "english_name": "Lamja-Dengsa-Tola"
+ },
+ "ldo": {
+ "english_name": "Loo"
+ },
+ "ldn": {
+ "english_name": "Láadan"
+ },
+ "ldm": {
+ "english_name": "Landoma"
+ },
+ "ldl": {
+ "english_name": "Kaan"
+ },
+ "ldq": {
+ "english_name": "Lufu"
+ },
+ "ldp": {
+ "english_name": "Tso"
+ },
+ "cuw": {
+ "english_name": "Chukwa"
+ },
+ "cuv": {
+ "english_name": "Cuvok"
+ },
+ "cuu": {
+ "english_name": "Tai Ya"
+ },
+ "cut": {
+ "english_name": "Cuicatec, Teutila"
+ },
+ "cur": {
+ "english_name": "Chhulung"
+ },
+ "cuq": {
+ "english_name": "Cun"
+ },
+ "cup": {
+ "english_name": "Cupeño"
+ },
+ "cux": {
+ "english_name": "Cuicatec, Tepeuxila"
+ },
+ "cug": {
+ "english_name": "Cung"
+ },
+ "rga": {
+ "english_name": "Roria"
+ },
+ "cuc": {
+ "english_name": "Chinantec, Usila"
+ },
+ "cub": {
+ "english_name": "Cubeo"
+ },
+ "cua": {
+ "english_name": "Cua"
+ },
+ "cuo": {
+ "english_name": "Cumanagoto"
+ },
+ "cum": {
+ "english_name": "Cumeral"
+ },
+ "cul": {
+ "english_name": "Culina"
+ },
+ "cuk": {
+ "english_name": "Kuna, San Blas"
+ },
+ "cuj": {
+ "english_name": "Mashco Piro"
+ },
+ "cui": {
+ "english_name": "Cuiba"
+ },
+ "cuh": {
+ "english_name": "Chuka"
+ },
+ "bin": {
+ "english_name": "Bini"
+ },
+ "bio": {
+ "english_name": "Nai"
+ },
+ "bil": {
+ "english_name": "Bile"
+ },
+ "bim": {
+ "english_name": "Bimoba"
+ },
+ "bij": {
+ "english_name": "Vaghat-Ya-Bijim-Legeri"
+ },
+ "bik": {
+ "english_name": "Bikol"
+ },
+ "qwh": {
+ "english_name": "Quechua, Huaylas Ancash"
+ },
+ "bif": {
+ "english_name": "Biafada"
+ },
+ "big": {
+ "english_name": "Biangai"
+ },
+ "bid": {
+ "english_name": "Bidiyo"
+ },
+ "bie": {
+ "english_name": "Bepour"
+ },
+ "bib": {
+ "english_name": "Bissa"
+ },
+ "bic": {
+ "english_name": "Bikaru"
+ },
+ "qwa": {
+ "english_name": "Quechua, Corongo Ancash"
+ },
+ "bia": {
+ "english_name": "Badimaya"
+ },
+ "biz": {
+ "english_name": "Baloi"
+ },
+ "bix": {
+ "english_name": "Bijori"
+ },
+ "biy": {
+ "english_name": "Birhor"
+ },
+ "biv": {
+ "english_name": "Birifor, Southern"
+ },
+ "biw": {
+ "english_name": "Kol (Cameroon)"
+ },
+ "bit": {
+ "english_name": "Berinomo"
+ },
+ "biu": {
+ "english_name": "Biete"
+ },
+ "bir": {
+ "english_name": "Bisorio"
+ },
+ "bip": {
+ "english_name": "Bila"
+ },
+ "biq": {
+ "english_name": "Bipi"
+ },
+ "qxs": {
+ "english_name": "Qiang, Southern"
+ },
+ "pxm": {
+ "english_name": "Mixe, Quetzaltepec"
+ },
+ "pex": {
+ "english_name": "Petats"
+ },
+ "pey": {
+ "english_name": "Petjo"
+ },
+ "pez": {
+ "english_name": "Penan, Eastern"
+ },
+ "pev": {
+ "english_name": "Pémono"
+ },
+ "pep": {
+ "english_name": "Kunja"
+ },
+ "peq": {
+ "english_name": "Pomo, Southern"
+ },
+ "pes": {
+ "english_name": "Persian, Iranian"
+ },
+ "pel": {
+ "english_name": "Pekal"
+ },
+ "pem": {
+ "english_name": "Phende"
+ },
+ "peo": {
+ "english_name": "Persian, Old (ca. 600-400 B.C.)"
+ },
+ "peh": {
+ "english_name": "Bonan"
+ },
+ "pei": {
+ "english_name": "Chichimeca-Jonaz"
+ },
+ "pej": {
+ "english_name": "Pomo, Northern"
+ },
+ "pek": {
+ "english_name": "Penchal"
+ },
+ "ped": {
+ "english_name": "Mala (Papua New Guinea)"
+ },
+ "pee": {
+ "english_name": "Taje"
+ },
+ "pef": {
+ "english_name": "Pomo, Northeastern"
+ },
+ "peg": {
+ "english_name": "Pengo"
+ },
+ "pea": {
+ "english_name": "Indonesian, Peranakan"
+ },
+ "peb": {
+ "english_name": "Pomo, Eastern"
+ },
+ "ufi": {
+ "english_name": "Ufim"
+ },
+ "qyp": {
+ "english_name": "Quiripi"
+ },
+ "qxw": {
+ "english_name": "Quechua, Jauja Wanca"
+ },
+ "nsh": {
+ "english_name": "Ngoshie"
+ },
+ "nsi": {
+ "english_name": "Nigerian Sign Language"
+ },
+ "nsk": {
+ "english_name": "Naskapi"
+ },
+ "nsl": {
+ "english_name": "Norwegian Sign Language"
+ },
+ "nsm": {
+ "english_name": "Naga, Sumi"
+ },
+ "nsn": {
+ "english_name": "Nehan"
+ },
+ "nso": {
+ "name": "Pedi",
+ "english_name": "Pedi"
+ },
+ "nsa": {
+ "english_name": "Naga, Sangtam"
+ },
+ "nsc": {
+ "english_name": "Nshi"
+ },
+ "nsd": {
+ "english_name": "Nisu, Southern"
+ },
+ "nse": {
+ "english_name": "Nsenga"
+ },
+ "nsf": {
+ "english_name": "Nisu, Northwestern"
+ },
+ "nsg": {
+ "english_name": "Ngasa"
+ },
+ "nsx": {
+ "english_name": "Nsongo"
+ },
+ "nsy": {
+ "english_name": "Nasal"
+ },
+ "nsz": {
+ "english_name": "Nisenan"
+ },
+ "nsp": {
+ "english_name": "Nepalese Sign Language"
+ },
+ "nsq": {
+ "english_name": "Miwok, Northern Sierra"
+ },
+ "nsr": {
+ "english_name": "Maritime Sign Language"
+ },
+ "nss": {
+ "english_name": "Nali"
+ },
+ "nst": {
+ "english_name": "Naga, Tase"
+ },
+ "nsu": {
+ "english_name": "Nahuatl, Sierra Negra"
+ },
+ "nsv": {
+ "english_name": "Nisu, Southwestern"
+ },
+ "nsw": {
+ "english_name": "Navut"
+ },
+ "mkg": {
+ "english_name": "Mak (China)"
+ },
+ "mkf": {
+ "english_name": "Miya"
+ },
+ "mke": {
+ "english_name": "Mawchi"
+ },
+ "mkc": {
+ "english_name": "Siliput"
+ },
+ "mkb": {
+ "english_name": "Mal Paharia"
+ },
+ "mka": {
+ "english_name": "Mbre"
+ },
+ "mko": {
+ "english_name": "Mingang Doso"
+ },
+ "mkn": {
+ "english_name": "Malay, Kupang"
+ },
+ "mkm": {
+ "english_name": "Moklen"
+ },
+ "mkl": {
+ "english_name": "Mokole"
+ },
+ "mkk": {
+ "english_name": "Byep"
+ },
+ "mkj": {
+ "english_name": "Mokilese"
+ },
+ "mki": {
+ "english_name": "Dhatki"
+ },
+ "mkw": {
+ "english_name": "Kituba (Congo)"
+ },
+ "mkv": {
+ "english_name": "Mafea"
+ },
+ "mku": {
+ "english_name": "Maninka, Konyanka"
+ },
+ "mkt": {
+ "english_name": "Vamale"
+ },
+ "mks": {
+ "english_name": "Mixtec, Silacayoapan"
+ },
+ "mkr": {
+ "english_name": "Malas"
+ },
+ "mkq": {
+ "english_name": "Miwok, Bay"
+ },
+ "mkp": {
+ "english_name": "Moikodi"
+ },
+ "mkz": {
+ "english_name": "Makasae"
+ },
+ "mky": {
+ "english_name": "Makian, East"
+ },
+ "mkx": {
+ "english_name": "Manobo, Kinamiging"
+ },
+ "sdt": {
+ "english_name": "Shuadit"
+ },
+ "sdu": {
+ "english_name": "Sarudu"
+ },
+ "sdp": {
+ "english_name": "Sherdukpen"
+ },
+ "sdr": {
+ "english_name": "Sadri, Oraon"
+ },
+ "sds": {
+ "english_name": "Sened"
+ },
+ "sdx": {
+ "english_name": "Melanau, Sibu"
+ },
+ "sdz": {
+ "english_name": "Sallands"
+ },
+ "sde": {
+ "english_name": "Surubu"
+ },
+ "sdf": {
+ "english_name": "Sarli"
+ },
+ "sdg": {
+ "english_name": "Savi"
+ },
+ "sda": {
+ "english_name": "Toraja-Sa'dan"
+ },
+ "sdb": {
+ "english_name": "Shabak"
+ },
+ "sdc": {
+ "english_name": "Sardinian, Sassarese"
+ },
+ "sdl": {
+ "english_name": "Saudi Arabian Sign Language"
+ },
+ "sdm": {
+ "english_name": "Semandang"
+ },
+ "sdn": {
+ "english_name": "Sardinian, Gallurese"
+ },
+ "sdo": {
+ "english_name": "Bidayuh, Bukar-Sadung"
+ },
+ "sdh": {
+ "english_name": "Kurdish, Southern"
+ },
+ "sdj": {
+ "english_name": "Suundi"
+ },
+ "sdk": {
+ "english_name": "Sos Kundi"
+ },
+ "zhw": {
+ "english_name": "Zhoa"
+ },
+ "zhb": {
+ "english_name": "Zhaba"
+ },
+ "zhd": {
+ "english_name": "Zhuang, Dai"
+ },
+ "zhi": {
+ "english_name": "Zhire"
+ },
+ "zhn": {
+ "english_name": "Zhuang, Nong"
+ },
+ "bcg": {
+ "english_name": "Baga Binari"
+ },
+ "lyg": {
+ "english_name": "Lyngngam"
+ },
+ "lya": {
+ "english_name": "Layakha"
+ },
+ "tvd": {
+ "english_name": "Tsuvadi"
+ },
+ "lyn": {
+ "english_name": "Luyana"
+ },
+ "kqs": {
+ "english_name": "Kissi, Northern"
+ },
+ "kqr": {
+ "english_name": "Kimaragang"
+ },
+ "kqq": {
+ "english_name": "Krenak"
+ },
+ "kqp": {
+ "english_name": "Kimré"
+ },
+ "kqw": {
+ "english_name": "Kandas"
+ },
+ "kqv": {
+ "english_name": "Okolod"
+ },
+ "kqu": {
+ "english_name": "Seroa"
+ },
+ "kqt": {
+ "english_name": "Kadazan, Klias River"
+ },
+ "kqz": {
+ "english_name": "Korana"
+ },
+ "kqy": {
+ "english_name": "Koorete"
+ },
+ "kqx": {
+ "english_name": "Mser"
+ },
+ "kqc": {
+ "english_name": "Doromu-Koki"
+ },
+ "kqb": {
+ "english_name": "Kovai"
+ },
+ "kqa": {
+ "english_name": "Mum"
+ },
+ "kqg": {
+ "english_name": "Khe"
+ },
+ "kqf": {
+ "english_name": "Kakabai"
+ },
+ "kqe": {
+ "english_name": "Kalagan"
+ },
+ "kqd": {
+ "english_name": "Koy Sanjaq Surat"
+ },
+ "kqk": {
+ "english_name": "Gbe, Kotafon"
+ },
+ "kqj": {
+ "english_name": "Koromira"
+ },
+ "kqi": {
+ "english_name": "Koitabu"
+ },
+ "kqh": {
+ "english_name": "Kisankasa"
+ },
+ "kqo": {
+ "english_name": "Krahn, Eastern"
+ },
+ "kqn": {
+ "english_name": "Kaonde"
+ },
+ "kqm": {
+ "english_name": "Khisa"
+ },
+ "kql": {
+ "english_name": "Kyenele"
+ },
+ "xby": {
+ "english_name": "Batyala"
+ },
+ "xbx": {
+ "english_name": "Kabixí"
+ },
+ "bcb": {
+ "english_name": "Bainouk-Samik"
+ },
+ "xbw": {
+ "english_name": "Kambiwá"
+ },
+ "xbp": {
+ "english_name": "Bibbulman"
+ },
+ "xbr": {
+ "english_name": "Kambera"
+ },
+ "xbm": {
+ "english_name": "Breton, Middle"
+ },
+ "xbo": {
+ "english_name": "Bolgarian"
+ },
+ "xbn": {
+ "english_name": "Kenaboi"
+ },
+ "xbi": {
+ "english_name": "Kombio"
+ },
+ "xbj": {
+ "english_name": "Birrpayi"
+ },
+ "xbe": {
+ "english_name": "Bigambal"
+ },
+ "xbd": {
+ "english_name": "Bindal"
+ },
+ "xbg": {
+ "english_name": "Bunganditj"
+ },
+ "xba": {
+ "english_name": "Kamba (Brazil)"
+ },
+ "xbc": {
+ "english_name": "Bactrian"
+ },
+ "xbb": {
+ "english_name": "Burdekin, Lower"
+ },
+ "bcc": {
+ "english_name": "Balochi, Southern"
+ },
+ "tdi": {
+ "english_name": "Tomadino"
+ },
+ "tdh": {
+ "english_name": "Thulung"
+ },
+ "vlp": {
+ "english_name": "Valpei"
+ },
+ "vls": {
+ "english_name": "Vlaams"
+ },
+ "tdo": {
+ "english_name": "Teme"
+ },
+ "haa": {
+ "english_name": "Han"
+ },
+ "chb": {
+ "english_name": "Chibcha"
+ },
+ "hab": {
+ "english_name": "Hanoi Sign Language"
+ },
+ "chd": {
+ "english_name": "Chontal, Highland Oaxaca"
+ },
+ "chf": {
+ "english_name": "Chontal, Tabasco"
+ },
+ "chg": {
+ "english_name": "Chagatai"
+ },
+ "chh": {
+ "english_name": "Chinook"
+ },
+ "chj": {
+ "english_name": "Chinantec, Ojitlán"
+ },
+ "chk": {
+ "english_name": "Chuukese"
+ },
+ "chl": {
+ "english_name": "Cahuilla"
+ },
+ "chm": {
+ "english_name": "Mari (Russia)"
+ },
+ "chn": {
+ "english_name": "Chinook jargon"
+ },
+ "cho": {
+ "english_name": "Choctaw"
+ },
+ "chp": {
+ "english_name": "Chipewyan"
+ },
+ "chq": {
+ "english_name": "Chinantec, Quiotepec"
+ },
+ "chr": {
+ "english_name": "Cherokee"
+ },
+ "cht": {
+ "english_name": "Cholón"
+ },
+ "chw": {
+ "english_name": "Chuwabu"
+ },
+ "chx": {
+ "english_name": "Chantyal"
+ },
+ "chy": {
+ "english_name": "Cheyenne"
+ },
+ "chz": {
+ "english_name": "Chinantec, Ozumacín"
+ },
+ "iin": {
+ "english_name": "Thiin"
+ },
+ "tdg": {
+ "english_name": "Tamang, Western"
+ },
+ "tde": {
+ "english_name": "Dogon, Tiranige Diga"
+ },
+ "afn": {
+ "english_name": "Defaka"
+ },
+ "afo": {
+ "english_name": "Eloyi"
+ },
+ "afh": {
+ "english_name": "Afrihili"
+ },
+ "afi": {
+ "english_name": "Akrukay"
+ },
+ "afk": {
+ "english_name": "Nanubae"
+ },
+ "afd": {
+ "english_name": "Andai"
+ },
+ "afe": {
+ "english_name": "Putukwam"
+ },
+ "afg": {
+ "english_name": "Afghan Sign Language"
+ },
+ "gcl": {
+ "english_name": "Creole English, Grenadian"
+ },
+ "afb": {
+ "english_name": "Arabic, Gulf"
+ },
+ "gcn": {
+ "english_name": "Gaina"
+ },
+ "gcr": {
+ "english_name": "Creole French, Guianese"
+ },
+ "gct": {
+ "english_name": "German, Colonia Tovar"
+ },
+ "afz": {
+ "english_name": "Obokuitai"
+ },
+ "aft": {
+ "english_name": "Afitti"
+ },
+ "afu": {
+ "english_name": "Awutu"
+ },
+ "afp": {
+ "english_name": "Tapei"
+ },
+ "afs": {
+ "english_name": "Creole, Afro-Seminole"
+ },
+ "sis": {
+ "english_name": "Siuslaw"
+ },
+ "sir": {
+ "english_name": "Siri"
+ },
+ "siv": {
+ "english_name": "Sumariup"
+ },
+ "lg": {
+ "english_name": "Ganda"
+ },
+ "tsl": {
+ "english_name": "Ts'ün-Lao"
+ },
+ "tsm": {
+ "english_name": "Turkish Sign Language"
+ },
+ "lb": {
+ "english_name": "Luxembourgish"
+ },
+ "tsk": {
+ "english_name": "Tseku"
+ },
+ "tsh": {
+ "english_name": "Tsuvan"
+ },
+ "la": {
+ "english_name": "Latin"
+ },
+ "ln": {
+ "english_name": "Lingala"
+ },
+ "lo": {
+ "english_name": "Lao"
+ },
+ "tsd": {
+ "english_name": "Tsakonian"
+ },
+ "tse": {
+ "english_name": "Tunisian Sign Language"
+ },
+ "tsb": {
+ "english_name": "Tsamai"
+ },
+ "tsc": {
+ "english_name": "Tswa"
+ },
+ "li": {
+ "english_name": "Limburgan"
+ },
+ "lv": {
+ "name": "Latviešu",
+ "english_name": "Latvian"
+ },
+ "lt": {
+ "name": "Lietuvių",
+ "english_name": "Lithuanian"
+ },
+ "lu": {
+ "english_name": "Luba-Katanga"
+ },
+ "tsz": {
+ "english_name": "Purepecha"
+ },
+ "tdx": {
+ "english_name": "Malagasy, Tandroy-Mahafaly"
+ },
+ "tsy": {
+ "english_name": "Tebul Sign Language"
+ },
+ "tsv": {
+ "english_name": "Tsogo"
+ },
+ "tsw": {
+ "english_name": "Tsishingini"
+ },
+ "tst": {
+ "english_name": "Songway Kiini, Tondi"
+ },
+ "tsu": {
+ "english_name": "Tsou"
+ },
+ "tsr": {
+ "english_name": "Akei"
+ },
+ "tss": {
+ "english_name": "Taiwan Sign Language"
+ },
+ "tsp": {
+ "english_name": "Toussian, Northern"
+ },
+ "tsq": {
+ "english_name": "Thai Sign Language"
+ },
+ "dad": {
+ "english_name": "Marik"
+ },
+ "dae": {
+ "english_name": "Duupa"
+ },
+ "dag": {
+ "english_name": "Dagbani"
+ },
+ "daa": {
+ "english_name": "Dangaléat"
+ },
+ "dac": {
+ "english_name": "Dambi"
+ },
+ "dal": {
+ "english_name": "Dahalo"
+ },
+ "dam": {
+ "english_name": "Damakawa"
+ },
+ "dao": {
+ "english_name": "Chin, Daai"
+ },
+ "dah": {
+ "english_name": "Gwahatike"
+ },
+ "dai": {
+ "english_name": "Day"
+ },
+ "daj": {
+ "english_name": "Daju, Dar Fur"
+ },
+ "dak": {
+ "english_name": "Dakota"
+ },
+ "dau": {
+ "english_name": "Daju, Dar Sila"
+ },
+ "dav": {
+ "english_name": "Taita"
+ },
+ "daw": {
+ "english_name": "Davawenyo"
+ },
+ "daq": {
+ "english_name": "Maria, Dandami"
+ },
+ "dar": {
+ "english_name": "Dargwa"
+ },
+ "das": {
+ "english_name": "Daho-Doo"
+ },
+ "dax": {
+ "english_name": "Dayi"
+ },
+ "daz": {
+ "english_name": "Dao"
+ },
+ "lfa": {
+ "english_name": "Lefa"
+ },
+ "lfn": {
+ "english_name": "Lingua Franca Nova"
+ },
+ "rey": {
+ "english_name": "Reyesano"
+ },
+ "rer": {
+ "english_name": "Rer Bare"
+ },
+ "res": {
+ "english_name": "Reshe"
+ },
+ "cwt": {
+ "english_name": "Kuwaataay"
+ },
+ "ret": {
+ "english_name": "Retta"
+ },
+ "rej": {
+ "english_name": "Rejang"
+ },
+ "rei": {
+ "english_name": "Reli"
+ },
+ "ren": {
+ "english_name": "Rengao"
+ },
+ "rel": {
+ "english_name": "Rendille"
+ },
+ "rem": {
+ "english_name": "Remo"
+ },
+ "cwa": {
+ "english_name": "Kabwa"
+ },
+ "cwb": {
+ "english_name": "Maindo"
+ },
+ "cwe": {
+ "english_name": "Kwere"
+ },
+ "cwd": {
+ "english_name": "Cree, Woods"
+ },
+ "cwg": {
+ "english_name": "Chewong"
+ },
+ "ree": {
+ "english_name": "Kayan, Rejang"
+ },
+ "bwp": {
+ "english_name": "Mandobo Bawah"
+ },
+ "bwq": {
+ "english_name": "Bobo Madaré, Southern"
+ },
+ "bwr": {
+ "english_name": "Bura-Pabir"
+ },
+ "bws": {
+ "english_name": "Bomboma"
+ },
+ "bwt": {
+ "english_name": "Bafaw-Balong"
+ },
+ "bwu": {
+ "english_name": "Buli (Ghana)"
+ },
+ "quw": {
+ "english_name": "Quichua, Tena Lowland"
+ },
+ "bww": {
+ "english_name": "Bwa"
+ },
+ "bwx": {
+ "english_name": "Bunu, Bu-Nao"
+ },
+ "bwy": {
+ "english_name": "Bwamu, Cwi"
+ },
+ "bwz": {
+ "english_name": "Bwisi"
+ },
+ "quz": {
+ "english_name": "Quechua, Cusco"
+ },
+ "tds": {
+ "english_name": "Doutai"
+ },
+ "qua": {
+ "english_name": "Quapaw"
+ },
+ "bwa": {
+ "english_name": "Bwatoo"
+ },
+ "bwb": {
+ "english_name": "Namosi-Naitasiri-Serua"
+ },
+ "bwc": {
+ "english_name": "Bwile"
+ },
+ "bwd": {
+ "english_name": "Bwaidoka"
+ },
+ "bwe": {
+ "english_name": "Karen, Bwe"
+ },
+ "bwf": {
+ "english_name": "Boselewa"
+ },
+ "bwg": {
+ "english_name": "Barwe"
+ },
+ "bwh": {
+ "english_name": "Bishuo"
+ },
+ "bwi": {
+ "english_name": "Baniwa"
+ },
+ "bwj": {
+ "english_name": "Bwamu, Láá Láá"
+ },
+ "bwk": {
+ "english_name": "Bauwaki"
+ },
+ "bwl": {
+ "english_name": "Bwela"
+ },
+ "bwm": {
+ "english_name": "Biwat"
+ },
+ "bwn": {
+ "english_name": "Bunu, Wunai"
+ },
+ "bwo": {
+ "english_name": "Boro (Ethiopia)"
+ },
+ "pgg": {
+ "english_name": "Pangwali"
+ },
+ "pga": {
+ "english_name": "Creole Arabic, Sudanese"
+ },
+ "pgn": {
+ "english_name": "Paelignian"
+ },
+ "pgl": {
+ "english_name": "Irish, Primitive"
+ },
+ "pgk": {
+ "english_name": "Rerep"
+ },
+ "pgi": {
+ "english_name": "Pagi"
+ },
+ "pgu": {
+ "english_name": "Pagu"
+ },
+ "pgs": {
+ "english_name": "Pangseng"
+ },
+ "udu": {
+ "english_name": "Uduk"
+ },
+ "ogu": {
+ "english_name": "Ogbronuagum"
+ },
+ "ogo": {
+ "english_name": "Khana"
+ },
+ "uda": {
+ "english_name": "Uda"
+ },
+ "udg": {
+ "english_name": "Muduga"
+ },
+ "ude": {
+ "english_name": "Udihe"
+ },
+ "oge": {
+ "english_name": "Georgian, Old"
+ },
+ "ogg": {
+ "english_name": "Ogbogolo"
+ },
+ "udi": {
+ "english_name": "Udi"
+ },
+ "ogc": {
+ "english_name": "Ogbah"
+ },
+ "ogb": {
+ "english_name": "Ogbia"
+ },
+ "hav": {
+ "english_name": "Havu"
+ },
+ "nqq": {
+ "english_name": "Naga, Kyan-Karyaw"
+ },
+ "nqy": {
+ "english_name": "Naga, Akyaung Ari"
+ },
+ "nqg": {
+ "english_name": "Nago, Southern"
+ },
+ "nqk": {
+ "english_name": "Ede Nago, Kura"
+ },
+ "nqn": {
+ "english_name": "Nen"
+ },
+ "nqo": {
+ "english_name": "N'Ko"
+ },
+ "nqm": {
+ "english_name": "Ndom"
+ },
+ "mii": {
+ "english_name": "Mixtec, Chigmecatitlán"
+ },
+ "mih": {
+ "english_name": "Mixtec, Chayuco"
+ },
+ "mik": {
+ "english_name": "Mikasuki"
+ },
+ "mij": {
+ "english_name": "Abar"
+ },
+ "mim": {
+ "english_name": "Mixtec, Alacatlatzala"
+ },
+ "mil": {
+ "english_name": "Mixtec, Peñoles"
+ },
+ "mio": {
+ "english_name": "Mixtec, Pinotepa Nacional"
+ },
+ "min": {
+ "english_name": "Minangkabau"
+ },
+ "mia": {
+ "english_name": "Miami"
+ },
+ "mic": {
+ "english_name": "Mi'kmaq"
+ },
+ "mib": {
+ "english_name": "Mixtec, Atatláhuca"
+ },
+ "mie": {
+ "english_name": "Mixtec, Ocotepec"
+ },
+ "mid": {
+ "english_name": "Mandaic"
+ },
+ "mig": {
+ "english_name": "Mixtec, San Miguel El Grande"
+ },
+ "mif": {
+ "english_name": "Mofu-Gudur"
+ },
+ "miy": {
+ "english_name": "Mixtec, Ayutla"
+ },
+ "mix": {
+ "english_name": "Mixtec, Mixtepec"
+ },
+ "miz": {
+ "english_name": "Mixtec, Coatzospan"
+ },
+ "miq": {
+ "english_name": "Mískito"
+ },
+ "mip": {
+ "english_name": "Mixtec, Apasco-Apoala"
+ },
+ "mis": {
+ "english_name": "Uncoded languages"
+ },
+ "mir": {
+ "english_name": "Mixe, Isthmus"
+ },
+ "miu": {
+ "english_name": "Mixtec, Cacaloxtepec"
+ },
+ "mit": {
+ "english_name": "Mixtec, Southern Puebla"
+ },
+ "miw": {
+ "english_name": "Akoye"
+ },
+ "sfw": {
+ "english_name": "Sehwi"
+ },
+ "sfs": {
+ "english_name": "South African Sign Language"
+ },
+ "sfm": {
+ "english_name": "Miao, Small Flowery"
+ },
+ "sfe": {
+ "english_name": "Subanen, Eastern"
+ },
+ "sfb": {
+ "english_name": "Langue des signes de Belgique Francophone"
+ },
+ "ksu": {
+ "english_name": "Khamyang"
+ },
+ "kst": {
+ "english_name": "Winyé"
+ },
+ "ksw": {
+ "english_name": "Karen, S'gaw"
+ },
+ "ksv": {
+ "english_name": "Kusu"
+ },
+ "ksq": {
+ "english_name": "Kwaami"
+ },
+ "ksp": {
+ "english_name": "Kaba"
+ },
+ "kss": {
+ "english_name": "Kisi, Southern"
+ },
+ "ksr": {
+ "english_name": "Borong"
+ },
+ "ksy": {
+ "english_name": "Kharia Thar"
+ },
+ "ksx": {
+ "english_name": "Kedang"
+ },
+ "ksz": {
+ "english_name": "Kodaku"
+ },
+ "kse": {
+ "english_name": "Kuni"
+ },
+ "ksd": {
+ "english_name": "Kuanua"
+ },
+ "ksg": {
+ "english_name": "Kusaghe"
+ },
+ "ksf": {
+ "english_name": "Bafia"
+ },
+ "ksa": {
+ "english_name": "Shuwa-Zamani"
+ },
+ "ksc": {
+ "english_name": "Kalinga, Southern"
+ },
+ "ksb": {
+ "english_name": "Shambala"
+ },
+ "ksm": {
+ "english_name": "Kumba"
+ },
+ "ksl": {
+ "english_name": "Kumalu"
+ },
+ "kso": {
+ "english_name": "Kofa"
+ },
+ "ksn": {
+ "english_name": "Kasiguranin"
+ },
+ "ksi": {
+ "english_name": "Krisa"
+ },
+ "ksh": {
+ "english_name": "Kölsch"
+ },
+ "ksk": {
+ "english_name": "Kansa"
+ },
+ "ksj": {
+ "english_name": "Uare"
+ },
+ "xdc": {
+ "english_name": "Dacian"
+ },
+ "xda": {
+ "english_name": "Darkinyung"
+ },
+ "xdm": {
+ "english_name": "Edomite"
+ },
+ "xdk": {
+ "english_name": "Dharuk"
+ },
+ "xdy": {
+ "english_name": "Dayak, Malayic"
+ },
+ "vrs": {
+ "english_name": "Varisi"
+ },
+ "vrt": {
+ "english_name": "Burmbar"
+ },
+ "vra": {
+ "english_name": "Vera'a"
+ },
+ "vro": {
+ "english_name": "Võro"
+ },
+ "ilg": {
+ "english_name": "Garig-Ilgar"
+ },
+ "ilb": {
+ "english_name": "Ila"
+ },
+ "yso": {
+ "english_name": "Nisi (China)"
+ },
+ "ysn": {
+ "english_name": "Sani"
+ },
+ "ysl": {
+ "english_name": "Yugoslavian Sign Language"
+ },
+ "ysc": {
+ "english_name": "Yassic"
+ },
+ "ila": {
+ "english_name": "Ile Ape"
+ },
+ "ysg": {
+ "english_name": "Sonaga"
+ },
+ "uis": {
+ "english_name": "Uisai"
+ },
+ "ysd": {
+ "english_name": "Samatao"
+ },
+ "ysy": {
+ "english_name": "Sanie"
+ },
+ "ilo": {
+ "english_name": "Iloko"
+ },
+ "yss": {
+ "english_name": "Yessan-Mayo"
+ },
+ "ysr": {
+ "english_name": "Yupik, Sirenik"
+ },
+ "ysp": {
+ "english_name": "Lolopo, Southern"
+ },
+ "uiv": {
+ "english_name": "Iyive"
+ },
+ "ay": {
+ "english_name": "Aymara"
+ },
+ "coa": {
+ "english_name": "Malay, Cocos Islands"
+ },
+ "cjh": {
+ "english_name": "Chehalis, Upper"
+ },
+ "cji": {
+ "english_name": "Chamalal"
+ },
+ "cjn": {
+ "english_name": "Chenapian"
+ },
+ "cjo": {
+ "english_name": "Ashéninka Pajonal"
+ },
+ "cjm": {
+ "english_name": "Cham, Eastern"
+ },
+ "cja": {
+ "english_name": "Cham, Western"
+ },
+ "cje": {
+ "english_name": "Chru"
+ },
+ "ilu": {
+ "english_name": "Ili'uun"
+ },
+ "cjs": {
+ "english_name": "Shor"
+ },
+ "cjp": {
+ "english_name": "Cabécar"
+ },
+ "cjv": {
+ "english_name": "Chuave"
+ },
+ "ils": {
+ "english_name": "International Sign"
+ },
+ "iow": {
+ "english_name": "Iowa-Oto"
+ },
+ "iou": {
+ "english_name": "Tuma-Irumu"
+ },
+ "ior": {
+ "english_name": "Inor"
+ },
+ "wyr": {
+ "english_name": "Wayoró"
+ },
+ "wyy": {
+ "english_name": "Fijian, Western"
+ },
+ "wyb": {
+ "english_name": "Wangaaybuwan-Ngiyambaa"
+ },
+ "wya": {
+ "english_name": "Wyandot"
+ },
+ "wym": {
+ "english_name": "Wymysorys"
+ },
+ "qvh": {
+ "english_name": "Quechua, Huamalíes-Dos de Mayo Huánuco"
+ },
+ "wyi": {
+ "english_name": "Woiwurrung"
+ },
+ "adw": {
+ "english_name": "Amundava"
+ },
+ "adt": {
+ "english_name": "Adnyamathanha"
+ },
+ "gmh": {
+ "english_name": "German, Middle High (ca. 1050-1500)"
+ },
+ "adr": {
+ "english_name": "Adonara"
+ },
+ "gmn": {
+ "english_name": "Gimnime"
+ },
+ "gmm": {
+ "english_name": "Gbaya-Mbodomo"
+ },
+ "gml": {
+ "english_name": "German, Middle Low"
+ },
+ "gmb": {
+ "english_name": "Gula'alaa"
+ },
+ "gma": {
+ "english_name": "Gambera"
+ },
+ "adz": {
+ "english_name": "Adzera"
+ },
+ "adx": {
+ "english_name": "Tibetan, Amdo"
+ },
+ "gmd": {
+ "english_name": "Mághdì"
+ },
+ "adf": {
+ "english_name": "Arabic, Dhofari"
+ },
+ "gmz": {
+ "english_name": "Mgbolizhia"
+ },
+ "gmy": {
+ "english_name": "Greek, Mycenaean"
+ },
+ "gmx": {
+ "english_name": "Magoma"
+ },
+ "adb": {
+ "english_name": "Adabe"
+ },
+ "ada": {
+ "english_name": "Adangme"
+ },
+ "adn": {
+ "english_name": "Adang"
+ },
+ "ado": {
+ "english_name": "Abu"
+ },
+ "adl": {
+ "english_name": "Galo"
+ },
+ "adj": {
+ "english_name": "Adioukrou"
+ },
+ "gmv": {
+ "english_name": "Gamo"
+ },
+ "gmu": {
+ "english_name": "Gumalu"
+ },
+ "adi": {
+ "english_name": "Adi"
+ },
+ "njb": {
+ "english_name": "Naga, Nocte"
+ },
+ "nja": {
+ "english_name": "Nzanyi"
+ },
+ "njd": {
+ "english_name": "Ndonde Hamba"
+ },
+ "njj": {
+ "english_name": "Njen"
+ },
+ "nji": {
+ "english_name": "Gudanji"
+ },
+ "njh": {
+ "english_name": "Naga, Lotha"
+ },
+ "njo": {
+ "english_name": "Naga, Ao"
+ },
+ "njn": {
+ "english_name": "Naga, Liangmai"
+ },
+ "njm": {
+ "english_name": "Naga, Angami"
+ },
+ "njl": {
+ "english_name": "Njalgulgule"
+ },
+ "njs": {
+ "english_name": "Nisa"
+ },
+ "njr": {
+ "english_name": "Njerep"
+ },
+ "nju": {
+ "english_name": "Ngadjunmaya"
+ },
+ "njt": {
+ "english_name": "Ndyuka-Trio Pidgin"
+ },
+ "njz": {
+ "english_name": "Nyishi"
+ },
+ "njy": {
+ "english_name": "Njyem"
+ },
+ "njx": {
+ "english_name": "Kunyi"
+ },
+ "tmp": {
+ "english_name": "Tai Mène"
+ },
+ "tmq": {
+ "english_name": "Tumleo"
+ },
+ "esu": {
+ "english_name": "Yupik, Central"
+ },
+ "tms": {
+ "english_name": "Tima"
+ },
+ "ess": {
+ "english_name": "Yupik, Central Siberian"
+ },
+ "tmu": {
+ "english_name": "Iau"
+ },
+ "esq": {
+ "english_name": "Esselen"
+ },
+ "tmw": {
+ "english_name": "Temuan"
+ },
+ "tmy": {
+ "english_name": "Tami"
+ },
+ "tmz": {
+ "english_name": "Tamanaku"
+ },
+ "tma": {
+ "english_name": "Tama (Chad)"
+ },
+ "ese": {
+ "english_name": "Ese Ejja"
+ },
+ "tmc": {
+ "english_name": "Tumak"
+ },
+ "tmd": {
+ "english_name": "Haruai"
+ },
+ "tme": {
+ "english_name": "Tremembé"
+ },
+ "tmf": {
+ "english_name": "Toba-Maskoy"
+ },
+ "tmg": {
+ "english_name": "Ternateño"
+ },
+ "eso": {
+ "english_name": "Estonian Sign Language"
+ },
+ "esn": {
+ "english_name": "Salvadoran Sign Language"
+ },
+ "esm": {
+ "english_name": "Esuma"
+ },
+ "esl": {
+ "english_name": "Egypt Sign Language"
+ },
+ "esk": {
+ "english_name": "Inupiatun, Northwest Alaska"
+ },
+ "tmm": {
+ "english_name": "Tai Thanh"
+ },
+ "esi": {
+ "english_name": "Inupiatun, North Alaskan"
+ },
+ "esh": {
+ "english_name": "Eshtehardi"
+ },
+ "dcc": {
+ "english_name": "Deccan"
+ },
+ "dcr": {
+ "english_name": "Negerhollands"
+ },
+ "rcf": {
+ "english_name": "Creole French, Réunion"
+ },
+ "buz": {
+ "english_name": "Bukwen"
+ },
+ "bux": {
+ "english_name": "Boghom"
+ },
+ "buy": {
+ "english_name": "Bullom So"
+ },
+ "bus": {
+ "english_name": "Bokobaru"
+ },
+ "bup": {
+ "english_name": "Busoa"
+ },
+ "buq": {
+ "english_name": "Brem"
+ },
+ "buv": {
+ "english_name": "Bun"
+ },
+ "buw": {
+ "english_name": "Bubi"
+ },
+ "but": {
+ "english_name": "Bungain"
+ },
+ "buu": {
+ "english_name": "Budu"
+ },
+ "buj": {
+ "english_name": "Basa-Gurmana"
+ },
+ "buk": {
+ "english_name": "Bugawac"
+ },
+ "buh": {
+ "english_name": "Bunu, Younuo"
+ },
+ "bui": {
+ "english_name": "Bongili"
+ },
+ "bun": {
+ "english_name": "Sherbro"
+ },
+ "buo": {
+ "english_name": "Terei"
+ },
+ "bum": {
+ "english_name": "Bulu (Cameroon)"
+ },
+ "bub": {
+ "english_name": "Bua"
+ },
+ "buc": {
+ "english_name": "Bushi"
+ },
+ "bua": {
+ "english_name": "Buriat"
+ },
+ "buf": {
+ "english_name": "Bushoong"
+ },
+ "bug": {
+ "english_name": "Buginese"
+ },
+ "bud": {
+ "english_name": "Ntcham"
+ },
+ "bue": {
+ "english_name": "Beothuk"
+ },
+ "tjw": {
+ "english_name": "Djabwurrung"
+ },
+ "pih": {
+ "english_name": "Pitcairn-Norfolk"
+ },
+ "pii": {
+ "english_name": "Pini"
+ },
+ "pij": {
+ "english_name": "Pijao"
+ },
+ "pil": {
+ "english_name": "Yom"
+ },
+ "pim": {
+ "english_name": "Powhatan"
+ },
+ "pin": {
+ "english_name": "Piame"
+ },
+ "pio": {
+ "english_name": "Piapoco"
+ },
+ "pia": {
+ "english_name": "Pima Bajo"
+ },
+ "pib": {
+ "english_name": "Yine"
+ },
+ "pic": {
+ "english_name": "Pinji"
+ },
+ "pid": {
+ "english_name": "Piaroa"
+ },
+ "pie": {
+ "english_name": "Piro"
+ },
+ "pif": {
+ "english_name": "Pingelapese"
+ },
+ "pig": {
+ "english_name": "Pisabo"
+ },
+ "pix": {
+ "english_name": "Piu"
+ },
+ "piy": {
+ "english_name": "Piya-Kwonci"
+ },
+ "piz": {
+ "english_name": "Pije"
+ },
+ "pip": {
+ "english_name": "Pero"
+ },
+ "pir": {
+ "english_name": "Piratapuyo"
+ },
+ "pis": {
+ "english_name": "Pijin"
+ },
+ "pit": {
+ "english_name": "Pitta Pitta"
+ },
+ "piu": {
+ "english_name": "Pintupi-Luritja"
+ },
+ "piv": {
+ "english_name": "Pileni"
+ },
+ "piw": {
+ "english_name": "Pimbwe"
+ },
+ "oac": {
+ "english_name": "Oroch"
+ },
+ "oaa": {
+ "english_name": "Orok"
+ },
+ "oav": {
+ "english_name": "Avar, Old"
+ },
+ "oar": {
+ "english_name": "Aramaic, Old (up to 700 BCE)"
+ },
+ "ubu": {
+ "english_name": "Umbu-Ungu"
+ },
+ "ubr": {
+ "english_name": "Ubir"
+ },
+ "uby": {
+ "english_name": "Ubykh"
+ },
+ "uba": {
+ "english_name": "Ubang"
+ },
+ "ubl": {
+ "english_name": "Bikol, Buhi'non"
+ },
+ "ubi": {
+ "english_name": "Ubi"
+ },
+ "nwr": {
+ "english_name": "Nawaru"
+ },
+ "scl": {
+ "english_name": "Shina"
+ },
+ "nwx": {
+ "english_name": "Newar, Middle"
+ },
+ "nwy": {
+ "english_name": "Nottoway-Meherrin"
+ },
+ "nwe": {
+ "english_name": "Ngwe"
+ },
+ "nwg": {
+ "english_name": "Ngayawung"
+ },
+ "nwa": {
+ "english_name": "Nawathinehena"
+ },
+ "nwb": {
+ "english_name": "Nyabwa"
+ },
+ "nwc": {
+ "english_name": "Newari, Classical"
+ },
+ "nwm": {
+ "english_name": "Nyamusa-Molo"
+ },
+ "nwo": {
+ "english_name": "Nauo"
+ },
+ "nwi": {
+ "english_name": "Tanna, Southwest"
+ },
+ "mws": {
+ "english_name": "Mwimbi-Muthambi"
+ },
+ "mwr": {
+ "english_name": "Marwari"
+ },
+ "mwq": {
+ "english_name": "Chin, Mün"
+ },
+ "mwp": {
+ "english_name": "Kala Lagaw Ya"
+ },
+ "mww": {
+ "english_name": "Hmong Daw"
+ },
+ "mwv": {
+ "english_name": "Mentawai"
+ },
+ "mwu": {
+ "english_name": "Mittu"
+ },
+ "mwt": {
+ "english_name": "Moken"
+ },
+ "mwz": {
+ "english_name": "Moingi"
+ },
+ "mwy": {
+ "english_name": "Mosiro"
+ },
+ "mwx": {
+ "english_name": "Mediak"
+ },
+ "mwc": {
+ "english_name": "Are"
+ },
+ "mwb": {
+ "english_name": "Juwal"
+ },
+ "mwa": {
+ "english_name": "Mwatebu"
+ },
+ "mwg": {
+ "english_name": "Aiklep"
+ },
+ "mwf": {
+ "english_name": "Murrinh-Patha"
+ },
+ "mwe": {
+ "english_name": "Mwera (Chimwera)"
+ },
+ "mwk": {
+ "english_name": "Maninkakan, Kita"
+ },
+ "mwi": {
+ "english_name": "Labo"
+ },
+ "mwh": {
+ "english_name": "Mouk-Aria"
+ },
+ "mwo": {
+ "english_name": "Maewo, Central"
+ },
+ "mwn": {
+ "english_name": "Nyamwanga"
+ },
+ "mwm": {
+ "english_name": "Sar"
+ },
+ "mwl": {
+ "english_name": "Mirandese"
+ },
+ "scf": {
+ "english_name": "Creole French, San Miguel"
+ },
+ "scb": {
+ "english_name": "Chut"
+ },
+ "aix": {
+ "english_name": "Aighon"
+ },
+ "zdj": {
+ "english_name": "Comorian, Ngazidja"
+ },
+ "scx": {
+ "english_name": "Sicel"
+ },
+ "scw": {
+ "english_name": "Sha"
+ },
+ "aim": {
+ "english_name": "Aimol"
+ },
+ "scv": {
+ "english_name": "Sheni"
+ },
+ "kuz": {
+ "english_name": "Kunza"
+ },
+ "kuy": {
+ "english_name": "Kuuku-Ya'u"
+ },
+ "ail": {
+ "english_name": "Aimele"
+ },
+ "kuw": {
+ "english_name": "Kpagua"
+ },
+ "kuv": {
+ "english_name": "Kur"
+ },
+ "kuu": {
+ "english_name": "Kuskokwim, Upper"
+ },
+ "kut": {
+ "english_name": "Kutenai"
+ },
+ "kus": {
+ "english_name": "Kusaal"
+ },
+ "kuq": {
+ "english_name": "Karipuna"
+ },
+ "kup": {
+ "english_name": "Kunimaipa"
+ },
+ "kuo": {
+ "english_name": "Kumukio"
+ },
+ "kun": {
+ "english_name": "Kunama"
+ },
+ "kum": {
+ "english_name": "Kumyk"
+ },
+ "kul": {
+ "english_name": "Kulere"
+ },
+ "kuk": {
+ "english_name": "Kepo'"
+ },
+ "kuj": {
+ "english_name": "Kuria"
+ },
+ "kui": {
+ "english_name": "Kuikúro-Kalapálo"
+ },
+ "kuh": {
+ "english_name": "Kushi"
+ },
+ "kug": {
+ "english_name": "Kupa"
+ },
+ "kuf": {
+ "english_name": "Katu, Western"
+ },
+ "kue": {
+ "english_name": "Kuman"
+ },
+ "kud": {
+ "english_name": "'Auhelawa"
+ },
+ "kuc": {
+ "english_name": "Kwinsu"
+ },
+ "kub": {
+ "english_name": "Kutep"
+ },
+ "aih": {
+ "english_name": "Ai-Cham"
+ },
+ "aik": {
+ "english_name": "Ake"
+ },
+ "xfa": {
+ "english_name": "Faliscan"
+ },
+ "aij": {
+ "english_name": "Lishanid Noshan"
+ },
+ "aid": {
+ "english_name": "Alngith"
+ },
+ "gnh": {
+ "english_name": "Lere"
+ },
+ "zmo": {
+ "english_name": "Molo"
+ },
+ "gni": {
+ "english_name": "Gooniyandi"
+ },
+ "wdd": {
+ "english_name": "Wandji"
+ },
+ "wdg": {
+ "english_name": "Wadaginam"
+ },
+ "aia": {
+ "english_name": "Arosi"
+ },
+ "wdj": {
+ "english_name": "Wadjiginy"
+ },
+ "qve": {
+ "english_name": "Quechua, Eastern Apurímac"
+ },
+ "gnl": {
+ "english_name": "Gangulu"
+ },
+ "zmc": {
+ "english_name": "Margany"
+ },
+ "bgw": {
+ "english_name": "Bhatri"
+ },
+ "gnm": {
+ "english_name": "Ginuman"
+ },
+ "zmf": {
+ "english_name": "Mfinu"
+ },
+ "zmg": {
+ "english_name": "Marti Ke"
+ },
+ "zmz": {
+ "english_name": "Mbandja"
+ },
+ "zmx": {
+ "english_name": "Bomitaba"
+ },
+ "zms": {
+ "english_name": "Mbesa"
+ },
+ "mg": {
+ "english_name": "Malagasy"
+ },
+ "zmq": {
+ "english_name": "Mituku"
+ },
+ "ml": {
+ "english_name": "Malayalam"
+ },
+ "mn": {
+ "name": "Монгол",
+ "english_name": "Mongolian"
+ },
+ "mi": {
+ "name": "Reo Māori",
+ "english_name": "Maori"
+ },
+ "mh": {
+ "english_name": "Marshallese"
+ },
+ "mk": {
+ "name": "Македонски",
+ "english_name": "Macedonian"
+ },
+ "mt": {
+ "name": "Malti",
+ "english_name": "Maltese"
+ },
+ "ms": {
+ "name": "Malay (macrolanguage)",
+ "english_name": "Malay (macrolanguage)"
+ },
+ "mr": {
+ "name": "मराठी",
+ "english_name": "Marathi"
+ },
+ "zmu": {
+ "english_name": "Muruwari"
+ },
+ "my": {
+ "english_name": "Burmese"
+ },
+ "ena": {
+ "english_name": "Apali"
+ },
+ "enb": {
+ "english_name": "Markweeta"
+ },
+ "enc": {
+ "english_name": "En"
+ },
+ "end": {
+ "english_name": "Ende"
+ },
+ "enf": {
+ "english_name": "Enets, Forest"
+ },
+ "enh": {
+ "english_name": "Enets, Tundra"
+ },
+ "enm": {
+ "english_name": "English, Middle (1100-1500)"
+ },
+ "enn": {
+ "english_name": "Engenni"
+ },
+ "eno": {
+ "english_name": "Enggano"
+ },
+ "enq": {
+ "english_name": "Enga"
+ },
+ "enr": {
+ "english_name": "Emumu"
+ },
+ "enu": {
+ "english_name": "Enu"
+ },
+ "env": {
+ "english_name": "Enwan (Edu State)"
+ },
+ "enw": {
+ "english_name": "Enwan (Akwa Ibom State)"
+ },
+ "cll": {
+ "english_name": "Chala"
+ },
+ "clm": {
+ "english_name": "Clallam"
+ },
+ "clo": {
+ "english_name": "Chontal, Lowland Oaxaca"
+ },
+ "clh": {
+ "english_name": "Chilisso"
+ },
+ "cli": {
+ "english_name": "Chakali"
+ },
+ "clj": {
+ "english_name": "Chin, Laitu"
+ },
+ "clk": {
+ "english_name": "Idu-Mishmi"
+ },
+ "cld": {
+ "english_name": "Neo-Aramaic, Chaldean"
+ },
+ "cle": {
+ "english_name": "Chinantec, Lealao"
+ },
+ "cla": {
+ "english_name": "Ron"
+ },
+ "imo": {
+ "english_name": "Imbongu"
+ },
+ "clc": {
+ "english_name": "Chilcotin"
+ },
+ "ims": {
+ "english_name": "Marsian"
+ },
+ "imr": {
+ "english_name": "Imroing"
+ },
+ "cly": {
+ "english_name": "Chatino, Eastern Highland"
+ },
+ "clt": {
+ "english_name": "Chin, Lautu"
+ },
+ "clu": {
+ "english_name": "Caluyanun"
+ },
+ "clw": {
+ "english_name": "Chulym"
+ },
+ "gom": {
+ "english_name": "Konkani, Goan"
+ },
+ "gol": {
+ "english_name": "Gola"
+ },
+ "ajz": {
+ "english_name": "Karbi, Amri"
+ },
+ "gon": {
+ "english_name": "Gondi"
+ },
+ "goi": {
+ "english_name": "Gobasi"
+ },
+ "goh": {
+ "english_name": "German, Old High (ca. 750-1050)"
+ },
+ "gok": {
+ "english_name": "Gowli"
+ },
+ "goj": {
+ "english_name": "Gowlan"
+ },
+ "ajp": {
+ "english_name": "Arabic, South Levantine"
+ },
+ "god": {
+ "english_name": "Godié"
+ },
+ "gog": {
+ "english_name": "Gogo"
+ },
+ "gof": {
+ "english_name": "Gofa"
+ },
+ "ajt": {
+ "english_name": "Arabic, Judeo-Tunisian"
+ },
+ "aju": {
+ "english_name": "Arabic, Judeo-Moroccan"
+ },
+ "goc": {
+ "english_name": "Gorakor"
+ },
+ "ajw": {
+ "english_name": "Ajawa"
+ },
+ "aji": {
+ "english_name": "Ajië"
+ },
+ "goy": {
+ "english_name": "Goundo"
+ },
+ "gox": {
+ "english_name": "Gobu"
+ },
+ "ajn": {
+ "english_name": "Andajin"
+ },
+ "goz": {
+ "english_name": "Gozarkhani"
+ },
+ "gou": {
+ "english_name": "Gavar"
+ },
+ "aja": {
+ "english_name": "Aja (Sudan)"
+ },
+ "gow": {
+ "english_name": "Gorowa"
+ },
+ "goq": {
+ "english_name": "Gorap"
+ },
+ "gop": {
+ "english_name": "Yeretuar"
+ },
+ "gos": {
+ "english_name": "Gronings"
+ },
+ "ajg": {
+ "english_name": "Aja (Benin)"
+ },
+ "nhe": {
+ "english_name": "Nahuatl, Eastern Huasteca"
+ },
+ "nhd": {
+ "english_name": "Chiripá"
+ },
+ "nhg": {
+ "english_name": "Nahuatl, Tetelcingo"
+ },
+ "nhf": {
+ "english_name": "Nhuwala"
+ },
+ "nha": {
+ "english_name": "Nhanda"
+ },
+ "nhc": {
+ "english_name": "Nahuatl, Tabasco"
+ },
+ "nhb": {
+ "english_name": "Beng"
+ },
+ "nhm": {
+ "english_name": "Nahuatl, Morelos"
+ },
+ "nho": {
+ "english_name": "Takuu"
+ },
+ "nhn": {
+ "english_name": "Nahuatl, Central"
+ },
+ "nhi": {
+ "english_name": "Nahuatl, Zacatlán-Ahuacatlán-Tepetzintla"
+ },
+ "nhh": {
+ "english_name": "Nahari"
+ },
+ "nhk": {
+ "english_name": "Nahuatl, Isthmus-Cosoleacaque"
+ },
+ "nhu": {
+ "english_name": "Noone"
+ },
+ "nht": {
+ "english_name": "Nahuatl, Ometepec"
+ },
+ "nhw": {
+ "english_name": "Nahuatl, Western Huasteca"
+ },
+ "nhv": {
+ "english_name": "Nahuatl, Temascaltepec"
+ },
+ "nhq": {
+ "english_name": "Nahuatl, Huaxcaleca"
+ },
+ "nhp": {
+ "english_name": "Nahuatl, Isthmus-Pajapan"
+ },
+ "nhr": {
+ "english_name": "Naro"
+ },
+ "nhy": {
+ "english_name": "Nahuatl, Northern Oaxaca"
+ },
+ "nhx": {
+ "english_name": "Nahuatl, Isthmus-Mecayapan"
+ },
+ "nhz": {
+ "english_name": "Nahuatl, Santa María La Alta"
+ },
+ "toz": {
+ "english_name": "To"
+ },
+ "tox": {
+ "english_name": "Tobian"
+ },
+ "toy": {
+ "english_name": "Topoiyo"
+ },
+ "tor": {
+ "english_name": "Banda, Togbo-Vara"
+ },
+ "tos": {
+ "english_name": "Totonac, Highland"
+ },
+ "top": {
+ "english_name": "Totonac, Papantla"
+ },
+ "toq": {
+ "english_name": "Toposa"
+ },
+ "tov": {
+ "english_name": "Taromi, Upper"
+ },
+ "tow": {
+ "english_name": "Jemez"
+ },
+ "tou": {
+ "english_name": "Tho"
+ },
+ "toj": {
+ "english_name": "Tojolabal"
+ },
+ "toh": {
+ "english_name": "Gitonga"
+ },
+ "toi": {
+ "english_name": "Tonga (Zambia)"
+ },
+ "too": {
+ "english_name": "Totonac, Xicotepec De Juárez"
+ },
+ "tol": {
+ "english_name": "Tolowa"
+ },
+ "tom": {
+ "english_name": "Tombulu"
+ },
+ "tob": {
+ "english_name": "Toba"
+ },
+ "toc": {
+ "english_name": "Totonac, Coyutla"
+ },
+ "tof": {
+ "english_name": "Gizrra"
+ },
+ "tog": {
+ "english_name": "Tonga (Nyasa)"
+ },
+ "tod": {
+ "english_name": "Toma"
+ },
+ "toe": {
+ "english_name": "Tomedes"
+ },
+ "aez": {
+ "english_name": "Aeka"
+ },
+ "tue": {
+ "english_name": "Tuyuca"
+ },
+ "lbq": {
+ "english_name": "Wampar"
+ },
+ "rag": {
+ "english_name": "Logooli"
+ },
+ "lbs": {
+ "english_name": "Libyan Sign Language"
+ },
+ "lbr": {
+ "english_name": "Lohorung"
+ },
+ "lbu": {
+ "english_name": "Labu"
+ },
+ "lbt": {
+ "english_name": "Lachi"
+ },
+ "lbw": {
+ "english_name": "Tolaki"
+ },
+ "lbv": {
+ "english_name": "Lavatbura-Lamusong"
+ },
+ "lby": {
+ "english_name": "Lamu-Lamu"
+ },
+ "lbx": {
+ "english_name": "Lawangan"
+ },
+ "ral": {
+ "english_name": "Ralte"
+ },
+ "lbz": {
+ "english_name": "Lardil"
+ },
+ "raj": {
+ "english_name": "Rajasthani"
+ },
+ "rak": {
+ "english_name": "Tulu-Bohuai"
+ },
+ "rah": {
+ "english_name": "Rabha"
+ },
+ "rai": {
+ "english_name": "Ramoaaina"
+ },
+ "lba": {
+ "english_name": "Lui"
+ },
+ "raw": {
+ "english_name": "Rawang"
+ },
+ "lbc": {
+ "english_name": "Lakkia"
+ },
+ "lbb": {
+ "english_name": "Label"
+ },
+ "lbe": {
+ "english_name": "Lak"
+ },
+ "ras": {
+ "english_name": "Tegali"
+ },
+ "lbg": {
+ "english_name": "Laopang"
+ },
+ "lbf": {
+ "english_name": "Tinani"
+ },
+ "lbi": {
+ "english_name": "La'bi"
+ },
+ "lbk": {
+ "english_name": "Bontok, Central"
+ },
+ "lbj": {
+ "english_name": "Ladakhi"
+ },
+ "lbm": {
+ "english_name": "Lodhi"
+ },
+ "lbl": {
+ "english_name": "Bikol, Libon"
+ },
+ "lbo": {
+ "english_name": "Laven"
+ },
+ "lbn": {
+ "english_name": "Lamet"
+ },
+ "bsx": {
+ "english_name": "Yangkam"
+ },
+ "bsy": {
+ "english_name": "Bisaya, Sabah"
+ },
+ "bst": {
+ "english_name": "Basketo"
+ },
+ "bsu": {
+ "english_name": "Bahonsuai"
+ },
+ "bsv": {
+ "english_name": "Baga Sobané"
+ },
+ "bsw": {
+ "english_name": "Baiso"
+ },
+ "bsp": {
+ "english_name": "Baga Sitemu"
+ },
+ "bsq": {
+ "english_name": "Bassa"
+ },
+ "bsr": {
+ "english_name": "Bassa-Kontagora"
+ },
+ "bss": {
+ "english_name": "Akoose"
+ },
+ "bsl": {
+ "english_name": "Basa-Gumna"
+ },
+ "bsm": {
+ "english_name": "Busami"
+ },
+ "bsn": {
+ "english_name": "Barasana-Eduria"
+ },
+ "bso": {
+ "english_name": "Buso"
+ },
+ "bsh": {
+ "english_name": "Kati"
+ },
+ "bsi": {
+ "english_name": "Bassossi"
+ },
+ "bsj": {
+ "english_name": "Bangwinji"
+ },
+ "bsk": {
+ "english_name": "Burushaski"
+ },
+ "bse": {
+ "english_name": "Wushi"
+ },
+ "bsf": {
+ "english_name": "Bauchi"
+ },
+ "bsg": {
+ "english_name": "Bashkardi"
+ },
+ "qya": {
+ "english_name": "Quenya"
+ },
+ "bsa": {
+ "english_name": "Abinomn"
+ },
+ "bsb": {
+ "english_name": "Bisaya, Brunei"
+ },
+ "bsc": {
+ "english_name": "Bassari"
+ },
+ "pkr": {
+ "english_name": "Kurumba, Attapady"
+ },
+ "pks": {
+ "english_name": "Pakistan Sign Language"
+ },
+ "pkp": {
+ "english_name": "Pukapuka"
+ },
+ "pkt": {
+ "english_name": "Maleng"
+ },
+ "pku": {
+ "english_name": "Paku"
+ },
+ "pkb": {
+ "english_name": "Pokomo"
+ },
+ "pkc": {
+ "english_name": "Paekche"
+ },
+ "pka": {
+ "english_name": "Prākrit, Ardhamāgadhī"
+ },
+ "pkg": {
+ "english_name": "Pak-Tong"
+ },
+ "pkh": {
+ "english_name": "Pankhu"
+ },
+ "pkn": {
+ "english_name": "Pakanha"
+ },
+ "pko": {
+ "english_name": "Pökoot"
+ },
+ "och": {
+ "english_name": "Chinese, Old"
+ },
+ "oco": {
+ "english_name": "Cornish, Old"
+ },
+ "oca": {
+ "english_name": "Ocaina"
+ },
+ "ocu": {
+ "english_name": "Matlatzinca, Atzingo"
+ },
+ "xom": {
+ "english_name": "Komo (Sudan)"
+ },
+ "nuz": {
+ "english_name": "Nahuatl, Tlamacazapa"
+ },
+ "nux": {
+ "english_name": "Mehek"
+ },
+ "nuy": {
+ "english_name": "Nunggubuyu"
+ },
+ "nuv": {
+ "english_name": "Nuni, Northern"
+ },
+ "nuw": {
+ "english_name": "Nguluwan"
+ },
+ "nut": {
+ "english_name": "Nung (Viet Nam)"
+ },
+ "nuu": {
+ "english_name": "Ngbundu"
+ },
+ "nur": {
+ "english_name": "Nukuria"
+ },
+ "nus": {
+ "english_name": "Nuer"
+ },
+ "nup": {
+ "english_name": "Nupe-Nupe-Tako"
+ },
+ "nuq": {
+ "english_name": "Nukumanu"
+ },
+ "nun": {
+ "english_name": "Anong"
+ },
+ "nuo": {
+ "english_name": "Nguôn"
+ },
+ "nul": {
+ "english_name": "Nusa Laut"
+ },
+ "num": {
+ "english_name": "Niuafo'ou"
+ },
+ "nuj": {
+ "english_name": "Nyole"
+ },
+ "nuk": {
+ "english_name": "Nuu-chah-nulth"
+ },
+ "nuh": {
+ "english_name": "Ndunda"
+ },
+ "nui": {
+ "english_name": "Ngumbi"
+ },
+ "nuf": {
+ "english_name": "Nusu"
+ },
+ "nug": {
+ "english_name": "Nungali"
+ },
+ "nud": {
+ "english_name": "Ngala"
+ },
+ "nue": {
+ "english_name": "Ngundu"
+ },
+ "nuc": {
+ "english_name": "Nukuini"
+ },
+ "nua": {
+ "english_name": "Yuanga"
+ },
+ "muu": {
+ "english_name": "Yaaku"
+ },
+ "mut": {
+ "english_name": "Muria, Western"
+ },
+ "muv": {
+ "english_name": "Muthuvan"
+ },
+ "muq": {
+ "english_name": "Miao, Eastern Xiangxi"
+ },
+ "mup": {
+ "english_name": "Malvi"
+ },
+ "mus": {
+ "english_name": "Creek"
+ },
+ "mur": {
+ "english_name": "Murle"
+ },
+ "muy": {
+ "english_name": "Muyang"
+ },
+ "mux": {
+ "english_name": "Bo-Ung"
+ },
+ "muz": {
+ "english_name": "Mursi"
+ },
+ "mue": {
+ "english_name": "Media Lengua"
+ },
+ "mud": {
+ "english_name": "Aleut, Mednyj"
+ },
+ "mug": {
+ "english_name": "Musgu"
+ },
+ "mua": {
+ "english_name": "Mundang"
+ },
+ "muc": {
+ "english_name": "Ajumbu"
+ },
+ "mub": {
+ "english_name": "Mubi"
+ },
+ "mum": {
+ "english_name": "Maiwala"
+ },
+ "mul": {
+ "english_name": "Multiple languages"
+ },
+ "muo": {
+ "english_name": "Nyong"
+ },
+ "mui": {
+ "english_name": "Musi"
+ },
+ "muh": {
+ "english_name": "Mündü"
+ },
+ "muk": {
+ "english_name": "Mugom"
+ },
+ "muj": {
+ "english_name": "Mabire"
+ },
+ "zbe": {
+ "english_name": "Berawan, East"
+ },
+ "zbc": {
+ "english_name": "Berawan, Central"
+ },
+ "zbl": {
+ "english_name": "Blissymbols"
+ },
+ "zbw": {
+ "english_name": "Berawan, West"
+ },
+ "zbt": {
+ "english_name": "Batui"
+ },
+ "kwa": {
+ "english_name": "Dâw"
+ },
+ "kwc": {
+ "english_name": "Likwala"
+ },
+ "kwb": {
+ "english_name": "Kwa"
+ },
+ "kwe": {
+ "english_name": "Kwerba"
+ },
+ "kwd": {
+ "english_name": "Kwaio"
+ },
+ "kwg": {
+ "english_name": "Sara Kaba Deme"
+ },
+ "kwf": {
+ "english_name": "Kwara'ae"
+ },
+ "kwi": {
+ "english_name": "Awa-Cuaiquer"
+ },
+ "kwh": {
+ "english_name": "Kowiai"
+ },
+ "kwk": {
+ "english_name": "Kwakiutl"
+ },
+ "kwj": {
+ "english_name": "Kwanga"
+ },
+ "kwm": {
+ "english_name": "Kwambi"
+ },
+ "kwl": {
+ "english_name": "Kofyar"
+ },
+ "kwo": {
+ "english_name": "Kwomtari"
+ },
+ "kwn": {
+ "english_name": "Kwangali"
+ },
+ "kwp": {
+ "english_name": "Kodia"
+ },
+ "kws": {
+ "english_name": "Kwese"
+ },
+ "kwr": {
+ "english_name": "Kwer"
+ },
+ "kwu": {
+ "english_name": "Kwakum"
+ },
+ "kwt": {
+ "english_name": "Kwesten"
+ },
+ "kww": {
+ "english_name": "Kwinti"
+ },
+ "kwv": {
+ "english_name": "Sara Kaba Náà"
+ },
+ "kwy": {
+ "english_name": "Kongo, San Salvador"
+ },
+ "kwx": {
+ "english_name": "Khirwar"
+ },
+ "kwz": {
+ "english_name": "Kwadi"
+ },
+ "rth": {
+ "english_name": "Ratahan"
+ },
+ "xxr": {
+ "english_name": "Koropó"
+ },
+ "xxt": {
+ "english_name": "Tambora"
+ },
+ "xxb": {
+ "english_name": "Boro (Ghana)"
+ },
+ "xxk": {
+ "english_name": "Ke'o"
+ },
+ "xxm": {
+ "english_name": "Minkin"
+ },
+ "wfg": {
+ "english_name": "Yafi"
+ },
+ "rnn": {
+ "english_name": "Roon"
+ },
+ "rnl": {
+ "english_name": "Ranglong"
+ },
+ "elk": {
+ "english_name": "Elkei"
+ },
+ "elh": {
+ "english_name": "El Hugeirat"
+ },
+ "eli": {
+ "english_name": "Nding"
+ },
+ "elo": {
+ "english_name": "El Molo"
+ },
+ "elm": {
+ "english_name": "Eleme"
+ },
+ "ele": {
+ "english_name": "Elepi"
+ },
+ "elx": {
+ "english_name": "Elamite"
+ },
+ "elu": {
+ "english_name": "Elu"
+ },
+ "qxa": {
+ "english_name": "Quechua, Chiquián Ancash"
+ },
+ "yww": {
+ "english_name": "Yawarawarga"
+ },
+ "ywu": {
+ "english_name": "Nasu, Wumeng"
+ },
+ "ywt": {
+ "english_name": "Lalo, Xishanba"
+ },
+ "ywr": {
+ "english_name": "Yawuru"
+ },
+ "ywq": {
+ "english_name": "Yi, Wuding-Luquan"
+ },
+ "jyy": {
+ "english_name": "Jaya"
+ },
+ "ywg": {
+ "english_name": "Yinhawangka"
+ },
+ "jye": {
+ "english_name": "Arabic, Judeo-Yemeni"
+ },
+ "ywa": {
+ "english_name": "Kalou"
+ },
+ "jya": {
+ "english_name": "Jiarong"
+ },
+ "ywn": {
+ "english_name": "Yawanawa"
+ },
+ "ywl": {
+ "english_name": "Lalu, Western"
+ },
+ "qxh": {
+ "english_name": "Quechua, Panao Huánuco"
+ },
+ "qxn": {
+ "english_name": "Quechua, Northern Conchucos Ancash"
+ },
+ "qxo": {
+ "english_name": "Quechua, Southern Conchucos Ancash"
+ },
+ "qxl": {
+ "english_name": "Quichua, Salasaca Highland"
+ },
+ "wdk": {
+ "english_name": "Wadikali"
+ },
+ "cnw": {
+ "english_name": "Chin, Ngawn"
+ },
+ "cnt": {
+ "english_name": "Chinantec, Tepetotutla"
+ },
+ "cnu": {
+ "english_name": "Chenoua"
+ },
+ "cns": {
+ "english_name": "Asmat, Central"
+ },
+ "icl": {
+ "english_name": "Icelandic Sign Language"
+ },
+ "ica": {
+ "english_name": "Ede Ica"
+ },
+ "qxp": {
+ "english_name": "Quechua, Puno"
+ },
+ "cnx": {
+ "english_name": "Cornish, Middle"
+ },
+ "cng": {
+ "english_name": "Qiang, Northern"
+ },
+ "qxq": {
+ "english_name": "Qashqa'i"
+ },
+ "cnb": {
+ "english_name": "Chin, Chinbon"
+ },
+ "cnc": {
+ "english_name": "Côông"
+ },
+ "cna": {
+ "english_name": "Changthang"
+ },
+ "icr": {
+ "english_name": "Creole English, Islander"
+ },
+ "cnl": {
+ "english_name": "Chinantec, Lalana"
+ },
+ "cnk": {
+ "english_name": "Chin, Khumi"
+ },
+ "cnh": {
+ "english_name": "Chin, Haka"
+ },
+ "cni": {
+ "english_name": "Asháninka"
+ },
+ "hsb": {
+ "english_name": "Sorbian, Upper"
+ },
+ "twb": {
+ "english_name": "Tawbuid, Western"
+ },
+ "pys": {
+ "english_name": "Paraguayan Sign Language"
+ },
+ "qxt": {
+ "english_name": "Quechua, Santa Ana de Tusi Pasco"
+ },
+ "hsh": {
+ "english_name": "Hungarian Sign Language"
+ },
+ "qxu": {
+ "english_name": "Quechua, Arequipa-La Unión"
+ },
+ "hsn": {
+ "english_name": "Chinese, Xiang"
+ },
+ "hsl": {
+ "english_name": "Hausa Sign Language"
+ },
+ "pyu": {
+ "english_name": "Puyuma"
+ },
+ "hss": {
+ "english_name": "Harsusi"
+ },
+ "ahb": {
+ "english_name": "Axamb"
+ },
+ "ppa": {
+ "english_name": "Pao"
+ },
+ "aha": {
+ "english_name": "Ahanta"
+ },
+ "ahg": {
+ "english_name": "Qimant"
+ },
+ "ppe": {
+ "english_name": "Papi"
+ },
+ "ppk": {
+ "english_name": "Uma"
+ },
+ "ahk": {
+ "english_name": "Akha"
+ },
+ "ahh": {
+ "english_name": "Aghu"
+ },
+ "ahi": {
+ "english_name": "Aizi, Tiagbamrin"
+ },
+ "ppo": {
+ "english_name": "Folopa"
+ },
+ "aho": {
+ "english_name": "Ahom"
+ },
+ "ppm": {
+ "english_name": "Papuma"
+ },
+ "ppl": {
+ "english_name": "Pipil"
+ },
+ "ahr": {
+ "english_name": "Ahirani"
+ },
+ "ahs": {
+ "english_name": "Ashe"
+ },
+ "ahp": {
+ "english_name": "Aizi, Aproumu"
+ },
+ "ppp": {
+ "english_name": "Pelende"
+ },
+ "twl": {
+ "english_name": "Tawara"
+ },
+ "aht": {
+ "english_name": "Ahtena"
+ },
+ "ppt": {
+ "english_name": "Pare"
+ },
+ "giw": {
+ "english_name": "Gelao, White"
+ },
+ "giu": {
+ "english_name": "Mulao"
+ },
+ "git": {
+ "english_name": "Gitxsan"
+ },
+ "gis": {
+ "english_name": "Giziga, North"
+ },
+ "gir": {
+ "english_name": "Gelao, Red"
+ },
+ "giq": {
+ "english_name": "Gelao, Green"
+ },
+ "gip": {
+ "english_name": "Gimi (West New Britain)"
+ },
+ "giz": {
+ "english_name": "Giziga, South"
+ },
+ "giy": {
+ "english_name": "Giyug"
+ },
+ "gix": {
+ "english_name": "Gilima"
+ },
+ "gig": {
+ "english_name": "Goaria"
+ },
+ "gid": {
+ "english_name": "Gidar"
+ },
+ "gic": {
+ "english_name": "Gail"
+ },
+ "gib": {
+ "english_name": "Gibanawa"
+ },
+ "gia": {
+ "english_name": "Kitja"
+ },
+ "gin": {
+ "english_name": "Hinukh"
+ },
+ "gim": {
+ "english_name": "Gimi (Eastern Highlands)"
+ },
+ "gil": {
+ "english_name": "Gilbertese"
+ },
+ "gih": {
+ "english_name": "Githabul"
+ },
+ "nnn": {
+ "english_name": "Ngete"
+ },
+ "nnm": {
+ "english_name": "Namia"
+ },
+ "nnl": {
+ "english_name": "Naga, Northern Rengma"
+ },
+ "nnk": {
+ "english_name": "Nankina"
+ },
+ "nnj": {
+ "english_name": "Nyangatom"
+ },
+ "nni": {
+ "english_name": "Nuaulu, North"
+ },
+ "nnh": {
+ "english_name": "Ngiemboon"
+ },
+ "nng": {
+ "english_name": "Naga, Maring"
+ },
+ "nnf": {
+ "english_name": "Ngaing"
+ },
+ "nne": {
+ "english_name": "Ngandyera"
+ },
+ "nnd": {
+ "english_name": "Ambae, West"
+ },
+ "nnc": {
+ "english_name": "Nancere"
+ },
+ "nnb": {
+ "english_name": "Nande"
+ },
+ "nna": {
+ "english_name": "Nyangumarta"
+ },
+ "nnz": {
+ "english_name": "Nda'nda'"
+ },
+ "nny": {
+ "english_name": "Nyangga"
+ },
+ "nnw": {
+ "english_name": "Nuni, Southern"
+ },
+ "nnv": {
+ "english_name": "Nugunu (Australia)"
+ },
+ "nnu": {
+ "english_name": "Dwang"
+ },
+ "nnt": {
+ "english_name": "Nanticoke"
+ },
+ "nns": {
+ "english_name": "Ningye"
+ },
+ "nnr": {
+ "english_name": "Narungga"
+ },
+ "nnq": {
+ "english_name": "Ngindo"
+ },
+ "nnp": {
+ "english_name": "Naga, Wancho"
+ },
+ "nl": {
+ "name": "Nederlands",
+ "english_name": "Dutch"
+ },
+ "tiy": {
+ "english_name": "Tiruray"
+ },
+ "nn": {
+ "name": "Norwegian Nynorsk",
+ "english_name": "Norwegian Nynorsk"
+ },
+ "no": {
+ "english_name": "Norwegian"
+ },
+ "tit": {
+ "english_name": "Tinigua"
+ },
+ "na": {
+ "english_name": "Nauru"
+ },
+ "nb": {
+ "name": "Norwegian Bokmål",
+ "english_name": "Norwegian Bokmål"
+ },
+ "tiw": {
+ "english_name": "Tiwi"
+ },
+ "nd": {
+ "english_name": "Ndebele, North"
+ },
+ "ne": {
+ "english_name": "Nepali (macrolanguage)"
+ },
+ "ng": {
+ "english_name": "Ndonga"
+ },
+ "til": {
+ "english_name": "Tillamook"
+ },
+ "ny": {
+ "english_name": "Nyanja"
+ },
+ "tin": {
+ "english_name": "Tindi"
+ },
+ "tio": {
+ "english_name": "Teop"
+ },
+ "tih": {
+ "english_name": "Murut, Timugon"
+ },
+ "tii": {
+ "english_name": "Tiene"
+ },
+ "tij": {
+ "english_name": "Tilung"
+ },
+ "tik": {
+ "english_name": "Tikar"
+ },
+ "tid": {
+ "english_name": "Tidong"
+ },
+ "nr": {
+ "english_name": "Ndebele, South"
+ },
+ "tig": {
+ "name": "ትግረ",
+ "english_name": "Tigre"
+ },
+ "tia": {
+ "english_name": "Tamazight, Tidikelt"
+ },
+ "nv": {
+ "english_name": "Navajo"
+ },
+ "tic": {
+ "english_name": "Tira"
+ },
+ "sqs": {
+ "english_name": "Sri Lankan Sign Language"
+ },
+ "sqr": {
+ "english_name": "Arabic, Siculo"
+ },
+ "sqq": {
+ "english_name": "Sou"
+ },
+ "squ": {
+ "english_name": "Squamish"
+ },
+ "sqt": {
+ "english_name": "Soqotri"
+ },
+ "sqk": {
+ "english_name": "Albanian Sign Language"
+ },
+ "ich": {
+ "english_name": "Etkywan"
+ },
+ "sqo": {
+ "english_name": "Sorkhei"
+ },
+ "sqn": {
+ "english_name": "Susquehannock"
+ },
+ "sqm": {
+ "english_name": "Suma"
+ },
+ "sqa": {
+ "english_name": "Shama-Sambuga"
+ },
+ "llx": {
+ "english_name": "Lauan"
+ },
+ "rol": {
+ "english_name": "Romblomanon"
+ },
+ "rom": {
+ "english_name": "Romany"
+ },
+ "roo": {
+ "english_name": "Rotokas"
+ },
+ "lls": {
+ "english_name": "Lithuanian Sign Language"
+ },
+ "llq": {
+ "english_name": "Lolak"
+ },
+ "llp": {
+ "english_name": "Efate, North"
+ },
+ "rod": {
+ "english_name": "Rogo"
+ },
+ "roe": {
+ "english_name": "Ronji"
+ },
+ "llu": {
+ "english_name": "Lau"
+ },
+ "rog": {
+ "english_name": "Roglai, Northern"
+ },
+ "llk": {
+ "english_name": "Lelak"
+ },
+ "llj": {
+ "english_name": "Ladji Ladji"
+ },
+ "lli": {
+ "english_name": "Teke-Laali"
+ },
+ "llh": {
+ "english_name": "Lamu"
+ },
+ "llo": {
+ "english_name": "Khlor"
+ },
+ "lln": {
+ "english_name": "Lele (Chad)"
+ },
+ "llm": {
+ "english_name": "Lasalimu"
+ },
+ "lll": {
+ "english_name": "Lilau"
+ },
+ "llc": {
+ "english_name": "Lele (Guinea)"
+ },
+ "llb": {
+ "english_name": "Lolo"
+ },
+ "lla": {
+ "english_name": "Lala-Roba"
+ },
+ "llg": {
+ "english_name": "Lole"
+ },
+ "llf": {
+ "english_name": "Hermit"
+ },
+ "lle": {
+ "english_name": "Lele (Papua New Guinea)"
+ },
+ "lld": {
+ "english_name": "Ladin"
+ },
+ "bqf": {
+ "english_name": "Baga Kaloum"
+ },
+ "bqg": {
+ "english_name": "Bago-Kusuntu"
+ },
+ "bqd": {
+ "english_name": "Bung"
+ },
+ "bqb": {
+ "english_name": "Bagusa"
+ },
+ "bqc": {
+ "english_name": "Boko (Benin)"
+ },
+ "bqa": {
+ "english_name": "Tchumbuli"
+ },
+ "bqn": {
+ "english_name": "Bulgarian Sign Language"
+ },
+ "bqo": {
+ "english_name": "Balo"
+ },
+ "bql": {
+ "english_name": "Bilakura"
+ },
+ "bqm": {
+ "english_name": "Wumboko"
+ },
+ "bqj": {
+ "english_name": "Bandial"
+ },
+ "bqk": {
+ "english_name": "Banda-Mbrès"
+ },
+ "bqh": {
+ "english_name": "Baima"
+ },
+ "bqi": {
+ "english_name": "Bakhtiari"
+ },
+ "bqv": {
+ "english_name": "Koro Wachi"
+ },
+ "bqw": {
+ "english_name": "Buru (Nigeria)"
+ },
+ "bqt": {
+ "english_name": "Bamukumbit"
+ },
+ "bqu": {
+ "english_name": "Boguru"
+ },
+ "bqr": {
+ "english_name": "Burusu"
+ },
+ "bqs": {
+ "english_name": "Bosngun"
+ },
+ "bqp": {
+ "english_name": "Busa"
+ },
+ "bqq": {
+ "english_name": "Biritai"
+ },
+ "wdy": {
+ "english_name": "Wadjabangayi"
+ },
+ "bqz": {
+ "english_name": "Bakaka"
+ },
+ "bqx": {
+ "english_name": "Baangi"
+ },
+ "bqy": {
+ "english_name": "Bengkala Sign Language"
+ },
+ "cno": {
+ "english_name": "Con"
+ },
+ "jdg": {
+ "english_name": "Jadgali"
+ },
+ "pmt": {
+ "english_name": "Tuamotuan"
+ },
+ "pmw": {
+ "english_name": "Miwok, Plains"
+ },
+ "pmq": {
+ "english_name": "Pame, Northern"
+ },
+ "pmr": {
+ "english_name": "Paynamar"
+ },
+ "pms": {
+ "english_name": "Piemontese"
+ },
+ "pmx": {
+ "english_name": "Naga, Poumei"
+ },
+ "pmy": {
+ "english_name": "Malay, Papuan"
+ },
+ "pmz": {
+ "english_name": "Pame, Southern"
+ },
+ "pmd": {
+ "english_name": "Pallanganmiddang"
+ },
+ "pme": {
+ "english_name": "Pwaamei"
+ },
+ "pmf": {
+ "english_name": "Pamona"
+ },
+ "pma": {
+ "english_name": "Paama"
+ },
+ "pmb": {
+ "english_name": "Pambia"
+ },
+ "pmc": {
+ "english_name": "Palumata"
+ },
+ "pml": {
+ "english_name": "Lingua Franca"
+ },
+ "pmm": {
+ "english_name": "Pomo"
+ },
+ "pmn": {
+ "english_name": "Pam"
+ },
+ "pmo": {
+ "english_name": "Pom"
+ },
+ "pmh": {
+ "english_name": "Prākrit, Māhārāṣṭri"
+ },
+ "pmi": {
+ "english_name": "Pumi, Northern"
+ },
+ "pmj": {
+ "english_name": "Pumi, Southern"
+ },
+ "pmk": {
+ "english_name": "Pamlico"
+ },
+ "deh": {
+ "english_name": "Dehwari"
+ },
+ "msz": {
+ "english_name": "Momare"
+ },
+ "msy": {
+ "english_name": "Aruamu"
+ },
+ "msx": {
+ "english_name": "Moresada"
+ },
+ "msw": {
+ "english_name": "Mansoanka"
+ },
+ "msv": {
+ "english_name": "Maslam"
+ },
+ "msu": {
+ "english_name": "Musom"
+ },
+ "mss": {
+ "english_name": "Masela, West"
+ },
+ "msr": {
+ "english_name": "Mongolian Sign Language"
+ },
+ "msq": {
+ "english_name": "Caac"
+ },
+ "msp": {
+ "english_name": "Maritsauá"
+ },
+ "mso": {
+ "english_name": "Mombum"
+ },
+ "msn": {
+ "english_name": "Vurës"
+ },
+ "msm": {
+ "english_name": "Manobo, Agusan"
+ },
+ "msl": {
+ "english_name": "Molof"
+ },
+ "msk": {
+ "english_name": "Mansaka"
+ },
+ "msj": {
+ "english_name": "Ma (Democratic Republic of Congo)"
+ },
+ "msi": {
+ "english_name": "Malay, Sabah"
+ },
+ "msh": {
+ "english_name": "Malagasy, Masikoro"
+ },
+ "msg": {
+ "english_name": "Moraid"
+ },
+ "msf": {
+ "english_name": "Mekwei"
+ },
+ "mse": {
+ "english_name": "Musey"
+ },
+ "msd": {
+ "english_name": "Yucatec Maya Sign Language"
+ },
+ "msc": {
+ "english_name": "Maninka, Sankaran"
+ },
+ "msb": {
+ "english_name": "Masbatenyo"
+ },
+ "kyk": {
+ "english_name": "Kamayo"
+ },
+ "kyj": {
+ "english_name": "Karao"
+ },
+ "kyi": {
+ "english_name": "Kiput"
+ },
+ "kyh": {
+ "english_name": "Karok"
+ },
+ "kyo": {
+ "english_name": "Kelon"
+ },
+ "kyn": {
+ "english_name": "Binukidnon, Northern"
+ },
+ "kym": {
+ "english_name": "Kpatili"
+ },
+ "kyl": {
+ "english_name": "Kalapuya"
+ },
+ "kyc": {
+ "english_name": "Kyaka"
+ },
+ "kyb": {
+ "english_name": "Kalinga, Butbut"
+ },
+ "kya": {
+ "english_name": "Kwaya"
+ },
+ "kyg": {
+ "english_name": "Keyagana"
+ },
+ "kyf": {
+ "english_name": "Kouya"
+ },
+ "kye": {
+ "english_name": "Krache"
+ },
+ "kyd": {
+ "english_name": "Karey"
+ },
+ "kyz": {
+ "english_name": "Kayabí"
+ },
+ "kyy": {
+ "english_name": "Kambaira"
+ },
+ "kyx": {
+ "english_name": "Rapoisi"
+ },
+ "kys": {
+ "english_name": "Kayan, Baram"
+ },
+ "kyr": {
+ "english_name": "Kuruáya"
+ },
+ "kyq": {
+ "english_name": "Kenga"
+ },
+ "kyp": {
+ "english_name": "Kang"
+ },
+ "kyw": {
+ "english_name": "Kudmali"
+ },
+ "kyv": {
+ "english_name": "Kayort"
+ },
+ "kyu": {
+ "english_name": "Kayah, Western"
+ },
+ "kyt": {
+ "english_name": "Kayagar"
+ },
+ "tbp": {
+ "english_name": "Taworta"
+ },
+ "tbs": {
+ "english_name": "Tanguat"
+ },
+ "ryn": {
+ "english_name": "Amami-Oshima, Northern"
+ },
+ "tbr": {
+ "english_name": "Tumtum"
+ },
+ "xzp": {
+ "english_name": "Zapotec, Ancient"
+ },
+ "tbu": {
+ "english_name": "Tubar"
+ },
+ "tbt": {
+ "english_name": "Tembo (Kitembo)"
+ },
+ "tbw": {
+ "english_name": "Tagbanwa"
+ },
+ "xzm": {
+ "english_name": "Zemgalian"
+ },
+ "tbv": {
+ "english_name": "Tobo"
+ },
+ "xzh": {
+ "english_name": "Zhang-Zhung"
+ },
+ "tbi": {
+ "english_name": "Gaam"
+ },
+ "tbh": {
+ "english_name": "Thurawal"
+ },
+ "tbk": {
+ "english_name": "Tagbanwa, Calamian"
+ },
+ "tbj": {
+ "english_name": "Tiang"
+ },
+ "tbm": {
+ "english_name": "Tagbu"
+ },
+ "tbl": {
+ "english_name": "Tboli"
+ },
+ "tbo": {
+ "english_name": "Tawala"
+ },
+ "tbn": {
+ "english_name": "Tunebo, Barro Negro"
+ },
+ "tbc": {
+ "english_name": "Takia"
+ },
+ "gta": {
+ "english_name": "Guató"
+ },
+ "vto": {
+ "english_name": "Vitou"
+ },
+ "gtu": {
+ "english_name": "Aghu-Tharnggala"
+ },
+ "ppi": {
+ "english_name": "Paipai"
+ },
+ "ulm": {
+ "english_name": "Ulumanda'"
+ },
+ "ahn": {
+ "english_name": "Àhàn"
+ },
+ "ppn": {
+ "english_name": "Papapana"
+ },
+ "ttj": {
+ "english_name": "Tooro"
+ },
+ "ahl": {
+ "english_name": "Igo"
+ },
+ "ahm": {
+ "english_name": "Aizi, Mobumrin"
+ },
+ "pps": {
+ "english_name": "Popoloca, San Luís Temalacayuca"
+ },
+ "ryu": {
+ "english_name": "Okinawan, Central"
+ },
+ "shw": {
+ "english_name": "Shwai"
+ },
+ "ppq": {
+ "english_name": "Pei"
+ },
+ "did": {
+ "english_name": "Didinga"
+ },
+ "ppu": {
+ "english_name": "Papora"
+ },
+ "eja": {
+ "english_name": "Ejamat"
+ },
+ "yuy": {
+ "english_name": "Yugur, East"
+ },
+ "yux": {
+ "english_name": "Yukaghir, Southern"
+ },
+ "yuz": {
+ "english_name": "Yuracare"
+ },
+ "yuq": {
+ "english_name": "Yuqui"
+ },
+ "yup": {
+ "english_name": "Yukpa"
+ },
+ "yur": {
+ "english_name": "Yurok"
+ },
+ "yut": {
+ "english_name": "Yopno"
+ },
+ "yuw": {
+ "english_name": "Yau (Morobe Province)"
+ },
+ "yui": {
+ "english_name": "Yurutí"
+ },
+ "jwi": {
+ "english_name": "Jwira-Pepesa"
+ },
+ "yuk": {
+ "english_name": "Yuki"
+ },
+ "yuj": {
+ "english_name": "Karkar-Yuri"
+ },
+ "yum": {
+ "english_name": "Quechan"
+ },
+ "yul": {
+ "english_name": "Yulu"
+ },
+ "yun": {
+ "english_name": "Bena (Nigeria)"
+ },
+ "yua": {
+ "english_name": "Yucateco"
+ },
+ "yuc": {
+ "english_name": "Yuchi"
+ },
+ "yub": {
+ "english_name": "Yugambal"
+ },
+ "yue": {
+ "english_name": "Chinese, Yue"
+ },
+ "yud": {
+ "english_name": "Arabic, Judeo-Tripolitanian"
+ },
+ "yug": {
+ "english_name": "Yug"
+ },
+ "yuf": {
+ "english_name": "Havasupai-Walapai-Yavapai"
+ },
+ "tns": {
+ "english_name": "Tenis"
+ },
+ "ian": {
+ "english_name": "Iatmul"
+ },
+ "iai": {
+ "english_name": "Iaai"
+ },
+ "yxg": {
+ "english_name": "Yagara"
+ },
+ "iap": {
+ "english_name": "Iapama"
+ },
+ "iar": {
+ "english_name": "Purari"
+ },
+ "hud": {
+ "english_name": "Huaulu"
+ },
+ "hue": {
+ "english_name": "Huave, San Francisco Del Mar"
+ },
+ "huf": {
+ "english_name": "Humene"
+ },
+ "hug": {
+ "english_name": "Huachipaeri"
+ },
+ "hub": {
+ "english_name": "Huambisa"
+ },
+ "huc": {
+ "english_name": "=/Hua"
+ },
+ "hul": {
+ "english_name": "Hula"
+ },
+ "hum": {
+ "english_name": "Hungana"
+ },
+ "huo": {
+ "english_name": "Hu"
+ },
+ "huh": {
+ "english_name": "Huilliche"
+ },
+ "hui": {
+ "english_name": "Huli"
+ },
+ "huj": {
+ "english_name": "Hmong, Northern Guiyang"
+ },
+ "huk": {
+ "english_name": "Hulung"
+ },
+ "hut": {
+ "english_name": "Humla"
+ },
+ "huu": {
+ "english_name": "Huitoto, Murui"
+ },
+ "huv": {
+ "english_name": "Huave, San Mateo Del Mar"
+ },
+ "huw": {
+ "english_name": "Hukumina"
+ },
+ "hup": {
+ "english_name": "Hupa"
+ },
+ "huq": {
+ "english_name": "Tsat"
+ },
+ "hur": {
+ "english_name": "Halkomelem"
+ },
+ "hus": {
+ "english_name": "Huastec"
+ },
+ "hux": {
+ "english_name": "Huitoto, Nüpode"
+ },
+ "huy": {
+ "english_name": "Hulaulá"
+ },
+ "huz": {
+ "english_name": "Hunzib"
+ },
+ "pre": {
+ "english_name": "Principense"
+ },
+ "ane": {
+ "english_name": "Xârâcùù"
+ },
+ "prg": {
+ "english_name": "Prussian"
+ },
+ "ang": {
+ "english_name": "English, Old (ca. 450-1100)"
+ },
+ "ana": {
+ "english_name": "Andaqui"
+ },
+ "prc": {
+ "english_name": "Parachi"
+ },
+ "prb": {
+ "english_name": "Lua'"
+ },
+ "anl": {
+ "english_name": "Chin, Anu-Hkongso"
+ },
+ "anm": {
+ "english_name": "Anal"
+ },
+ "ann": {
+ "english_name": "Obolo"
+ },
+ "ano": {
+ "english_name": "Andoque"
+ },
+ "anh": {
+ "english_name": "Nend"
+ },
+ "prh": {
+ "english_name": "Porohanon"
+ },
+ "anj": {
+ "english_name": "Anor"
+ },
+ "ank": {
+ "english_name": "Goemai"
+ },
+ "pru": {
+ "english_name": "Puragi"
+ },
+ "anu": {
+ "english_name": "Anuak"
+ },
+ "anv": {
+ "english_name": "Denya"
+ },
+ "anw": {
+ "english_name": "Anaang"
+ },
+ "prq": {
+ "english_name": "Ashéninka Perené"
+ },
+ "anq": {
+ "english_name": "Jarawa (India)"
+ },
+ "prs": {
+ "english_name": "Dari"
+ },
+ "prr": {
+ "english_name": "Puri"
+ },
+ "pry": {
+ "english_name": "Pray 3"
+ },
+ "prx": {
+ "english_name": "Purik"
+ },
+ "anz": {
+ "english_name": "Anem"
+ },
+ "prz": {
+ "english_name": "Providencia Sign Language"
+ },
+ "gkp": {
+ "english_name": "Kpelle, Guinea"
+ },
+ "gko": {
+ "english_name": "Kok-Nar"
+ },
+ "gkn": {
+ "english_name": "Gokana"
+ },
+ "gka": {
+ "english_name": "Guya"
+ },
+ "gke": {
+ "english_name": "Ndai"
+ },
+ "fcs": {
+ "english_name": "Quebec Sign Language"
+ },
+ "uya": {
+ "english_name": "Doko-Uyanga"
+ },
+ "nlq": {
+ "english_name": "Naga, Lao"
+ },
+ "tkg": {
+ "english_name": "Malagasy, Tesaka"
+ },
+ "tkd": {
+ "english_name": "Tukudede"
+ },
+ "tke": {
+ "english_name": "Takwane"
+ },
+ "nlu": {
+ "english_name": "Nchumbulu"
+ },
+ "nlw": {
+ "english_name": "Walangama"
+ },
+ "nlv": {
+ "english_name": "Nahuatl, Orizaba"
+ },
+ "nly": {
+ "english_name": "Nyamal"
+ },
+ "nlx": {
+ "english_name": "Nahali"
+ },
+ "tkl": {
+ "english_name": "Tokelau"
+ },
+ "nlz": {
+ "english_name": "Nalögo"
+ },
+ "nla": {
+ "english_name": "Ngombale"
+ },
+ "tkw": {
+ "english_name": "Teanu"
+ },
+ "nlc": {
+ "english_name": "Nalca"
+ },
+ "tku": {
+ "english_name": "Totonac, Upper Necaxa"
+ },
+ "nle": {
+ "english_name": "Nyala, East"
+ },
+ "tks": {
+ "english_name": "Takestani"
+ },
+ "nlg": {
+ "english_name": "Gela"
+ },
+ "tkq": {
+ "english_name": "Tee"
+ },
+ "nli": {
+ "english_name": "Grangali"
+ },
+ "nlk": {
+ "english_name": "Yali, Ninia"
+ },
+ "nlj": {
+ "english_name": "Nyali"
+ },
+ "tkz": {
+ "english_name": "Takua"
+ },
+ "nll": {
+ "english_name": "Nihali"
+ },
+ "nlo": {
+ "english_name": "Ngul"
+ },
+ "ssy": {
+ "english_name": "Saho"
+ },
+ "dyy": {
+ "english_name": "Dyaabugay"
+ },
+ "ssz": {
+ "english_name": "Sengseng"
+ },
+ "ssu": {
+ "english_name": "Susuami"
+ },
+ "dyu": {
+ "english_name": "Dyula"
+ },
+ "ssv": {
+ "english_name": "Shark Bay"
+ },
+ "ssq": {
+ "english_name": "So'a"
+ },
+ "ssp": {
+ "english_name": "Spanish Sign Language"
+ },
+ "sss": {
+ "english_name": "Sô"
+ },
+ "ssr": {
+ "english_name": "Swiss-French Sign Language"
+ },
+ "ssm": {
+ "english_name": "Semnam"
+ },
+ "dym": {
+ "english_name": "Dogon, Yanda Dom"
+ },
+ "dyn": {
+ "english_name": "Dyangadi"
+ },
+ "dyo": {
+ "english_name": "Jola-Fonyi"
+ },
+ "ssi": {
+ "english_name": "Sansi"
+ },
+ "dyi": {
+ "english_name": "Senoufo, Djimini"
+ },
+ "ssk": {
+ "english_name": "Sunam"
+ },
+ "ssj": {
+ "english_name": "Sausi"
+ },
+ "dyd": {
+ "english_name": "Dyugun"
+ },
+ "ssd": {
+ "english_name": "Siroi"
+ },
+ "ssg": {
+ "english_name": "Seimat"
+ },
+ "dyg": {
+ "english_name": "Agta, Villa Viciosa"
+ },
+ "dya": {
+ "english_name": "Dyan"
+ },
+ "dyb": {
+ "english_name": "Dyaberdyaber"
+ },
+ "ssb": {
+ "english_name": "Sama, Southern"
+ },
+ "rms": {
+ "english_name": "Romanian Sign Language"
+ },
+ "rmp": {
+ "english_name": "Rempi"
+ },
+ "rmq": {
+ "english_name": "Caló"
+ },
+ "rmv": {
+ "english_name": "Romanova"
+ },
+ "rmw": {
+ "english_name": "Romani, Welsh"
+ },
+ "rmt": {
+ "english_name": "Domari"
+ },
+ "lnz": {
+ "english_name": "Lonzo"
+ },
+ "lnu": {
+ "english_name": "Longuda"
+ },
+ "lnw": {
+ "english_name": "Lanima"
+ },
+ "rmy": {
+ "english_name": "Romani, Vlax"
+ },
+ "lns": {
+ "english_name": "Lamnso'"
+ },
+ "lnm": {
+ "english_name": "Langam"
+ },
+ "lnl": {
+ "english_name": "Banda, South Central"
+ },
+ "lno": {
+ "english_name": "Lango (Sudan)"
+ },
+ "lnn": {
+ "english_name": "Lorediakarkar"
+ },
+ "lni": {
+ "english_name": "Daantanai'"
+ },
+ "lnh": {
+ "english_name": "Lanoh"
+ },
+ "rmd": {
+ "english_name": "Danish, Traveller"
+ },
+ "lnj": {
+ "english_name": "Leningitij"
+ },
+ "lnd": {
+ "english_name": "Lundayeh"
+ },
+ "lng": {
+ "english_name": "Langobardic"
+ },
+ "rmi": {
+ "english_name": "Lomavren"
+ },
+ "lna": {
+ "english_name": "Langbashe"
+ },
+ "rmo": {
+ "english_name": "Romani, Sinte"
+ },
+ "rml": {
+ "english_name": "Romani, Baltic"
+ },
+ "lnb": {
+ "english_name": "Mbalanhu"
+ },
+ "pox": {
+ "english_name": "Polabian"
+ },
+ "poy": {
+ "english_name": "Pogolo"
+ },
+ "pov": {
+ "english_name": "Crioulo, Upper Guinea"
+ },
+ "pow": {
+ "english_name": "Popoloca, San Felipe Otlaltepec"
+ },
+ "pot": {
+ "english_name": "Potawatomi"
+ },
+ "pos": {
+ "english_name": "Popoluca, Sayula"
+ },
+ "pop": {
+ "english_name": "Pwapwâ"
+ },
+ "poq": {
+ "english_name": "Popoluca, Texistepec"
+ },
+ "pon": {
+ "english_name": "Pohnpeian"
+ },
+ "poo": {
+ "english_name": "Pomo, Central"
+ },
+ "pom": {
+ "english_name": "Pomo, Southeastern"
+ },
+ "pok": {
+ "english_name": "Pokangá"
+ },
+ "poh": {
+ "english_name": "Poqomchi'"
+ },
+ "poi": {
+ "english_name": "Popoluca, Highland"
+ },
+ "pof": {
+ "english_name": "Poke"
+ },
+ "pog": {
+ "english_name": "Potiguára"
+ },
+ "pod": {
+ "english_name": "Ponares"
+ },
+ "poe": {
+ "english_name": "Popoloca, San Juan Atzingo"
+ },
+ "poc": {
+ "english_name": "Poqomam"
+ },
+ "tnn": {
+ "english_name": "Tanna, North"
+ },
+ "mqa": {
+ "english_name": "Maba (Indonesia)"
+ },
+ "mqc": {
+ "english_name": "Mangole"
+ },
+ "mqb": {
+ "english_name": "Mbuko"
+ },
+ "mqe": {
+ "english_name": "Matepi"
+ },
+ "mqg": {
+ "english_name": "Malay, Kota Bangun Kutai"
+ },
+ "mqf": {
+ "english_name": "Momuna"
+ },
+ "mqi": {
+ "english_name": "Mariri"
+ },
+ "mqh": {
+ "english_name": "Mixtec, Tlazoyaltepec"
+ },
+ "mqk": {
+ "english_name": "Manobo, Rajah Kabunsuwan"
+ },
+ "mqj": {
+ "english_name": "Mamasa"
+ },
+ "mqm": {
+ "english_name": "Marquesan, South"
+ },
+ "mql": {
+ "english_name": "Mbelime"
+ },
+ "mqo": {
+ "english_name": "Modole"
+ },
+ "mqn": {
+ "english_name": "Moronene"
+ },
+ "mqq": {
+ "english_name": "Minokok"
+ },
+ "mqp": {
+ "english_name": "Manipa"
+ },
+ "mqs": {
+ "english_name": "Makian, West"
+ },
+ "mqr": {
+ "english_name": "Mander"
+ },
+ "mqu": {
+ "english_name": "Mandari"
+ },
+ "mqt": {
+ "english_name": "Mok"
+ },
+ "mqw": {
+ "english_name": "Murupi"
+ },
+ "mqv": {
+ "english_name": "Mosimo"
+ },
+ "mqy": {
+ "english_name": "Manggarai"
+ },
+ "mqx": {
+ "english_name": "Mamuju"
+ },
+ "mqz": {
+ "english_name": "Pano"
+ },
+ "uha": {
+ "english_name": "Uhami"
+ },
+ "tnh": {
+ "english_name": "Maiani"
+ },
+ "tix": {
+ "english_name": "Tiwa, Southern"
+ },
+ "tiz": {
+ "english_name": "Tai Hongjin"
+ },
+ "yhl": {
+ "english_name": "Phowa, Hlepho"
+ },
+ "yha": {
+ "english_name": "Buyang, Baha"
+ },
+ "yhd": {
+ "english_name": "Arabic, Judeo-Iraqi"
+ },
+ "tiu": {
+ "english_name": "Adasen"
+ },
+ "tiv": {
+ "english_name": "Tiv"
+ },
+ "tip": {
+ "english_name": "Trimuris"
+ },
+ "tiq": {
+ "english_name": "Tiéfo"
+ },
+ "tis": {
+ "english_name": "Itneg, Masadiit"
+ },
+ "tim": {
+ "english_name": "Timbe"
+ },
+ "tif": {
+ "english_name": "Tifal"
+ },
+ "wbv": {
+ "english_name": "Wajarri"
+ },
+ "wbw": {
+ "english_name": "Woi"
+ },
+ "wbt": {
+ "english_name": "Wanman"
+ },
+ "wbr": {
+ "english_name": "Wagdi"
+ },
+ "wbp": {
+ "english_name": "Warlpiri"
+ },
+ "wbq": {
+ "english_name": "Waddar"
+ },
+ "wbf": {
+ "english_name": "Wara"
+ },
+ "wbe": {
+ "english_name": "Waritai"
+ },
+ "wbb": {
+ "english_name": "Wabo"
+ },
+ "wba": {
+ "english_name": "Warao"
+ },
+ "wbl": {
+ "english_name": "Wakhi"
+ },
+ "wbm": {
+ "english_name": "Wa"
+ },
+ "wbj": {
+ "english_name": "Alagwa"
+ },
+ "wbk": {
+ "english_name": "Waigali"
+ },
+ "wbh": {
+ "english_name": "Wanda"
+ },
+ "wbi": {
+ "english_name": "Vwanji"
+ },
+ "gvj": {
+ "english_name": "Guajá"
+ },
+ "gvn": {
+ "english_name": "Kuku-Yalanji"
+ },
+ "gvo": {
+ "english_name": "Gavião Do Jiparaná"
+ },
+ "gvl": {
+ "english_name": "Gulay"
+ },
+ "gvm": {
+ "english_name": "Gurmana"
+ },
+ "gvc": {
+ "english_name": "Guanano"
+ },
+ "gva": {
+ "english_name": "Guana (Paraguay)"
+ },
+ "gvf": {
+ "english_name": "Golin"
+ },
+ "gve": {
+ "english_name": "Duwet"
+ },
+ "gvy": {
+ "english_name": "Guyani"
+ },
+ "gvr": {
+ "english_name": "Gurung, Western"
+ },
+ "gvs": {
+ "english_name": "Gumawana"
+ },
+ "gvp": {
+ "english_name": "Gavião, Pará"
+ },
+ "om": {
+ "english_name": "Oromo"
+ },
+ "oj": {
+ "english_name": "Ojibwa"
+ },
+ "oc": {
+ "name": "Occitan (aprèp 1500)",
+ "english_name": "Occitan (post 1500)"
+ },
+ "sqh": {
+ "english_name": "Shau"
+ },
+ "os": {
+ "english_name": "Ossetian"
+ },
+ "or": {
+ "name": "Oriya (macrolanguage)",
+ "english_name": "Oriya (macrolanguage)"
+ },
+ "yap": {
+ "english_name": "Yapese"
+ },
+ "ehu": {
+ "english_name": "Ehueun"
+ },
+ "yan": {
+ "english_name": "Mayangna"
+ },
+ "rmu": {
+ "english_name": "Romani, Tavringer"
+ },
+ "jub": {
+ "english_name": "Wannu"
+ },
+ "juc": {
+ "english_name": "Jurchen"
+ },
+ "jua": {
+ "english_name": "Júma"
+ },
+ "jud": {
+ "english_name": "Worodougou"
+ },
+ "juk": {
+ "english_name": "Wapan"
+ },
+ "juh": {
+ "english_name": "Hõne"
+ },
+ "jui": {
+ "english_name": "Ngadjuri"
+ },
+ "jun": {
+ "english_name": "Juang"
+ },
+ "juo": {
+ "english_name": "Jiba"
+ },
+ "jul": {
+ "english_name": "Jirel"
+ },
+ "jum": {
+ "english_name": "Jumjum"
+ },
+ "jur": {
+ "english_name": "Jurúna"
+ },
+ "jus": {
+ "english_name": "Jumla Sign Language"
+ },
+ "jup": {
+ "english_name": "Hupdë"
+ },
+ "juw": {
+ "english_name": "Wãpha"
+ },
+ "jut": {
+ "english_name": "Jutish"
+ },
+ "juu": {
+ "english_name": "Ju"
+ },
+ "juy": {
+ "english_name": "Juray"
+ },
+ "cbb": {
+ "english_name": "Cabiyarí"
+ },
+ "cbc": {
+ "english_name": "Carapana"
+ },
+ "cbg": {
+ "english_name": "Chimila"
+ },
+ "cbd": {
+ "english_name": "Carijona"
+ },
+ "cbe": {
+ "english_name": "Chipiajes"
+ },
+ "cbj": {
+ "english_name": "Ede Cabe"
+ },
+ "cbk": {
+ "english_name": "Chavacano"
+ },
+ "cbh": {
+ "english_name": "Cagua"
+ },
+ "cbi": {
+ "english_name": "Chachi"
+ },
+ "cbn": {
+ "english_name": "Nyahkur"
+ },
+ "cbo": {
+ "english_name": "Izora"
+ },
+ "cbl": {
+ "english_name": "Chin, Bualkhaw"
+ },
+ "cbr": {
+ "english_name": "Cashibo-Cacataibo"
+ },
+ "cbs": {
+ "english_name": "Cashinahua"
+ },
+ "cbv": {
+ "english_name": "Cacua"
+ },
+ "cbw": {
+ "english_name": "Kinabalian"
+ },
+ "cbt": {
+ "english_name": "Chayahuita"
+ },
+ "cbu": {
+ "english_name": "Candoshi-Shapra"
+ },
+ "cby": {
+ "english_name": "Carabayo"
+ },
+ "igw": {
+ "english_name": "Igwe"
+ },
+ "igs": {
+ "english_name": "Interglossa"
+ },
+ "igg": {
+ "english_name": "Igana"
+ },
+ "ige": {
+ "english_name": "Igede"
+ },
+ "igb": {
+ "english_name": "Ebira"
+ },
+ "igo": {
+ "english_name": "Isebe"
+ },
+ "ign": {
+ "english_name": "Ignaciano"
+ },
+ "igm": {
+ "english_name": "Kanggape"
+ },
+ "igl": {
+ "english_name": "Igala"
+ },
+ "hwo": {
+ "english_name": "Hwana"
+ },
+ "hwc": {
+ "english_name": "Creole English, Hawai'i"
+ },
+ "hwa": {
+ "english_name": "Wané"
+ },
+ "tlu": {
+ "english_name": "Tulehu"
+ },
+ "hmi": {
+ "english_name": "Hmong, Northern Huishui"
+ },
+ "pto": {
+ "english_name": "Zo'é"
+ },
+ "ptn": {
+ "english_name": "Patani"
+ },
+ "all": {
+ "english_name": "Allar"
+ },
+ "alm": {
+ "english_name": "Amblong"
+ },
+ "alj": {
+ "english_name": "Alangan"
+ },
+ "alk": {
+ "english_name": "Alak"
+ },
+ "pti": {
+ "english_name": "Pintiini"
+ },
+ "ali": {
+ "english_name": "Amaimon"
+ },
+ "alf": {
+ "english_name": "Alege"
+ },
+ "ald": {
+ "english_name": "Alladian"
+ },
+ "ale": {
+ "english_name": "Aleut"
+ },
+ "alc": {
+ "english_name": "Qawasqar"
+ },
+ "pta": {
+ "english_name": "Pai Tavytera"
+ },
+ "ala": {
+ "english_name": "Alago"
+ },
+ "alz": {
+ "english_name": "Alur"
+ },
+ "pty": {
+ "english_name": "Pathiya"
+ },
+ "aly": {
+ "english_name": "Alyawarr"
+ },
+ "ptw": {
+ "english_name": "Pentlatch"
+ },
+ "ptv": {
+ "english_name": "Port Vato"
+ },
+ "ptu": {
+ "english_name": "Bambam"
+ },
+ "alu": {
+ "english_name": "'Are'are"
+ },
+ "alr": {
+ "english_name": "Alutor"
+ },
+ "ptr": {
+ "english_name": "Piamatsina"
+ },
+ "alp": {
+ "english_name": "Alune"
+ },
+ "alq": {
+ "english_name": "Algonquin"
+ },
+ "rob": {
+ "english_name": "Tae'"
+ },
+ "faz": {
+ "english_name": "Fars, Northwestern"
+ },
+ "fax": {
+ "english_name": "Fala"
+ },
+ "fay": {
+ "english_name": "Fars, Southwestern"
+ },
+ "far": {
+ "english_name": "Fataleka"
+ },
+ "fap": {
+ "english_name": "Palor"
+ },
+ "fat": {
+ "english_name": "Fanti"
+ },
+ "fau": {
+ "english_name": "Fayu"
+ },
+ "faj": {
+ "english_name": "Faita"
+ },
+ "fak": {
+ "english_name": "Fang (Cameroon)"
+ },
+ "fah": {
+ "english_name": "Fali, Baissa"
+ },
+ "fai": {
+ "english_name": "Faiwol"
+ },
+ "fan": {
+ "english_name": "Fang (Equatorial Guinea)"
+ },
+ "rof": {
+ "english_name": "Rombo"
+ },
+ "fal": {
+ "english_name": "Fali, South"
+ },
+ "fam": {
+ "english_name": "Fam"
+ },
+ "fab": {
+ "english_name": "Fa d'Ambu"
+ },
+ "uwa": {
+ "english_name": "Kuku-Uwanh"
+ },
+ "faa": {
+ "english_name": "Fasu"
+ },
+ "faf": {
+ "english_name": "Fagani"
+ },
+ "fag": {
+ "english_name": "Finongan"
+ },
+ "fad": {
+ "english_name": "Wagi"
+ },
+ "teh": {
+ "english_name": "Tehuelche"
+ },
+ "tei": {
+ "english_name": "Torricelli"
+ },
+ "nby": {
+ "english_name": "Ningera"
+ },
+ "tek": {
+ "english_name": "Teke, Ibali"
+ },
+ "tem": {
+ "english_name": "Timne"
+ },
+ "ten": {
+ "english_name": "Tama (Colombia)"
+ },
+ "teo": {
+ "english_name": "Teso"
+ },
+ "nbs": {
+ "english_name": "Namibian Sign Language"
+ },
+ "nbr": {
+ "english_name": "Numana-Nunku-Gbantu-Numbu"
+ },
+ "nbq": {
+ "english_name": "Nggem"
+ },
+ "nbp": {
+ "english_name": "Nnam"
+ },
+ "nbw": {
+ "english_name": "Ngbandi, Southern"
+ },
+ "nbv": {
+ "english_name": "Ngamambo"
+ },
+ "nbu": {
+ "english_name": "Naga, Rongmei"
+ },
+ "nbt": {
+ "english_name": "Na"
+ },
+ "nbk": {
+ "english_name": "Nake"
+ },
+ "nbj": {
+ "english_name": "Ngarinman"
+ },
+ "nbi": {
+ "english_name": "Naga, Mao"
+ },
+ "nbh": {
+ "english_name": "Ngamo"
+ },
+ "nbo": {
+ "english_name": "Nkukoli"
+ },
+ "nbn": {
+ "english_name": "Kuri"
+ },
+ "nbm": {
+ "english_name": "Ngbaka Ma'bo"
+ },
+ "nbc": {
+ "english_name": "Naga, Chang"
+ },
+ "nbb": {
+ "english_name": "Ndoe"
+ },
+ "nba": {
+ "english_name": "Nyemba"
+ },
+ "tes": {
+ "english_name": "Tengger"
+ },
+ "nbg": {
+ "english_name": "Nagarchal"
+ },
+ "ror": {
+ "english_name": "Rongga"
+ },
+ "nbe": {
+ "english_name": "Naga, Konyak"
+ },
+ "nbd": {
+ "english_name": "Ngbinda"
+ },
+ "sug": {
+ "english_name": "Suganga"
+ },
+ "sue": {
+ "english_name": "Suena"
+ },
+ "suc": {
+ "english_name": "Subanon, Western"
+ },
+ "sub": {
+ "english_name": "Suku"
+ },
+ "sua": {
+ "english_name": "Sulka"
+ },
+ "sbu": {
+ "english_name": "Bhoti, Stod"
+ },
+ "suk": {
+ "english_name": "Sukuma"
+ },
+ "suj": {
+ "english_name": "Shubi"
+ },
+ "sui": {
+ "english_name": "Suki"
+ },
+ "rou": {
+ "english_name": "Runga"
+ },
+ "suw": {
+ "english_name": "Sumbwa"
+ },
+ "sbz": {
+ "english_name": "Sara Kaba"
+ },
+ "sut": {
+ "english_name": "Subtiaba"
+ },
+ "sus": {
+ "english_name": "Susu"
+ },
+ "sur": {
+ "english_name": "Mwaghavul"
+ },
+ "suq": {
+ "english_name": "Suri"
+ },
+ "row": {
+ "english_name": "Dela-Oenale"
+ },
+ "sbx": {
+ "english_name": "Seberuang"
+ },
+ "suy": {
+ "english_name": "Suyá"
+ },
+ "sux": {
+ "english_name": "Sumerian"
+ },
+ "sco": {
+ "english_name": "Scots"
+ },
+ "sby": {
+ "english_name": "Soli"
+ },
+ "sbb": {
+ "english_name": "Simbo"
+ },
+ "sbc": {
+ "english_name": "Kele (Papua New Guinea)"
+ },
+ "sba": {
+ "english_name": "Ngambay"
+ },
+ "sbf": {
+ "english_name": "Shabo"
+ },
+ "sbg": {
+ "english_name": "Seget"
+ },
+ "rkt": {
+ "english_name": "Rangpuri"
+ },
+ "rkw": {
+ "english_name": "Arakwal"
+ },
+ "sbd": {
+ "english_name": "Samo, Southern"
+ },
+ "sbe": {
+ "english_name": "Saliba"
+ },
+ "sbj": {
+ "english_name": "Surbakhal"
+ },
+ "rka": {
+ "english_name": "Kraol"
+ },
+ "rkb": {
+ "english_name": "Rikbaktsa"
+ },
+ "sbk": {
+ "english_name": "Safwa"
+ },
+ "rkm": {
+ "english_name": "Marka"
+ },
+ "rkh": {
+ "english_name": "Rakahanga-Manihiki"
+ },
+ "rki": {
+ "english_name": "Rakhine"
+ },
+ "sbi": {
+ "english_name": "Seti"
+ },
+ "sbn": {
+ "english_name": "Bhil, Sindhi"
+ },
+ "sbl": {
+ "english_name": "Sambal, Botolan"
+ },
+ "sbm": {
+ "english_name": "Sagala"
+ },
+ "yva": {
+ "english_name": "Yawa"
+ },
+ "pzn": {
+ "english_name": "Naga, Para"
+ },
+ "sce": {
+ "english_name": "Dongxiang"
+ },
+ "oyy": {
+ "english_name": "Oya'oya"
+ },
+ "oym": {
+ "english_name": "Wayampi"
+ },
+ "oyd": {
+ "english_name": "Oyda"
+ },
+ "oyb": {
+ "english_name": "Oy"
+ },
+ "lha": {
+ "english_name": "Laha (Viet Nam)"
+ },
+ "lhn": {
+ "english_name": "Lahanan"
+ },
+ "lhm": {
+ "english_name": "Lhomi"
+ },
+ "lhl": {
+ "english_name": "Lohar, Lahul"
+ },
+ "lhi": {
+ "english_name": "Lahu Shi"
+ },
+ "lhh": {
+ "english_name": "Laha (Indonesia)"
+ },
+ "lhu": {
+ "english_name": "Lahu"
+ },
+ "lht": {
+ "english_name": "Lo-Toga"
+ },
+ "lhs": {
+ "english_name": "Mlahsö"
+ },
+ "lhp": {
+ "english_name": "Lhokpu"
+ },
+ "ynl": {
+ "english_name": "Yangulam"
+ },
+ "ynn": {
+ "english_name": "Yana"
+ },
+ "yno": {
+ "english_name": "Yong"
+ },
+ "ynk": {
+ "english_name": "Yupik, Naukan"
+ },
+ "ynd": {
+ "english_name": "Yandruwandha"
+ },
+ "yne": {
+ "english_name": "Lang'e"
+ },
+ "yng": {
+ "english_name": "Yango"
+ },
+ "yna": {
+ "english_name": "Aluo"
+ },
+ "ynu": {
+ "english_name": "Yahuna"
+ },
+ "ynq": {
+ "english_name": "Yendang"
+ },
+ "yns": {
+ "english_name": "Yansi"
+ },
+ "tln": {
+ "english_name": "Talondo'"
+ },
+ "izh": {
+ "english_name": "Ingrian"
+ },
+ "izr": {
+ "english_name": "Izere"
+ },
+ "izz": {
+ "english_name": "Izii"
+ },
+ "wlx": {
+ "english_name": "Wali (Ghana)"
+ },
+ "wly": {
+ "english_name": "Waling"
+ },
+ "wlr": {
+ "english_name": "Wailapa"
+ },
+ "wls": {
+ "english_name": "Wallisian"
+ },
+ "wlu": {
+ "english_name": "Wuliwuli"
+ },
+ "wlv": {
+ "english_name": "Wichí Lhamtés Vejoz"
+ },
+ "wlw": {
+ "english_name": "Walak"
+ },
+ "wli": {
+ "english_name": "Waioli"
+ },
+ "wlk": {
+ "english_name": "Wailaki"
+ },
+ "wll": {
+ "english_name": "Wali (Sudan)"
+ },
+ "wlm": {
+ "english_name": "Welsh, Middle"
+ },
+ "wlo": {
+ "english_name": "Wolio"
+ },
+ "wla": {
+ "english_name": "Walio"
+ },
+ "wlc": {
+ "english_name": "Comorian, Mwali"
+ },
+ "wle": {
+ "english_name": "Wolane"
+ },
+ "wlg": {
+ "english_name": "Kunbarlang"
+ },
+ "gpn": {
+ "english_name": "Taiap"
+ },
+ "gpe": {
+ "english_name": "Pidgin English, Ghanaian"
+ },
+ "gpa": {
+ "english_name": "Gupa-Abawa"
+ },
+ "efi": {
+ "english_name": "Efik"
+ },
+ "efa": {
+ "english_name": "Efai"
+ },
+ "efe": {
+ "english_name": "Efe"
+ },
+ "jsl": {
+ "english_name": "Japanese Sign Language"
+ },
+ "scq": {
+ "english_name": "Sa'och"
+ },
+ "scp": {
+ "english_name": "Helambu Sherpa"
+ },
+ "cde": {
+ "english_name": "Chenchu"
+ },
+ "cdf": {
+ "english_name": "Chiru"
+ },
+ "cdg": {
+ "english_name": "Chamari"
+ },
+ "cda": {
+ "english_name": "Choni"
+ },
+ "rtc": {
+ "english_name": "Chin, Rungtu"
+ },
+ "rtm": {
+ "english_name": "Rotuman"
+ },
+ "cdm": {
+ "english_name": "Chepang"
+ },
+ "cdn": {
+ "english_name": "Chaudangsi"
+ },
+ "cdo": {
+ "english_name": "Chinese, Min Dong"
+ },
+ "cdh": {
+ "english_name": "Chambeali"
+ },
+ "cdi": {
+ "english_name": "Chodri"
+ },
+ "cdj": {
+ "english_name": "Churahi"
+ },
+ "rtw": {
+ "english_name": "Rathawi"
+ },
+ "cdr": {
+ "english_name": "Cinda-Regi-Tiyal"
+ },
+ "cds": {
+ "english_name": "Chadian Sign Language"
+ },
+ "tcz": {
+ "english_name": "Chin, Thado"
+ },
+ "cdy": {
+ "english_name": "Chadong"
+ },
+ "cdz": {
+ "english_name": "Koda"
+ },
+ "bfc": {
+ "english_name": "Bai, Northern"
+ },
+ "bfb": {
+ "english_name": "Bareli, Pauri"
+ },
+ "bfa": {
+ "english_name": "Bari"
+ },
+ "bfg": {
+ "english_name": "Kayan, Busang"
+ },
+ "bff": {
+ "english_name": "Bofi"
+ },
+ "bfe": {
+ "english_name": "Betaf"
+ },
+ "bfd": {
+ "english_name": "Bafut"
+ },
+ "bfk": {
+ "english_name": "Ban Khor Sign Language"
+ },
+ "bfj": {
+ "english_name": "Bafanji"
+ },
+ "bfi": {
+ "english_name": "British Sign Language"
+ },
+ "bfh": {
+ "english_name": "Blafe"
+ },
+ "bfo": {
+ "english_name": "Birifor, Malba"
+ },
+ "bfn": {
+ "english_name": "Bunak"
+ },
+ "bfm": {
+ "english_name": "Mmen"
+ },
+ "bfl": {
+ "english_name": "Banda-Ndélé"
+ },
+ "bfs": {
+ "english_name": "Bai, Southern"
+ },
+ "bfr": {
+ "english_name": "Bazigar"
+ },
+ "bfq": {
+ "english_name": "Badaga"
+ },
+ "bfp": {
+ "english_name": "Beba"
+ },
+ "bfw": {
+ "english_name": "Bondo"
+ },
+ "bfu": {
+ "english_name": "Gahri"
+ },
+ "bft": {
+ "english_name": "Balti"
+ },
+ "bfz": {
+ "english_name": "Pahari, Mahasu"
+ },
+ "bfy": {
+ "english_name": "Bagheli"
+ },
+ "bfx": {
+ "english_name": "Bantayanon"
+ },
+ "tct": {
+ "english_name": "T'en"
+ },
+ "hir": {
+ "english_name": "Himarimã"
+ },
+ "tcu": {
+ "english_name": "Tarahumara, Southeastern"
+ },
+ "hit": {
+ "english_name": "Hittite"
+ },
+ "hiw": {
+ "english_name": "Hiw"
+ },
+ "hix": {
+ "english_name": "Hixkaryána"
+ },
+ "tcs": {
+ "english_name": "Creole, Torres Strait"
+ },
+ "hia": {
+ "english_name": "Lamang"
+ },
+ "hib": {
+ "english_name": "Hibito"
+ },
+ "hid": {
+ "english_name": "Hidatsa"
+ },
+ "tcp": {
+ "english_name": "Chin, Tawr"
+ },
+ "hif": {
+ "english_name": "Hindi, Fiji"
+ },
+ "hig": {
+ "english_name": "Kamwe"
+ },
+ "hih": {
+ "english_name": "Pamosu"
+ },
+ "hii": {
+ "english_name": "Hinduri"
+ },
+ "hij": {
+ "english_name": "Hijuk"
+ },
+ "hik": {
+ "english_name": "Seit-Kaitetu"
+ },
+ "hil": {
+ "english_name": "Hiligaynon"
+ },
+ "hio": {
+ "english_name": "Tsoa"
+ },
+ "tcn": {
+ "english_name": "Tichurong"
+ },
+ "tco": {
+ "english_name": "Taungyo"
+ },
+ "tcl": {
+ "english_name": "Taman (Myanmar)"
+ },
+ "tcm": {
+ "english_name": "Tanahmerah"
+ },
+ "tck": {
+ "english_name": "Tchitchege"
+ },
+ "arp": {
+ "english_name": "Arapaho"
+ },
+ "arq": {
+ "english_name": "Arabic, Algerian"
+ },
+ "arr": {
+ "english_name": "Karo (Brazil)"
+ },
+ "ars": {
+ "english_name": "Arabic, Najdi"
+ },
+ "aru": {
+ "english_name": "Aruá (Amazonas State)"
+ },
+ "arv": {
+ "english_name": "Arbore"
+ },
+ "arw": {
+ "english_name": "Arawak"
+ },
+ "arx": {
+ "english_name": "Aruá (Rodonia State)"
+ },
+ "ary": {
+ "english_name": "Arabic, Moroccan"
+ },
+ "arz": {
+ "english_name": "Arabic, Egyptian"
+ },
+ "tci": {
+ "english_name": "Wára"
+ },
+ "roc": {
+ "english_name": "Roglai, Cacgia"
+ },
+ "tcf": {
+ "english_name": "Me'phaa, Malinaltepec"
+ },
+ "arb": {
+ "english_name": "Arabic, Standard"
+ },
+ "arc": {
+ "english_name": "Aramaic, Official (700-300 BCE)"
+ },
+ "ard": {
+ "english_name": "Arabana"
+ },
+ "are": {
+ "english_name": "Arrarnta, Western"
+ },
+ "tcg": {
+ "english_name": "Tamagario"
+ },
+ "arh": {
+ "english_name": "Arhuaco"
+ },
+ "ari": {
+ "english_name": "Arikara"
+ },
+ "arj": {
+ "english_name": "Arapaso"
+ },
+ "ark": {
+ "english_name": "Arikapú"
+ },
+ "arl": {
+ "english_name": "Arabela"
+ },
+ "tcd": {
+ "english_name": "Tafi"
+ },
+ "arn": {
+ "english_name": "Mapudungun"
+ },
+ "aro": {
+ "english_name": "Araona"
+ },
+ "uuu": {
+ "english_name": "U"
+ },
+ "fgr": {
+ "english_name": "Fongoro"
+ },
+ "uur": {
+ "english_name": "Ura (Vanuatu)"
+ },
+ "uum": {
+ "english_name": "Urum"
+ },
+ "uun": {
+ "english_name": "Kulon-Pazeh"
+ },
+ "tgr": {
+ "english_name": "Tareng"
+ },
+ "tgs": {
+ "english_name": "Nume"
+ },
+ "tgp": {
+ "english_name": "Tangoa"
+ },
+ "tgq": {
+ "english_name": "Tring"
+ },
+ "tgv": {
+ "english_name": "Tingui-Boto"
+ },
+ "tgw": {
+ "english_name": "Senoufo, Tagwana"
+ },
+ "tgt": {
+ "english_name": "Tagbanwa, Central"
+ },
+ "tgu": {
+ "english_name": "Tanggu"
+ },
+ "tgz": {
+ "english_name": "Tagalaka"
+ },
+ "tgx": {
+ "english_name": "Tagish"
+ },
+ "tgy": {
+ "english_name": "Togoyo"
+ },
+ "tgb": {
+ "english_name": "Tobilung"
+ },
+ "tgc": {
+ "english_name": "Tigak"
+ },
+ "tga": {
+ "english_name": "Sagalla"
+ },
+ "tgf": {
+ "english_name": "Chalikha"
+ },
+ "tgd": {
+ "english_name": "Ciwogai"
+ },
+ "tge": {
+ "english_name": "Tamang, Eastern Gorkha"
+ },
+ "tgj": {
+ "english_name": "Tagin"
+ },
+ "tgh": {
+ "english_name": "Creole English, Tobagonian"
+ },
+ "tgi": {
+ "english_name": "Lawunuia"
+ },
+ "tgn": {
+ "english_name": "Tandaganon"
+ },
+ "tgo": {
+ "english_name": "Sudest"
+ },
+ "duh": {
+ "english_name": "Dungra Bhil"
+ },
+ "ps": {
+ "name": "Pushto",
+ "english_name": "Pushto"
+ },
+ "duj": {
+ "english_name": "Dhuwal"
+ },
+ "duk": {
+ "english_name": "Uyajitaya"
+ },
+ "dul": {
+ "english_name": "Agta, Alabat Island"
+ },
+ "dum": {
+ "english_name": "Dutch, Middle (ca. 1050-1350)"
+ },
+ "pt": {
+ "name": "Português",
+ "english_name": "Portuguese"
+ },
+ "duo": {
+ "english_name": "Agta, Dupaninan"
+ },
+ "dua": {
+ "english_name": "Duala"
+ },
+ "dub": {
+ "english_name": "Dubli"
+ },
+ "duc": {
+ "english_name": "Duna"
+ },
+ "dud": {
+ "english_name": "Hun-Saare"
+ },
+ "due": {
+ "english_name": "Agta, Umiray Dumaget"
+ },
+ "duf": {
+ "english_name": "Dumbea"
+ },
+ "dug": {
+ "english_name": "Duruma"
+ },
+ "dux": {
+ "english_name": "Duungooma"
+ },
+ "duy": {
+ "english_name": "Agta, Dicamay"
+ },
+ "duz": {
+ "english_name": "Duli"
+ },
+ "pa": {
+ "name": "ਪੰਜਾਬੀ",
+ "english_name": "Panjabi"
+ },
+ "dup": {
+ "english_name": "Duano"
+ },
+ "duq": {
+ "english_name": "Dusun Malang"
+ },
+ "dur": {
+ "english_name": "Dii"
+ },
+ "dus": {
+ "english_name": "Dumi"
+ },
+ "swu": {
+ "english_name": "Suwawa"
+ },
+ "duu": {
+ "english_name": "Drung"
+ },
+ "duv": {
+ "english_name": "Duvle"
+ },
+ "duw": {
+ "english_name": "Dusun Witu"
+ },
+ "rit": {
+ "english_name": "Ritarungo"
+ },
+ "riu": {
+ "english_name": "Riung"
+ },
+ "rir": {
+ "english_name": "Ribun"
+ },
+ "rin": {
+ "english_name": "Nungu"
+ },
+ "ril": {
+ "english_name": "Riang (Myanmar)"
+ },
+ "rim": {
+ "english_name": "Nyaturu"
+ },
+ "rif": {
+ "english_name": "Tarifit"
+ },
+ "rie": {
+ "english_name": "Rien"
+ },
+ "ria": {
+ "english_name": "Riang (India)"
+ },
+ "imy": {
+ "english_name": "Milyan"
+ },
+ "rop": {
+ "english_name": "Kriol"
+ },
+ "lji": {
+ "english_name": "Laiyolo"
+ },
+ "ljl": {
+ "english_name": "Li'o"
+ },
+ "lja": {
+ "english_name": "Golpa"
+ },
+ "lje": {
+ "english_name": "Rampi"
+ },
+ "ljx": {
+ "english_name": "Yuru"
+ },
+ "ljp": {
+ "english_name": "Lampung Api"
+ },
+ "ljw": {
+ "english_name": "Yirandali"
+ },
+ "uzs": {
+ "english_name": "Uzbek, Southern"
+ },
+ "zzj": {
+ "english_name": "Zhuang, Zuojiang"
+ },
+ "zza": {
+ "english_name": "Zaza"
+ },
+ "ylu": {
+ "english_name": "Aribwaung"
+ },
+ "ylr": {
+ "english_name": "Yalarnnga"
+ },
+ "yly": {
+ "english_name": "Nyâlayu"
+ },
+ "ylg": {
+ "english_name": "Yelogu"
+ },
+ "yle": {
+ "english_name": "Yele"
+ },
+ "ylb": {
+ "english_name": "Yaleba"
+ },
+ "yla": {
+ "english_name": "Yaul"
+ },
+ "yln": {
+ "english_name": "Buyang, Langnian"
+ },
+ "ylo": {
+ "english_name": "Yi, Naluo"
+ },
+ "yll": {
+ "english_name": "Yil"
+ },
+ "ylm": {
+ "english_name": "Limi"
+ },
+ "yli": {
+ "english_name": "Yali, Angguruk"
+ },
+ "xpk": {
+ "english_name": "Pano, Kulina"
+ },
+ "xpj": {
+ "english_name": "Mpalitjanh"
+ },
+ "xpi": {
+ "english_name": "Pictish"
+ },
+ "xpo": {
+ "english_name": "Pochutec"
+ },
+ "xpn": {
+ "english_name": "Kapinawá"
+ },
+ "ixl": {
+ "english_name": "Ixil"
+ },
+ "xpc": {
+ "english_name": "Pecheneg"
+ },
+ "ixc": {
+ "english_name": "Ixcatec"
+ },
+ "xpa": {
+ "english_name": "Pirriya"
+ },
+ "xpg": {
+ "english_name": "Phrygian"
+ },
+ "xpe": {
+ "english_name": "Kpelle, Liberia"
+ },
+ "xpy": {
+ "english_name": "Puyo"
+ },
+ "xps": {
+ "english_name": "Pisidian"
+ },
+ "xpr": {
+ "english_name": "Parthian"
+ },
+ "xpq": {
+ "english_name": "Mohegan-Pequot"
+ },
+ "xpp": {
+ "english_name": "Puyo-Paekche"
+ },
+ "xpu": {
+ "english_name": "Punic"
+ },
+ "xpt": {
+ "english_name": "Punthamara"
+ },
+ "wnb": {
+ "english_name": "Wanambre"
+ },
+ "wnc": {
+ "english_name": "Wantoat"
+ },
+ "wng": {
+ "english_name": "Wanggom"
+ },
+ "wnd": {
+ "english_name": "Wandarang"
+ },
+ "wne": {
+ "english_name": "Waneci"
+ },
+ "wnk": {
+ "english_name": "Wanukaka"
+ },
+ "wni": {
+ "english_name": "Comorian, Ndzwani"
+ },
+ "wnn": {
+ "english_name": "Wunumara"
+ },
+ "wno": {
+ "english_name": "Wano"
+ },
+ "wnm": {
+ "english_name": "Wanggamala"
+ },
+ "wnp": {
+ "english_name": "Wanap"
+ },
+ "wnw": {
+ "english_name": "Wintu"
+ },
+ "wnu": {
+ "english_name": "Usan"
+ },
+ "wny": {
+ "english_name": "Wanyi"
+ },
+ "tni": {
+ "english_name": "Tandia"
+ },
+ "grv": {
+ "english_name": "Grebo, Central"
+ },
+ "grw": {
+ "english_name": "Gweda"
+ },
+ "grt": {
+ "english_name": "Garo"
+ },
+ "gru": {
+ "english_name": "Kistane"
+ },
+ "grr": {
+ "english_name": "Taznatit"
+ },
+ "grs": {
+ "english_name": "Gresi"
+ },
+ "grq": {
+ "english_name": "Gorovu"
+ },
+ "grz": {
+ "english_name": "Guramalum"
+ },
+ "tpu": {
+ "english_name": "Tampuan"
+ },
+ "grx": {
+ "english_name": "Guriaso"
+ },
+ "gry": {
+ "english_name": "Grebo, Barclayville"
+ },
+ "grg": {
+ "english_name": "Madi"
+ },
+ "grd": {
+ "english_name": "Guruntum-Mbaaru"
+ },
+ "grb": {
+ "english_name": "Grebo"
+ },
+ "grc": {
+ "english_name": "Greek, Ancient (to 1453)"
+ },
+ "gra": {
+ "english_name": "Garasia, Rajput"
+ },
+ "gro": {
+ "english_name": "Groma"
+ },
+ "grm": {
+ "english_name": "Kota Marudu Talantang"
+ },
+ "grj": {
+ "english_name": "Grebo, Southern"
+ },
+ "grh": {
+ "english_name": "Gbiri-Niragu"
+ },
+ "gri": {
+ "english_name": "Ghari"
+ },
+ "ugn": {
+ "english_name": "Ugandan Sign Language"
+ },
+ "jqr": {
+ "english_name": "Jaqaru"
+ },
+ "iba": {
+ "english_name": "Iban"
+ },
+ "ibb": {
+ "english_name": "Ibibio"
+ },
+ "rro": {
+ "english_name": "Waima"
+ },
+ "cfm": {
+ "english_name": "Chin, Falam"
+ },
+ "rri": {
+ "english_name": "Ririo"
+ },
+ "cfg": {
+ "english_name": "Como Karim"
+ },
+ "cfd": {
+ "english_name": "Cara"
+ },
+ "cfa": {
+ "english_name": "Dijim-Bwilim"
+ },
+ "rrt": {
+ "english_name": "Arritinngithigh"
+ },
+ "bde": {
+ "english_name": "Bade"
+ },
+ "bdd": {
+ "english_name": "Bunama"
+ },
+ "bdg": {
+ "english_name": "Bonggi"
+ },
+ "bdf": {
+ "english_name": "Biage"
+ },
+ "bda": {
+ "english_name": "Bayot"
+ },
+ "bdc": {
+ "english_name": "Emberá-Baudó"
+ },
+ "caj": {
+ "english_name": "Chané"
+ },
+ "bdm": {
+ "english_name": "Buduma"
+ },
+ "bdl": {
+ "english_name": "Bajau, Indonesian"
+ },
+ "bdo": {
+ "english_name": "Morom"
+ },
+ "bdn": {
+ "english_name": "Baldemu"
+ },
+ "bdi": {
+ "english_name": "Burun"
+ },
+ "bdh": {
+ "english_name": "Baka (Sudan)"
+ },
+ "bdk": {
+ "english_name": "Budukh"
+ },
+ "bdj": {
+ "english_name": "Bai"
+ },
+ "bdu": {
+ "english_name": "Oroko"
+ },
+ "bdt": {
+ "english_name": "Bokoto"
+ },
+ "bdw": {
+ "english_name": "Baham"
+ },
+ "bdv": {
+ "english_name": "Bodo Parja"
+ },
+ "bdq": {
+ "english_name": "Bahnar"
+ },
+ "bdp": {
+ "english_name": "Bende"
+ },
+ "bds": {
+ "english_name": "Burunge"
+ },
+ "bdr": {
+ "english_name": "Bajau, West Coast"
+ },
+ "bdy": {
+ "english_name": "Bandjalang"
+ },
+ "bdx": {
+ "english_name": "Budong-Budong"
+ },
+ "bdz": {
+ "english_name": "Badeshi"
+ },
+ "tcy": {
+ "english_name": "Tulu"
+ },
+ "hks": {
+ "english_name": "Hong Kong Sign Language"
+ },
+ "hkk": {
+ "english_name": "Hunjara-Kaina Ke"
+ },
+ "hka": {
+ "english_name": "Kahe"
+ },
+ "ibr": {
+ "english_name": "Ibuoro"
+ },
+ "hke": {
+ "english_name": "Hunde"
+ },
+ "ibu": {
+ "english_name": "Ibu"
+ },
+ "tcx": {
+ "english_name": "Toda"
+ },
+ "apz": {
+ "english_name": "Safeyoka"
+ },
+ "apx": {
+ "english_name": "Aputai"
+ },
+ "apy": {
+ "english_name": "Apalaí"
+ },
+ "tcw": {
+ "english_name": "Totonac, Tecpatlán"
+ },
+ "apr": {
+ "english_name": "Arop-Lokep"
+ },
+ "aps": {
+ "english_name": "Arop-Sissano"
+ },
+ "app": {
+ "english_name": "Apma"
+ },
+ "apq": {
+ "english_name": "A-Pucikwar"
+ },
+ "apv": {
+ "english_name": "Alapmunte"
+ },
+ "apw": {
+ "english_name": "Apache, Western"
+ },
+ "apt": {
+ "english_name": "Apatani"
+ },
+ "apu": {
+ "english_name": "Apurinã"
+ },
+ "apj": {
+ "english_name": "Apache, Jicarilla"
+ },
+ "apk": {
+ "english_name": "Apache, Kiowa"
+ },
+ "aph": {
+ "english_name": "Athpariya"
+ },
+ "api": {
+ "english_name": "Apiaká"
+ },
+ "apn": {
+ "english_name": "Apinayé"
+ },
+ "apo": {
+ "english_name": "Ambul"
+ },
+ "apl": {
+ "english_name": "Apache, Lipan"
+ },
+ "apm": {
+ "english_name": "Apache, Mescalero-Chiricahua"
+ },
+ "apb": {
+ "english_name": "Sa'a"
+ },
+ "apc": {
+ "english_name": "Arabic, North Levantine"
+ },
+ "apf": {
+ "english_name": "Agta, Pahanan"
+ },
+ "apg": {
+ "english_name": "Ampanang"
+ },
+ "apd": {
+ "english_name": "Arabic, Sudanese"
+ },
+ "ape": {
+ "english_name": "Bukiyip"
+ },
+ "usa": {
+ "english_name": "Usarufa"
+ },
+ "usk": {
+ "english_name": "Usaghade"
+ },
+ "usi": {
+ "english_name": "Usui"
+ },
+ "ush": {
+ "english_name": "Ushojo"
+ },
+ "usu": {
+ "english_name": "Uya"
+ },
+ "fer": {
+ "english_name": "Feroge"
+ },
+ "usp": {
+ "english_name": "Uspanteco"
+ },
+ "tau": {
+ "english_name": "Tanana, Upper"
+ },
+ "tav": {
+ "english_name": "Tatuyo"
+ },
+ "taw": {
+ "english_name": "Tai"
+ },
+ "tap": {
+ "english_name": "Taabwa"
+ },
+ "taq": {
+ "english_name": "Tamasheq"
+ },
+ "tar": {
+ "english_name": "Tarahumara, Central"
+ },
+ "tas": {
+ "english_name": "Tay Boi"
+ },
+ "tax": {
+ "english_name": "Tamki"
+ },
+ "tay": {
+ "english_name": "Atayal"
+ },
+ "taz": {
+ "english_name": "Tocho"
+ },
+ "tad": {
+ "english_name": "Tause"
+ },
+ "tae": {
+ "english_name": "Tariana"
+ },
+ "taf": {
+ "english_name": "Tapirapé"
+ },
+ "tag": {
+ "english_name": "Tagoi"
+ },
+ "taa": {
+ "english_name": "Tanana, Lower"
+ },
+ "tab": {
+ "english_name": "Tabassaran"
+ },
+ "tac": {
+ "english_name": "Tarahumara, Lowland"
+ },
+ "tal": {
+ "english_name": "Tal"
+ },
+ "tan": {
+ "english_name": "Tangale"
+ },
+ "tao": {
+ "english_name": "Yami"
+ },
+ "taj": {
+ "english_name": "Tamang, Eastern"
+ },
+ "tak": {
+ "english_name": "Tala"
+ },
+ "dwr": {
+ "english_name": "Dawro"
+ },
+ "dws": {
+ "english_name": "Dutton World Speedwords"
+ },
+ "siq": {
+ "english_name": "Sonia"
+ },
+ "sip": {
+ "english_name": "Sikkimese"
+ },
+ "siw": {
+ "english_name": "Siwai"
+ },
+ "dww": {
+ "english_name": "Dawawa"
+ },
+ "siu": {
+ "english_name": "Sinagen"
+ },
+ "siz": {
+ "english_name": "Siwi"
+ },
+ "siy": {
+ "english_name": "Sivandi"
+ },
+ "six": {
+ "english_name": "Sumau"
+ },
+ "sib": {
+ "english_name": "Sebop"
+ },
+ "sia": {
+ "english_name": "Sami, Akkala"
+ },
+ "dwa": {
+ "english_name": "Diri"
+ },
+ "sig": {
+ "english_name": "Paasaal"
+ },
+ "sif": {
+ "english_name": "Siamou"
+ },
+ "sie": {
+ "english_name": "Simaa"
+ },
+ "sid": {
+ "english_name": "Sidamo"
+ },
+ "sik": {
+ "english_name": "Sikiana"
+ },
+ "sij": {
+ "english_name": "Numbami"
+ },
+ "sii": {
+ "english_name": "Shom Peng"
+ },
+ "sih": {
+ "english_name": "Zire"
+ },
+ "sim": {
+ "english_name": "Mende (Papua New Guinea)"
+ },
+ "sil": {
+ "english_name": "Sisaala, Tumulung"
+ },
+ "kbj": {
+ "english_name": "Kari"
+ },
+ "kbk": {
+ "english_name": "Koiari, Grass"
+ },
+ "kbh": {
+ "english_name": "Camsá"
+ },
+ "kbi": {
+ "english_name": "Kaptiau"
+ },
+ "kbn": {
+ "english_name": "Kare (Central African Republic)"
+ },
+ "kbo": {
+ "english_name": "Keliko"
+ },
+ "kbl": {
+ "english_name": "Kanembu"
+ },
+ "kbm": {
+ "english_name": "Iwal"
+ },
+ "kbb": {
+ "english_name": "Kaxuiâna"
+ },
+ "kbc": {
+ "english_name": "Kadiwéu"
+ },
+ "kba": {
+ "english_name": "Kalarko"
+ },
+ "kbg": {
+ "english_name": "Khamba"
+ },
+ "kbd": {
+ "english_name": "Kabardian"
+ },
+ "kbe": {
+ "english_name": "Kanju"
+ },
+ "kbz": {
+ "english_name": "Duhwa"
+ },
+ "kbx": {
+ "english_name": "Ap Ma"
+ },
+ "kby": {
+ "english_name": "Kanuri, Manga"
+ },
+ "kbr": {
+ "english_name": "Kafa"
+ },
+ "kbs": {
+ "english_name": "Kande"
+ },
+ "kbp": {
+ "english_name": "Kabiyè"
+ },
+ "kbq": {
+ "english_name": "Kamano"
+ },
+ "kbv": {
+ "english_name": "Dera (Indonesia)"
+ },
+ "kbw": {
+ "english_name": "Kaiep"
+ },
+ "kbt": {
+ "english_name": "Abadi"
+ },
+ "kbu": {
+ "english_name": "Kabutra"
+ },
+ "byz": {
+ "english_name": "Banaro"
+ },
+ "byx": {
+ "english_name": "Qaqet"
+ },
+ "byv": {
+ "english_name": "Medumba"
+ },
+ "byw": {
+ "english_name": "Belhariya"
+ },
+ "byt": {
+ "english_name": "Berti"
+ },
+ "byr": {
+ "english_name": "Baruya"
+ },
+ "bys": {
+ "english_name": "Burak"
+ },
+ "byp": {
+ "english_name": "Bumaji"
+ },
+ "byq": {
+ "english_name": "Basay"
+ },
+ "byn": {
+ "name": "Bilin",
+ "english_name": "Bilin"
+ },
+ "byo": {
+ "english_name": "Biyo"
+ },
+ "byl": {
+ "english_name": "Bayono"
+ },
+ "bym": {
+ "english_name": "Bidyara"
+ },
+ "byj": {
+ "english_name": "Bina (Nigeria)"
+ },
+ "byk": {
+ "english_name": "Biao"
+ },
+ "byh": {
+ "english_name": "Bhujel"
+ },
+ "byi": {
+ "english_name": "Buyu"
+ },
+ "byf": {
+ "english_name": "Bete"
+ },
+ "byg": {
+ "english_name": "Baygo"
+ },
+ "byd": {
+ "english_name": "Benyadu'"
+ },
+ "bye": {
+ "english_name": "Pouye"
+ },
+ "byb": {
+ "english_name": "Bikya"
+ },
+ "byc": {
+ "english_name": "Ubaghara"
+ },
+ "bya": {
+ "english_name": "Batak"
+ },
+ "rau": {
+ "english_name": "Raute"
+ },
+ "nfd": {
+ "english_name": "Ahwai"
+ },
+ "nfa": {
+ "english_name": "Dhao"
+ },
+ "nfl": {
+ "english_name": "Ayiwo"
+ },
+ "nfu": {
+ "english_name": "Mfumte"
+ },
+ "nfr": {
+ "english_name": "Nafaanra"
+ },
+ "oui": {
+ "english_name": "Uighur, Old"
+ },
+ "oum": {
+ "english_name": "Ouma"
+ },
+ "pqa": {
+ "english_name": "Pa'a"
+ },
+ "oub": {
+ "english_name": "Glio-Oubi"
+ },
+ "oua": {
+ "english_name": "Tagargrent"
+ },
+ "oue": {
+ "english_name": "Oune"
+ },
+ "pqm": {
+ "english_name": "Malecite-Passamaquoddy"
+ },
+ "lts": {
+ "english_name": "Tachoni"
+ },
+ "ltu": {
+ "english_name": "Latu"
+ },
+ "ltc": {
+ "english_name": "Chinese, Late Middle"
+ },
+ "ltg": {
+ "english_name": "Latgalian"
+ },
+ "lti": {
+ "english_name": "Leti (Indonesia)"
+ },
+ "lto": {
+ "english_name": "Tsotso"
+ },
+ "ltn": {
+ "english_name": "Latundê"
+ },
+ "zxx": {
+ "english_name": "No linguistic content"
+ },
+ "ybx": {
+ "english_name": "Yawiyo"
+ },
+ "yby": {
+ "english_name": "Yaweyuha"
+ },
+ "ybh": {
+ "english_name": "Yakha"
+ },
+ "ybi": {
+ "english_name": "Yamphu"
+ },
+ "ybj": {
+ "english_name": "Hasha"
+ },
+ "ybk": {
+ "english_name": "Bokha"
+ },
+ "ybl": {
+ "english_name": "Yukuben"
+ },
+ "ybm": {
+ "english_name": "Yaben"
+ },
+ "ybn": {
+ "english_name": "Yabaâna"
+ },
+ "ybo": {
+ "english_name": "Yabong"
+ },
+ "yba": {
+ "english_name": "Yala"
+ },
+ "ybb": {
+ "english_name": "Yemba"
+ },
+ "ybe": {
+ "english_name": "Yugur, West"
+ },
+ "xrm": {
+ "english_name": "Armazic"
+ },
+ "xrn": {
+ "english_name": "Arin"
+ },
+ "xri": {
+ "english_name": "Krikati-Timbira"
+ },
+ "xre": {
+ "english_name": "Kreye"
+ },
+ "xrd": {
+ "english_name": "Gundungurra"
+ },
+ "xrg": {
+ "english_name": "Minang"
+ },
+ "xra": {
+ "english_name": "Krahô"
+ },
+ "xrb": {
+ "english_name": "Karaboro, Eastern"
+ },
+ "hr": {
+ "name": "hrvatski",
+ "english_name": "Croatian"
+ },
+ "xru": {
+ "english_name": "Marriammu"
+ },
+ "xrt": {
+ "english_name": "Aranama-Tamique"
+ },
+ "xrw": {
+ "english_name": "Karawa"
+ },
+ "xrq": {
+ "english_name": "Karranga"
+ },
+ "xrr": {
+ "english_name": "Raetic"
+ },
+ "whg": {
+ "english_name": "Wahgi, North"
+ },
+ "sol": {
+ "english_name": "Solos"
+ },
+ "wha": {
+ "english_name": "Manusela"
+ },
+ "whk": {
+ "english_name": "Kenyah, Wahau"
+ },
+ "whu": {
+ "english_name": "Kayan, Wahau"
+ },
+ "soo": {
+ "english_name": "Songo"
+ },
+ "dmc": {
+ "english_name": "Gavak"
+ },
+ "qu": {
+ "english_name": "Quechua"
+ },
+ "thh": {
+ "english_name": "Tarahumara, Northern"
+ },
+ "ebg": {
+ "english_name": "Ebughu"
+ },
+ "ebo": {
+ "english_name": "Teke-Ebo"
+ },
+ "ebk": {
+ "english_name": "Bontok, Eastern"
+ },
+ "ebu": {
+ "english_name": "Embu"
+ },
+ "ebr": {
+ "english_name": "Ebrié"
+ },
+ "dlg": {
+ "english_name": "Dolgan"
+ },
+ "dlk": {
+ "english_name": "Dahalik"
+ },
+ "dln": {
+ "english_name": "Darlong"
+ },
+ "dlm": {
+ "english_name": "Dalmatian"
+ },
+ "dmu": {
+ "english_name": "Dubu"
+ },
+ "jor": {
+ "english_name": "Jorá"
+ },
+ "jos": {
+ "english_name": "Jordanian Sign Language"
+ },
+ "jow": {
+ "english_name": "Jowulu"
+ },
+ "job": {
+ "english_name": "Joba"
+ },
+ "jod": {
+ "english_name": "Wojenaka"
+ },
+ "rpt": {
+ "english_name": "Rapting"
+ },
+ "rpn": {
+ "english_name": "Repanbitip"
+ },
+ "bbo": {
+ "english_name": "Bobo Madaré, Northern"
+ },
+ "bbn": {
+ "english_name": "Uneapa"
+ },
+ "bbm": {
+ "english_name": "Babango"
+ },
+ "bbl": {
+ "english_name": "Bats"
+ },
+ "bbk": {
+ "english_name": "Babanki"
+ },
+ "bbj": {
+ "english_name": "Ghomálá'"
+ },
+ "bbi": {
+ "english_name": "Barombi"
+ },
+ "bbh": {
+ "english_name": "Bugan"
+ },
+ "bbg": {
+ "english_name": "Barama"
+ },
+ "bbf": {
+ "english_name": "Baibai"
+ },
+ "bbe": {
+ "english_name": "Bangba"
+ },
+ "bbd": {
+ "english_name": "Bau"
+ },
+ "bbc": {
+ "english_name": "Batak Toba"
+ },
+ "bbb": {
+ "english_name": "Barai"
+ },
+ "bba": {
+ "english_name": "Baatonum"
+ },
+ "bbz": {
+ "english_name": "Creole Arabic, Babalia"
+ },
+ "bby": {
+ "english_name": "Befang"
+ },
+ "bbx": {
+ "english_name": "Bubia"
+ },
+ "bbw": {
+ "english_name": "Baba"
+ },
+ "bbv": {
+ "english_name": "Karnai"
+ },
+ "bbu": {
+ "english_name": "Kulung (Nigeria)"
+ },
+ "bbt": {
+ "english_name": "Mburku"
+ },
+ "bbs": {
+ "english_name": "Bakpinka"
+ },
+ "bbr": {
+ "english_name": "Girawa"
+ },
+ "bbq": {
+ "english_name": "Bamali"
+ },
+ "bbp": {
+ "english_name": "Banda, West Central"
+ },
+ "hmy": {
+ "english_name": "Hmong, Southern Guiyang"
+ },
+ "hmz": {
+ "english_name": "Hmong Shua"
+ },
+ "hmt": {
+ "english_name": "Hamtai"
+ },
+ "hmu": {
+ "english_name": "Hamap"
+ },
+ "hmv": {
+ "english_name": "Hmong Dô"
+ },
+ "hmw": {
+ "english_name": "Hmong, Western Mashan"
+ },
+ "hmp": {
+ "english_name": "Hmong, Northern Mashan"
+ },
+ "hmq": {
+ "english_name": "Miao, Eastern Qiandong"
+ },
+ "hmr": {
+ "english_name": "Hmar"
+ },
+ "hms": {
+ "english_name": "Miao, Southern Qiandong"
+ },
+ "hml": {
+ "english_name": "Hmong, Luopohe"
+ },
+ "hmm": {
+ "english_name": "Hmong, Central Mashan"
+ },
+ "hmn": {
+ "english_name": "Hmong"
+ },
+ "hmh": {
+ "english_name": "Hmong, Southwestern Huishui"
+ },
+ "bln": {
+ "english_name": "Bikol, Southern Catanduanes"
+ },
+ "hmj": {
+ "english_name": "Ge"
+ },
+ "hmk": {
+ "english_name": "Maek"
+ },
+ "hmd": {
+ "english_name": "Miao, Large Flowery"
+ },
+ "hme": {
+ "english_name": "Hmong, Eastern Huishui"
+ },
+ "hmf": {
+ "english_name": "Hmong Don"
+ },
+ "hmg": {
+ "english_name": "Hmong, Southwestern Guiyang"
+ },
+ "hma": {
+ "english_name": "Hmong, Southern Mashan"
+ },
+ "hmb": {
+ "english_name": "Songhay, Humburi Senni"
+ },
+ "hmc": {
+ "english_name": "Hmong, Central Huishui"
+ },
+ "tja": {
+ "english_name": "Tajuasohn"
+ },
+ "nom": {
+ "english_name": "Nocamán"
+ },
+ "avt": {
+ "english_name": "Au"
+ },
+ "avu": {
+ "english_name": "Avokaya"
+ },
+ "avv": {
+ "english_name": "Avá-Canoeiro"
+ },
+ "avs": {
+ "english_name": "Aushiri"
+ },
+ "avl": {
+ "english_name": "Arabic, Eastern Egyptian Bedawi"
+ },
+ "avm": {
+ "english_name": "Angkamuthi"
+ },
+ "avn": {
+ "english_name": "Avatime"
+ },
+ "avo": {
+ "english_name": "Agavotaguerra"
+ },
+ "avi": {
+ "english_name": "Avikam"
+ },
+ "avk": {
+ "english_name": "Kotava"
+ },
+ "avd": {
+ "english_name": "Alviri-Vidari"
+ },
+ "avb": {
+ "english_name": "Avau"
+ },
+ "fkk": {
+ "english_name": "Kirya-Konzəl"
+ },
+ "tjg": {
+ "english_name": "Tunjung"
+ },
+ "tji": {
+ "english_name": "Tujia, Northern"
+ },
+ "fkv": {
+ "english_name": "Finnish, Kven"
+ },
+ "tjl": {
+ "english_name": "Tai Laing"
+ },
+ "tjn": {
+ "english_name": "Tonjon"
+ },
+ "mfa": {
+ "english_name": "Malay, Pattani"
+ },
+ "mfb": {
+ "english_name": "Bangka"
+ },
+ "mfc": {
+ "english_name": "Mba"
+ },
+ "mfd": {
+ "english_name": "Mendankwe-Nkwen"
+ },
+ "mfe": {
+ "english_name": "Morisyen"
+ },
+ "mff": {
+ "english_name": "Naki"
+ },
+ "mfg": {
+ "english_name": "Mogofin"
+ },
+ "mfh": {
+ "english_name": "Matal"
+ },
+ "mfi": {
+ "english_name": "Wandala"
+ },
+ "mfj": {
+ "english_name": "Mefele"
+ },
+ "mfk": {
+ "english_name": "Mofu, North"
+ },
+ "mfl": {
+ "english_name": "Putai"
+ },
+ "mfm": {
+ "english_name": "Marghi South"
+ },
+ "mfn": {
+ "english_name": "Mbembe, Cross River"
+ },
+ "mfo": {
+ "english_name": "Mbe"
+ },
+ "mfp": {
+ "english_name": "Malay, Makassar"
+ },
+ "mfq": {
+ "english_name": "Moba"
+ },
+ "mfr": {
+ "english_name": "Marithiel"
+ },
+ "mfs": {
+ "english_name": "Mexican Sign Language"
+ },
+ "mft": {
+ "english_name": "Mokerang"
+ },
+ "mfu": {
+ "english_name": "Mbwela"
+ },
+ "mfv": {
+ "english_name": "Mandjak"
+ },
+ "mfw": {
+ "english_name": "Mulaha"
+ },
+ "mfx": {
+ "english_name": "Melo"
+ },
+ "mfy": {
+ "english_name": "Mayo"
+ },
+ "mfz": {
+ "english_name": "Mabaan"
+ },
+ "tce": {
+ "english_name": "Tutchone, Southern"
+ },
+ "tcb": {
+ "english_name": "Tanacross"
+ },
+ "tcc": {
+ "english_name": "Datooga"
+ },
+ "tca": {
+ "english_name": "Ticuna"
+ },
+ "sku": {
+ "english_name": "Sakao"
+ },
+ "skt": {
+ "english_name": "Sakata"
+ },
+ "skw": {
+ "english_name": "Creole Dutch, Skepi"
+ },
+ "skv": {
+ "english_name": "Skou"
+ },
+ "skq": {
+ "english_name": "Sininkere"
+ },
+ "skp": {
+ "english_name": "Sekapan"
+ },
+ "sks": {
+ "english_name": "Maia"
+ },
+ "skr": {
+ "english_name": "Seraiki"
+ },
+ "sky": {
+ "english_name": "Sikaiana"
+ },
+ "skx": {
+ "english_name": "Seko Padang"
+ },
+ "skz": {
+ "english_name": "Sekar"
+ },
+ "ske": {
+ "english_name": "Seke (Vanuatu)"
+ },
+ "skd": {
+ "english_name": "Miwok, Southern Sierra"
+ },
+ "skg": {
+ "english_name": "Malagasy, Sakalava"
+ },
+ "skf": {
+ "english_name": "Sakirabiá"
+ },
+ "ska": {
+ "english_name": "Skagit"
+ },
+ "skc": {
+ "english_name": "Ma Manda"
+ },
+ "skb": {
+ "english_name": "Saek"
+ },
+ "skm": {
+ "english_name": "Kutong"
+ },
+ "sko": {
+ "english_name": "Seko Tengah"
+ },
+ "skn": {
+ "english_name": "Subanon, Kolibugan"
+ },
+ "ski": {
+ "english_name": "Sika"
+ },
+ "skh": {
+ "english_name": "Sikule"
+ },
+ "skk": {
+ "english_name": "Sok"
+ },
+ "skj": {
+ "english_name": "Seke (Nepal)"
+ },
+ "kdl": {
+ "english_name": "Tsikimba"
+ },
+ "kdm": {
+ "english_name": "Kagoma"
+ },
+ "kdn": {
+ "english_name": "Kunda"
+ },
+ "kdh": {
+ "english_name": "Tem"
+ },
+ "kdi": {
+ "english_name": "Kumam"
+ },
+ "kdj": {
+ "english_name": "Karamojong"
+ },
+ "kdk": {
+ "english_name": "Numèè"
+ },
+ "kdd": {
+ "english_name": "Yankunytjatjara"
+ },
+ "kde": {
+ "english_name": "Makonde"
+ },
+ "kdf": {
+ "english_name": "Mamusi"
+ },
+ "kdg": {
+ "english_name": "Seba"
+ },
+ "kda": {
+ "english_name": "Worimi"
+ },
+ "kdc": {
+ "english_name": "Kutu"
+ },
+ "kdx": {
+ "english_name": "Kam"
+ },
+ "kdy": {
+ "english_name": "Keder"
+ },
+ "kdz": {
+ "english_name": "Kwaja"
+ },
+ "kdt": {
+ "english_name": "Kuy"
+ },
+ "kdu": {
+ "english_name": "Kadaru"
+ },
+ "kdw": {
+ "english_name": "Koneraw"
+ },
+ "kdp": {
+ "english_name": "Kaningdon-Nindem"
+ },
+ "kdq": {
+ "english_name": "Koch"
+ },
+ "kdr": {
+ "english_name": "Karaim"
+ },
+ "ndi": {
+ "english_name": "Samba Leko"
+ },
+ "ndh": {
+ "english_name": "Ndali"
+ },
+ "ndk": {
+ "english_name": "Ndaka"
+ },
+ "ndj": {
+ "english_name": "Ndamba"
+ },
+ "ndm": {
+ "english_name": "Ndam"
+ },
+ "ndl": {
+ "english_name": "Ndolo"
+ },
+ "ndn": {
+ "english_name": "Ngundi"
+ },
+ "nda": {
+ "english_name": "Ndasa"
+ },
+ "ndc": {
+ "english_name": "Ndau"
+ },
+ "ndb": {
+ "english_name": "Kenswei Nsei"
+ },
+ "ndd": {
+ "english_name": "Nde-Nsele-Nta"
+ },
+ "ndg": {
+ "english_name": "Ndengereko"
+ },
+ "ndf": {
+ "english_name": "Nadruvian"
+ },
+ "ndy": {
+ "english_name": "Lutos"
+ },
+ "ndx": {
+ "english_name": "Nduga"
+ },
+ "ndz": {
+ "english_name": "Ndogo"
+ },
+ "ndq": {
+ "english_name": "Ndombe"
+ },
+ "ndp": {
+ "english_name": "Ndo"
+ },
+ "nds": {
+ "english_name": "German, Low"
+ },
+ "ndr": {
+ "english_name": "Ndoola"
+ },
+ "ndu": {
+ "english_name": "Dugun"
+ },
+ "ndt": {
+ "english_name": "Ndunga"
+ },
+ "ndw": {
+ "english_name": "Ndobo"
+ },
+ "ndv": {
+ "english_name": "Ndut"
+ },
+ "owl": {
+ "english_name": "Welsh, Old"
+ },
+ "owi": {
+ "english_name": "Owiniga"
+ },
+ "vaj": {
+ "english_name": "Vasekela Bushman"
+ },
+ "vah": {
+ "english_name": "Varhadi-Nagpuri"
+ },
+ "vai": {
+ "english_name": "Vai"
+ },
+ "van": {
+ "english_name": "Valman"
+ },
+ "vao": {
+ "english_name": "Vao"
+ },
+ "val": {
+ "english_name": "Vehes"
+ },
+ "vam": {
+ "english_name": "Vanimo"
+ },
+ "vaa": {
+ "english_name": "Vaagri Booli"
+ },
+ "vaf": {
+ "english_name": "Vafsi"
+ },
+ "vag": {
+ "english_name": "Vagla"
+ },
+ "vae": {
+ "english_name": "Vale"
+ },
+ "vay": {
+ "english_name": "Wayu"
+ },
+ "var": {
+ "english_name": "Huarijio"
+ },
+ "vas": {
+ "english_name": "Vasavi"
+ },
+ "vap": {
+ "english_name": "Vaiphei"
+ },
+ "vav": {
+ "english_name": "Varli"
+ },
+ "vau": {
+ "english_name": "Vanuma"
+ },
+ "bcl": {
+ "english_name": "Bikol, Central"
+ },
+ "bch": {
+ "english_name": "Bariai"
+ },
+ "bci": {
+ "english_name": "Baoulé"
+ },
+ "lvu": {
+ "english_name": "Levuka"
+ },
+ "lvs": {
+ "english_name": "Latvian, Standard"
+ },
+ "bcd": {
+ "english_name": "Babar, North"
+ },
+ "lva": {
+ "english_name": "Maku'a"
+ },
+ "bce": {
+ "english_name": "Bamenyam"
+ },
+ "lvk": {
+ "english_name": "Lavukaleve"
+ },
+ "myy": {
+ "english_name": "Macuna"
+ },
+ "myx": {
+ "english_name": "Masaaba"
+ },
+ "myz": {
+ "english_name": "Mandaic, Classical"
+ },
+ "myp": {
+ "english_name": "Pirahã"
+ },
+ "mys": {
+ "english_name": "Mesmes"
+ },
+ "myr": {
+ "english_name": "Muniche"
+ },
+ "myu": {
+ "english_name": "Mundurukú"
+ },
+ "myw": {
+ "english_name": "Muyuw"
+ },
+ "myv": {
+ "english_name": "Erzya"
+ },
+ "myi": {
+ "english_name": "Mina (India)"
+ },
+ "myh": {
+ "english_name": "Makah"
+ },
+ "myk": {
+ "english_name": "Senoufo, Mamara"
+ },
+ "myj": {
+ "english_name": "Mangayat"
+ },
+ "mym": {
+ "english_name": "Me'en"
+ },
+ "myl": {
+ "english_name": "Moma"
+ },
+ "myo": {
+ "english_name": "Anfillo"
+ },
+ "myc": {
+ "english_name": "Mayeka"
+ },
+ "myb": {
+ "english_name": "Mbay"
+ },
+ "mye": {
+ "english_name": "Myene"
+ },
+ "myd": {
+ "english_name": "Maramba"
+ },
+ "myg": {
+ "english_name": "Manta"
+ },
+ "myf": {
+ "english_name": "Bambassi"
+ }
+ },
+ "google": {},
+ "duckduckgo": [
+ "ar-XA",
+ "bg-BG",
+ "ca-CT",
+ "ca-ES",
+ "cs-CZ",
+ "da-DK",
+ "de-AT",
+ "de-CH",
+ "de-DE",
+ "el-GR",
+ "en-AU",
+ "en-CA",
+ "en-ID",
+ "en-IE",
+ "en-IN",
+ "en-MY",
+ "en-NZ",
+ "en-PH",
+ "en-SG",
+ "en-UK",
+ "en-US",
+ "en-ZA",
+ "es-AR",
+ "es-CL",
+ "es-CO",
+ "es-ES",
+ "es-MX",
+ "es-PE",
+ "es-US",
+ "et-EE",
+ "fi-FI",
+ "fr-BE",
+ "fr-CA",
+ "fr-CH",
+ "fr-FR",
+ "he-IL",
+ "hr-HR",
+ "hu-HU",
+ "id-ID",
+ "it-CH",
+ "it-IT",
+ "jp-JP",
+ "kr-KR",
+ "lt-LT",
+ "lv-LV",
+ "ms-MY",
+ "nl-BE",
+ "nl-NL",
+ "no-NO",
+ "pl-PL",
+ "pt-BR",
+ "pt-PT",
+ "ro-RO",
+ "ru-RU",
+ "sk-SK",
+ "sl-SL",
+ "sv-SE",
+ "th-TH",
+ "tl-PH",
+ "tr-TR",
+ "tzh-HK",
+ "tzh-TW",
+ "vi-VN",
+ "wt-WT",
+ "zh-CN"
+ ],
+ "google news": {},
+ "qwant": [
+ "bg-BG",
+ "br-FR",
+ "ca-AD",
+ "ca-ES",
+ "ca-FR",
+ "co-FR",
+ "cs-CZ",
+ "cy-GB",
+ "da-DK",
+ "de-AT",
+ "de-CH",
+ "de-DE",
+ "el-GR",
+ "en-AU",
+ "en-CA",
+ "en-GB",
+ "en-IE",
+ "en-IN",
+ "en-MY",
+ "en-NZ",
+ "en-PH",
+ "en-SG",
+ "en-US",
+ "es-AD",
+ "es-AR",
+ "es-CL",
+ "es-ES",
+ "es-MX",
+ "et-EE",
+ "eu-ES",
+ "eu-FR",
+ "fi-FI",
+ "fr-AD",
+ "fr-BE",
+ "fr-CA",
+ "fr-CH",
+ "fr-FR",
+ "gd-GB",
+ "he-IL",
+ "hu-HU",
+ "it-CH",
+ "it-IT",
+ "ja-JP",
+ "ko-KR",
+ "ms-MY",
+ "nl-BE",
+ "nl-NL",
+ "no-NO",
+ "pl-PL",
+ "pt-AD",
+ "pt-BR",
+ "pt-PT",
+ "ro-RO",
+ "ru-RU",
+ "sv-SE",
+ "th-TH",
+ "tr-TR"
+ ],
+ "wikipedia": {
+ "gv": {
+ "articles": 4966,
+ "name": "Gaelg",
+ "english_name": "Manx"
+ },
+ "sco": {
+ "articles": 52700,
+ "name": "Scots",
+ "english_name": "Scots"
+ },
+ "scn": {
+ "articles": 26052,
+ "name": "Sicilianu",
+ "english_name": "Sicilian"
+ },
+ "wuu": {
+ "articles": 12505,
+ "name": "吴语",
+ "english_name": "Wu"
+ },
+ "tcy": {
+ "articles": 970,
+ "name": "ತುಳು",
+ "english_name": "Tulu"
+ },
+ "cdo": {
+ "articles": 13994,
+ "name": "Mìng-dĕ̤ng-ngṳ̄",
+ "english_name": "Min Dong"
+ },
+ "gu": {
+ "articles": 28113,
+ "name": "ગુજરાતી",
+ "english_name": "Gujarati"
+ },
+ "kbd": {
+ "articles": 1576,
+ "name": "Адыгэбзэ (Adighabze)",
+ "english_name": "Kabardian Circassian"
+ },
+ "got": {
+ "articles": 577,
+ "name": "𐌲𐌿𐍄𐌹𐍃𐌺",
+ "english_name": "Gothic"
+ },
+ "gd": {
+ "articles": 14736,
+ "name": "Gàidhlig",
+ "english_name": "Scottish Gaelic"
+ },
+ "jbo": {
+ "articles": 1229,
+ "name": "Lojban",
+ "english_name": "Lojban"
+ },
+ "ga": {
+ "articles": 48149,
+ "name": "Gaeilge",
+ "english_name": "Irish"
+ },
+ "gn": {
+ "articles": 3619,
+ "name": "Avañe'ẽ",
+ "english_name": "Guarani"
+ },
+ "kbp": {
+ "articles": 1450,
+ "name": "Kabɩyɛ",
+ "english_name": "Kabiye"
+ },
+ "gl": {
+ "articles": 151099,
+ "name": "Galego",
+ "english_name": "Galician"
+ },
+ "als": {
+ "articles": 25014,
+ "name": "Alemannisch",
+ "english_name": "Alemannic"
+ },
+ "lg": {
+ "articles": 1155,
+ "name": "Luganda",
+ "english_name": "Luganda"
+ },
+ "hak": {
+ "articles": 8843,
+ "name": "Hak-kâ-fa / 客家話",
+ "english_name": "Hakka"
+ },
+ "lb": {
+ "articles": 54478,
+ "name": "Lëtzebuergesch",
+ "english_name": "Luxembourgish"
+ },
+ "szl": {
+ "articles": 7513,
+ "name": "Ślůnski",
+ "english_name": "Silesian"
+ },
+ "vep": {
+ "articles": 5802,
+ "name": "Vepsän",
+ "english_name": "Vepsian"
+ },
+ "la": {
+ "articles": 129128,
+ "name": "Latina",
+ "english_name": "Latin"
+ },
+ "ln": {
+ "articles": 3046,
+ "name": "Lingala",
+ "english_name": "Lingala"
+ },
+ "frp": {
+ "articles": 3146,
+ "name": "Arpitan",
+ "english_name": "Franco-Provençal"
+ },
+ "tt": {
+ "articles": 80846,
+ "name": "Tatarça / Татарча",
+ "english_name": "Tatar"
+ },
+ "tr": {
+ "articles": 315699,
+ "name": "Türkçe",
+ "english_name": "Turkish"
+ },
+ "cbk-zam": {
+ "articles": 2996,
+ "name": "Chavacano de Zamboanga",
+ "english_name": "Zamboanga Chavacano"
+ },
+ "li": {
+ "articles": 12244,
+ "name": "Limburgs",
+ "english_name": "Limburgish"
+ },
+ "lv": {
+ "articles": 87649,
+ "name": "Latviešu",
+ "english_name": "Latvian"
+ },
+ "to": {
+ "articles": 1692,
+ "name": "faka Tonga",
+ "english_name": "Tongan"
+ },
+ "tl": {
+ "articles": 81327,
+ "name": "Tagalog",
+ "english_name": "Tagalog"
+ },
+ "jam": {
+ "articles": 1630,
+ "name": "Jumiekan Kryuol",
+ "english_name": "Jamaican Patois"
+ },
+ "vec": {
+ "articles": 11226,
+ "name": "Vèneto",
+ "english_name": "Venetian"
+ },
+ "th": {
+ "articles": 126603,
+ "name": "ไทย",
+ "english_name": "Thai"
+ },
+ "ti": {
+ "articles": 168,
+ "name": "ትግርኛ",
+ "english_name": "Tigrinya"
+ },
+ "tg": {
+ "articles": 95443,
+ "name": "Тоҷикӣ",
+ "english_name": "Tajik"
+ },
+ "te": {
+ "articles": 69303,
+ "name": "తెలుగు",
+ "english_name": "Telugu"
+ },
+ "ksh": {
+ "articles": 2840,
+ "name": "Ripoarisch",
+ "english_name": "Ripuarian"
+ },
+ "pcd": {
+ "articles": 3775,
+ "name": "Picard",
+ "english_name": "Picard"
+ },
+ "ta": {
+ "articles": 117845,
+ "name": "தமிழ்",
+ "english_name": "Tamil"
+ },
+ "yi": {
+ "articles": 14493,
+ "name": "ייִדיש",
+ "english_name": "Yiddish"
+ },
+ "lrc": {
+ "articles": 5368,
+ "name": "لۊری شومالی",
+ "english_name": "Northern Luri"
+ },
+ "xmf": {
+ "articles": 12602,
+ "name": "მარგალური (Margaluri)",
+ "english_name": "Mingrelian"
+ },
+ "ceb": {
+ "articles": 5380865,
+ "name": "Sinugboanong Binisaya",
+ "english_name": "Cebuano"
+ },
+ "yo": {
+ "articles": 31717,
+ "name": "Yorùbá",
+ "english_name": "Yoruba"
+ },
+ "de": {
+ "articles": 2220065,
+ "name": "Deutsch",
+ "english_name": "German"
+ },
+ "da": {
+ "articles": 239987,
+ "name": "Dansk",
+ "english_name": "Danish"
+ },
+ "za": {
+ "articles": 1868,
+ "name": "Cuengh",
+ "english_name": "Zhuang"
+ },
+ "pdc": {
+ "articles": 1845,
+ "name": "Deitsch",
+ "english_name": "Pennsylvania German"
+ },
+ "bxr": {
+ "articles": 2093,
+ "name": "Буряад",
+ "english_name": "Buryat"
+ },
+ "dz": {
+ "articles": 219,
+ "name": "ཇོང་ཁ",
+ "english_name": "Dzongkha"
+ },
+ "hif": {
+ "articles": 9761,
+ "name": "Fiji Hindi",
+ "english_name": "Fiji Hindi"
+ },
+ "rm": {
+ "articles": 3543,
+ "name": "Rumantsch",
+ "english_name": "Romansh"
+ },
+ "dv": {
+ "articles": 3022,
+ "name": "ދިވެހިބަސް",
+ "english_name": "Divehi"
+ },
+ "qu": {
+ "articles": 20755,
+ "name": "Runa Simi",
+ "english_name": "Quechua"
+ },
+ "vls": {
+ "articles": 6536,
+ "name": "West-Vlams",
+ "english_name": "West Flemish"
+ },
+ "bar": {
+ "articles": 26645,
+ "name": "Boarisch",
+ "english_name": "Bavarian"
+ },
+ "ang": {
+ "articles": 3039,
+ "name": "Englisc",
+ "english_name": "Anglo-Saxon"
+ },
+ "eml": {
+ "articles": 11187,
+ "name": "Emiliàn e rumagnòl",
+ "english_name": "Emilian-Romagnol"
+ },
+ "kn": {
+ "articles": 23709,
+ "name": "ಕನ್ನಡ",
+ "english_name": "Kannada"
+ },
+ "fiu-vro": {
+ "articles": 5448,
+ "name": "Võro",
+ "english_name": "Võro"
+ },
+ "bpy": {
+ "articles": 25080,
+ "name": "ইমার ঠার/বিষ্ণুপ্রিয়া মণিপুরী",
+ "english_name": "Bishnupriya Manipuri"
+ },
+ "crh": {
+ "articles": 5977,
+ "name": "Qırımtatarca",
+ "english_name": "Crimean Tatar"
+ },
+ "mhr": {
+ "articles": 10025,
+ "name": "Олык Марий (Olyk Marij)",
+ "english_name": "Meadow Mari"
+ },
+ "diq": {
+ "articles": 9036,
+ "name": "Zazaki",
+ "english_name": "Zazaki"
+ },
+ "el": {
+ "articles": 152453,
+ "name": "Ελληνικά",
+ "english_name": "Greek"
+ },
+ "eo": {
+ "articles": 249972,
+ "name": "Esperanto",
+ "english_name": "Esperanto"
+ },
+ "en": {
+ "articles": 5717839,
+ "name": "English",
+ "english_name": "English"
+ },
+ "zh": {
+ "articles": 1022608,
+ "name": "中文",
+ "english_name": "Chinese"
+ },
+ "pms": {
+ "articles": 64375,
+ "name": "Piemontèis",
+ "english_name": "Piedmontese"
+ },
+ "ee": {
+ "articles": 345,
+ "name": "Eʋegbe",
+ "english_name": "Ewe"
+ },
+ "tpi": {
+ "articles": 1481,
+ "name": "Tok Pisin",
+ "english_name": "Tok Pisin"
+ },
+ "arz": {
+ "articles": 19444,
+ "name": "مصرى (Maṣri)",
+ "english_name": "Egyptian Arabic"
+ },
+ "lfn": {
+ "articles": 2868,
+ "name": "Lingua franca nova",
+ "english_name": "Lingua Franca Nova"
+ },
+ "mdf": {
+ "articles": 1185,
+ "name": "Мокшень (Mokshanj Kälj)",
+ "english_name": "Moksha"
+ },
+ "kaa": {
+ "articles": 1908,
+ "name": "Qaraqalpaqsha",
+ "english_name": "Karakalpak"
+ },
+ "olo": {
+ "articles": 2700,
+ "name": "Karjalan",
+ "english_name": "Livvi-Karelian"
+ },
+ "arc": {
+ "articles": 1628,
+ "name": "ܐܪܡܝܐ",
+ "english_name": "Aramaic"
+ },
+ "cr": {
+ "articles": 104,
+ "name": "Nehiyaw",
+ "english_name": "Cree"
+ },
+ "eu": {
+ "articles": 304835,
+ "name": "Euskara",
+ "english_name": "Basque"
+ },
+ "et": {
+ "articles": 180987,
+ "name": "Eesti",
+ "english_name": "Estonian"
+ },
+ "tet": {
+ "articles": 1431,
+ "name": "Tetun",
+ "english_name": "Tetum"
+ },
+ "es": {
+ "articles": 1474724,
+ "name": "Español",
+ "english_name": "Spanish"
+ },
+ "ba": {
+ "articles": 43988,
+ "name": "Башҡорт",
+ "english_name": "Bashkir"
+ },
+ "gom": {
+ "articles": 3514,
+ "name": "गोंयची कोंकणी / Gõychi Konknni",
+ "english_name": "Goan Konkani"
+ },
+ "ru": {
+ "articles": 1497272,
+ "name": "Русский",
+ "english_name": "Russian"
+ },
+ "roa-tara": {
+ "articles": 9242,
+ "name": "Tarandíne",
+ "english_name": "Tarantino"
+ },
+ "ha": {
+ "articles": 1913,
+ "name": "هَوُسَ",
+ "english_name": "Hausa"
+ },
+ "ak": {
+ "articles": 561,
+ "name": "Akana",
+ "english_name": "Akan"
+ },
+ "lad": {
+ "articles": 3805,
+ "name": "Dzhudezmo",
+ "english_name": "Ladino"
+ },
+ "new": {
+ "articles": 72159,
+ "name": "नेपाल भाषा",
+ "english_name": "Newar"
+ },
+ "rn": {
+ "articles": 611,
+ "name": "Kirundi",
+ "english_name": "Kirundi"
+ },
+ "ro": {
+ "articles": 388471,
+ "name": "Română",
+ "english_name": "Romanian"
+ },
+ "dsb": {
+ "articles": 3189,
+ "name": "Dolnoserbski",
+ "english_name": "Lower Sorbian"
+ },
+ "bn": {
+ "articles": 60805,
+ "name": "বাংলা",
+ "english_name": "Bengali"
+ },
+ "gor": {
+ "articles": 1776,
+ "name": "Hulontalo",
+ "english_name": "Gorontalo"
+ },
+ "hsb": {
+ "articles": 13181,
+ "name": "Hornjoserbsce",
+ "english_name": "Upper Sorbian"
+ },
+ "be": {
+ "articles": 157264,
+ "name": "Беларуская",
+ "english_name": "Belarusian"
+ },
+ "bg": {
+ "articles": 245706,
+ "name": "Български",
+ "english_name": "Bulgarian"
+ },
+ "myv": {
+ "articles": 5353,
+ "name": "Эрзянь (Erzjanj Kelj)",
+ "english_name": "Erzya"
+ },
+ "uk": {
+ "articles": 816473,
+ "name": "Українська",
+ "english_name": "Ukrainian"
+ },
+ "wa": {
+ "articles": 14717,
+ "name": "Walon",
+ "english_name": "Walloon"
+ },
+ "ast": {
+ "articles": 86717,
+ "name": "Asturianu",
+ "english_name": "Asturian"
+ },
+ "wo": {
+ "articles": 1170,
+ "name": "Wolof",
+ "english_name": "Wolof"
+ },
+ "bm": {
+ "articles": 646,
+ "name": "Bamanankan",
+ "english_name": "Bambara"
+ },
+ "jv": {
+ "articles": 54946,
+ "name": "Basa Jawa",
+ "english_name": "Javanese"
+ },
+ "bo": {
+ "articles": 5822,
+ "name": "བོད་སྐད",
+ "english_name": "Tibetan"
+ },
+ "bh": {
+ "articles": 7671,
+ "name": "भोजपुरी",
+ "english_name": "Bihari"
+ },
+ "bi": {
+ "articles": 1176,
+ "name": "Bislama",
+ "english_name": "Bislama"
+ },
+ "rue": {
+ "articles": 6698,
+ "name": "Русиньскый",
+ "english_name": "Rusyn"
+ },
+ "map-bms": {
+ "articles": 13333,
+ "name": "Basa Banyumasan",
+ "english_name": "Banyumasan"
+ },
+ "tum": {
+ "articles": 572,
+ "name": "chiTumbuka",
+ "english_name": "Tumbuka"
+ },
+ "br": {
+ "articles": 65468,
+ "name": "Brezhoneg",
+ "english_name": "Breton"
+ },
+ "bs": {
+ "articles": 78388,
+ "name": "Bosanski",
+ "english_name": "Bosnian"
+ },
+ "lez": {
+ "articles": 3954,
+ "name": "Лезги чІал (Lezgi č’al)",
+ "english_name": "Lezgian"
+ },
+ "ja": {
+ "articles": 1121035,
+ "name": "日本語",
+ "english_name": "Japanese"
+ },
+ "om": {
+ "articles": 772,
+ "name": "Oromoo",
+ "english_name": "Oromo"
+ },
+ "glk": {
+ "articles": 5656,
+ "name": "گیلکی",
+ "english_name": "Gilaki"
+ },
+ "ace": {
+ "articles": 7451,
+ "name": "Bahsa Acèh",
+ "english_name": "Acehnese"
+ },
+ "ilo": {
+ "articles": 11422,
+ "name": "Ilokano",
+ "english_name": "Ilokano"
+ },
+ "roa-rup": {
+ "articles": 1212,
+ "name": "Armãneashce",
+ "english_name": "Aromanian"
+ },
+ "oc": {
+ "articles": 84869,
+ "name": "Occitan",
+ "english_name": "Occitan"
+ },
+ "ltg": {
+ "articles": 807,
+ "name": "Latgaļu",
+ "english_name": "Latgalian"
+ },
+ "be-tarask": {
+ "articles": 64277,
+ "name": "Беларуская (тарашкевіца)",
+ "english_name": "Belarusian (Taraškievica)"
+ },
+ "st": {
+ "articles": 543,
+ "name": "Sesotho",
+ "english_name": "Sesotho"
+ },
+ "lo": {
+ "articles": 2952,
+ "name": "ລາວ",
+ "english_name": "Lao"
+ },
+ "krc": {
+ "articles": 2027,
+ "name": "Къарачай-Малкъар (Qarachay-Malqar)",
+ "english_name": "Karachay-Balkar"
+ },
+ "nds": {
+ "articles": 31150,
+ "name": "Plattdüütsch",
+ "english_name": "Low Saxon"
+ },
+ "os": {
+ "articles": 11084,
+ "name": "Иронау",
+ "english_name": "Ossetian"
+ },
+ "or": {
+ "articles": 14248,
+ "name": "ଓଡ଼ିଆ",
+ "english_name": "Oriya"
+ },
+ "udm": {
+ "articles": 4508,
+ "name": "Удмурт кыл",
+ "english_name": "Udmurt"
+ },
+ "xh": {
+ "articles": 748,
+ "name": "isiXhosa",
+ "english_name": "Xhosa"
+ },
+ "ch": {
+ "articles": 472,
+ "name": "Chamoru",
+ "english_name": "Chamorro"
+ },
+ "co": {
+ "articles": 5567,
+ "name": "Corsu",
+ "english_name": "Corsican"
+ },
+ "nso": {
+ "articles": 8089,
+ "name": "Sepedi",
+ "english_name": "Northern Sotho"
+ },
+ "simple": {
+ "articles": 138362,
+ "name": "Simple English",
+ "english_name": "Simple English"
+ },
+ "bjn": {
+ "articles": 1853,
+ "name": "Bahasa Banjar",
+ "english_name": "Banjar"
+ },
+ "ca": {
+ "articles": 589895,
+ "name": "Català",
+ "english_name": "Catalan"
+ },
+ "lmo": {
+ "articles": 37698,
+ "name": "Lumbaart",
+ "english_name": "Lombard"
+ },
+ "ce": {
+ "articles": 208693,
+ "name": "Нохчийн",
+ "english_name": "Chechen"
+ },
+ "ts": {
+ "articles": 566,
+ "name": "Xitsonga",
+ "english_name": "Tsonga"
+ },
+ "cy": {
+ "articles": 101280,
+ "name": "Cymraeg",
+ "english_name": "Welsh"
+ },
+ "ab": {
+ "articles": 3427,
+ "name": "Аҧсуа",
+ "english_name": "Abkhazian"
+ },
+ "cs": {
+ "articles": 412770,
+ "name": "Čeština",
+ "english_name": "Czech"
+ },
+ "ty": {
+ "articles": 1195,
+ "name": "Reo Mā`ohi",
+ "english_name": "Tahitian"
+ },
+ "ady": {
+ "articles": 408,
+ "name": "Адыгэбзэ",
+ "english_name": "Adyghe"
+ },
+ "cv": {
+ "articles": 41433,
+ "name": "Чăваш",
+ "english_name": "Chuvash"
+ },
+ "cu": {
+ "articles": 660,
+ "name": "Словѣньскъ",
+ "english_name": "Old Church Slavonic"
+ },
+ "ve": {
+ "articles": 267,
+ "name": "Tshivenda",
+ "english_name": "Venda"
+ },
+ "koi": {
+ "articles": 3449,
+ "name": "Перем Коми (Perem Komi)",
+ "english_name": "Komi-Permyak"
+ },
+ "ps": {
+ "articles": 9106,
+ "name": "پښتو",
+ "english_name": "Pashto"
+ },
+ "fj": {
+ "articles": 424,
+ "name": "Na Vosa Vakaviti",
+ "english_name": "Fijian"
+ },
+ "srn": {
+ "articles": 1059,
+ "name": "Sranantongo",
+ "english_name": "Sranan"
+ },
+ "pt": {
+ "articles": 1005169,
+ "name": "Português",
+ "english_name": "Portuguese"
+ },
+ "sm": {
+ "articles": 799,
+ "name": "Gagana Samoa",
+ "english_name": "Samoan"
+ },
+ "ext": {
+ "articles": 3013,
+ "name": "Estremeñu",
+ "english_name": "Extremaduran"
+ },
+ "lt": {
+ "articles": 189496,
+ "name": "Lietuvių",
+ "english_name": "Lithuanian"
+ },
+ "zh-min-nan": {
+ "articles": 227444,
+ "name": "Bân-lâm-gú",
+ "english_name": "Min Nan"
+ },
+ "frr": {
+ "articles": 7705,
+ "name": "Nordfriisk",
+ "english_name": "North Frisian"
+ },
+ "chr": {
+ "articles": 854,
+ "name": "ᏣᎳᎩ",
+ "english_name": "Cherokee"
+ },
+ "pa": {
+ "articles": 30223,
+ "name": "ਪੰਜਾਬੀ",
+ "english_name": "Punjabi"
+ },
+ "xal": {
+ "articles": 2036,
+ "name": "Хальмг",
+ "english_name": "Kalmyk"
+ },
+ "chy": {
+ "articles": 609,
+ "name": "Tsetsêhestâhese",
+ "english_name": "Cheyenne"
+ },
+ "pi": {
+ "articles": 2530,
+ "name": "पाऴि",
+ "english_name": "Pali"
+ },
+ "war": {
+ "articles": 1263242,
+ "name": "Winaray",
+ "english_name": "Waray-Waray"
+ },
+ "pl": {
+ "articles": 1300041,
+ "name": "Polski",
+ "english_name": "Polish"
+ },
+ "tk": {
+ "articles": 5491,
+ "name": "Türkmen",
+ "english_name": "Turkmen"
+ },
+ "hy": {
+ "articles": 245745,
+ "name": "Հայերեն",
+ "english_name": "Armenian"
+ },
+ "an": {
+ "articles": 33544,
+ "name": "Aragonés",
+ "english_name": "Aragonese"
+ },
+ "nrm": {
+ "articles": 4003,
+ "name": "Nouormand/Normaund",
+ "english_name": "Norman"
+ },
+ "hr": {
+ "articles": 198726,
+ "name": "Hrvatski",
+ "english_name": "Croatian"
+ },
+ "iu": {
+ "articles": 402,
+ "name": "ᐃᓄᒃᑎᑐᑦ",
+ "english_name": "Inuktitut"
+ },
+ "pfl": {
+ "articles": 2259,
+ "name": "Pälzisch",
+ "english_name": "Palatinate German"
+ },
+ "ht": {
+ "articles": 53067,
+ "name": "Krèyol ayisyen",
+ "english_name": "Haitian"
+ },
+ "hu": {
+ "articles": 436930,
+ "name": "Magyar",
+ "english_name": "Hungarian"
+ },
+ "gan": {
+ "articles": 6405,
+ "name": "贛語",
+ "english_name": "Gan"
+ },
+ "bat-smg": {
+ "articles": 16307,
+ "name": "Žemaitėška",
+ "english_name": "Samogitian"
+ },
+ "hi": {
+ "articles": 126671,
+ "name": "हिन्दी",
+ "english_name": "Hindi"
+ },
+ "tw": {
+ "articles": 650,
+ "name": "Twi",
+ "english_name": "Twi"
+ },
+ "gag": {
+ "articles": 2760,
+ "name": "Gagauz",
+ "english_name": "Gagauz"
+ },
+ "kg": {
+ "articles": 1181,
+ "name": "KiKongo",
+ "english_name": "Kongo"
+ },
+ "pnb": {
+ "articles": 46645,
+ "name": "شاہ مکھی پنجابی (Shāhmukhī Pañjābī)",
+ "english_name": "Western Punjabi"
+ },
+ "bug": {
+ "articles": 14117,
+ "name": "Basa Ugi",
+ "english_name": "Buginese"
+ },
+ "he": {
+ "articles": 230405,
+ "name": "עברית",
+ "english_name": "Hebrew"
+ },
+ "mg": {
+ "articles": 85263,
+ "name": "Malagasy",
+ "english_name": "Malagasy"
+ },
+ "fur": {
+ "articles": 3284,
+ "name": "Furlan",
+ "english_name": "Friulian"
+ },
+ "uz": {
+ "articles": 129308,
+ "name": "O‘zbek",
+ "english_name": "Uzbek"
+ },
+ "ml": {
+ "articles": 58717,
+ "name": "മലയാളം",
+ "english_name": "Malayalam"
+ },
+ "azb": {
+ "articles": 101690,
+ "name": "تۆرکجه",
+ "english_name": "South Azerbaijani"
+ },
+ "mn": {
+ "articles": 18326,
+ "name": "Монгол",
+ "english_name": "Mongolian"
+ },
+ "mi": {
+ "articles": 7145,
+ "name": "Māori",
+ "english_name": "Maori"
+ },
+ "ik": {
+ "articles": 260,
+ "name": "Iñupiak",
+ "english_name": "Inupiak"
+ },
+ "mk": {
+ "articles": 96187,
+ "name": "Македонски",
+ "english_name": "Macedonian"
+ },
+ "ur": {
+ "articles": 140514,
+ "name": "اردو",
+ "english_name": "Urdu"
+ },
+ "zea": {
+ "articles": 4417,
+ "name": "Zeêuws",
+ "english_name": "Zeelandic"
+ },
+ "mt": {
+ "articles": 3330,
+ "name": "Malti",
+ "english_name": "Maltese"
+ },
+ "dty": {
+ "articles": 2935,
+ "name": "डोटेली",
+ "english_name": "Doteli"
+ },
+ "stq": {
+ "articles": 3966,
+ "name": "Seeltersk",
+ "english_name": "Saterland Frisian"
+ },
+ "ms": {
+ "articles": 319749,
+ "name": "Bahasa Melayu",
+ "english_name": "Malay"
+ },
+ "mr": {
+ "articles": 51938,
+ "name": "मराठी",
+ "english_name": "Marathi"
+ },
+ "inh": {
+ "articles": 781,
+ "name": "Гӏалгӏай",
+ "english_name": "Ingush"
+ },
+ "ug": {
+ "articles": 4092,
+ "name": "ئۇيغۇر تىلى",
+ "english_name": "Uyghur"
+ },
+ "mwl": {
+ "articles": 3653,
+ "name": "Mirandés",
+ "english_name": "Mirandese"
+ },
+ "my": {
+ "articles": 39501,
+ "name": "မြန်မာဘာသာ",
+ "english_name": "Burmese"
+ },
+ "ki": {
+ "articles": 1357,
+ "name": "Gĩkũyũ",
+ "english_name": "Kikuyu"
+ },
+ "pih": {
+ "articles": 672,
+ "name": "Norfuk",
+ "english_name": "Norfolk"
+ },
+ "sah": {
+ "articles": 11663,
+ "name": "Саха тыла (Saxa Tyla)",
+ "english_name": "Sakha"
+ },
+ "ss": {
+ "articles": 448,
+ "name": "SiSwati",
+ "english_name": "Swati"
+ },
+ "af": {
+ "articles": 58995,
+ "name": "Afrikaans",
+ "english_name": "Afrikaans"
+ },
+ "tn": {
+ "articles": 641,
+ "name": "Setswana",
+ "english_name": "Tswana"
+ },
+ "vi": {
+ "articles": 1188863,
+ "name": "Tiếng Việt",
+ "english_name": "Vietnamese"
+ },
+ "is": {
+ "articles": 45775,
+ "name": "Íslenska",
+ "english_name": "Icelandic"
+ },
+ "am": {
+ "articles": 14359,
+ "name": "አማርኛ",
+ "english_name": "Amharic"
+ },
+ "it": {
+ "articles": 1461380,
+ "name": "Italiano",
+ "english_name": "Italian"
+ },
+ "vo": {
+ "articles": 121490,
+ "name": "Volapük",
+ "english_name": "Volapük"
+ },
+ "ay": {
+ "articles": 4383,
+ "name": "Aymar",
+ "english_name": "Aymara"
+ },
+ "as": {
+ "articles": 4991,
+ "name": "অসমীয়া",
+ "english_name": "Assamese"
+ },
+ "ar": {
+ "articles": 609711,
+ "name": "العربية",
+ "english_name": "Arabic"
+ },
+ "lbe": {
+ "articles": 1216,
+ "name": "Лакку",
+ "english_name": "Lak"
+ },
+ "km": {
+ "articles": 6712,
+ "name": "ភាសាខ្មែរ",
+ "english_name": "Khmer"
+ },
+ "io": {
+ "articles": 27921,
+ "name": "Ido",
+ "english_name": "Ido"
+ },
+ "av": {
+ "articles": 2306,
+ "name": "Авар",
+ "english_name": "Avar"
+ },
+ "ia": {
+ "articles": 20764,
+ "name": "Interlingua",
+ "english_name": "Interlingua"
+ },
+ "haw": {
+ "articles": 2960,
+ "name": "Hawai`i",
+ "english_name": "Hawaiian"
+ },
+ "az": {
+ "articles": 137984,
+ "name": "Azərbaycanca",
+ "english_name": "Azerbaijani"
+ },
+ "ie": {
+ "articles": 4046,
+ "name": "Interlingue",
+ "english_name": "Interlingue"
+ },
+ "id": {
+ "articles": 439613,
+ "name": "Bahasa Indonesia",
+ "english_name": "Indonesian"
+ },
+ "nds-nl": {
+ "articles": 8656,
+ "name": "Nedersaksisch",
+ "english_name": "Dutch Low Saxon"
+ },
+ "sat": {
+ "articles": 378,
+ "name": "Santali",
+ "english_name": "ᱥᱟᱱᱛᱟᱲᱤ"
+ },
+ "pap": {
+ "articles": 1933,
+ "name": "Papiamentu",
+ "english_name": "Papiamentu"
+ },
+ "ks": {
+ "articles": 323,
+ "name": "कश्मीरी / كشميري",
+ "english_name": "Kashmiri"
+ },
+ "nl": {
+ "articles": 1942104,
+ "name": "Nederlands",
+ "english_name": "Dutch"
+ },
+ "nn": {
+ "articles": 139512,
+ "name": "Nynorsk",
+ "english_name": "Norwegian (Nynorsk)"
+ },
+ "no": {
+ "articles": 494547,
+ "name": "Norsk (Bokmål)",
+ "english_name": "Norwegian (Bokmål)"
+ },
+ "na": {
+ "articles": 1305,
+ "name": "dorerin Naoero",
+ "english_name": "Nauruan"
+ },
+ "nah": {
+ "articles": 6921,
+ "name": "Nāhuatl",
+ "english_name": "Nahuatl"
+ },
+ "ne": {
+ "articles": 30697,
+ "name": "नेपाली",
+ "english_name": "Nepali"
+ },
+ "lij": {
+ "articles": 3425,
+ "name": "Líguru",
+ "english_name": "Ligurian"
+ },
+ "csb": {
+ "articles": 5246,
+ "name": "Kaszëbsczi",
+ "english_name": "Kashubian"
+ },
+ "tyv": {
+ "articles": 1722,
+ "name": "Тыва",
+ "english_name": "Tuvan"
+ },
+ "ny": {
+ "articles": 426,
+ "name": "Chichewa",
+ "english_name": "Chichewa"
+ },
+ "nap": {
+ "articles": 14555,
+ "name": "Nnapulitano",
+ "english_name": "Neapolitan"
+ },
+ "rmy": {
+ "articles": 658,
+ "name": "romani - रोमानी",
+ "english_name": "Romani"
+ },
+ "ig": {
+ "articles": 1361,
+ "name": "Igbo",
+ "english_name": "Igbo"
+ },
+ "pag": {
+ "articles": 2609,
+ "name": "Pangasinan",
+ "english_name": "Pangasinan"
+ },
+ "zu": {
+ "articles": 1024,
+ "name": "isiZulu",
+ "english_name": "Zulu"
+ },
+ "kw": {
+ "articles": 3821,
+ "name": "Kernewek/Karnuack",
+ "english_name": "Cornish"
+ },
+ "atj": {
+ "articles": 596,
+ "name": "Atikamekw",
+ "english_name": "Atikamekw"
+ },
+ "pam": {
+ "articles": 8555,
+ "name": "Kapampangan",
+ "english_name": "Kapampangan"
+ },
+ "nv": {
+ "articles": 6116,
+ "name": "Diné bizaad",
+ "english_name": "Navajo"
+ },
+ "sn": {
+ "articles": 3945,
+ "name": "chiShona",
+ "english_name": "Shona"
+ },
+ "kab": {
+ "articles": 2869,
+ "name": "Taqbaylit",
+ "english_name": "Kabyle"
+ },
+ "fr": {
+ "articles": 2040551,
+ "name": "Français",
+ "english_name": "French"
+ },
+ "mrj": {
+ "articles": 10268,
+ "name": "Кырык Мары (Kyryk Mary)",
+ "english_name": "Hill Mari"
+ },
+ "zh-yue": {
+ "articles": 68440,
+ "name": "粵語",
+ "english_name": "Cantonese"
+ },
+ "fy": {
+ "articles": 40760,
+ "name": "Frysk",
+ "english_name": "West Frisian"
+ },
+ "pnt": {
+ "articles": 458,
+ "name": "Ποντιακά",
+ "english_name": "Pontic"
+ },
+ "fa": {
+ "articles": 641921,
+ "name": "فارسی",
+ "english_name": "Persian"
+ },
+ "rw": {
+ "articles": 1823,
+ "name": "Ikinyarwanda",
+ "english_name": "Kinyarwanda"
+ },
+ "ff": {
+ "articles": 227,
+ "name": "Fulfulde",
+ "english_name": "Fula"
+ },
+ "mai": {
+ "articles": 12902,
+ "name": "मैथिली",
+ "english_name": "Maithili"
+ },
+ "fi": {
+ "articles": 444426,
+ "name": "Suomi",
+ "english_name": "Finnish"
+ },
+ "mzn": {
+ "articles": 12724,
+ "name": "مَزِروني",
+ "english_name": "Mazandarani"
+ },
+ "sa": {
+ "articles": 11350,
+ "name": "संस्कृतम्",
+ "english_name": "Sanskrit"
+ },
+ "zh-classical": {
+ "articles": 8200,
+ "name": "古文 / 文言文",
+ "english_name": "Classical Chinese"
+ },
+ "fo": {
+ "articles": 12792,
+ "name": "Føroyskt",
+ "english_name": "Faroese"
+ },
+ "bcl": {
+ "articles": 8161,
+ "name": "Bikol",
+ "english_name": "Central Bicolano"
+ },
+ "ka": {
+ "articles": 124386,
+ "name": "ქართული",
+ "english_name": "Georgian"
+ },
+ "nov": {
+ "articles": 1659,
+ "name": "Novial",
+ "english_name": "Novial"
+ },
+ "ckb": {
+ "articles": 22151,
+ "name": "Soranî / کوردی",
+ "english_name": "Sorani"
+ },
+ "kk": {
+ "articles": 222362,
+ "name": "Қазақша",
+ "english_name": "Kazakh"
+ },
+ "sr": {
+ "articles": 610270,
+ "name": "Српски / Srpski",
+ "english_name": "Serbian"
+ },
+ "sq": {
+ "articles": 74713,
+ "name": "Shqip",
+ "english_name": "Albanian"
+ },
+ "min": {
+ "articles": 222296,
+ "name": "Minangkabau",
+ "english_name": "Minangkabau"
+ },
+ "ko": {
+ "articles": 427108,
+ "name": "한국어",
+ "english_name": "Korean"
+ },
+ "sv": {
+ "articles": 3767201,
+ "name": "Svenska",
+ "english_name": "Swedish"
+ },
+ "su": {
+ "articles": 39667,
+ "name": "Basa Sunda",
+ "english_name": "Sundanese"
+ },
+ "kl": {
+ "articles": 1658,
+ "name": "Kalaallisut",
+ "english_name": "Greenlandic"
+ },
+ "sk": {
+ "articles": 227102,
+ "name": "Slovenčina",
+ "english_name": "Slovak"
+ },
+ "si": {
+ "articles": 14849,
+ "name": "සිංහල",
+ "english_name": "Sinhalese"
+ },
+ "sh": {
+ "articles": 445848,
+ "name": "Srpskohrvatski / Српскохрватски",
+ "english_name": "Serbo-Croatian"
+ },
+ "so": {
+ "articles": 5871,
+ "name": "Soomaali",
+ "english_name": "Somali"
+ },
+ "kv": {
+ "articles": 5301,
+ "name": "Коми",
+ "english_name": "Komi"
+ },
+ "ku": {
+ "articles": 23646,
+ "name": "Kurdî / كوردی",
+ "english_name": "Kurdish"
+ },
+ "sl": {
+ "articles": 162300,
+ "name": "Slovenščina",
+ "english_name": "Slovenian"
+ },
+ "sc": {
+ "articles": 5886,
+ "name": "Sardu",
+ "english_name": "Sardinian"
+ },
+ "ky": {
+ "articles": 79728,
+ "name": "Кыргызча",
+ "english_name": "Kirghiz"
+ },
+ "sg": {
+ "articles": 255,
+ "name": "Sängö",
+ "english_name": "Sango"
+ },
+ "sw": {
+ "articles": 45275,
+ "name": "Kiswahili",
+ "english_name": "Swahili"
+ },
+ "se": {
+ "articles": 7443,
+ "name": "Sámegiella",
+ "english_name": "Northern Sami"
+ },
+ "sd": {
+ "articles": 10440,
+ "name": "سنڌي، سندھی ، सिन्ध",
+ "english_name": "Sindhi"
+ }
+ },
+ "bing news": [
+ "ar",
+ "bg",
+ "ca",
+ "cs",
+ "da",
+ "de",
+ "el",
+ "en",
+ "es",
+ "et",
+ "fa",
+ "fi",
+ "fr",
+ "he",
+ "hr",
+ "hu",
+ "id",
+ "is",
+ "it",
+ "ja",
+ "ko",
+ "lt",
+ "lv",
+ "ms",
+ "nl",
+ "no",
+ "pl",
+ "pt-BR",
+ "pt-PT",
+ "ro",
+ "ru",
+ "sk",
+ "sl",
+ "sq",
+ "sr",
+ "sv",
+ "th",
+ "tr",
+ "uk",
+ "vi",
+ "zh-CHS",
+ "zh-CHT"
+ ],
+ "yahoo news": [
+ "ar",
+ "bg",
+ "cs",
+ "da",
+ "de",
+ "el",
+ "en",
+ "es",
+ "et",
+ "fi",
+ "fr",
+ "he",
+ "hr",
+ "hu",
+ "it",
+ "ja",
+ "ko",
+ "lt",
+ "lv",
+ "nl",
+ "no",
+ "pl",
+ "pt",
+ "ro",
+ "ru",
+ "sk",
+ "sl",
+ "sv",
+ "th",
+ "tr",
+ "zh-CHS",
+ "zh-CHT"
+ ],
+ "swisscows": [
+ "ar-SA",
+ "browser",
+ "da-DK",
+ "de-AT",
+ "de-CH",
+ "de-DE",
+ "en-AU",
+ "en-CA",
+ "en-GB",
+ "en-IE",
+ "en-IN",
+ "en-MY",
+ "en-NZ",
+ "en-PH",
+ "en-US",
+ "en-ZA",
+ "es-AR",
+ "es-CL",
+ "es-ES",
+ "es-MX",
+ "es-US",
+ "fi-FI",
+ "fr-BE",
+ "fr-CA",
+ "fr-CH",
+ "fr-FR",
+ "it-IT",
+ "ja-JP",
+ "ko-KR",
+ "lv-LV",
+ "nl-BE",
+ "nl-NL",
+ "no-NO",
+ "pl-PL",
+ "pt-BR",
+ "pt-PT",
+ "ru-RU",
+ "sv-SE",
+ "tr-TR",
+ "uk-UA",
+ "zh-CN",
+ "zh-HK",
+ "zh-TW"
+ ],
+ "qwant images": [
+ "bg-BG",
+ "br-FR",
+ "ca-AD",
+ "ca-ES",
+ "ca-FR",
+ "co-FR",
+ "cs-CZ",
+ "cy-GB",
+ "da-DK",
+ "de-AT",
+ "de-CH",
+ "de-DE",
+ "el-GR",
+ "en-AU",
+ "en-CA",
+ "en-GB",
+ "en-IE",
+ "en-IN",
+ "en-MY",
+ "en-NZ",
+ "en-PH",
+ "en-SG",
+ "en-US",
+ "es-AD",
+ "es-AR",
+ "es-CL",
+ "es-ES",
+ "es-MX",
+ "et-EE",
+ "eu-ES",
+ "eu-FR",
+ "fi-FI",
+ "fr-AD",
+ "fr-BE",
+ "fr-CA",
+ "fr-CH",
+ "fr-FR",
+ "gd-GB",
+ "he-IL",
+ "hu-HU",
+ "it-CH",
+ "it-IT",
+ "ja-JP",
+ "ko-KR",
+ "ms-MY",
+ "nl-BE",
+ "nl-NL",
+ "no-NO",
+ "pl-PL",
+ "pt-AD",
+ "pt-BR",
+ "pt-PT",
+ "ro-RO",
+ "ru-RU",
+ "sv-SE",
+ "th-TH",
+ "tr-TR"
+ ],
+ "wikidata": {
+ "gv": {
+ "articles": 4966,
+ "name": "Gaelg",
+ "english_name": "Manx"
+ },
+ "sco": {
+ "articles": 52700,
+ "name": "Scots",
+ "english_name": "Scots"
+ },
+ "scn": {
+ "articles": 26052,
+ "name": "Sicilianu",
+ "english_name": "Sicilian"
+ },
+ "wuu": {
+ "articles": 12505,
+ "name": "吴语",
+ "english_name": "Wu"
+ },
+ "tcy": {
+ "articles": 970,
+ "name": "ತುಳು",
+ "english_name": "Tulu"
+ },
+ "cdo": {
+ "articles": 13994,
+ "name": "Mìng-dĕ̤ng-ngṳ̄",
+ "english_name": "Min Dong"
+ },
+ "gu": {
+ "articles": 28113,
+ "name": "ગુજરાતી",
+ "english_name": "Gujarati"
+ },
+ "kbd": {
+ "articles": 1576,
+ "name": "Адыгэбзэ (Adighabze)",
+ "english_name": "Kabardian Circassian"
+ },
+ "got": {
+ "articles": 577,
+ "name": "𐌲𐌿𐍄𐌹𐍃𐌺",
+ "english_name": "Gothic"
+ },
+ "gd": {
+ "articles": 14736,
+ "name": "Gàidhlig",
+ "english_name": "Scottish Gaelic"
+ },
+ "jbo": {
+ "articles": 1229,
+ "name": "Lojban",
+ "english_name": "Lojban"
+ },
+ "ga": {
+ "articles": 48149,
+ "name": "Gaeilge",
+ "english_name": "Irish"
+ },
+ "gn": {
+ "articles": 3619,
+ "name": "Avañe'ẽ",
+ "english_name": "Guarani"
+ },
+ "kbp": {
+ "articles": 1450,
+ "name": "Kabɩyɛ",
+ "english_name": "Kabiye"
+ },
+ "gl": {
+ "articles": 151099,
+ "name": "Galego",
+ "english_name": "Galician"
+ },
+ "als": {
+ "articles": 25014,
+ "name": "Alemannisch",
+ "english_name": "Alemannic"
+ },
+ "lg": {
+ "articles": 1155,
+ "name": "Luganda",
+ "english_name": "Luganda"
+ },
+ "hak": {
+ "articles": 8843,
+ "name": "Hak-kâ-fa / 客家話",
+ "english_name": "Hakka"
+ },
+ "lb": {
+ "articles": 54478,
+ "name": "Lëtzebuergesch",
+ "english_name": "Luxembourgish"
+ },
+ "szl": {
+ "articles": 7513,
+ "name": "Ślůnski",
+ "english_name": "Silesian"
+ },
+ "vep": {
+ "articles": 5802,
+ "name": "Vepsän",
+ "english_name": "Vepsian"
+ },
+ "la": {
+ "articles": 129128,
+ "name": "Latina",
+ "english_name": "Latin"
+ },
+ "ln": {
+ "articles": 3046,
+ "name": "Lingala",
+ "english_name": "Lingala"
+ },
+ "frp": {
+ "articles": 3146,
+ "name": "Arpitan",
+ "english_name": "Franco-Provençal"
+ },
+ "tt": {
+ "articles": 80846,
+ "name": "Tatarça / Татарча",
+ "english_name": "Tatar"
+ },
+ "tr": {
+ "articles": 315699,
+ "name": "Türkçe",
+ "english_name": "Turkish"
+ },
+ "cbk-zam": {
+ "articles": 2996,
+ "name": "Chavacano de Zamboanga",
+ "english_name": "Zamboanga Chavacano"
+ },
+ "li": {
+ "articles": 12244,
+ "name": "Limburgs",
+ "english_name": "Limburgish"
+ },
+ "lv": {
+ "articles": 87649,
+ "name": "Latviešu",
+ "english_name": "Latvian"
+ },
+ "to": {
+ "articles": 1692,
+ "name": "faka Tonga",
+ "english_name": "Tongan"
+ },
+ "tl": {
+ "articles": 81327,
+ "name": "Tagalog",
+ "english_name": "Tagalog"
+ },
+ "jam": {
+ "articles": 1630,
+ "name": "Jumiekan Kryuol",
+ "english_name": "Jamaican Patois"
+ },
+ "vec": {
+ "articles": 11226,
+ "name": "Vèneto",
+ "english_name": "Venetian"
+ },
+ "th": {
+ "articles": 126603,
+ "name": "ไทย",
+ "english_name": "Thai"
+ },
+ "ti": {
+ "articles": 168,
+ "name": "ትግርኛ",
+ "english_name": "Tigrinya"
+ },
+ "tg": {
+ "articles": 95443,
+ "name": "Тоҷикӣ",
+ "english_name": "Tajik"
+ },
+ "te": {
+ "articles": 69303,
+ "name": "తెలుగు",
+ "english_name": "Telugu"
+ },
+ "ksh": {
+ "articles": 2840,
+ "name": "Ripoarisch",
+ "english_name": "Ripuarian"
+ },
+ "pcd": {
+ "articles": 3775,
+ "name": "Picard",
+ "english_name": "Picard"
+ },
+ "ta": {
+ "articles": 117845,
+ "name": "தமிழ்",
+ "english_name": "Tamil"
+ },
+ "yi": {
+ "articles": 14493,
+ "name": "ייִדיש",
+ "english_name": "Yiddish"
+ },
+ "lrc": {
+ "articles": 5368,
+ "name": "لۊری شومالی",
+ "english_name": "Northern Luri"
+ },
+ "xmf": {
+ "articles": 12602,
+ "name": "მარგალური (Margaluri)",
+ "english_name": "Mingrelian"
+ },
+ "ceb": {
+ "articles": 5380865,
+ "name": "Sinugboanong Binisaya",
+ "english_name": "Cebuano"
+ },
+ "yo": {
+ "articles": 31717,
+ "name": "Yorùbá",
+ "english_name": "Yoruba"
+ },
+ "de": {
+ "articles": 2220065,
+ "name": "Deutsch",
+ "english_name": "German"
+ },
+ "da": {
+ "articles": 239987,
+ "name": "Dansk",
+ "english_name": "Danish"
+ },
+ "za": {
+ "articles": 1868,
+ "name": "Cuengh",
+ "english_name": "Zhuang"
+ },
+ "pdc": {
+ "articles": 1845,
+ "name": "Deitsch",
+ "english_name": "Pennsylvania German"
+ },
+ "bxr": {
+ "articles": 2093,
+ "name": "Буряад",
+ "english_name": "Buryat"
+ },
+ "dz": {
+ "articles": 219,
+ "name": "ཇོང་ཁ",
+ "english_name": "Dzongkha"
+ },
+ "hif": {
+ "articles": 9761,
+ "name": "Fiji Hindi",
+ "english_name": "Fiji Hindi"
+ },
+ "rm": {
+ "articles": 3543,
+ "name": "Rumantsch",
+ "english_name": "Romansh"
+ },
+ "dv": {
+ "articles": 3022,
+ "name": "ދިވެހިބަސް",
+ "english_name": "Divehi"
+ },
+ "qu": {
+ "articles": 20755,
+ "name": "Runa Simi",
+ "english_name": "Quechua"
+ },
+ "vls": {
+ "articles": 6536,
+ "name": "West-Vlams",
+ "english_name": "West Flemish"
+ },
+ "bar": {
+ "articles": 26645,
+ "name": "Boarisch",
+ "english_name": "Bavarian"
+ },
+ "ang": {
+ "articles": 3039,
+ "name": "Englisc",
+ "english_name": "Anglo-Saxon"
+ },
+ "eml": {
+ "articles": 11187,
+ "name": "Emiliàn e rumagnòl",
+ "english_name": "Emilian-Romagnol"
+ },
+ "kn": {
+ "articles": 23709,
+ "name": "ಕನ್ನಡ",
+ "english_name": "Kannada"
+ },
+ "fiu-vro": {
+ "articles": 5448,
+ "name": "Võro",
+ "english_name": "Võro"
+ },
+ "bpy": {
+ "articles": 25080,
+ "name": "ইমার ঠার/বিষ্ণুপ্রিয়া মণিপুরী",
+ "english_name": "Bishnupriya Manipuri"
+ },
+ "crh": {
+ "articles": 5977,
+ "name": "Qırımtatarca",
+ "english_name": "Crimean Tatar"
+ },
+ "mhr": {
+ "articles": 10025,
+ "name": "Олык Марий (Olyk Marij)",
+ "english_name": "Meadow Mari"
+ },
+ "diq": {
+ "articles": 9036,
+ "name": "Zazaki",
+ "english_name": "Zazaki"
+ },
+ "el": {
+ "articles": 152453,
+ "name": "Ελληνικά",
+ "english_name": "Greek"
+ },
+ "eo": {
+ "articles": 249972,
+ "name": "Esperanto",
+ "english_name": "Esperanto"
+ },
+ "en": {
+ "articles": 5717839,
+ "name": "English",
+ "english_name": "English"
+ },
+ "zh": {
+ "articles": 1022608,
+ "name": "中文",
+ "english_name": "Chinese"
+ },
+ "pms": {
+ "articles": 64375,
+ "name": "Piemontèis",
+ "english_name": "Piedmontese"
+ },
+ "ee": {
+ "articles": 345,
+ "name": "Eʋegbe",
+ "english_name": "Ewe"
+ },
+ "tpi": {
+ "articles": 1481,
+ "name": "Tok Pisin",
+ "english_name": "Tok Pisin"
+ },
+ "arz": {
+ "articles": 19444,
+ "name": "مصرى (Maṣri)",
+ "english_name": "Egyptian Arabic"
+ },
+ "lfn": {
+ "articles": 2868,
+ "name": "Lingua franca nova",
+ "english_name": "Lingua Franca Nova"
+ },
+ "mdf": {
+ "articles": 1185,
+ "name": "Мокшень (Mokshanj Kälj)",
+ "english_name": "Moksha"
+ },
+ "kaa": {
+ "articles": 1908,
+ "name": "Qaraqalpaqsha",
+ "english_name": "Karakalpak"
+ },
+ "olo": {
+ "articles": 2700,
+ "name": "Karjalan",
+ "english_name": "Livvi-Karelian"
+ },
+ "arc": {
+ "articles": 1628,
+ "name": "ܐܪܡܝܐ",
+ "english_name": "Aramaic"
+ },
+ "cr": {
+ "articles": 104,
+ "name": "Nehiyaw",
+ "english_name": "Cree"
+ },
+ "eu": {
+ "articles": 304835,
+ "name": "Euskara",
+ "english_name": "Basque"
+ },
+ "et": {
+ "articles": 180987,
+ "name": "Eesti",
+ "english_name": "Estonian"
+ },
+ "tet": {
+ "articles": 1431,
+ "name": "Tetun",
+ "english_name": "Tetum"
+ },
+ "es": {
+ "articles": 1474724,
+ "name": "Español",
+ "english_name": "Spanish"
+ },
+ "ba": {
+ "articles": 43988,
+ "name": "Башҡорт",
+ "english_name": "Bashkir"
+ },
+ "gom": {
+ "articles": 3514,
+ "name": "गोंयची कोंकणी / Gõychi Konknni",
+ "english_name": "Goan Konkani"
+ },
+ "ru": {
+ "articles": 1497272,
+ "name": "Русский",
+ "english_name": "Russian"
+ },
+ "roa-tara": {
+ "articles": 9242,
+ "name": "Tarandíne",
+ "english_name": "Tarantino"
+ },
+ "ha": {
+ "articles": 1913,
+ "name": "هَوُسَ",
+ "english_name": "Hausa"
+ },
+ "ak": {
+ "articles": 561,
+ "name": "Akana",
+ "english_name": "Akan"
+ },
+ "lad": {
+ "articles": 3805,
+ "name": "Dzhudezmo",
+ "english_name": "Ladino"
+ },
+ "new": {
+ "articles": 72159,
+ "name": "नेपाल भाषा",
+ "english_name": "Newar"
+ },
+ "rn": {
+ "articles": 611,
+ "name": "Kirundi",
+ "english_name": "Kirundi"
+ },
+ "ro": {
+ "articles": 388471,
+ "name": "Română",
+ "english_name": "Romanian"
+ },
+ "dsb": {
+ "articles": 3189,
+ "name": "Dolnoserbski",
+ "english_name": "Lower Sorbian"
+ },
+ "bn": {
+ "articles": 60805,
+ "name": "বাংলা",
+ "english_name": "Bengali"
+ },
+ "gor": {
+ "articles": 1776,
+ "name": "Hulontalo",
+ "english_name": "Gorontalo"
+ },
+ "hsb": {
+ "articles": 13181,
+ "name": "Hornjoserbsce",
+ "english_name": "Upper Sorbian"
+ },
+ "be": {
+ "articles": 157264,
+ "name": "Беларуская",
+ "english_name": "Belarusian"
+ },
+ "bg": {
+ "articles": 245706,
+ "name": "Български",
+ "english_name": "Bulgarian"
+ },
+ "myv": {
+ "articles": 5353,
+ "name": "Эрзянь (Erzjanj Kelj)",
+ "english_name": "Erzya"
+ },
+ "uk": {
+ "articles": 816473,
+ "name": "Українська",
+ "english_name": "Ukrainian"
+ },
+ "wa": {
+ "articles": 14717,
+ "name": "Walon",
+ "english_name": "Walloon"
+ },
+ "ast": {
+ "articles": 86717,
+ "name": "Asturianu",
+ "english_name": "Asturian"
+ },
+ "wo": {
+ "articles": 1170,
+ "name": "Wolof",
+ "english_name": "Wolof"
+ },
+ "bm": {
+ "articles": 646,
+ "name": "Bamanankan",
+ "english_name": "Bambara"
+ },
+ "jv": {
+ "articles": 54946,
+ "name": "Basa Jawa",
+ "english_name": "Javanese"
+ },
+ "bo": {
+ "articles": 5822,
+ "name": "བོད་སྐད",
+ "english_name": "Tibetan"
+ },
+ "bh": {
+ "articles": 7671,
+ "name": "भोजपुरी",
+ "english_name": "Bihari"
+ },
+ "bi": {
+ "articles": 1176,
+ "name": "Bislama",
+ "english_name": "Bislama"
+ },
+ "rue": {
+ "articles": 6698,
+ "name": "Русиньскый",
+ "english_name": "Rusyn"
+ },
+ "map-bms": {
+ "articles": 13333,
+ "name": "Basa Banyumasan",
+ "english_name": "Banyumasan"
+ },
+ "tum": {
+ "articles": 572,
+ "name": "chiTumbuka",
+ "english_name": "Tumbuka"
+ },
+ "br": {
+ "articles": 65468,
+ "name": "Brezhoneg",
+ "english_name": "Breton"
+ },
+ "bs": {
+ "articles": 78388,
+ "name": "Bosanski",
+ "english_name": "Bosnian"
+ },
+ "lez": {
+ "articles": 3954,
+ "name": "Лезги чІал (Lezgi č’al)",
+ "english_name": "Lezgian"
+ },
+ "ja": {
+ "articles": 1121035,
+ "name": "日本語",
+ "english_name": "Japanese"
+ },
+ "om": {
+ "articles": 772,
+ "name": "Oromoo",
+ "english_name": "Oromo"
+ },
+ "glk": {
+ "articles": 5656,
+ "name": "گیلکی",
+ "english_name": "Gilaki"
+ },
+ "ace": {
+ "articles": 7451,
+ "name": "Bahsa Acèh",
+ "english_name": "Acehnese"
+ },
+ "ilo": {
+ "articles": 11422,
+ "name": "Ilokano",
+ "english_name": "Ilokano"
+ },
+ "roa-rup": {
+ "articles": 1212,
+ "name": "Armãneashce",
+ "english_name": "Aromanian"
+ },
+ "oc": {
+ "articles": 84869,
+ "name": "Occitan",
+ "english_name": "Occitan"
+ },
+ "ltg": {
+ "articles": 807,
+ "name": "Latgaļu",
+ "english_name": "Latgalian"
+ },
+ "be-tarask": {
+ "articles": 64277,
+ "name": "Беларуская (тарашкевіца)",
+ "english_name": "Belarusian (Taraškievica)"
+ },
+ "st": {
+ "articles": 543,
+ "name": "Sesotho",
+ "english_name": "Sesotho"
+ },
+ "lo": {
+ "articles": 2952,
+ "name": "ລາວ",
+ "english_name": "Lao"
+ },
+ "krc": {
+ "articles": 2027,
+ "name": "Къарачай-Малкъар (Qarachay-Malqar)",
+ "english_name": "Karachay-Balkar"
+ },
+ "nds": {
+ "articles": 31150,
+ "name": "Plattdüütsch",
+ "english_name": "Low Saxon"
+ },
+ "os": {
+ "articles": 11084,
+ "name": "Иронау",
+ "english_name": "Ossetian"
+ },
+ "or": {
+ "articles": 14248,
+ "name": "ଓଡ଼ିଆ",
+ "english_name": "Oriya"
+ },
+ "udm": {
+ "articles": 4508,
+ "name": "Удмурт кыл",
+ "english_name": "Udmurt"
+ },
+ "xh": {
+ "articles": 748,
+ "name": "isiXhosa",
+ "english_name": "Xhosa"
+ },
+ "ch": {
+ "articles": 472,
+ "name": "Chamoru",
+ "english_name": "Chamorro"
+ },
+ "co": {
+ "articles": 5567,
+ "name": "Corsu",
+ "english_name": "Corsican"
+ },
+ "nso": {
+ "articles": 8089,
+ "name": "Sepedi",
+ "english_name": "Northern Sotho"
+ },
+ "simple": {
+ "articles": 138362,
+ "name": "Simple English",
+ "english_name": "Simple English"
+ },
+ "bjn": {
+ "articles": 1853,
+ "name": "Bahasa Banjar",
+ "english_name": "Banjar"
+ },
+ "ca": {
+ "articles": 589895,
+ "name": "Català",
+ "english_name": "Catalan"
+ },
+ "lmo": {
+ "articles": 37698,
+ "name": "Lumbaart",
+ "english_name": "Lombard"
+ },
+ "ce": {
+ "articles": 208693,
+ "name": "Нохчийн",
+ "english_name": "Chechen"
+ },
+ "ts": {
+ "articles": 566,
+ "name": "Xitsonga",
+ "english_name": "Tsonga"
+ },
+ "cy": {
+ "articles": 101280,
+ "name": "Cymraeg",
+ "english_name": "Welsh"
+ },
+ "ab": {
+ "articles": 3427,
+ "name": "Аҧсуа",
+ "english_name": "Abkhazian"
+ },
+ "cs": {
+ "articles": 412770,
+ "name": "Čeština",
+ "english_name": "Czech"
+ },
+ "ty": {
+ "articles": 1195,
+ "name": "Reo Mā`ohi",
+ "english_name": "Tahitian"
+ },
+ "ady": {
+ "articles": 408,
+ "name": "Адыгэбзэ",
+ "english_name": "Adyghe"
+ },
+ "cv": {
+ "articles": 41433,
+ "name": "Чăваш",
+ "english_name": "Chuvash"
+ },
+ "cu": {
+ "articles": 660,
+ "name": "Словѣньскъ",
+ "english_name": "Old Church Slavonic"
+ },
+ "ve": {
+ "articles": 267,
+ "name": "Tshivenda",
+ "english_name": "Venda"
+ },
+ "koi": {
+ "articles": 3449,
+ "name": "Перем Коми (Perem Komi)",
+ "english_name": "Komi-Permyak"
+ },
+ "ps": {
+ "articles": 9106,
+ "name": "پښتو",
+ "english_name": "Pashto"
+ },
+ "fj": {
+ "articles": 424,
+ "name": "Na Vosa Vakaviti",
+ "english_name": "Fijian"
+ },
+ "srn": {
+ "articles": 1059,
+ "name": "Sranantongo",
+ "english_name": "Sranan"
+ },
+ "pt": {
+ "articles": 1005169,
+ "name": "Português",
+ "english_name": "Portuguese"
+ },
+ "sm": {
+ "articles": 799,
+ "name": "Gagana Samoa",
+ "english_name": "Samoan"
+ },
+ "ext": {
+ "articles": 3013,
+ "name": "Estremeñu",
+ "english_name": "Extremaduran"
+ },
+ "lt": {
+ "articles": 189496,
+ "name": "Lietuvių",
+ "english_name": "Lithuanian"
+ },
+ "zh-min-nan": {
+ "articles": 227444,
+ "name": "Bân-lâm-gú",
+ "english_name": "Min Nan"
+ },
+ "frr": {
+ "articles": 7705,
+ "name": "Nordfriisk",
+ "english_name": "North Frisian"
+ },
+ "chr": {
+ "articles": 854,
+ "name": "ᏣᎳᎩ",
+ "english_name": "Cherokee"
+ },
+ "pa": {
+ "articles": 30223,
+ "name": "ਪੰਜਾਬੀ",
+ "english_name": "Punjabi"
+ },
+ "xal": {
+ "articles": 2036,
+ "name": "Хальмг",
+ "english_name": "Kalmyk"
+ },
+ "chy": {
+ "articles": 609,
+ "name": "Tsetsêhestâhese",
+ "english_name": "Cheyenne"
+ },
+ "pi": {
+ "articles": 2530,
+ "name": "पाऴि",
+ "english_name": "Pali"
+ },
+ "war": {
+ "articles": 1263242,
+ "name": "Winaray",
+ "english_name": "Waray-Waray"
+ },
+ "pl": {
+ "articles": 1300041,
+ "name": "Polski",
+ "english_name": "Polish"
+ },
+ "tk": {
+ "articles": 5491,
+ "name": "Türkmen",
+ "english_name": "Turkmen"
+ },
+ "hy": {
+ "articles": 245745,
+ "name": "Հայերեն",
+ "english_name": "Armenian"
+ },
+ "an": {
+ "articles": 33544,
+ "name": "Aragonés",
+ "english_name": "Aragonese"
+ },
+ "nrm": {
+ "articles": 4003,
+ "name": "Nouormand/Normaund",
+ "english_name": "Norman"
+ },
+ "hr": {
+ "articles": 198726,
+ "name": "Hrvatski",
+ "english_name": "Croatian"
+ },
+ "iu": {
+ "articles": 402,
+ "name": "ᐃᓄᒃᑎᑐᑦ",
+ "english_name": "Inuktitut"
+ },
+ "pfl": {
+ "articles": 2259,
+ "name": "Pälzisch",
+ "english_name": "Palatinate German"
+ },
+ "ht": {
+ "articles": 53067,
+ "name": "Krèyol ayisyen",
+ "english_name": "Haitian"
+ },
+ "hu": {
+ "articles": 436930,
+ "name": "Magyar",
+ "english_name": "Hungarian"
+ },
+ "gan": {
+ "articles": 6405,
+ "name": "贛語",
+ "english_name": "Gan"
+ },
+ "bat-smg": {
+ "articles": 16307,
+ "name": "Žemaitėška",
+ "english_name": "Samogitian"
+ },
+ "hi": {
+ "articles": 126671,
+ "name": "हिन्दी",
+ "english_name": "Hindi"
+ },
+ "tw": {
+ "articles": 650,
+ "name": "Twi",
+ "english_name": "Twi"
+ },
+ "gag": {
+ "articles": 2760,
+ "name": "Gagauz",
+ "english_name": "Gagauz"
+ },
+ "kg": {
+ "articles": 1181,
+ "name": "KiKongo",
+ "english_name": "Kongo"
+ },
+ "pnb": {
+ "articles": 46645,
+ "name": "شاہ مکھی پنجابی (Shāhmukhī Pañjābī)",
+ "english_name": "Western Punjabi"
+ },
+ "bug": {
+ "articles": 14117,
+ "name": "Basa Ugi",
+ "english_name": "Buginese"
+ },
+ "he": {
+ "articles": 230405,
+ "name": "עברית",
+ "english_name": "Hebrew"
+ },
+ "mg": {
+ "articles": 85263,
+ "name": "Malagasy",
+ "english_name": "Malagasy"
+ },
+ "fur": {
+ "articles": 3284,
+ "name": "Furlan",
+ "english_name": "Friulian"
+ },
+ "uz": {
+ "articles": 129308,
+ "name": "O‘zbek",
+ "english_name": "Uzbek"
+ },
+ "ml": {
+ "articles": 58717,
+ "name": "മലയാളം",
+ "english_name": "Malayalam"
+ },
+ "azb": {
+ "articles": 101690,
+ "name": "تۆرکجه",
+ "english_name": "South Azerbaijani"
+ },
+ "mn": {
+ "articles": 18326,
+ "name": "Монгол",
+ "english_name": "Mongolian"
+ },
+ "mi": {
+ "articles": 7145,
+ "name": "Māori",
+ "english_name": "Maori"
+ },
+ "ik": {
+ "articles": 260,
+ "name": "Iñupiak",
+ "english_name": "Inupiak"
+ },
+ "mk": {
+ "articles": 96187,
+ "name": "Македонски",
+ "english_name": "Macedonian"
+ },
+ "ur": {
+ "articles": 140514,
+ "name": "اردو",
+ "english_name": "Urdu"
+ },
+ "zea": {
+ "articles": 4417,
+ "name": "Zeêuws",
+ "english_name": "Zeelandic"
+ },
+ "mt": {
+ "articles": 3330,
+ "name": "Malti",
+ "english_name": "Maltese"
+ },
+ "dty": {
+ "articles": 2935,
+ "name": "डोटेली",
+ "english_name": "Doteli"
+ },
+ "stq": {
+ "articles": 3966,
+ "name": "Seeltersk",
+ "english_name": "Saterland Frisian"
+ },
+ "ms": {
+ "articles": 319749,
+ "name": "Bahasa Melayu",
+ "english_name": "Malay"
+ },
+ "mr": {
+ "articles": 51938,
+ "name": "मराठी",
+ "english_name": "Marathi"
+ },
+ "inh": {
+ "articles": 781,
+ "name": "Гӏалгӏай",
+ "english_name": "Ingush"
+ },
+ "ug": {
+ "articles": 4092,
+ "name": "ئۇيغۇر تىلى",
+ "english_name": "Uyghur"
+ },
+ "mwl": {
+ "articles": 3653,
+ "name": "Mirandés",
+ "english_name": "Mirandese"
+ },
+ "my": {
+ "articles": 39501,
+ "name": "မြန်မာဘာသာ",
+ "english_name": "Burmese"
+ },
+ "ki": {
+ "articles": 1357,
+ "name": "Gĩkũyũ",
+ "english_name": "Kikuyu"
+ },
+ "pih": {
+ "articles": 672,
+ "name": "Norfuk",
+ "english_name": "Norfolk"
+ },
+ "sah": {
+ "articles": 11663,
+ "name": "Саха тыла (Saxa Tyla)",
+ "english_name": "Sakha"
+ },
+ "ss": {
+ "articles": 448,
+ "name": "SiSwati",
+ "english_name": "Swati"
+ },
+ "af": {
+ "articles": 58995,
+ "name": "Afrikaans",
+ "english_name": "Afrikaans"
+ },
+ "tn": {
+ "articles": 641,
+ "name": "Setswana",
+ "english_name": "Tswana"
+ },
+ "vi": {
+ "articles": 1188863,
+ "name": "Tiếng Việt",
+ "english_name": "Vietnamese"
+ },
+ "is": {
+ "articles": 45775,
+ "name": "Íslenska",
+ "english_name": "Icelandic"
+ },
+ "am": {
+ "articles": 14359,
+ "name": "አማርኛ",
+ "english_name": "Amharic"
+ },
+ "it": {
+ "articles": 1461380,
+ "name": "Italiano",
+ "english_name": "Italian"
+ },
+ "vo": {
+ "articles": 121490,
+ "name": "Volapük",
+ "english_name": "Volapük"
+ },
+ "ay": {
+ "articles": 4383,
+ "name": "Aymar",
+ "english_name": "Aymara"
+ },
+ "as": {
+ "articles": 4991,
+ "name": "অসমীয়া",
+ "english_name": "Assamese"
+ },
+ "ar": {
+ "articles": 609711,
+ "name": "العربية",
+ "english_name": "Arabic"
+ },
+ "lbe": {
+ "articles": 1216,
+ "name": "Лакку",
+ "english_name": "Lak"
+ },
+ "km": {
+ "articles": 6712,
+ "name": "ភាសាខ្មែរ",
+ "english_name": "Khmer"
+ },
+ "io": {
+ "articles": 27921,
+ "name": "Ido",
+ "english_name": "Ido"
+ },
+ "av": {
+ "articles": 2306,
+ "name": "Авар",
+ "english_name": "Avar"
+ },
+ "ia": {
+ "articles": 20764,
+ "name": "Interlingua",
+ "english_name": "Interlingua"
+ },
+ "haw": {
+ "articles": 2960,
+ "name": "Hawai`i",
+ "english_name": "Hawaiian"
+ },
+ "az": {
+ "articles": 137984,
+ "name": "Azərbaycanca",
+ "english_name": "Azerbaijani"
+ },
+ "ie": {
+ "articles": 4046,
+ "name": "Interlingue",
+ "english_name": "Interlingue"
+ },
+ "id": {
+ "articles": 439613,
+ "name": "Bahasa Indonesia",
+ "english_name": "Indonesian"
+ },
+ "nds-nl": {
+ "articles": 8656,
+ "name": "Nedersaksisch",
+ "english_name": "Dutch Low Saxon"
+ },
+ "sat": {
+ "articles": 378,
+ "name": "Santali",
+ "english_name": "ᱥᱟᱱᱛᱟᱲᱤ"
+ },
+ "pap": {
+ "articles": 1933,
+ "name": "Papiamentu",
+ "english_name": "Papiamentu"
+ },
+ "ks": {
+ "articles": 323,
+ "name": "कश्मीरी / كشميري",
+ "english_name": "Kashmiri"
+ },
+ "nl": {
+ "articles": 1942104,
+ "name": "Nederlands",
+ "english_name": "Dutch"
+ },
+ "nn": {
+ "articles": 139512,
+ "name": "Nynorsk",
+ "english_name": "Norwegian (Nynorsk)"
+ },
+ "no": {
+ "articles": 494547,
+ "name": "Norsk (Bokmål)",
+ "english_name": "Norwegian (Bokmål)"
+ },
+ "na": {
+ "articles": 1305,
+ "name": "dorerin Naoero",
+ "english_name": "Nauruan"
+ },
+ "nah": {
+ "articles": 6921,
+ "name": "Nāhuatl",
+ "english_name": "Nahuatl"
+ },
+ "ne": {
+ "articles": 30697,
+ "name": "नेपाली",
+ "english_name": "Nepali"
+ },
+ "lij": {
+ "articles": 3425,
+ "name": "Líguru",
+ "english_name": "Ligurian"
+ },
+ "csb": {
+ "articles": 5246,
+ "name": "Kaszëbsczi",
+ "english_name": "Kashubian"
+ },
+ "tyv": {
+ "articles": 1722,
+ "name": "Тыва",
+ "english_name": "Tuvan"
+ },
+ "ny": {
+ "articles": 426,
+ "name": "Chichewa",
+ "english_name": "Chichewa"
+ },
+ "nap": {
+ "articles": 14555,
+ "name": "Nnapulitano",
+ "english_name": "Neapolitan"
+ },
+ "rmy": {
+ "articles": 658,
+ "name": "romani - रोमानी",
+ "english_name": "Romani"
+ },
+ "ig": {
+ "articles": 1361,
+ "name": "Igbo",
+ "english_name": "Igbo"
+ },
+ "pag": {
+ "articles": 2609,
+ "name": "Pangasinan",
+ "english_name": "Pangasinan"
+ },
+ "zu": {
+ "articles": 1024,
+ "name": "isiZulu",
+ "english_name": "Zulu"
+ },
+ "kw": {
+ "articles": 3821,
+ "name": "Kernewek/Karnuack",
+ "english_name": "Cornish"
+ },
+ "atj": {
+ "articles": 596,
+ "name": "Atikamekw",
+ "english_name": "Atikamekw"
+ },
+ "pam": {
+ "articles": 8555,
+ "name": "Kapampangan",
+ "english_name": "Kapampangan"
+ },
+ "nv": {
+ "articles": 6116,
+ "name": "Diné bizaad",
+ "english_name": "Navajo"
+ },
+ "sn": {
+ "articles": 3945,
+ "name": "chiShona",
+ "english_name": "Shona"
+ },
+ "kab": {
+ "articles": 2869,
+ "name": "Taqbaylit",
+ "english_name": "Kabyle"
+ },
+ "fr": {
+ "articles": 2040551,
+ "name": "Français",
+ "english_name": "French"
+ },
+ "mrj": {
+ "articles": 10268,
+ "name": "Кырык Мары (Kyryk Mary)",
+ "english_name": "Hill Mari"
+ },
+ "zh-yue": {
+ "articles": 68440,
+ "name": "粵語",
+ "english_name": "Cantonese"
+ },
+ "fy": {
+ "articles": 40760,
+ "name": "Frysk",
+ "english_name": "West Frisian"
+ },
+ "pnt": {
+ "articles": 458,
+ "name": "Ποντιακά",
+ "english_name": "Pontic"
+ },
+ "fa": {
+ "articles": 641921,
+ "name": "فارسی",
+ "english_name": "Persian"
+ },
+ "rw": {
+ "articles": 1823,
+ "name": "Ikinyarwanda",
+ "english_name": "Kinyarwanda"
+ },
+ "ff": {
+ "articles": 227,
+ "name": "Fulfulde",
+ "english_name": "Fula"
+ },
+ "mai": {
+ "articles": 12902,
+ "name": "मैथिली",
+ "english_name": "Maithili"
+ },
+ "fi": {
+ "articles": 444426,
+ "name": "Suomi",
+ "english_name": "Finnish"
+ },
+ "mzn": {
+ "articles": 12724,
+ "name": "مَزِروني",
+ "english_name": "Mazandarani"
+ },
+ "sa": {
+ "articles": 11350,
+ "name": "संस्कृतम्",
+ "english_name": "Sanskrit"
+ },
+ "zh-classical": {
+ "articles": 8200,
+ "name": "古文 / 文言文",
+ "english_name": "Classical Chinese"
+ },
+ "fo": {
+ "articles": 12792,
+ "name": "Føroyskt",
+ "english_name": "Faroese"
+ },
+ "bcl": {
+ "articles": 8161,
+ "name": "Bikol",
+ "english_name": "Central Bicolano"
+ },
+ "ka": {
+ "articles": 124386,
+ "name": "ქართული",
+ "english_name": "Georgian"
+ },
+ "nov": {
+ "articles": 1659,
+ "name": "Novial",
+ "english_name": "Novial"
+ },
+ "ckb": {
+ "articles": 22151,
+ "name": "Soranî / کوردی",
+ "english_name": "Sorani"
+ },
+ "kk": {
+ "articles": 222362,
+ "name": "Қазақша",
+ "english_name": "Kazakh"
+ },
+ "sr": {
+ "articles": 610270,
+ "name": "Српски / Srpski",
+ "english_name": "Serbian"
+ },
+ "sq": {
+ "articles": 74713,
+ "name": "Shqip",
+ "english_name": "Albanian"
+ },
+ "min": {
+ "articles": 222296,
+ "name": "Minangkabau",
+ "english_name": "Minangkabau"
+ },
+ "ko": {
+ "articles": 427108,
+ "name": "한국어",
+ "english_name": "Korean"
+ },
+ "sv": {
+ "articles": 3767201,
+ "name": "Svenska",
+ "english_name": "Swedish"
+ },
+ "su": {
+ "articles": 39667,
+ "name": "Basa Sunda",
+ "english_name": "Sundanese"
+ },
+ "kl": {
+ "articles": 1658,
+ "name": "Kalaallisut",
+ "english_name": "Greenlandic"
+ },
+ "sk": {
+ "articles": 227102,
+ "name": "Slovenčina",
+ "english_name": "Slovak"
+ },
+ "si": {
+ "articles": 14849,
+ "name": "සිංහල",
+ "english_name": "Sinhalese"
+ },
+ "sh": {
+ "articles": 445848,
+ "name": "Srpskohrvatski / Српскохрватски",
+ "english_name": "Serbo-Croatian"
+ },
+ "so": {
+ "articles": 5871,
+ "name": "Soomaali",
+ "english_name": "Somali"
+ },
+ "kv": {
+ "articles": 5301,
+ "name": "Коми",
+ "english_name": "Komi"
+ },
+ "ku": {
+ "articles": 23646,
+ "name": "Kurdî / كوردی",
+ "english_name": "Kurdish"
+ },
+ "sl": {
+ "articles": 162300,
+ "name": "Slovenščina",
+ "english_name": "Slovenian"
+ },
+ "sc": {
+ "articles": 5886,
+ "name": "Sardu",
+ "english_name": "Sardinian"
+ },
+ "ky": {
+ "articles": 79728,
+ "name": "Кыргызча",
+ "english_name": "Kirghiz"
+ },
+ "sg": {
+ "articles": 255,
+ "name": "Sängö",
+ "english_name": "Sango"
+ },
+ "sw": {
+ "articles": 45275,
+ "name": "Kiswahili",
+ "english_name": "Swahili"
+ },
+ "se": {
+ "articles": 7443,
+ "name": "Sámegiella",
+ "english_name": "Northern Sami"
+ },
+ "sd": {
+ "articles": 10440,
+ "name": "سنڌي، سندھی ، सिन्ध",
+ "english_name": "Sindhi"
+ }
+ },
+ "bing videos": [
+ "ar-SA",
+ "de-AT",
+ "de-CH",
+ "de-DE",
+ "en-AU",
+ "en-CA",
+ "en-GB",
+ "en-ID",
+ "en-IN",
+ "en-MY",
+ "en-US",
+ "en-ZA",
+ "es-AR",
+ "es-ES",
+ "es-MX",
+ "es-US",
+ "fr-BE",
+ "fr-CA",
+ "fr-CH",
+ "fr-FR",
+ "it-IT",
+ "ja-JP",
+ "ko-KR",
+ "nl-BE",
+ "nl-NL",
+ "no-NO",
+ "pl-PL",
+ "pt-BR",
+ "ru-RU",
+ "sv-SE",
+ "tr-TR",
+ "zh-CN",
+ "zh-HK",
+ "zh-TW"
+ ],
+ "ddg definitions": [
+ "ar-XA",
+ "bg-BG",
+ "ca-CT",
+ "ca-ES",
+ "cs-CZ",
+ "da-DK",
+ "de-AT",
+ "de-CH",
+ "de-DE",
+ "el-GR",
+ "en-AU",
+ "en-CA",
+ "en-ID",
+ "en-IE",
+ "en-IN",
+ "en-MY",
+ "en-NZ",
+ "en-PH",
+ "en-SG",
+ "en-UK",
+ "en-US",
+ "en-ZA",
+ "es-AR",
+ "es-CL",
+ "es-CO",
+ "es-ES",
+ "es-MX",
+ "es-PE",
+ "es-US",
+ "et-EE",
+ "fi-FI",
+ "fr-BE",
+ "fr-CA",
+ "fr-CH",
+ "fr-FR",
+ "he-IL",
+ "hr-HR",
+ "hu-HU",
+ "id-ID",
+ "it-CH",
+ "it-IT",
+ "jp-JP",
+ "kr-KR",
+ "lt-LT",
+ "lv-LV",
+ "ms-MY",
+ "nl-BE",
+ "nl-NL",
+ "no-NO",
+ "pl-PL",
+ "pt-BR",
+ "pt-PT",
+ "ro-RO",
+ "ru-RU",
+ "sk-SK",
+ "sl-SL",
+ "sv-SE",
+ "th-TH",
+ "tl-PH",
+ "tr-TR",
+ "tzh-HK",
+ "tzh-TW",
+ "vi-VN",
+ "wt-WT",
+ "zh-CN"
+ ],
+ "yahoo": [
+ "ar",
+ "bg",
+ "cs",
+ "da",
+ "de",
+ "el",
+ "en",
+ "es",
+ "et",
+ "fi",
+ "fr",
+ "he",
+ "hr",
+ "hu",
+ "it",
+ "ja",
+ "ko",
+ "lt",
+ "lv",
+ "nl",
+ "no",
+ "pl",
+ "pt",
+ "ro",
+ "ru",
+ "sk",
+ "sl",
+ "sv",
+ "th",
+ "tr",
+ "zh-CHS",
+ "zh-CHT"
+ ],
+ "bing images": [
+ "ar-SA",
+ "de-AT",
+ "de-CH",
+ "de-DE",
+ "en-AU",
+ "en-CA",
+ "en-GB",
+ "en-ID",
+ "en-IN",
+ "en-MY",
+ "en-US",
+ "en-ZA",
+ "es-AR",
+ "es-ES",
+ "es-MX",
+ "es-US",
+ "fr-BE",
+ "fr-CA",
+ "fr-CH",
+ "fr-FR",
+ "it-IT",
+ "ja-JP",
+ "ko-KR",
+ "nl-BE",
+ "nl-NL",
+ "no-NO",
+ "pl-PL",
+ "pt-BR",
+ "ru-RU",
+ "sv-SE",
+ "tr-TR",
+ "zh-CN",
+ "zh-HK",
+ "zh-TW"
+ ],
+ "qwant social": [
+ "bg-BG",
+ "br-FR",
+ "ca-AD",
+ "ca-ES",
+ "ca-FR",
+ "co-FR",
+ "cs-CZ",
+ "cy-GB",
+ "da-DK",
+ "de-AT",
+ "de-CH",
+ "de-DE",
+ "el-GR",
+ "en-AU",
+ "en-CA",
+ "en-GB",
+ "en-IE",
+ "en-IN",
+ "en-MY",
+ "en-NZ",
+ "en-PH",
+ "en-SG",
+ "en-US",
+ "es-AD",
+ "es-AR",
+ "es-CL",
+ "es-ES",
+ "es-MX",
+ "et-EE",
+ "eu-ES",
+ "eu-FR",
+ "fi-FI",
+ "fr-AD",
+ "fr-BE",
+ "fr-CA",
+ "fr-CH",
+ "fr-FR",
+ "gd-GB",
+ "he-IL",
+ "hu-HU",
+ "it-CH",
+ "it-IT",
+ "ja-JP",
+ "ko-KR",
+ "ms-MY",
+ "nl-BE",
+ "nl-NL",
+ "no-NO",
+ "pl-PL",
+ "pt-AD",
+ "pt-BR",
+ "pt-PT",
+ "ro-RO",
+ "ru-RU",
+ "sv-SE",
+ "th-TH",
+ "tr-TR"
+ ],
+ "bing": [
+ "ar",
+ "bg",
+ "ca",
+ "cs",
+ "da",
+ "de",
+ "el",
+ "en",
+ "es",
+ "et",
+ "fa",
+ "fi",
+ "fr",
+ "he",
+ "hr",
+ "hu",
+ "id",
+ "is",
+ "it",
+ "ja",
+ "ko",
+ "lt",
+ "lv",
+ "ms",
+ "nl",
+ "no",
+ "pl",
+ "pt-BR",
+ "pt-PT",
+ "ro",
+ "ru",
+ "sk",
+ "sl",
+ "sq",
+ "sr",
+ "sv",
+ "th",
+ "tr",
+ "uk",
+ "vi",
+ "zh-CHS",
+ "zh-CHT"
+ ],
+ "qwant news": [
+ "bg-BG",
+ "br-FR",
+ "ca-AD",
+ "ca-ES",
+ "ca-FR",
+ "co-FR",
+ "cs-CZ",
+ "cy-GB",
+ "da-DK",
+ "de-AT",
+ "de-CH",
+ "de-DE",
+ "el-GR",
+ "en-AU",
+ "en-CA",
+ "en-GB",
+ "en-IE",
+ "en-IN",
+ "en-MY",
+ "en-NZ",
+ "en-PH",
+ "en-SG",
+ "en-US",
+ "es-AD",
+ "es-AR",
+ "es-CL",
+ "es-ES",
+ "es-MX",
+ "et-EE",
+ "eu-ES",
+ "eu-FR",
+ "fi-FI",
+ "fr-AD",
+ "fr-BE",
+ "fr-CA",
+ "fr-CH",
+ "fr-FR",
+ "gd-GB",
+ "he-IL",
+ "hu-HU",
+ "it-CH",
+ "it-IT",
+ "ja-JP",
+ "ko-KR",
+ "ms-MY",
+ "nl-BE",
+ "nl-NL",
+ "no-NO",
+ "pl-PL",
+ "pt-AD",
+ "pt-BR",
+ "pt-PT",
+ "ro-RO",
+ "ru-RU",
+ "sv-SE",
+ "th-TH",
+ "tr-TR"
+ ],
+ "gigablast": []
+} \ No newline at end of file
diff --git a/searx/data/useragents.json b/searx/data/useragents.json
new file mode 100644
index 0000000..850bc41
--- /dev/null
+++ b/searx/data/useragents.json
@@ -0,0 +1,14 @@
+{
+ "ua": "Mozilla/5.0 ({os}; rv:{version}) Gecko/20100101 Firefox/{version}",
+ "versions": [
+ "61.0.1",
+ "61.0",
+ "60.0.2",
+ "60.0.1",
+ "60.0"
+ ],
+ "os": [
+ "Windows NT 10; WOW64",
+ "X11; Linux x86_64"
+ ]
+} \ No newline at end of file
diff --git a/searx/engines/1337x.py b/searx/engines/1337x.py
new file mode 100644
index 0000000..0de04bd
--- /dev/null
+++ b/searx/engines/1337x.py
@@ -0,0 +1,39 @@
+from lxml import html
+from searx.engines.xpath import extract_text
+from searx.utils import get_torrent_size
+from searx.url_utils import quote, urljoin
+
+url = 'https://1337x.to/'
+search_url = url + 'search/{search_term}/{pageno}/'
+categories = ['videos']
+paging = True
+
+
+def request(query, params):
+ params['url'] = search_url.format(search_term=quote(query), pageno=params['pageno'])
+
+ return params
+
+
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ for result in dom.xpath('//table[contains(@class, "table-list")]/tbody//tr'):
+ href = urljoin(url, result.xpath('./td[contains(@class, "name")]/a[2]/@href')[0])
+ title = extract_text(result.xpath('./td[contains(@class, "name")]/a[2]'))
+ seed = extract_text(result.xpath('.//td[contains(@class, "seeds")]'))
+ leech = extract_text(result.xpath('.//td[contains(@class, "leeches")]'))
+ filesize_info = extract_text(result.xpath('.//td[contains(@class, "size")]/text()'))
+ filesize, filesize_multiplier = filesize_info.split()
+ filesize = get_torrent_size(filesize, filesize_multiplier)
+
+ results.append({'url': href,
+ 'title': title,
+ 'seed': seed,
+ 'leech': leech,
+ 'filesize': filesize,
+ 'template': 'torrent.html'})
+
+ return results
diff --git a/searx/engines/__init__.py b/searx/engines/__init__.py
new file mode 100644
index 0000000..c2f9f3d
--- /dev/null
+++ b/searx/engines/__init__.py
@@ -0,0 +1,260 @@
+
+'''
+searx is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+searx is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with searx. If not, see < http://www.gnu.org/licenses/ >.
+
+(C) 2013- by Adam Tauber, <asciimoo@gmail.com>
+'''
+
+import sys
+import threading
+from os.path import realpath, dirname
+from io import open
+from babel.localedata import locale_identifiers
+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, match_language
+
+
+logger = logger.getChild('engines')
+
+engine_dir = dirname(realpath(__file__))
+
+engines = {}
+
+categories = {'general': []}
+
+languages = loads(open(engine_dir + '/../data/engines_languages.json', 'r', encoding='utf-8').read())
+babel_langs = [lang_parts[0] + '-' + lang_parts[-1] if len(lang_parts) > 1 else lang_parts[0]
+ for lang_parts in (lang_code.split('_') for lang_code in locale_identifiers())]
+
+engine_shortcuts = {}
+engine_default_args = {'paging': False,
+ 'categories': ['general'],
+ 'language_support': True,
+ 'supported_languages': [],
+ 'safesearch': False,
+ 'timeout': settings['outgoing']['request_timeout'],
+ 'shortcut': '-',
+ 'disabled': False,
+ 'suspend_end_time': 0,
+ 'continuous_errors': 0,
+ 'time_range_support': False}
+
+
+def load_engine(engine_data):
+
+ if '_' in engine_data['name']:
+ logger.error('Engine name conains underscore: "{}"'.format(engine_data['name']))
+ sys.exit(1)
+
+ engine_module = engine_data['engine']
+
+ try:
+ engine = load_module(engine_module + '.py', engine_dir)
+ except:
+ logger.exception('Cannot load engine "{}"'.format(engine_module))
+ return None
+
+ for param_name in engine_data:
+ if param_name == 'engine':
+ continue
+ if param_name == 'categories':
+ if engine_data['categories'] == 'none':
+ engine.categories = []
+ else:
+ engine.categories = list(map(str.strip, engine_data['categories'].split(',')))
+ continue
+ setattr(engine, param_name, engine_data[param_name])
+
+ for arg_name, arg_value in engine_default_args.items():
+ if not hasattr(engine, arg_name):
+ setattr(engine, arg_name, arg_value)
+
+ # checking required variables
+ for engine_attr in dir(engine):
+ if engine_attr.startswith('_'):
+ continue
+ if engine_attr == 'inactive' and getattr(engine, engine_attr) is True:
+ return None
+ if getattr(engine, engine_attr) is None:
+ logger.error('Missing engine config attribute: "{0}.{1}"'
+ .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']])
+
+ # find custom aliases for non standard language codes
+ if hasattr(engine, 'supported_languages'):
+ if hasattr(engine, 'language_aliases'):
+ language_aliases = getattr(engine, 'language_aliases')
+ else:
+ language_aliases = {}
+
+ for engine_lang in getattr(engine, 'supported_languages'):
+ iso_lang = match_language(engine_lang, babel_langs, fallback=None)
+ if iso_lang and iso_lang != engine_lang and not engine_lang.startswith(iso_lang) and \
+ iso_lang not in getattr(engine, 'supported_languages'):
+ language_aliases[iso_lang] = engine_lang
+
+ if language_aliases:
+ setattr(engine, 'language_aliases', language_aliases)
+
+ # 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,
+ 'page_load_time': 0,
+ 'page_load_count': 0,
+ 'engine_time': 0,
+ 'engine_time_count': 0,
+ 'score_count': 0,
+ 'errors': 0
+ }
+
+ for category_name in engine.categories:
+ categories.setdefault(category_name, []).append(engine)
+
+ if engine.shortcut in engine_shortcuts:
+ logger.error('Engine config error: ambigious shortcut: {0}'.format(engine.shortcut))
+ sys.exit(1)
+
+ engine_shortcuts[engine.shortcut] = engine.name
+
+ return engine
+
+
+def to_percentage(stats, maxvalue):
+ for engine_stat in stats:
+ if maxvalue:
+ engine_stat['percentage'] = int(engine_stat['avg'] / maxvalue * 100)
+ else:
+ engine_stat['percentage'] = 0
+ return stats
+
+
+def get_engines_stats():
+ # TODO refactor
+ pageloads = []
+ engine_times = []
+ results = []
+ scores = []
+ errors = []
+ scores_per_result = []
+
+ max_pageload = max_engine_times = max_results = max_score = max_errors = max_score_per_result = 0 # noqa
+ for engine in engines.values():
+ if engine.stats['search_count'] == 0:
+ continue
+ results_num = \
+ engine.stats['result_count'] / float(engine.stats['search_count'])
+
+ if engine.stats['page_load_count'] != 0:
+ load_times = engine.stats['page_load_time'] / float(engine.stats['page_load_count']) # noqa
+ else:
+ load_times = 0
+
+ if engine.stats['engine_time_count'] != 0:
+ this_engine_time = engine.stats['engine_time'] / float(engine.stats['engine_time_count']) # noqa
+ else:
+ this_engine_time = 0
+
+ if results_num:
+ score = engine.stats['score_count'] / float(engine.stats['search_count']) # noqa
+ score_per_result = score / results_num
+ else:
+ score = score_per_result = 0.0
+
+ max_pageload = max(load_times, max_pageload)
+ max_engine_times = max(this_engine_time, max_engine_times)
+ max_results = max(results_num, max_results)
+ max_score = max(score, max_score)
+ max_score_per_result = max(score_per_result, max_score_per_result)
+ max_errors = max(max_errors, engine.stats['errors'])
+
+ pageloads.append({'avg': load_times, 'name': engine.name})
+ engine_times.append({'avg': this_engine_time, 'name': engine.name})
+ results.append({'avg': results_num, 'name': engine.name})
+ scores.append({'avg': score, 'name': engine.name})
+ errors.append({'avg': engine.stats['errors'], 'name': engine.name})
+ scores_per_result.append({
+ 'avg': score_per_result,
+ 'name': engine.name
+ })
+
+ pageloads = to_percentage(pageloads, max_pageload)
+ engine_times = to_percentage(engine_times, max_engine_times)
+ results = to_percentage(results, max_results)
+ scores = to_percentage(scores, max_score)
+ scores_per_result = to_percentage(scores_per_result, max_score_per_result)
+ erros = to_percentage(errors, max_errors)
+
+ return [
+ (
+ gettext('Engine time (sec)'),
+ sorted(engine_times, key=itemgetter('avg'))
+ ),
+ (
+ gettext('Page loads (sec)'),
+ sorted(pageloads, key=itemgetter('avg'))
+ ),
+ (
+ gettext('Number of results'),
+ sorted(results, key=itemgetter('avg'), reverse=True)
+ ),
+ (
+ gettext('Scores'),
+ sorted(scores, key=itemgetter('avg'), reverse=True)
+ ),
+ (
+ gettext('Scores per result'),
+ sorted(scores_per_result, key=itemgetter('avg'), reverse=True)
+ ),
+ (
+ gettext('Errors'),
+ sorted(errors, key=itemgetter('avg'), reverse=True)
+ ),
+ ]
+
+
+def load_engines(engine_list):
+ global engines
+ engines.clear()
+ for engine_data in engine_list:
+ engine = load_engine(engine_data)
+ if engine is not None:
+ engines[engine.name] = engine
+ return engines
+
+
+def initialize_engines(engine_list):
+ load_engines(engine_list)
+ for engine_name, engine in engines.items():
+ if hasattr(engine, 'init'):
+ init_fn = getattr(engine, 'init')
+
+ def engine_init():
+ init_fn()
+ logger.debug('%s engine initialized', engine_name)
+ logger.debug('Starting background initialization of %s engine', engine_name)
+ threading.Thread(target=engine_init).start()
diff --git a/searx/engines/acgsou.py b/searx/engines/acgsou.py
new file mode 100644
index 0000000..cca28f0
--- /dev/null
+++ b/searx/engines/acgsou.py
@@ -0,0 +1,75 @@
+"""
+ Acgsou (Japanese Animation/Music/Comics Bittorrent tracker)
+
+ @website https://www.acgsou.com/
+ @provide-api no
+ @using-api no
+ @results HTML
+ @stable no (HTML can change)
+ @parse url, title, content, seed, leech, torrentfile
+"""
+
+from lxml import html
+from searx.engines.xpath import extract_text
+from searx.url_utils import urlencode
+from searx.utils import get_torrent_size, int_or_zero
+
+# engine dependent config
+categories = ['files', 'images', 'videos', 'music']
+paging = True
+
+# search-url
+base_url = 'http://www.acgsou.com/'
+search_url = base_url + 'search.php?{query}&page={offset}'
+# xpath queries
+xpath_results = '//table[contains(@class, "list_style table_fixed")]//tr[not(th)]'
+xpath_category = './/td[2]/a[1]'
+xpath_title = './/td[3]/a[last()]'
+xpath_torrent_links = './/td[3]/a'
+xpath_filesize = './/td[4]/text()'
+
+
+def request(query, params):
+ query = urlencode({'keyword': query})
+ params['url'] = search_url.format(query=query, offset=params['pageno'])
+ return params
+
+
+def response(resp):
+ results = []
+ dom = html.fromstring(resp.text)
+ for result in dom.xpath(xpath_results):
+ # defaults
+ filesize = 0
+ magnet_link = "magnet:?xt=urn:btih:{}&tr=http://tracker.acgsou.com:2710/announce"
+ torrent_link = ""
+
+ try:
+ category = extract_text(result.xpath(xpath_category)[0])
+ except:
+ pass
+
+ page_a = result.xpath(xpath_title)[0]
+ title = extract_text(page_a)
+ href = base_url + page_a.attrib.get('href')
+
+ magnet_link = magnet_link.format(page_a.attrib.get('href')[5:-5])
+
+ try:
+ filesize_info = result.xpath(xpath_filesize)[0]
+ filesize = filesize_info[:-2]
+ filesize_multiplier = filesize_info[-2:]
+ filesize = get_torrent_size(filesize, filesize_multiplier)
+ except:
+ pass
+ # I didn't add download/seed/leech count since as I figured out they are generated randomly everytime
+ content = u'Category: "{category}".'
+ content = content.format(category=category)
+
+ results.append({'url': href,
+ 'title': title,
+ 'content': content,
+ 'filesize': filesize,
+ 'magnetlink': magnet_link,
+ 'template': 'torrent.html'})
+ return results
diff --git a/searx/engines/archlinux.py b/searx/engines/archlinux.py
new file mode 100644
index 0000000..fc08112
--- /dev/null
+++ b/searx/engines/archlinux.py
@@ -0,0 +1,142 @@
+# -*- coding: utf-8 -*-
+
+"""
+ Arch Linux Wiki
+
+ @website https://wiki.archlinux.org
+ @provide-api no (Mediawiki provides API, but Arch Wiki blocks access to it
+ @using-api no
+ @results HTML
+ @stable no (HTML can change)
+ @parse url, title
+"""
+
+from lxml import html
+from searx.engines.xpath import extract_text
+from searx.url_utils import urlencode, urljoin
+
+# engine dependent config
+categories = ['it']
+language_support = True
+paging = True
+base_url = 'https://wiki.archlinux.org'
+
+# xpath queries
+xpath_results = '//ul[@class="mw-search-results"]/li'
+xpath_link = './/div[@class="mw-search-result-heading"]/a'
+
+
+# cut 'en' from 'en-US', 'de' from 'de-CH', and so on
+def locale_to_lang_code(locale):
+ if locale.find('-') >= 0:
+ locale = locale.split('-')[0]
+ return locale
+
+
+# wikis for some languages were moved off from the main site, we need to make
+# requests to correct URLs to be able to get results in those languages
+lang_urls = {
+ 'en': {
+ 'base': 'https://wiki.archlinux.org',
+ 'search': '/index.php?title=Special:Search&offset={offset}&{query}'
+ },
+ 'de': {
+ 'base': 'https://wiki.archlinux.de',
+ 'search': '/index.php?title=Spezial:Suche&offset={offset}&{query}'
+ },
+ 'fr': {
+ 'base': 'https://wiki.archlinux.fr',
+ 'search': '/index.php?title=Spécial:Recherche&offset={offset}&{query}'
+ },
+ 'ja': {
+ 'base': 'https://wiki.archlinuxjp.org',
+ 'search': '/index.php?title=特別:検索&offset={offset}&{query}'
+ },
+ 'ro': {
+ 'base': 'http://wiki.archlinux.ro',
+ 'search': '/index.php?title=Special:Căutare&offset={offset}&{query}'
+ },
+ 'tr': {
+ 'base': 'http://archtr.org/wiki',
+ 'search': '/index.php?title=Özel:Ara&offset={offset}&{query}'
+ }
+}
+
+
+# get base & search URLs for selected language
+def get_lang_urls(language):
+ if language in lang_urls:
+ return lang_urls[language]
+ return lang_urls['en']
+
+
+# Language names to build search requests for
+# those languages which are hosted on the main site.
+main_langs = {
+ 'ar': 'العربية',
+ 'bg': 'Български',
+ 'cs': 'Česky',
+ 'da': 'Dansk',
+ 'el': 'Ελληνικά',
+ 'es': 'Español',
+ 'he': 'עברית',
+ 'hr': 'Hrvatski',
+ 'hu': 'Magyar',
+ 'it': 'Italiano',
+ 'ko': '한국어',
+ 'lt': 'Lietuviškai',
+ 'nl': 'Nederlands',
+ 'pl': 'Polski',
+ 'pt': 'Português',
+ 'ru': 'Русский',
+ 'sl': 'Slovenský',
+ 'th': 'ไทย',
+ 'uk': 'Українська',
+ 'zh': '简体中文'
+}
+supported_languages = dict(lang_urls, **main_langs)
+
+
+# do search-request
+def request(query, params):
+ # translate the locale (e.g. 'en-US') to language code ('en')
+ language = locale_to_lang_code(params['language'])
+
+ # if our language is hosted on the main site, we need to add its name
+ # to the query in order to narrow the results to that language
+ if language in main_langs:
+ query += b' (' + main_langs[language] + b')'
+
+ # prepare the request parameters
+ query = urlencode({'search': query})
+ offset = (params['pageno'] - 1) * 20
+
+ # get request URLs for our language of choice
+ urls = get_lang_urls(language)
+ search_url = urls['base'] + urls['search']
+
+ params['url'] = search_url.format(query=query, offset=offset)
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ # get the base URL for the language in which request was made
+ language = locale_to_lang_code(resp.search_params['language'])
+ base_url = get_lang_urls(language)['base']
+
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ # parse results
+ for result in dom.xpath(xpath_results):
+ link = result.xpath(xpath_link)[0]
+ href = urljoin(base_url, link.attrib.get('href'))
+ title = extract_text(link)
+
+ results.append({'url': href,
+ 'title': title})
+
+ return results
diff --git a/searx/engines/arxiv.py b/searx/engines/arxiv.py
new file mode 100644
index 0000000..5ef84f0
--- /dev/null
+++ b/searx/engines/arxiv.py
@@ -0,0 +1,76 @@
+#!/usr/bin/env python
+
+"""
+ ArXiV (Scientific preprints)
+ @website https://arxiv.org
+ @provide-api yes (export.arxiv.org/api/query)
+ @using-api yes
+ @results XML-RSS
+ @stable yes
+ @parse url, title, publishedDate, content
+ More info on api: https://arxiv.org/help/api/user-manual
+"""
+
+from lxml import html
+from datetime import datetime
+from searx.url_utils import urlencode
+
+
+categories = ['science']
+
+base_url = 'http://export.arxiv.org/api/query?search_query=all:'\
+ + '{query}&start={offset}&max_results={number_of_results}'
+
+# engine dependent config
+number_of_results = 10
+
+
+def request(query, params):
+ # basic search
+ offset = (params['pageno'] - 1) * number_of_results
+
+ string_args = dict(query=query,
+ offset=offset,
+ number_of_results=number_of_results)
+
+ params['url'] = base_url.format(**string_args)
+
+ return params
+
+
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.content)
+ search_results = dom.xpath('//entry')
+
+ for entry in search_results:
+ title = entry.xpath('.//title')[0].text
+
+ url = entry.xpath('.//id')[0].text
+
+ content_string = '{doi_content}{abstract_content}'
+
+ abstract = entry.xpath('.//summary')[0].text
+
+ # If a doi is available, add it to the snipppet
+ try:
+ doi_content = entry.xpath('.//link[@title="doi"]')[0].text
+ content = content_string.format(doi_content=doi_content, abstract_content=abstract)
+ except:
+ content = content_string.format(doi_content="", abstract_content=abstract)
+
+ if len(content) > 300:
+ content = content[0:300] + "..."
+ # TODO: center snippet on query term
+
+ publishedDate = datetime.strptime(entry.xpath('.//published')[0].text, '%Y-%m-%dT%H:%M:%SZ')
+
+ res_dict = {'url': url,
+ 'title': title,
+ 'publishedDate': publishedDate,
+ 'content': content}
+
+ results.append(res_dict)
+
+ return results
diff --git a/searx/engines/asksteem.py b/searx/engines/asksteem.py
new file mode 100644
index 0000000..6738780
--- /dev/null
+++ b/searx/engines/asksteem.py
@@ -0,0 +1,44 @@
+"""
+ Asksteem (general)
+
+ @website https://asksteem.com/
+ @provide-api yes
+
+ @using-api yes
+ @results JSON (https://github.com/Hoxly/asksteem-docs/wiki)
+ @stable yes
+ @parse url, title, content
+"""
+
+from json import loads
+from searx.url_utils import urlencode
+
+# engine dependent config
+categories = ['general']
+paging = True
+language_support = False
+disabled = True
+
+# search-url
+search_url = 'https://api.asksteem.com/search?{params}'
+result_url = 'https://steemit.com/@{author}/{title}'
+
+
+# do search-request
+def request(query, params):
+ url = search_url.format(params=urlencode({'q': query, 'pg': params['pageno']}))
+ params['url'] = url
+ return params
+
+
+# get response from search-request
+def response(resp):
+ json = loads(resp.text)
+
+ results = []
+
+ for result in json.get('results', []):
+ results.append({'url': result_url.format(author=result['author'], title=result['permlink']),
+ 'title': result['title'],
+ 'content': result['summary']})
+ return results
diff --git a/searx/engines/base.py b/searx/engines/base.py
new file mode 100755
index 0000000..f1b1cf6
--- /dev/null
+++ b/searx/engines/base.py
@@ -0,0 +1,121 @@
+#!/usr/bin/env python
+
+"""
+ BASE (Scholar publications)
+
+ @website https://base-search.net
+ @provide-api yes with authorization (https://api.base-search.net/)
+
+ @using-api yes
+ @results XML
+ @stable ?
+ @parse url, title, publishedDate, content
+ More info on api: http://base-search.net/about/download/base_interface.pdf
+"""
+
+from lxml import etree
+from datetime import datetime
+import re
+from searx.url_utils import urlencode
+from searx.utils import searx_useragent
+
+
+categories = ['science']
+
+base_url = 'https://api.base-search.net/cgi-bin/BaseHttpSearchInterface.fcgi'\
+ + '?func=PerformSearch&{query}&boost=oa&hits={hits}&offset={offset}'
+
+# engine dependent config
+paging = True
+number_of_results = 10
+
+# shortcuts for advanced search
+shorcut_dict = {
+ # user-friendly keywords
+ 'format:': 'dcformat:',
+ 'author:': 'dccreator:',
+ 'collection:': 'dccollection:',
+ 'hdate:': 'dchdate:',
+ 'contributor:': 'dccontributor:',
+ 'coverage:': 'dccoverage:',
+ 'date:': 'dcdate:',
+ 'abstract:': 'dcdescription:',
+ 'urls:': 'dcidentifier:',
+ 'language:': 'dclanguage:',
+ 'publisher:': 'dcpublisher:',
+ 'relation:': 'dcrelation:',
+ 'rights:': 'dcrights:',
+ 'source:': 'dcsource:',
+ 'subject:': 'dcsubject:',
+ 'title:': 'dctitle:',
+ 'type:': 'dcdctype:'
+}
+
+
+def request(query, params):
+ # replace shortcuts with API advanced search keywords
+ for key in shorcut_dict.keys():
+ query = re.sub(key, shorcut_dict[key], str(query))
+
+ # basic search
+ offset = (params['pageno'] - 1) * number_of_results
+
+ string_args = dict(query=urlencode({'query': query}),
+ offset=offset,
+ hits=number_of_results)
+
+ params['url'] = base_url.format(**string_args)
+
+ params['headers']['User-Agent'] = searx_useragent()
+ return params
+
+
+def response(resp):
+ results = []
+
+ search_results = etree.XML(resp.content)
+
+ for entry in search_results.xpath('./result/doc'):
+ content = "No description available"
+
+ date = datetime.now() # needed in case no dcdate is available for an item
+ for item in entry:
+ if item.attrib["name"] == "dchdate":
+ harvestDate = item.text
+
+ elif item.attrib["name"] == "dcdate":
+ date = item.text
+
+ elif item.attrib["name"] == "dctitle":
+ title = item.text
+
+ elif item.attrib["name"] == "dclink":
+ url = item.text
+
+ elif item.attrib["name"] == "dcdescription":
+ content = item.text[:300]
+ if len(item.text) > 300:
+ content += "..."
+
+# dates returned by the BASE API are not several formats
+ publishedDate = None
+ for date_format in ['%Y-%m-%dT%H:%M:%SZ', '%Y-%m-%d', '%Y-%m', '%Y']:
+ try:
+ publishedDate = datetime.strptime(date, date_format)
+ break
+ except:
+ pass
+
+ if publishedDate is not None:
+ res_dict = {'url': url,
+ 'title': title,
+ 'publishedDate': publishedDate,
+ 'content': content}
+ else:
+ res_dict = {'url': url,
+ 'title': title,
+ 'content': content}
+
+ results.append(res_dict)
+
+ return results
diff --git a/searx/engines/bing.py b/searx/engines/bing.py
new file mode 100644
index 0000000..2da4061
--- /dev/null
+++ b/searx/engines/bing.py
@@ -0,0 +1,103 @@
+"""
+ Bing (Web)
+
+ @website https://www.bing.com
+ @provide-api yes (http://datamarket.azure.com/dataset/bing/search),
+ max. 5000 query/month
+
+ @using-api no (because of query limit)
+ @results HTML (using search portal)
+ @stable no (HTML can change)
+ @parse url, title, content
+
+ @todo publishedDate
+"""
+
+from lxml import html
+from searx.engines.xpath import extract_text
+from searx.url_utils import urlencode
+from searx.utils import match_language, gen_useragent
+
+# engine dependent config
+categories = ['general']
+paging = True
+language_support = True
+supported_languages_url = 'https://www.bing.com/account/general'
+language_aliases = {'zh-CN': 'zh-CHS', 'zh-TW': 'zh-CHT', 'zh-HK': 'zh-CHT'}
+
+# search-url
+base_url = 'https://www.bing.com/'
+search_string = 'search?{query}&first={offset}'
+
+
+# do search-request
+def request(query, params):
+ offset = (params['pageno'] - 1) * 10 + 1
+
+ lang = match_language(params['language'], supported_languages, language_aliases)
+
+ query = u'language:{} {}'.format(lang.split('-')[0].upper(), query.decode('utf-8')).encode('utf-8')
+
+ search_path = search_string.format(
+ query=urlencode({'q': query}),
+ offset=offset)
+
+ params['url'] = base_url + search_path
+
+ params['headers']['User-Agent'] = gen_useragent('Windows NT 6.3; WOW64')
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ try:
+ results.append({'number_of_results': int(dom.xpath('//span[@class="sb_count"]/text()')[0]
+ .split()[0].replace(',', ''))})
+ except:
+ pass
+
+ # parse results
+ for result in dom.xpath('//div[@class="sa_cc"]'):
+ link = result.xpath('.//h3/a')[0]
+ url = link.attrib.get('href')
+ title = extract_text(link)
+ content = extract_text(result.xpath('.//p'))
+
+ # append result
+ results.append({'url': url,
+ 'title': title,
+ 'content': content})
+
+ # parse results again if nothing is found yet
+ for result in dom.xpath('//li[@class="b_algo"]'):
+ link = result.xpath('.//h2/a')[0]
+ url = link.attrib.get('href')
+ title = extract_text(link)
+ content = extract_text(result.xpath('.//p'))
+
+ # append result
+ results.append({'url': url,
+ 'title': title,
+ 'content': content})
+
+ # return results
+ return results
+
+
+# get supported languages from their site
+def _fetch_supported_languages(resp):
+ supported_languages = []
+ dom = html.fromstring(resp.text)
+ options = dom.xpath('//div[@id="limit-languages"]//input')
+ for option in options:
+ code = option.xpath('./@id')[0].replace('_', '-')
+ if code == 'nb':
+ code = 'no'
+ supported_languages.append(code)
+
+ return supported_languages
diff --git a/searx/engines/bing_images.py b/searx/engines/bing_images.py
new file mode 100644
index 0000000..876011f
--- /dev/null
+++ b/searx/engines/bing_images.py
@@ -0,0 +1,125 @@
+"""
+ Bing (Images)
+
+ @website https://www.bing.com/images
+ @provide-api yes (http://datamarket.azure.com/dataset/bing/search),
+ max. 5000 query/month
+
+ @using-api no (because of query limit)
+ @results HTML (using search portal)
+ @stable no (HTML can change)
+ @parse url, title, img_src
+
+ @todo currently there are up to 35 images receive per page,
+ because bing does not parse count=10.
+ limited response to 10 images
+"""
+
+from lxml import html
+from json import loads
+import re
+from searx.url_utils import urlencode
+from searx.utils import match_language
+
+# engine dependent config
+categories = ['images']
+paging = True
+safesearch = True
+time_range_support = True
+language_support = True
+supported_languages_url = 'https://www.bing.com/account/general'
+
+# search-url
+base_url = 'https://www.bing.com/'
+search_string = 'images/search?{query}&count=10&first={offset}'
+time_range_string = '&qft=+filterui:age-lt{interval}'
+time_range_dict = {'day': '1440',
+ 'week': '10080',
+ 'month': '43200',
+ 'year': '525600'}
+
+# safesearch definitions
+safesearch_types = {2: 'STRICT',
+ 1: 'DEMOTE',
+ 0: 'OFF'}
+
+
+_quote_keys_regex = re.compile('({|,)([a-z][a-z0-9]*):(")', re.I | re.U)
+
+
+# do search-request
+def request(query, params):
+ offset = (params['pageno'] - 1) * 10 + 1
+
+ search_path = search_string.format(
+ query=urlencode({'q': query}),
+ offset=offset)
+
+ language = match_language(params['language'], supported_languages).lower()
+
+ params['cookies']['SRCHHPGUSR'] = \
+ 'ADLT=' + safesearch_types.get(params['safesearch'], 'DEMOTE')
+
+ params['cookies']['_EDGE_S'] = 'mkt=' + language +\
+ '&ui=' + language + '&F=1'
+
+ params['url'] = base_url + search_path
+ if params['time_range'] in time_range_dict:
+ params['url'] += time_range_string.format(interval=time_range_dict[params['time_range']])
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ # parse results
+ for result in dom.xpath('//div[@id="mmComponent_images_1"]/ul/li/div/div[@class="imgpt"]'):
+ link = result.xpath('./a')[0]
+
+ # TODO find actual title
+ title = link.xpath('.//img/@alt')[0]
+
+ # parse json-data (it is required to add a space, to make it parsable)
+ json_data = loads(_quote_keys_regex.sub(r'\1"\2": \3', link.attrib.get('m')))
+
+ url = json_data.get('purl')
+ img_src = json_data.get('murl')
+ thumbnail = json_data.get('turl')
+
+ # append result
+ results.append({'template': 'images.html',
+ 'url': url,
+ 'title': title,
+ 'content': '',
+ 'thumbnail_src': thumbnail,
+ 'img_src': img_src})
+
+ # TODO stop parsing if 10 images are found
+ # if len(results) >= 10:
+ # break
+
+ # return results
+ return results
+
+
+# get supported languages from their site
+def _fetch_supported_languages(resp):
+ supported_languages = []
+ dom = html.fromstring(resp.text)
+
+ regions_xpath = '//div[@id="region-section-content"]' \
+ + '//ul[@class="b_vList"]/li/a/@href'
+
+ regions = dom.xpath(regions_xpath)
+ for region in regions:
+ code = re.search('setmkt=[^\&]+', region).group()[7:]
+ if code == 'nb-NO':
+ code = 'no-NO'
+
+ supported_languages.append(code)
+
+ return supported_languages
diff --git a/searx/engines/bing_news.py b/searx/engines/bing_news.py
new file mode 100644
index 0000000..39048a1
--- /dev/null
+++ b/searx/engines/bing_news.py
@@ -0,0 +1,124 @@
+"""
+ Bing (News)
+
+ @website https://www.bing.com/news
+ @provide-api yes (http://datamarket.azure.com/dataset/bing/search),
+ max. 5000 query/month
+
+ @using-api no (because of query limit)
+ @results RSS (using search portal)
+ @stable yes (except perhaps for the images)
+ @parse url, title, content, publishedDate, thumbnail
+"""
+
+from datetime import datetime
+from dateutil import parser
+from lxml import etree
+from searx.utils import list_get, match_language
+from searx.engines.bing import _fetch_supported_languages, supported_languages_url, language_aliases
+from searx.url_utils import urlencode, urlparse, parse_qsl
+
+# engine dependent config
+categories = ['news']
+paging = True
+language_support = True
+time_range_support = True
+
+# search-url
+base_url = 'https://www.bing.com/'
+search_string = 'news/search?{query}&first={offset}&format=RSS'
+search_string_with_time = 'news/search?{query}&first={offset}&qft=interval%3d"{interval}"&format=RSS'
+time_range_dict = {'day': '7',
+ 'week': '8',
+ 'month': '9'}
+
+
+# remove click
+def url_cleanup(url_string):
+ parsed_url = urlparse(url_string)
+ if parsed_url.netloc == 'www.bing.com' and parsed_url.path == '/news/apiclick.aspx':
+ query = dict(parse_qsl(parsed_url.query))
+ return query.get('url', None)
+ return url_string
+
+
+# replace the http://*bing4.com/th?id=... by https://www.bing.com/th?id=...
+def image_url_cleanup(url_string):
+ parsed_url = urlparse(url_string)
+ if parsed_url.netloc.endswith('bing4.com') and parsed_url.path == '/th':
+ query = dict(parse_qsl(parsed_url.query))
+ return "https://www.bing.com/th?id=" + query.get('id')
+ return url_string
+
+
+def _get_url(query, language, offset, time_range):
+ if time_range in time_range_dict:
+ search_path = search_string_with_time.format(
+ query=urlencode({'q': query, 'setmkt': language}),
+ offset=offset,
+ interval=time_range_dict[time_range])
+ else:
+ search_path = search_string.format(
+ query=urlencode({'q': query, 'setmkt': language}),
+ offset=offset)
+ return base_url + search_path
+
+
+# do search-request
+def request(query, params):
+ if params['time_range'] and params['time_range'] not in time_range_dict:
+ return params
+
+ offset = (params['pageno'] - 1) * 10 + 1
+
+ language = match_language(params['language'], supported_languages, language_aliases)
+
+ params['url'] = _get_url(query, language, offset, params['time_range'])
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ rss = etree.fromstring(resp.content)
+
+ ns = rss.nsmap
+
+ # parse results
+ for item in rss.xpath('./channel/item'):
+ # url / title / content
+ url = url_cleanup(item.xpath('./link/text()')[0])
+ title = list_get(item.xpath('./title/text()'), 0, url)
+ content = list_get(item.xpath('./description/text()'), 0, '')
+
+ # publishedDate
+ publishedDate = list_get(item.xpath('./pubDate/text()'), 0)
+ try:
+ publishedDate = parser.parse(publishedDate, dayfirst=False)
+ except TypeError:
+ publishedDate = datetime.now()
+ except ValueError:
+ publishedDate = datetime.now()
+
+ # thumbnail
+ thumbnail = list_get(item.xpath('./News:Image/text()', namespaces=ns), 0)
+ if thumbnail is not None:
+ thumbnail = image_url_cleanup(thumbnail)
+
+ # append result
+ if thumbnail is not None:
+ results.append({'url': url,
+ 'title': title,
+ 'publishedDate': publishedDate,
+ 'content': content,
+ 'img_src': thumbnail})
+ else:
+ results.append({'url': url,
+ 'title': title,
+ 'publishedDate': publishedDate,
+ 'content': content})
+
+ # return results
+ return results
diff --git a/searx/engines/bing_videos.py b/searx/engines/bing_videos.py
new file mode 100644
index 0000000..7002ac8
--- /dev/null
+++ b/searx/engines/bing_videos.py
@@ -0,0 +1,88 @@
+"""
+ Bing (Videos)
+
+ @website https://www.bing.com/videos
+ @provide-api yes (http://datamarket.azure.com/dataset/bing/search)
+
+ @using-api no
+ @results HTML
+ @stable no
+ @parse url, title, content, thumbnail
+"""
+
+from json import loads
+from lxml import html
+from searx.engines.bing_images import _fetch_supported_languages, supported_languages_url
+from searx.engines.xpath import extract_text
+from searx.url_utils import urlencode
+from searx.utils import match_language
+
+
+categories = ['videos']
+paging = True
+safesearch = True
+time_range_support = True
+number_of_results = 10
+language_support = True
+
+search_url = 'https://www.bing.com/videos/asyncv2?{query}&async=content&'\
+ 'first={offset}&count={number_of_results}&CW=1366&CH=25&FORM=R5VR5'
+time_range_string = '&qft=+filterui:videoage-lt{interval}'
+time_range_dict = {'day': '1440',
+ 'week': '10080',
+ 'month': '43200',
+ 'year': '525600'}
+
+# safesearch definitions
+safesearch_types = {2: 'STRICT',
+ 1: 'DEMOTE',
+ 0: 'OFF'}
+
+
+# do search-request
+def request(query, params):
+ offset = (params['pageno'] - 1) * 10 + 1
+
+ # safesearch cookie
+ params['cookies']['SRCHHPGUSR'] = \
+ 'ADLT=' + safesearch_types.get(params['safesearch'], 'DEMOTE')
+
+ # language cookie
+ language = match_language(params['language'], supported_languages).lower()
+ params['cookies']['_EDGE_S'] = 'mkt=' + language + '&F=1'
+
+ # query and paging
+ params['url'] = search_url.format(query=urlencode({'q': query}),
+ offset=offset,
+ number_of_results=number_of_results)
+
+ # time range
+ if params['time_range'] in time_range_dict:
+ params['url'] += time_range_string.format(interval=time_range_dict[params['time_range']])
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ for result in dom.xpath('//div[@class="dg_u"]'):
+ url = result.xpath('./div[@class="mc_vtvc"]/a/@href')[0]
+ url = 'https://bing.com' + url
+ title = extract_text(result.xpath('./div/a/div/div[@class="mc_vtvc_title"]/@title'))
+ content = extract_text(result.xpath('./div/a/div/div/div/div/text()'))
+ thumbnail = result.xpath('./div/a/div/div/img/@src')[0]
+
+ results.append({'url': url,
+ 'title': title,
+ 'content': content,
+ 'thumbnail': thumbnail,
+ 'template': 'videos.html'})
+
+ if len(results) >= number_of_results:
+ break
+
+ return results
diff --git a/searx/engines/btdigg.py b/searx/engines/btdigg.py
new file mode 100644
index 0000000..4043867
--- /dev/null
+++ b/searx/engines/btdigg.py
@@ -0,0 +1,92 @@
+"""
+ BTDigg (Videos, Music, Files)
+
+ @website https://btdigg.org
+ @provide-api yes (on demand)
+
+ @using-api no
+ @results HTML (using search portal)
+ @stable no (HTML can change)
+ @parse url, title, content, seed, leech, magnetlink
+"""
+
+from lxml import html
+from operator import itemgetter
+from searx.engines.xpath import extract_text
+from searx.url_utils import quote, urljoin
+from searx.utils import get_torrent_size
+
+# engine dependent config
+categories = ['videos', 'music', 'files']
+paging = True
+
+# search-url
+url = 'https://btdigg.org'
+search_url = url + '/search?q={search_term}&p={pageno}'
+
+
+# do search-request
+def request(query, params):
+ params['url'] = search_url.format(search_term=quote(query),
+ pageno=params['pageno'] - 1)
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ search_res = dom.xpath('//div[@id="search_res"]/table/tr')
+
+ # return empty array if nothing is found
+ if not search_res:
+ return []
+
+ # parse results
+ for result in search_res:
+ link = result.xpath('.//td[@class="torrent_name"]//a')[0]
+ href = urljoin(url, link.attrib.get('href'))
+ title = extract_text(link)
+ content = extract_text(result.xpath('.//pre[@class="snippet"]')[0])
+ content = "<br />".join(content.split("\n"))
+
+ filesize = result.xpath('.//span[@class="attr_val"]/text()')[0].split()[0]
+ filesize_multiplier = result.xpath('.//span[@class="attr_val"]/text()')[0].split()[1]
+ files = result.xpath('.//span[@class="attr_val"]/text()')[1]
+ seed = result.xpath('.//span[@class="attr_val"]/text()')[2]
+
+ # convert seed to int if possible
+ if seed.isdigit():
+ seed = int(seed)
+ else:
+ seed = 0
+
+ leech = 0
+
+ # convert filesize to byte if possible
+ filesize = get_torrent_size(filesize, filesize_multiplier)
+
+ # convert files to int if possible
+ if files.isdigit():
+ files = int(files)
+ else:
+ files = None
+
+ magnetlink = result.xpath('.//td[@class="ttth"]//a')[0].attrib['href']
+
+ # append result
+ results.append({'url': href,
+ 'title': title,
+ 'content': content,
+ 'seed': seed,
+ 'leech': leech,
+ 'filesize': filesize,
+ 'files': files,
+ 'magnetlink': magnetlink,
+ 'template': 'torrent.html'})
+
+ # return results sorted by seeder
+ return sorted(results, key=itemgetter('seed'), reverse=True)
diff --git a/searx/engines/currency_convert.py b/searx/engines/currency_convert.py
new file mode 100644
index 0000000..8eab8f6
--- /dev/null
+++ b/searx/engines/currency_convert.py
@@ -0,0 +1,99 @@
+import json
+import re
+import os
+import sys
+import unicodedata
+
+from io import open
+from datetime import datetime
+
+if sys.version_info[0] == 3:
+ unicode = str
+
+categories = []
+url = 'https://duckduckgo.com/js/spice/currency/1/{0}/{1}'
+weight = 100
+
+parser_re = re.compile(b'.*?(\\d+(?:\\.\\d+)?) ([^.0-9]+) (?:in|to) ([^.0-9]+)', re.I)
+
+db = 1
+
+
+def normalize_name(name):
+ name = name.decode('utf-8').lower().replace('-', ' ').rstrip('s')
+ name = re.sub(' +', ' ', name)
+ return unicodedata.normalize('NFKD', name).lower()
+
+
+def name_to_iso4217(name):
+ global db
+
+ name = normalize_name(name)
+ currencies = db['names'].get(name, [name])
+ return currencies[0]
+
+
+def iso4217_to_name(iso4217, language):
+ global db
+
+ return db['iso4217'].get(iso4217, {}).get(language, iso4217)
+
+
+def request(query, params):
+ m = parser_re.match(query)
+ if not m:
+ # wrong query
+ return params
+ amount, from_currency, to_currency = m.groups()
+ amount = float(amount)
+ from_currency = name_to_iso4217(from_currency.strip())
+ to_currency = name_to_iso4217(to_currency.strip())
+
+ q = (from_currency + to_currency).upper()
+
+ params['url'] = url.format(from_currency, to_currency)
+ params['amount'] = amount
+ params['from'] = from_currency
+ params['to'] = to_currency
+ params['from_name'] = iso4217_to_name(from_currency, 'en')
+ params['to_name'] = iso4217_to_name(to_currency, 'en')
+
+ return params
+
+
+def response(resp):
+ """remove first and last lines to get only json"""
+ json_resp = resp.text[resp.text.find('\n') + 1:resp.text.rfind('\n') - 2]
+ results = []
+ try:
+ conversion_rate = float(json.loads(json_resp)['conversion']['converted-amount'])
+ except:
+ return results
+ answer = '{0} {1} = {2} {3}, 1 {1} ({5}) = {4} {3} ({6})'.format(
+ resp.search_params['amount'],
+ resp.search_params['from'],
+ resp.search_params['amount'] * conversion_rate,
+ resp.search_params['to'],
+ conversion_rate,
+ resp.search_params['from_name'],
+ resp.search_params['to_name'],
+ )
+
+ url = 'https://duckduckgo.com/js/spice/currency/1/{0}/{1}'.format(
+ resp.search_params['from'].upper(), resp.search_params['to'])
+
+ results.append({'answer': answer, 'url': url})
+
+ return results
+
+
+def load():
+ global db
+
+ current_dir = os.path.dirname(os.path.realpath(__file__))
+ json_data = open(current_dir + "/../data/currencies.json", 'r', encoding='utf-8').read()
+
+ db = json.loads(json_data)
+
+
+load()
diff --git a/searx/engines/dailymotion.py b/searx/engines/dailymotion.py
new file mode 100644
index 0000000..8268b62
--- /dev/null
+++ b/searx/engines/dailymotion.py
@@ -0,0 +1,95 @@
+"""
+ Dailymotion (Videos)
+
+ @website https://www.dailymotion.com
+ @provide-api yes (http://www.dailymotion.com/developer)
+
+ @using-api yes
+ @results JSON
+ @stable yes
+ @parse url, title, thumbnail, publishedDate, embedded
+
+ @todo set content-parameter with correct data
+"""
+
+from json import loads
+from datetime import datetime
+from searx.url_utils import urlencode
+from searx.utils import match_language
+
+# engine dependent config
+categories = ['videos']
+paging = True
+language_support = True
+
+# search-url
+# see http://www.dailymotion.com/doc/api/obj-video.html
+search_url = 'https://api.dailymotion.com/videos?fields=created_time,title,description,duration,url,thumbnail_360_url,id&sort=relevance&limit=5&page={pageno}&{query}' # noqa
+embedded_url = '<iframe frameborder="0" width="540" height="304" ' +\
+ 'data-src="//www.dailymotion.com/embed/video/{videoid}" allowfullscreen></iframe>'
+
+supported_languages_url = 'https://api.dailymotion.com/languages'
+
+
+# do search-request
+def request(query, params):
+ locale = match_language(params['language'], supported_languages)
+
+ params['url'] = search_url.format(
+ query=urlencode({'search': query, 'localization': locale}),
+ pageno=params['pageno'])
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ search_res = loads(resp.text)
+
+ # return empty array if there are no results
+ if 'list' not in search_res:
+ return []
+
+ # parse results
+ for res in search_res['list']:
+ title = res['title']
+ url = res['url']
+ content = res['description']
+ thumbnail = res['thumbnail_360_url']
+ publishedDate = datetime.fromtimestamp(res['created_time'], None)
+ embedded = embedded_url.format(videoid=res['id'])
+
+ # http to https
+ thumbnail = thumbnail.replace("http://", "https://")
+
+ results.append({'template': 'videos.html',
+ 'url': url,
+ 'title': title,
+ 'content': content,
+ 'publishedDate': publishedDate,
+ 'embedded': embedded,
+ 'thumbnail': thumbnail})
+
+ # return results
+ return results
+
+
+# get supported languages from their site
+def _fetch_supported_languages(resp):
+ supported_languages = {}
+
+ response_json = loads(resp.text)
+
+ for language in response_json['list']:
+ supported_languages[language['code']] = {}
+
+ name = language['native_name']
+ if name:
+ supported_languages[language['code']]['name'] = name
+ english_name = language['name']
+ if english_name:
+ supported_languages[language['code']]['english_name'] = english_name
+
+ return supported_languages
diff --git a/searx/engines/deezer.py b/searx/engines/deezer.py
new file mode 100644
index 0000000..af63478
--- /dev/null
+++ b/searx/engines/deezer.py
@@ -0,0 +1,67 @@
+"""
+ Deezer (Music)
+
+ @website https://deezer.com
+ @provide-api yes (http://developers.deezer.com/api/)
+
+ @using-api yes
+ @results JSON
+ @stable yes
+ @parse url, title, content, embedded
+"""
+
+from json import loads
+from searx.url_utils import urlencode
+
+# engine dependent config
+categories = ['music']
+paging = True
+
+# search-url
+url = 'https://api.deezer.com/'
+search_url = url + 'search?{query}&index={offset}'
+
+embedded_url = '<iframe scrolling="no" frameborder="0" allowTransparency="true" ' +\
+ 'data-src="https://www.deezer.com/plugins/player?type=tracks&id={audioid}" ' +\
+ 'width="540" height="80"></iframe>'
+
+
+# do search-request
+def request(query, params):
+ offset = (params['pageno'] - 1) * 25
+
+ params['url'] = search_url.format(query=urlencode({'q': query}), offset=offset)
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ search_res = loads(resp.text)
+
+ # parse results
+ for result in search_res.get('data', []):
+ if result['type'] == 'track':
+ title = result['title']
+ url = result['link']
+
+ if url.startswith('http://'):
+ url = 'https' + url[4:]
+
+ content = u'{} - {} - {}'.format(
+ result['artist']['name'],
+ result['album']['title'],
+ result['title'])
+
+ embedded = embedded_url.format(audioid=result['id'])
+
+ # append result
+ results.append({'url': url,
+ 'title': title,
+ 'embedded': embedded,
+ 'content': content})
+
+ # return results
+ return results
diff --git a/searx/engines/deviantart.py b/searx/engines/deviantart.py
new file mode 100644
index 0000000..bb85c6d
--- /dev/null
+++ b/searx/engines/deviantart.py
@@ -0,0 +1,84 @@
+"""
+ Deviantart (Images)
+
+ @website https://www.deviantart.com/
+ @provide-api yes (https://www.deviantart.com/developers/) (RSS)
+
+ @using-api no (TODO, rewrite to api)
+ @results HTML
+ @stable no (HTML can change)
+ @parse url, title, thumbnail_src, img_src
+
+ @todo rewrite to api
+"""
+
+from lxml import html
+import re
+from searx.engines.xpath import extract_text
+from searx.url_utils import urlencode
+
+# engine dependent config
+categories = ['images']
+paging = True
+time_range_support = True
+
+# search-url
+base_url = 'https://www.deviantart.com/'
+search_url = base_url + 'browse/all/?offset={offset}&{query}'
+time_range_url = '&order={range}'
+
+time_range_dict = {'day': 11,
+ 'week': 14,
+ 'month': 15}
+
+
+# do search-request
+def request(query, params):
+ if params['time_range'] and params['time_range'] not in time_range_dict:
+ return params
+
+ offset = (params['pageno'] - 1) * 24
+
+ params['url'] = search_url.format(offset=offset,
+ query=urlencode({'q': query}))
+ if params['time_range'] in time_range_dict:
+ params['url'] += time_range_url.format(range=time_range_dict[params['time_range']])
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ # return empty array if a redirection code is returned
+ if resp.status_code == 302:
+ return []
+
+ dom = html.fromstring(resp.text)
+
+ regex = re.compile(r'\/200H\/')
+
+ # parse results
+ for result in dom.xpath('.//span[@class="thumb wide"]'):
+ link = result.xpath('.//a[@class="torpedo-thumb-link"]')[0]
+ url = link.attrib.get('href')
+ title = extract_text(result.xpath('.//span[@class="title"]'))
+ thumbnail_src = link.xpath('.//img')[0].attrib.get('src')
+ img_src = regex.sub('/', thumbnail_src)
+
+ # http to https, remove domain sharding
+ thumbnail_src = re.sub(r"https?://(th|fc)\d+.", "https://th01.", thumbnail_src)
+ thumbnail_src = re.sub(r"http://", "https://", thumbnail_src)
+
+ url = re.sub(r"http://(.*)\.deviantart\.com/", "https://\\1.deviantart.com/", url)
+
+ # append result
+ results.append({'url': url,
+ 'title': title,
+ 'img_src': img_src,
+ 'thumbnail_src': thumbnail_src,
+ 'template': 'images.html'})
+
+ # return results
+ return results
diff --git a/searx/engines/dictzone.py b/searx/engines/dictzone.py
new file mode 100644
index 0000000..7cc44df
--- /dev/null
+++ b/searx/engines/dictzone.py
@@ -0,0 +1,68 @@
+"""
+ Dictzone
+
+ @website https://dictzone.com/
+ @provide-api no
+ @using-api no
+ @results HTML (using search portal)
+ @stable no (HTML can change)
+ @parse url, title, content
+"""
+
+import re
+from lxml import html
+from searx.utils import is_valid_lang
+from searx.url_utils import urljoin
+
+categories = ['general']
+url = u'http://dictzone.com/{from_lang}-{to_lang}-dictionary/{query}'
+weight = 100
+
+parser_re = re.compile(b'.*?([a-z]+)-([a-z]+) ([^ ]+)$', re.I)
+results_xpath = './/table[@id="r"]/tr'
+
+
+def request(query, params):
+ m = parser_re.match(query)
+ if not m:
+ return params
+
+ from_lang, to_lang, query = m.groups()
+
+ from_lang = is_valid_lang(from_lang)
+ to_lang = is_valid_lang(to_lang)
+
+ if not from_lang or not to_lang:
+ return params
+
+ params['url'] = url.format(from_lang=from_lang[2],
+ to_lang=to_lang[2],
+ query=query.decode('utf-8'))
+
+ return params
+
+
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ for k, result in enumerate(dom.xpath(results_xpath)[1:]):
+ try:
+ from_result, to_results_raw = result.xpath('./td')
+ except:
+ continue
+
+ to_results = []
+ for to_result in to_results_raw.xpath('./p/a'):
+ t = to_result.text_content()
+ if t.strip():
+ to_results.append(to_result.text_content())
+
+ results.append({
+ 'url': urljoin(resp.url, '?%d' % k),
+ 'title': from_result.text_content(),
+ 'content': '; '.join(to_results)
+ })
+
+ return results
diff --git a/searx/engines/digbt.py b/searx/engines/digbt.py
new file mode 100644
index 0000000..ff2f945
--- /dev/null
+++ b/searx/engines/digbt.py
@@ -0,0 +1,62 @@
+"""
+ DigBT (Videos, Music, Files)
+
+ @website https://digbt.org
+ @provide-api no
+
+ @using-api no
+ @results HTML (using search portal)
+ @stable no (HTML can change)
+ @parse url, title, content, magnetlink
+"""
+
+from sys import version_info
+from lxml import html
+from searx.engines.xpath import extract_text
+from searx.utils import get_torrent_size
+from searx.url_utils import urljoin
+
+if version_info[0] == 3:
+ unicode = str
+
+categories = ['videos', 'music', 'files']
+paging = True
+
+URL = 'https://digbt.org'
+SEARCH_URL = URL + '/search/{query}-time-{pageno}'
+FILESIZE = 3
+FILESIZE_MULTIPLIER = 4
+
+
+def request(query, params):
+ params['url'] = SEARCH_URL.format(query=query, pageno=params['pageno'])
+
+ return params
+
+
+def response(resp):
+ dom = html.fromstring(resp.text)
+ search_res = dom.xpath('.//td[@class="x-item"]')
+
+ if not search_res:
+ return list()
+
+ results = list()
+ for result in search_res:
+ url = urljoin(URL, result.xpath('.//a[@title]/@href')[0])
+ title = extract_text(result.xpath('.//a[@title]'))
+ content = extract_text(result.xpath('.//div[@class="files"]'))
+ files_data = extract_text(result.xpath('.//div[@class="tail"]')).split()
+ filesize = get_torrent_size(files_data[FILESIZE], files_data[FILESIZE_MULTIPLIER])
+ magnetlink = result.xpath('.//div[@class="tail"]//a[@class="title"]/@href')[0]
+
+ results.append({'url': url,
+ 'title': title,
+ 'content': content,
+ 'filesize': filesize,
+ 'magnetlink': magnetlink,
+ 'seed': 'N/A',
+ 'leech': 'N/A',
+ 'template': 'torrent.html'})
+
+ return results
diff --git a/searx/engines/digg.py b/searx/engines/digg.py
new file mode 100644
index 0000000..4369ccb
--- /dev/null
+++ b/searx/engines/digg.py
@@ -0,0 +1,81 @@
+"""
+ Digg (News, Social media)
+
+ @website https://digg.com/
+ @provide-api no
+
+ @using-api no
+ @results HTML (using search portal)
+ @stable no (HTML can change)
+ @parse url, title, content, publishedDate, thumbnail
+"""
+
+import random
+import string
+from dateutil import parser
+from json import loads
+from lxml import html
+from searx.url_utils import quote_plus
+
+# engine dependent config
+categories = ['news', 'social media']
+paging = True
+
+# search-url
+base_url = 'https://digg.com/'
+search_url = base_url + 'api/search/{query}.json?position={position}&format=html'
+
+# specific xpath variables
+results_xpath = '//article'
+link_xpath = './/small[@class="time"]//a'
+title_xpath = './/h2//a//text()'
+content_xpath = './/p//text()'
+pubdate_xpath = './/time'
+
+digg_cookie_chars = string.ascii_uppercase + string.ascii_lowercase +\
+ string.digits + "+_"
+
+
+# do search-request
+def request(query, params):
+ offset = (params['pageno'] - 1) * 10
+ params['url'] = search_url.format(position=offset,
+ query=quote_plus(query))
+ params['cookies']['frontend.auid'] = ''.join(random.choice(
+ digg_cookie_chars) for _ in range(22))
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ search_result = loads(resp.text)
+
+ if 'html' not in search_result or search_result['html'] == '':
+ return results
+
+ dom = html.fromstring(search_result['html'])
+
+ # parse results
+ for result in dom.xpath(results_xpath):
+ url = result.attrib.get('data-contenturl')
+ thumbnail = result.xpath('.//img')[0].attrib.get('src')
+ title = ''.join(result.xpath(title_xpath))
+ content = ''.join(result.xpath(content_xpath))
+ pubdate = result.xpath(pubdate_xpath)[0].attrib.get('datetime')
+ publishedDate = parser.parse(pubdate)
+
+ # http to https
+ thumbnail = thumbnail.replace("http://static.digg.com", "https://static.digg.com")
+
+ # append result
+ results.append({'url': url,
+ 'title': title,
+ 'content': content,
+ 'template': 'videos.html',
+ 'publishedDate': publishedDate,
+ 'thumbnail': thumbnail})
+
+ # return results
+ return results
diff --git a/searx/engines/doku.py b/searx/engines/doku.py
new file mode 100644
index 0000000..a391be4
--- /dev/null
+++ b/searx/engines/doku.py
@@ -0,0 +1,84 @@
+# Doku Wiki
+#
+# @website https://www.dokuwiki.org/
+# @provide-api yes
+# (https://www.dokuwiki.org/devel:xmlrpc)
+#
+# @using-api no
+# @results HTML
+# @stable yes
+# @parse (general) url, title, content
+
+from lxml.html import fromstring
+from searx.engines.xpath import extract_text
+from searx.url_utils import urlencode
+
+# engine dependent config
+categories = ['general'] # TODO , 'images', 'music', 'videos', 'files'
+paging = False
+language_support = False
+number_of_results = 5
+
+# search-url
+# Doku is OpenSearch compatible
+base_url = 'http://localhost:8090'
+search_url = '/?do=search'\
+ '&{query}'
+# TODO '&startRecord={offset}'\
+# TODO '&maximumRecords={limit}'\
+
+
+# do search-request
+def request(query, params):
+
+ params['url'] = base_url +\
+ search_url.format(query=urlencode({'id': query}))
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ doc = fromstring(resp.text)
+
+ # parse results
+ # Quickhits
+ for r in doc.xpath('//div[@class="search_quickresult"]/ul/li'):
+ try:
+ res_url = r.xpath('.//a[@class="wikilink1"]/@href')[-1]
+ except:
+ continue
+
+ if not res_url:
+ continue
+
+ title = extract_text(r.xpath('.//a[@class="wikilink1"]/@title'))
+
+ # append result
+ results.append({'title': title,
+ 'content': "",
+ 'url': base_url + res_url})
+
+ # Search results
+ for r in doc.xpath('//dl[@class="search_results"]/*'):
+ try:
+ if r.tag == "dt":
+ res_url = r.xpath('.//a[@class="wikilink1"]/@href')[-1]
+ title = extract_text(r.xpath('.//a[@class="wikilink1"]/@title'))
+ elif r.tag == "dd":
+ content = extract_text(r.xpath('.'))
+
+ # append result
+ results.append({'title': title,
+ 'content': content,
+ 'url': base_url + res_url})
+ except:
+ continue
+
+ if not res_url:
+ continue
+
+ # return results
+ return results
diff --git a/searx/engines/duckduckgo.py b/searx/engines/duckduckgo.py
new file mode 100644
index 0000000..2c5dc50
--- /dev/null
+++ b/searx/engines/duckduckgo.py
@@ -0,0 +1,120 @@
+"""
+ DuckDuckGo (Web)
+
+ @website https://duckduckgo.com/
+ @provide-api yes (https://duckduckgo.com/api),
+ but not all results from search-site
+
+ @using-api no
+ @results HTML (using search portal)
+ @stable no (HTML can change)
+ @parse url, title, content
+
+ @todo rewrite to api
+"""
+
+from lxml.html import fromstring
+from json import loads
+from searx.engines.xpath import extract_text
+from searx.poolrequests import get
+from searx.url_utils import urlencode
+from searx.utils import match_language
+
+# engine dependent config
+categories = ['general']
+paging = True
+language_support = True
+supported_languages_url = 'https://duckduckgo.com/util/u172.js'
+time_range_support = True
+
+language_aliases = {
+ 'ar-SA': 'ar-XA',
+ 'es-419': 'es-XL',
+ 'ja': 'jp-JP',
+ 'ko': 'kr-KR',
+ 'sl-SI': 'sl-SL',
+ 'zh-TW': 'tzh-TW',
+ 'zh-HK': 'tzh-HK'
+}
+
+# search-url
+url = 'https://duckduckgo.com/html?{query}&s={offset}&dc={dc_param}'
+time_range_url = '&df={range}'
+
+time_range_dict = {'day': 'd',
+ 'week': 'w',
+ 'month': 'm'}
+
+# specific xpath variables
+result_xpath = '//div[@class="result results_links results_links_deep web-result "]' # noqa
+url_xpath = './/a[@class="result__a"]/@href'
+title_xpath = './/a[@class="result__a"]'
+content_xpath = './/a[@class="result__snippet"]'
+
+
+# match query's language to a region code that duckduckgo will accept
+def get_region_code(lang, lang_list=[]):
+ lang_code = match_language(lang, lang_list, language_aliases, 'wt-WT')
+ lang_parts = lang_code.split('-')
+
+ # country code goes first
+ return lang_parts[1].lower() + '-' + lang_parts[0].lower()
+
+
+# do search-request
+def request(query, params):
+ if params['time_range'] and params['time_range'] not in time_range_dict:
+ return params
+
+ offset = (params['pageno'] - 1) * 30
+
+ region_code = get_region_code(params['language'], supported_languages)
+ params['url'] = url.format(
+ query=urlencode({'q': query, 'kl': region_code}), offset=offset, dc_param=offset)
+
+ if params['time_range'] in time_range_dict:
+ params['url'] += time_range_url.format(range=time_range_dict[params['time_range']])
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ doc = fromstring(resp.text)
+
+ # parse results
+ for r in doc.xpath(result_xpath):
+ try:
+ res_url = r.xpath(url_xpath)[-1]
+ except:
+ continue
+
+ if not res_url:
+ continue
+
+ title = extract_text(r.xpath(title_xpath))
+ content = extract_text(r.xpath(content_xpath))
+
+ # append result
+ results.append({'title': title,
+ 'content': content,
+ 'url': res_url})
+
+ # return results
+ return results
+
+
+# get supported languages from their site
+def _fetch_supported_languages(resp):
+
+ # response is a js file with regions as an embedded object
+ response_page = resp.text
+ response_page = response_page[response_page.find('regions:{') + 8:]
+ response_page = response_page[:response_page.find('}') + 1]
+
+ regions_json = loads(response_page)
+ supported_languages = map((lambda x: x[3:] + '-' + x[:2].upper()), regions_json.keys())
+
+ return list(supported_languages)
diff --git a/searx/engines/duckduckgo_definitions.py b/searx/engines/duckduckgo_definitions.py
new file mode 100644
index 0000000..957a13e
--- /dev/null
+++ b/searx/engines/duckduckgo_definitions.py
@@ -0,0 +1,158 @@
+import json
+from lxml import html
+from re import compile
+from searx.engines.xpath import extract_text
+from searx.engines.duckduckgo import _fetch_supported_languages, supported_languages_url, language_aliases
+from searx.url_utils import urlencode
+from searx.utils import html_to_text, match_language
+
+url = 'https://api.duckduckgo.com/'\
+ + '?{query}&format=json&pretty=0&no_redirect=1&d=1'
+
+http_regex = compile(r'^http:')
+
+
+def result_to_text(url, text, htmlResult):
+ # TODO : remove result ending with "Meaning" or "Category"
+ dom = html.fromstring(htmlResult)
+ a = dom.xpath('//a')
+ if len(a) >= 1:
+ return extract_text(a[0])
+ else:
+ return text
+
+
+def request(query, params):
+ params['url'] = url.format(query=urlencode({'q': query}))
+ language = match_language(params['language'], supported_languages, language_aliases)
+ params['headers']['Accept-Language'] = language.split('-')[0]
+ return params
+
+
+def response(resp):
+ results = []
+
+ search_res = json.loads(resp.text)
+
+ content = ''
+ heading = search_res.get('Heading', '')
+ attributes = []
+ urls = []
+ infobox_id = None
+ relatedTopics = []
+
+ # add answer if there is one
+ answer = search_res.get('Answer', '')
+ if answer != '':
+ results.append({'answer': html_to_text(answer)})
+
+ # add infobox
+ if 'Definition' in search_res:
+ content = content + search_res.get('Definition', '')
+
+ if 'Abstract' in search_res:
+ content = content + search_res.get('Abstract', '')
+
+ # image
+ image = search_res.get('Image', '')
+ image = None if image == '' else image
+
+ # attributes
+ if 'Infobox' in search_res:
+ infobox = search_res.get('Infobox', None)
+ if 'content' in infobox:
+ for info in infobox.get('content'):
+ attributes.append({'label': info.get('label'),
+ 'value': info.get('value')})
+
+ # urls
+ for ddg_result in search_res.get('Results', []):
+ if 'FirstURL' in ddg_result:
+ firstURL = ddg_result.get('FirstURL', '')
+ text = ddg_result.get('Text', '')
+ urls.append({'title': text, 'url': firstURL})
+ results.append({'title': heading, 'url': firstURL})
+
+ # related topics
+ for ddg_result in search_res.get('RelatedTopics', []):
+ if 'FirstURL' in ddg_result:
+ suggestion = result_to_text(ddg_result.get('FirstURL', None),
+ ddg_result.get('Text', None),
+ ddg_result.get('Result', None))
+ if suggestion != heading:
+ results.append({'suggestion': suggestion})
+ elif 'Topics' in ddg_result:
+ suggestions = []
+ relatedTopics.append({'name': ddg_result.get('Name', ''),
+ 'suggestions': suggestions})
+ for topic_result in ddg_result.get('Topics', []):
+ suggestion = result_to_text(topic_result.get('FirstURL', None),
+ topic_result.get('Text', None),
+ topic_result.get('Result', None))
+ if suggestion != heading:
+ suggestions.append(suggestion)
+
+ # abstract
+ abstractURL = search_res.get('AbstractURL', '')
+ if abstractURL != '':
+ # add as result ? problem always in english
+ infobox_id = abstractURL
+ urls.append({'title': search_res.get('AbstractSource'),
+ 'url': abstractURL})
+
+ # definition
+ definitionURL = search_res.get('DefinitionURL', '')
+ if definitionURL != '':
+ # add as result ? as answer ? problem always in english
+ infobox_id = definitionURL
+ urls.append({'title': search_res.get('DefinitionSource'),
+ 'url': definitionURL})
+
+ # to merge with wikidata's infobox
+ if infobox_id:
+ infobox_id = http_regex.sub('https:', infobox_id)
+
+ # entity
+ entity = search_res.get('Entity', None)
+ # TODO continent / country / department / location / waterfall /
+ # mountain range :
+ # link to map search, get weather, near by locations
+ # TODO musician : link to music search
+ # TODO concert tour : ??
+ # TODO film / actor / television / media franchise :
+ # links to IMDB / rottentomatoes (or scrap result)
+ # TODO music : link tu musicbrainz / last.fm
+ # TODO book : ??
+ # TODO artist / playwright : ??
+ # TODO compagny : ??
+ # TODO software / os : ??
+ # TODO software engineer : ??
+ # TODO prepared food : ??
+ # TODO website : ??
+ # TODO performing art : ??
+ # TODO prepared food : ??
+ # TODO programming language : ??
+ # TODO file format : ??
+
+ if len(heading) > 0:
+ # TODO get infobox.meta.value where .label='article_title'
+ if image is None and len(attributes) == 0 and len(urls) == 1 and\
+ len(relatedTopics) == 0 and len(content) == 0:
+ results.append({
+ 'url': urls[0]['url'],
+ 'title': heading,
+ 'content': content
+ })
+ else:
+ results.append({
+ 'infobox': heading,
+ 'id': infobox_id,
+ 'entity': entity,
+ 'content': content,
+ 'img_src': image,
+ 'attributes': attributes,
+ 'urls': urls,
+ 'relatedTopics': relatedTopics
+ })
+
+ return results
diff --git a/searx/engines/duckduckgo_images.py b/searx/engines/duckduckgo_images.py
new file mode 100644
index 0000000..7905d0b
--- /dev/null
+++ b/searx/engines/duckduckgo_images.py
@@ -0,0 +1,90 @@
+"""
+ DuckDuckGo (Images)
+
+ @website https://duckduckgo.com/
+ @provide-api yes (https://duckduckgo.com/api),
+ but images are not supported
+
+ @using-api no
+ @results JSON (site requires js to get images)
+ @stable no (JSON can change)
+ @parse url, title, img_src
+
+ @todo avoid extra request
+"""
+
+from json import loads
+from searx.engines.xpath import extract_text
+from searx.engines.duckduckgo import (
+ _fetch_supported_languages, supported_languages_url,
+ get_region_code, language_aliases
+)
+from searx.poolrequests import get
+from searx.url_utils import urlencode
+
+# engine dependent config
+categories = ['images']
+paging = True
+language_support = True
+safesearch = True
+
+# search-url
+images_url = 'https://duckduckgo.com/i.js?{query}&s={offset}&p={safesearch}&o=json&vqd={vqd}'
+site_url = 'https://duckduckgo.com/?{query}&iar=images&iax=1&ia=images'
+
+
+# run query in site to get vqd number needed for requesting images
+# TODO: find a way to get this number without an extra request (is it a hash of the query?)
+def get_vqd(query):
+ res = get(site_url.format(query=urlencode({'q': query})))
+ content = res.text
+ vqd = content[content.find('vqd=\'') + 5:]
+ vqd = vqd[:vqd.find('\'')]
+ return vqd
+
+
+# do search-request
+def request(query, params):
+ # to avoid running actual external requests when testing
+ if 'is_test' not in params:
+ vqd = get_vqd(query)
+ else:
+ vqd = '12345'
+
+ offset = (params['pageno'] - 1) * 50
+
+ safesearch = params['safesearch'] - 1
+
+ region_code = get_region_code(params['language'], lang_list=supported_languages)
+ params['url'] = images_url.format(
+ query=urlencode({'q': query, 'l': region_code}), offset=offset, safesearch=safesearch, vqd=vqd)
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ content = resp.text
+ try:
+ res_json = loads(content)
+ except:
+ return []
+
+ # parse results
+ for result in res_json['results']:
+ title = result['title']
+ url = result['url']
+ thumbnail = result['thumbnail']
+ image = result['image']
+
+ # append result
+ results.append({'template': 'images.html',
+ 'title': title,
+ 'content': '',
+ 'thumbnail_src': thumbnail,
+ 'img_src': image,
+ 'url': url})
+
+ return results
diff --git a/searx/engines/duden.py b/searx/engines/duden.py
new file mode 100644
index 0000000..881ff9d
--- /dev/null
+++ b/searx/engines/duden.py
@@ -0,0 +1,76 @@
+"""
+ Duden
+ @website https://www.duden.de
+ @provide-api no
+ @using-api no
+ @results HTML (using search portal)
+ @stable no (HTML can change)
+ @parse url, title, content
+"""
+
+from lxml import html, etree
+import re
+from searx.engines.xpath import extract_text
+from searx.url_utils import quote
+from searx import logger
+
+categories = ['general']
+paging = True
+language_support = False
+
+# search-url
+base_url = 'https://www.duden.de/'
+search_url = base_url + 'suchen/dudenonline/{query}?page={offset}'
+
+
+def request(query, params):
+ '''pre-request callback
+ params<dict>:
+ method : POST/GET
+ headers : {}
+ data : {} # if method == POST
+ url : ''
+ category: 'search category'
+ pageno : 1 # number of the requested page
+ '''
+
+ offset = (params['pageno'] - 1)
+ params['url'] = search_url.format(offset=offset, query=quote(query))
+ return params
+
+
+def response(resp):
+ '''post-response callback
+ resp: requests response object
+ '''
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ try:
+ number_of_results_string = re.sub('[^0-9]', '', dom.xpath(
+ '//a[@class="active" and contains(@href,"/suchen/dudenonline")]/span/text()')[0]
+ )
+
+ results.append({'number_of_results': int(number_of_results_string)})
+
+ except:
+ logger.debug("Couldn't read number of results.")
+ pass
+
+ for result in dom.xpath('//section[@class="wide" and not(contains(@style,"overflow:hidden"))]'):
+ try:
+ logger.debug("running for %s" % str(result))
+ link = result.xpath('.//h2/a')[0]
+ url = link.attrib.get('href')
+ title = result.xpath('string(.//h2/a)')
+ content = extract_text(result.xpath('.//p'))
+ # append result
+ results.append({'url': url,
+ 'title': title,
+ 'content': content})
+ except:
+ logger.debug('result parse error in:\n%s', etree.tostring(result, pretty_print=True))
+ continue
+
+ return results
diff --git a/searx/engines/dummy.py b/searx/engines/dummy.py
new file mode 100644
index 0000000..50b56ef
--- /dev/null
+++ b/searx/engines/dummy.py
@@ -0,0 +1,16 @@
+"""
+ Dummy
+
+ @results empty array
+ @stable yes
+"""
+
+
+# do search-request
+def request(query, params):
+ return params
+
+
+# get response from search-request
+def response(resp):
+ return []
diff --git a/searx/engines/faroo.py b/searx/engines/faroo.py
new file mode 100644
index 0000000..4e8b567
--- /dev/null
+++ b/searx/engines/faroo.py
@@ -0,0 +1,93 @@
+"""
+ Faroo (Web, News)
+
+ @website http://www.faroo.com
+ @provide-api yes (http://www.faroo.com/hp/api/api.html), require API-key
+
+ @using-api no
+ @results JSON
+ @stable yes
+ @parse url, title, content, publishedDate, img_src
+"""
+
+from json import loads
+import datetime
+from searx.utils import searx_useragent
+from searx.url_utils import urlencode
+
+# engine dependent config
+categories = ['general', 'news']
+paging = True
+language_support = True
+number_of_results = 10
+
+# search-url
+url = 'http://www.faroo.com/'
+search_url = url + 'instant.json?{query}'\
+ '&start={offset}'\
+ '&length={number_of_results}'\
+ '&l={language}'\
+ '&src={categorie}'\
+ '&i=false'\
+ '&c=false'
+
+search_category = {'general': 'web',
+ 'news': 'news'}
+
+
+# do search-request
+def request(query, params):
+ offset = (params['pageno'] - 1) * number_of_results + 1
+ categorie = search_category.get(params['category'], 'web')
+
+ language = params['language'].split('-')[0]
+
+ # if language is not supported, put it in english
+ if language != 'en' and\
+ language != 'de' and\
+ language != 'zh':
+ language = 'en'
+
+ params['url'] = search_url.format(offset=offset,
+ number_of_results=number_of_results,
+ query=urlencode({'q': query}),
+ language=language,
+ categorie=categorie)
+
+ params['headers']['Referer'] = url
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ # HTTP-Code 429: rate limit exceeded
+ if resp.status_code == 429:
+ raise Exception("rate limit has been exceeded!")
+
+ results = []
+
+ search_res = loads(resp.text)
+
+ # return empty array if there are no results
+ if not search_res.get('results', {}):
+ return []
+
+ # parse results
+ for result in search_res['results']:
+ publishedDate = None
+ result_json = {'url': result['url'], 'title': result['title'],
+ 'content': result['kwic']}
+ if result['news']:
+ result_json['publishedDate'] = \
+ datetime.datetime.fromtimestamp(result['date'] / 1000.0)
+
+ # append image result if image url is set
+ if result['iurl']:
+ result_json['template'] = 'videos.html'
+ result_json['thumbnail'] = result['iurl']
+
+ results.append(result_json)
+
+ # return results
+ return results
diff --git a/searx/engines/fdroid.py b/searx/engines/fdroid.py
new file mode 100644
index 0000000..a6b01a8
--- /dev/null
+++ b/searx/engines/fdroid.py
@@ -0,0 +1,51 @@
+"""
+ F-Droid (a repository of FOSS applications for Android)
+
+ @website https://f-droid.org/
+ @provide-api no
+ @using-api no
+ @results HTML
+ @stable no (HTML can change)
+ @parse url, title, content
+"""
+
+from lxml import html
+from searx.engines.xpath import extract_text
+from searx.url_utils import urlencode
+
+# engine dependent config
+categories = ['files']
+paging = True
+
+# search-url
+base_url = 'https://f-droid.org/'
+search_url = base_url + 'repository/browse/?{query}'
+
+
+# do search-request
+def request(query, params):
+ query = urlencode({'fdfilter': query, 'fdpage': params['pageno']})
+ params['url'] = search_url.format(query=query)
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ for app in dom.xpath('//div[@id="appheader"]'):
+ url = app.xpath('./ancestor::a/@href')[0]
+ title = app.xpath('./p/span/text()')[0]
+ img_src = app.xpath('.//img/@src')[0]
+
+ content = extract_text(app.xpath('./p')[0])
+ content = content.replace(title, '', 1).strip()
+
+ results.append({'url': url,
+ 'title': title,
+ 'content': content,
+ 'img_src': img_src})
+
+ return results
diff --git a/searx/engines/filecrop.py b/searx/engines/filecrop.py
new file mode 100644
index 0000000..ed57a6b
--- /dev/null
+++ b/searx/engines/filecrop.py
@@ -0,0 +1,88 @@
+from searx.url_utils import urlencode
+
+try:
+ from HTMLParser import HTMLParser
+except:
+ from html.parser import HTMLParser
+
+url = 'http://www.filecrop.com/'
+search_url = url + '/search.php?{query}&size_i=0&size_f=100000000&engine_r=1&engine_d=1&engine_e=1&engine_4=1&engine_m=1&pos={index}' # noqa
+
+paging = True
+
+
+class FilecropResultParser(HTMLParser):
+
+ def __init__(self):
+ HTMLParser.__init__(self)
+ self.__start_processing = False
+
+ self.results = []
+ self.result = {}
+
+ self.tr_counter = 0
+ self.data_counter = 0
+
+ def handle_starttag(self, tag, attrs):
+
+ if tag == 'tr':
+ if ('bgcolor', '#edeff5') in attrs or\
+ ('bgcolor', '#ffffff') in attrs:
+ self.__start_processing = True
+
+ if not self.__start_processing:
+ return
+
+ if tag == 'label':
+ self.result['title'] = [attr[1] for attr in attrs
+ if attr[0] == 'title'][0]
+ elif tag == 'a' and ('rel', 'nofollow') in attrs\
+ and ('class', 'sourcelink') in attrs:
+ if 'content' in self.result:
+ self.result['content'] += [attr[1] for attr in attrs
+ if attr[0] == 'title'][0]
+ else:
+ self.result['content'] = [attr[1] for attr in attrs
+ if attr[0] == 'title'][0]
+ self.result['content'] += ' '
+ elif tag == 'a':
+ self.result['url'] = url + [attr[1] for attr in attrs
+ if attr[0] == 'href'][0]
+
+ def handle_endtag(self, tag):
+ if self.__start_processing is False:
+ return
+
+ if tag == 'tr':
+ self.tr_counter += 1
+
+ if self.tr_counter == 2:
+ self.__start_processing = False
+ self.tr_counter = 0
+ self.data_counter = 0
+ self.results.append(self.result)
+ self.result = {}
+
+ def handle_data(self, data):
+ if not self.__start_processing:
+ return
+
+ if 'content' in self.result:
+ self.result['content'] += data + ' '
+ else:
+ self.result['content'] = data + ' '
+
+ self.data_counter += 1
+
+
+def request(query, params):
+ index = 1 + (params['pageno'] - 1) * 30
+ params['url'] = search_url.format(query=urlencode({'w': query}), index=index)
+ return params
+
+
+def response(resp):
+ parser = FilecropResultParser()
+ parser.feed(resp.text)
+
+ return parser.results
diff --git a/searx/engines/flickr.py b/searx/engines/flickr.py
new file mode 100644
index 0000000..de17693
--- /dev/null
+++ b/searx/engines/flickr.py
@@ -0,0 +1,90 @@
+#!/usr/bin/env python
+
+"""
+ Flickr (Images)
+
+ @website https://www.flickr.com
+ @provide-api yes (https://secure.flickr.com/services/api/flickr.photos.search.html)
+
+ @using-api yes
+ @results JSON
+ @stable yes
+ @parse url, title, thumbnail, img_src
+ More info on api-key : https://www.flickr.com/services/apps/create/
+"""
+
+from json import loads
+from searx.url_utils import urlencode
+
+categories = ['images']
+
+nb_per_page = 15
+paging = True
+api_key = None
+
+
+url = 'https://api.flickr.com/services/rest/?method=flickr.photos.search' +\
+ '&api_key={api_key}&{text}&sort=relevance' +\
+ '&extras=description%2C+owner_name%2C+url_o%2C+url_n%2C+url_z' +\
+ '&per_page={nb_per_page}&format=json&nojsoncallback=1&page={page}'
+photo_url = 'https://www.flickr.com/photos/{userid}/{photoid}'
+
+paging = True
+
+
+def build_flickr_url(user_id, photo_id):
+ return photo_url.format(userid=user_id, photoid=photo_id)
+
+
+def request(query, params):
+ params['url'] = url.format(text=urlencode({'text': query}),
+ api_key=api_key,
+ nb_per_page=nb_per_page,
+ page=params['pageno'])
+ return params
+
+
+def response(resp):
+ results = []
+
+ search_results = loads(resp.text)
+
+ # return empty array if there are no results
+ if 'photos' not in search_results:
+ return []
+
+ if 'photo' not in search_results['photos']:
+ return []
+
+ photos = search_results['photos']['photo']
+
+ # parse results
+ for photo in photos:
+ if 'url_o' in photo:
+ img_src = photo['url_o']
+ elif 'url_z' in photo:
+ img_src = photo['url_z']
+ else:
+ continue
+
+# For a bigger thumbnail, keep only the url_z, not the url_n
+ if 'url_n' in photo:
+ thumbnail_src = photo['url_n']
+ elif 'url_z' in photo:
+ thumbnail_src = photo['url_z']
+ else:
+ thumbnail_src = img_src
+
+ url = build_flickr_url(photo['owner'], photo['id'])
+
+ # append result
+ results.append({'url': url,
+ 'title': photo['title'],
+ 'img_src': img_src,
+ 'thumbnail_src': thumbnail_src,
+ 'content': photo['description']['_content'],
+ 'author': photo['ownername'],
+ 'template': 'images.html'})
+
+ # return results
+ return results
diff --git a/searx/engines/flickr_noapi.py b/searx/engines/flickr_noapi.py
new file mode 100644
index 0000000..08f07f7
--- /dev/null
+++ b/searx/engines/flickr_noapi.py
@@ -0,0 +1,117 @@
+#!/usr/bin/env python
+
+"""
+ Flickr (Images)
+
+ @website https://www.flickr.com
+ @provide-api yes (https://secure.flickr.com/services/api/flickr.photos.search.html)
+
+ @using-api no
+ @results HTML
+ @stable no
+ @parse url, title, thumbnail, img_src
+"""
+
+from json import loads
+from time import time
+import re
+from searx.engines import logger
+from searx.url_utils import urlencode
+
+
+logger = logger.getChild('flickr-noapi')
+
+categories = ['images']
+
+url = 'https://www.flickr.com/'
+search_url = url + 'search?{query}&page={page}'
+time_range_url = '&min_upload_date={start}&max_upload_date={end}'
+photo_url = 'https://www.flickr.com/photos/{userid}/{photoid}'
+regex = re.compile(r"\"search-photos-lite-models\",\"photos\":(.*}),\"totalItems\":", re.DOTALL)
+image_sizes = ('o', 'k', 'h', 'b', 'c', 'z', 'n', 'm', 't', 'q', 's')
+
+paging = True
+time_range_support = True
+time_range_dict = {'day': 60 * 60 * 24,
+ 'week': 60 * 60 * 24 * 7,
+ 'month': 60 * 60 * 24 * 7 * 4,
+ 'year': 60 * 60 * 24 * 7 * 52}
+
+
+def build_flickr_url(user_id, photo_id):
+ return photo_url.format(userid=user_id, photoid=photo_id)
+
+
+def _get_time_range_url(time_range):
+ if time_range in time_range_dict:
+ return time_range_url.format(start=time(), end=str(int(time()) - time_range_dict[time_range]))
+ return ''
+
+
+def request(query, params):
+ params['url'] = (search_url.format(query=urlencode({'text': query}), page=params['pageno'])
+ + _get_time_range_url(params['time_range']))
+ return params
+
+
+def response(resp):
+ results = []
+
+ matches = regex.search(resp.text)
+
+ if matches is None:
+ return results
+
+ match = matches.group(1)
+ search_results = loads(match)
+
+ if '_data' not in search_results:
+ return []
+
+ photos = search_results['_data']
+
+ for photo in photos:
+
+ # In paged configuration, the first pages' photos
+ # are represented by a None object
+ if photo is None:
+ continue
+
+ img_src = None
+ # From the biggest to the lowest format
+ for image_size in image_sizes:
+ if image_size in photo['sizes']:
+ img_src = photo['sizes'][image_size]['url']
+ break
+
+ if not img_src:
+ logger.debug('cannot find valid image size: {0}'.format(repr(photo)))
+ continue
+
+ if 'ownerNsid' not in photo:
+ continue
+
+ # For a bigger thumbnail, keep only the url_z, not the url_n
+ if 'n' in photo['sizes']:
+ thumbnail_src = photo['sizes']['n']['url']
+ elif 'z' in photo['sizes']:
+ thumbnail_src = photo['sizes']['z']['url']
+ else:
+ thumbnail_src = img_src
+
+ url = build_flickr_url(photo['ownerNsid'], photo['id'])
+
+ title = photo.get('title', '')
+
+ author = photo['username']
+
+ # append result
+ results.append({'url': url,
+ 'title': title,
+ 'img_src': img_src,
+ 'thumbnail_src': thumbnail_src,
+ 'content': '',
+ 'author': author,
+ 'template': 'images.html'})
+
+ return results
diff --git a/searx/engines/framalibre.py b/searx/engines/framalibre.py
new file mode 100644
index 0000000..146cdae
--- /dev/null
+++ b/searx/engines/framalibre.py
@@ -0,0 +1,69 @@
+"""
+ FramaLibre (It)
+
+ @website https://framalibre.org/
+ @provide-api no
+
+ @using-api no
+ @results HTML
+ @stable no (HTML can change)
+ @parse url, title, content, thumbnail, img_src
+"""
+
+from cgi import escape
+from lxml import html
+from searx.engines.xpath import extract_text
+from searx.url_utils import urljoin, urlencode
+
+# engine dependent config
+categories = ['it']
+paging = True
+
+# search-url
+base_url = 'https://framalibre.org/'
+search_url = base_url + 'recherche-par-crit-res?{query}&page={offset}'
+
+# specific xpath variables
+results_xpath = '//div[@class="nodes-list-row"]/div[contains(@typeof,"sioc:Item")]'
+link_xpath = './/h3[@class="node-title"]/a[@href]'
+thumbnail_xpath = './/img[@class="media-object img-responsive"]/@src'
+content_xpath = './/div[@class="content"]//p'
+
+
+# do search-request
+def request(query, params):
+ offset = (params['pageno'] - 1)
+ params['url'] = search_url.format(query=urlencode({'keys': query}),
+ offset=offset)
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ # parse results
+ for result in dom.xpath(results_xpath):
+ link = result.xpath(link_xpath)[0]
+ href = urljoin(base_url, link.attrib.get('href'))
+ # there's also a span (class="rdf-meta element-hidden" property="dc:title")'s content property for this...
+ title = escape(extract_text(link))
+ thumbnail_tags = result.xpath(thumbnail_xpath)
+ thumbnail = None
+ if len(thumbnail_tags) > 0:
+ thumbnail = extract_text(thumbnail_tags[0])
+ if thumbnail[0] == '/':
+ thumbnail = base_url + thumbnail
+ content = escape(extract_text(result.xpath(content_xpath)))
+
+ # append result
+ results.append({'url': href,
+ 'title': title,
+ 'img_src': thumbnail,
+ 'content': content})
+
+ # return results
+ return results
diff --git a/searx/engines/frinkiac.py b/searx/engines/frinkiac.py
new file mode 100644
index 0000000..a67b42d
--- /dev/null
+++ b/searx/engines/frinkiac.py
@@ -0,0 +1,44 @@
+"""
+Frinkiac (Images)
+
+@website https://www.frinkiac.com
+@provide-api no
+@using-api no
+@results JSON
+@stable no
+@parse url, title, img_src
+"""
+
+from json import loads
+from searx.url_utils import urlencode
+
+categories = ['images']
+
+BASE = 'https://frinkiac.com/'
+SEARCH_URL = '{base}api/search?{query}'
+RESULT_URL = '{base}?{query}'
+THUMB_URL = '{base}img/{episode}/{timestamp}/medium.jpg'
+IMAGE_URL = '{base}img/{episode}/{timestamp}.jpg'
+
+
+def request(query, params):
+ params['url'] = SEARCH_URL.format(base=BASE, query=urlencode({'q': query}))
+ return params
+
+
+def response(resp):
+ results = []
+ response_data = loads(resp.text)
+ for result in response_data:
+ episode = result['Episode']
+ timestamp = result['Timestamp']
+
+ results.append({'template': 'images.html',
+ 'url': RESULT_URL.format(base=BASE,
+ query=urlencode({'p': 'caption', 'e': episode, 't': timestamp})),
+ 'title': episode,
+ 'content': '',
+ 'thumbnail_src': THUMB_URL.format(base=BASE, episode=episode, timestamp=timestamp),
+ 'img_src': IMAGE_URL.format(base=BASE, episode=episode, timestamp=timestamp)})
+
+ return results
diff --git a/searx/engines/genius.py b/searx/engines/genius.py
new file mode 100644
index 0000000..b265e9d
--- /dev/null
+++ b/searx/engines/genius.py
@@ -0,0 +1,88 @@
+"""
+Genius
+
+ @website https://www.genius.com/
+ @provide-api yes (https://docs.genius.com/)
+
+ @using-api yes
+ @results JSON
+ @stable yes
+ @parse url, title, content, thumbnail, publishedDate
+"""
+
+from json import loads
+from searx.url_utils import urlencode
+from datetime import datetime
+
+# engine dependent config
+categories = ['music']
+paging = True
+language_support = False
+page_size = 5
+
+url = 'https://genius.com/api/'
+search_url = url + 'search/{index}?{query}&page={pageno}&per_page={page_size}'
+
+
+def request(query, params):
+ params['url'] = search_url.format(query=urlencode({'q': query}),
+ index='multi',
+ page_size=page_size,
+ pageno=params['pageno'])
+ return params
+
+
+def parse_lyric(hit):
+ try:
+ content = hit['highlights'][0]['value']
+ except:
+ content = None
+ timestamp = hit['result']['lyrics_updated_at']
+ result = {'url': hit['result']['url'],
+ 'title': hit['result']['full_title'],
+ 'content': content,
+ 'thumbnail': hit['result']['song_art_image_thumbnail_url'],
+ 'template': 'videos.html'}
+ if timestamp:
+ result.update({'publishedDate': datetime.fromtimestamp(timestamp)})
+ return result
+
+
+def parse_artist(hit):
+ result = {'url': hit['result']['url'],
+ 'title': hit['result']['name'],
+ 'content': None,
+ 'thumbnail': hit['result']['image_url'],
+ 'template': 'videos.html'}
+ return result
+
+
+def parse_album(hit):
+ result = {'url': hit['result']['url'],
+ 'title': hit['result']['full_title'],
+ 'thumbnail': hit['result']['cover_art_url'],
+ # 'thumbnail': hit['result']['cover_art_thumbnail_url'],
+ 'template': 'videos.html'}
+ try:
+ year = hit['result']['release_date_components']['year']
+ except:
+ pass
+ else:
+ if year:
+ result.update({'content': 'Released: {}'.format(year)})
+ return result
+
+parse = {'lyric': parse_lyric, 'song': parse_lyric, 'artist': parse_artist, 'album': parse_album}
+
+
+def response(resp):
+ results = []
+ json = loads(resp.text)
+ hits = [hit for section in json['response']['sections'] for hit in section['hits']]
+ for hit in hits:
+ try:
+ func = parse[hit['type']]
+ except KeyError:
+ continue
+ results.append(func(hit))
+ return results
diff --git a/searx/engines/gentoo.py b/searx/engines/gentoo.py
new file mode 100644
index 0000000..a7a966c
--- /dev/null
+++ b/searx/engines/gentoo.py
@@ -0,0 +1,128 @@
+# -*- coding: utf-8 -*-
+
+"""
+ Gentoo Wiki
+
+ @website https://wiki.gentoo.org
+ @provide-api yes
+ @using-api no
+ @results HTML
+ @stable no (HTML can change)
+ @parse url, title
+"""
+
+from lxml import html
+from searx.engines.xpath import extract_text
+from searx.url_utils import urlencode, urljoin
+
+# engine dependent config
+categories = ['it']
+language_support = True
+paging = True
+base_url = 'https://wiki.gentoo.org'
+
+# xpath queries
+xpath_results = '//ul[@class="mw-search-results"]/li'
+xpath_link = './/div[@class="mw-search-result-heading"]/a'
+
+
+# cut 'en' from 'en-US', 'de' from 'de-CH', and so on
+def locale_to_lang_code(locale):
+ if locale.find('-') >= 0:
+ locale = locale.split('-')[0]
+ return locale
+
+
+# wikis for some languages were moved off from the main site, we need to make
+# requests to correct URLs to be able to get results in those languages
+lang_urls = {
+ 'en': {
+ 'base': 'https://wiki.gentoo.org',
+ 'search': '/index.php?title=Special:Search&offset={offset}&{query}'
+ },
+ 'others': {
+ 'base': 'https://wiki.gentoo.org',
+ 'search': '/index.php?title=Special:Search&offset={offset}&{query}\
+ &profile=translation&languagefilter={language}'
+ }
+}
+
+
+# get base & search URLs for selected language
+def get_lang_urls(language):
+ if language != 'en':
+ return lang_urls['others']
+ return lang_urls['en']
+
+
+# Language names to build search requests for
+# those languages which are hosted on the main site.
+main_langs = {
+ 'ar': 'العربية',
+ 'bg': 'Български',
+ 'cs': 'Česky',
+ 'da': 'Dansk',
+ 'el': 'Ελληνικά',
+ 'es': 'Español',
+ 'he': 'עברית',
+ 'hr': 'Hrvatski',
+ 'hu': 'Magyar',
+ 'it': 'Italiano',
+ 'ko': '한국어',
+ 'lt': 'Lietuviškai',
+ 'nl': 'Nederlands',
+ 'pl': 'Polski',
+ 'pt': 'Português',
+ 'ru': 'Русский',
+ 'sl': 'Slovenský',
+ 'th': 'ไทย',
+ 'uk': 'Українська',
+ 'zh': '简体中文'
+}
+supported_languages = dict(lang_urls, **main_langs)
+
+
+# do search-request
+def request(query, params):
+ # translate the locale (e.g. 'en-US') to language code ('en')
+ language = locale_to_lang_code(params['language'])
+
+ # if our language is hosted on the main site, we need to add its name
+ # to the query in order to narrow the results to that language
+ if language in main_langs:
+ query += b' (' + (main_langs[language]).encode('utf-8') + b')'
+
+ # prepare the request parameters
+ query = urlencode({'search': query})
+ offset = (params['pageno'] - 1) * 20
+
+ # get request URLs for our language of choice
+ urls = get_lang_urls(language)
+ search_url = urls['base'] + urls['search']
+
+ params['url'] = search_url.format(query=query, offset=offset,
+ language=language)
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ # get the base URL for the language in which request was made
+ language = locale_to_lang_code(resp.search_params['language'])
+ base_url = get_lang_urls(language)['base']
+
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ # parse results
+ for result in dom.xpath(xpath_results):
+ link = result.xpath(xpath_link)[0]
+ href = urljoin(base_url, link.attrib.get('href'))
+ title = extract_text(link)
+
+ results.append({'url': href,
+ 'title': title})
+
+ return results
diff --git a/searx/engines/gigablast.py b/searx/engines/gigablast.py
new file mode 100644
index 0000000..9b9b9bd
--- /dev/null
+++ b/searx/engines/gigablast.py
@@ -0,0 +1,109 @@
+"""
+ Gigablast (Web)
+
+ @website https://gigablast.com
+ @provide-api yes (https://gigablast.com/api.html)
+
+ @using-api yes
+ @results XML
+ @stable yes
+ @parse url, title, content
+"""
+
+import random
+from json import loads
+from time import time
+from lxml.html import fromstring
+from searx.url_utils import urlencode
+
+# engine dependent config
+categories = ['general']
+paging = True
+number_of_results = 10
+language_support = True
+safesearch = True
+
+# search-url
+base_url = 'https://gigablast.com/'
+search_string = 'search?{query}'\
+ '&n={number_of_results}'\
+ '&c=main'\
+ '&s={offset}'\
+ '&format=json'\
+ '&qh=0'\
+ '&qlang={lang}'\
+ '&ff={safesearch}'\
+ '&rxiec={rxieu}'\
+ '&ulse={ulse}'\
+ '&rand={rxikd}' # current unix timestamp
+
+# specific xpath variables
+results_xpath = '//response//result'
+url_xpath = './/url'
+title_xpath = './/title'
+content_xpath = './/sum'
+
+supported_languages_url = 'https://gigablast.com/search?&rxikd=1'
+
+
+# do search-request
+def request(query, params):
+ offset = (params['pageno'] - 1) * number_of_results
+
+ language = params['language'].replace('-', '_').lower()
+ if language.split('-')[0] != 'zh':
+ language = language.split('-')[0]
+
+ if params['safesearch'] >= 1:
+ safesearch = 1
+ else:
+ safesearch = 0
+
+ # rxieu is some kind of hash from the search query, but accepts random atm
+ search_path = search_string.format(query=urlencode({'q': query}),
+ offset=offset,
+ number_of_results=number_of_results,
+ rxikd=int(time() * 1000),
+ rxieu=random.randint(1000000000, 9999999999),
+ ulse=random.randint(100000000, 999999999),
+ lang=language,
+ safesearch=safesearch)
+
+ params['url'] = base_url + search_path
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ # parse results
+ response_json = loads(resp.text)
+
+ for result in response_json['results']:
+ # append result
+ results.append({'url': result['url'],
+ 'title': result['title'],
+ 'content': result['sum']})
+
+ # return results
+ return results
+
+
+# get supported languages from their site
+def _fetch_supported_languages(resp):
+ supported_languages = []
+ dom = fromstring(resp.text)
+ links = dom.xpath('//span[@id="menu2"]/a')
+ for link in links:
+ href = link.xpath('./@href')[0].split('lang%3A')
+ if len(href) == 2:
+ code = href[1].split('_')
+ if len(code) == 2:
+ code = code[0] + '-' + code[1].upper()
+ else:
+ code = code[0]
+ supported_languages.append(code)
+
+ return supported_languages
diff --git a/searx/engines/github.py b/searx/engines/github.py
new file mode 100644
index 0000000..eaa00da
--- /dev/null
+++ b/searx/engines/github.py
@@ -0,0 +1,60 @@
+"""
+ Github (It)
+
+ @website https://github.com/
+ @provide-api yes (https://developer.github.com/v3/)
+
+ @using-api yes
+ @results JSON
+ @stable yes (using api)
+ @parse url, title, content
+"""
+
+from json import loads
+from searx.url_utils import urlencode
+
+# engine dependent config
+categories = ['it']
+
+# search-url
+search_url = 'https://api.github.com/search/repositories?sort=stars&order=desc&{query}' # noqa
+
+accept_header = 'application/vnd.github.preview.text-match+json'
+
+
+# do search-request
+def request(query, params):
+ params['url'] = search_url.format(query=urlencode({'q': query}))
+
+ params['headers']['Accept'] = accept_header
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ search_res = loads(resp.text)
+
+ # check if items are recieved
+ if 'items' not in search_res:
+ return []
+
+ # parse results
+ for res in search_res['items']:
+ title = res['name']
+ url = res['html_url']
+
+ if res['description']:
+ content = res['description'][:500]
+ else:
+ content = ''
+
+ # append result
+ results.append({'url': url,
+ 'title': title,
+ 'content': content})
+
+ # return results
+ return results
diff --git a/searx/engines/google.py b/searx/engines/google.py
new file mode 100644
index 0000000..62e7d11
--- /dev/null
+++ b/searx/engines/google.py
@@ -0,0 +1,390 @@
+# Google (Web)
+#
+# @website https://www.google.com
+# @provide-api yes (https://developers.google.com/custom-search/)
+#
+# @using-api no
+# @results HTML
+# @stable no (HTML can change)
+# @parse url, title, content, suggestion
+
+import re
+from flask_babel import gettext
+from lxml import html, etree
+from searx.engines.xpath import extract_text, extract_url
+from searx import logger
+from searx.url_utils import urlencode, urlparse, parse_qsl
+from searx.utils import match_language
+
+logger = logger.getChild('google engine')
+
+
+# engine dependent config
+categories = ['general']
+paging = True
+language_support = True
+use_locale_domain = True
+time_range_support = True
+
+# based on https://en.wikipedia.org/wiki/List_of_Google_domains and tests
+default_hostname = 'www.google.com'
+
+country_to_hostname = {
+ 'BG': 'www.google.bg', # Bulgaria
+ 'CZ': 'www.google.cz', # Czech Republic
+ 'DE': 'www.google.de', # Germany
+ 'DK': 'www.google.dk', # Denmark
+ 'AT': 'www.google.at', # Austria
+ 'CH': 'www.google.ch', # Switzerland
+ 'GR': 'www.google.gr', # Greece
+ 'AU': 'www.google.com.au', # Australia
+ 'CA': 'www.google.ca', # Canada
+ 'GB': 'www.google.co.uk', # United Kingdom
+ 'ID': 'www.google.co.id', # Indonesia
+ 'IE': 'www.google.ie', # Ireland
+ 'IN': 'www.google.co.in', # India
+ 'MY': 'www.google.com.my', # Malaysia
+ 'NZ': 'www.google.co.nz', # New Zealand
+ 'PH': 'www.google.com.ph', # Philippines
+ 'SG': 'www.google.com.sg', # Singapore
+ # 'US': 'www.google.us', # United States, redirect to .com
+ 'ZA': 'www.google.co.za', # South Africa
+ 'AR': 'www.google.com.ar', # Argentina
+ 'CL': 'www.google.cl', # Chile
+ 'ES': 'www.google.es', # Spain
+ 'MX': 'www.google.com.mx', # Mexico
+ 'EE': 'www.google.ee', # Estonia
+ 'FI': 'www.google.fi', # Finland
+ 'BE': 'www.google.be', # Belgium
+ 'FR': 'www.google.fr', # France
+ 'IL': 'www.google.co.il', # Israel
+ 'HR': 'www.google.hr', # Croatia
+ 'HU': 'www.google.hu', # Hungary
+ 'IT': 'www.google.it', # Italy
+ 'JP': 'www.google.co.jp', # Japan
+ 'KR': 'www.google.co.kr', # South Korea
+ 'LT': 'www.google.lt', # Lithuania
+ 'LV': 'www.google.lv', # Latvia
+ 'NO': 'www.google.no', # Norway
+ 'NL': 'www.google.nl', # Netherlands
+ 'PL': 'www.google.pl', # Poland
+ 'BR': 'www.google.com.br', # Brazil
+ 'PT': 'www.google.pt', # Portugal
+ 'RO': 'www.google.ro', # Romania
+ 'RU': 'www.google.ru', # Russia
+ 'SK': 'www.google.sk', # Slovakia
+ 'SI': 'www.google.si', # Slovenia
+ 'SE': 'www.google.se', # Sweden
+ 'TH': 'www.google.co.th', # Thailand
+ 'TR': 'www.google.com.tr', # Turkey
+ 'UA': 'www.google.com.ua', # Ukraine
+ # 'CN': 'www.google.cn', # China, only from China ?
+ 'HK': 'www.google.com.hk', # Hong Kong
+ 'TW': 'www.google.com.tw' # Taiwan
+}
+
+# osm
+url_map = 'https://www.openstreetmap.org/'\
+ + '?lat={latitude}&lon={longitude}&zoom={zoom}&layers=M'
+
+# search-url
+search_path = '/search'
+search_url = ('https://{hostname}' +
+ search_path +
+ '?{query}&start={offset}&gws_rd=cr&gbv=1&lr={lang}&hl={lang_short}&ei=x')
+
+time_range_search = "&tbs=qdr:{range}"
+time_range_dict = {'day': 'd',
+ 'week': 'w',
+ 'month': 'm',
+ 'year': 'y'}
+
+# other URLs
+map_hostname_start = 'maps.google.'
+maps_path = '/maps'
+redirect_path = '/url'
+images_path = '/images'
+supported_languages_url = 'https://www.google.com/preferences?#languages'
+
+# specific xpath variables
+results_xpath = '//div[@class="g"]'
+url_xpath = './/h3/a/@href'
+title_xpath = './/h3'
+content_xpath = './/span[@class="st"]'
+content_misc_xpath = './/div[@class="f slp"]'
+suggestion_xpath = '//p[@class="_Bmc"]'
+spelling_suggestion_xpath = '//a[@class="spell"]'
+
+# map : detail location
+map_address_xpath = './/div[@class="s"]//table//td[2]/span/text()'
+map_phone_xpath = './/div[@class="s"]//table//td[2]/span/span'
+map_website_url_xpath = 'h3[2]/a/@href'
+map_website_title_xpath = 'h3[2]'
+
+# map : near the location
+map_near = 'table[@class="ts"]//tr'
+map_near_title = './/h4'
+map_near_url = './/h4/a/@href'
+map_near_phone = './/span[@class="nobr"]'
+
+# images
+images_xpath = './/div/a'
+image_url_xpath = './@href'
+image_img_src_xpath = './img/@src'
+
+# property names
+# FIXME : no translation
+property_address = "Address"
+property_phone = "Phone number"
+
+
+# remove google-specific tracking-url
+def parse_url(url_string, google_hostname):
+ # sanity check
+ if url_string is None:
+ return url_string
+
+ # normal case
+ parsed_url = urlparse(url_string)
+ if (parsed_url.netloc in [google_hostname, '']
+ and parsed_url.path == redirect_path):
+ query = dict(parse_qsl(parsed_url.query))
+ return query['q']
+ else:
+ return url_string
+
+
+# returns extract_text on the first result selected by the xpath or None
+def extract_text_from_dom(result, xpath):
+ r = result.xpath(xpath)
+ if len(r) > 0:
+ return extract_text(r[0])
+ return None
+
+
+# do search-request
+def request(query, params):
+ offset = (params['pageno'] - 1) * 10
+
+ language = match_language(params['language'], supported_languages)
+ language_array = language.split('-')
+ if params['language'].find('-') > 0:
+ country = params['language'].split('-')[1]
+ elif len(language_array) == 2:
+ country = language_array[1]
+ else:
+ country = 'US'
+
+ url_lang = 'lang_' + language
+
+ if use_locale_domain:
+ google_hostname = country_to_hostname.get(country.upper(), default_hostname)
+ else:
+ google_hostname = default_hostname
+
+ # original format: ID=3e2b6616cee08557:TM=5556667580:C=r:IP=4.1.12.5-:S=23ASdf0soFgF2d34dfgf-_22JJOmHdfgg
+ params['cookies']['GOOGLE_ABUSE_EXEMPTION'] = 'x'
+ params['url'] = search_url.format(offset=offset,
+ query=urlencode({'q': query}),
+ hostname=google_hostname,
+ lang=url_lang,
+ lang_short=language)
+ if params['time_range'] in time_range_dict:
+ params['url'] += time_range_search.format(range=time_range_dict[params['time_range']])
+
+ params['headers']['Accept-Language'] = language + ',' + language + '-' + country
+ params['headers']['Accept'] = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
+
+ params['google_hostname'] = google_hostname
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ # detect google sorry
+ resp_url = urlparse(resp.url)
+ if resp_url.netloc == 'sorry.google.com' or resp_url.path == '/sorry/IndexRedirect':
+ raise RuntimeWarning('sorry.google.com')
+
+ if resp_url.path.startswith('/sorry'):
+ raise RuntimeWarning(gettext('CAPTCHA required'))
+
+ # which hostname ?
+ google_hostname = resp.search_params.get('google_hostname')
+ google_url = "https://" + google_hostname
+
+ # convert the text to dom
+ dom = html.fromstring(resp.text)
+
+ instant_answer = dom.xpath('//div[@id="_vBb"]//text()')
+ if instant_answer:
+ results.append({'answer': u' '.join(instant_answer)})
+ try:
+ results_num = int(dom.xpath('//div[@id="resultStats"]//text()')[0]
+ .split()[1].replace(',', ''))
+ results.append({'number_of_results': results_num})
+ except:
+ pass
+
+ # parse results
+ for result in dom.xpath(results_xpath):
+ try:
+ title = extract_text(result.xpath(title_xpath)[0])
+ url = parse_url(extract_url(result.xpath(url_xpath), google_url), google_hostname)
+ parsed_url = urlparse(url, google_hostname)
+
+ # map result
+ if parsed_url.netloc == google_hostname:
+ # TODO fix inside links
+ continue
+ # if parsed_url.path.startswith(maps_path) or parsed_url.netloc.startswith(map_hostname_start):
+ # print "yooooo"*30
+ # x = result.xpath(map_near)
+ # if len(x) > 0:
+ # # map : near the location
+ # results = results + parse_map_near(parsed_url, x, google_hostname)
+ # else:
+ # # map : detail about a location
+ # results = results + parse_map_detail(parsed_url, result, google_hostname)
+ # # google news
+ # elif parsed_url.path == search_path:
+ # # skipping news results
+ # pass
+
+ # # images result
+ # elif parsed_url.path == images_path:
+ # # only thumbnail image provided,
+ # # so skipping image results
+ # # results = results + parse_images(result, google_hostname)
+ # pass
+
+ else:
+ # normal result
+ content = extract_text_from_dom(result, content_xpath)
+ if content is None:
+ continue
+ content_misc = extract_text_from_dom(result, content_misc_xpath)
+ if content_misc is not None:
+ content = content_misc + "<br />" + content
+ # append result
+ results.append({'url': url,
+ 'title': title,
+ 'content': content
+ })
+ except:
+ logger.debug('result parse error in:\n%s', etree.tostring(result, pretty_print=True))
+ continue
+
+ # parse suggestion
+ for suggestion in dom.xpath(suggestion_xpath):
+ # append suggestion
+ results.append({'suggestion': extract_text(suggestion)})
+
+ for correction in dom.xpath(spelling_suggestion_xpath):
+ results.append({'correction': extract_text(correction)})
+
+ # return results
+ return results
+
+
+def parse_images(result, google_hostname):
+ results = []
+ for image in result.xpath(images_xpath):
+ url = parse_url(extract_text(image.xpath(image_url_xpath)[0]), google_hostname)
+ img_src = extract_text(image.xpath(image_img_src_xpath)[0])
+
+ # append result
+ results.append({'url': url,
+ 'title': '',
+ 'content': '',
+ 'img_src': img_src,
+ 'template': 'images.html'
+ })
+
+ return results
+
+
+def parse_map_near(parsed_url, x, google_hostname):
+ results = []
+
+ for result in x:
+ title = extract_text_from_dom(result, map_near_title)
+ url = parse_url(extract_text_from_dom(result, map_near_url), google_hostname)
+ attributes = []
+ phone = extract_text_from_dom(result, map_near_phone)
+ add_attributes(attributes, property_phone, phone, 'tel:' + phone)
+ results.append({'title': title,
+ 'url': url,
+ 'content': attributes_to_html(attributes)
+ })
+
+ return results
+
+
+def parse_map_detail(parsed_url, result, google_hostname):
+ results = []
+
+ # try to parse the geoloc
+ m = re.search(r'@([0-9\.]+),([0-9\.]+),([0-9]+)', parsed_url.path)
+ if m is None:
+ m = re.search(r'll\=([0-9\.]+),([0-9\.]+)\&z\=([0-9]+)', parsed_url.query)
+
+ if m is not None:
+ # geoloc found (ignored)
+ lon = float(m.group(2)) # noqa
+ lat = float(m.group(1)) # noqa
+ zoom = int(m.group(3)) # noqa
+
+ # attributes
+ attributes = []
+ address = extract_text_from_dom(result, map_address_xpath)
+ phone = extract_text_from_dom(result, map_phone_xpath)
+ add_attributes(attributes, property_address, address, 'geo:' + str(lat) + ',' + str(lon))
+ add_attributes(attributes, property_phone, phone, 'tel:' + phone)
+
+ # title / content / url
+ website_title = extract_text_from_dom(result, map_website_title_xpath)
+ content = extract_text_from_dom(result, content_xpath)
+ website_url = parse_url(extract_text_from_dom(result, map_website_url_xpath), google_hostname)
+
+ # add a result if there is a website
+ if website_url is not None:
+ results.append({'title': website_title,
+ 'content': (content + '<br />' if content is not None else '')
+ + attributes_to_html(attributes),
+ 'url': website_url
+ })
+
+ return results
+
+
+def add_attributes(attributes, name, value, url):
+ if value is not None and len(value) > 0:
+ attributes.append({'label': name, 'value': value, 'url': url})
+
+
+def attributes_to_html(attributes):
+ retval = '<table class="table table-striped">'
+ for a in attributes:
+ value = a.get('value')
+ if 'url' in a:
+ value = '<a href="' + a.get('url') + '">' + value + '</a>'
+ retval = retval + '<tr><th>' + a.get('label') + '</th><td>' + value + '</td></tr>'
+ retval = retval + '</table>'
+ return retval
+
+
+# get supported languages from their site
+def _fetch_supported_languages(resp):
+ supported_languages = {}
+ dom = html.fromstring(resp.text)
+ options = dom.xpath('//table//td/font/label/span')
+ for option in options:
+ code = option.xpath('./@id')[0][1:]
+ name = option.text.title()
+ supported_languages[code] = {"name": name}
+
+ return supported_languages
diff --git a/searx/engines/google_images.py b/searx/engines/google_images.py
new file mode 100644
index 0000000..504831a
--- /dev/null
+++ b/searx/engines/google_images.py
@@ -0,0 +1,86 @@
+"""
+ Google (Images)
+
+ @website https://www.google.com
+ @provide-api yes (https://developers.google.com/custom-search/)
+
+ @using-api no
+ @results HTML chunks with JSON inside
+ @stable no
+ @parse url, title, img_src
+"""
+
+from datetime import date, timedelta
+from json import loads
+from lxml import html
+from searx.url_utils import urlencode, urlparse, parse_qs
+
+
+# engine dependent config
+categories = ['images']
+paging = True
+safesearch = True
+time_range_support = True
+number_of_results = 100
+
+search_url = 'https://www.google.com/search'\
+ '?{query}'\
+ '&tbm=isch'\
+ '&gbv=1'\
+ '&sa=G'\
+ '&{search_options}'
+time_range_attr = "qdr:{range}"
+time_range_custom_attr = "cdr:1,cd_min:{start},cd_max{end}"
+time_range_dict = {'day': 'd',
+ 'week': 'w',
+ 'month': 'm'}
+
+
+# do search-request
+def request(query, params):
+ search_options = {
+ 'ijn': params['pageno'] - 1,
+ 'start': (params['pageno'] - 1) * number_of_results
+ }
+
+ if params['time_range'] in time_range_dict:
+ search_options['tbs'] = time_range_attr.format(range=time_range_dict[params['time_range']])
+ elif params['time_range'] == 'year':
+ now = date.today()
+ then = now - timedelta(days=365)
+ start = then.strftime('%m/%d/%Y')
+ end = now.strftime('%m/%d/%Y')
+ search_options['tbs'] = time_range_custom_attr.format(start=start, end=end)
+
+ if safesearch and params['safesearch']:
+ search_options['safe'] = 'on'
+
+ params['url'] = search_url.format(query=urlencode({'q': query}),
+ search_options=urlencode(search_options))
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ # parse results
+ for img in dom.xpath('//a'):
+ r = {
+ 'title': u' '.join(img.xpath('.//div[class="rg_ilmbg"]//text()')),
+ 'content': '',
+ 'template': 'images.html',
+ }
+ url = urlparse(img.xpath('.//@href')[0])
+ query = parse_qs(url.query)
+ r['url'] = query['imgrefurl'][0]
+ r['img_src'] = query['imgurl'][0]
+ r['thumbnail_src'] = r['img_src']
+ # append result
+ results.append(r)
+
+ # return results
+ return results
diff --git a/searx/engines/google_news.py b/searx/engines/google_news.py
new file mode 100644
index 0000000..aadcb76
--- /dev/null
+++ b/searx/engines/google_news.py
@@ -0,0 +1,85 @@
+"""
+ Google (News)
+
+ @website https://news.google.com
+ @provide-api no
+
+ @using-api no
+ @results HTML
+ @stable no
+ @parse url, title, content, publishedDate
+"""
+
+from lxml import html
+from searx.engines.google import _fetch_supported_languages, supported_languages_url
+from searx.url_utils import urlencode
+from searx.utils import match_language
+
+# search-url
+categories = ['news']
+paging = True
+language_support = True
+safesearch = True
+time_range_support = True
+number_of_results = 10
+
+search_url = 'https://www.google.com/search'\
+ '?{query}'\
+ '&tbm=nws'\
+ '&gws_rd=cr'\
+ '&{search_options}'
+time_range_attr = "qdr:{range}"
+time_range_dict = {'day': 'd',
+ 'week': 'w',
+ 'month': 'm',
+ 'year': 'y'}
+
+
+# do search-request
+def request(query, params):
+
+ search_options = {
+ 'start': (params['pageno'] - 1) * number_of_results
+ }
+
+ if params['time_range'] in time_range_dict:
+ search_options['tbs'] = time_range_attr.format(range=time_range_dict[params['time_range']])
+
+ if safesearch and params['safesearch']:
+ search_options['safe'] = 'on'
+
+ params['url'] = search_url.format(query=urlencode({'q': query}),
+ search_options=urlencode(search_options))
+
+ language = match_language(params['language'], supported_languages).split('-')[0]
+ if language:
+ params['url'] += '&lr=lang_' + language
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ # parse results
+ for result in dom.xpath('//div[@class="g"]|//div[@class="g _cy"]'):
+ try:
+ r = {
+ 'url': result.xpath('.//a[@class="l lLrAF"]')[0].attrib.get("href"),
+ 'title': ''.join(result.xpath('.//a[@class="l lLrAF"]//text()')),
+ 'content': ''.join(result.xpath('.//div[@class="st"]//text()')),
+ }
+ except:
+ continue
+
+ imgs = result.xpath('.//img/@src')
+ if len(imgs) and not imgs[0].startswith('data'):
+ r['img_src'] = imgs[0]
+
+ results.append(r)
+
+ # return results
+ return results
diff --git a/searx/engines/google_videos.py b/searx/engines/google_videos.py
new file mode 100644
index 0000000..9a41b2d
--- /dev/null
+++ b/searx/engines/google_videos.py
@@ -0,0 +1,95 @@
+"""
+ Google (Videos)
+
+ @website https://www.google.com
+ @provide-api yes (https://developers.google.com/custom-search/)
+
+ @using-api no
+ @results HTML
+ @stable no
+ @parse url, title, content, thumbnail
+"""
+
+from datetime import date, timedelta
+from json import loads
+from lxml import html
+from searx.engines.xpath import extract_text
+from searx.url_utils import urlencode
+import re
+
+# engine dependent config
+categories = ['videos']
+paging = True
+safesearch = True
+time_range_support = True
+number_of_results = 10
+
+search_url = 'https://www.google.com/search'\
+ '?q={query}'\
+ '&tbm=vid'\
+ '&{search_options}'
+time_range_attr = "qdr:{range}"
+time_range_custom_attr = "cdr:1,cd_min:{start},cd_max{end}"
+time_range_dict = {'day': 'd',
+ 'week': 'w',
+ 'month': 'm'}
+
+
+# do search-request
+def request(query, params):
+ search_options = {
+ 'ijn': params['pageno'] - 1,
+ 'start': (params['pageno'] - 1) * number_of_results
+ }
+
+ if params['time_range'] in time_range_dict:
+ search_options['tbs'] = time_range_attr.format(range=time_range_dict[params['time_range']])
+ elif params['time_range'] == 'year':
+ now = date.today()
+ then = now - timedelta(days=365)
+ start = then.strftime('%m/%d/%Y')
+ end = now.strftime('%m/%d/%Y')
+ search_options['tbs'] = time_range_custom_attr.format(start=start, end=end)
+
+ if safesearch and params['safesearch']:
+ search_options['safe'] = 'on'
+
+ params['url'] = search_url.format(query=urlencode({'q': query}),
+ search_options=urlencode(search_options))
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ # parse results
+ for result in dom.xpath('//div[@class="g"]'):
+
+ title = extract_text(result.xpath('.//h3'))
+ url = result.xpath('.//div[@class="r"]/a/@href')[0]
+ content = extract_text(result.xpath('.//span[@class="st"]'))
+
+ # get thumbnails
+ script = str(dom.xpath('//script[contains(., "_setImagesSrc")]')[0].text)
+ id = result.xpath('.//div[@class="s"]//img/@id')[0]
+ thumbnails_data = re.findall('s=\'(.*?)(?:\\\\[a-z,1-9,\\\\]+\'|\')\;var ii=\[(?:|[\'vidthumb\d+\',]+)\'' + id,
+ script)
+ tmp = []
+ if len(thumbnails_data) != 0:
+ tmp = re.findall('(data:image/jpeg;base64,[a-z,A-Z,0-9,/,\+]+)', thumbnails_data[0])
+ thumbnail = ''
+ if len(tmp) != 0:
+ thumbnail = tmp[-1]
+
+ # append result
+ results.append({'url': url,
+ 'title': title,
+ 'content': content,
+ 'thumbnail': thumbnail,
+ 'template': 'videos.html'})
+
+ return results
diff --git a/searx/engines/ina.py b/searx/engines/ina.py
new file mode 100644
index 0000000..37a05f0
--- /dev/null
+++ b/searx/engines/ina.py
@@ -0,0 +1,87 @@
+# INA (Videos)
+#
+# @website https://www.ina.fr/
+# @provide-api no
+#
+# @using-api no
+# @results HTML (using search portal)
+# @stable no (HTML can change)
+# @parse url, title, content, publishedDate, thumbnail
+#
+# @todo set content-parameter with correct data
+# @todo embedded (needs some md5 from video page)
+
+from json import loads
+from lxml import html
+from dateutil import parser
+from searx.engines.xpath import extract_text
+from searx.url_utils import urlencode
+
+try:
+ from HTMLParser import HTMLParser
+except:
+ from html.parser import HTMLParser
+
+# engine dependent config
+categories = ['videos']
+paging = True
+page_size = 48
+
+# search-url
+base_url = 'https://www.ina.fr'
+search_url = base_url + '/layout/set/ajax/recherche/result?autopromote=&hf={ps}&b={start}&type=Video&r=&{query}'
+
+# specific xpath variables
+results_xpath = '//div[contains(@class,"search-results--list")]/div[@class="media"]'
+url_xpath = './/a/@href'
+title_xpath = './/h3[@class="h3--title media-heading"]'
+thumbnail_xpath = './/img/@src'
+publishedDate_xpath = './/span[@class="broadcast"]'
+content_xpath = './/p[@class="media-body__summary"]'
+
+
+# do search-request
+def request(query, params):
+ params['url'] = search_url.format(ps=page_size,
+ start=params['pageno'] * page_size,
+ query=urlencode({'q': query}))
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ # we get html in a JSON container...
+ response = loads(resp.text)
+ if "content" not in response:
+ return []
+ dom = html.fromstring(response["content"])
+ p = HTMLParser()
+
+ # parse results
+ for result in dom.xpath(results_xpath):
+ videoid = result.xpath(url_xpath)[0]
+ url = base_url + videoid
+ title = p.unescape(extract_text(result.xpath(title_xpath)))
+ thumbnail = extract_text(result.xpath(thumbnail_xpath)[0])
+ if thumbnail[0] == '/':
+ thumbnail = base_url + thumbnail
+ d = extract_text(result.xpath(publishedDate_xpath)[0])
+ d = d.split('/')
+ # force ISO date to avoid wrong parsing
+ d = "%s-%s-%s" % (d[2], d[1], d[0])
+ publishedDate = parser.parse(d)
+ content = extract_text(result.xpath(content_xpath))
+
+ # append result
+ results.append({'url': url,
+ 'title': title,
+ 'content': content,
+ 'template': 'videos.html',
+ 'publishedDate': publishedDate,
+ 'thumbnail': thumbnail})
+
+ # return results
+ return results
diff --git a/searx/engines/json_engine.py b/searx/engines/json_engine.py
new file mode 100644
index 0000000..785b0c4
--- /dev/null
+++ b/searx/engines/json_engine.py
@@ -0,0 +1,136 @@
+from collections import Iterable
+from json import loads
+from sys import version_info
+from searx.url_utils import urlencode
+from searx.utils import to_string
+
+if version_info[0] == 3:
+ unicode = str
+
+search_url = None
+url_query = None
+content_query = None
+title_query = None
+paging = False
+suggestion_query = ''
+results_query = ''
+
+# parameters for engines with paging support
+#
+# number of results on each page
+# (only needed if the site requires not a page number, but an offset)
+page_size = 1
+# number of the first page (usually 0 or 1)
+first_page_num = 1
+
+
+def iterate(iterable):
+ if type(iterable) == dict:
+ it = iterable.items()
+
+ else:
+ it = enumerate(iterable)
+ for index, value in it:
+ yield str(index), value
+
+
+def is_iterable(obj):
+ if type(obj) == str:
+ return False
+ if type(obj) == unicode:
+ return False
+ return isinstance(obj, Iterable)
+
+
+def parse(query):
+ q = []
+ for part in query.split('/'):
+ if part == '':
+ continue
+ else:
+ q.append(part)
+ return q
+
+
+def do_query(data, q):
+ ret = []
+ if not q:
+ return ret
+
+ qkey = q[0]
+
+ for key, value in iterate(data):
+
+ if len(q) == 1:
+ if key == qkey:
+ ret.append(value)
+ elif is_iterable(value):
+ ret.extend(do_query(value, q))
+ else:
+ if not is_iterable(value):
+ continue
+ if key == qkey:
+ ret.extend(do_query(value, q[1:]))
+ else:
+ ret.extend(do_query(value, q))
+ return ret
+
+
+def query(data, query_string):
+ q = parse(query_string)
+
+ return do_query(data, q)
+
+
+def request(query, params):
+ query = urlencode({'q': query})[2:]
+
+ fp = {'query': query}
+ if paging and search_url.find('{pageno}') >= 0:
+ fp['pageno'] = (params['pageno'] - 1) * page_size + first_page_num
+
+ params['url'] = search_url.format(**fp)
+ params['query'] = query
+
+ return params
+
+
+def response(resp):
+ results = []
+ json = loads(resp.text)
+ if results_query:
+ rs = query(json, results_query)
+ if not len(rs):
+ return results
+ for result in rs[0]:
+ try:
+ url = query(result, url_query)[0]
+ title = query(result, title_query)[0]
+ except:
+ continue
+ try:
+ content = query(result, content_query)[0]
+ except:
+ content = ""
+ results.append({
+ 'url': to_string(url),
+ 'title': to_string(title),
+ 'content': to_string(content),
+ })
+ else:
+ for url, title, content in zip(
+ query(json, url_query),
+ query(json, title_query),
+ query(json, content_query)
+ ):
+ results.append({
+ 'url': to_string(url),
+ 'title': to_string(title),
+ 'content': to_string(content),
+ })
+
+ if not suggestion_query:
+ return results
+ for suggestion in query(json, suggestion_query):
+ results.append({'suggestion': suggestion})
+ return results
diff --git a/searx/engines/kickass.py b/searx/engines/kickass.py
new file mode 100644
index 0000000..5e897c9
--- /dev/null
+++ b/searx/engines/kickass.py
@@ -0,0 +1,92 @@
+"""
+ Kickass Torrent (Videos, Music, Files)
+
+ @website https://kickass.so
+ @provide-api no (nothing found)
+
+ @using-api no
+ @results HTML (using search portal)
+ @stable yes (HTML can change)
+ @parse url, title, content, seed, leech, magnetlink
+"""
+
+from lxml import html
+from operator import itemgetter
+from searx.engines.xpath import extract_text
+from searx.utils import get_torrent_size, convert_str_to_int
+from searx.url_utils import quote, urljoin
+
+# engine dependent config
+categories = ['videos', 'music', 'files']
+paging = True
+
+# search-url
+url = 'https://kickass.cd/'
+search_url = url + 'search/{search_term}/{pageno}/'
+
+# specific xpath variables
+magnet_xpath = './/a[@title="Torrent magnet link"]'
+torrent_xpath = './/a[@title="Download torrent file"]'
+content_xpath = './/span[@class="font11px lightgrey block"]'
+
+
+# do search-request
+def request(query, params):
+ params['url'] = search_url.format(search_term=quote(query),
+ pageno=params['pageno'])
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ search_res = dom.xpath('//table[@class="data"]//tr')
+
+ # return empty array if nothing is found
+ if not search_res:
+ return []
+
+ # parse results
+ for result in search_res[1:]:
+ link = result.xpath('.//a[@class="cellMainLink"]')[0]
+ href = urljoin(url, link.attrib['href'])
+ title = extract_text(link)
+ content = extract_text(result.xpath(content_xpath))
+ seed = extract_text(result.xpath('.//td[contains(@class, "green")]'))
+ leech = extract_text(result.xpath('.//td[contains(@class, "red")]'))
+ filesize_info = extract_text(result.xpath('.//td[contains(@class, "nobr")]'))
+ files = extract_text(result.xpath('.//td[contains(@class, "center")][2]'))
+
+ seed = convert_str_to_int(seed)
+ leech = convert_str_to_int(leech)
+
+ filesize, filesize_multiplier = filesize_info.split()
+ filesize = get_torrent_size(filesize, filesize_multiplier)
+ if files.isdigit():
+ files = int(files)
+ else:
+ files = None
+
+ magnetlink = result.xpath(magnet_xpath)[0].attrib['href']
+
+ torrentfile = result.xpath(torrent_xpath)[0].attrib['href']
+ torrentfileurl = quote(torrentfile, safe="%/:=&?~#+!$,;'@()*")
+
+ # append result
+ results.append({'url': href,
+ 'title': title,
+ 'content': content,
+ 'seed': seed,
+ 'leech': leech,
+ 'filesize': filesize,
+ 'files': files,
+ 'magnetlink': magnetlink,
+ 'torrentfile': torrentfileurl,
+ 'template': 'torrent.html'})
+
+ # return results sorted by seeder
+ return sorted(results, key=itemgetter('seed'), reverse=True)
diff --git a/searx/engines/mediawiki.py b/searx/engines/mediawiki.py
new file mode 100644
index 0000000..c7b05ff
--- /dev/null
+++ b/searx/engines/mediawiki.py
@@ -0,0 +1,87 @@
+"""
+ general mediawiki-engine (Web)
+
+ @website websites built on mediawiki (https://www.mediawiki.org)
+ @provide-api yes (http://www.mediawiki.org/wiki/API:Search)
+
+ @using-api yes
+ @results JSON
+ @stable yes
+ @parse url, title
+
+ @todo content
+"""
+
+from json import loads
+from string import Formatter
+from searx.url_utils import urlencode, quote
+
+# engine dependent config
+categories = ['general']
+language_support = True
+paging = True
+number_of_results = 1
+search_type = 'nearmatch' # possible values: title, text, nearmatch
+
+# search-url
+base_url = 'https://{language}.wikipedia.org/'
+search_postfix = 'w/api.php?action=query'\
+ '&list=search'\
+ '&{query}'\
+ '&format=json'\
+ '&sroffset={offset}'\
+ '&srlimit={limit}'\
+ '&srwhat={searchtype}'
+
+
+# do search-request
+def request(query, params):
+ offset = (params['pageno'] - 1) * number_of_results
+
+ string_args = dict(query=urlencode({'srsearch': query}),
+ offset=offset,
+ limit=number_of_results,
+ searchtype=search_type)
+
+ format_strings = list(Formatter().parse(base_url))
+
+ language = params['language'].split('-')[0]
+
+ # format_string [('https://', 'language', '', None), ('.wikipedia.org/', None, None, None)]
+ if any(x[1] == 'language' for x in format_strings):
+ string_args['language'] = language
+
+ # write search-language back to params, required in response
+ params['language'] = language
+
+ search_url = base_url + search_postfix
+
+ params['url'] = search_url.format(**string_args)
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ search_results = loads(resp.text)
+
+ # return empty array if there are no results
+ if not search_results.get('query', {}).get('search'):
+ return []
+
+ # parse results
+ for result in search_results['query']['search']:
+ if result.get('snippet', '').startswith('#REDIRECT'):
+ continue
+ url = base_url.format(language=resp.search_params['language']) +\
+ 'wiki/' + quote(result['title'].replace(' ', '_').encode('utf-8'))
+
+ # append result
+ results.append({'url': url,
+ 'title': result['title'],
+ 'content': ''})
+
+ # return results
+ return results
diff --git a/searx/engines/microsoft_academic.py b/searx/engines/microsoft_academic.py
new file mode 100644
index 0000000..9387b08
--- /dev/null
+++ b/searx/engines/microsoft_academic.py
@@ -0,0 +1,75 @@
+"""
+Microsoft Academic (Science)
+
+@website https://academic.microsoft.com
+@provide-api yes
+@using-api no
+@results JSON
+@stable no
+@parse url, title, content
+"""
+
+from datetime import datetime
+from json import loads
+from uuid import uuid4
+
+from searx.url_utils import urlencode
+from searx.utils import html_to_text
+
+categories = ['images']
+paging = True
+result_url = 'https://academic.microsoft.com/api/search/GetEntityResults?{query}'
+
+
+def request(query, params):
+ correlation_id = uuid4()
+ msacademic = uuid4()
+ time_now = datetime.now()
+
+ params['url'] = result_url.format(query=urlencode({'correlationId': correlation_id}))
+ params['cookies']['msacademic'] = str(msacademic)
+ params['cookies']['ai_user'] = 'vhd0H|{now}'.format(now=str(time_now))
+ params['method'] = 'POST'
+ params['data'] = {
+ 'Query': '@{query}@'.format(query=query),
+ 'Limit': 10,
+ 'Offset': params['pageno'] - 1,
+ 'Filters': '',
+ 'OrderBy': '',
+ 'SortAscending': False,
+ }
+
+ return params
+
+
+def response(resp):
+ results = []
+ response_data = loads(resp.text)
+
+ for result in response_data['results']:
+ url = _get_url(result)
+ title = result['e']['dn']
+ content = _get_content(result)
+ results.append({
+ 'url': url,
+ 'title': html_to_text(title),
+ 'content': html_to_text(content),
+ })
+
+ return results
+
+
+def _get_url(result):
+ if 's' in result['e']:
+ return result['e']['s'][0]['u']
+ return 'https://academic.microsoft.com/#/detail/{pid}'.format(pid=result['id'])
+
+
+def _get_content(result):
+ if 'd' in result['e']:
+ content = result['e']['d']
+ if len(content) > 300:
+ return content[:300] + '...'
+ return content
+
+ return ''
diff --git a/searx/engines/mixcloud.py b/searx/engines/mixcloud.py
new file mode 100644
index 0000000..470c007
--- /dev/null
+++ b/searx/engines/mixcloud.py
@@ -0,0 +1,61 @@
+"""
+ Mixcloud (Music)
+
+ @website https://http://www.mixcloud.com/
+ @provide-api yes (http://www.mixcloud.com/developers/
+
+ @using-api yes
+ @results JSON
+ @stable yes
+ @parse url, title, content, embedded, publishedDate
+"""
+
+from json import loads
+from dateutil import parser
+from searx.url_utils import urlencode
+
+# engine dependent config
+categories = ['music']
+paging = True
+
+# search-url
+url = 'https://api.mixcloud.com/'
+search_url = url + 'search/?{query}&type=cloudcast&limit=10&offset={offset}'
+
+embedded_url = '<iframe scrolling="no" frameborder="0" allowTransparency="true" ' +\
+ 'data-src="https://www.mixcloud.com/widget/iframe/?feed={url}" width="300" height="300"></iframe>'
+
+
+# do search-request
+def request(query, params):
+ offset = (params['pageno'] - 1) * 10
+
+ params['url'] = search_url.format(query=urlencode({'q': query}),
+ offset=offset)
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ search_res = loads(resp.text)
+
+ # parse results
+ for result in search_res.get('data', []):
+ title = result['name']
+ url = result['url']
+ content = result['user']['name']
+ embedded = embedded_url.format(url=url)
+ publishedDate = parser.parse(result['created_time'])
+
+ # append result
+ results.append({'url': url,
+ 'title': title,
+ 'embedded': embedded,
+ 'publishedDate': publishedDate,
+ 'content': content})
+
+ # return results
+ return results
diff --git a/searx/engines/nyaa.py b/searx/engines/nyaa.py
new file mode 100644
index 0000000..c57979a
--- /dev/null
+++ b/searx/engines/nyaa.py
@@ -0,0 +1,108 @@
+"""
+ Nyaa.si (Anime Bittorrent tracker)
+
+ @website https://nyaa.si/
+ @provide-api no
+ @using-api no
+ @results HTML
+ @stable no (HTML can change)
+ @parse url, title, content, seed, leech, torrentfile
+"""
+
+from lxml import html
+from searx.engines.xpath import extract_text
+from searx.url_utils import urlencode
+from searx.utils import get_torrent_size, int_or_zero
+
+# engine dependent config
+categories = ['files', 'images', 'videos', 'music']
+paging = True
+
+# search-url
+base_url = 'https://nyaa.si/'
+search_url = base_url + '?page=search&{query}&offset={offset}'
+
+# xpath queries
+xpath_results = '//table[contains(@class, "torrent-list")]//tr[not(th)]'
+xpath_category = './/td[1]/a[1]'
+xpath_title = './/td[2]/a[last()]'
+xpath_torrent_links = './/td[3]/a'
+xpath_filesize = './/td[4]/text()'
+xpath_seeds = './/td[6]/text()'
+xpath_leeches = './/td[7]/text()'
+xpath_downloads = './/td[8]/text()'
+
+
+# do search-request
+def request(query, params):
+ query = urlencode({'term': query})
+ params['url'] = search_url.format(query=query, offset=params['pageno'])
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ for result in dom.xpath(xpath_results):
+ # defaults
+ filesize = 0
+ magnet_link = ""
+ torrent_link = ""
+
+ # category in which our torrent belongs
+ try:
+ category = result.xpath(xpath_category)[0].attrib.get('title')
+ except:
+ pass
+
+ # torrent title
+ page_a = result.xpath(xpath_title)[0]
+ title = extract_text(page_a)
+
+ # link to the page
+ href = base_url + page_a.attrib.get('href')
+
+ for link in result.xpath(xpath_torrent_links):
+ url = link.attrib.get('href')
+ if 'magnet' in url:
+ # link to the magnet
+ magnet_link = url
+ else:
+ # link to the torrent file
+ torrent_link = url
+
+ # seed count
+ seed = int_or_zero(result.xpath(xpath_seeds))
+
+ # leech count
+ leech = int_or_zero(result.xpath(xpath_leeches))
+
+ # torrent downloads count
+ downloads = int_or_zero(result.xpath(xpath_downloads))
+
+ # let's try to calculate the torrent size
+ try:
+ filesize_info = result.xpath(xpath_filesize)[0]
+ filesize, filesize_multiplier = filesize_info.split()
+ filesize = get_torrent_size(filesize, filesize_multiplier)
+ except:
+ pass
+
+ # content string contains all information not included into template
+ content = 'Category: "{category}". Downloaded {downloads} times.'
+ content = content.format(category=category, downloads=downloads)
+
+ results.append({'url': href,
+ 'title': title,
+ 'content': content,
+ 'seed': seed,
+ 'leech': leech,
+ 'filesize': filesize,
+ 'torrentfile': torrent_link,
+ 'magnetlink': magnet_link,
+ 'template': 'torrent.html'})
+
+ return results
diff --git a/searx/engines/openstreetmap.py b/searx/engines/openstreetmap.py
new file mode 100644
index 0000000..733ba62
--- /dev/null
+++ b/searx/engines/openstreetmap.py
@@ -0,0 +1,95 @@
+"""
+ OpenStreetMap (Map)
+
+ @website https://openstreetmap.org/
+ @provide-api yes (http://wiki.openstreetmap.org/wiki/Nominatim)
+
+ @using-api yes
+ @results JSON
+ @stable yes
+ @parse url, title
+"""
+
+from json import loads
+
+# engine dependent config
+categories = ['map']
+paging = False
+
+# search-url
+base_url = 'https://nominatim.openstreetmap.org/'
+search_string = 'search/{query}?format=json&polygon_geojson=1&addressdetails=1'
+result_base_url = 'https://openstreetmap.org/{osm_type}/{osm_id}'
+
+
+# do search-request
+def request(query, params):
+ params['url'] = base_url + search_string.format(query=query)
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+ json = loads(resp.text)
+
+ # parse results
+ for r in json:
+ if 'display_name' not in r:
+ continue
+
+ title = r['display_name'] or u''
+ osm_type = r.get('osm_type', r.get('type'))
+ url = result_base_url.format(osm_type=osm_type,
+ osm_id=r['osm_id'])
+
+ osm = {'type': osm_type,
+ 'id': r['osm_id']}
+
+ geojson = r.get('geojson')
+
+ # if no geojson is found and osm_type is a node, add geojson Point
+ if not geojson and osm_type == 'node':
+ geojson = {u'type': u'Point', u'coordinates': [r['lon'], r['lat']]}
+
+ address_raw = r.get('address')
+ address = {}
+
+ # get name
+ if r['class'] == 'amenity' or\
+ r['class'] == 'shop' or\
+ r['class'] == 'tourism' or\
+ r['class'] == 'leisure':
+ if address_raw.get('address29'):
+ address = {'name': address_raw.get('address29')}
+ else:
+ address = {'name': address_raw.get(r['type'])}
+
+ # add rest of adressdata, if something is already found
+ if address.get('name'):
+ address.update({'house_number': address_raw.get('house_number'),
+ 'road': address_raw.get('road'),
+ 'locality': address_raw.get('city',
+ address_raw.get('town', # noqa
+ address_raw.get('village'))), # noqa
+ 'postcode': address_raw.get('postcode'),
+ 'country': address_raw.get('country'),
+ 'country_code': address_raw.get('country_code')})
+ else:
+ address = None
+
+ # append result
+ results.append({'template': 'map.html',
+ 'title': title,
+ 'content': '',
+ 'longitude': r['lon'],
+ 'latitude': r['lat'],
+ 'boundingbox': r['boundingbox'],
+ 'geojson': geojson,
+ 'address': address,
+ 'osm': osm,
+ 'url': url})
+
+ # return results
+ return results
diff --git a/searx/engines/pdbe.py b/searx/engines/pdbe.py
new file mode 100644
index 0000000..2db9286
--- /dev/null
+++ b/searx/engines/pdbe.py
@@ -0,0 +1,112 @@
+"""
+ PDBe (Protein Data Bank in Europe)
+
+ @website https://www.ebi.ac.uk/pdbe
+ @provide-api yes (https://www.ebi.ac.uk/pdbe/api/doc/search.html),
+ unlimited
+ @using-api yes
+ @results python dictionary (from json)
+ @stable yes
+ @parse url, title, content, img_src
+"""
+
+from json import loads
+from flask_babel import gettext
+
+categories = ['science']
+
+hide_obsolete = False
+
+# status codes of unpublished entries
+pdb_unpublished_codes = ['HPUB', 'HOLD', 'PROC', 'WAIT', 'AUTH', 'AUCO', 'REPL', 'POLC', 'REFI', 'TRSF', 'WDRN']
+# url for api query
+pdbe_solr_url = 'https://www.ebi.ac.uk/pdbe/search/pdb/select?'
+# base url for results
+pdbe_entry_url = 'https://www.ebi.ac.uk/pdbe/entry/pdb/{pdb_id}'
+# link to preview image of structure
+pdbe_preview_url = 'https://www.ebi.ac.uk/pdbe/static/entry/{pdb_id}_deposited_chain_front_image-200x200.png'
+
+
+def request(query, params):
+
+ params['url'] = pdbe_solr_url
+ params['method'] = 'POST'
+ params['data'] = {
+ 'q': query,
+ 'wt': "json" # request response in parsable format
+ }
+ return params
+
+
+def construct_body(result):
+ # set title
+ title = result['title']
+
+ # construct content body
+ content = """{title} - {authors} {journal} ({volume}) {page} ({year})"""
+
+ # replace placeholders with actual content
+ try:
+ if result['journal']:
+ content = content.format(
+ title=result['citation_title'],
+ authors=result['entry_author_list'][0], journal=result['journal'], volume=result['journal_volume'],
+ page=result['journal_page'], year=result['citation_year'])
+ else:
+ content = content.format(
+ title=result['citation_title'],
+ authors=result['entry_author_list'][0], journal='', volume='', page='', year=result['release_year'])
+ img_src = pdbe_preview_url.format(pdb_id=result['pdb_id'])
+ except (KeyError):
+ content = None
+ img_src = None
+
+ # construct url for preview image
+ try:
+ img_src = pdbe_preview_url.format(pdb_id=result['pdb_id'])
+ except (KeyError):
+ img_src = None
+
+ return [title, content, img_src]
+
+
+def response(resp):
+
+ results = []
+ json = loads(resp.text)['response']['docs']
+
+ # parse results
+ for result in json:
+ # catch obsolete entries and mark them accordingly
+ if result['status'] in pdb_unpublished_codes:
+ continue
+ if hide_obsolete:
+ continue
+ if result['status'] == 'OBS':
+ # expand title to add some sort of warning message
+ title = gettext('{title} (OBSOLETE)').format(title=result['title'])
+ try:
+ superseded_url = pdbe_entry_url.format(pdb_id=result['superseded_by'])
+ except:
+ continue
+
+ # since we can't construct a proper body from the response, we'll make up our own
+ msg_superseded = gettext("This entry has been superseded by")
+ content = '{msg_superseded}: {url} ({pdb_id})'.format(
+ msg_superseded=msg_superseded,
+ url=superseded_url,
+ pdb_id=result['superseded_by'])
+
+ # obsoleted entries don't have preview images
+ img_src = None
+ else:
+ title, content, img_src = construct_body(result)
+
+ results.append({
+ 'url': pdbe_entry_url.format(pdb_id=result['pdb_id']),
+ 'title': title,
+ 'content': content,
+ 'img_src': img_src
+ })
+
+ return results
diff --git a/searx/engines/photon.py b/searx/engines/photon.py
new file mode 100644
index 0000000..2408419
--- /dev/null
+++ b/searx/engines/photon.py
@@ -0,0 +1,130 @@
+"""
+ Photon (Map)
+
+ @website https://photon.komoot.de
+ @provide-api yes (https://photon.komoot.de/)
+
+ @using-api yes
+ @results JSON
+ @stable yes
+ @parse url, title
+"""
+
+from json import loads
+from searx.utils import searx_useragent
+from searx.url_utils import urlencode
+
+# engine dependent config
+categories = ['map']
+paging = False
+language_support = True
+number_of_results = 10
+
+# search-url
+base_url = 'https://photon.komoot.de/'
+search_string = 'api/?{query}&limit={limit}'
+result_base_url = 'https://openstreetmap.org/{osm_type}/{osm_id}'
+
+# list of supported languages
+supported_languages = ['de', 'en', 'fr', 'it']
+
+
+# do search-request
+def request(query, params):
+ params['url'] = base_url +\
+ search_string.format(query=urlencode({'q': query}),
+ limit=number_of_results)
+
+ language = params['language'].split('-')[0]
+ if language in supported_languages:
+ params['url'] = params['url'] + "&lang=" + language
+
+ # using searx User-Agent
+ params['headers']['User-Agent'] = searx_useragent()
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+ json = loads(resp.text)
+
+ # parse results
+ for r in json.get('features', {}):
+
+ properties = r.get('properties')
+
+ if not properties:
+ continue
+
+ # get title
+ title = properties.get('name')
+
+ # get osm-type
+ if properties.get('osm_type') == 'N':
+ osm_type = 'node'
+ elif properties.get('osm_type') == 'W':
+ osm_type = 'way'
+ elif properties.get('osm_type') == 'R':
+ osm_type = 'relation'
+ else:
+ # continue if invalide osm-type
+ continue
+
+ url = result_base_url.format(osm_type=osm_type,
+ osm_id=properties.get('osm_id'))
+
+ osm = {'type': osm_type,
+ 'id': properties.get('osm_id')}
+
+ geojson = r.get('geometry')
+
+ if properties.get('extent'):
+ boundingbox = [properties.get('extent')[3],
+ properties.get('extent')[1],
+ properties.get('extent')[0],
+ properties.get('extent')[2]]
+ else:
+ # TODO: better boundingbox calculation
+ boundingbox = [geojson['coordinates'][1],
+ geojson['coordinates'][1],
+ geojson['coordinates'][0],
+ geojson['coordinates'][0]]
+
+ # address calculation
+ address = {}
+
+ # get name
+ if properties.get('osm_key') == 'amenity' or\
+ properties.get('osm_key') == 'shop' or\
+ properties.get('osm_key') == 'tourism' or\
+ properties.get('osm_key') == 'leisure':
+ address = {'name': properties.get('name')}
+
+ # add rest of adressdata, if something is already found
+ if address.get('name'):
+ address.update({'house_number': properties.get('housenumber'),
+ 'road': properties.get('street'),
+ 'locality': properties.get('city',
+ properties.get('town', # noqa
+ properties.get('village'))), # noqa
+ 'postcode': properties.get('postcode'),
+ 'country': properties.get('country')})
+ else:
+ address = None
+
+ # append result
+ results.append({'template': 'map.html',
+ 'title': title,
+ 'content': '',
+ 'longitude': geojson['coordinates'][0],
+ 'latitude': geojson['coordinates'][1],
+ 'boundingbox': boundingbox,
+ 'geojson': geojson,
+ 'address': address,
+ 'osm': osm,
+ 'url': url})
+
+ # return results
+ return results
diff --git a/searx/engines/piratebay.py b/searx/engines/piratebay.py
new file mode 100644
index 0000000..2f3f22a
--- /dev/null
+++ b/searx/engines/piratebay.py
@@ -0,0 +1,96 @@
+# Piratebay (Videos, Music, Files)
+#
+# @website https://thepiratebay.se
+# @provide-api no (nothing found)
+#
+# @using-api no
+# @results HTML (using search portal)
+# @stable yes (HTML can change)
+# @parse url, title, content, seed, leech, magnetlink
+
+from lxml import html
+from operator import itemgetter
+from searx.engines.xpath import extract_text
+from searx.url_utils import quote, urljoin
+
+# engine dependent config
+categories = ['videos', 'music', 'files']
+paging = True
+
+# search-url
+url = 'https://thepiratebay.org/'
+search_url = url + 'search/{search_term}/{pageno}/99/{search_type}'
+
+# piratebay specific type-definitions
+search_types = {'files': '0',
+ 'music': '100',
+ 'videos': '200'}
+
+# specific xpath variables
+magnet_xpath = './/a[@title="Download this torrent using magnet"]'
+torrent_xpath = './/a[@title="Download this torrent"]'
+content_xpath = './/font[@class="detDesc"]'
+
+
+# do search-request
+def request(query, params):
+ search_type = search_types.get(params['category'], '0')
+
+ params['url'] = search_url.format(search_term=quote(query),
+ search_type=search_type,
+ pageno=params['pageno'] - 1)
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ search_res = dom.xpath('//table[@id="searchResult"]//tr')
+
+ # return empty array if nothing is found
+ if not search_res:
+ return []
+
+ # parse results
+ for result in search_res[1:]:
+ link = result.xpath('.//div[@class="detName"]//a')[0]
+ href = urljoin(url, link.attrib.get('href'))
+ title = extract_text(link)
+ content = extract_text(result.xpath(content_xpath))
+ seed, leech = result.xpath('.//td[@align="right"]/text()')[:2]
+
+ # convert seed to int if possible
+ if seed.isdigit():
+ seed = int(seed)
+ else:
+ seed = 0
+
+ # convert leech to int if possible
+ if leech.isdigit():
+ leech = int(leech)
+ else:
+ leech = 0
+
+ magnetlink = result.xpath(magnet_xpath)[0]
+ torrentfile_links = result.xpath(torrent_xpath)
+ if torrentfile_links:
+ torrentfile_link = torrentfile_links[0].attrib.get('href')
+ else:
+ torrentfile_link = None
+
+ # append result
+ results.append({'url': href,
+ 'title': title,
+ 'content': content,
+ 'seed': seed,
+ 'leech': leech,
+ 'magnetlink': magnetlink.attrib.get('href'),
+ 'torrentfile': torrentfile_link,
+ 'template': 'torrent.html'})
+
+ # return results sorted by seeder
+ return sorted(results, key=itemgetter('seed'), reverse=True)
diff --git a/searx/engines/pubmed.py b/searx/engines/pubmed.py
new file mode 100644
index 0000000..055f092
--- /dev/null
+++ b/searx/engines/pubmed.py
@@ -0,0 +1,101 @@
+#!/usr/bin/env python
+
+"""
+ PubMed (Scholar publications)
+ @website https://www.ncbi.nlm.nih.gov/pubmed/
+ @provide-api yes (https://www.ncbi.nlm.nih.gov/home/develop/api/)
+ @using-api yes
+ @results XML
+ @stable yes
+ @parse url, title, publishedDate, content
+ More info on api: https://www.ncbi.nlm.nih.gov/books/NBK25501/
+"""
+
+from flask_babel import gettext
+from lxml import etree
+from datetime import datetime
+from searx.url_utils import urlencode
+from searx.poolrequests import get
+
+
+categories = ['science']
+
+base_url = 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi'\
+ + '?db=pubmed&{query}&retstart={offset}&retmax={hits}'
+
+# engine dependent config
+number_of_results = 10
+pubmed_url = 'https://www.ncbi.nlm.nih.gov/pubmed/'
+
+
+def request(query, params):
+ # basic search
+ offset = (params['pageno'] - 1) * number_of_results
+
+ string_args = dict(query=urlencode({'term': query}),
+ offset=offset,
+ hits=number_of_results)
+
+ params['url'] = base_url.format(**string_args)
+
+ return params
+
+
+def response(resp):
+ results = []
+
+ # First retrieve notice of each result
+ pubmed_retrieve_api_url = 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?'\
+ + 'db=pubmed&retmode=xml&id={pmids_string}'
+
+ pmids_results = etree.XML(resp.content)
+ pmids = pmids_results.xpath('//eSearchResult/IdList/Id')
+ pmids_string = ''
+
+ for item in pmids:
+ pmids_string += item.text + ','
+
+ retrieve_notice_args = dict(pmids_string=pmids_string)
+
+ retrieve_url_encoded = pubmed_retrieve_api_url.format(**retrieve_notice_args)
+
+ search_results_xml = get(retrieve_url_encoded).content
+ search_results = etree.XML(search_results_xml).xpath('//PubmedArticleSet/PubmedArticle/MedlineCitation')
+
+ for entry in search_results:
+ title = entry.xpath('.//Article/ArticleTitle')[0].text
+
+ pmid = entry.xpath('.//PMID')[0].text
+ url = pubmed_url + pmid
+
+ try:
+ content = entry.xpath('.//Abstract/AbstractText')[0].text
+ except:
+ content = gettext('No abstract is available for this publication.')
+
+ # If a doi is available, add it to the snipppet
+ try:
+ doi = entry.xpath('.//ELocationID[@EIdType="doi"]')[0].text
+ content = 'DOI: {doi} Abstract: {content}'.format(doi=doi, content=content)
+ except:
+ pass
+
+ if len(content) > 300:
+ content = content[0:300] + "..."
+ # TODO: center snippet on query term
+
+ res_dict = {'url': url,
+ 'title': title,
+ 'content': content}
+
+ try:
+ publishedDate = datetime.strptime(entry.xpath('.//DateCreated/Year')[0].text
+ + '-' + entry.xpath('.//DateCreated/Month')[0].text
+ + '-' + entry.xpath('.//DateCreated/Day')[0].text, '%Y-%m-%d')
+ res_dict['publishedDate'] = publishedDate
+ except:
+ pass
+
+ results.append(res_dict)
+
+ return results
diff --git a/searx/engines/qwant.py b/searx/engines/qwant.py
new file mode 100644
index 0000000..4b0f1c8
--- /dev/null
+++ b/searx/engines/qwant.py
@@ -0,0 +1,132 @@
+"""
+ Qwant (Web, Images, News, Social)
+
+ @website https://qwant.com/
+ @provide-api not officially (https://api.qwant.com/api/search/)
+
+ @using-api yes
+ @results JSON
+ @stable yes
+ @parse url, title, content
+"""
+
+from datetime import datetime
+from json import loads
+from searx.utils import html_to_text
+from searx.url_utils import urlencode
+from searx.utils import match_language
+
+# engine dependent config
+categories = None
+paging = True
+language_support = True
+supported_languages_url = 'https://qwant.com/region'
+
+category_to_keyword = {'general': 'web',
+ 'images': 'images',
+ 'news': 'news',
+ 'social media': 'social'}
+
+# search-url
+url = 'https://api.qwant.com/api/search/{keyword}?count=10&offset={offset}&f=&{query}&t={keyword}&uiv=4'
+
+
+# do search-request
+def request(query, params):
+ offset = (params['pageno'] - 1) * 10
+
+ if categories[0] and categories[0] in category_to_keyword:
+
+ params['url'] = url.format(keyword=category_to_keyword[categories[0]],
+ query=urlencode({'q': query}),
+ offset=offset)
+ else:
+ params['url'] = url.format(keyword='web',
+ query=urlencode({'q': query}),
+ offset=offset)
+
+ # add language tag
+ language = match_language(params['language'], supported_languages)
+ params['url'] += '&locale=' + language.replace('-', '_').lower()
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ search_results = loads(resp.text)
+
+ # return empty array if there are no results
+ if 'data' not in search_results:
+ return []
+
+ data = search_results.get('data', {})
+
+ res = data.get('result', {})
+
+ # parse results
+ for result in res.get('items', {}):
+
+ title = html_to_text(result['title'])
+ res_url = result['url']
+ content = html_to_text(result['desc'])
+
+ if category_to_keyword.get(categories[0], '') == 'web':
+ results.append({'title': title,
+ 'content': content,
+ 'url': res_url})
+
+ elif category_to_keyword.get(categories[0], '') == 'images':
+ thumbnail_src = result['thumbnail']
+ img_src = result['media']
+ results.append({'template': 'images.html',
+ 'url': res_url,
+ 'title': title,
+ 'content': '',
+ 'thumbnail_src': thumbnail_src,
+ 'img_src': img_src})
+
+ elif category_to_keyword.get(categories[0], '') == 'social':
+ published_date = datetime.fromtimestamp(result['date'], None)
+ img_src = result.get('img', None)
+ results.append({'url': res_url,
+ 'title': title,
+ 'publishedDate': published_date,
+ 'content': content,
+ 'img_src': img_src})
+
+ elif category_to_keyword.get(categories[0], '') == 'news':
+ published_date = datetime.fromtimestamp(result['date'], None)
+ media = result.get('media', [])
+ if len(media) > 0:
+ img_src = media[0].get('pict', {}).get('url', None)
+ else:
+ img_src = None
+ results.append({'url': res_url,
+ 'title': title,
+ 'publishedDate': published_date,
+ 'content': content,
+ 'img_src': img_src})
+
+ return results
+
+
+# get supported languages from their site
+def _fetch_supported_languages(resp):
+ # list of regions is embedded in page as a js object
+ response_text = resp.text
+ response_text = response_text[response_text.find('regionalisation'):]
+ response_text = response_text[response_text.find('{'):response_text.find(');')]
+
+ regions_json = loads(response_text)
+
+ supported_languages = []
+ for lang in regions_json['languages'].values():
+ if lang['code'] == 'nb':
+ lang['code'] = 'no'
+ for country in lang['countries']:
+ supported_languages.append(lang['code'] + '-' + country)
+
+ return supported_languages
diff --git a/searx/engines/reddit.py b/searx/engines/reddit.py
new file mode 100644
index 0000000..d197249
--- /dev/null
+++ b/searx/engines/reddit.py
@@ -0,0 +1,76 @@
+"""
+ Reddit
+
+ @website https://www.reddit.com/
+ @provide-api yes (https://www.reddit.com/dev/api)
+
+ @using-api yes
+ @results JSON
+ @stable yes
+ @parse url, title, content, thumbnail, publishedDate
+"""
+
+import json
+from datetime import datetime
+from searx.url_utils import urlencode, urljoin, urlparse
+
+# engine dependent config
+categories = ['general', 'images', 'news', 'social media']
+page_size = 25
+
+# search-url
+base_url = 'https://www.reddit.com/'
+search_url = base_url + 'search.json?{query}'
+
+
+# do search-request
+def request(query, params):
+ query = urlencode({'q': query, 'limit': page_size})
+ params['url'] = search_url.format(query=query)
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ img_results = []
+ text_results = []
+
+ search_results = json.loads(resp.text)
+
+ # return empty array if there are no results
+ if 'data' not in search_results:
+ return []
+
+ posts = search_results.get('data', {}).get('children', [])
+
+ # process results
+ for post in posts:
+ data = post['data']
+
+ # extract post information
+ params = {
+ 'url': urljoin(base_url, data['permalink']),
+ 'title': data['title']
+ }
+
+ # if thumbnail field contains a valid URL, we need to change template
+ thumbnail = data['thumbnail']
+ url_info = urlparse(thumbnail)
+ # netloc & path
+ if url_info[1] != '' and url_info[2] != '':
+ params['img_src'] = data['url']
+ params['thumbnail_src'] = thumbnail
+ params['template'] = 'images.html'
+ img_results.append(params)
+ else:
+ created = datetime.fromtimestamp(data['created_utc'])
+ content = data['selftext']
+ if len(content) > 500:
+ content = content[:500] + '...'
+ params['content'] = content
+ params['publishedDate'] = created
+ text_results.append(params)
+
+ # show images first and text results second
+ return img_results + text_results
diff --git a/searx/engines/scanr_structures.py b/searx/engines/scanr_structures.py
new file mode 100644
index 0000000..72fd2b3
--- /dev/null
+++ b/searx/engines/scanr_structures.py
@@ -0,0 +1,76 @@
+"""
+ ScanR Structures (Science)
+
+ @website https://scanr.enseignementsup-recherche.gouv.fr
+ @provide-api yes (https://scanr.enseignementsup-recherche.gouv.fr/api/swagger-ui.html)
+
+ @using-api yes
+ @results JSON
+ @stable yes
+ @parse url, title, content, img_src
+"""
+
+from json import loads, dumps
+from searx.utils import html_to_text
+
+# engine dependent config
+categories = ['science']
+paging = True
+page_size = 20
+
+# search-url
+url = 'https://scanr.enseignementsup-recherche.gouv.fr/'
+search_url = url + 'api/structures/search'
+
+
+# do search-request
+def request(query, params):
+
+ params['url'] = search_url
+ params['method'] = 'POST'
+ params['headers']['Content-type'] = "application/json"
+ params['data'] = dumps({"query": query,
+ "searchField": "ALL",
+ "sortDirection": "ASC",
+ "sortOrder": "RELEVANCY",
+ "page": params['pageno'],
+ "pageSize": page_size})
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ search_res = loads(resp.text)
+
+ # return empty array if there are no results
+ if search_res.get('total', 0) < 1:
+ return []
+
+ # parse results
+ for result in search_res['results']:
+ if 'id' not in result:
+ continue
+
+ # is it thumbnail or img_src??
+ thumbnail = None
+ if 'logo' in result:
+ thumbnail = result['logo']
+ if thumbnail[0] == '/':
+ thumbnail = url + thumbnail
+
+ content = None
+ if 'highlights' in result:
+ content = result['highlights'][0]['value']
+
+ # append result
+ results.append({'url': url + 'structure/' + result['id'],
+ 'title': result['label'],
+ # 'thumbnail': thumbnail,
+ 'img_src': thumbnail,
+ 'content': html_to_text(content)})
+
+ # return results
+ return results
diff --git a/searx/engines/searchcode_code.py b/searx/engines/searchcode_code.py
new file mode 100644
index 0000000..789e8e7
--- /dev/null
+++ b/searx/engines/searchcode_code.py
@@ -0,0 +1,69 @@
+"""
+ Searchcode (It)
+
+ @website https://searchcode.com/
+ @provide-api yes (https://searchcode.com/api/)
+
+ @using-api yes
+ @results JSON
+ @stable yes
+ @parse url, title, content
+"""
+
+from json import loads
+from searx.url_utils import urlencode
+
+
+# engine dependent config
+categories = ['it']
+paging = True
+
+# search-url
+url = 'https://searchcode.com/'
+search_url = url + 'api/codesearch_I/?{query}&p={pageno}'
+
+# special code-endings which are not recognised by the file ending
+code_endings = {'cs': 'c#',
+ 'h': 'c',
+ 'hpp': 'cpp',
+ 'cxx': 'cpp'}
+
+
+# do search-request
+def request(query, params):
+ params['url'] = search_url.format(query=urlencode({'q': query}), pageno=params['pageno'] - 1)
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ search_results = loads(resp.text)
+
+ # parse results
+ for result in search_results.get('results', []):
+ href = result['url']
+ title = "" + result['name'] + " - " + result['filename']
+ repo = result['repo']
+
+ lines = dict()
+ for line, code in result['lines'].items():
+ lines[int(line)] = code
+
+ code_language = code_endings.get(
+ result['filename'].split('.')[-1].lower(),
+ result['filename'].split('.')[-1].lower())
+
+ # append result
+ results.append({'url': href,
+ 'title': title,
+ 'content': '',
+ 'repository': repo,
+ 'codelines': sorted(lines.items()),
+ 'code_language': code_language,
+ 'template': 'code.html'})
+
+ # return results
+ return results
diff --git a/searx/engines/searchcode_doc.py b/searx/engines/searchcode_doc.py
new file mode 100644
index 0000000..4b8e9a8
--- /dev/null
+++ b/searx/engines/searchcode_doc.py
@@ -0,0 +1,49 @@
+"""
+ Searchcode (It)
+
+ @website https://searchcode.com/
+ @provide-api yes (https://searchcode.com/api/)
+
+ @using-api yes
+ @results JSON
+ @stable yes
+ @parse url, title, content
+"""
+
+from json import loads
+from searx.url_utils import urlencode
+
+# engine dependent config
+categories = ['it']
+paging = True
+
+# search-url
+url = 'https://searchcode.com/'
+search_url = url + 'api/search_IV/?{query}&p={pageno}'
+
+
+# do search-request
+def request(query, params):
+ params['url'] = search_url.format(query=urlencode({'q': query}), pageno=params['pageno'] - 1)
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ search_results = loads(resp.text)
+
+ # parse results
+ for result in search_results.get('results', []):
+ href = result['url']
+ title = "[{}] {} {}".format(result['type'], result['namespace'], result['name'])
+
+ # append result
+ results.append({'url': href,
+ 'title': title,
+ 'content': result['description']})
+
+ # return results
+ return results
diff --git a/searx/engines/searx_engine.py b/searx/engines/searx_engine.py
new file mode 100644
index 0000000..d4c85bd
--- /dev/null
+++ b/searx/engines/searx_engine.py
@@ -0,0 +1,57 @@
+"""
+ Searx (all)
+
+ @website https://github.com/asciimoo/searx
+ @provide-api yes (https://asciimoo.github.io/searx/dev/search_api.html)
+
+ @using-api yes
+ @results JSON
+ @stable yes (using api)
+ @parse url, title, content
+"""
+
+from json import loads
+from searx.engines import categories as searx_categories
+
+
+categories = searx_categories.keys()
+
+# search-url
+instance_urls = []
+instance_index = 0
+
+
+# do search-request
+def request(query, params):
+ global instance_index
+ params['url'] = instance_urls[instance_index % len(instance_urls)]
+ params['method'] = 'POST'
+
+ instance_index += 1
+
+ params['data'] = {
+ 'q': query,
+ 'pageno': params['pageno'],
+ 'language': params['language'],
+ 'time_range': params['time_range'],
+ 'category': params['category'],
+ 'format': 'json'
+ }
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+
+ response_json = loads(resp.text)
+ results = response_json['results']
+
+ for i in ('answers', 'infoboxes'):
+ results.extend(response_json[i])
+
+ results.extend({'suggestion': s} for s in response_json['suggestions'])
+
+ results.append({'number_of_results': response_json['number_of_results']})
+
+ return results
diff --git a/searx/engines/seedpeer.py b/searx/engines/seedpeer.py
new file mode 100644
index 0000000..3770dac
--- /dev/null
+++ b/searx/engines/seedpeer.py
@@ -0,0 +1,75 @@
+# Seedpeer (Videos, Music, Files)
+#
+# @website http://seedpeer.eu
+# @provide-api no (nothing found)
+#
+# @using-api no
+# @results HTML (using search portal)
+# @stable yes (HTML can change)
+# @parse url, title, content, seed, leech, magnetlink
+
+from lxml import html
+from operator import itemgetter
+from searx.url_utils import quote, urljoin
+
+
+url = 'http://www.seedpeer.eu/'
+search_url = url + 'search/{search_term}/7/{page_no}.html'
+# specific xpath variables
+torrent_xpath = '//*[@id="body"]/center/center/table[2]/tr/td/a'
+alternative_torrent_xpath = '//*[@id="body"]/center/center/table[1]/tr/td/a'
+title_xpath = '//*[@id="body"]/center/center/table[2]/tr/td/a/text()'
+alternative_title_xpath = '//*[@id="body"]/center/center/table/tr/td/a'
+seeds_xpath = '//*[@id="body"]/center/center/table[2]/tr/td[4]/font/text()'
+alternative_seeds_xpath = '//*[@id="body"]/center/center/table/tr/td[4]/font/text()'
+peers_xpath = '//*[@id="body"]/center/center/table[2]/tr/td[5]/font/text()'
+alternative_peers_xpath = '//*[@id="body"]/center/center/table/tr/td[5]/font/text()'
+age_xpath = '//*[@id="body"]/center/center/table[2]/tr/td[2]/text()'
+alternative_age_xpath = '//*[@id="body"]/center/center/table/tr/td[2]/text()'
+size_xpath = '//*[@id="body"]/center/center/table[2]/tr/td[3]/text()'
+alternative_size_xpath = '//*[@id="body"]/center/center/table/tr/td[3]/text()'
+
+
+# do search-request
+def request(query, params):
+ params['url'] = search_url.format(search_term=quote(query),
+ page_no=params['pageno'] - 1)
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+ dom = html.fromstring(resp.text)
+ torrent_links = dom.xpath(torrent_xpath)
+ if len(torrent_links) > 0:
+ seeds = dom.xpath(seeds_xpath)
+ peers = dom.xpath(peers_xpath)
+ titles = dom.xpath(title_xpath)
+ sizes = dom.xpath(size_xpath)
+ ages = dom.xpath(age_xpath)
+ else: # under ~5 results uses a different xpath
+ torrent_links = dom.xpath(alternative_torrent_xpath)
+ seeds = dom.xpath(alternative_seeds_xpath)
+ peers = dom.xpath(alternative_peers_xpath)
+ titles = dom.xpath(alternative_title_xpath)
+ sizes = dom.xpath(alternative_size_xpath)
+ ages = dom.xpath(alternative_age_xpath)
+ # return empty array if nothing is found
+ if not torrent_links:
+ return []
+
+ # parse results
+ for index, result in enumerate(torrent_links):
+ link = result.attrib.get('href')
+ href = urljoin(url, link)
+ results.append({'url': href,
+ 'title': titles[index].text_content(),
+ 'content': '{}, {}'.format(sizes[index], ages[index]),
+ 'seed': seeds[index],
+ 'leech': peers[index],
+
+ 'template': 'torrent.html'})
+
+ # return results sorted by seeder
+ return sorted(results, key=itemgetter('seed'), reverse=True)
diff --git a/searx/engines/soundcloud.py b/searx/engines/soundcloud.py
new file mode 100644
index 0000000..d59755e
--- /dev/null
+++ b/searx/engines/soundcloud.py
@@ -0,0 +1,107 @@
+"""
+ Soundcloud (Music)
+
+ @website https://soundcloud.com
+ @provide-api yes (https://developers.soundcloud.com/)
+
+ @using-api yes
+ @results JSON
+ @stable yes
+ @parse url, title, content, publishedDate, embedded
+"""
+
+import re
+from json import loads
+from lxml import html
+from dateutil import parser
+from searx import logger
+from searx.poolrequests import get as http_get
+from searx.url_utils import quote_plus, urlencode
+
+try:
+ from cStringIO import StringIO
+except:
+ from io import StringIO
+
+# engine dependent config
+categories = ['music']
+paging = True
+
+# search-url
+url = 'https://api.soundcloud.com/'
+search_url = url + 'search?{query}'\
+ '&facet=model'\
+ '&limit=20'\
+ '&offset={offset}'\
+ '&linked_partitioning=1'\
+ '&client_id={client_id}' # noqa
+
+embedded_url = '<iframe width="100%" height="166" ' +\
+ 'scrolling="no" frameborder="no" ' +\
+ 'data-src="https://w.soundcloud.com/player/?url={uri}"></iframe>'
+
+cid_re = re.compile(r'client_id:"([^"]*)"', re.I | re.U)
+guest_client_id = ''
+
+
+def get_client_id():
+ response = http_get("https://soundcloud.com")
+
+ if response.ok:
+ tree = html.fromstring(response.content)
+ script_tags = tree.xpath("//script[contains(@src, '/assets/app')]")
+ app_js_urls = [script_tag.get('src') for script_tag in script_tags if script_tag is not None]
+
+ # extracts valid app_js urls from soundcloud.com content
+ for app_js_url in app_js_urls:
+ # gets app_js and searches for the clientid
+ response = http_get(app_js_url)
+ if response.ok:
+ cids = cid_re.search(response.text)
+ if cids is not None and len(cids.groups()):
+ return cids.groups()[0]
+ logger.warning("Unable to fetch guest client_id from SoundCloud, check parser!")
+ return ""
+
+
+def init():
+ global guest_client_id
+ # api-key
+ guest_client_id = get_client_id()
+
+
+# do search-request
+def request(query, params):
+ offset = (params['pageno'] - 1) * 20
+
+ params['url'] = search_url.format(query=urlencode({'q': query}),
+ offset=offset,
+ client_id=guest_client_id)
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ search_res = loads(resp.text)
+
+ # parse results
+ for result in search_res.get('collection', []):
+ if result['kind'] in ('track', 'playlist'):
+ title = result['title']
+ content = result['description']
+ publishedDate = parser.parse(result['last_modified'])
+ uri = quote_plus(result['uri'])
+ embedded = embedded_url.format(uri=uri)
+
+ # append result
+ results.append({'url': result['permalink_url'],
+ 'title': title,
+ 'publishedDate': publishedDate,
+ 'embedded': embedded,
+ 'content': content})
+
+ # return results
+ return results
diff --git a/searx/engines/spotify.py b/searx/engines/spotify.py
new file mode 100644
index 0000000..aed756b
--- /dev/null
+++ b/searx/engines/spotify.py
@@ -0,0 +1,62 @@
+"""
+ Spotify (Music)
+
+ @website https://spotify.com
+ @provide-api yes (https://developer.spotify.com/web-api/search-item/)
+
+ @using-api yes
+ @results JSON
+ @stable yes
+ @parse url, title, content, embedded
+"""
+
+from json import loads
+from searx.url_utils import urlencode
+
+# engine dependent config
+categories = ['music']
+paging = True
+
+# search-url
+url = 'https://api.spotify.com/'
+search_url = url + 'v1/search?{query}&type=track&offset={offset}'
+
+embedded_url = '<iframe data-src="https://embed.spotify.com/?uri=spotify:track:{audioid}"\
+ width="300" height="80" frameborder="0" allowtransparency="true"></iframe>'
+
+
+# do search-request
+def request(query, params):
+ offset = (params['pageno'] - 1) * 20
+
+ params['url'] = search_url.format(query=urlencode({'q': query}), offset=offset)
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ search_res = loads(resp.text)
+
+ # parse results
+ for result in search_res.get('tracks', {}).get('items', {}):
+ if result['type'] == 'track':
+ title = result['name']
+ url = result['external_urls']['spotify']
+ content = u'{} - {} - {}'.format(
+ result['artists'][0]['name'],
+ result['album']['name'],
+ result['name'])
+
+ embedded = embedded_url.format(audioid=result['id'])
+
+ # append result
+ results.append({'url': url,
+ 'title': title,
+ 'embedded': embedded,
+ 'content': content})
+
+ # return results
+ return results
diff --git a/searx/engines/stackoverflow.py b/searx/engines/stackoverflow.py
new file mode 100644
index 0000000..25875aa
--- /dev/null
+++ b/searx/engines/stackoverflow.py
@@ -0,0 +1,57 @@
+"""
+ Stackoverflow (It)
+
+ @website https://stackoverflow.com/
+ @provide-api not clear (https://api.stackexchange.com/docs/advanced-search)
+
+ @using-api no
+ @results HTML
+ @stable no (HTML can change)
+ @parse url, title, content
+"""
+
+from lxml import html
+from searx.engines.xpath import extract_text
+from searx.url_utils import urlencode, urljoin
+
+# engine dependent config
+categories = ['it']
+paging = True
+
+# search-url
+url = 'https://stackoverflow.com/'
+search_url = url + 'search?{query}&page={pageno}'
+
+# specific xpath variables
+results_xpath = '//div[contains(@class,"question-summary")]'
+link_xpath = './/div[@class="result-link"]//a|.//div[@class="summary"]//h3//a'
+content_xpath = './/div[@class="excerpt"]'
+
+
+# do search-request
+def request(query, params):
+ params['url'] = search_url.format(query=urlencode({'q': query}), pageno=params['pageno'])
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ # parse results
+ for result in dom.xpath(results_xpath):
+ link = result.xpath(link_xpath)[0]
+ href = urljoin(url, link.attrib.get('href'))
+ title = extract_text(link)
+ content = extract_text(result.xpath(content_xpath))
+
+ # append result
+ results.append({'url': href,
+ 'title': title,
+ 'content': content})
+
+ # return results
+ return results
diff --git a/searx/engines/startpage.py b/searx/engines/startpage.py
new file mode 100644
index 0000000..55efdc8
--- /dev/null
+++ b/searx/engines/startpage.py
@@ -0,0 +1,119 @@
+# Startpage (Web)
+#
+# @website https://startpage.com
+# @provide-api no (nothing found)
+#
+# @using-api no
+# @results HTML
+# @stable no (HTML can change)
+# @parse url, title, content
+#
+# @todo paging
+
+from lxml import html
+from dateutil import parser
+from datetime import datetime, timedelta
+import re
+from searx.engines.xpath import extract_text
+
+# engine dependent config
+categories = ['general']
+# there is a mechanism to block "bot" search
+# (probably the parameter qid), require
+# storing of qid's between mulitble search-calls
+
+# paging = False
+language_support = True
+
+# search-url
+base_url = 'https://startpage.com/'
+search_url = base_url + 'do/search'
+
+# specific xpath variables
+# ads xpath //div[@id="results"]/div[@id="sponsored"]//div[@class="result"]
+# not ads: div[@class="result"] are the direct childs of div[@id="results"]
+results_xpath = '//li[contains(@class, "search-result") and contains(@class, "search-item")]'
+link_xpath = './/h3/a'
+content_xpath = './p[@class="search-item__body"]'
+
+
+# do search-request
+def request(query, params):
+ offset = (params['pageno'] - 1) * 10
+
+ params['url'] = search_url
+ params['method'] = 'POST'
+ params['data'] = {'query': query,
+ 'startat': offset}
+
+ # set language
+ params['data']['with_language'] = ('lang_' + params['language'].split('-')[0])
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ # parse results
+ for result in dom.xpath(results_xpath):
+ links = result.xpath(link_xpath)
+ if not links:
+ continue
+ link = links[0]
+ url = link.attrib.get('href')
+
+ # block google-ad url's
+ if re.match(r"^http(s|)://(www\.)?google\.[a-z]+/aclk.*$", url):
+ continue
+
+ # block startpage search url's
+ if re.match(r"^http(s|)://(www\.)?startpage\.com/do/search\?.*$", url):
+ continue
+
+ title = extract_text(link)
+
+ if result.xpath(content_xpath):
+ content = extract_text(result.xpath(content_xpath))
+ else:
+ content = ''
+
+ published_date = None
+
+ # check if search result starts with something like: "2 Sep 2014 ... "
+ if re.match(r"^([1-9]|[1-2][0-9]|3[0-1]) [A-Z][a-z]{2} [0-9]{4} \.\.\. ", content):
+ date_pos = content.find('...') + 4
+ date_string = content[0:date_pos - 5]
+ published_date = parser.parse(date_string, dayfirst=True)
+
+ # fix content string
+ content = content[date_pos:]
+
+ # check if search result starts with something like: "5 days ago ... "
+ elif re.match(r"^[0-9]+ days? ago \.\.\. ", content):
+ date_pos = content.find('...') + 4
+ date_string = content[0:date_pos - 5]
+
+ # calculate datetime
+ published_date = datetime.now() - timedelta(days=int(re.match(r'\d+', date_string).group()))
+
+ # fix content string
+ content = content[date_pos:]
+
+ if published_date:
+ # append result
+ results.append({'url': url,
+ 'title': title,
+ 'content': content,
+ 'publishedDate': published_date})
+ else:
+ # append result
+ results.append({'url': url,
+ 'title': title,
+ 'content': content})
+
+ # return results
+ return results
diff --git a/searx/engines/subtitleseeker.py b/searx/engines/subtitleseeker.py
new file mode 100644
index 0000000..118504f
--- /dev/null
+++ b/searx/engines/subtitleseeker.py
@@ -0,0 +1,86 @@
+"""
+ Subtitleseeker (Video)
+
+ @website http://www.subtitleseeker.com
+ @provide-api no
+
+ @using-api no
+ @results HTML
+ @stable no (HTML can change)
+ @parse url, title, content
+"""
+
+from lxml import html
+from searx.languages import language_codes
+from searx.engines.xpath import extract_text
+from searx.url_utils import quote_plus
+
+# engine dependent config
+categories = ['videos']
+paging = True
+language = ""
+
+# search-url
+url = 'http://www.subtitleseeker.com/'
+search_url = url + 'search/TITLES/{query}?p={pageno}'
+
+# specific xpath variables
+results_xpath = '//div[@class="boxRows"]'
+
+
+# do search-request
+def request(query, params):
+ params['url'] = search_url.format(query=quote_plus(query),
+ pageno=params['pageno'])
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ search_lang = ""
+
+ # dirty fix for languages named differenly in their site
+ if resp.search_params['language'][:2] == 'fa':
+ search_lang = 'Farsi'
+ elif resp.search_params['language'] == 'pt-BR':
+ search_lang = 'Brazilian'
+ else:
+ search_lang = [lc[3]
+ for lc in language_codes
+ if lc[0].split('-')[0] == resp.search_params['language'].split('-')[0]]
+ search_lang = search_lang[0].split(' (')[0]
+
+ # parse results
+ for result in dom.xpath(results_xpath):
+ link = result.xpath(".//a")[0]
+ href = link.attrib.get('href')
+
+ if language is not "":
+ href = href + language + '/'
+ elif search_lang:
+ href = href + search_lang + '/'
+
+ title = extract_text(link)
+
+ content = extract_text(result.xpath('.//div[contains(@class,"red")]'))
+ content = content + " - "
+ text = extract_text(result.xpath('.//div[contains(@class,"grey-web")]')[0])
+ content = content + text
+
+ if result.xpath(".//span") != []:
+ content = content +\
+ " - (" +\
+ extract_text(result.xpath(".//span")) +\
+ ")"
+
+ # append result
+ results.append({'url': href,
+ 'title': title,
+ 'content': content})
+
+ # return results
+ return results
diff --git a/searx/engines/swisscows.py b/searx/engines/swisscows.py
new file mode 100644
index 0000000..ff4df24
--- /dev/null
+++ b/searx/engines/swisscows.py
@@ -0,0 +1,121 @@
+"""
+ Swisscows (Web, Images)
+
+ @website https://swisscows.ch
+ @provide-api no
+
+ @using-api no
+ @results HTML (using search portal)
+ @stable no (HTML can change)
+ @parse url, title, content
+"""
+
+from json import loads
+import re
+from lxml.html import fromstring
+from searx.url_utils import unquote, urlencode
+from searx.utils import match_language
+
+# engine dependent config
+categories = ['general', 'images']
+paging = True
+language_support = True
+
+# search-url
+base_url = 'https://swisscows.ch/'
+search_string = '?{query}&page={page}'
+
+supported_languages_url = base_url
+
+# regex
+regex_json = re.compile(b'initialData: {"Request":(.|\n)*},\s*environment')
+regex_json_remove_start = re.compile(b'^initialData:\s*')
+regex_json_remove_end = re.compile(b',\s*environment$')
+regex_img_url_remove_start = re.compile(b'^https?://i\.swisscows\.ch/\?link=')
+
+
+# do search-request
+def request(query, params):
+ region = match_language(params['language'], supported_languages)
+ ui_language = region.split('-')[0]
+
+ search_path = search_string.format(
+ query=urlencode({'query': query, 'uiLanguage': ui_language, 'region': region}),
+ page=params['pageno']
+ )
+
+ # image search query is something like 'image?{query}&page={page}'
+ if params['category'] == 'images':
+ search_path = 'image' + search_path
+
+ params['url'] = base_url + search_path
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ json_regex = regex_json.search(resp.text)
+
+ # check if results are returned
+ if not json_regex:
+ return []
+
+ json_raw = regex_json_remove_end.sub(b'', regex_json_remove_start.sub(b'', json_regex.group()))
+ json = loads(json_raw.decode('utf-8'))
+
+ # parse results
+ for result in json['Results'].get('items', []):
+ result_title = result['Title'].replace(u'\uE000', '').replace(u'\uE001', '')
+
+ # parse image results
+ if result.get('ContentType', '').startswith('image'):
+ img_url = unquote(regex_img_url_remove_start.sub(b'', result['Url'].encode('utf-8')).decode('utf-8'))
+
+ # append result
+ results.append({'url': result['SourceUrl'],
+ 'title': result['Title'],
+ 'content': '',
+ 'img_src': img_url,
+ 'template': 'images.html'})
+
+ # parse general results
+ else:
+ result_url = result['Url'].replace(u'\uE000', '').replace(u'\uE001', '')
+ result_content = result['Description'].replace(u'\uE000', '').replace(u'\uE001', '')
+
+ # append result
+ results.append({'url': result_url,
+ 'title': result_title,
+ 'content': result_content})
+
+ # parse images
+ for result in json.get('Images', []):
+ # decode image url
+ img_url = unquote(regex_img_url_remove_start.sub(b'', result['Url'].encode('utf-8')).decode('utf-8'))
+
+ # append result
+ results.append({'url': result['SourceUrl'],
+ 'title': result['Title'],
+ 'content': '',
+ 'img_src': img_url,
+ 'template': 'images.html'})
+
+ # return results
+ return results
+
+
+# get supported languages from their site
+def _fetch_supported_languages(resp):
+ supported_languages = []
+ dom = fromstring(resp.text)
+ options = dom.xpath('//div[@id="regions-popup"]//ul/li/a')
+ for option in options:
+ code = option.xpath('./@data-search-language')[0]
+ if code.startswith('nb-'):
+ code = code.replace('nb', 'no', 1)
+ supported_languages.append(code)
+
+ return supported_languages
diff --git a/searx/engines/tokyotoshokan.py b/searx/engines/tokyotoshokan.py
new file mode 100644
index 0000000..7732120
--- /dev/null
+++ b/searx/engines/tokyotoshokan.py
@@ -0,0 +1,99 @@
+"""
+ Tokyo Toshokan (A BitTorrent Library for Japanese Media)
+
+ @website https://www.tokyotosho.info/
+ @provide-api no
+ @using-api no
+ @results HTML
+ @stable no (HTML can change)
+ @parse url, title, publishedDate, seed, leech,
+ filesize, magnetlink, content
+"""
+
+import re
+from lxml import html
+from searx.engines.xpath import extract_text
+from datetime import datetime
+from searx.url_utils import urlencode
+from searx.utils import get_torrent_size, int_or_zero
+
+# engine dependent config
+categories = ['files', 'videos', 'music']
+paging = True
+
+# search-url
+base_url = 'https://www.tokyotosho.info/'
+search_url = base_url + 'search.php?{query}'
+
+
+# do search-request
+def request(query, params):
+ query = urlencode({'page': params['pageno'], 'terms': query})
+ params['url'] = search_url.format(query=query)
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+ rows = dom.xpath('//table[@class="listing"]//tr[contains(@class, "category_0")]')
+
+ # check if there are no results or page layout was changed so we cannot parse it
+ # currently there are two rows for each result, so total count must be even
+ if len(rows) == 0 or len(rows) % 2 != 0:
+ return []
+
+ # regular expression for parsing torrent size strings
+ size_re = re.compile(r'Size:\s*([\d.]+)(TB|GB|MB|B)', re.IGNORECASE)
+
+ # processing the results, two rows at a time
+ for i in range(0, len(rows), 2):
+ # parse the first row
+ name_row = rows[i]
+
+ links = name_row.xpath('./td[@class="desc-top"]/a')
+ params = {
+ 'template': 'torrent.html',
+ 'url': links[-1].attrib.get('href'),
+ 'title': extract_text(links[-1])
+ }
+ # I have not yet seen any torrents without magnet links, but
+ # it's better to be prepared to stumble upon one some day
+ if len(links) == 2:
+ magnet = links[0].attrib.get('href')
+ if magnet.startswith('magnet'):
+ # okay, we have a valid magnet link, let's add it to the result
+ params['magnetlink'] = magnet
+
+ # no more info in the first row, start parsing the second one
+ info_row = rows[i + 1]
+ desc = extract_text(info_row.xpath('./td[@class="desc-bot"]')[0])
+ for item in desc.split('|'):
+ item = item.strip()
+ if item.startswith('Size:'):
+ try:
+ # ('1.228', 'GB')
+ groups = size_re.match(item).groups()
+ params['filesize'] = get_torrent_size(groups[0], groups[1])
+ except:
+ pass
+ elif item.startswith('Date:'):
+ try:
+ # Date: 2016-02-21 21:44 UTC
+ date = datetime.strptime(item, 'Date: %Y-%m-%d %H:%M UTC')
+ params['publishedDate'] = date
+ except:
+ pass
+ elif item.startswith('Comment:'):
+ params['content'] = item
+ stats = info_row.xpath('./td[@class="stats"]/span')
+ # has the layout not changed yet?
+ if len(stats) == 3:
+ params['seed'] = int_or_zero(extract_text(stats[0]))
+ params['leech'] = int_or_zero(extract_text(stats[1]))
+
+ results.append(params)
+
+ return results
diff --git a/searx/engines/torrentz.py b/searx/engines/torrentz.py
new file mode 100644
index 0000000..fd4164a
--- /dev/null
+++ b/searx/engines/torrentz.py
@@ -0,0 +1,98 @@
+"""
+ Torrentz2.eu (BitTorrent meta-search engine)
+
+ @website https://torrentz2.eu/
+ @provide-api no
+
+ @using-api no
+ @results HTML
+ @stable no (HTML can change, although unlikely,
+ see https://torrentz.eu/torrentz.btsearch)
+ @parse url, title, publishedDate, seed, leech, filesize, magnetlink
+"""
+
+import re
+from lxml import html
+from datetime import datetime
+from searx.engines.xpath import extract_text
+from searx.url_utils import urlencode
+from searx.utils import get_torrent_size
+
+# engine dependent config
+categories = ['files', 'videos', 'music']
+paging = True
+
+# search-url
+# https://torrentz2.eu/search?f=EXAMPLE&p=6
+base_url = 'https://torrentz2.eu/'
+search_url = base_url + 'search?{query}'
+
+
+# do search-request
+def request(query, params):
+ page = params['pageno'] - 1
+ query = urlencode({'f': query, 'p': page})
+ params['url'] = search_url.format(query=query)
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ for result in dom.xpath('//div[@class="results"]/dl'):
+ name_cell = result.xpath('./dt')[0]
+ title = extract_text(name_cell)
+
+ # skip rows that do not contain a link to a torrent
+ links = name_cell.xpath('./a')
+ if len(links) != 1:
+ continue
+
+ # extract url and remove a slash in the beginning
+ link = links[0].attrib.get('href').lstrip('/')
+
+ seed = 0
+ leech = 0
+ try:
+ seed = int(result.xpath('./dd/span[4]/text()')[0].replace(',', ''))
+ leech = int(result.xpath('./dd/span[5]/text()')[0].replace(',', ''))
+ except:
+ pass
+
+ params = {
+ 'url': base_url + link,
+ 'title': title,
+ 'seed': seed,
+ 'leech': leech,
+ 'template': 'torrent.html'
+ }
+
+ # let's try to calculate the torrent size
+ try:
+ filesize_info = result.xpath('./dd/span[3]/text()')[0]
+ filesize, filesize_multiplier = filesize_info.split()
+ filesize = get_torrent_size(filesize, filesize_multiplier)
+
+ params['filesize'] = filesize
+ except:
+ pass
+
+ # does our link contain a valid SHA1 sum?
+ if re.compile('[0-9a-fA-F]{40}').match(link):
+ # add a magnet link to the result
+ params['magnetlink'] = 'magnet:?xt=urn:btih:' + link
+
+ # extract and convert creation date
+ try:
+ date_ts = result.xpath('./dd/span[2]')[0].attrib.get('title')
+ date = datetime.fromtimestamp(float(date_ts))
+ params['publishedDate'] = date
+ except:
+ pass
+
+ results.append(params)
+
+ return results
diff --git a/searx/engines/translated.py b/searx/engines/translated.py
new file mode 100644
index 0000000..5c7b170
--- /dev/null
+++ b/searx/engines/translated.py
@@ -0,0 +1,68 @@
+"""
+ MyMemory Translated
+
+ @website https://mymemory.translated.net/
+ @provide-api yes (https://mymemory.translated.net/doc/spec.php)
+ @using-api yes
+ @results JSON
+ @stable yes
+ @parse url, title, content
+"""
+import re
+from sys import version_info
+from searx.utils import is_valid_lang
+
+if version_info[0] == 3:
+ unicode = str
+
+categories = ['general']
+url = u'http://api.mymemory.translated.net/get?q={query}&langpair={from_lang}|{to_lang}{key}'
+web_url = u'http://mymemory.translated.net/en/{from_lang}/{to_lang}/{query}'
+weight = 100
+
+parser_re = re.compile(u'.*?([a-z]+)-([a-z]+) (.{2,})$', re.I)
+api_key = ''
+
+
+def request(query, params):
+ m = parser_re.match(unicode(query, 'utf8'))
+ if not m:
+ return params
+
+ from_lang, to_lang, query = m.groups()
+
+ from_lang = is_valid_lang(from_lang)
+ to_lang = is_valid_lang(to_lang)
+
+ if not from_lang or not to_lang:
+ return params
+
+ if api_key:
+ key_form = '&key=' + api_key
+ else:
+ key_form = ''
+ params['url'] = url.format(from_lang=from_lang[1],
+ to_lang=to_lang[1],
+ query=query,
+ key=key_form)
+ params['query'] = query
+ params['from_lang'] = from_lang
+ params['to_lang'] = to_lang
+
+ return params
+
+
+def response(resp):
+ results = []
+ results.append({
+ 'url': web_url.format(
+ from_lang=resp.search_params['from_lang'][2],
+ to_lang=resp.search_params['to_lang'][2],
+ query=resp.search_params['query']),
+ 'title': '[{0}-{1}] {2}'.format(
+ resp.search_params['from_lang'][1],
+ resp.search_params['to_lang'][1],
+ resp.search_params['query']),
+ 'content': resp.json()['responseData']['translatedText']
+ })
+ return results
diff --git a/searx/engines/twitter.py b/searx/engines/twitter.py
new file mode 100644
index 0000000..8641167
--- /dev/null
+++ b/searx/engines/twitter.py
@@ -0,0 +1,82 @@
+"""
+ Twitter (Social media)
+
+ @website https://twitter.com/
+ @provide-api yes (https://dev.twitter.com/docs/using-search)
+
+ @using-api no
+ @results HTML (using search portal)
+ @stable no (HTML can change)
+ @parse url, title, content
+
+ @todo publishedDate
+"""
+
+from lxml import html
+from datetime import datetime
+from searx.engines.xpath import extract_text
+from searx.url_utils import urlencode, urljoin
+
+# engine dependent config
+categories = ['social media']
+language_support = True
+
+# search-url
+base_url = 'https://twitter.com/'
+search_url = base_url + 'search?'
+
+# specific xpath variables
+results_xpath = '//li[@data-item-type="tweet"]'
+avatar_xpath = './/img[contains(@class, "avatar")]/@src'
+link_xpath = './/small[@class="time"]//a'
+title_xpath = './/span[contains(@class, "username")]'
+content_xpath = './/p[contains(@class, "tweet-text")]'
+timestamp_xpath = './/span[contains(@class,"_timestamp")]'
+
+
+# do search-request
+def request(query, params):
+ params['url'] = search_url + urlencode({'q': query})
+ params['cookies']['lang'] = params['language'].split('-')[0]
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ # parse results
+ for tweet in dom.xpath(results_xpath):
+ try:
+ link = tweet.xpath(link_xpath)[0]
+ content = extract_text(tweet.xpath(content_xpath)[0])
+ img_src = tweet.xpath(avatar_xpath)[0]
+ img_src = img_src.replace('_bigger', '_normal')
+ except Exception:
+ continue
+
+ url = urljoin(base_url, link.attrib.get('href'))
+ title = extract_text(tweet.xpath(title_xpath))
+
+ pubdate = tweet.xpath(timestamp_xpath)
+ if len(pubdate) > 0:
+ timestamp = float(pubdate[0].attrib.get('data-time'))
+ publishedDate = datetime.fromtimestamp(timestamp, None)
+ # append result
+ results.append({'url': url,
+ 'title': title,
+ 'content': content,
+ 'img_src': img_src,
+ 'publishedDate': publishedDate})
+ else:
+ # append result
+ results.append({'url': url,
+ 'title': title,
+ 'content': content,
+ 'img_src': img_src})
+
+ # return results
+ return results
diff --git a/searx/engines/vimeo.py b/searx/engines/vimeo.py
new file mode 100644
index 0000000..1408be8
--- /dev/null
+++ b/searx/engines/vimeo.py
@@ -0,0 +1,67 @@
+# Vimeo (Videos)
+#
+# @website https://vimeo.com/
+# @provide-api yes (http://developer.vimeo.com/api),
+# they have a maximum count of queries/hour
+#
+# @using-api no (TODO, rewrite to api)
+# @results HTML (using search portal)
+# @stable no (HTML can change)
+# @parse url, title, publishedDate, thumbnail, embedded
+#
+# @todo rewrite to api
+# @todo set content-parameter with correct data
+
+from json import loads
+from dateutil import parser
+from searx.url_utils import urlencode
+
+# engine dependent config
+categories = ['videos']
+paging = True
+
+# search-url
+base_url = 'https://vimeo.com/'
+search_url = base_url + '/search/page:{pageno}?{query}'
+
+embedded_url = '<iframe data-src="//player.vimeo.com/video/{videoid}" ' +\
+ 'width="540" height="304" frameborder="0" ' +\
+ 'webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>'
+
+
+# do search-request
+def request(query, params):
+ params['url'] = search_url.format(pageno=params['pageno'],
+ query=urlencode({'q': query}))
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+ data_start_pos = resp.text.find('{"filtered"')
+ data_end_pos = resp.text.find(';\n', data_start_pos + 1)
+ data = loads(resp.text[data_start_pos:data_end_pos])
+
+ # parse results
+ for result in data['filtered']['data']:
+ result = result[result['type']]
+ videoid = result['uri'].split('/')[-1]
+ url = base_url + videoid
+ title = result['name']
+ thumbnail = result['pictures']['sizes'][-1]['link']
+ publishedDate = parser.parse(result['created_time'])
+ embedded = embedded_url.format(videoid=videoid)
+
+ # append result
+ results.append({'url': url,
+ 'title': title,
+ 'content': '',
+ 'template': 'videos.html',
+ 'publishedDate': publishedDate,
+ 'embedded': embedded,
+ 'thumbnail': thumbnail})
+
+ # return results
+ return results
diff --git a/searx/engines/wikidata.py b/searx/engines/wikidata.py
new file mode 100644
index 0000000..c315b30
--- /dev/null
+++ b/searx/engines/wikidata.py
@@ -0,0 +1,485 @@
+# -*- coding: utf-8 -*-
+"""
+ Wikidata
+
+ @website https://wikidata.org
+ @provide-api yes (https://wikidata.org/w/api.php)
+
+ @using-api partially (most things require scraping)
+ @results JSON, HTML
+ @stable no (html can change)
+ @parse url, infobox
+"""
+
+from searx import logger
+from searx.poolrequests import get
+from searx.engines.xpath import extract_text
+from searx.engines.wikipedia import _fetch_supported_languages, supported_languages_url
+from searx.url_utils import urlencode
+from searx.utils import match_language
+
+from json import loads
+from lxml.html import fromstring
+
+logger = logger.getChild('wikidata')
+result_count = 1
+
+# urls
+wikidata_host = 'https://www.wikidata.org'
+url_search = wikidata_host \
+ + '/w/index.php?{query}'
+
+wikidata_api = wikidata_host + '/w/api.php'
+url_detail = wikidata_api\
+ + '?action=parse&format=json&{query}'\
+ + '&redirects=1&prop=text%7Cdisplaytitle%7Clanglinks%7Crevid'\
+ + '&disableeditsection=1&disabletidy=1&preview=1&sectionpreview=1&disabletoc=1&utf8=1&formatversion=2'
+
+url_map = 'https://www.openstreetmap.org/'\
+ + '?lat={latitude}&lon={longitude}&zoom={zoom}&layers=M'
+url_image = 'https://commons.wikimedia.org/wiki/Special:FilePath/{filename}?width=500&height=400'
+
+# xpaths
+wikidata_ids_xpath = '//ul[@class="mw-search-results"]/li//a/@href'
+title_xpath = '//*[contains(@class,"wikibase-title-label")]'
+description_xpath = '//div[contains(@class,"wikibase-entitytermsview-heading-description")]'
+property_xpath = '//div[@id="{propertyid}"]'
+label_xpath = './/div[contains(@class,"wikibase-statementgroupview-property-label")]/a'
+url_xpath = './/a[contains(@class,"external free") or contains(@class, "wb-external-id")]'
+wikilink_xpath = './/ul[contains(@class,"wikibase-sitelinklistview-listview")]'\
+ + '/li[contains(@data-wb-siteid,"{wikiid}")]//a/@href'
+property_row_xpath = './/div[contains(@class,"wikibase-statementview")]'
+preferred_rank_xpath = './/span[contains(@class,"wikibase-rankselector-preferred")]'
+value_xpath = './/div[contains(@class,"wikibase-statementview-mainsnak")]'\
+ + '/*/div[contains(@class,"wikibase-snakview-value")]'
+language_fallback_xpath = '//sup[contains(@class,"wb-language-fallback-indicator")]'
+calendar_name_xpath = './/sup[contains(@class,"wb-calendar-name")]'
+media_xpath = value_xpath + '//div[contains(@class,"commons-media-caption")]//a'
+
+
+def request(query, params):
+ params['url'] = url_search.format(
+ query=urlencode({'search': query}))
+ return params
+
+
+def response(resp):
+ results = []
+ html = fromstring(resp.text)
+ search_results = html.xpath(wikidata_ids_xpath)
+
+ language = match_language(resp.search_params['language'], supported_languages).split('-')[0]
+
+ # TODO: make requests asynchronous to avoid timeout when result_count > 1
+ for search_result in search_results[:result_count]:
+ wikidata_id = search_result.split('/')[-1]
+ url = url_detail.format(query=urlencode({'page': wikidata_id, 'uselang': language}))
+ htmlresponse = get(url)
+ jsonresponse = loads(htmlresponse.text)
+ results += getDetail(jsonresponse, wikidata_id, language, resp.search_params['language'])
+
+ return results
+
+
+def getDetail(jsonresponse, wikidata_id, language, locale):
+ results = []
+ urls = []
+ attributes = []
+
+ title = jsonresponse.get('parse', {}).get('displaytitle', {})
+ result = jsonresponse.get('parse', {}).get('text', {})
+
+ if not title or not result:
+ return results
+
+ title = fromstring(title)
+ for elem in title.xpath(language_fallback_xpath):
+ elem.getparent().remove(elem)
+ title = extract_text(title.xpath(title_xpath))
+
+ result = fromstring(result)
+ for elem in result.xpath(language_fallback_xpath):
+ elem.getparent().remove(elem)
+
+ description = extract_text(result.xpath(description_xpath))
+
+ # URLS
+
+ # official website
+ add_url(urls, result, 'P856', results=results)
+
+ # wikipedia
+ wikipedia_link_count = 0
+ wikipedia_link = get_wikilink(result, language + 'wiki')
+ if wikipedia_link:
+ wikipedia_link_count += 1
+ urls.append({'title': 'Wikipedia (' + language + ')',
+ 'url': wikipedia_link})
+
+ if language != 'en':
+ wikipedia_en_link = get_wikilink(result, 'enwiki')
+ if wikipedia_en_link:
+ wikipedia_link_count += 1
+ urls.append({'title': 'Wikipedia (en)',
+ 'url': wikipedia_en_link})
+
+ # TODO: get_wiki_firstlanguage
+ # if wikipedia_link_count == 0:
+
+ # more wikis
+ add_url(urls, result, default_label='Wikivoyage (' + language + ')', link_type=language + 'wikivoyage')
+ add_url(urls, result, default_label='Wikiquote (' + language + ')', link_type=language + 'wikiquote')
+ add_url(urls, result, default_label='Wikimedia Commons', link_type='commonswiki')
+
+ add_url(urls, result, 'P625', 'OpenStreetMap', link_type='geo')
+
+ # musicbrainz
+ add_url(urls, result, 'P434', 'MusicBrainz', 'http://musicbrainz.org/artist/')
+ add_url(urls, result, 'P435', 'MusicBrainz', 'http://musicbrainz.org/work/')
+ add_url(urls, result, 'P436', 'MusicBrainz', 'http://musicbrainz.org/release-group/')
+ add_url(urls, result, 'P966', 'MusicBrainz', 'http://musicbrainz.org/label/')
+
+ # IMDb
+ add_url(urls, result, 'P345', 'IMDb', 'https://www.imdb.com/', link_type='imdb')
+ # source code repository
+ add_url(urls, result, 'P1324')
+ # blog
+ add_url(urls, result, 'P1581')
+ # social media links
+ add_url(urls, result, 'P2397', 'YouTube', 'https://www.youtube.com/channel/')
+ add_url(urls, result, 'P1651', 'YouTube', 'https://www.youtube.com/watch?v=')
+ add_url(urls, result, 'P2002', 'Twitter', 'https://twitter.com/')
+ add_url(urls, result, 'P2013', 'Facebook', 'https://facebook.com/')
+ add_url(urls, result, 'P2003', 'Instagram', 'https://instagram.com/')
+
+ urls.append({'title': 'Wikidata',
+ 'url': 'https://www.wikidata.org/wiki/'
+ + wikidata_id + '?uselang=' + language})
+
+ # INFOBOX ATTRIBUTES (ROWS)
+
+ # DATES
+ # inception date
+ add_attribute(attributes, result, 'P571', date=True)
+ # dissolution date
+ add_attribute(attributes, result, 'P576', date=True)
+ # start date
+ add_attribute(attributes, result, 'P580', date=True)
+ # end date
+ add_attribute(attributes, result, 'P582', date=True)
+ # date of birth
+ add_attribute(attributes, result, 'P569', date=True)
+ # date of death
+ add_attribute(attributes, result, 'P570', date=True)
+ # date of spacecraft launch
+ add_attribute(attributes, result, 'P619', date=True)
+ # date of spacecraft landing
+ add_attribute(attributes, result, 'P620', date=True)
+
+ # nationality
+ add_attribute(attributes, result, 'P27')
+ # country of origin
+ add_attribute(attributes, result, 'P495')
+ # country
+ add_attribute(attributes, result, 'P17')
+ # headquarters
+ add_attribute(attributes, result, 'Q180')
+
+ # PLACES
+ # capital
+ add_attribute(attributes, result, 'P36', trim=True)
+ # head of state
+ add_attribute(attributes, result, 'P35', trim=True)
+ # head of government
+ add_attribute(attributes, result, 'P6', trim=True)
+ # type of government
+ add_attribute(attributes, result, 'P122')
+ # official language
+ add_attribute(attributes, result, 'P37')
+ # population
+ add_attribute(attributes, result, 'P1082', trim=True)
+ # area
+ add_attribute(attributes, result, 'P2046')
+ # currency
+ add_attribute(attributes, result, 'P38', trim=True)
+ # heigth (building)
+ add_attribute(attributes, result, 'P2048')
+
+ # MEDIA
+ # platform (videogames)
+ add_attribute(attributes, result, 'P400')
+ # author
+ add_attribute(attributes, result, 'P50')
+ # creator
+ add_attribute(attributes, result, 'P170')
+ # director
+ add_attribute(attributes, result, 'P57')
+ # performer
+ add_attribute(attributes, result, 'P175')
+ # developer
+ add_attribute(attributes, result, 'P178')
+ # producer
+ add_attribute(attributes, result, 'P162')
+ # manufacturer
+ add_attribute(attributes, result, 'P176')
+ # screenwriter
+ add_attribute(attributes, result, 'P58')
+ # production company
+ add_attribute(attributes, result, 'P272')
+ # record label
+ add_attribute(attributes, result, 'P264')
+ # publisher
+ add_attribute(attributes, result, 'P123')
+ # original network
+ add_attribute(attributes, result, 'P449')
+ # distributor
+ add_attribute(attributes, result, 'P750')
+ # composer
+ add_attribute(attributes, result, 'P86')
+ # publication date
+ add_attribute(attributes, result, 'P577', date=True)
+ # genre
+ add_attribute(attributes, result, 'P136')
+ # original language
+ add_attribute(attributes, result, 'P364')
+ # isbn
+ add_attribute(attributes, result, 'Q33057')
+ # software license
+ add_attribute(attributes, result, 'P275')
+ # programming language
+ add_attribute(attributes, result, 'P277')
+ # version
+ add_attribute(attributes, result, 'P348', trim=True)
+ # narrative location
+ add_attribute(attributes, result, 'P840')
+
+ # LANGUAGES
+ # number of speakers
+ add_attribute(attributes, result, 'P1098')
+ # writing system
+ add_attribute(attributes, result, 'P282')
+ # regulatory body
+ add_attribute(attributes, result, 'P1018')
+ # language code
+ add_attribute(attributes, result, 'P218')
+
+ # OTHER
+ # ceo
+ add_attribute(attributes, result, 'P169', trim=True)
+ # founder
+ add_attribute(attributes, result, 'P112')
+ # legal form (company/organization)
+ add_attribute(attributes, result, 'P1454')
+ # operator
+ add_attribute(attributes, result, 'P137')
+ # crew members (tripulation)
+ add_attribute(attributes, result, 'P1029')
+ # taxon
+ add_attribute(attributes, result, 'P225')
+ # chemical formula
+ add_attribute(attributes, result, 'P274')
+ # winner (sports/contests)
+ add_attribute(attributes, result, 'P1346')
+ # number of deaths
+ add_attribute(attributes, result, 'P1120')
+ # currency code
+ add_attribute(attributes, result, 'P498')
+
+ image = add_image(result)
+
+ if len(attributes) == 0 and len(urls) == 2 and len(description) == 0:
+ results.append({
+ 'url': urls[0]['url'],
+ 'title': title,
+ 'content': description
+ })
+ else:
+ results.append({
+ 'infobox': title,
+ 'id': wikipedia_link,
+ 'content': description,
+ 'img_src': image,
+ 'attributes': attributes,
+ 'urls': urls
+ })
+
+ return results
+
+
+# only returns first match
+def add_image(result):
+ # P15: route map, P242: locator map, P154: logo, P18: image, P242: map, P41: flag, P2716: collage, P2910: icon
+ property_ids = ['P15', 'P242', 'P154', 'P18', 'P242', 'P41', 'P2716', 'P2910']
+
+ for property_id in property_ids:
+ image = result.xpath(property_xpath.replace('{propertyid}', property_id))
+ if image:
+ image_name = image[0].xpath(media_xpath)
+ image_src = url_image.replace('{filename}', extract_text(image_name[0]))
+ return image_src
+
+
+# setting trim will only returned high ranked rows OR the first row
+def add_attribute(attributes, result, property_id, default_label=None, date=False, trim=False):
+ attribute = result.xpath(property_xpath.replace('{propertyid}', property_id))
+ if attribute:
+
+ if default_label:
+ label = default_label
+ else:
+ label = extract_text(attribute[0].xpath(label_xpath))
+ label = label[0].upper() + label[1:]
+
+ if date:
+ trim = True
+ # remove calendar name
+ calendar_name = attribute[0].xpath(calendar_name_xpath)
+ for calendar in calendar_name:
+ calendar.getparent().remove(calendar)
+
+ concat_values = ""
+ values = []
+ first_value = None
+ for row in attribute[0].xpath(property_row_xpath):
+ if not first_value or not trim or row.xpath(preferred_rank_xpath):
+
+ value = row.xpath(value_xpath)
+ if not value:
+ continue
+ value = extract_text(value)
+
+ # save first value in case no ranked row is found
+ if trim and not first_value:
+ first_value = value
+ else:
+ # to avoid duplicate values
+ if value not in values:
+ concat_values += value + ", "
+ values.append(value)
+
+ if trim and not values:
+ attributes.append({'label': label,
+ 'value': first_value})
+ else:
+ attributes.append({'label': label,
+ 'value': concat_values[:-2]})
+
+
+# requires property_id unless it's a wiki link (defined in link_type)
+def add_url(urls, result, property_id=None, default_label=None, url_prefix=None, results=None, link_type=None):
+ links = []
+
+ # wiki links don't have property in wikidata page
+ if link_type and 'wiki' in link_type:
+ links.append(get_wikilink(result, link_type))
+ else:
+ dom_element = result.xpath(property_xpath.replace('{propertyid}', property_id))
+ if dom_element:
+ dom_element = dom_element[0]
+ if not default_label:
+ label = extract_text(dom_element.xpath(label_xpath))
+ label = label[0].upper() + label[1:]
+
+ if link_type == 'geo':
+ links.append(get_geolink(dom_element))
+
+ elif link_type == 'imdb':
+ links.append(get_imdblink(dom_element, url_prefix))
+
+ else:
+ url_results = dom_element.xpath(url_xpath)
+ for link in url_results:
+ if link is not None:
+ if url_prefix:
+ link = url_prefix + extract_text(link)
+ else:
+ link = extract_text(link)
+ links.append(link)
+
+ # append urls
+ for url in links:
+ if url is not None:
+ urls.append({'title': default_label or label,
+ 'url': url})
+ if results is not None:
+ results.append({'title': default_label or label,
+ 'url': url})
+
+
+def get_imdblink(result, url_prefix):
+ imdb_id = result.xpath(value_xpath)
+ if imdb_id:
+ imdb_id = extract_text(imdb_id)
+ id_prefix = imdb_id[:2]
+ if id_prefix == 'tt':
+ url = url_prefix + 'title/' + imdb_id
+ elif id_prefix == 'nm':
+ url = url_prefix + 'name/' + imdb_id
+ elif id_prefix == 'ch':
+ url = url_prefix + 'character/' + imdb_id
+ elif id_prefix == 'co':
+ url = url_prefix + 'company/' + imdb_id
+ elif id_prefix == 'ev':
+ url = url_prefix + 'event/' + imdb_id
+ else:
+ url = None
+ return url
+
+
+def get_geolink(result):
+ coordinates = result.xpath(value_xpath)
+ if not coordinates:
+ return None
+ coordinates = extract_text(coordinates[0])
+ latitude, longitude = coordinates.split(',')
+
+ # convert to decimal
+ lat = int(latitude[:latitude.find(u'°')])
+ if latitude.find('\'') >= 0:
+ lat += int(latitude[latitude.find(u'°') + 1:latitude.find('\'')] or 0) / 60.0
+ if latitude.find('"') >= 0:
+ lat += float(latitude[latitude.find('\'') + 1:latitude.find('"')] or 0) / 3600.0
+ if latitude.find('S') >= 0:
+ lat *= -1
+ lon = int(longitude[:longitude.find(u'°')])
+ if longitude.find('\'') >= 0:
+ lon += int(longitude[longitude.find(u'°') + 1:longitude.find('\'')] or 0) / 60.0
+ if longitude.find('"') >= 0:
+ lon += float(longitude[longitude.find('\'') + 1:longitude.find('"')] or 0) / 3600.0
+ if longitude.find('W') >= 0:
+ lon *= -1
+
+ # TODO: get precision
+ precision = 0.0002
+ # there is no zoom information, deduce from precision (error prone)
+ # samples :
+ # 13 --> 5
+ # 1 --> 6
+ # 0.016666666666667 --> 9
+ # 0.00027777777777778 --> 19
+ # wolframalpha :
+ # quadratic fit { {13, 5}, {1, 6}, {0.0166666, 9}, {0.0002777777,19}}
+ # 14.1186-8.8322 x+0.625447 x^2
+ if precision < 0.0003:
+ zoom = 19
+ else:
+ zoom = int(15 - precision * 8.8322 + precision * precision * 0.625447)
+
+ url = url_map\
+ .replace('{latitude}', str(lat))\
+ .replace('{longitude}', str(lon))\
+ .replace('{zoom}', str(zoom))
+
+ return url
+
+
+def get_wikilink(result, wikiid):
+ url = result.xpath(wikilink_xpath.replace('{wikiid}', wikiid))
+ if not url:
+ return None
+ url = url[0]
+ if url.startswith('http://'):
+ url = url.replace('http://', 'https://')
+ elif url.startswith('//'):
+ url = 'https:' + url
+ return url
diff --git a/searx/engines/wikipedia.py b/searx/engines/wikipedia.py
new file mode 100644
index 0000000..6cd17e3
--- /dev/null
+++ b/searx/engines/wikipedia.py
@@ -0,0 +1,130 @@
+"""
+ Wikipedia (Web)
+
+ @website https://{language}.wikipedia.org
+ @provide-api yes
+
+ @using-api yes
+ @results JSON
+ @stable yes
+ @parse url, infobox
+"""
+
+from json import loads
+from lxml.html import fromstring
+from searx.url_utils import quote, urlencode
+from searx.utils import match_language
+
+# search-url
+base_url = u'https://{language}.wikipedia.org/'
+search_url = base_url + u'w/api.php?'\
+ 'action=query'\
+ '&format=json'\
+ '&{query}'\
+ '&prop=extracts|pageimages'\
+ '&exintro'\
+ '&explaintext'\
+ '&pithumbsize=300'\
+ '&redirects'
+supported_languages_url = 'https://meta.wikimedia.org/wiki/List_of_Wikipedias'
+
+
+# set language in base_url
+def url_lang(lang):
+ return match_language(lang, supported_languages).split('-')[0]
+
+
+# do search-request
+def request(query, params):
+ if query.islower():
+ query = u'{0}|{1}'.format(query.decode('utf-8'), query.decode('utf-8').title()).encode('utf-8')
+
+ params['url'] = search_url.format(query=urlencode({'titles': query}),
+ language=url_lang(params['language']))
+
+ return params
+
+
+# get first meaningful paragraph
+# this should filter out disambiguation pages and notes above first paragraph
+# "magic numbers" were obtained by fine tuning
+def extract_first_paragraph(content, title, image):
+ first_paragraph = None
+
+ failed_attempts = 0
+ for paragraph in content.split('\n'):
+
+ starts_with_title = paragraph.lower().find(title.lower(), 0, len(title) + 35)
+ length = len(paragraph)
+
+ if length >= 200 or (starts_with_title >= 0 and (image or length >= 150)):
+ first_paragraph = paragraph
+ break
+
+ failed_attempts += 1
+ if failed_attempts > 3:
+ return None
+
+ return first_paragraph
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ search_result = loads(resp.text)
+
+ # wikipedia article's unique id
+ # first valid id is assumed to be the requested article
+ for article_id in search_result['query']['pages']:
+ page = search_result['query']['pages'][article_id]
+ if int(article_id) > 0:
+ break
+
+ if int(article_id) < 0:
+ return []
+
+ title = page.get('title')
+
+ image = page.get('thumbnail')
+ if image:
+ image = image.get('source')
+
+ extract = page.get('extract')
+
+ summary = extract_first_paragraph(extract, title, image)
+
+ # link to wikipedia article
+ wikipedia_link = base_url.format(language=url_lang(resp.search_params['language'])) \
+ + 'wiki/' + quote(title.replace(' ', '_').encode('utf8'))
+
+ results.append({'url': wikipedia_link, 'title': title})
+
+ results.append({'infobox': title,
+ 'id': wikipedia_link,
+ 'content': summary,
+ 'img_src': image,
+ 'urls': [{'title': 'Wikipedia', 'url': wikipedia_link}]})
+
+ return results
+
+
+# get supported languages from their site
+def _fetch_supported_languages(resp):
+ supported_languages = {}
+ dom = fromstring(resp.text)
+ tables = dom.xpath('//table[contains(@class,"sortable")]')
+ for table in tables:
+ # exclude header row
+ trs = table.xpath('.//tr')[1:]
+ for tr in trs:
+ td = tr.xpath('./td')
+ code = td[3].xpath('./a')[0].text
+ name = td[2].xpath('./a')[0].text
+ english_name = td[1].xpath('./a')[0].text
+ articles = int(td[4].xpath('./a/b')[0].text.replace(',', ''))
+ # exclude languages with too few articles
+ if articles >= 100:
+ supported_languages[code] = {"name": name, "english_name": english_name, "articles": articles}
+
+ return supported_languages
diff --git a/searx/engines/wolframalpha_api.py b/searx/engines/wolframalpha_api.py
new file mode 100644
index 0000000..595c6b7
--- /dev/null
+++ b/searx/engines/wolframalpha_api.py
@@ -0,0 +1,129 @@
+# Wolfram Alpha (Science)
+#
+# @website https://www.wolframalpha.com
+# @provide-api yes (https://api.wolframalpha.com/v2/)
+#
+# @using-api yes
+# @results XML
+# @stable yes
+# @parse url, infobox
+
+from lxml import etree
+from searx.url_utils import urlencode
+
+# search-url
+search_url = 'https://api.wolframalpha.com/v2/query?appid={api_key}&{query}'
+site_url = 'https://www.wolframalpha.com/input/?{query}'
+api_key = '' # defined in settings.yml
+
+# xpath variables
+failure_xpath = '/queryresult[attribute::success="false"]'
+input_xpath = '//pod[starts-with(attribute::id, "Input")]/subpod/plaintext'
+pods_xpath = '//pod'
+subpods_xpath = './subpod'
+pod_primary_xpath = './@primary'
+pod_id_xpath = './@id'
+pod_title_xpath = './@title'
+plaintext_xpath = './plaintext'
+image_xpath = './img'
+img_src_xpath = './@src'
+img_alt_xpath = './@alt'
+
+# pods to display as image in infobox
+# this pods do return a plaintext, but they look better and are more useful as images
+image_pods = {'VisualRepresentation',
+ 'Illustration'}
+
+
+# do search-request
+def request(query, params):
+ params['url'] = search_url.format(query=urlencode({'input': query}), api_key=api_key)
+ params['headers']['Referer'] = site_url.format(query=urlencode({'i': query}))
+
+ return params
+
+
+# replace private user area characters to make text legible
+def replace_pua_chars(text):
+ pua_chars = {u'\uf522': u'\u2192', # rigth arrow
+ u'\uf7b1': u'\u2115', # set of natural numbers
+ u'\uf7b4': u'\u211a', # set of rational numbers
+ u'\uf7b5': u'\u211d', # set of real numbers
+ u'\uf7bd': u'\u2124', # set of integer numbers
+ u'\uf74c': 'd', # differential
+ u'\uf74d': u'\u212f', # euler's number
+ u'\uf74e': 'i', # imaginary number
+ u'\uf7d9': '='} # equals sign
+
+ for k, v in pua_chars.items():
+ text = text.replace(k, v)
+
+ return text
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ search_results = etree.XML(resp.text)
+
+ # return empty array if there are no results
+ if search_results.xpath(failure_xpath):
+ return []
+
+ try:
+ infobox_title = search_results.xpath(input_xpath)[0].text
+ except:
+ infobox_title = ""
+
+ pods = search_results.xpath(pods_xpath)
+ result_chunks = []
+ result_content = ""
+ for pod in pods:
+ pod_id = pod.xpath(pod_id_xpath)[0]
+ pod_title = pod.xpath(pod_title_xpath)[0]
+ pod_is_result = pod.xpath(pod_primary_xpath)
+
+ subpods = pod.xpath(subpods_xpath)
+ if not subpods:
+ continue
+
+ # Appends either a text or an image, depending on which one is more suitable
+ for subpod in subpods:
+ content = subpod.xpath(plaintext_xpath)[0].text
+ image = subpod.xpath(image_xpath)
+
+ if content and pod_id not in image_pods:
+
+ if pod_is_result or not result_content:
+ if pod_id != "Input":
+ result_content = "%s: %s" % (pod_title, content)
+
+ # if no input pod was found, title is first plaintext pod
+ if not infobox_title:
+ infobox_title = content
+
+ content = replace_pua_chars(content)
+ result_chunks.append({'label': pod_title, 'value': content})
+
+ elif image:
+ result_chunks.append({'label': pod_title,
+ 'image': {'src': image[0].xpath(img_src_xpath)[0],
+ 'alt': image[0].xpath(img_alt_xpath)[0]}})
+
+ if not result_chunks:
+ return []
+
+ title = "Wolfram|Alpha (%s)" % infobox_title
+
+ # append infobox
+ results.append({'infobox': infobox_title,
+ 'attributes': result_chunks,
+ 'urls': [{'title': 'Wolfram|Alpha', 'url': resp.request.headers['Referer']}]})
+
+ # append link to site
+ results.append({'url': resp.request.headers['Referer'],
+ 'title': title,
+ 'content': result_content})
+
+ return results
diff --git a/searx/engines/wolframalpha_noapi.py b/searx/engines/wolframalpha_noapi.py
new file mode 100644
index 0000000..2cbbc5a
--- /dev/null
+++ b/searx/engines/wolframalpha_noapi.py
@@ -0,0 +1,121 @@
+# Wolfram|Alpha (Science)
+#
+# @website https://www.wolframalpha.com/
+# @provide-api yes (https://api.wolframalpha.com/v2/)
+#
+# @using-api no
+# @results JSON
+# @stable no
+# @parse url, infobox
+
+from json import loads
+from time import time
+
+from searx.poolrequests import get as http_get
+from searx.url_utils import urlencode
+
+# search-url
+url = 'https://www.wolframalpha.com/'
+
+search_url = url + 'input/json.jsp'\
+ '?async=false'\
+ '&banners=raw'\
+ '&debuggingdata=false'\
+ '&format=image,plaintext,imagemap,minput,moutput'\
+ '&formattimeout=2'\
+ '&{query}'\
+ '&output=JSON'\
+ '&parsetimeout=2'\
+ '&proxycode={token}'\
+ '&scantimeout=0.5'\
+ '&sponsorcategories=true'\
+ '&statemethod=deploybutton'
+
+referer_url = url + 'input/?{query}'
+
+token = {'value': '',
+ 'last_updated': None}
+
+# pods to display as image in infobox
+# this pods do return a plaintext, but they look better and are more useful as images
+image_pods = {'VisualRepresentation',
+ 'Illustration',
+ 'Symbol'}
+
+
+# seems, wolframalpha resets its token in every hour
+def obtain_token():
+ update_time = time() - (time() % 3600)
+ try:
+ token_response = http_get('https://www.wolframalpha.com/input/api/v1/code?ts=9999999999999999999', timeout=2.0)
+ token['value'] = loads(token_response.text)['code']
+ token['last_updated'] = update_time
+ except:
+ pass
+ return token
+
+
+def init():
+ obtain_token()
+
+
+# do search-request
+def request(query, params):
+ # obtain token if last update was more than an hour
+ if time() - (token['last_updated'] or 0) > 3600:
+ obtain_token()
+ params['url'] = search_url.format(query=urlencode({'input': query}), token=token['value'])
+ params['headers']['Referer'] = referer_url.format(query=urlencode({'i': query}))
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ resp_json = loads(resp.text)
+
+ if not resp_json['queryresult']['success']:
+ return []
+
+ # TODO handle resp_json['queryresult']['assumptions']
+ result_chunks = []
+ infobox_title = ""
+ result_content = ""
+ for pod in resp_json['queryresult']['pods']:
+ pod_id = pod.get('id', '')
+ pod_title = pod.get('title', '')
+ pod_is_result = pod.get('primary', None)
+
+ if 'subpods' not in pod:
+ continue
+
+ if pod_id == 'Input' or not infobox_title:
+ infobox_title = pod['subpods'][0]['plaintext']
+
+ for subpod in pod['subpods']:
+ if subpod['plaintext'] != '' and pod_id not in image_pods:
+ # append unless it's not an actual answer
+ if subpod['plaintext'] != '(requires interactivity)':
+ result_chunks.append({'label': pod_title, 'value': subpod['plaintext']})
+
+ if pod_is_result or not result_content:
+ if pod_id != "Input":
+ result_content = pod_title + ': ' + subpod['plaintext']
+
+ elif 'img' in subpod:
+ result_chunks.append({'label': pod_title, 'image': subpod['img']})
+
+ if not result_chunks:
+ return []
+
+ results.append({'infobox': infobox_title,
+ 'attributes': result_chunks,
+ 'urls': [{'title': 'Wolfram|Alpha', 'url': resp.request.headers['Referer']}]})
+
+ results.append({'url': resp.request.headers['Referer'],
+ 'title': 'Wolfram|Alpha (' + infobox_title + ')',
+ 'content': result_content})
+
+ return results
diff --git a/searx/engines/www1x.py b/searx/engines/www1x.py
new file mode 100644
index 0000000..5088032
--- /dev/null
+++ b/searx/engines/www1x.py
@@ -0,0 +1,81 @@
+"""
+ 1x (Images)
+
+ @website http://1x.com/
+ @provide-api no
+
+ @using-api no
+ @results HTML
+ @stable no (HTML can change)
+ @parse url, title, thumbnail, img_src, content
+"""
+
+from lxml import html
+import re
+from searx.url_utils import urlencode, urljoin
+
+# engine dependent config
+categories = ['images']
+paging = False
+
+# search-url
+base_url = 'https://1x.com'
+search_url = base_url + '/backend/search.php?{query}'
+
+
+# do search-request
+def request(query, params):
+ params['url'] = search_url.format(query=urlencode({'q': query}))
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ # get links from result-text
+ regex = re.compile('(</a>|<a)')
+ results_parts = re.split(regex, resp.text)
+
+ cur_element = ''
+
+ # iterate over link parts
+ for result_part in results_parts:
+ # processed start and end of link
+ if result_part == '<a':
+ cur_element = result_part
+ continue
+ elif result_part != '</a>':
+ cur_element += result_part
+ continue
+
+ cur_element += result_part
+
+ # fix xml-error
+ cur_element = cur_element.replace('"></a>', '"/></a>')
+
+ dom = html.fromstring(cur_element)
+ link = dom.xpath('//a')[0]
+
+ url = urljoin(base_url, link.attrib.get('href'))
+ title = link.attrib.get('title', '')
+
+ thumbnail_src = urljoin(base_url, link.xpath('.//img')[0].attrib['src'])
+ # TODO: get image with higher resolution
+ img_src = thumbnail_src
+
+ # check if url is showing to a photo
+ if '/photo/' not in url:
+ continue
+
+ # append result
+ results.append({'url': url,
+ 'title': title,
+ 'img_src': img_src,
+ 'content': '',
+ 'thumbnail_src': thumbnail_src,
+ 'template': 'images.html'})
+
+ # return results
+ return results
diff --git a/searx/engines/xpath.py b/searx/engines/xpath.py
new file mode 100644
index 0000000..50f98d9
--- /dev/null
+++ b/searx/engines/xpath.py
@@ -0,0 +1,122 @@
+from lxml import html
+from lxml.etree import _ElementStringResult, _ElementUnicodeResult
+from searx.utils import html_to_text
+from searx.url_utils import unquote, urlencode, urljoin, urlparse
+
+search_url = None
+url_xpath = None
+content_xpath = None
+title_xpath = None
+paging = False
+suggestion_xpath = ''
+results_xpath = ''
+
+# parameters for engines with paging support
+#
+# number of results on each page
+# (only needed if the site requires not a page number, but an offset)
+page_size = 1
+# number of the first page (usually 0 or 1)
+first_page_num = 1
+
+
+'''
+if xpath_results is list, extract the text from each result and concat the list
+if xpath_results is a xml element, extract all the text node from it
+ ( text_content() method from lxml )
+if xpath_results is a string element, then it's already done
+'''
+
+
+def extract_text(xpath_results):
+ if type(xpath_results) == list:
+ # it's list of result : concat everything using recursive call
+ result = ''
+ for e in xpath_results:
+ result = result + extract_text(e)
+ return result.strip()
+ elif type(xpath_results) in [_ElementStringResult, _ElementUnicodeResult]:
+ # it's a string
+ return ''.join(xpath_results)
+ else:
+ # it's a element
+ text = html.tostring(xpath_results, encoding='unicode', method='text', with_tail=False)
+ text = text.strip().replace('\n', ' ')
+ return ' '.join(text.split())
+
+
+def extract_url(xpath_results, search_url):
+ if xpath_results == []:
+ raise Exception('Empty url resultset')
+ url = extract_text(xpath_results)
+
+ if url.startswith('//'):
+ # add http or https to this kind of url //example.com/
+ parsed_search_url = urlparse(search_url)
+ url = u'{0}:{1}'.format(parsed_search_url.scheme or 'http', url)
+ elif url.startswith('/'):
+ # fix relative url to the search engine
+ url = urljoin(search_url, url)
+
+ # normalize url
+ url = normalize_url(url)
+
+ return url
+
+
+def normalize_url(url):
+ parsed_url = urlparse(url)
+
+ # add a / at this end of the url if there is no path
+ if not parsed_url.netloc:
+ raise Exception('Cannot parse url')
+ if not parsed_url.path:
+ url += '/'
+
+ # FIXME : hack for yahoo
+ if parsed_url.hostname == 'search.yahoo.com'\
+ and parsed_url.path.startswith('/r'):
+ p = parsed_url.path
+ mark = p.find('/**')
+ if mark != -1:
+ return unquote(p[mark + 3:]).decode('utf-8')
+
+ return url
+
+
+def request(query, params):
+ query = urlencode({'q': query})[2:]
+
+ fp = {'query': query}
+ if paging and search_url.find('{pageno}') >= 0:
+ fp['pageno'] = (params['pageno'] - 1) * page_size + first_page_num
+
+ params['url'] = search_url.format(**fp)
+ params['query'] = query
+
+ return params
+
+
+def response(resp):
+ results = []
+ dom = html.fromstring(resp.text)
+ if results_xpath:
+ for result in dom.xpath(results_xpath):
+ url = extract_url(result.xpath(url_xpath), search_url)
+ title = extract_text(result.xpath(title_xpath))
+ content = extract_text(result.xpath(content_xpath))
+ results.append({'url': url, 'title': title, 'content': content})
+ else:
+ for url, title, content in zip(
+ (extract_url(x, search_url) for
+ x in dom.xpath(url_xpath)),
+ map(extract_text, dom.xpath(title_xpath)),
+ map(extract_text, dom.xpath(content_xpath))
+ ):
+ results.append({'url': url, 'title': title, 'content': content})
+
+ if not suggestion_xpath:
+ return results
+ for suggestion in dom.xpath(suggestion_xpath):
+ results.append({'suggestion': extract_text(suggestion)})
+ return results
diff --git a/searx/engines/yacy.py b/searx/engines/yacy.py
new file mode 100644
index 0000000..7c307ce
--- /dev/null
+++ b/searx/engines/yacy.py
@@ -0,0 +1,106 @@
+# Yacy (Web, Images, Videos, Music, Files)
+#
+# @website http://yacy.net
+# @provide-api yes
+# (http://www.yacy-websuche.de/wiki/index.php/Dev:APIyacysearch)
+#
+# @using-api yes
+# @results JSON
+# @stable yes
+# @parse (general) url, title, content, publishedDate
+# @parse (images) url, title, img_src
+#
+# @todo parse video, audio and file results
+
+from json import loads
+from dateutil import parser
+from searx.url_utils import urlencode
+
+from searx.utils import html_to_text
+
+# engine dependent config
+categories = ['general', 'images'] # TODO , 'music', 'videos', 'files'
+paging = True
+language_support = True
+number_of_results = 5
+
+# search-url
+base_url = 'http://localhost:8090'
+search_url = '/yacysearch.json?{query}'\
+ '&startRecord={offset}'\
+ '&maximumRecords={limit}'\
+ '&contentdom={search_type}'\
+ '&resource=global'
+
+# yacy specific type-definitions
+search_types = {'general': 'text',
+ 'images': 'image',
+ 'files': 'app',
+ 'music': 'audio',
+ 'videos': 'video'}
+
+
+# do search-request
+def request(query, params):
+ offset = (params['pageno'] - 1) * number_of_results
+ search_type = search_types.get(params.get('category'), '0')
+
+ params['url'] = base_url +\
+ search_url.format(query=urlencode({'query': query}),
+ offset=offset,
+ limit=number_of_results,
+ search_type=search_type)
+
+ params['url'] += '&lr=lang_' + params['language'].split('-')[0]
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ raw_search_results = loads(resp.text)
+
+ # return empty array if there are no results
+ if not raw_search_results:
+ return []
+
+ search_results = raw_search_results.get('channels', [])
+
+ if len(search_results) == 0:
+ return []
+
+ for result in search_results[0].get('items', []):
+ # parse image results
+ if result.get('image'):
+
+ result_url = ''
+ if 'url' in result:
+ result_url = result['url']
+ elif 'link' in result:
+ result_url = result['link']
+ else:
+ continue
+
+ # append result
+ results.append({'url': result_url,
+ 'title': result['title'],
+ 'content': '',
+ 'img_src': result['image'],
+ 'template': 'images.html'})
+
+ # parse general results
+ else:
+ publishedDate = parser.parse(result['pubDate'])
+
+ # append result
+ results.append({'url': result['link'],
+ 'title': result['title'],
+ 'content': html_to_text(result['description']),
+ 'publishedDate': publishedDate})
+
+ # TODO parse video, audio and file results
+
+ # return results
+ return results
diff --git a/searx/engines/yahoo.py b/searx/engines/yahoo.py
new file mode 100644
index 0000000..ba4cb6a
--- /dev/null
+++ b/searx/engines/yahoo.py
@@ -0,0 +1,151 @@
+"""
+ Yahoo (Web)
+
+ @website https://search.yahoo.com/web
+ @provide-api yes (https://developer.yahoo.com/boss/search/),
+ $0.80/1000 queries
+
+ @using-api no (because pricing)
+ @results HTML (using search portal)
+ @stable no (HTML can change)
+ @parse url, title, content, suggestion
+"""
+
+from lxml import html
+from searx.engines.xpath import extract_text, extract_url
+from searx.url_utils import unquote, urlencode
+from searx.utils import match_language
+
+# engine dependent config
+categories = ['general']
+paging = True
+language_support = True
+time_range_support = True
+
+# search-url
+base_url = 'https://search.yahoo.com/'
+search_url = 'search?{query}&b={offset}&fl=1&vl=lang_{lang}'
+search_url_with_time = 'search?{query}&b={offset}&fl=1&vl=lang_{lang}&age={age}&btf={btf}&fr2=time'
+
+supported_languages_url = 'https://search.yahoo.com/web/advanced'
+
+# specific xpath variables
+results_xpath = "//div[contains(concat(' ', normalize-space(@class), ' '), ' Sr ')]"
+url_xpath = './/h3/a/@href'
+title_xpath = './/h3/a'
+content_xpath = './/div[@class="compText aAbs"]'
+suggestion_xpath = "//div[contains(concat(' ', normalize-space(@class), ' '), ' AlsoTry ')]//a"
+
+time_range_dict = {'day': ['1d', 'd'],
+ 'week': ['1w', 'w'],
+ 'month': ['1m', 'm']}
+
+language_aliases = {'zh-CN': 'zh-CHS', 'zh-TW': 'zh-CHT', 'zh-HK': 'zh-CHT'}
+
+
+# remove yahoo-specific tracking-url
+def parse_url(url_string):
+ endings = ['/RS', '/RK']
+ endpositions = []
+ start = url_string.find('http', url_string.find('/RU=') + 1)
+
+ for ending in endings:
+ endpos = url_string.rfind(ending)
+ if endpos > -1:
+ endpositions.append(endpos)
+
+ if start == 0 or len(endpositions) == 0:
+ return url_string
+ else:
+ end = min(endpositions)
+ return unquote(url_string[start:end])
+
+
+def _get_url(query, offset, language, time_range):
+ if time_range in time_range_dict:
+ return base_url + search_url_with_time.format(offset=offset,
+ query=urlencode({'p': query}),
+ lang=language,
+ age=time_range_dict[time_range][0],
+ btf=time_range_dict[time_range][1])
+ return base_url + search_url.format(offset=offset,
+ query=urlencode({'p': query}),
+ lang=language)
+
+
+# do search-request
+def request(query, params):
+ if params['time_range'] and params['time_range'] not in time_range_dict:
+ return params
+
+ offset = (params['pageno'] - 1) * 10 + 1
+ language = match_language(params['language'], supported_languages, language_aliases)
+ if language not in language_aliases.values():
+ language = language.split('-')[0]
+ language = language.replace('-', '_').lower()
+
+ params['url'] = _get_url(query, offset, language, params['time_range'])
+
+ # TODO required?
+ params['cookies']['sB'] = 'fl=1&vl=lang_{lang}&sh=1&rw=new&v=1'\
+ .format(lang=language)
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ try:
+ results_num = int(dom.xpath('//div[@class="compPagination"]/span[last()]/text()')[0]
+ .split()[0].replace(',', ''))
+ results.append({'number_of_results': results_num})
+ except:
+ pass
+
+ # parse results
+ for result in dom.xpath(results_xpath):
+ try:
+ url = parse_url(extract_url(result.xpath(url_xpath), search_url))
+ title = extract_text(result.xpath(title_xpath)[0])
+ except:
+ continue
+
+ content = extract_text(result.xpath(content_xpath)[0])
+
+ # append result
+ results.append({'url': url,
+ 'title': title,
+ 'content': content})
+
+ # if no suggestion found, return results
+ suggestions = dom.xpath(suggestion_xpath)
+ if not suggestions:
+ return results
+
+ # parse suggestion
+ for suggestion in suggestions:
+ # append suggestion
+ results.append({'suggestion': extract_text(suggestion)})
+
+ # return results
+ return results
+
+
+# get supported languages from their site
+def _fetch_supported_languages(resp):
+ supported_languages = []
+ dom = html.fromstring(resp.text)
+ options = dom.xpath('//div[@id="yschlang"]/span/label/input')
+ for option in options:
+ code_parts = option.xpath('./@value')[0][5:].split('_')
+ if len(code_parts) == 2:
+ code = code_parts[0] + '-' + code_parts[1].upper()
+ else:
+ code = code_parts[0]
+ supported_languages.append(code)
+
+ return supported_languages
diff --git a/searx/engines/yahoo_news.py b/searx/engines/yahoo_news.py
new file mode 100644
index 0000000..b61384d
--- /dev/null
+++ b/searx/engines/yahoo_news.py
@@ -0,0 +1,107 @@
+# Yahoo (News)
+#
+# @website https://news.yahoo.com
+# @provide-api yes (https://developer.yahoo.com/boss/search/)
+# $0.80/1000 queries
+#
+# @using-api no (because pricing)
+# @results HTML (using search portal)
+# @stable no (HTML can change)
+# @parse url, title, content, publishedDate
+
+import re
+from datetime import datetime, timedelta
+from lxml import html
+from searx.engines.xpath import extract_text, extract_url
+from searx.engines.yahoo import (
+ parse_url, _fetch_supported_languages, supported_languages_url, language_aliases
+)
+from dateutil import parser
+from searx.url_utils import urlencode
+from searx.utils import match_language
+
+# engine dependent config
+categories = ['news']
+paging = True
+language_support = True
+
+# search-url
+search_url = 'https://news.search.yahoo.com/search?{query}&b={offset}&{lang}=uh3_news_web_gs_1&pz=10&xargs=0&vl=lang_{lang}' # noqa
+
+# specific xpath variables
+results_xpath = '//ol[contains(@class,"searchCenterMiddle")]//li'
+url_xpath = './/h3/a/@href'
+title_xpath = './/h3/a'
+content_xpath = './/div[@class="compText"]'
+publishedDate_xpath = './/span[contains(@class,"tri")]'
+suggestion_xpath = '//div[contains(@class,"VerALSOTRY")]//a'
+
+
+# do search-request
+def request(query, params):
+ offset = (params['pageno'] - 1) * 10 + 1
+
+ language = match_language(params['language'], supported_languages, language_aliases).split('-')[0]
+
+ params['url'] = search_url.format(offset=offset,
+ query=urlencode({'p': query}),
+ lang=language)
+
+ # TODO required?
+ params['cookies']['sB'] = '"v=1&vm=p&fl=1&vl=lang_{lang}&sh=1&pn=10&rw=new'\
+ .format(lang=language)
+ return params
+
+
+def sanitize_url(url):
+ if ".yahoo.com/" in url:
+ return re.sub(u"\\;\\_ylt\\=.+$", "", url)
+ else:
+ return url
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ # parse results
+ for result in dom.xpath(results_xpath):
+ urls = result.xpath(url_xpath)
+ if len(urls) != 1:
+ continue
+ url = sanitize_url(parse_url(extract_url(urls, search_url)))
+ title = extract_text(result.xpath(title_xpath)[0])
+ content = extract_text(result.xpath(content_xpath)[0])
+
+ # parse publishedDate
+ publishedDate = extract_text(result.xpath(publishedDate_xpath)[0])
+
+ # still useful ?
+ if re.match("^[0-9]+ minute(s|) ago$", publishedDate):
+ publishedDate = datetime.now() - timedelta(minutes=int(re.match(r'\d+', publishedDate).group()))
+ elif re.match("^[0-9]+ days? ago$", publishedDate):
+ publishedDate = datetime.now() - timedelta(days=int(re.match(r'\d+', publishedDate).group()))
+ elif re.match("^[0-9]+ hour(s|), [0-9]+ minute(s|) ago$", publishedDate):
+ timeNumbers = re.findall(r'\d+', publishedDate)
+ publishedDate = datetime.now()\
+ - timedelta(hours=int(timeNumbers[0]))\
+ - timedelta(minutes=int(timeNumbers[1]))
+ else:
+ try:
+ publishedDate = parser.parse(publishedDate)
+ except:
+ publishedDate = datetime.now()
+
+ if publishedDate.year == 1900:
+ publishedDate = publishedDate.replace(year=datetime.now().year)
+
+ # append result
+ results.append({'url': url,
+ 'title': title,
+ 'content': content,
+ 'publishedDate': publishedDate})
+
+ # return results
+ return results
diff --git a/searx/engines/yandex.py b/searx/engines/yandex.py
new file mode 100644
index 0000000..1c789f6
--- /dev/null
+++ b/searx/engines/yandex.py
@@ -0,0 +1,64 @@
+"""
+ Yahoo (Web)
+
+ @website https://yandex.ru/
+ @provide-api ?
+ @using-api no
+ @results HTML (using search portal)
+ @stable no (HTML can change)
+ @parse url, title, content
+"""
+
+from lxml import html
+from searx import logger
+from searx.url_utils import urlencode
+
+logger = logger.getChild('yandex engine')
+
+# engine dependent config
+categories = ['general']
+paging = True
+language_support = True # TODO
+
+default_tld = 'com'
+language_map = {'ru': 'ru',
+ 'ua': 'ua',
+ 'be': 'by',
+ 'kk': 'kz',
+ 'tr': 'com.tr'}
+
+# search-url
+base_url = 'https://yandex.{tld}/'
+search_url = 'search/?{query}&p={page}'
+
+results_xpath = '//li[@class="serp-item"]'
+url_xpath = './/h2/a/@href'
+title_xpath = './/h2/a//text()'
+content_xpath = './/div[@class="text-container typo typo_text_m typo_line_m organic__text"]//text()'
+
+
+def request(query, params):
+ lang = params['language'].split('-')[0]
+ host = base_url.format(tld=language_map.get(lang) or default_tld)
+ params['url'] = host + search_url.format(page=params['pageno'] - 1,
+ query=urlencode({'text': query}))
+ return params
+
+
+# get response from search-request
+def response(resp):
+ dom = html.fromstring(resp.text)
+ results = []
+
+ for result in dom.xpath(results_xpath):
+ try:
+ res = {'url': result.xpath(url_xpath)[0],
+ 'title': ''.join(result.xpath(title_xpath)),
+ 'content': ''.join(result.xpath(content_xpath))}
+ except:
+ logger.exception('yandex parse crash')
+ continue
+
+ results.append(res)
+
+ return results
diff --git a/searx/engines/youtube_api.py b/searx/engines/youtube_api.py
new file mode 100644
index 0000000..f8bc353
--- /dev/null
+++ b/searx/engines/youtube_api.py
@@ -0,0 +1,81 @@
+# Youtube (Videos)
+#
+# @website https://www.youtube.com/
+# @provide-api yes (https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.search.list)
+#
+# @using-api yes
+# @results JSON
+# @stable yes
+# @parse url, title, content, publishedDate, thumbnail, embedded
+
+from json import loads
+from dateutil import parser
+from searx.url_utils import urlencode
+
+# engine dependent config
+categories = ['videos', 'music']
+paging = False
+language_support = True
+api_key = None
+
+# search-url
+base_url = 'https://www.googleapis.com/youtube/v3/search'
+search_url = base_url + '?part=snippet&{query}&maxResults=20&key={api_key}'
+
+embedded_url = '<iframe width="540" height="304" ' +\
+ 'data-src="//www.youtube-nocookie.com/embed/{videoid}" ' +\
+ 'frameborder="0" allowfullscreen></iframe>'
+
+base_youtube_url = 'https://www.youtube.com/watch?v='
+
+
+# do search-request
+def request(query, params):
+ params['url'] = search_url.format(query=urlencode({'q': query}),
+ api_key=api_key)
+
+ params['url'] += '&relevanceLanguage=' + params['language'].split('-')[0]
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ search_results = loads(resp.text)
+
+ # return empty array if there are no results
+ if 'items' not in search_results:
+ return []
+
+ # parse results
+ for result in search_results['items']:
+ videoid = result['id']['videoId']
+
+ title = result['snippet']['title']
+ content = ''
+ thumbnail = ''
+
+ pubdate = result['snippet']['publishedAt']
+ publishedDate = parser.parse(pubdate)
+
+ thumbnail = result['snippet']['thumbnails']['high']['url']
+
+ content = result['snippet']['description']
+
+ url = base_youtube_url + videoid
+
+ embedded = embedded_url.format(videoid=videoid)
+
+ # append result
+ results.append({'url': url,
+ 'title': title,
+ 'content': content,
+ 'template': 'videos.html',
+ 'publishedDate': publishedDate,
+ 'embedded': embedded,
+ 'thumbnail': thumbnail})
+
+ # return results
+ return results
diff --git a/searx/engines/youtube_noapi.py b/searx/engines/youtube_noapi.py
new file mode 100644
index 0000000..9f01841
--- /dev/null
+++ b/searx/engines/youtube_noapi.py
@@ -0,0 +1,89 @@
+# Youtube (Videos)
+#
+# @website https://www.youtube.com/
+# @provide-api yes (https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.search.list)
+#
+# @using-api no
+# @results HTML
+# @stable no
+# @parse url, title, content, publishedDate, thumbnail, embedded
+
+from lxml import html
+from searx.engines.xpath import extract_text
+from searx.utils import list_get
+from searx.url_utils import quote_plus
+
+# engine dependent config
+categories = ['videos', 'music']
+paging = True
+language_support = False
+time_range_support = True
+
+# search-url
+base_url = 'https://www.youtube.com/results'
+search_url = base_url + '?search_query={query}&page={page}'
+time_range_url = '&sp=EgII{time_range}%253D%253D'
+time_range_dict = {'day': 'Ag',
+ 'week': 'Aw',
+ 'month': 'BA',
+ 'year': 'BQ'}
+
+embedded_url = '<iframe width="540" height="304" ' +\
+ 'data-src="//www.youtube-nocookie.com/embed/{videoid}" ' +\
+ 'frameborder="0" allowfullscreen></iframe>'
+
+base_youtube_url = 'https://www.youtube.com/watch?v='
+
+# specific xpath variables
+results_xpath = "//ol/li/div[contains(@class, 'yt-lockup yt-lockup-tile yt-lockup-video vve-check')]"
+url_xpath = './/h3/a/@href'
+title_xpath = './/div[@class="yt-lockup-content"]/h3/a'
+content_xpath = './/div[@class="yt-lockup-content"]/div[@class="yt-lockup-description yt-ui-ellipsis yt-ui-ellipsis-2"]'
+
+
+# returns extract_text on the first result selected by the xpath or None
+def extract_text_from_dom(result, xpath):
+ r = result.xpath(xpath)
+ if len(r) > 0:
+ return extract_text(r[0])
+ return None
+
+
+# do search-request
+def request(query, params):
+ params['url'] = search_url.format(query=quote_plus(query),
+ page=params['pageno'])
+ if params['time_range'] in time_range_dict:
+ params['url'] += time_range_url.format(time_range=time_range_dict[params['time_range']])
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ # parse results
+ for result in dom.xpath(results_xpath):
+ videoid = list_get(result.xpath('@data-context-item-id'), 0)
+ if videoid is not None:
+ url = base_youtube_url + videoid
+ thumbnail = 'https://i.ytimg.com/vi/' + videoid + '/hqdefault.jpg'
+
+ title = extract_text_from_dom(result, title_xpath) or videoid
+ content = extract_text_from_dom(result, content_xpath)
+
+ embedded = embedded_url.format(videoid=videoid)
+
+ # append result
+ results.append({'url': url,
+ 'title': title,
+ 'content': content,
+ 'template': 'videos.html',
+ 'embedded': embedded,
+ 'thumbnail': thumbnail})
+
+ # return results
+ return results
diff --git a/searx/exceptions.py b/searx/exceptions.py
new file mode 100644
index 0000000..c605ddc
--- /dev/null
+++ b/searx/exceptions.py
@@ -0,0 +1,32 @@
+'''
+searx is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+searx is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with searx. If not, see < http://www.gnu.org/licenses/ >.
+
+(C) 2017- by Alexandre Flament, <alex@al-f.net>
+'''
+
+
+class SearxException(Exception):
+ pass
+
+
+class SearxParameterException(SearxException):
+
+ def __init__(self, name, value):
+ if value == '' or value is None:
+ message = 'Empty ' + name + ' parameter'
+ else:
+ message = 'Invalid value "' + value + '" for parameter ' + name
+ super(SearxParameterException, self).__init__(message)
+ self.parameter_name = name
+ self.parameter_value = value
diff --git a/searx/languages.py b/searx/languages.py
new file mode 100644
index 0000000..cab1245
--- /dev/null
+++ b/searx/languages.py
@@ -0,0 +1,67 @@
+# -*- coding: utf-8 -*-
+# list of language codes
+# this file is generated automatically by utils/update_search_languages.py
+
+language_codes = (
+ (u"ar-SA", u"العربية", u"", u"Arabic"),
+ (u"bg-BG", u"Български", u"", u"Bulgarian"),
+ (u"ca-ES", u"Català", u"", u"Catalan"),
+ (u"cs-CZ", u"Čeština", u"", u"Czech"),
+ (u"da-DK", u"Dansk", u"", 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"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-IN", u"English", u"India", u"English"),
+ (u"en-MY", u"English", u"Malaysia", u"English"),
+ (u"en-US", u"English", u"United States", u"English"),
+ (u"es", u"Español", u"", u"Spanish"),
+ (u"es-AR", u"Español", u"Argentina", 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"et-EE", u"Eesti", u"", u"Estonian"),
+ (u"fa-IR", u"فارسی", u"", u"Persian"),
+ (u"fi-FI", u"Suomi", u"", u"Finnish"),
+ (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"he-IL", u"עברית", u"", u"Hebrew"),
+ (u"hr-HR", u"Hrvatski", u"", u"Croatian"),
+ (u"hu-HU", u"Magyar", u"", u"Hungarian"),
+ (u"id-ID", u"Indonesia", u"", u"Indonesian"),
+ (u"is-IS", u"Íslenska", u"", u"Icelandic"),
+ (u"it-IT", u"Italiano", u"", u"Italian"),
+ (u"ja-JP", u"日本語", u"", u"Japanese"),
+ (u"ko-KR", u"한국어", u"", u"Korean"),
+ (u"lt-LT", u"Lietuvių", u"", u"Lithuanian"),
+ (u"lv-LV", u"Latviešu", u"", u"Latvian"),
+ (u"ms-MY", u"Bahasa Melayu", u"", u"Malay"),
+ (u"nb-NO", u"Norsk Bokmål", u"", u"Norwegian Bokmål"),
+ (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"pl-PL", u"Polski", u"", u"Polish"),
+ (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"ro-RO", u"Română", u"", u"Romanian"),
+ (u"ru-RU", u"Русский", u"", u"Russian"),
+ (u"sk-SK", u"Slovenčina", u"", u"Slovak"),
+ (u"sl-SI", u"Slovenščina", u"", u"Slovenian"),
+ (u"sr-RS", u"Српски", u"", u"Serbian"),
+ (u"sv-SE", u"Svenska", u"", u"Swedish"),
+ (u"th-TH", u"ไทย", u"", u"Thai"),
+ (u"tr-TR", u"Türkçe", u"", u"Turkish"),
+ (u"uk-UA", u"Українська", u"", u"Ukrainian"),
+ (u"vi-VN", u"Tiếng Việt", u"", u"Vietnamese"),
+ (u"zh", u"中文", u"", u"Chinese"),
+ (u"zh-CN", u"中文", u"中国", u"Chinese"),
+ (u"zh-TW", u"中文", u"台灣", u"Chinese")
+)
diff --git a/searx/plugins/__init__.py b/searx/plugins/__init__.py
new file mode 100644
index 0000000..4dbcbbd
--- /dev/null
+++ b/searx/plugins/__init__.py
@@ -0,0 +1,88 @@
+'''
+searx is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+searx is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with searx. If not, see < http://www.gnu.org/licenses/ >.
+
+(C) 2015 by Adam Tauber, <asciimoo@gmail.com>
+'''
+from sys import exit, version_info
+from searx import logger
+
+if version_info[0] == 3:
+ unicode = str
+
+logger = logger.getChild('plugins')
+
+from searx.plugins import (oa_doi_rewrite,
+ https_rewrite,
+ infinite_scroll,
+ open_results_on_new_tab,
+ self_info,
+ search_on_category_select,
+ tracker_url_remover,
+ vim_hotkeys)
+
+required_attrs = (('name', (str, unicode)),
+ ('description', (str, unicode)),
+ ('default_on', bool))
+
+optional_attrs = (('js_dependencies', tuple),
+ ('css_dependencies', tuple))
+
+
+class Plugin():
+ default_on = False
+ name = 'Default plugin'
+ description = 'Default plugin description'
+
+
+class PluginStore():
+
+ def __init__(self):
+ self.plugins = []
+
+ def __iter__(self):
+ for plugin in self.plugins:
+ yield plugin
+
+ def register(self, *plugins):
+ for plugin in plugins:
+ for plugin_attr, plugin_attr_type in required_attrs:
+ if not hasattr(plugin, plugin_attr) or not isinstance(getattr(plugin, plugin_attr), plugin_attr_type):
+ logger.critical('missing attribute "{0}", cannot load plugin: {1}'.format(plugin_attr, plugin))
+ exit(3)
+ for plugin_attr, plugin_attr_type in optional_attrs:
+ if not hasattr(plugin, plugin_attr) or not isinstance(getattr(plugin, plugin_attr), plugin_attr_type):
+ setattr(plugin, plugin_attr, plugin_attr_type())
+ plugin.id = plugin.name.replace(' ', '_')
+ self.plugins.append(plugin)
+
+ def call(self, ordered_plugin_list, plugin_type, request, *args, **kwargs):
+ ret = True
+ for plugin in ordered_plugin_list:
+ if hasattr(plugin, plugin_type):
+ ret = getattr(plugin, plugin_type)(request, *args, **kwargs)
+ if not ret:
+ break
+
+ return ret
+
+
+plugins = PluginStore()
+plugins.register(oa_doi_rewrite)
+plugins.register(https_rewrite)
+plugins.register(infinite_scroll)
+plugins.register(open_results_on_new_tab)
+plugins.register(self_info)
+plugins.register(search_on_category_select)
+plugins.register(tracker_url_remover)
+plugins.register(vim_hotkeys)
diff --git a/searx/plugins/https_rewrite.py b/searx/plugins/https_rewrite.py
new file mode 100644
index 0000000..3d98677
--- /dev/null
+++ b/searx/plugins/https_rewrite.py
@@ -0,0 +1,233 @@
+'''
+searx is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+searx is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with searx. If not, see < http://www.gnu.org/licenses/ >.
+
+(C) 2013- by Adam Tauber, <asciimoo@gmail.com>
+'''
+
+import re
+import sys
+from lxml import etree
+from os import listdir, environ
+from os.path import isfile, isdir, join
+from searx.plugins import logger
+from flask_babel import gettext
+from searx import searx_dir
+from searx.url_utils import urlparse
+
+if sys.version_info[0] == 3:
+ unicode = str
+
+name = "HTTPS rewrite"
+description = gettext('Rewrite HTTP links to HTTPS if possible')
+default_on = True
+preference_section = 'privacy'
+
+if 'SEARX_HTTPS_REWRITE_PATH' in environ:
+ rules_path = environ['SEARX_rules_path']
+else:
+ rules_path = join(searx_dir, 'plugins/https_rules')
+
+logger = logger.getChild("https_rewrite")
+
+# https://gitweb.torproject.org/\
+# pde/https-everywhere.git/tree/4.0:/src/chrome/content/rules
+
+# HTTPS rewrite rules
+https_rules = []
+
+
+# load single ruleset from a xml file
+def load_single_https_ruleset(rules_path):
+ ruleset = ()
+
+ # init parser
+ parser = etree.XMLParser()
+
+ # load and parse xml-file
+ try:
+ tree = etree.parse(rules_path, parser)
+ except:
+ # TODO, error message
+ return ()
+
+ # get root node
+ root = tree.getroot()
+
+ # check if root is a node with the name ruleset
+ # TODO improve parsing
+ if root.tag != 'ruleset':
+ return ()
+
+ # check if rule is deactivated by default
+ if root.attrib.get('default_off'):
+ return ()
+
+ # check if rule does only work for specific platforms
+ if root.attrib.get('platform'):
+ return ()
+
+ hosts = []
+ rules = []
+ exclusions = []
+
+ # parse childs from ruleset
+ for ruleset in root:
+ # this child define a target
+ if ruleset.tag == 'target':
+ # check if required tags available
+ if not ruleset.attrib.get('host'):
+ continue
+
+ # convert host-rule to valid regex
+ host = ruleset.attrib.get('host')\
+ .replace('.', r'\.').replace('*', '.*')
+
+ # append to host list
+ hosts.append(host)
+
+ # this child define a rule
+ elif ruleset.tag == 'rule':
+ # check if required tags available
+ if not ruleset.attrib.get('from')\
+ or not ruleset.attrib.get('to'):
+ continue
+
+ # TODO hack, which convert a javascript regex group
+ # into a valid python regex group
+ rule_from = ruleset.attrib['from'].replace('$', '\\')
+ if rule_from.endswith('\\'):
+ rule_from = rule_from[:-1] + '$'
+ rule_to = ruleset.attrib['to'].replace('$', '\\')
+ if rule_to.endswith('\\'):
+ rule_to = rule_to[:-1] + '$'
+
+ # TODO, not working yet because of the hack above,
+ # currently doing that in webapp.py
+ # rule_from_rgx = re.compile(rule_from, re.I)
+
+ # append rule
+ try:
+ rules.append((re.compile(rule_from, re.I | re.U), rule_to))
+ except:
+ # TODO log regex error
+ continue
+
+ # this child define an exclusion
+ elif ruleset.tag == 'exclusion':
+ # check if required tags available
+ if not ruleset.attrib.get('pattern'):
+ continue
+
+ exclusion_rgx = re.compile(ruleset.attrib.get('pattern'))
+
+ # append exclusion
+ exclusions.append(exclusion_rgx)
+
+ # convert list of possible hosts to a simple regex
+ # TODO compress regex to improve performance
+ try:
+ target_hosts = re.compile('^(' + '|'.join(hosts) + ')', re.I | re.U)
+ except:
+ return ()
+
+ # return ruleset
+ return (target_hosts, rules, exclusions)
+
+
+# load all https rewrite rules
+def load_https_rules(rules_path):
+ # check if directory exists
+ if not isdir(rules_path):
+ logger.error("directory not found: '" + rules_path + "'")
+ return
+
+ # search all xml files which are stored in the https rule directory
+ xml_files = [join(rules_path, f)
+ for f in listdir(rules_path)
+ if isfile(join(rules_path, f)) and f[-4:] == '.xml']
+
+ # load xml-files
+ for ruleset_file in xml_files:
+ # calculate rewrite-rules
+ ruleset = load_single_https_ruleset(ruleset_file)
+
+ # skip if no ruleset returned
+ if not ruleset:
+ continue
+
+ # append ruleset
+ https_rules.append(ruleset)
+
+ logger.info('{n} rules loaded'.format(n=len(https_rules)))
+
+
+def https_url_rewrite(result):
+ skip_https_rewrite = False
+ # check if HTTPS rewrite is possible
+ for target, rules, exclusions in https_rules:
+
+ # check if target regex match with url
+ if target.match(result['parsed_url'].netloc):
+ # process exclusions
+ for exclusion in exclusions:
+ # check if exclusion match with url
+ if exclusion.match(result['url']):
+ skip_https_rewrite = True
+ break
+
+ # skip https rewrite if required
+ if skip_https_rewrite:
+ break
+
+ # process rules
+ for rule in rules:
+ try:
+ new_result_url = rule[0].sub(rule[1], result['url'])
+ except:
+ break
+
+ # parse new url
+ new_parsed_url = urlparse(new_result_url)
+
+ # continiue if nothing was rewritten
+ if result['url'] == new_result_url:
+ continue
+
+ # get domainname from result
+ # TODO, does only work correct with TLD's like
+ # asdf.com, not for asdf.com.de
+ # TODO, using publicsuffix instead of this rewrite rule
+ old_result_domainname = '.'.join(
+ result['parsed_url'].hostname.split('.')[-2:])
+ new_result_domainname = '.'.join(
+ new_parsed_url.hostname.split('.')[-2:])
+
+ # check if rewritten hostname is the same,
+ # to protect against wrong or malicious rewrite rules
+ if old_result_domainname == new_result_domainname:
+ # set new url
+ result['url'] = new_result_url
+
+ # target has matched, do not search over the other rules
+ break
+ return result
+
+
+def on_result(request, search, result):
+ if result['parsed_url'].scheme == 'http':
+ https_url_rewrite(result)
+ return True
+
+
+load_https_rules(rules_path)
diff --git a/searx/plugins/https_rules/00README b/searx/plugins/https_rules/00README
new file mode 100644
index 0000000..fcd8a77
--- /dev/null
+++ b/searx/plugins/https_rules/00README
@@ -0,0 +1,17 @@
+<!--
+This directory contains web site rewriting rules for the
+HTTPS Everywhere software, available from
+https://www.eff.org/https-everywhere
+
+These rules were contributed to the project by users and aim to
+enable routine secure access to as many different web sites as
+possible. They are automatically installed together with the
+HTTPS Everywhere software. The presence of these rules does not
+mean that an HTTPS Everywhere user accessed, or intended to
+access, any particular web site.
+
+For information about how to create additional HTTPS Everywhere
+rewriting rules to add support for new sites, please see
+
+https://www.eff.org/https-everywhere/rulesets
+-->
diff --git a/searx/plugins/https_rules/Bing.xml b/searx/plugins/https_rules/Bing.xml
new file mode 100644
index 0000000..8b403f1
--- /dev/null
+++ b/searx/plugins/https_rules/Bing.xml
@@ -0,0 +1,56 @@
+<!--
+ For other Microsoft coverage, see Microsoft.xml.
+
+
+ CDN buckets:
+
+ - a134.lm.akamai.net
+
+ - akam.bing.com
+ - *.mm.bing.net
+
+
+ Nonfunctional domains:
+
+ - m2.cn.bing.com
+ - origin.bj1.bing.com
+ - blogs.bing.com
+
+
+ Fully covered domains:
+
+ - bing.com subdomains:
+
+ - (www.)
+ - c.bing (tracking beacons)
+ - cn.bing
+ - h.bing
+ - ssl
+ - testfamilysafety.bing
+ - udc.bing
+ - (www.)bing
+
+ - *.mm.bing.net
+ - api.bing.com
+
+-->
+<ruleset name="Bing">
+
+ <target host="bing.com" />
+ <target host="*.bing.com" />
+ <target host="*.mm.bing.net" />
+
+
+ <securecookie host=".*\.bing\.com$" name=".+" />
+
+
+ <rule from="^http://((?:c|cn|h|ssl|testfamilysafety|udc|www)\.)?bing\.com/"
+ to="https://$1bing.com/" />
+
+ <rule from="^http://([^/:@]*)\.mm\.bing\.net/"
+ to="https://$1.mm.bing.com/"/>
+
+ <rule from="^http://([^/:@]*)\.api\.bing\.net/"
+ to="https://$1.api.bing.com/"/>
+
+</ruleset>
diff --git a/searx/plugins/https_rules/Dailymotion.xml b/searx/plugins/https_rules/Dailymotion.xml
new file mode 100644
index 0000000..743100c
--- /dev/null
+++ b/searx/plugins/https_rules/Dailymotion.xml
@@ -0,0 +1,69 @@
+<!--
+ Nonfunctional domains:
+
+ - blog.dailymotion.com
+ - press.dailymotion.com (shows steaw.com, CN: www.steaw.com)
+ - proxy-46.dailymotion.com
+ - publicite.dailymotion.com
+ - publisher.dailymotion.com (reset)
+ - vid.ak.dmcdn.net (403, Akamai)
+ - vid2.ak.dmcdn.net (504, akamai)
+
+
+ Problematic domains:
+
+ - ak2.static.dailymotion.com (mismatched, CN: *.dmcdn.net)
+ - support.dmcloud.net (mismatched, CN: *.zendesk.com)
+
+
+ Partially covered domains:
+
+ - (www.)dailymotion.com
+
+ - cdn/manifest/video/\w+.mnft 403s
+ - crossdomain.xml breaks videos
+
+-->
+<ruleset name="Dailymotion (default off)" default_off="breaks some embedded videos">
+
+ <target host="dailymotion.com" />
+ <!--
+ * for cross-domain cookie.
+ -->
+ <target host="*.dailymotion.com" />
+ <!--
+ https://mail1.eff.org/pipermail/https-everywhere-rules/2012-July/001241.html
+ -->
+ <exclusion pattern="^http://(?:www\.)?dailymotion\.com/(?:cdn/[\w-]+/video/|crossdomain\.xml$)" />
+ <target host="ak2.static.dailymotion.com" />
+ <target host="*.dmcdn.net" />
+ <target host="dmcloud.net" />
+ <target host="*.dmcloud.net" />
+
+
+ <!-- Testing wrt embedded breakage.
+
+ securecookie host="^.*\.dailymotion\.com$" name=".+" /-->
+ <!--
+ Omniture tracking cookies:
+ -->
+ <securecookie host="^\.dailymotion\.com$" name="^s_\w+$" />
+ <securecookie host="^www\.dailymotion\.com$" name=".+" />
+
+
+ <rule from="^http://(erroracct\.|www\.)?dailymotion\.com/"
+ to="https://$1dailymotion.com/" />
+
+ <rule from="^http://(s\d|static(?:\d|s\d-ssl))\.dmcdn\.net/"
+ to="https://$1.dmcdn.net/" />
+
+ <rule from="^https?://ak2\.static\.dailymotion\.com/"
+ to="https://static1-ssl.dmcdn.net/" />
+
+ <rule from="^http://(s\.|www\.)?dmcloud\.net/"
+ to="https://$1dmcloud.net/" />
+
+ <rule from="^https?://support\.dmcloud\.net/"
+ to="https://dmcloud.zendesk.com/" />
+
+</ruleset>
diff --git a/searx/plugins/https_rules/Deviantart.xml b/searx/plugins/https_rules/Deviantart.xml
new file mode 100644
index 0000000..7830fc2
--- /dev/null
+++ b/searx/plugins/https_rules/Deviantart.xml
@@ -0,0 +1,53 @@
+<!--
+ For problematic rules, see Deviantart-mismatches.xml.
+
+
+ Other deviantArt rulesets:
+
+ - Sta.sh.xml
+
+
+ ToDo: Find edgecast URL for /(fc|th)\d+.
+
+
+ Mixed content:
+
+ - Images on *.....com from e.deviantart.net *
+
+ * Secured by us
+
+-->
+<ruleset name="DeviantArt (pending)" default_off="site operator says not ready yet">
+
+ <target host="deviantart.com" />
+ <target host="*.deviantart.com" />
+ <target host="deviantart.net" />
+ <target host="*.deviantart.net" />
+
+
+ <!-- Not secured by server:
+ -->
+ <!--securecookie host="^\.deviantart\.com$" name="^userinfo$" /-->
+
+ <securecookie host="^\.deviantart\.com$" name=".*" />
+
+
+ <!-- Redirects from com to net, but does so successfully by itself.
+ -->
+ <rule from="^http://([aei]|fc\d\d|s[ht]|th\d\d)\.deviantart\.(com|net)/"
+ to="https://$1.deviantart.$2/" />
+
+ <!-- This handles everything that isn't in the first rule.
+ Namely, usernames, backend, fc, th, and (www.).
+ These domains present a cert that is only
+ valid for .com.
+ Note that .net isn't used on DA, but.net does
+ redirect to .com, and we shouldn't break what would
+ otherwise work.
+ Mustn't rewrite from https here, as doing so
+ would conflict with the first rule.
+ -->
+ <rule from="^http://([^/:@\.]+\.)?deviantart\.(?:com|net)/"
+ to="https://$1deviantart.com/" />
+
+</ruleset>
diff --git a/searx/plugins/https_rules/DuckDuckGo.xml b/searx/plugins/https_rules/DuckDuckGo.xml
new file mode 100644
index 0000000..173a9ad
--- /dev/null
+++ b/searx/plugins/https_rules/DuckDuckGo.xml
@@ -0,0 +1,38 @@
+<!--
+ Problematic domains:
+
+ - www.dukgo.com (mismatched, CN: dukgo.com)
+
+
+ Fully covered domains:
+
+ - (www.)dukgo.com (www → ^)
+
+-->
+<ruleset name="DuckDuckGo">
+ <target host="duckduckgo.com" />
+ <target host="*.duckduckgo.com" />
+ <target host="ddg.gg" />
+ <target host="duck.co" />
+ <target host="i.duck.co" />
+ <target host="dukgo.com" />
+ <target host="www.dukgo.com" />
+
+ <exclusion pattern="^http://(help|meme)\.duckduckgo\.com/" />
+
+ <securecookie host="^duck\.co$" name=".*"/>
+
+ <rule from="^http://duckduckgo\.com/" to="https://duckduckgo.com/"/>
+ <rule from="^http://([^/:@\.]+)\.duckduckgo\.com/" to="https://$1.duckduckgo.com/"/>
+ <!-- TODO: What does ddg.gg/foo do? Runs query foo, redirects to homepage, or error? -->
+ <rule from="^http://ddg\.gg/$" to="https://duckduckgo.com/" />
+
+ <rule from="^http://duck\.co/" to="https://duck.co/" />
+
+ <rule from="^http://i\.duck\.co/"
+ to="https://duckduckgo.com/"/>
+
+ <rule from="^http://(?:www\.)?dukgo\.com/"
+ to="https://dukgo.com/" />
+
+</ruleset>
diff --git a/searx/plugins/https_rules/Flickr.xml b/searx/plugins/https_rules/Flickr.xml
new file mode 100644
index 0000000..85c6e80
--- /dev/null
+++ b/searx/plugins/https_rules/Flickr.xml
@@ -0,0 +1,44 @@
+<!--
+ For other Yahoo coverage, see Yahoo.xml.
+
+
+ These altnames don't exist:
+
+ - www.blog.flickr.net
+ - www.code.flickr.net
+
+-->
+<ruleset name="Flickr">
+
+ <target host="flic.kr" />
+ <target host="*.flic.kr" />
+ <target host="flickr.com" />
+ <target host="*.flickr.com" />
+ <target host="*.flickr.net" />
+ <target host="*.staticflickr.com" />
+
+
+ <!-- Not secured by server:
+ -->
+ <!--securecookie host="^\.flic\.kr$" name="^BX$" /-->
+
+ <securecookie host="^\.flic\.kr$" name=".+" />
+ <securecookie host=".*\.flickr\.com$" name=".+" />
+
+
+ <rule from="^http://flic\.kr/"
+ to="https://flic.kr/" />
+
+ <rule from="^http://(api\.|www\.)?flickr\.com/"
+ to="https://$1flickr.com/" />
+
+ <rule from="^http://s(ecure|tatic)\.flickr\.com/"
+ to="https://s$1.flickr.com/" />
+
+ <rule from="^http://(c2|farm\d+)\.static(\.)?flickr\.com/"
+ to="https://$1.static$2flickr.com/" />
+
+ <rule from="^http://(blog|code)\.flickr\.net/"
+ to="https://$1.flickr.net/" />
+
+</ruleset>
diff --git a/searx/plugins/https_rules/Github-Pages.xml b/searx/plugins/https_rules/Github-Pages.xml
new file mode 100644
index 0000000..d3be58a
--- /dev/null
+++ b/searx/plugins/https_rules/Github-Pages.xml
@@ -0,0 +1,11 @@
+<!--
+ For other GitHub coverage, see Github.xml.
+-->
+<ruleset name="GitHub Pages">
+
+ <target host="*.github.io" />
+
+ <rule from="^http://([^/@:\.]+)\.github\.io/"
+ to="https://$1.github.io/" />
+
+</ruleset>
diff --git a/searx/plugins/https_rules/Github.xml b/searx/plugins/https_rules/Github.xml
new file mode 100644
index 0000000..a9a3a1e
--- /dev/null
+++ b/searx/plugins/https_rules/Github.xml
@@ -0,0 +1,94 @@
+<!--
+ Other GitHub rulesets:
+
+ - Github-Pages.xml
+ - Guag.es.xml
+ - Speaker_Deck.com.xml
+
+
+ CDN buckets:
+
+ - github-images.s3.amazonaws.com
+ - github.global.ssl.fastly.net
+ - a248.e.akamai.net/assets.github.com/
+ - a248.e.akamai.net/camo.github.com/
+ - s3.amazonaws.com/github/ | d24z2fz21y4fag.cloudfront.net
+ - github.myshopify.com
+
+
+ Fully covered domains:
+
+ - github.com subdomains:
+
+ - (www.)
+ - assets\d+
+ - assets-cdn
+ - bounty
+ - cloud
+ - f.cloud
+ - codeload
+ - developer
+ - eclipse
+ - enterprise
+ - gist
+ - gist-assets
+ - help
+ - identicons
+ - jobs
+ - mac
+ - mobile
+ - nodeload
+ - octodex
+ - pages
+ - raw
+ - rg3
+ - shop
+ - status
+ - support
+ - training
+ - try
+ - wiki
+ - windows
+
+ - collector.githubapp.com
+
+ - githubusercontent.com
+
+-->
+<ruleset name="GitHub">
+
+ <target host="github.com" />
+ <target host="*.github.com" />
+ <target host="github.io" />
+ <target host="*.githubusercontent.com" />
+ <target host="collector.githubapp.com" />
+
+
+ <!-- Secured by server:
+ -->
+ <!--securecookie host="^github\.com$" name="^(_gh_sess|tz|user_session)$" /-->
+ <!--securecookie host="^\.github\.com$" name="^(dotcom_user|logged_in)$" /-->
+ <!--securecookie host="^enterprise\.github\.com$" name="^(_enterprise_web|request_method)$" /-->
+ <!--securecookie host="^gist\.github\.com$" name="^_gist_session$" /-->
+ <!--securecookie host="^help\.github\.com$" name="^_help_session$" /-->
+ <!--
+ Not secured by server:
+ -->
+ <!--securecookie host="^status\.github\.com$" name="^rack\.session$" /-->
+
+ <securecookie host="^(?:.*\.)?github\.com$" name=".+" />
+
+
+ <rule from="^http://((?:assets\d+|assets-cdn|bounty|cloud|f\.cloud|codeload|developer|eclipse|enterprise|gist|gist-assets|help|identicons|jobs|mac|mobile|nodeload|octodex|pages|raw|rg3|shop|status|support|training|try|wiki|windows|www)\.)?github\.com/"
+ to="https://$1github.com/" />
+
+ <rule from="^http://collector\.githubapp\.com/"
+ to="https://collector.githubapp.com/" />
+
+ <rule from="^https?://github\.io/"
+ to="https://pages.github.com/" />
+
+ <rule from="^http://([^/@:\.]+)\.githubusercontent\.com/"
+ to="https://$1.githubusercontent.com/" />
+
+</ruleset>
diff --git a/searx/plugins/https_rules/Google-mismatches.xml b/searx/plugins/https_rules/Google-mismatches.xml
new file mode 100644
index 0000000..de9d3eb
--- /dev/null
+++ b/searx/plugins/https_rules/Google-mismatches.xml
@@ -0,0 +1,26 @@
+<!--
+
+ Problematic domains:
+
+ - (www.)apture.com (works, mismatched, CN: *.google.com)
+
+-->
+<ruleset name="Google (mismatches)" default_off="mismatches">
+
+ <!-- Akamai -->
+ <target host="js.admeld.com"/>
+ <target host="apture.com" />
+ <target host="www.apture.com" />
+ <target host="googleartproject.com"/>
+ <target host="www.googleartproject.com"/>
+
+ <rule from="^http://js\.admeld\.com/"
+ to="https://js.admeld.com/"/>
+
+ <rule from="^https?://(?:www\.)?apture\.com/"
+ to="https://apture.com/" />
+
+ <rule from="^http://(?:www\.)?googleartproject\.com/"
+ to="https://www.googleartproject.com/"/>
+
+</ruleset>
diff --git a/searx/plugins/https_rules/Google.org.xml b/searx/plugins/https_rules/Google.org.xml
new file mode 100644
index 0000000..d6cc478
--- /dev/null
+++ b/searx/plugins/https_rules/Google.org.xml
@@ -0,0 +1,14 @@
+<!--
+ For other Google coverage, see GoogleServices.xml.
+
+-->
+<ruleset name="Google.org">
+
+ <target host="google.org" />
+ <target host="www.google.org" />
+
+
+ <rule from="^http://(www\.)?google\.org/"
+ to="https://$1google.org/" />
+
+</ruleset> \ No newline at end of file
diff --git a/searx/plugins/https_rules/GoogleAPIs.xml b/searx/plugins/https_rules/GoogleAPIs.xml
new file mode 100644
index 0000000..85a5a80
--- /dev/null
+++ b/searx/plugins/https_rules/GoogleAPIs.xml
@@ -0,0 +1,143 @@
+<!--
+ For other Google coverage, see GoogleServices.xml.
+
+
+ Nonfunctional domains:
+
+ - hosted.gmodules.com *
+ - img0.gmodules.com *
+ - p.gmodules.com *
+
+ * 404; mismatched, CN: *.googleusercontent.com
+
+
+ Problematic domains:
+
+ - gmodules.com (503, CN: www.google.com)
+ - www.gmodules.com (503, CN: *.googleusercontent.com)
+ - gstatic.com (404, valid cert)
+ - api.recaptcha.net (works; mismatched, CN: google.com)
+
+
+ Partially covered domains:
+
+ - (www.)gmodules.com (→ www.google.com)
+ - (www.)google.com
+ - chart.apis.google.com (→ chart.googleapis.com)
+
+
+ Fully covered domains:
+
+ - api.google.com
+
+ - *.clients.google.com:
+
+ - linkhelp
+
+ - ssl.google-analytics.com
+ - www.google-analytics.com
+
+ - googleapis.com subdomains:
+
+ - ajax
+ - chart
+ - *.commondatastorage
+ - fonts
+ - *.storage
+ - www
+
+ - gstatic.com subdomains:
+
+ - (www.) (^ → www)
+ - csi
+ - encrypted-tbn\d
+ - g0
+ - *.metric
+ - ssl
+ - t\d
+
+ - api.recaptcha.net (→ www.google.com)
+ - api-secure.recaptcha.net
+ - gdata.youtube.com
+
+
+ ssl.google-analytics.com/ga.js sets __utm\w wildcard
+ cookies on whichever domain it is loaded from.
+
+-->
+<ruleset name="Google APIs">
+
+ <target host="gmodules.com" />
+ <target host="www.gmodules.com" />
+ <target host="google.com" />
+ <target host="apis.google.com" />
+ <target host="*.apis.google.com" />
+ <target host="*.clients.google.com" />
+ <target host="www.google.com" />
+ <target host="*.google-analytics.com" />
+ <target host="*.googleapis.com" />
+ <target host="gstatic.com" />
+ <target host="*.gstatic.com" />
+ <!-- Captive portal detection redirects to this URL, and many captive
+ portals break TLS, so exempt this redirect URL.
+ See GitHub bug #368
+ -->
+ <exclusion pattern="^http://www\.gstatic\.com/generate_204" />
+ <target host="*.recaptcha.net" />
+ <target host="gdata.youtube.com" />
+ <exclusion pattern="^http://gdata\.youtube\.com/crossdomain\.xml" />
+
+
+ <securecookie host="^ssl\.google-analytics\.com$" name=".+" />
+
+
+ <rule from="^http://(?:www\.)?gmodules\.com/ig/images/"
+ to="https://www.google.com/ig/images/" />
+
+ <!-- jsapi was causing problems on some sites that embed google maps:
+ https://trac.torproject.org/projects/tor/ticket/2335
+ Apparently now fixed; thanks, Google!
+ -->
+ <rule from="^http://(?:www\.)?google\.com/(afsonline/|chart|jsapi|recaptcha/|uds)"
+ to="https://www.google.com/$1" />
+
+ <rule from="^http://(api|[\w-]+\.client)s\.google\.com/"
+ to="https://$1s.google.com/" />
+
+ <rule from="^http://chart\.apis\.google\.com/chart"
+ to="https://chart.googleapis.com/chart" />
+
+ <rule from="^http://(ssl|www)\.google-analytics\.com/"
+ to="https://$1.google-analytics.com/" />
+
+ <rule from="^http://(ajax|chart|fonts|www)\.googleapis\.com/"
+ to="https://$1.googleapis.com/" />
+
+ <rule from="^http://([^@:\./]+\.)?(commondata)?storage\.googleapis\.com/"
+ to="https://$1$2storage.googleapis.com/" />
+
+ <!-- There is an interesting question about whether we should
+ append &strip=1 to all cache URLs. This causes them to load
+ without images and styles, which is more secure but can look
+ worse.
+ Without &strip=1, the images and styles from the cached
+ pages still load from the original, typically unencrypted, page.
+ With &strip=1, the cached page will be text-only and
+ will come exclusively from Google's HTTPS server.
+ -->
+ <rule from="^http://(?:www\.)?gstatic\.com/"
+ to="https://www.gstatic.com/" />
+
+ <rule from="^http://(csi|encrypted-tbn\d|g0|[\w-]+\.metric|ssl|t\d)\.gstatic\.com/"
+ to="https://$1.gstatic.com/" />
+
+ <rule from="^http://api\.recaptcha\.net/"
+ to="https://www.google.com/recaptcha/api/" />
+
+ <rule from="^http://api-secure\.recaptcha\.net/"
+ to="https://api-secure.recaptcha.net/" />
+
+ <rule from="^http://gdata\.youtube\.com/"
+ to="https://gdata.youtube.com/" />
+
+</ruleset>
diff --git a/searx/plugins/https_rules/GoogleCanada.xml b/searx/plugins/https_rules/GoogleCanada.xml
new file mode 100644
index 0000000..d5eefe8
--- /dev/null
+++ b/searx/plugins/https_rules/GoogleCanada.xml
@@ -0,0 +1,6 @@
+<ruleset name="GoogleCanada">
+ <target host="google.ca" />
+ <target host="*.google.ca" />
+ <rule from="^http://([^/:@\.]+)\.google\.ca/finance" to="https://$1.google.ca/finance"/>
+</ruleset>
+
diff --git a/searx/plugins/https_rules/GoogleImages.xml b/searx/plugins/https_rules/GoogleImages.xml
new file mode 100644
index 0000000..0112001
--- /dev/null
+++ b/searx/plugins/https_rules/GoogleImages.xml
@@ -0,0 +1,65 @@
+<!--
+ For other Google coverage, see GoogleServices.xml.
+
+
+ Problematic domains:
+
+ - www.google.bo *
+ - www.google.co *
+ - www.google.ec *
+ - www.google.in *
+ - www.google.kr *
+ - www.google.com.kz **
+ - www.google.com.lk *
+ - www.google.mx **
+ - www.google.sg *
+ - www.google.sl *
+ - www.google.ug *
+ - www.google.vn *
+
+ * 404; mismatched, CN: google.com
+ ** Works; mismatched, CN: google.com
+
+-->
+<ruleset name="Google Images">
+
+ <target host="google.*" />
+ <target host="www.google.*" />
+ <target host="google.co.*" />
+ <target host="www.google.co.*" />
+ <target host="google.com" />
+ <target host="images.google.com" />
+ <target host="google.com.*" />
+ <target host="www.google.com.*" />
+ <!--
+ Only handle image-related paths in this ruleset:
+ -->
+ <exclusion pattern="^http://(?:www\.)?google(?:\.com?)?\.\w{2,3}/(?!(?:advanced_image_search|imghp|.*tb(?:m=isch|s=sbi)))" />
+
+
+ <rule from="^http://(?:www\.)?google\.com/"
+ to="https://www.google.com/" />
+
+ <rule from="^http://images\.google\.com/"
+ to="https://images.google.com/" />
+
+ <!-- First handle problematic domains:
+ -->
+ <rule from="^http://(?:www\.)?google\.co/"
+ to="https://www.google.com/" />
+
+ <rule from="^http://(?:www\.)?google\.(?:co\.)?(in|kr|ug)/"
+ to="https://www.google.co.$1/" />
+
+ <rule from="^http://(?:www\.)?google\.(?:com\.)?(kz|lk)/"
+ to="https://www.google.$1/" />
+
+ <rule from="^http://(?:www\.)?google\.(?:com\.)?(bo|ec|mx|sg|sl|vn)/"
+ to="https://www.google.com.$1/" />
+
+ <!-- And then the rest:
+ -->
+ <rule from="^http://(?:www\.)?google\.(com?\.)?(ae|ar|at|au|bg|bh|br|ca|ch|cl|co|cr|cu|de|eg|es|fi|fr|gh|gt|hr|id|ie|il|it|jo|jp|jm|ke|kw|lb|ly|my|na|ng|nl|no|nz|om|pa|pe|pk|pl|pt|py|qa|ro|ru|rw|sa|se|sv|th|tr|uk|uy|ve|za|zw)/"
+ to="https://www.google.$1$2/" />
+
+</ruleset>
diff --git a/searx/plugins/https_rules/GoogleMainSearch.xml b/searx/plugins/https_rules/GoogleMainSearch.xml
new file mode 100644
index 0000000..df504d9
--- /dev/null
+++ b/searx/plugins/https_rules/GoogleMainSearch.xml
@@ -0,0 +1,78 @@
+<ruleset name="Search www.google.com">
+
+<!--
+Enabling this ruleset should cause searches to go to
+https://www.google.com rather than https://encrypted.google.com. Note that
+the filename is important; it must be before GoogleSearch.xml in a bash
+expansion of src/chrome/content/rules/*.xml in order to take precedence.
+-->
+
+ <target host="*.google.com" />
+ <target host="google.com" />
+ <target host="www.google.com.*" />
+ <target host="google.com.*" />
+ <target host="www.google.co.*" />
+ <target host="google.co.*" />
+ <target host="www.google.*" />
+ <target host="google.*" />
+ <!-- beyond clients1 these do not currently exist in the ccTLDs,
+ but just in case... -->
+ <target host="clients1.google.com.*" />
+ <target host="clients2.google.com.*" />
+ <target host="clients3.google.com.*" />
+ <target host="clients4.google.com.*" />
+ <target host="clients5.google.com.*" />
+ <target host="clients6.google.com.*" />
+ <target host="clients1.google.co.*" />
+ <target host="clients2.google.co.*" />
+ <target host="clients3.google.co.*" />
+ <target host="clients4.google.co.*" />
+ <target host="clients5.google.co.*" />
+ <target host="clients6.google.co.*" />
+ <target host="clients1.google.*" />
+ <target host="clients2.google.*" />
+ <target host="clients3.google.*" />
+ <target host="clients4.google.*" />
+ <target host="clients5.google.*" />
+ <target host="clients6.google.*" />
+
+ <rule from="^http://www\.google\.com/$"
+ to="https://www.google.com/"/>
+
+ <!-- The most basic case. -->
+
+ <rule from="^http://(?:www\.)?google\.com/search"
+ to="https://www.google.com/search"/>
+
+ <!-- A very annoying exception that we seem to need for the basic case -->
+
+ <exclusion pattern="^http://(?:www\.)?google\.com/search.*tbs=shop" />
+ <exclusion pattern="^http://clients[0-9]\.google\.com/.*client=products.*" />
+ <exclusion pattern="^http://suggestqueries\.google\.com/.*client=.*" />
+
+ <!-- https://trac.torproject.org/projects/tor/ticket/9713 -->
+
+ <exclusion pattern="^http://clients[0-9]\.google\.com/ocsp" />
+
+ <!-- This is necessary for image results links from web search results -->
+
+ <exclusion pattern="^http://(?:www\.)?google\.com/search.*tbm=isch.*" />
+
+ <rule from="^http://(?:www\.)?google\.com/webhp"
+ to="https://www.google.com/webhp"/>
+
+ <rule from="^http://(?:www\.)?google\.com/#"
+ to="https://www.google.com/#"/>
+
+ <rule from="^http://(?:www\.)?google\.com/$"
+ to="https://www.google.com/"/>
+
+ <!-- Completion urls look like this:
+
+http://clients2.google.co.jp/complete/search?hl=ja&client=hp&expIds=17259,24660,24729,24745&q=m&cp=1 HTTP/1.1\r\n
+
+ -->
+ <rule from="^http://clients[0-9]\.google\.com/complete/search"
+ to="https://clients1.google.com/complete/search"/>
+
+</ruleset>
diff --git a/searx/plugins/https_rules/GoogleMaps.xml b/searx/plugins/https_rules/GoogleMaps.xml
new file mode 100644
index 0000000..0f82c52
--- /dev/null
+++ b/searx/plugins/https_rules/GoogleMaps.xml
@@ -0,0 +1,67 @@
+<!--
+ Problematic domains:
+
+ - khms *
+ - khms[0-3] *
+
+ * $ 404s
+
+
+ Fully covered domains:
+
+ - google.com subdomains:
+
+ - khms
+ - khms[0-3]
+
+-->
+<ruleset name="Google Maps">
+
+ <target host="maps.google.*" />
+ <!--
+ https://trac.torproject.org/projects/tor/ticket/8627
+ -->
+ <exclusion pattern="^http://maps\.google\.com/local_url" />
+ <exclusion pattern="^http://maps\.google\.gr/transitathens" />
+ <target host="maps.google.co.*" />
+ <target host="khms.google.com" />
+ <target host="khms0.google.com" />
+ <target host="khms1.google.com" />
+ <target host="khms2.google.com" />
+ <target host="khms3.google.com" />
+ <target host="maps-api-ssl.google.com" />
+ <target host="mw2.google.com" />
+ <target host="maps.google.com.*" />
+ <target host="maps.googleapis.com" />
+ <!--
+ https://mail1.eff.org/pipermail/https-everywhere-rules/2012-September/001317.html
+ -->
+ <!--exclusion pattern="^http://maps\.googleapis\.com/map(files/lib/map_1_20\.swf|sapi/publicapi\?file=flashapi)" /-->
+ <exclusion pattern="^http://maps\.googleapis\.com/map(?:files/lib/map_\d+_\d+\.swf|sapi/publicapi\?file=flashapi)" />
+ <target host="maps.gstatic.com" />
+
+
+ <!--securecookie host="^maps\.google\.(com?\.)?(au|ca|gh|ie|in|jm|ke|lk|my|n[agz]|pk|rw|sl|sg|ug|uk|za|zw)$" name=".+" /-->
+ <securecookie host="^maps\.google\.[\w.]{2,6}$" name=".+" />
+ <securecookie host="^maps\.g(?:oogle|oogleapis|static)\.com$" name=".+" />
+ <securecookie host="^maps-api-ssl\.google\.com$" name=".+" />
+
+
+ <rule from="^http://maps\.google\.([^/]+)/"
+ to="https://maps.google.$1/" />
+
+ <!-- http://khms.../$ 404s:
+ -->
+ <rule from="^http://khms\d?\.google\.com/+\??$"
+ to="https://www.google.com/" />
+
+ <rule from="^http://(khms\d?|maps-api-ssl|mw2)\.google\.com/"
+ to="https://$1.google.com/" />
+
+ <rule from="^http://maps\.g(oogleapis|static)\.com/"
+ to="https://maps.g$1.com/" />
+
+ <rule from="^https://maps\.googleapis\.com/map(?=files/lib/map_\d+_\d+\.swf|sapi/publicapi\?file=flashapi)"
+ to="http://maps.googleapis.com/map" downgrade="1" />
+
+</ruleset>
diff --git a/searx/plugins/https_rules/GoogleMelange.xml b/searx/plugins/https_rules/GoogleMelange.xml
new file mode 100644
index 0000000..ec23cd4
--- /dev/null
+++ b/searx/plugins/https_rules/GoogleMelange.xml
@@ -0,0 +1,6 @@
+<ruleset name="GoogleMelange">
+ <target host="www.google-melange.com" />
+ <target host="google-melange.com" />
+
+ <rule from="^http://(www\.)?google-melange\.com/" to="https://www.google-melange.com/" />
+</ruleset>
diff --git a/searx/plugins/https_rules/GoogleSearch.xml b/searx/plugins/https_rules/GoogleSearch.xml
new file mode 100644
index 0000000..66b7ffd
--- /dev/null
+++ b/searx/plugins/https_rules/GoogleSearch.xml
@@ -0,0 +1,135 @@
+<ruleset name="Google Search">
+
+ <target host="google.com" />
+ <target host="*.google.com" />
+ <target host="google.com.*" />
+ <target host="www.google.com.*" />
+ <target host="google.co.*" />
+ <target host="www.google.co.*" />
+ <target host="google.*" />
+ <target host="www.google.*" />
+ <!--
+ Beyond clients1 these do not currently
+ exist in the ccTLDs, but just in case...
+ -->
+ <target host="clients1.google.com.*" />
+ <target host="clients2.google.com.*" />
+ <target host="clients3.google.com.*" />
+ <target host="clients4.google.com.*" />
+ <target host="clients5.google.com.*" />
+ <target host="clients6.google.com.*" />
+ <target host="clients1.google.co.*" />
+ <target host="clients2.google.co.*" />
+ <target host="clients3.google.co.*" />
+ <target host="clients4.google.co.*" />
+ <target host="clients5.google.co.*" />
+ <target host="clients6.google.co.*" />
+ <target host="clients1.google.*" />
+ <target host="clients2.google.*" />
+ <target host="clients3.google.*" />
+ <target host="clients4.google.*" />
+ <target host="clients5.google.*" />
+ <target host="clients6.google.*" />
+
+
+ <!-- Some Google pages can generate naive links back to the
+ unencrypted version of encrypted.google.com, which is
+ a 301 but theoretically vulnerable to SSL stripping.
+ -->
+ <rule from="^http://encrypted\.google\.com/"
+ to="https://encrypted.google.com/" />
+
+ <!-- The most basic case.
+ -->
+ <rule from="^http://(?:www\.)?google\.com/search"
+ to="https://encrypted.google.com/search" />
+
+ <!-- A very annoying exception that we
+ seem to need for the basic case
+ -->
+ <exclusion pattern="^http://(?:www\.)?google\.com/search.*tbs=shop" />
+ <exclusion pattern="^http://clients\d\.google\.com/.*client=products.*" />
+ <exclusion pattern="^http://suggestqueries\.google\.com/.*client=.*" />
+
+ <!-- https://trac.torproject.org/projects/tor/ticket/9713
+ -->
+
+ <exclusion pattern="^http://clients[0-9]\.google\.com/ocsp" />
+
+
+ <!-- This is necessary for image results
+ links from web search results
+ -->
+ <exclusion pattern="^http://(?:www\.)?google\.com/search.*tbm=isch.*" />
+
+ <rule from="^http://(?:www\.)?google\.com/about"
+ to="https://www.google.com/about" />
+
+ <!-- There are two distinct cases for these firefox searches -->
+
+ <rule from="^http://(?:www\.)?google(?:\.com?)?\.[a-z]{2}/firefox/?$"
+ to="https://encrypted.google.com/" />
+
+ <rule from="^http://(?:www\.)?google(?:\.com?)?\.[a-z]{2}/firefox"
+ to="https://encrypted.google.com/webhp" />
+
+ <rule from="^http://(?:www\.)?google\.com/webhp"
+ to="https://encrypted.google.com/webhp" />
+
+ <rule from="^http://codesearch\.google\.com/"
+ to="https://codesearch.google.com/" />
+
+ <rule from="^http://(?:www\.)?google\.com/codesearch"
+ to="https://www.google.com/codesearch" />
+
+ <rule from="^http://(?:www\.)?google\.com/#"
+ to="https://encrypted.google.com/#" />
+
+ <rule from="^http://(?:www\.)?google\.com/$"
+ to="https://encrypted.google.com/" />
+
+ <!-- Google supports IPv6 search, including
+ HTTPS with a valid certificate! -->
+ <rule from="^http://ipv6\.google\.com/"
+ to="https://ipv6.google.com/" />
+
+ <!-- most google international sites look like
+ "google.fr", some look like "google.co.jp",
+ and some crazy ones like "google.com.au" -->
+
+ <rule from="^http://(www\.)?google(\.com?)?\.([a-z]{2})/(search\?|#)"
+ to="https://$1google$2.$3/$4" />
+
+ <!-- Language preference setting -->
+ <rule from="^http://(www\.)?google(\.com?)?\.([a-z]{2})/setprefs"
+ to="https://$1google$2.$3/setprefs" />
+
+ <!-- Completion urls look like this:
+
+http://clients2.google.co.jp/complete/search?hl=ja&client=hp&expIds=17259,24660,24729,24745&q=m&cp=1 HTTP/1.1\r\n
+
+ -->
+ <rule from="^http://clients\d\.google\.com/complete/search"
+ to="https://clients1.google.com/complete/search" />
+
+ <rule from="^http://clients\d\.google(\.com?\.[a-z]{2})/complete/search"
+ to="https://clients1.google.$1/complete/search" />
+
+ <rule from="^http://clients\d\.google\.([a-z]{2})/complete/search"
+ to="https://clients1.google.$1/complete/search" />
+
+ <rule from="^http://suggestqueries\.google\.com/complete/search"
+ to="https://clients1.google.com/complete/search" />
+
+ <rule from="^http://(www\.)?google\.(com?\.)?([a-z]{2})/(?:webhp)?$"
+ to="https://$1google.$2$3/" />
+
+ <!-- If there are URL parameters, keep them. -->
+ <rule from="^http://(www\.)?google\.(com?\.)?([a-z]{2})/(?:webhp)?\?"
+ to="https://$1google.$2$3/webhp?" />
+
+ <!-- teapot -->
+ <rule from="^http://(www\.)?google(\.com?)?\.([a-z]{2})/teapot"
+ to="https://$1google$2.$3/teapot" />
+
+</ruleset>
diff --git a/searx/plugins/https_rules/GoogleServices.xml b/searx/plugins/https_rules/GoogleServices.xml
new file mode 100644
index 0000000..704646b
--- /dev/null
+++ b/searx/plugins/https_rules/GoogleServices.xml
@@ -0,0 +1,345 @@
+<!--
+ Other Google rulesets:
+
+ - 2mdn.net.xml
+ - Admeld.xml
+ - ChannelIntelligence.com.xml
+ - Doubleclick.net.xml
+ - FeedBurner.xml
+ - Google.org.xml
+ - GoogleAPIs.xml
+ - Google_App_Engine.xml
+ - GoogleImages.xml
+ - GoogleShopping.xml
+ - Ingress.xml
+ - Meebo.xml
+ - Orkut.xml
+ - Postini.xml
+ - WebM_Project.org.xml
+
+
+ Nonfunctional domains:
+
+ - feedproxy.google.com (404, valid cert)
+ - partnerpage.google.com *
+ - safebrowsing.clients.google.com (404, mismatched)
+ - (www.)googlesyndicatedsearch.com (404; mismatched, CN: google.com)
+ - buttons.googlesyndication.com *
+
+ * 404, valid cert
+
+
+ Nonfunctional google.com paths:
+
+ - analytics (redirects to http)
+ - imgres
+ - gadgets *
+ - hangouts (404)
+ - u/ (404)
+
+ * Redirects to http
+
+
+ Problematic domains:
+
+ - www.goo.gl (404; mismatched, CN: *.google.com)
+
+ - google.com subdomains:
+
+ - books (googlebooks/, images/, & intl/ 404, but works when rewritten to www)
+ - cbks0 ****
+ - earth *
+ - gg ($ 404s)
+ - knoll *
+ - scholar **
+ - trends *
+
+ - news.google.cctld **
+ - scholar.google.cctld **
+ - *-opensocial.googleusercontent.com ***
+
+ **** $ 404s
+ * 404, valid cert
+ ** Redirects to http, valid cert
+ *** Breaks followers widget - https://trac.torproject.org/projects/tor/ticket/7294
+
+
+ Partially covered domains:
+
+ - google.cctld subdomains:
+
+ - scholar (→ www)
+
+ - google.com subdomains:
+
+ - (www.)
+ - cbks0 ($ 404s)
+ - gg ($ 404s)
+ - news (→ www)
+ - scholar (→ www)
+
+ - *.googleusercontent.com (*-opensocial excluded)
+
+
+ Fully covered domains:
+
+ - lh[3-6].ggpht.com
+ - (www.)goo.gl (www → ^)
+
+ - google.com subdomains:
+
+ - accounts
+ - adwords
+ - apis
+ - appengine
+ - books (→ encrypted)
+ - calendar
+ - checkout
+ - chrome
+ - clients[12]
+ - code
+ - *.corp
+ - developers
+ - dl
+ - docs
+ - docs\d
+ - \d.docs
+ - drive
+ - earth (→ www)
+ - encrypted
+ - encrypted-tbn[123]
+ - feedburner
+ - fiber
+ - finance
+ - glass
+ - groups
+ - health
+ - helpouts
+ - history
+ - hostedtalkgadget
+ - id
+ - investor
+ - knol
+ - knoll (→ knol)
+ - lh\d
+ - mail
+ - chatenabled.mail
+ - pack
+ - picasaweb
+ - pki
+ - play
+ - plus
+ - plusone
+ - productforums
+ - profiles
+ - safebrowsing-cache
+ - cert-test.sandbox
+ - plus.sandbox
+ - sb-ssl
+ - script
+ - security
+ - services
+ - servicessites
+ - sites
+ - spreadsheets
+ - spreadsheets\d
+ - support
+ - talk
+ - talkgadget
+ - tbn2 (→ encrypted-tbn2)
+ - tools
+ - trends (→ www)
+
+ - partner.googleadservices.com
+ - (www.)googlecode.com
+ - *.googlecode.com (per-project subdomains)
+ - googlesource.com
+ - *.googlesource.com
+ - pagead2.googlesyndication.com
+ - tpc.googlesyndication.com
+ - mail-attachment.googleusercontent.com
+ - webcache.googleusercontent.com
+
+
+ XXX: Needs more testing
+
+-->
+<ruleset name="Google Services">
+
+ <target host="*.ggpht.com" />
+ <target host="gmail.com" />
+ <target host="www.gmail.com" />
+ <target host="goo.gl" />
+ <target host="www.goo.gl" />
+ <target host="google.*" />
+ <target host="accounts.google.*" />
+ <target host="adwords.google.*" />
+ <target host="finance.google.*" />
+ <target host="groups.google.*" />
+ <target host="it.google.*" />
+ <target host="news.google.*" />
+ <exclusion pattern="^http://(?:news\.)?google\.com/(?:archivesearch|newspapers)" />
+ <target host="picasaweb.google.*" />
+ <target host="scholar.google.*" />
+ <target host="www.google.*" />
+ <target host="*.google.ca" />
+ <target host="google.co.*" />
+ <target host="accounts.google.co.*" />
+ <target host="adwords.google.co.*" />
+ <target host="finance.google.co.*" />
+ <target host="groups.google.co.*" />
+ <target host="id.google.co.*" />
+ <target host="news.google.co.*" />
+ <target host="picasaweb.google.co.*" />
+ <target host="scholar.google.co.*" />
+ <target host="www.google.co.*" />
+ <target host="google.com" />
+ <target host="*.google.com" />
+ <exclusion pattern="^http://(?:www\.)?google\.com/analytics/*(?:/[^/]+)?(?:\?.*)?$" />
+ <!--exclusion pattern="^http://books\.google\.com/(?!books/(\w+\.js|css/|javascript/)|favicon\.ico|googlebooks/|images/|intl/)" /-->
+ <exclusion pattern="^http://cbks0\.google\.com/(?:$|\?)" />
+ <exclusion pattern="^http://gg\.google\.com/(?!csi(?:$|\?))" />
+ <target host="google.com.*" />
+ <target host="accounts.google.com.*" />
+ <target host="adwords.google.com.*" />
+ <target host="groups.google.com.*" />
+ <target host="id.google.com.*" />
+ <target host="news.google.com.*" />
+ <target host="picasaweb.google.com.*" />
+ <target host="scholar.google.com.*" />
+ <target host="www.google.com.*" />
+ <target host="partner.googleadservices.com" />
+ <target host="googlecode.com" />
+ <target host="*.googlecode.com" />
+ <target host="googlemail.com" />
+ <target host="www.googlemail.com" />
+ <target host="googlesource.com" />
+ <target host="*.googlesource.com" />
+ <target host="*.googlesyndication.com" />
+ <target host="www.googletagservices.com" />
+ <target host="googleusercontent.com" />
+ <target host="*.googleusercontent.com" />
+ <!--
+ Necessary for the Followers widget:
+
+ https://trac.torproject.org/projects/tor/ticket/7294
+ -->
+ <exclusion pattern="http://[^@:\./]+-opensocial\.googleusercontent\.com" />
+
+
+ <!-- Can we secure any of these wildcard cookies safely?
+ -->
+ <!--securecookie host="^\.google\.com$" name="^(hl|I4SUserLocale|NID|PREF|S)$" /-->
+ <!--securecookie host="^\.google\.[\w.]{2,6}$" name="^(hl|I4SUserLocale|NID|PREF|S|S_awfe)$" /-->
+ <securecookie host="^(?:accounts|adwords|\.code|login\.corp|developers|docs|\d\.docs|fiber|mail|picasaweb|plus|\.?productforums|support)\.google\.[\w.]{2,6}$" name=".+" />
+ <securecookie host="^www\.google\.com$" name="^GoogleAccountsLocale_session$" />
+ <securecookie host="^mail-attachment\.googleusercontent\.com$" name=".+" />
+ <securecookie host="^gmail\.com$" name=".+" />
+ <securecookie host="^www\.gmail\.com$" name=".+" />
+ <securecookie host="^googlemail\.com$" name=".+" />
+ <securecookie host="^www\.googlemail\.com$" name=".+" />
+
+
+ <!-- - lh 3-6 exist
+ - All appear identical
+ - Identical to lh\d.googleusercontent.com
+ -->
+ <rule from="^http://lh(\d)\.ggpht\.com/"
+ to="https://lh$1.ggpht.com/" />
+
+ <rule from="^http://lh(\d)\.google\.ca/"
+ to="https://lh$1.google.ca/" />
+
+
+ <rule from="^http://(www\.)?g(oogle)?mail\.com/"
+ to="https://$1g$2mail.com/" />
+
+ <rule from="^http://(?:www\.)?goo\.gl/"
+ to="https://goo.gl/" />
+
+
+ <!-- Redirects to http when rewritten to www:
+ -->
+ <rule from="^http://books\.google\.com/"
+ to="https://encrypted.google.com/" />
+
+ <!-- tisp$ 404s:
+ -->
+ <rule from="^http://(?:www\.)?google\.((?:com?\.)?\w{2,3})/tisp(?=$|\?)"
+ to="https://www.google.$1/tisp/" />
+
+ <!-- Paths that work on all in google.*
+ -->
+ <rule from="^http://(?:www\.)?google\.((?:com?\.)?\w{2,3})/(accounts|adplanner|ads|adsense|adwords|analytics|bookmarks|chrome|contacts|coop|cse|css|culturalinstitute|doodles|earth|favicon\.ico|finance|get|goodtoknow|googleblogs|grants|green|hostednews|images|intl|js|landing|logos|mapmaker|newproducts|news|nexus|patents|policies|prdhp|profiles|products|reader|s2|settings|shopping|support|tisp|tools|transparencyreport|trends|urchin|webmasters)(?=$|[?/])"
+ to="https://www.google.$1/$2" />
+
+ <!-- Paths that 404 on .ccltd, but work on .com:
+ -->
+ <rule from="^http://(?:www\.)?google\.(?:com?\.)?\w{2,3}/(?=calendar|dictionary|doubleclick|help|ideas|pacman|postini|powermeter|url)"
+ to="https://www.google.com/" />
+
+ <rule from="^http://(?:www\.)?google\.(?:com?\.)?\w{2,3}/custom"
+ to="https://www.google.com/cse" />
+
+ <!-- Paths that only exist/work on .com
+ -->
+ <rule from="^http://(?:www\.)?google\.com/(\+|appsstatus|books|buzz|extern_js|glass|googlebooks|ig|insights|moderator|phone|safebrowsing|videotargetting|webfonts)(?=$|[?/])"
+ to="https://www.google.com/$1" />
+
+ <!-- Subdomains that work on all in google.*
+ -->
+ <rule from="^http://(accounts|adwords|finance|groups|id|picasaweb|)\.google\.((?:com?\.)?\w{2,3})/"
+ to="https://$1.google.$2/" />
+
+ <!-- Subdomains that only exist/work on .com
+ -->
+ <rule from="^http://(apis|appengine|books|calendar|cbks0|chat|checkout|chrome|clients[12]|code|[\w-]+\.corp|developers|dl|docs\d?|\d\.docs|drive|encrypted|encrypted-tbn[123]|feedburner|fiber|fonts|gg|glass||health|helpouts|history|(?:hosted)?talkgadget|investor|lh\d|(?:chatenabled\.)?mail|pack|pki|play|plus(?:\.sandbox)?|plusone|productforums|profiles|safebrowsing-cache|cert-test\.sandbox|sb-ssl|script|security|services|servicessites|sites|spreadsheets\d?|support|talk|tools)\.google\.com/"
+ to="https://$1.google.com/" />
+
+ <exclusion pattern="^http://clients[0-9]\.google\.com/ocsp"/>
+
+ <rule from="^http://earth\.google\.com/"
+ to="https://www.google.com/earth/" />
+
+ <rule from="^http://scholar\.google\.((?:com?\.)?\w{2,3})/intl/"
+ to="https://www.google.$1/intl/" />
+
+ <rule from="^http://(?:encrypted-)?tbn2\.google\.com/"
+ to="https://encrypted-tbn2.google.com/" />
+
+
+ <rule from="^http://knoll?\.google\.com/"
+ to="https://knol.google.com/" />
+
+
+ <rule from="^http://news\.google\.(?:com?\.)?\w{2,3}/(?:$|news|newshp)"
+ to="https://www.google.com/news" />
+
+ <rule from="^http://trends\.google\.com/"
+ to="https://www.google.com/trends" />
+
+
+ <rule from="^http://([^/:@\.]+\.)?googlecode\.com/"
+ to="https://$1googlecode.com/" />
+
+ <rule from="^http://([^\./]\.)?googlesource\.com/"
+ to="https://$1googlesource.com/" />
+
+
+ <rule from="^http://partner\.googleadservices\.com/"
+ to="https://partner.googleadservices.com/" />
+
+ <rule from="^http://(pagead2|tpc)\.googlesyndication\.com/"
+ to="https://$1.googlesyndication.com/" />
+
+ <!-- !www doesn't exist.
+ -->
+ <rule from="^http://www\.googletagservices\.com/tag/js/"
+ to="https://www.googletagservices.com/tag/js/" />
+
+
+ <rule from="^http://([^@:\./]+)\.googleusercontent\.com/"
+ to="https://$1.googleusercontent.com/" />
+
+
+</ruleset>
diff --git a/searx/plugins/https_rules/GoogleShopping.xml b/searx/plugins/https_rules/GoogleShopping.xml
new file mode 100644
index 0000000..6ba69a9
--- /dev/null
+++ b/searx/plugins/https_rules/GoogleShopping.xml
@@ -0,0 +1,28 @@
+<!--
+ For other Google coverage, see GoogleServices.xml.
+
+-->
+<ruleset name="Google Shopping">
+
+ <target host="google.*" />
+ <target host="www.google.*" />
+ <target host="google.co.*" />
+ <target host="www.google.co.*" />
+ <target host="*.google.com" />
+ <target host="google.com.*" />
+ <target host="www.google.com.*" />
+
+
+ <rule from="^http://encrypted\.google\.com/(prdhp|shopping)"
+ to="https://www.google.com/$1" />
+
+ <rule from="^http://shopping\.google\.com/"
+ to="https://shopping.google.com/" />
+
+ <rule from="^http://(?:encrypted|www)\.google\.com/(.*tbm=shop)"
+ to="https://www.google.com/$1" />
+
+ <rule from="^http://(?:www\.)?google\.((?:com?\.)?(?:ae|ar|at|au|bg|bh|bo|br|ca|ch|cl|cr|co|cu|de|ec|eg|es|fi|fr|gh|gt|hr|id|ie|il|in|it|jm|jo|jp|ke|kr|kw|kz|lb|lk|ly|mx|my|na|ng|nl|no|nz|om|pa|pe|pk|pl|pt|py|qa|ro|ru|rw|sa|sg|sl|se|sv|th|tr|ug|uk|uy|ve|vn|za|zw))/(?=prdhp|shopping)"
+ to="https://www.google.com/$1" />
+
+</ruleset>
diff --git a/searx/plugins/https_rules/GoogleSorry.xml b/searx/plugins/https_rules/GoogleSorry.xml
new file mode 100644
index 0000000..72a1921
--- /dev/null
+++ b/searx/plugins/https_rules/GoogleSorry.xml
@@ -0,0 +1,7 @@
+<ruleset name="GoogleSorry">
+ <target host="sorry.google.com" />
+ <target host="www.google.com" />
+ <target host="google.com" />
+
+ <rule from="^http://((sorry|www)\.)?google\.com/sorry/" to="https://sorry.google.com/sorry/" />
+</ruleset>
diff --git a/searx/plugins/https_rules/GoogleTranslate.xml b/searx/plugins/https_rules/GoogleTranslate.xml
new file mode 100644
index 0000000..a004025
--- /dev/null
+++ b/searx/plugins/https_rules/GoogleTranslate.xml
@@ -0,0 +1,8 @@
+<ruleset name="Google Translate (broken)" default_off="redirect loops">
+ <target host="translate.googleapis.com" />
+ <target host="translate.google.com" />
+
+ <rule from="^http://translate\.googleapis\.com/" to="https://translate.googleapis.com/"/>
+ <rule from="^http://translate\.google\.com/"
+ to="https://translate.google.com/" />
+</ruleset>
diff --git a/searx/plugins/https_rules/GoogleVideos.xml b/searx/plugins/https_rules/GoogleVideos.xml
new file mode 100644
index 0000000..a5e88fc
--- /dev/null
+++ b/searx/plugins/https_rules/GoogleVideos.xml
@@ -0,0 +1,83 @@
+<ruleset name="Google Videos">
+ <target host="*.google.com" />
+ <target host="google.com" />
+ <target host="www.google.com.*" />
+ <target host="google.com.*" />
+ <target host="www.google.co.*" />
+ <target host="google.co.*" />
+ <target host="www.google.*" />
+ <target host="google.*" />
+
+ <rule from="^http://encrypted\.google\.com/videohp"
+ to="https://encrypted.google.com/videohp" />
+
+ <!-- https://videos.google.com is currently broken; work around that... -->
+ <rule from="^https?://videos?\.google\.com/$"
+ to="https://encrypted.google.com/videohp" />
+ <rule from="^http://(?:www\.)?google\.com/videohp"
+ to="https://encrypted.google.com/videohp" />
+ <rule from="^http://(?:images|www|encrypted)\.google\.com/(.*tbm=isch)"
+ to="https://encrypted.google.com/$1" />
+
+ <rule
+ from="^http://(?:www\.)?google\.(?:com?\.)?(?:au|ca|gh|ie|in|jm|ke|lk|my|na|ng|nz|pk|rw|sl|sg|ug|uk|za|zw)/videohp"
+ to="https://encrypted.google.com/videohp" />
+ <rule
+ from="^http://(?:www\.)?google\.(?:com?\.)?(?:ar|bo|cl|co|cu|cr|ec|es|gt|mx|pa|pe|py|sv|uy|ve)/videohp$"
+ to="https://encrypted.google.com/videohp?hl=es" />
+ <rule
+ from="^http://(?:www\.)?google\.(?:com\.)?(?:ae|bh|eg|jo|kw|lb|ly|om|qa|sa)/videohp$"
+ to="https://encrypted.google.com/videohp?hl=ar" />
+ <rule from="^http://(?:www\.)?google\.(?:at|ch|de)/videohp$"
+ to="https://encrypted.google.com/videohp?hl=de" />
+ <rule from="^http://(?:www\.)?google\.(fr|nl|it|pl|ru|bg|pt|ro|hr|fi|no)/videohp$"
+ to="https://encrypted.google.com/videohp?hl=$1" />
+ <rule from="^http://(?:www\.)?google\.com?\.(id|th|tr)/videohp$"
+ to="https://encrypted.google.com/videohp?hl=$1" />
+ <rule from="^http://(?:www\.)?google\.com\.il/videohp$"
+ to="https://encrypted.google.com/videohp?hl=he" />
+ <rule from="^http://(?:www\.)?google\.com\.kr/videohp$"
+ to="https://encrypted.google.com/videohp?hl=ko" />
+ <rule from="^http://(?:www\.)?google\.com\.kz/videohp$"
+ to="https://encrypted.google.com/videohp?hl=kk" />
+ <rule from="^http://(?:www\.)?google\.com\.jp/videohp$"
+ to="https://encrypted.google.com/videohp?hl=ja" />
+ <rule from="^http://(?:www\.)?google\.com\.vn/videohp$"
+ to="https://encrypted.google.com/videohp?hl=vi" />
+ <rule from="^http://(?:www\.)?google\.com\.br/videohp$"
+ to="https://encrypted.google.com/videohp?hl=pt-BR" />
+ <rule from="^http://(?:www\.)?google\.se/videohp$"
+ to="https://encrypted.google.com/videohp?hl=sv" />
+
+<!-- If there are URL parameters, keep them. -->
+ <rule
+ from="^http://(?:www\.)?google\.(?:com?\.)?(?:ar|bo|cl|co|cu|cr|ec|es|gt|mx|pa|pe|py|sv|uy|ve)/videohp\?"
+ to="https://encrypted.google.com/videohp?hl=es&#38;" />
+ <rule
+ from="^http://(?:www\.)?google\.(?:com\.)?(?:ae|bh|eg|jo|kw|lb|ly|om|qa|sa)/videohp\?"
+ to="https://encrypted.google.com/videohp?hl=ar&#38;" />
+ <rule from="^http://(?:www\.)?google\.(?:at|ch|de)/videohp\?"
+ to="https://encrypted.google.com/videohp?hl=de&#38;" />
+ <rule from="^http://(?:www\.)?google\.(fr|nl|it|pl|ru|bg|pt|ro|hr|fi|no)/videohp\?"
+ to="https://encrypted.google.com/videohp?hl=$1&#38;" />
+ <rule from="^http://(?:www\.)?google\.com?\.(id|th|tr)/videohp\?"
+ to="https://encrypted.google.com/videohp?hl=$1&#38;" />
+ <rule from="^http://(?:www\.)?google\.com\.il/videohp\?"
+ to="https://encrypted.google.com/videohp?hl=he&#38;" />
+ <rule from="^http://(?:www\.)?google\.com\.kr/videohp\?"
+ to="https://encrypted.google.com/videohp?hl=ko&#38;" />
+ <rule from="^http://(?:www\.)?google\.com\.kz/videohp\?"
+ to="https://encrypted.google.com/videohp?hl=kk&#38;" />
+ <rule from="^http://(?:www\.)?google\.com\.jp/videohp\?"
+ to="https://encrypted.google.com/videohp?hl=ja&#38;" />
+ <rule from="^http://(?:www\.)?google\.com\.vn/videohp\?"
+ to="https://encrypted.google.com/videohp?hl=vi&#38;" />
+ <rule from="^http://(?:www\.)?google\.com\.br/videohp\?"
+ to="https://encrypted.google.com/videohp?hl=pt-BR&#38;" />
+ <rule from="^http://(?:www\.)?google\.se/videohp\?"
+ to="https://encrypted.google.com/videohp?hl=sv&#38;" />
+
+ <rule from="^http://video\.google\.com/ThumbnailServer2"
+ to="https://video.google.com/ThumbnailServer2" />
+
+</ruleset>
diff --git a/searx/plugins/https_rules/GoogleWatchBlog.xml b/searx/plugins/https_rules/GoogleWatchBlog.xml
new file mode 100644
index 0000000..afec70c
--- /dev/null
+++ b/searx/plugins/https_rules/GoogleWatchBlog.xml
@@ -0,0 +1,17 @@
+<!--
+ gwbhrd.appspot.com
+
+-->
+<ruleset name="GoogleWatchBlog">
+
+ <target host="googlewatchblog.de" />
+ <target host="*.googlewatchblog.de" />
+
+
+ <securecookie host="^(?:www)?\.googlewatchblog\.de$" name=".+" />
+
+
+ <rule from="^http://(static\.|www\.)?googlewatchblog\.de/"
+ to="https://$1googlewatchblog.de/" />
+
+</ruleset> \ No newline at end of file
diff --git a/searx/plugins/https_rules/Google_App_Engine.xml b/searx/plugins/https_rules/Google_App_Engine.xml
new file mode 100644
index 0000000..851e051
--- /dev/null
+++ b/searx/plugins/https_rules/Google_App_Engine.xml
@@ -0,0 +1,21 @@
+<!--
+ For other Google coverage, see GoogleServices.xml.
+
+-->
+<ruleset name="Google App Engine">
+
+ <target host="appspot.com" />
+ <target host="*.appspot.com" />
+ <!--
+ Redirects to http for some reason.
+ -->
+ <exclusion pattern="^http://photomunchers\.appspot\.com/" />
+
+
+ <securecookie host="^.+\.appspot\.com$" name=".+" />
+
+
+ <rule from="^http://([^@:\./]+\.)?appspot\.com/"
+ to="https://$1appspot.com/" />
+
+</ruleset> \ No newline at end of file
diff --git a/searx/plugins/https_rules/Googleplex.com.xml b/searx/plugins/https_rules/Googleplex.com.xml
new file mode 100644
index 0000000..7ddbb5b
--- /dev/null
+++ b/searx/plugins/https_rules/Googleplex.com.xml
@@ -0,0 +1,16 @@
+<!-- This rule was automatically generated based on an HSTS
+ preload rule in the Chromium browser. See
+ https://src.chromium.org/viewvc/chrome/trunk/src/net/base/transport_security_state.cc
+ for the list of preloads. Sites are added to the Chromium HSTS
+ preload list on request from their administrators, so HTTPS should
+ work properly everywhere on this site.
+
+ Because Chromium and derived browsers automatically force HTTPS for
+ every access to this site, this rule applies only to Firefox. -->
+<ruleset name="Googleplex.com (default off)" platform="firefox" default_off="Certificate error">
+ <target host="googleplex.com" />
+
+ <securecookie host="^googleplex\.com$" name=".+" />
+
+ <rule from="^http://googleplex\.com/" to="https://googleplex.com/" />
+</ruleset>
diff --git a/searx/plugins/https_rules/OpenStreetMap.xml b/searx/plugins/https_rules/OpenStreetMap.xml
new file mode 100644
index 0000000..58a6618
--- /dev/null
+++ b/searx/plugins/https_rules/OpenStreetMap.xml
@@ -0,0 +1,15 @@
+<ruleset name="OpenStreetMap">
+
+ <target host="openstreetmap.org"/>
+ <target host="*.openstreetmap.org"/>
+
+ <rule from="^http://(?:www\.)?openstreetmap\.org/"
+ to="https://www.openstreetmap.org/"/>
+
+ <rule from="^http://tile\.openstreetmap\.org/"
+ to="https://a.tile.openstreetmap.org/"/>
+
+ <rule from="^http://(blog|help|lists|nominatim|piwik|taginfo|[abc]\.tile|trac|wiki)\.openstreetmap\.org/"
+ to="https://$1.openstreetmap.org/"/>
+
+</ruleset>
diff --git a/searx/plugins/https_rules/Rawgithub.com.xml b/searx/plugins/https_rules/Rawgithub.com.xml
new file mode 100644
index 0000000..3868f33
--- /dev/null
+++ b/searx/plugins/https_rules/Rawgithub.com.xml
@@ -0,0 +1,14 @@
+<!--
+ www: cert only matches ^rawgithub.com
+
+-->
+<ruleset name="rawgithub.com">
+
+ <target host="rawgithub.com" />
+ <target host="www.rawgithub.com" />
+
+
+ <rule from="^http://(?:www\.)?rawgithub\.com/"
+ to="https://rawgithub.com/" />
+
+</ruleset>
diff --git a/searx/plugins/https_rules/Soundcloud.xml b/searx/plugins/https_rules/Soundcloud.xml
new file mode 100644
index 0000000..6958e8c
--- /dev/null
+++ b/searx/plugins/https_rules/Soundcloud.xml
@@ -0,0 +1,101 @@
+<!--
+
+ CDN buckets:
+
+ - akmedia-a.akamaihd.net
+
+ - soundcloud.assistly.com
+
+ - help.soundcloud.com
+
+ - cs70.wac.edgecastcdn.net
+
+ - a1.sndcdn.com
+ - i1.sndcdn.com
+ - w1.sndcdn.com
+
+ - wpc.658D.edgecastcdn.net
+ - m-a.sndcdn.com.edgesuite.net
+ - soundcloud.gettyimages.com
+
+ - scbackstage.wpengine.netdna-cdn.com
+
+ - ssl doesn't exist
+ - backstage.soundcloud.com
+
+ - soundcloud.wpengine.netdna-cdn.com
+
+ - -ssl doesn't exist
+ - blog.soundcloud.com
+
+ - gs1.wpc.v2cdn.netcdn.net
+ - gs1.wpc.v2cdn.net
+
+ - ec-media.soundcloud.com
+
+ Nonfunctional soundcloud.com subdomains:
+
+ - help (redirects to http, mismatched, CN: *.assistly.com)
+ - m (redirects to http)
+ - media
+ - status (times out)
+
+
+ Problematic domains:
+
+ - m-a.sndcdn.com (works, akamai)
+
+
+ Partially covered domains:
+
+ - backstage.soundcloud.com
+
+
+ Fully covered domains:
+
+ - sndcdn.com subdomains:
+
+ - a[12]
+ - api
+ - i[1-4]
+ - w[12]
+ - wis
+
+ - soundcloud.com subdomains:
+
+ - (www.)
+ - api
+ - blog
+ - connect
+ - developers
+ - ec-media
+ - eventlogger
+ - help-assets
+ - media
+ - visuals
+ - w
+
+-->
+<ruleset name="Soundcloud (partial)">
+
+ <target host="scbackstage.wpengine.netdna-cdn.com" />
+ <target host="soundcloud.wpengine.netdna-cdn.com" />
+ <target host="*.sndcdn.com" />
+ <target host="soundcloud.com" />
+ <target host="*.soundcloud.com" />
+ <exclusion pattern="^https?://(?:scbackstage\.wpengine\.netdna-cdn|backstage\.soundcloud)\.com/(?!wp-content/)" />
+
+
+ <rule from="^http://([aiw]\d|api|wis)\.sndcdn\.com/"
+ to="https://$1.sndcdn.com/" />
+
+ <rule from="^http://((?:api|backstage|blog|connect|developers|ec-media|eventlogger|help-assets|media|visuals|w|www)\.|)soundcloud\.com/"
+ to="https://$1soundcloud.com/" />
+
+ <rule from="^https?://scbackstage\.wpengine\.netdna-cdn\.com/"
+ to="https://backstage.soundcloud.com/" />
+
+ <rule from="^https?://soundcloud\.wpengine\.netdna-cdn\.com/"
+ to="https://blog.soundcloud.com/" />
+
+</ruleset>
diff --git a/searx/plugins/https_rules/ThePirateBay.xml b/searx/plugins/https_rules/ThePirateBay.xml
new file mode 100644
index 0000000..010387b
--- /dev/null
+++ b/searx/plugins/https_rules/ThePirateBay.xml
@@ -0,0 +1,36 @@
+<!--
+ Nonfunctional:
+
+ - image.bayimg.com
+ - (www.)thepiratebay.sx (http reply)
+
+
+ For problematic rules, see ThePirateBay-mismatches.xml.
+
+-->
+<ruleset name="The Pirate Bay (partial)">
+
+ <target host="suprbay.org" />
+ <target host="*.suprbay.org" />
+ <!-- * for cross-domain cookie -->
+ <target host="*.forum.suprbay.org" />
+ <target host="thepiratebay.org"/>
+ <target host="*.thepiratebay.org"/>
+ <target host="thepiratebay.se"/>
+ <target host="*.thepiratebay.se"/>
+
+ <securecookie host="^.*\.suprbay\.org$" name=".*" />
+ <securecookie host="^(.*\.)?thepiratebay\.se$" name=".*"/>
+
+
+ <!-- Cert doesn't match (www.), redirects like so. -->
+ <rule from="^https?://(?:forum\.|www\.)?suprbay\.org/"
+ to="https://forum.suprbay.org/" />
+
+ <rule from="^http://(?:www\.)?thepiratebay\.(?:org|se)/"
+ to="https://thepiratebay.se/"/>
+
+ <rule from="^http://(rss|static|torrents)\.thepiratebay\.(?:org|se)/"
+ to="https://$1.thepiratebay.se/"/>
+
+</ruleset>
diff --git a/searx/plugins/https_rules/Torproject.xml b/searx/plugins/https_rules/Torproject.xml
new file mode 100644
index 0000000..69269af
--- /dev/null
+++ b/searx/plugins/https_rules/Torproject.xml
@@ -0,0 +1,18 @@
+<ruleset name="Tor Project">
+
+ <target host="torproject.org" />
+ <target host="*.torproject.org" />
+ <exclusion pattern="^http://torperf\.torproject\.org/" />
+
+
+ <!-- Not secured by server:
+ -->
+ <!--securecookie host="^\.blog\.torproject\.org$" name="^SESS[0-9a-f]{32}$" /-->
+
+ <securecookie host="^(?:.*\.)?torproject\.org$" name=".+" />
+
+
+ <rule from="^http://([^/:@\.]+\.)?torproject\.org/"
+ to="https://$1torproject.org/" />
+
+</ruleset>
diff --git a/searx/plugins/https_rules/Twitter.xml b/searx/plugins/https_rules/Twitter.xml
new file mode 100644
index 0000000..3285f44
--- /dev/null
+++ b/searx/plugins/https_rules/Twitter.xml
@@ -0,0 +1,169 @@
+<!--
+ Other Twitter rulesets:
+
+ - Twitter_Community.com.xml
+
+
+ Nonfunctional domains:
+
+ - status.twitter.com *
+ - status.twitter.jp *
+
+ * Tumblr
+
+
+ CDN buckets:
+
+ - a1095.g.akamai.net/=/1095/134446/1d/platform.twitter.com/ | platform2.twitter.com.edgesuite.net
+
+ - platform2.twitter.com
+
+ - twitter-any.s3.amazonaws.com
+ - twitter-blog.s3.amazonaws.com
+
+ - d2rdfnizen5apl.cloudfront.net
+
+ - s.twimg.com
+
+ - ssl2.twitter.com.edgekey.net
+ - twitter.github.com
+
+
+ Problematic domains:
+
+ - twimg.com subdomains:
+
+ - a5 *
+ - s (cloudfront)
+
+ - twitter.com subdomains:
+
+ - platform[0-3] (403, akamai)
+
+ * akamai
+
+
+ Fully covered domains:
+
+ - (www.)t.co (www → ^)
+
+ - twimg.com subdomains:
+
+ - a[5-9] (→ si0)
+ - a\d
+ - abs
+ - dnt
+ - ea
+ - g
+ - g2
+ - gu
+ - hca
+ - jp
+ - ma
+ - ma[0123]
+ - o
+ - p
+ - pbs
+ - r
+ - s (→ d2rdfnizen5apl.cloudfront.net)
+ - si[0-5]
+ - syndication
+ - cdn.syndication
+ - tailfeather
+ - ton
+ - v
+ - widgets
+
+ - twitter.com subdomains:
+
+ - (www.)
+ - 201[012]
+ - about
+ - ads
+ - analytics
+ - api
+ - cdn.api
+ - urls.api
+ - blog
+ - business
+ - preview.cdn
+ - preview-dev.cdn
+ - preview-stage.cdn
+ - de
+ - dev
+ - en
+ - engineering
+ - es
+ - firefox
+ - fr
+ - it
+ - ja
+ - jp
+ - m
+ - media
+ - mobile
+ - music
+ - oauth
+ - p
+ - pic
+ - platform
+ - platform[0-3] (→ platform)
+ - widgets.platform
+ - search
+ - static
+ - support
+ - transparency
+ - upload
+
+
+ These altnames don't exist:
+
+ - i3.twimg.com
+ - p-dev.twimg.com
+ - vmtc.twimg.com
+
+ - cdn-dev.api.twitter.com
+
+-->
+<ruleset name="Twitter">
+
+ <target host="t.co" />
+ <target host="*.t.co" />
+ <target host="*.twimg.com" />
+ <target host="twitter.com" />
+ <target host="*.twitter.com" />
+
+
+ <!-- Secured by server:
+ -->
+ <!--securecookie host="^\.twitter\.com$" name="^_twitter_sess$" /-->
+ <!--securecookie host="^support\.twitter\.com$" name="^_help_center_session$" /-->
+ <!--
+ Not secured by server:
+ -->
+ <!--securecookie host="^\.t\.co$" name="^muc$" /-->
+ <!--securecookie host="^\.twitter\.com$" name="^guest_id$" /-->
+
+ <securecookie host="^\.t\.co$" name=".+" />
+ <securecookie host="^(?:.*\.)?twitter\.com$" name=".+" />
+
+
+ <rule from="^http://(?:www\.)?t\.co/"
+ to="https://t.co/" />
+
+ <rule from="^http://a[5-9]\.twimg\.com/"
+ to="https://si0.twimg.com/" />
+
+ <rule from="^http://(abs|a\d|dnt|ea|g[2u]?|hca|jp|ma\d?|o|p|pbs|r|si\d|(?:cdn\.)?syndication|tailfeather|ton|v|widgets)\.twimg\.com/"
+ to="https://$1.twimg.com/" />
+
+ <rule from="^http://s\.twimg\.com/"
+ to="https://d2rdfnizen5apl.cloudfront.net/" />
+
+ <rule from="^http://((?:201\d|about|ads|analytics|blog|(?:cdn\.|urls\.)?api|business|preview(?:-dev|-stage)?\.cdn|de|dev|engineering|en|es|firefox|fr|it|ja|jp|m|media|mobile|music|oauth|p|pic|platform|widgets\.platform|search|static|support|transparency|upload|www)\.)?twitter\.com/"
+ to="https://$1twitter.com/" />
+
+ <rule from="^http://platform\d\.twitter\.com/"
+ to="https://platform.twitter.com/" />
+
+</ruleset>
diff --git a/searx/plugins/https_rules/Vimeo.xml b/searx/plugins/https_rules/Vimeo.xml
new file mode 100644
index 0000000..f2a3e57
--- /dev/null
+++ b/searx/plugins/https_rules/Vimeo.xml
@@ -0,0 +1,75 @@
+<!--
+ CDN buckets:
+
+ - av.vimeo.com.edgesuite.net
+
+ - a808.g.akamai.net
+
+ - pdl.vimeocdn.com.edgesuite.net
+
+ - a1189.g.akamai.net
+
+
+ Problematic subdomains:
+
+ - av (pdl.../crossdomain.xml restricts to port 80)
+ - pdl (works, akamai)
+
+
+ Partially covered subdomains:
+
+ - developer (some pages redirect to http)
+ - pdl (→ akamai)
+
+
+ Fully covered subdomains:
+
+ - (www.)
+ - secure
+
+
+Default off per https://trac.torproject.org/projects/tor/ticket/7569 -->
+<ruleset name="Vimeo (default off)" default_off="breaks some video embedding">
+
+ <target host="vimeo.com" />
+ <target host="*.vimeo.com" />
+ <exclusion pattern="^http://av\.vimeo\.com/crossdomain\.xml" />
+ <!--exclusion pattern="^http://developer\.vimeo\.com/($|\?|(apps|guidelines|help|player)($|[?/]))" /-->
+ <exclusion pattern="^http://developer\.vimeo\.com/(?!apis(?:$|[?/])|favicon\.ico)" />
+ <target host="*.vimeocdn.com" />
+ <!--
+ Uses crossdomain.xml from s3.amazonaws.com, which sets secure="false"
+
+ https://mail1.eff.org/pipermail/https-everywhere/2012-October/001583.html
+ -->
+ <exclusion pattern="^http://a\.vimeocdn\.com/p/flash/moogaloop/" />
+
+ <!-- We cannot secure streams because crossdomain.xml
+ restricts to port 80 :(
+ -->
+ <exclusion pattern="^http://pdl\.vimeocdn\.com/(?!crossdomain\.xml)" />
+
+
+ <!-- Tracking cookies:
+ -->
+ <securecookie host="^\.(?:player\.)?vimeo\.com$" name="^__utm\w$" />
+
+
+ <rule from="^http://((?:developer|player|secure|www)\.)?vimeo\.com/"
+ to="https://$1vimeo.com/" />
+
+ <rule from="^http://av\.vimeo\.com/"
+ to="https://a248.e.akamai.net/f/808/9207/8m/av.vimeo.com/" />
+
+ <!-- a & b: Akamai -->
+ <rule from="^http://(?:secure-)?([ab])\.vimeocdn\.com/"
+ to="https://secure-$1.vimeocdn.com/" />
+
+ <rule from="^http://i\.vimeocdn\.com/"
+ to="https://i.vimeocdn.com/" />
+
+ <rule from="^http://pdl\.vimeocdn\.com/"
+ to="https://a248.e.akamai.net/f/1189/4415/8d/pdl.vimeocdn.com/" />
+
+</ruleset>
+
diff --git a/searx/plugins/https_rules/WikiLeaks.xml b/searx/plugins/https_rules/WikiLeaks.xml
new file mode 100644
index 0000000..977709d
--- /dev/null
+++ b/searx/plugins/https_rules/WikiLeaks.xml
@@ -0,0 +1,13 @@
+<ruleset name="WikiLeaks">
+
+ <target host="wikileaks.org" />
+ <target host="*.wikileaks.org" />
+
+
+ <securecookie host="^(?:w*\.)?wikileaks\.org$" name=".+" />
+
+
+ <rule from="^http://((?:chat|search|shop|www)\.)?wikileaks\.org/"
+ to="https://$1wikileaks.org/" />
+
+</ruleset> \ No newline at end of file
diff --git a/searx/plugins/https_rules/Wikimedia.xml b/searx/plugins/https_rules/Wikimedia.xml
new file mode 100644
index 0000000..9f25831
--- /dev/null
+++ b/searx/plugins/https_rules/Wikimedia.xml
@@ -0,0 +1,107 @@
+<!--
+ Wikipedia and other Wikimedia Foundation wikis previously had no real HTTPS support, and
+ URLs had to be rewritten to https://secure.wikimedia.org/$wikitype/$language/ . This is no
+ longer the case, see https://blog.wikimedia.org/2011/10/03/native-https-support-enabled-for-all-wikimedia-foundation-wikis/ ,
+ so this file is a lot simpler these days.
+
+
+ Mixed content:
+
+ - Images, on:
+
+ - stats.wikimedia.org from upload.wikimedia.org *
+ - stats.wikimedia.org from wikimediafoundation.org *
+
+ * Secured by us
+
+-->
+<ruleset name="Wikimedia">
+
+ <target host="enwp.org" />
+ <target host="frwp.org" />
+
+ <target host="mediawiki.org" />
+ <target host="www.mediawiki.org" />
+ <target host="wikimedia.org" />
+ <target host="*.wikimedia.org" />
+ <exclusion pattern="^http://(?:apt|cs|cz|parsoid-lb\.eqiad|status|torrus|ubuntu)\.wikimedia\.org" />
+ <!-- https://mail1.eff.org/pipermail/https-everywhere-rules/2012-June/001189.html -->
+ <exclusion pattern="^http://lists\.wikimedia\.org/pipermail(?:$|/)" />
+ <target host="wikimediafoundation.org" />
+ <target host="www.wikimediafoundation.org" />
+
+ <!-- Wikimedia projects (also some wikimedia.org subdomains) -->
+ <target host="wikibooks.org" />
+ <target host="*.wikibooks.org" />
+ <target host="wikidata.org" />
+ <target host="*.wikidata.org" />
+ <target host="wikinews.org" />
+ <target host="*.wikinews.org" />
+ <target host="wikipedia.org" />
+ <target host="*.wikipedia.org" />
+ <target host="wikiquote.org" />
+ <target host="*.wikiquote.org" />
+ <target host="wikisource.org" />
+ <target host="*.wikisource.org" />
+ <target host="wikiversity.org" />
+ <target host="*.wikiversity.org" />
+ <target host="wikivoyage.org" />
+ <target host="*.wikivoyage.org" />
+ <target host="wiktionary.org" />
+ <target host="*.wiktionary.org" />
+
+ <!-- Wikimedia chapters -->
+ <target host="wikimedia.ca" />
+ <target host="www.wikimedia.ca" />
+
+ <!-- Wikimedia Tool Labs -->
+ <target host="tools.wmflabs.org" />
+ <target host="icinga.wmflabs.org" />
+ <target host="ganglia.wmflabs.org" />
+
+ <!-- Not secured by server:
+ -->
+ <!--securecookie host="^\.wiki(books|ipedia)\.org$" name="^GeoIP$" /-->
+
+ <securecookie host="^^\.wik(?:ibooks|idata|imedia|inews|ipedia|iquote|isource|iversity|ivoyage|tionary)\.org$" name="^GeoIP$" />
+ <securecookie host="^([^@:/]+\.)?wik(ibooks|idata|inews|ipedia|iquote|isource|iversity|ivoyage|tionary)\.org$" name=".*" />
+ <securecookie host="^(species|commons|meta|incubator|wikitech).wikimedia.org$" name=".*" />
+ <securecookie host="^(?:www\.)?mediawiki\.org$" name=".*" />
+ <securecookie host="^wikimediafoundation.org$" name=".*" />
+
+ <rule from="^http://(en|fr)wp\.org/"
+ to="https://$1.wikipedia.org/wiki/" />
+
+ <rule from="^http://(?:www\.)?mediawiki\.org/"
+ to="https://www.mediawiki.org/" />
+
+ <rule from="^https?://download\.wikipedia\.org/"
+ to="https://dumps.wikimedia.org/" />
+
+ <rule from="^https?://(download|dataset2|sitemap)\.wikimedia\.org/"
+ to="https://dumps.wikimedia.org/" />
+
+ <rule from="^https?://(labs-ns[01]|virt0)\.wikimedia\.org/"
+ to="https://wikitech.wikimedia.org/" />
+
+ <rule from="^https?://noboard\.chapters\.wikimedia\.org/"
+ to="https://noboard-chapters.wikimedia.org/" />
+
+ <rule from="^https?://wg\.en\.wikipedia\.org/"
+ to="https://wg-en.wikipedia.org/" />
+
+ <rule from="^https?://arbcom\.(de|en|fi|nl)\.wikipedia\.org/"
+ to="https://arbcom-$1.wikipedia.org/" />
+
+ <rule from="^http://([^@:/]+\.)?wik(ibooks|idata|imedia|inews|ipedia|iquote|isource|iversity|ivoyage|tionary)\.org/"
+ to="https://$1wik$2.org/" />
+
+ <rule from="^http://(www\.)?wikimediafoundation\.org/"
+ to="https://$1wikimediafoundation.org/" />
+
+ <rule from="^http://(www\.)?wikimedia\.ca/"
+ to="https://wikimedia.ca/" />
+
+ <rule from="^http://([^@:/]+)\.wmflabs\.org/"
+ to="https://$1.wmflabs.org/" />
+</ruleset>
diff --git a/searx/plugins/https_rules/Yahoo.xml b/searx/plugins/https_rules/Yahoo.xml
new file mode 100644
index 0000000..33548c4
--- /dev/null
+++ b/searx/plugins/https_rules/Yahoo.xml
@@ -0,0 +1,2450 @@
+<!--
+ Other Yahoo rulesets:
+
+ - Flickr.xml
+ - Lexity.com.xml
+ - Right-Media.xml
+ - Yahoo.com.tw.xml
+ - Yahoo.net.xml
+ - Yahoo_APIs.xml
+ - Yahoo_Japan.xml
+ - Yho.com.xml
+ - Yimg.com.xml
+ - YUI_Library.xml
+
+
+ CDN buckets:
+
+ - ipgcdn-a.akamaihd.net
+ - yahootv.flyingfishes.com.br
+ - yahoosports.teamfanshop.com
+
+
+ Nonfunctional domains:
+
+ - yahoo.com subdomains:
+
+ - account ⁵
+ - cn.adspecs ¹
+ - tw.adspecs ¹
+ - alerts ¹
+
+ - co.astrology ⁵
+ - espanol.astrology ⁵
+ - mx.astrology ⁵
+
+ - auction ¹
+
+ - biz subdomains:
+
+ - au.rss ¹
+ - nz.rss ¹
+
+ - bookmarks ⁵
+ - buzz ¹
+
+ - cn subdomains:
+
+ - ^ ¹
+ - help ¹
+ - news ¹
+
+ - docs subdomains:
+
+ - ^ ⁵
+ - ar ⁵
+ - fr ⁵
+ - uk ⁵
+
+ - au.rss.food (403, valid cert)
+ - au.forums ¹
+ - ar.games ⁵
+ - help.cc.hk ⁵
+ - hsrd ¹
+ - labs ¹
+
+ - lifestyle subdomains:
+
+ - tw.ipeen ¹
+ - au.rss ³
+ - nz.rss ³
+ - tw ⁵
+
+ - cn.overview.mail ¹
+
+ - cf.maps (404; mismatched, CN: www.yahoo.com)
+ - gws2.maps ¹
+ - kr.mobile ⁵
+ - tw.music ⁵
+
+ - my subdomains:
+
+ - ar ⁵
+ - au ²
+ - br ²
+ - ca ²
+ - de ²
+ - es ²
+ - fr ²
+ - hk ²
+ - ie ¹
+ - in ²
+ - it ²
+ - kr ¹
+ - mx ²
+ - nz ²
+ - qc ²
+ - sg ²
+ - tw ²
+ - cm.tw ⁸
+ - uk ²
+
+ - \w\w.news:
+
+ - cn ¹
+ - kr ¹
+ - se ¹
+
+ - opi ¹
+ - au.pfinance ²
+ - ar.rd ¹
+ - research ¹
+ - rightmedia (shows speakers.watersmartinnovations.com; mismatched, CN: *.watersmartinnovations.com)
+
+ - search subdomains:
+
+ - us.recipes ¹
+ - gossip-ss.us ¹
+
+ - \w\w.yhs:
+
+ - ar ¹
+ - au ¹
+ - br ¹
+ - ca ¹
+ - de ¹
+ - es ¹
+ - fr ¹
+ - hk ¹
+ - in ¹
+ - it ¹
+ - kr ¹
+ - mx ¹
+ - my ¹
+ - nz ¹
+ - ph ¹
+ - se ¹
+ - sg ¹
+ - tw ¹
+ - uk ¹
+ - us ¹
+ - vn ¹
+
+ - searchmarketing ¹
+ - au.shopping ⁹
+ - es.shopping ⁵
+ - suggestions ⁵
+ - au.rss.thehype ³
+
+ - video subdomains:
+
+ - malaysia ¹
+ - my ¹
+ - ph ¹
+ - sg ¹
+ - tw ¹
+
+ - voices ⁵
+ - cn.weather ¹
+ - visit.webhosting ⁵
+ - count.yisou ¹
+
+ - youth subdomains:
+
+ - au.rss ³
+ - nz.rss ³
+
+ - ypolicyblog.com (reset)
+ - www.ypolicyblog.com
+
+ ¹ Refused
+ ² Redirects to http, valid cert
+ ³ 404, valid cert
+ ⁴ Redirects to http; mismatched, CN: www.yahoo.com
+ ⁵ Dropped
+ ⁶ Recursive redirect
+ ⁷ 404; mismatched, CN: *.news.yahoo.com
+ ⁸ Redirects to http; mismatched, CN: *.news.yahoo.com
+ ⁹ "Incorrect Host in URL"
+
+ Problematic domains:
+
+ - i.acdn.us ¹
+ - cm.npc-morris.overture.com ²
+ - cm.npc-nydn.overture.com ²
+ - totaltravel.co.uk ³
+ - www.totaltravel.co.uk ⁴
+ - totaltravel.com ³
+ - www.totaltravel.com ⁴
+
+ yahoo.com subdomains:
+
+ - fr.actualites ⁴
+ - advertisingcentral ⁴
+
+ - cl.answers ⁴
+ - co.answers ⁴
+ - pe.answers ⁴
+ - ve.answers ⁴
+
+ - au.astrology ⁷
+ - ca.astrology ⁴
+ - nz.astrology ⁷
+
+ - ar.autos ⁴
+ - de.autos ⁴
+ - fr.autos ⁴
+ - mx.autos ⁴
+
+ - axis ¹
+ - id.berita ⁵
+
+ - au.biz ⁷
+ - nz.biz ⁷
+
+ - \w\w.careers: (works; mismatched, CN: www.yahoo.com)
+
+ - au
+ - ca
+ - de
+ - fr
+ - hk
+ - id
+ - ie
+ - in
+ - it
+ - jp
+ - my
+ - no
+ - ph
+ - qc ¹
+ - sg
+ - tw
+ - uk
+ - us
+ - vn
+
+ - malaysia.careers ¹
+ - cars ¹
+ - tw.help.cc ¹
+ - cine ¹
+ - cn (reset)
+ - connectedtv (works; mismatched, CN: smarttv.yahoo.com)
+ - cl.deportes ⁴
+ - co.deportes ⁴
+ - es.deportes ⁴
+ - pe.deportes ⁴
+ - ve.deportes ⁴
+ - au.dir ⁷
+ - au.docs (works; mismatched, CN: *.yahoo7.com.au)
+ - hk.ent ⁴
+ - br.esportes ⁴
+ - es.everything ⁴
+ - fr.eurosport ⁴
+ - fr.divertissement ⁵
+ - dk ⁴
+ - fantasysports ⁴
+ - es.laliga.fantasysports ⁴
+ - tw.fashion ⁵
+ - feedback ⁴
+ - chart.finance ⁴
+ - ichart.finance ⁴
+ - ie.finance ⁴
+ - kr.finance (404, valid cert)
+ - au.food (403; mismatched, CN: *.yahoo7.com.au)
+ - nz.food (403; mismatched, CN: *.yahoo7.com.au)
+ - au.forums ⁷
+
+ - games subdomains:
+
+ - br ⁴
+ - de ⁴
+ - es ⁴
+ - fr ⁴
+ - id ⁴
+ - it ⁴
+ - malaysia ⁴
+ - nz ⁴
+ - ph ⁴
+
+ - it.giochi ⁵
+ - ie.groups ⁴
+ - kr.gugi ⁴
+ - au.gwn7 (mixed css from l.yimg.com)
+ - fr.help ⁴
+ - help.cc.hk ⁴
+ - fr.jeux ⁵
+ - es.juegos ⁵
+ - kr ⁴
+
+ - lifestyle subdomains:
+
+ - ar ⁴
+ - br ⁴
+ - ca ⁴
+ - es ⁴
+ - es-us ⁴
+ - fr ⁴
+ - ie ⁴
+ - it ⁴
+
+ - ca.local (dropped, redirect destination cert mismatched)
+ - fr.local ⁴
+ - es.maps ⁴
+ - in.maps ⁴
+ - kr.maps ⁴
+ - mx.maps ⁴
+ - nz.maps ⁴
+
+ - external.global.media ⁵
+ - au.messages ⁷
+ - ie.messenger ⁴
+ - nz.messenger ⁷
+ - tw.messenger ⁴
+ - dk.mobile ⁴
+ - ie.mobile ⁴
+ - no.mobile ⁴
+ - webservices.mobile (works, self-signed)
+ - tw.atm.money (works; mismatched, CN: tw.campaign.money.yahoo.com)
+
+ - br.movies ¹
+ - fr.movies ¹
+ - es.movies ⁴
+ - es-us.movies ⁴
+ - it.movies ⁴
+
+ - br.mulher ⁵
+ - hk.music ¹
+ - tw.music ⁵
+ - fr.musique ⁵
+
+ - news subdomains:
+
+ - ar ⁴
+ - br ⁴
+ - cl ⁴
+ - co ⁴
+ - de ⁴
+ - dk ⁴
+ - id ⁴
+ - ie ⁴
+ - it ⁴
+ - mx ⁴
+ - pe ⁴
+ - qc ⁴
+ - au.rss (mixed css from l.yimg.com)
+ - ve ⁴
+
+ - no ⁴
+ - notepad (works; mismatched, CN: *.calendar.yahoo.com)
+ - it.notizie ⁵
+
+ - on ⁴
+ - it.oroscopo ⁵
+ - fr.pourelles ⁵
+ - br.esporteinterativo ⁵
+ - id.olahraga ⁵
+ - au.prime7 (mixed css from l.yimg.com)
+ - ru ⁴
+
+ - safely subdomains: ⁴
+
+ - ar
+ - br
+ - cl
+ - es
+ - es-us
+ - malaysia
+ - pe
+ - ve
+ - vn
+
+ - cn.search ⁴
+ - my.images.search ⁴
+ - kr.images.search ⁴
+ - nz.maps.search ⁴
+ - my.search ⁴
+ - my.video.search ⁴
+ - kr.searchad ¹
+
+ - ph.she ⁵
+ - fr.sites ⁵
+
+ - de.solutions ¹
+ - es.solutions ¹
+ - fr.solutions ¹
+ - it.solutions ¹
+ - nz.solutions ⁷
+ - uk.solutions ¹
+
+ - sport ⁴
+
+ - sports subdomains:
+
+ - ar ⁴
+ - br ⁴
+ - de ⁴
+ - es ⁴
+ - id ⁴
+ - in ⁴
+ - uk ⁴
+
+ - br.tempo ⁵
+ - es.tendencias ⁵
+ - au.todaytonight (403, valid cert)
+
+ - au.travel ⁷
+ - ca.travel ⁴
+ - id.travel ⁴
+ - my.travel ⁴
+ - nz.travel ⁷
+ - ph.travel ⁴
+ - uk.travel ⁴
+ - ca.tv ⁴
+ - pe.tv ⁴
+
+ - video subdomains:
+
+ - ^ ⁴
+ - ar ⁴
+ - au ⁴
+ - br ⁴
+ - ca ⁴
+ - co ⁴
+ - de ⁴
+ - es ⁴
+ - es-us ⁴
+ - fr ⁴
+ - hk ⁴
+ - in ⁴
+ - it ⁴
+ - pe ⁴
+ - mx ⁴
+ - uk ⁴
+ - ve ⁴
+
+ - fr.voyage (works; expired 2013-01-08, mismatched, CN: uk.travel.yahoo.com)
+
+ - weather subdomains:
+
+ - ar ⁴
+ - au ⁴
+ - br ⁴
+ - cl ⁴
+ - co ⁴
+ - de ⁴
+ - es ⁴
+ - espanol ⁴
+ - fr ⁴
+ - it ⁴
+ - kr ⁴
+ - mx ⁴
+ - pe ⁴
+ - tw ⁴
+ - mx ⁴
+ - ve ⁴
+
+ - widgets (works; mismatched, CN: smarttv.yahoo.com)
+ - au.youth (works; mismatched, CN: yahoo.com.au)
+
+
+ - (www.)yhoo.it ⁴ (bit.ly alias)
+
+ ¹ Dropped
+ ² Works, mismatched, CN: *.ysm.yahoo.com
+ ³ Works; mismatched, CN: builder.totaltravel.com
+ ⁴ Refused
+ ⁵ Works; mismatched, CN: *.news.yahoo.com
+ ⁶ Works; mismatched, CN: address.yahoo.com
+ ⁷ "Incorrect Host in URL"
+
+
+ Partially covered domains:
+
+ - (www.)totaltravel.com (→ au.totaltravel.yahoo.com, haven't found images/)
+
+ - yahoo.com subdomains:
+
+ - advertisingcentral ¹ (→ advertising)
+ - fantasysports ¹ (-> sports)
+ - in.sports (→ cricket, /*(?!$) doesn't redirect)
+ - nz.video (→ nz.news, \w.* 404s)
+
+ ¹ Some paths other than root don't redirect
+ ⁵ Avoiding false/broken MCB
+
+
+ Fully covered domains:
+
+ - i.acdn.us (→ s.yimg.com/ck/)
+
+ - (www.)totaltravel.co.uk (→ au.totaltravel.yahoo.com)
+
+ - yahoo.com subdomains:
+
+ - (www.)
+
+ - \w\w:
+
+ - ar
+ - au
+ - br
+ - ca
+ - cl
+ - cn (→ sg)
+ - co
+ - de
+ - dk (→ www)
+ - e1 (→ espanol)
+ - es
+ - fr
+ - gr
+ - hk
+ - id
+ - ie
+ - in
+ - it
+ - kr (→ tools.search)
+ - mx
+ - no (→ www)
+ - nz
+ - pe
+ - ph
+ - qc
+ - ru (→ www)
+ - se
+ - sg
+ - tw
+ - ve
+ - vn
+ - uk
+ - us
+
+ - fr.actualites (→ fr.news)
+ - fr-ca.actualites
+ - address
+
+ - \w\w.address:
+
+ - ca
+ - e1
+ - fr
+ - hk
+ - nz
+
+ - admanager
+
+ - \w\w.adserver:
+
+ - au
+ - uk
+ - us
+
+ - global.adserver
+ - adspecs
+
+ - \w+.adspecs:
+
+ - au
+ - de
+ - es
+ - fr
+ - hk
+ - in
+ - it
+ - latam
+ - nz
+ - sea
+ - uk
+
+ - \w+.adspecs-new:
+
+ - in
+ - sea
+
+ - advertising
+
+ - \w\w.advertising:
+
+ - au
+ - ca
+ - fr
+ - nz
+
+ - beap.adx
+ - c5.ah
+ - c5a.ah
+ - cookex.amp
+ - s-cookex.amp
+
+ - analytics subdomains:
+
+ - [aoyz]
+ - apac
+ - y3
+
+ - anc
+ - answers
+
+ - \w\w.answers:
+
+ - ar
+ - au
+ - br
+ - ca
+ - cl (→ espanol.answers)
+ - co (→ espanol.answers)
+ - de
+ - es
+ - fr
+ - id
+ - in
+ - it
+ - mx
+ - nz
+ - pe (→ espanol.answers)
+ - ph
+ - qc
+ - sg
+ - uk
+ - ve (→ espanol.answers)
+ - vn
+
+ - espanol.answers
+ - malaysia.answers
+
+ - antispam
+
+ - \w\w.antispam:
+
+ - ca
+ - dk
+ - fr
+ - in
+
+ - vn.antoan
+ - au.apps
+ - global.ard
+
+ - \w\w.astrology:
+
+ - au (→ au.lifestyle)
+ - ca (→ ca.shine)
+ - es
+ - fr
+ - nz (→ nz.lifestyle)
+ - uk
+
+ - auctions subdomains:
+
+ - hk
+ - hk.info
+ - hk.f1.master
+ - hk.f1.page
+ - hk.search
+ - hk.store
+ - hk.edit.store
+ - hk.user
+
+ - autos
+
+ - \w\w.autos:
+
+ - ca
+ - ar (→ ar.autocosmos.yahoo.net)
+ - de (→ de.cars)
+ - fr (→ fr.cars)
+ - mx (→ mx.autocosmos.yahoo.net)
+ - tw
+
+ - bc subdomains:
+
+ - clicks.beap
+ - csc.beap
+ - pn1
+ - row
+ - us
+
+ - axis (→ www)
+ - ar.ayuda
+
+ - bid subdomains:
+
+ - tw.campaign
+ - tw.master
+ - tw.mb
+ - tw.page
+ - tw.search
+ - tw.store
+ - tw
+ - tw.user
+
+ - tw.bigdeals
+ - m.tw.bigdeals
+ - tw.billing
+ - biz
+ - au.biz (→ au.finance)
+ - nz.biz (→ nz.finance)
+ - boss
+ - tw.partner.buy
+ - tw.buy
+ - calendar
+
+ - \w\w.calendar:
+
+ - ar
+ - au
+ - br
+ - ca
+ - de
+ - dk
+ - es
+ - fr
+ - gr
+ - hk
+ - ie
+ - in
+ - it
+ - no
+ - nz
+ - se
+ - sg
+ - tw
+ - uk
+ - us
+
+ - careers
+
+ - \w\w.careers (→ careers)
+
+ - ar
+ - au
+ - br
+ - ca
+ - cl
+ - de
+ - fr
+ - es
+ - hk
+ - id
+ - ie
+ - in
+ - it
+ - jp
+ - mx
+ - my
+ - no
+ - ph
+ - qc
+ - nz
+ - sg
+ - tw
+ - uk
+ - us
+ - vn
+
+ - malaysia.careers (→ careers)
+
+ - cars (→ autos)
+
+ - \w\w.cars:
+
+ - de
+ - es
+ - fr
+ - it
+ - uk
+
+ - \w\w.celebridades:
+
+ - ar
+ - br
+ - co
+ - mx
+
+ - es-us.celebridades
+
+ - celebrity
+
+ - \w\w.celebrity:
+
+ - ca
+ - es
+ - gr
+ - id
+ - in
+ - it
+ - hk
+ - ph
+ - tw
+ - uk
+
+ - tw.help.cc (→ help)
+ - tw.charity
+ - chart
+ - cine (→ es-us.cine)
+
+ - \w\w.cine:
+
+ - cl
+ - co
+ - es
+ - mx
+ - pe
+ - ve
+
+ - es-us.cine
+
+ - \w\w.cinema:
+
+ - br
+ - fr
+ - it
+
+ - \w\w.clima:
+
+ - cl
+ - co
+ - mx
+ - pe
+ - ve
+
+ - es-us.clima
+ - migration.cn
+ - commercecentral
+ - developers.commercecentral
+ - connectedtv (→ smarttv)
+ - br.contribuidores
+ - contributor
+ - uk.contributor
+ - cricket
+ - au.dating
+
+ - \w\w.deportes:
+
+ - ar
+ - cl (→ es-us.deportes)
+ - co (→ es-us.deportes)
+ - es (→ es.eurosport)
+ - mx
+ - pe (→ pe-us.deportes)
+ - ve (→ ve-us.deportes)
+
+ - es-us.deportes
+ - developer
+ - tw.dictionary
+ - dir
+ - au.dir (→ au.search)
+ - downloads
+ - s-b.dp
+
+ - edit subdomains:
+
+ - ^
+ - eu
+ - na
+ - sa
+ - tw
+
+ - tw.emarketing
+ - tw.ysm.emarketing
+ - en-maktoob
+ - hk.ent (→ hk.celebrity)
+
+ - \w\w.entertainment:
+
+ - my
+ - nz
+
+ - espanol
+ - edit.europe
+ - java.europe (→ adgallery.zenfs.com)
+
+ - eurosport subdomains:
+
+ - ^
+ - de
+ - es
+ - fr (→ fr.sports)
+ - it
+ - uk
+
+ - everything
+
+ - \w\w.everything:
+
+ - ca
+ - es (→ es.todo)
+ - nz
+ - ph
+ - pt
+ - tw
+ - uk
+
+ - au.fango
+
+ - \w+.fantasysports:
+
+ - baseball
+ - football
+ - golf
+ - hockey
+ - racing
+
+ - es.laliga.fantasysports (→ es.eurosport)
+ - tw.fashion
+ - feedback (→ yahoo.uservoice.com)
+ - br.financas
+ - finance
+
+ - \w\w.finance:
+
+ - ar
+ - au
+ - br
+ - ca
+ - de
+ - es
+ - fr
+ - hk
+ - ie (→ uk.finance)
+ - in
+ - it
+ - kr (→ tools.search)
+ - mx
+ - nz
+ - sg
+ - tw
+ - uk
+
+ - chart.finance (→ chart)
+ - tw.chart.finance
+ - espanol.finance
+ - tw.futures.finance
+ - ichart.finance (→ ichart)
+ - streamerapi.finance
+
+ - \w\w.finanzas:
+
+ - ar
+ - mx
+
+ - es-us.finanzas
+
+ - food subdomains:
+
+ - au (→ au.lifestyle)
+ - nz (→ nz.lifestyle)
+ - nz.rss
+
+ - au.forums (→ au.answers)
+ - nz.forums
+
+ - games subdomains:
+
+ - ^
+ - au
+ - ca
+ - de (→ de.spiele)
+ - id (→ games)
+ - malaysia (→ games)
+ - nz.games (→ games)
+ - ph (→ games)
+ - uk
+
+ - geo
+ - gma
+ - groups
+
+ - \w\w.groups:
+
+ - ar
+ - au
+ - br
+ - ca
+ - de
+ - dk
+ - es
+ - fr
+ - hk
+ - ie (→ uk.groups)
+ - in
+ - it
+ - kr
+ - mx
+ - nz
+ - ph
+ - sg
+ - tw
+ - uk
+ - us
+
+ - asia.groups
+ - espanol.groups
+ - es-us.groups
+ - fr-ca.groups
+ - moderators.groups
+ - kr.gugi (→ tools.search)
+ - health
+ - help
+
+ - \w\w.help:
+
+ - au
+ - br
+ - ca
+ - dk
+ - fr (→ help)
+ - hk
+ - io
+ - tw
+ - uk
+
+ - secure.help
+ - help.cc.hk (→ help)
+ - homes
+ - tw.house
+ - tw.v2.house
+ - ichart
+ - info
+
+ - \w\w.info:
+
+ - tw
+
+ - tw.tool.ks
+ - au.launch
+ - legalredirect
+
+ - \w\w.lifestyle:
+
+ - ar (→ ar.mujer)
+ - au
+ - ca (→ ca.shine)
+ - de
+ - hk
+ - ie (→ uk.lifestyle)
+ - in
+ - it
+ - mx (→ mx.mujer)
+ - nz
+ - uk
+
+ - es-us.lifestyle (→ ar.mujer)
+ - login
+ - gh.bouncer.login
+ - us.lrd
+ - local
+
+ - \w\w.local:
+
+ - au
+ - de
+ - fr (→ fr)
+ - uk
+
+ - m
+ - r.m
+
+ - \w\w.m:
+
+ - ar
+ - au
+ - br
+ - ca
+ - cn
+ - de
+ - es
+ - fr
+ - hk
+ - id
+ - ie
+ - in
+ - it
+ - kr
+ - ph
+ - qc
+ - se
+ - sg
+ - mx
+ - tw
+ - uk
+ - us
+ - vn
+
+ - mail
+
+ - *.mail:
+
+ - ar
+ - au
+ - co
+ - e1
+ - es
+ - fr
+ - it
+ - mrd
+ - my
+ - overview
+
+ - \w\w.overview:
+
+ - br
+ - ca
+ - co
+ - e1
+ - hk
+ - ph
+ - tw
+ - uk
+ - us
+
+ - ph
+ - th
+ - tw
+ - us-mg6
+ - vn
+ - c.c.yom
+ - \w+-c.c.yom
+
+ - maktoob
+ - malaysia
+ - tw.mall
+ - tw.user.mall
+ - maps
+
+ - \w\w.maps:
+
+ - au
+ - ca
+ - de
+ - es (→ es.search)
+ - fr
+ - in (→ maps)
+ - it
+ - kr (→ tools.search)
+ - mx (→ espanol.maps)
+ - nz (→ nz.search)
+ - qc
+ - tw
+ - uk
+
+ - espanol.maps
+ - sgws2.maps
+ - au.messages (→ au.answers)
+ - messenger
+
+ - \w\w.messenger:
+
+ - ar
+ - au
+ - br
+ - ca
+ - cf
+ - cl
+ - co
+ - de
+ - e1
+ - es
+ - fr
+ - hk
+ - id
+ - ie (→ uk.messenger)
+ - in
+ - it
+ - kr
+ - mx
+ - my
+ - nz (→ messenger)
+ - pe
+ - ph
+ - qc
+ - sg
+ - th
+ - tw (→ hk)
+ - uk
+ - us
+ - ve
+ - vn
+
+ - malaysia.messenger
+ - \w\w.meteo:
+
+ - fr
+ - it
+
+ - mlogin
+ - mobile
+
+ - \w\w.mobile:
+
+ - ar
+ - au
+ - br
+ - ca
+ - de
+ - dk (→ www)
+ - es
+ - fr
+ - hk
+ - id
+ - ie (→ uk.mobile)
+ - in
+ - it
+ - mx
+ - my
+ - nz
+ - no (→ www)
+ - ph
+ - qc
+ - sg
+ - th
+ - tw
+ - uk
+ - us
+ - vn
+
+ - espanol.mobile
+ - malaysia.mobile
+ - tw.campaign.money
+ - tw.money
+
+ - tw.movie
+
+ - movies subdomains:
+
+ - ^
+ - au
+ - br (→ br.cinema)
+ - ca
+ - es (→ es.cine)
+ - espanol (→ es-us.cine)
+ - fr (→ fr.cinema)
+ - it (→ it.cinema)
+ - nz
+ - au.rss
+ - nz.rss
+ - tw
+ - uk
+
+ - *.msg:
+
+ - dps (→ ycpi-mail-dps)
+ - prod2.rest-core
+ - prod1.rest-notify
+ - ycpi-mail-dps
+ - ycpi-mail-preferences
+ - ycpi-mail-rest-core
+ - ycpi-mail-rest-core2
+
+ - \w\w.mujer:
+
+ - ar
+ - co
+ - mx
+
+ - es-us.mujer
+
+ - music subdomains:
+
+ - ^
+ - ca
+ - hk (→ hk.celebrity)
+ - tw (→ tw.music.yahoo.net)
+
+ - [\w-]+\.musica:
+
+ - es-us
+ - mx
+
+ - my
+ - us.my
+ - de.nachrichten
+ - ucs.netsvs
+
+ - news subdomains:
+
+ - ^
+ - ar (→ ar.noticias)
+ - au
+ - br (→ br.noticias)
+ - au
+ - ca
+ - cl (→ cl.noticias)
+ - co (→ co.noticias)
+ - dk (→ www)
+ - es (→ es.noticias)
+ - fr
+ - gr
+ - hk
+ - ie (→ uk.news)
+ - in
+ - mx (→ mx.noticias)
+ - my
+ - nz
+ - pe (→ pe.noticias)
+ - ph
+ - nz.rss
+ - sg
+ - tw
+ - uk
+ - ve (→ ve.noticias)
+ - vn
+
+ - cookiex.ngd
+
+ - \w\w.noticias
+
+ - ar
+ - br
+ - cl
+ - co
+ - es
+ - mx
+ - pe
+ - ve
+
+ - es-us.noticias
+ - omg
+
+ - \w\w.omg:
+
+ - ar
+ - br
+ - co
+ - es
+ - it
+ - mx
+ - ph
+ - tw
+
+ - es-us.omg
+ - on (→ pilotx1)
+ - au.oztips
+ - rtb.pclick
+ - pilotx1
+ - pipes
+ - play
+ - playerio
+ - privacy
+ - profile
+ - tw.promo
+
+ - au.promotions
+ - hk.promotions
+ - nz.promotions
+
+ - publishing
+
+ - query subdomains:
+
+ - analytics
+ - mailapps
+ - media
+ - ucs
+ - us-locdrop
+ - video
+
+ - tw.rd
+ - us.rd
+
+ - safely
+
+ - \w\w.safely:
+
+ - ar (→ ar.seguridad)
+ - au
+ - ca
+ - cl (→ cl.seguridad)
+ - co
+ - de
+ - fr
+ - hk
+ - id
+ - in
+ - it
+ - mx (→ mx.seguridad)
+ - my
+ - nz
+ - pe (→ pe.seguridad)
+ - ph
+ - sg
+ - tw
+ - uk
+ - ve (→ ve.seguridad)
+
+ - es-us.safely (→ es.us.seguridad)
+ - fr-ca.safely
+ - malaysia.safely (→ my.safely)
+
+ - screen
+
+ - \w\w.screen:
+
+ - ar
+ - br
+ - ca
+ - co
+ - de
+ - es
+ - fr
+ - hk
+ - in
+ - it
+ - mx
+ - tw
+ - uk
+
+ - es-us.screen
+ - scribe
+
+ - search subdomains:
+
+ - ^
+
+ - \w\w:
+
+ - ar
+ - au
+ - be
+ - br
+ - ca
+ - cl
+ - cn (→ sg)
+ - co
+ - de
+ - dk
+ - es
+ - fi
+ - fr
+ - gr
+ - hk
+ - id
+ - ie
+ - in
+ - it
+ - kr
+ - mx
+ - my (→ malaysia)
+ - nl
+ - no
+ - nz
+ - pe
+ - ph
+ - ru
+ - se
+ - sg
+ - tw
+ - uk
+ - ve
+ - vn
+
+ - \w\w.blog:
+
+ - tw
+
+ - \w\w.dictionary:
+
+ - tw
+
+ - finance
+
+ - \w\w.finance:
+
+ - au
+ - nz
+
+ - images
+
+ - \w\w.images:
+
+ - ar
+ - au
+ - br
+ - ca
+ - cn (→ sg.images.search)
+ - de
+ - dk
+ - es
+ - fi
+ - fr
+ - hk
+ - id
+ - in
+ - it
+ - kr (→ kr.search)
+ - nl
+ - mx
+ - my (→ malaysia.images.search)
+ - no
+ - nz
+ - pe
+ - ph
+ - qc
+ - ru
+ - se
+ - sg
+ - tw
+ - uk
+ - ve
+ - vn
+
+ - malaysia.images
+
+ - \w\w.knowledge:
+
+ - tw
+
+ - \w\w.lifestyle:
+
+ - au
+ - nz
+
+ - \w\w.local:
+
+ - tw
+
+ - malaysia
+
+ - nz.maps (→ nz.search)
+
+ - \w\w.news:
+
+ - ar
+ - au
+ - ca
+ - de
+ - fr
+ - sg
+ - tw
+ - uk
+
+ - malaysia.news
+
+ - movies
+
+ - \w\w.movies:
+
+ - au
+ - ca
+ - es
+ - fr
+ - it
+ - nz
+ - sg
+ - uk
+
+ - news
+
+ - \w\w.news:
+
+ - ar
+ - au
+ - br
+ - es
+ - fr
+ - it
+ - nz
+ - pe
+ - sg
+ - uk
+
+ - r
+ - recipes
+
+ - \w\w.recipes:
+
+ - ar
+ - au
+ - br
+ - es
+ - fr
+ - it
+ - mx
+ - nz
+ - tw
+ - uk
+
+ - shine
+ - shopping
+
+ - \w\w.shopping:
+
+ - tw
+
+ - sports
+
+ - \w\w.sports:
+
+ - au
+ - nz
+
+ - profiles.sports
+ - tools
+ - au.tv
+ - video
+
+ - \w\w.video:
+
+ - ar
+ - au
+ - br
+ - ca
+ - de
+ - es
+ - fr
+ - hk
+ - id
+ - in
+ - it
+ - mx
+ - my (→ malaysia.video)
+ - nz
+ - ph
+ - qc
+ - sg
+ - tw
+ - uk
+ - vn
+
+ - malaysia.video
+
+ - kr.searchad (→ tools.search)
+ - rtb.pclick.secure
+ - security
+ - tw.security
+
+ - \w\w.seguranca:
+
+ - br
+
+ - \w\w.seguridad:
+
+ - ar
+ - cl
+ - co
+ - mx
+ - pe
+ - ve
+
+ - es-us.seguridad
+
+ - \w\w.seguro:
+
+ - seguro
+
+ - tw.serviceplus
+ - settings
+ - shine
+ - ca.shine
+ - shopping
+ - ca.shopping
+
+ - \w+.sitios:
+
+ - co
+ - mx
+
+ - dashboard.slingstone
+
+ - smallbusiness
+ - au.smallbusiness
+ - order.smallbusiness
+
+ - smarttv
+
+ - de.solutions (→ de.adspecs)
+ - es.solutions (→ es.adspecs)
+ - fr.solutions (→ fr.adspecs)
+ - it.solutions (→ it.adspecs)
+ - nz.solutions (→ nz.advertising)
+ - uk.solutions (→ uk.adspecs)
+
+ - rd.software
+ - de.spiele
+
+ - sport (→ sports)
+
+ - sports subdomains:
+
+ - ^
+ - au
+ - ca
+ - de (→ de.eurosport)
+ - es (→ es.eurosport)
+ - fr
+ - hk
+ - nz
+ - ph
+ - au.rss
+ - nz.rss
+ - tw
+ - uk (→ uk.eurosport)
+
+ - tw.stock
+ - au.thehype
+
+ - \w\w.tiempo:
+
+ - ar
+ - es
+
+ - au.todaytonight (→ au.news)
+ - es.todo
+ - toolbar
+
+ - \w\w.toolbar:
+
+ - ar
+ - au
+ - br
+ - ca
+ - cl
+ - cn
+ - co
+ - de
+ - es
+ - fr
+ - hk
+ - id
+ - in
+ - it
+ - mx
+ - my
+ - nz
+ - pe
+ - ph
+ - sg
+ - tw
+ - uk
+ - ve
+ - vn
+
+ - data.toolbar
+ - malaysia.toolbar
+ - au.totaltravel
+ - nz.totaltravel
+ - transparency
+ - travel
+ - au.travel (→ au.totaltravel)
+ - ca.travel (→ travel)
+ - my.travel (→ my.news)
+ - nz.travel (→ nz.totaltravel)
+ - ph.travel (→ ph.news)
+ - tw.travel
+ - uk.travel (→ uk.lifestyle)
+
+ - tv subdomains:
+
+ - ^
+ - ar
+ - au
+ - br
+ - ca (→ tv)
+ - de
+ - es
+ - es-us
+ - fr
+ - hk (→ hk.celebrity)
+ - it
+ - mx
+ - nz
+ - pe (→ es-us.tv)
+ - au.rss
+ - uk
+
+ - tw.uwant
+
+ - video subdomains:
+
+ - ^ (→ screen)
+ - ar (→ ar.screen)
+ - au (→ au.tv)
+ - br (→ br.screen)
+ - ca (→ ca.screen)
+ - co (→ co.screen)
+ - de (→ de.screen)
+ - es (→ es.screen)
+ - es-us (→ es-us.screen)
+ - fr (→ fr.screen)
+ - hk (→ help)
+ - in (→ in.screen)
+ - it (→ it.screen)
+ - mh
+ - mx (→ mx.screen)
+ - nz
+ - pe (→ es-us.screen)
+ - qos
+ - uk (→ uk.screen)
+ - ve (→ es-us.screen)
+ - yep
+
+ - weather subdomains:
+
+ - ^
+ - ar (→ ar.tiempo)
+ - au
+ - ca
+ - cl (→ cl.clima)
+ - co (→ co.clima)
+ - es (→ es.tiempo)
+ - espanol (→ es-us.clima)
+ - fr (→ fr.meteo)
+ - hk
+ - in
+ - it (→ it.meteo)
+ - mx (→ mx.clima)
+ - nz
+ - pe (→ pe.clima)
+ - ph
+ - sg
+ - tw (→ tw.news)
+ - uk
+ - us
+ - ve (→ ve.clima)
+
+ - de.wetter
+ - widgets (→ www)
+ - au.yel
+ - video.media.yql
+ - dmros.ysm
+
+
+ These altnames don't exist:
+
+ - manhattan.yahoo.com
+ - tw.moderation.money.yahoo.com
+
+
+ Observed cookie domains:
+
+ - . ¹
+ - .answers ²
+ - .auctions ¹
+ - .bid ¹
+ - .buy ⁴
+ - commercecentral
+ - developers.commercecentral ²
+ - .contributor ⁵
+ - tw.ysm.emarketing ³
+ - games ³
+ - homes ³
+ - au.local ³
+ - .maps ³
+ - .playerio ³
+ - profile ³
+ - .search ⁴
+ - .\w\w.tv ³
+ - tw.uwant ³
+ - .voices ⁵
+ - .www ³
+
+ ¹ Partially secured by us <= accounting for possible use on unsecurable domains
+ ² Secured by server
+ ⁵ Some secured by server, rest by us
+ ³ Secured by us <= not secured by server
+ ⁴ Not secured by us <= accounting for possible use on unsecurable domains
+ ⁵ Not secured by us <= no tls support
+
+
+ Mixed content:
+
+ - css, on:
+
+ - au.gwn7, tw.money, au.rss.news, and au.prime7 from l[13]?.yimg.com ¹
+
+ - Ads/web bugs, on:
+
+ - au.games from secure-us.imrworldwide.com ¹
+ - \w\w.celebrity, m, \w\w.m, and ar.mujer from csc.beap.bc.yahoo.com ¹
+ - au.news from au.adserver.yahoo.com ¹
+ - shine from www.facebook.com ¹
+
+ - Images, on:
+
+ - au.local from dacsisb9yvy2v.cloudfront.net ¹
+ - au.advertising, nz.advertising, au.answers, nz.answers, ph.answers, sg.answers, au, biz, \w\w.celebrity, cricket, nz.entertainment, eurosport, \w\w.eurosport, everything, au.fango, games, ichart, au.launch, nz.lifestyle, au.local, sg.messenger, tw.money, au.movies, nz.movies, au.news, nz.news, au.oztips, au.promotions, \w\w.safely, fr-ca.safely, search, \w\w.seguridad, es-us.seguridad, es.seguro, au.smallbusiness, au.rss.sports, nz.rss.sports, au.thehype, tw.toolbar, au.totaltravel, nz.totaltravel, au.tv, nz.tv, au.rss.tv, and nz.weather from l.yimg.com ¹
+ - ca.autos from yui.yahooapis.com ¹
+ - tw.info from l.yimg.com ¹
+ - tw.knowledge from tw.tool.ks ¹
+ - tw.knowledge from l.yimg.com ¹
+ - tw.money from ichart ¹
+ - tw.money from tw.news2.yimg.com ²
+ - tw.promo from www.adobe.com ¹
+ - au.totaltravel and nz.totaltravel from www.totaltravel.com ²
+ - \w\w.weather and de.wetter from media.zenfs.com ¹
+
+ - faivcon on tw from tw *
+
+ - Ads, on:
+
+ - fr.finance from www.borse.it ³
+ - tw.promo from www.facebook.com ¹
+ - de.kino from yahoo.quizaction.de ¹
+ - my.news from widgets.wego.com ²
+
+ ¹ Secured by us
+ ² Unsecurable
+ ³ Unsecurable <= redirects to http
+
+
+ Reported to fix bug
+
+ https://trac.torproject.org/projects/tor/ticket/4441
+
+
+ If you have a Yahoo Mail account, please test this ruleset!
+
+-->
+<ruleset name="Yahoo! (partial)">
+
+ <target host="i.acdn.us" />
+ <target host="rocketmail.com" />
+ <target host="www.rocketmail.com" />
+ <target host="totaltravel.co.uk" />
+ <target host="www.totaltravel.co.uk" />
+ <target host="totaltravel.com" />
+ <target host="*.totaltravel.com" />
+ <exclusion pattern="^http://(?:www\.)?totaltravel\.com/images/" />
+ <target host="yahoo.com" />
+ <target host="*.yahoo.com" />
+ <!--
+ Refused:
+ -->
+ <exclusion pattern="^http://(?:(?:cn|kr|tw)\.adspecs|(?:co|espanol|mx)\.astrology|kr\.mobile)\.yahoo\.com/" />
+ <!--
+ Redirect destination cert mismatched:
+ -->
+ <exclusion pattern="^http://ca\.local\.yahoo\.com/" />
+ <!--
+ Refused:
+ -->
+ <exclusion pattern="^http://cn\.overview\.mail\.yahoo\.com/" />
+ <!--exclusion pattern="^http://(cn|de|dk|id|ie|it|qc)\.news\.yahoo\.com/" /-->
+ <!--
+ Destination has mismatched cert:
+ -->
+ <exclusion pattern="^http://(?:br|es)\.safely\.yahoo\.com/" />
+ <target host="*.yahoofs.com" />
+ <target host="yhoo.it" />
+ <target host="ymail.com" />
+ <target host="www.ymail.com" />
+ <target host="*.zenfs.com" />
+
+
+ <!-- Some Yahoo cookies are cross-domain cookies.
+ It's a case of figuring out which ones
+ aren't needed on unsecurable pages.
+
+ - .yahoo.com
+ - AO
+ - B
+ - Set by y3.analytics.yahoo.com/itr.pl & us.bc.yahoo.com/b
+
+ - BA
+
+ - t=\d{10}
+
+ - CH
+ - \w{59}/
+ - F
+
+ - HP
+
+ - 0
+
+ - MSC
+ - t=\d{10}X
+ - PH (set by hjsal)
+ - SSL
+
+ - ucs (set by ucs.query)
+
+ - bnas=\d
+
+ - V
+
+ - v=\d.\d&cc=0&m=0
+
+ - Y
+
+ -->
+ <!--
+ Secured by server:
+ -->
+ <!--securecookie host="^\.answers\.yahoo\.com$" name="^answers3$" /-->
+ <!--securecookie host="^(developers\.)?commercecentral\.yahoo\.com$" name="^_rockstar_session$" /-->
+ <!--securecookie host="^\.contributor\.yahoo\.com$" name="^c$" /-->
+ <!--
+ Not secured by server:
+ -->
+ <!--securecookie host="^\.yahoo\.com$" name="^(AO|B|PH|au_ytv|tt_currency)$" /-->
+ <!--securecookie host="^\.auctions\.yahoo\.com$" name="^hkRecentHistory$" /-->
+ <!--securecookie host="^\.bid\.yahoo\.com$" name="^twRecentHistory$" /-->
+ <!--securecookie host="^commercecentral\.yahoo\.com$" name="^first_referer$" /-->
+ <!--securecookie host="^\.contributor\.yahoo\.com$" name="^ACSESS$" /-->
+ <!--securecookie host="^(\w\w\.celebridades|\w\w\.cinema|everything|\w\w\.financas|games|homes|\w\w\.news)\.yahoo\.com$" name="^AO$" /-->
+ <!--securecookie host="^tw\.ysm\.emarketing\.yahoo\.com$" name="^(device|is_c|tw_ysm_soeasy)$" /-->
+ <!--securecookie host="^(uk\.)?help\.yahoo\.com$" name="^(JSESSIONID|scav|scwysiwygparams)$" /-->
+ <!--securecookie host="^au\.local\.yahoo\.com$" name="^(aunz\.aulocal\.cookie|au_yloc)$" /-->
+ <!--securecookie host="^\.maktoob\.yahoo\.com$" name="^hpc$" /-->
+ <!--securecookie host="^\.maps\.yahoo\.com$" name="^MYCFL$" /-->
+ <!--securecookie host="^\.playerio\.yahoo\.com$" name="^playcodes-\d+$" /-->
+ <!--securecookie host="^profile\.yahoo\.com$" name="^YPRF$" /-->
+ <!--securecookie host="^\.search\.yahoo\.com$" name="^sSN$" /-->
+ <!--securecookie host="^\.es\.tv\.yahoo\.com$" name="^tv_listings_last_time$" /-->
+ <!--securecookie host="^tw\.uwant\.yahoo\.com$" name="^uwwtutorial$" /-->
+ <!--securecookie host="^\.www\.yahoo\.com$" name="^fpc$" /-->
+
+ <securecookie host="^\.yahoo\.com$" name="^(?:AO|B|SSL)$" />
+ <securecookie host="^(?:\.analytics|\w\w\.celebridades|\w\w\.cinema|commercecentral|\.contributor|tw\.ysm\.emarketing|everything|\w\w\.financas|games|help|\w\w\.help|homes|\w\w\.local|\.mail|\.maps|\.maktoob|movies|\.?news|\w\w.news|\.playerio|profile|(?:us-locdrop|video)\.query|images\.search|fr\.images\.search|\.toolbar|\.\w\w\.tv|\.uk|\.?us|tw\.uwant|\.www)\.yahoo\.com$" name=".+" />
+ <securecookie host="^\.bid\.yahoo\.com$" name="^twRecentHistory$" />
+ <securecookie host="^\.auctions\.yahoo\.com$" name="^hkRecentHistory$" />
+ <securecookie host="^\.zenfs\.com$" name="^BX$" />
+
+ <!-- Could we secure any of these safely?
+ -->
+ <!--securecookie host="^\.yahoo\.com$" name="^(DK|PH|au_ytv|tt_currency)$" /-->
+ <!--securecookie host="^\.buy\.yahoo\.com$" name="^YAct$" /-->
+ <!--securecookie host="^\.my\.yahoo\.com$" name="^(myc|MYTMI|U_mtupes)$" /-->
+ <!--securecookie host="^\.search\.yahoo\.com$" name="^sSN$" /-->
+
+
+ <rule from="^http://i\.acdn\.us/"
+ to="https://s.yimg.com/ck/" />
+
+ <rule from="^http://(?:www\.)?(?:rocket|y)mail\.com/"
+ to="https://mail.yahoo.com/" />
+
+ <rule from="^http://(?:www\.)?totaltravel\.co(?:m|\.uk)/"
+ to="https://au.totaltravel.yahoo.com/" />
+
+ <rule from="^http://builder\.totaltravel\.com/"
+ to="https://builder.totaltravel.com/" />
+
+ <!-- Redirect drops path and args:
+ -->
+ <rule from="^http://fr\.actualites\.yahoo\.com/.*"
+ to="https://fr.news.yahoo.com/" />
+
+ <rule from="^http://advertisingcentral\.yahoo\.com/+(?=$|\?)"
+ to="https://advertising.yahoo.com/" />
+
+ <!-- Redirect preserves path and args:
+ -->
+ <rule from="^http://(?:cl|co|pe|ve)\.answers\.yahoo\.com/+"
+ to="https://espanol.answers.yahoo.com/" />
+
+ <!-- Redirect drops path but not args:
+ -->
+ <rule from="^http://(au|nz)\.astrology\.yahoo\.com/[^?]*"
+ to="https://$1.lifestyle.yahoo.com/horoscopes/" />
+
+ <!-- Redirect drops path and args:
+ -->
+ <rule from="^http://ca\.astrology\.yahoo\.com/.*"
+ to="https://ca.shine.yahoo.com/horoscope/" />
+
+ <!-- Redirect keeps path and args:
+ -->
+ <rule from="^http://(ar|mx)\.autos\.yahoo\.com/+"
+ to="https://$1.autocosmos.yahoo.net/" />
+
+ <!-- Redirect keeps path and args:
+ -->
+ <rule from="^http://(de|fr)\.autos\.yahoo\.com/+"
+ to="https://$1.cars.yahoo.com/" />
+
+ <!-- Redirect drops path but not args:
+ -->
+ <rule from="^http://(au|nz)\.biz\.yahoo\.com/[^?]*"
+ to="https://$1.finance.yahoo.com/news" />
+
+ <!-- Redirect keeps path and args:
+ -->
+ <rule from="^http://(ar|au|br|ca|cl|de|fr|es|hk|id|ie|in|it|jp|mx|my|no|nz|ph|sg|tw|uk|us|vn)\.careers\.yahoo\.com/+"
+ to="https://careers.yahoo.com/$1/" />
+
+ <!-- Redirect keeps path and args:
+ -->
+ <rule from="^http://malaysia\.careers\.yahoo\.com/+"
+ to="https://careers.yahoo.com/my/" />
+
+ <!-- Redirect keeps path and args:
+ -->
+ <rule from="^http://qc\.careers\.yahoo\.com/+"
+ to="https://careers.yahoo.com/ca/" />
+
+ <!-- Redirect preserves forward slash, path, and args:
+ -->
+ <rule from="^http://cars\.yahoo\.com/"
+ to="https://autos.yahoo.com/" />
+
+ <!-- Redirect drops path and args:
+ -->
+ <rule from="^http://(?:tw\.help\.cc|help\.cc\.tw)\.yahoo\.com/.*"
+ to="https://help.yahoo.com/kb/index?page=home&amp;locale=zh_TW" />
+
+ <!-- Redirect keeps path and args:
+ -->
+ <rule from="^http://cn\.yahoo\.com/+"
+ to="https://sg.yahoo.com/" />
+
+ <!-- Redirect keeps path and args:
+ -->
+ <rule from="^http://(?:cine|espanol\.movies)\.yahoo\.com/+"
+ to="https://es-us.cine.yahoo.com/" />
+
+ <!-- Redirect keeps path and args:
+ -->
+ <rule from="^http://(?:cl|co|pe|ve)\.deportes\.yahoo\.com/+"
+ to="https://es-us.deportes.yahoo.com/" />
+ <!-- Redirect keeps path and args:
+ -->
+ <rule from="^http://es\.deportes\.yahoo\.com/+"
+ to="https://es.eurosport.yahoo.com/" />
+
+ <!-- Redirect keeps path but not args:
+ -->
+ <rule from="^http://au\.dir\.yahoo\.com/+([^?]*).*"
+ to="https://au.search.yahoo.com/web?fr=" />
+
+ <rule from="^http://(?:dk|no|ru)\.yahoo\.com/+"
+ to="https://www.yahoo.com/" />
+
+ <!-- Redirect keeps path and args:
+ -->
+ <rule from="^http://e1\.yahoo\.com/+"
+ to="https://espanol.yahoo.com/" />
+
+ <rule from="^http://hk\.ent\.yahoo\.com/+"
+ to="https://hk.celebrity.yahoo.com/" />
+
+ <rule from="^http://java\.europe\.yahoo\.com/"
+ to="https://adgallery.zenfs.com/" />
+
+ <rule from="^http://fr\.eurosport\.yahoo\.com/"
+ to="https://fr.sports.yahoo.com/" />
+
+ <!-- Server drops path and args:
+ -->
+ <rule from="^http://es\.everything\.yahoo\.com/.*"
+ to="https://es.todo.yahoo.com/" />
+
+ <rule from="^http://fantasysports\.yahoo\.com/(?=$|\?)"
+ to="https://sports.yahoo.com/fantasy" />
+
+ <!-- Server drops path but not args:
+ -->
+ <rule from="^http://es\.laliga\.fantasysports\.yahoo\.com/+"
+ to="https://es.eurosport.yahoo.com/fantasy/la-liga/" />
+
+ <rule from="^http://feedback\.yahoo\.com/"
+ to="https://yahoo.uservoice.com/" />
+
+ <rule from="^http://(i)?chart\.finance\.yahoo\.com/"
+ to="https://$1chart.yahoo.com/" />
+
+ <!-- Redirect drops path buy not args:
+ -->
+ <rule from="^http://connectedtv\.yahoo\.com/[^?]*"
+ to="https://smarttv.yahoo.com/" />
+
+ <!-- Server keeps path and args:
+ -->
+ <rule from="^http://kr\.finance\.yahoo\.com/"
+ to="https://tools.search.yahoo.com/kr-eol.html" />
+
+ <rule from="^http://(au|nz)\.food\.yahoo\.com/"
+ to="https://$1.lifestyle.yahoo.com/food/" />
+
+ <!-- Server keeps path and args:
+ -->
+ <rule from="^http://de\.games\.yahoo\.com/+"
+ to="https://de.spiele.yahoo.com/" />
+
+ <!-- Server keeps path and args:
+ -->
+ <rule from="^http://(?:id|malaysia|nz|ph)\.games\.yahoo\.com/+"
+ to="https://games.yahoo.com/" />
+
+ <!-- Redirect drops path and args:
+ -->
+ <rule from="^http://ie\.(finance|groups|lifestyle)\.yahoo\.com/.*"
+ to="https://uk.$1.yahoo.com/" />
+
+ <!-- Redirect drops path but not args:
+ -->
+ <rule from="^http://au\.(?:answer|forum)s\.yahoo\.com/[^?]*"
+ to="https://au.answers.yahoo.com/" />
+
+ <!-- Redirect drops path and args:
+ -->
+ <rule from="^http://kr\.(?:gugi|maps|searchad)\.yahoo\.com/.*"
+ to="https://tools.search.yahoo.com/kr-eol.html" />
+
+ <rule from="^http://fr\.help\.yahoo\.com/+"
+ to="https://help.yahoo.com/l/fr/yahoo/helpcentral/" />
+
+ <!-- Redirect drops path and args:
+ -->
+ <rule from="^http://help\.cc\.hk\.yahoo\.com/.*"
+ to="https://help.yahoo.com/kb/index?page=home&amp;locale=zh_HK" />
+
+ <!-- Redirect keeps path and args:
+ -->
+ <rule from="^http://(ar|es-us|mx)\.lifestyle\.yahoo\.com/+"
+ to="https://$1.mujer.yahoo.com/" />
+
+ <rule from="^http://ca\.(?:lifestyle|shine)\.yahoo\.com/"
+ to="https://ca.shine.yahoo.com/" />
+
+ <!-- Redirect drops path and args:
+ -->
+ <rule from="^http://fr\.local\.yahoo\.com/.*"
+ to="https://fr.yahoo.com/" />
+
+
+ <!-- Redirect drops path and args:
+ -->
+ <rule from="^http://es\.maps\.yahoo\.com/.*"
+ to="https://es.search.yahoo.com/search/es?p=callejero+itinerarios&amp;y=y" />
+
+ <!-- Redirect drops path and args:
+ -->
+ <rule from="^http://in\.maps\.yahoo\.com/.*"
+ to="https://maps.yahoo.com/" />
+
+ <!-- Redirect keeps path and args:
+ -->
+ <rule from="^http://mx\.maps\.yahoo\.com/+"
+ to="https://espanol.maps.yahoo.com/" />
+
+ <!-- Redirect keeps path and args:
+ -->
+ <rule from="^http://nz\.maps\.yahoo\.com/+"
+ to="https://nz.search.yahoo.com/search/maps/" />
+
+ <!-- Redirect drops path and args:
+ -->
+ <rule from="^http://ie\.messenger\.yahoo\.com/.*"
+ to="https://uk.messenger.yahoo.com/" />
+
+ <!-- Redirect drops path but not args:
+ -->
+ <rule from="^http://nz\.messenger\.yahoo\.com/[^?].*"
+ to="https://messenger.yahoo.com/" />
+
+ <!-- Redirect drops path and args:
+ -->
+ <rule from="^http://ie\.mobile\.yahoo\.com/.*"
+ to="https://uk.mobile.yahoo.com/" />
+
+ <!-- Redirect keeps path and args:
+ -->
+ <rule from="^http://tw\.music\.yahoo\.com/+"
+ to="https://tw.music.yahoo.net/" />
+
+ <!-- Redirect drops path and args:
+ -->
+ <rule from="^http://(?:axis|(?:dk|no)\.mobile|dk\.news)\.yahoo\.com/.*"
+ to="https://www.yahoo.com/" />
+
+ <!-- Redirect keeps path and args:
+ -->
+ <rule from="^http://es\.movies\.yahoo\.com/+"
+ to="https://es.cine.yahoo.com/" />
+
+ <!-- Redirect keeps path and args:
+ -->
+ <rule from="^http://(br|fr|it)\.movies\.yahoo\.com/+"
+ to="https://$1.cinema.yahoo.com/" />
+
+ <!-- This rule must be above the main one:
+ -->
+ <rule from="^http://dps\.msg\.yahoo\.com/"
+ to="https://ycpi-mail-dps.msg.yahoo.com/" />
+
+ <!-- Redirect drops path and args:
+ -->
+ <rule from="^http://hk\.(?:music|tv)\.yahoo\.com/.*"
+ to="https://hk.celebrity.yahoo.com/music/" />
+
+ <rule from="^http://(ar|br|co|es|mx|pe)\.news\.yahoo\.com/+"
+ to="https://$1.noticias.yahoo.com/" />
+
+ <!-- Redirect drops paths and args:
+ -->
+ <rule from="^http://ie\.news\.yahoo\.com/.*"
+ to="https://uk.news.yahoo.com/n/news_ireland.html" />
+
+ <rule from="^http://on\.yahoo\.com/+"
+ to="https://pilotx1.yahoo.com/" />
+
+ <!-- Cert only matches us.rd,
+ all appear equivalent.
+ -->
+ <rule from="^http://rds?\.yahoo\.com/"
+ to="https://us.rd.yahoo.com/" />
+
+ <rule from="^http://(ar|cl|co|es-us|mx|pe|ve)\.safely\.yahoo\.com/+"
+ to="https://$1.seguridad.yahoo.com/" />
+
+ <rule from="^http://malaysia\.safely\.yahoo\.com/+"
+ to="https://my.safely.yahoo.com/" />
+
+ <!-- Redirect drops paths and args:
+ -->
+ <rule from="^http://cn\.search\.yahoo\.com/.*"
+ to="https://sg.search.yahoo.com/" />
+
+ <!-- Redirect drops paths and args:
+ -->
+ <rule from="^http://kr\.(?:images\.)?search\.yahoo\.com/.*"
+ to="https://kr.search.yahoo.com/" />
+
+ <rule from="^http://my\.images\.search\.yahoo\.com/"
+ to="https://malaysia.images.search.yahoo.com/" />
+
+ <!-- Redirect keeps path and args:
+ -->
+ <rule from="^http://nz\.maps\.search\.yahoo\.com/+"
+ to="https://nz.search.yahoo.com/" />
+
+ <rule from="^http://my\.search\.yahoo\.com/+"
+ to="https://malaysia.search.yahoo.com/" />
+
+ <!-- Redirect drops path but not args:
+ -->
+ <rule from="^http://(de|es|fr|it|uk)\.solutions\.yahoo\.com/[^?]*"
+ to="https://$1.adspecs.yahoo.com/" />
+
+ <rule from="^http://sport\.yahoo\.com/+"
+ to="https://sports.yahoo.com/" />
+
+ <rule from="^http://(de|es|uk)\.sports\.yahoo\.com/+"
+ to="https://$1.eurosport.yahoo.com/" />
+
+ <rule from="^http://in\.sports\.yahoo\.com/+$"
+ to="https://cricket.yahoo.com/" />
+
+ <!-- Server drops paths but not args:
+ -->
+ <rule from="^http://au\.todaytonight\.yahoo\.com/+\??$"
+ to="https://au.news.yahoo.com/today-tonight/" />
+
+ <rule from="^http://au\.todaytonight\.yahoo\.com/[^?]*"
+ to="https://au.news.yahoo.com/today-tonight/" />
+
+ <!-- Redirect drops path but not args:
+ -->
+ <rule from="^http://(au|nz)\.travel\.yahoo\.com/[^?]*"
+ to="https://$1.totaltravel.yahoo.com/" />
+
+ <!-- Redirect keeps path and args:
+ -->
+ <rule from="^http://ca\.travel\.yahoo\.com/+"
+ to="https://travel.yahoo.com/" />
+
+ <!-- Redirect drops path and args:
+ -->
+ <rule from="^http://(my|ph)\.travel\.yahoo\.com/.*"
+ to="https://$1.news.yahoo.com/travel/" />
+
+ <!-- Redirect drops path and args:
+ -->
+ <rule from="^http://uk\.travel\.yahoo\.com/.*"
+ to="https://uk.lifestyle.yahoo.com/travel/" />
+
+ <rule from="^http://ca\.tv\.yahoo\.com/+"
+ to="https://tv.yahoo.com/" />
+
+ <!-- Redirect keeps path and args:
+ -->
+ <rule from="^http://pe\.tv\.yahoo\.com/+"
+ to="https://es-us.tv.yahoo.com/" />
+
+ <rule from="^http://((?:br|ca|de|es|es-us|fr|it|mx|uk)\.)?video\.yahoo\.com/+"
+ to="https://$1screen.yahoo.com/" />
+
+ <!-- Redirect drops path and args:
+ -->
+ <rule from="^http://(ar|co|in)\.video\.yahoo\.com/.*"
+ to="https://$1.screen.yahoo.com/" />
+
+ <!-- Redirect drops path and args:
+ -->
+ <rule from="^http://au\.video\.yahoo\.com/.*"
+ to="https://au.tv.yahoo.com/plus7/" />
+
+ <!-- Redirect keeps path and args:
+ -->
+ <rule from="^http://[pv]e\.video\.yahoo\.com/+"
+ to="https://es-us.screen.yahoo.com/" />
+
+ <!-- Redirect drops path and args:
+ -->
+ <rule from="^http://hk\.video\.yahoo\.com/.*"
+ to="https://help.yahoo.com/kb/index?page=home&amp;locale=zh_HK" />
+
+ <!-- Server doesn't redirect:
+ -->
+ <rule from="^http://my\.video\.yahoo\.com/"
+ to="https://malaysia.video.yahoo.com/" />
+
+ <rule from="^http://nz\.video\.yahoo\.com/+(?:\?.*)?$"
+ to="https://nz.news.yahoo.com/video/" />
+
+ <!-- Redirect keeps path and args:
+ -->
+ <rule from="^http://(ar|es)\.weather\.yahoo\.com/+"
+ to="https://$1.tiempo.yahoo.com/" />
+
+ <!-- Redirect keeps path and args:
+ -->
+ <rule from="^http://(cl|co|mx|pe|ve)\.weather\.yahoo\.com/+"
+ to="https://$1.clima.yahoo.com/" />
+
+ <!-- Redirect keeps path and args:
+ -->
+ <rule from="^http://espanol\.weather\.yahoo\.com/+"
+ to="https://es-us.clima.yahoo.com/" />
+
+ <!-- Redirect keeps path and args:
+ -->
+ <rule from="^http://(fr|it)\.weather\.yahoo\.com/+"
+ to="https://$1.meteo.yahoo.com/" />
+
+ <!-- Redirect drops path and args:
+ -->
+ <rule from="^http://tw\.weather\.yahoo\.com/.*"
+ to="https://tw.news.yahoo.com/weather-forecast/" />
+
+ <!-- Redirect drops path but not args:
+ -->
+ <rule from="^http://widgets\.yahoo\.com/[^?]*"
+ to="https://www.yahoo.com/" />
+
+ <rule from="^http://((?:\w\w|fr-ca\.actualites|address|\w\w\.address|admanager|(?:\w\w|global)\.adserver|adspecs|\w+\.adspecs|\w+\.adspecs-new|advertising|\w\w\.advertising|beap\.adx|c5a?\.ah|(?:s-)?cookex\.amp|(?:[aosz]|apac|y3?)\.analytics|anc|answers|(?:\w\w|espanol|malaysia)\.answers|antispam|\w\w\.antispam|vn\.antoan|au\.apps|global\.ard|astrology|\w\w\.astrology|hk\.(?:(?:info|f1\.master|f1\.page|search|store|edit\.store|user)\.)?auctions|autos|\w\w\.autos|ar\.ayuda|(?:clicks\.beap|csc\.beap|pn1|row|us)\.bc|tw\.bid|tw\.(?:campaign|master|mb|page|search|store|user)\.bid|(?:m\.)?tw\.bigdeals|tw\.billing|biz|boss|(?:tw\.partner|tw)\.buy|(?:\w\w\.)?calendar|careers|\w\w\.cars|(?:\w\w|es-us)\.celebridades|(?:\w\w\.)?celebrity|tw\.charity|i?chart|(?:\w\w|es-us)\.cine|\w\w\.cinema|(?:\w\w|es-us)\.clima|migration\.cn|(?:deveopers\.)?commercecentral|br\.contribuidores|(?:uk\.)?contributor|au\.dating|(?:\w\w|es-us)\.deportes|developer|tw\.dictionary|dir|downloads|s-b\.dp|(?:eu\.|na\.|sa\.|tw\.)?edit|tw\.(?:ysm\.)?emarketing|en-maktoob|\w\w\.entertainment|espanol|edit\.europe|eurosport|(?:de|es|it|uk)\.eurosport|everything|\w\w\.everything|\w+\.fantasysports|au\.fango|tw\.fashion|br\.financas|finance|(?:\w\w|tw\.chart|espanol|tw\.futures|streamerapi)\.finance|(?:\w\w|es-us)\.finanzas|nz\.rss\.food|nz\.forums|games|(?:au|ca|uk)\.games|geo|gma|groups|(?:\w\w|asia|espanol|es-us|fr-ca|moderators)\.groups|health|help|(?:\w\w|secure)\.help|homes|(?:tw|tw\.v2)\.house|info|\w\w\.info|tw\.tool\.ks|au\.launch|legalredirect|(?:\w\w)\.lifestyle|(?:gh\.bouncer\.)?login|us\.l?rd|local|\w\w\.local|m|r\.m|\w\w\.m|mail|(?:\w\w\.overview|[\w-]+(?:\.c\.yom)?)\.mail|maktoob|malaysia|tw\.(?:user\.)?mall|maps|(?:\w\w|espanol|sgws2)\.maps|messenger|(?:\w\w|malaysia)\.messenger|\w\w\.meteo|mlogin|mobile|(?:\w\w|espanol|malaysia)\.mobile|tw\.(?:campaign\.)?money|tw\.movie|movies|(?:au|ca|nz|au\.rss|nz\.rss|tw|uk)\.movies|[\w.-]+\.msg|(?:\w\w|es-us)\.mujer|music|ca\.music|[\w-]+\.musica|my|us\.my|de\.nachrichten|ucs\.netsvs|news|(?:au|ca|fr|gr|hk|in|nz|ph|nz\.rss|sg|tw|uk)\.news|cookiex\.ngd|(?:\w\w|es-us)\.noticias|omg|(?:\w\w|es-us)\.omg|au\.oztips|rtb\.pclick|pilotx1|pipes|play|playerio|privacy|profile|tw\.promo|(?:au|hk|nz)\.promotions|publishing|(?:analytics|mailapps|media|ucs|us-locdrop|video)\.query|hk\.rd|(?:\w\w\.|fr-ca\.)?safely|screen|(?:\w\w|es-us)\.screen|scribe|search|(?:\w\w|w\w\.blog|\w\w\.dictionary|finance|\w\w\.finance|images|\w\w\.images|\w\w\.knowledge|\w\w\.lifestyle|\w\w\.local|malaysia|movies|\w\w\.movies|news|\w\w\.news|malaysia\.news|r|recipes|\w\w\.recipes|shine|shopping|\w\w\.shopping|sports|\w\w\.sports|tools|au\.tv|video|\w\w\.video|malaysia\.video)\.search|sec|rtb\.pclick\.secure|security|tw\.security|\w\w\.seguranca|\w\w\.seguridad|es-us\.seguridad|\w\w\.seguro|tw\.serviceplus|settings|shine|ca\.shine|shopping|ca\.shopping|\w+\.sitios|dashboard\.slingstone|(?:au\.|order\.)?smallbusiness|smarttv|rd\.software|de\.spiele|sports|(?:au|ca|fr|hk|nz|ph|profiles|au\.rss|nz\.rss|tw)\.sports|tw\.stock|au\.thehype|\w\w\.tiempo|es\.todo|toolbar|(?:\w\w|data|malaysia)\.toolbar|(?:au|nz)\.totaltravel|transparency|travel|tw\.travel||tv|(?:ar|au|de|fr|es|es-us|it|mx|nz|au\.rss|uk)\.tv|tw\.uwant|(?:mh|nz|qos|yep)\.video|weather|(?:au|ca|hk|in|nz|sg|ph|uk|us)\.weather|de\.wetter|www|au\.yel|video\.media\.yql|dmros\.ysm)\.)?yahoo\.com/"
+ to="https://$1yahoo.com/" />
+
+ <rule from="^http://([\w-]+)\.yahoofs\.com/"
+ to="https://$1.yahoofs.com/" />
+
+ <rule from="^http://yhoo\.it/"
+ to="https://bit.ly/" />
+
+ <rule from="^http://(\w+)\.zenfs\.com/"
+ to="https://$1.zenfs.com/" />
+
+</ruleset>
diff --git a/searx/plugins/https_rules/YouTube.xml b/searx/plugins/https_rules/YouTube.xml
new file mode 100644
index 0000000..bddc2a5
--- /dev/null
+++ b/searx/plugins/https_rules/YouTube.xml
@@ -0,0 +1,46 @@
+<ruleset name="YouTube (partial)">
+
+ <target host="youtube.com" />
+ <target host="*.youtube.com" />
+ <exclusion pattern="^http://(?:www\.)?youtube\.com/crossdomain\.xml"/>
+ <exclusion pattern="^http://(?:www\.)?youtube\.com/(?:apiplayer|api_video_info)"/>
+ <exclusion pattern="^http://(?:[^/@:\.]+\.)?ytimg\.com/.*apiplayer[0-9]*\.swf"/>
+ <target host="*.ytimg.com" />
+ <target host="youtu.be" />
+ <target host="youtube-nocookie.com"/>
+ <target host="www.youtube-nocookie.com"/>
+ <target host="*.googlevideo.com"/>
+ <exclusion pattern="^http://([^/@:\.]+)\.googlevideo\.com/crossdomain\.xml"/>
+
+
+ <!-- Not secured by server:
+ -->
+ <!--securecookie host="^\.youtube\.com$" name="^(GEUP|PREF|VISITOR_INFO1_LIVE|YSC)$" /-->
+
+ <!-- observed ^. cookies:
+ - use_hitbox
+ - VISITOR_INFO1_LIVE
+ - recently_watched_video_id_list
+ - .youtube.com -->
+ <securecookie host="^\.youtube\.com" name=".*"/>
+
+
+ <rule from="^http://(www\.)?youtube\.com/"
+ to="https://$1youtube.com/"/>
+
+ <rule from="^http://(br|de|es|fr|il|img|insight|jp|m|nl|uk)\.youtube\.com/"
+ to="https://$1.youtube.com/"/>
+
+ <rule from="^http://([^/@:\.]+)\.ytimg\.com/"
+ to="https://$1.ytimg.com/"/>
+
+ <rule from="^http://youtu\.be/"
+ to="https://youtu.be/"/>
+
+ <rule from="^http://(?:www\.)?youtube-nocookie\.com/"
+ to="https://www.youtube-nocookie.com/"/>
+
+ <rule from="^http://([^/@:\.]+)\.googlevideo\.com/"
+ to="https://$1.googlevideo.com/"/>
+
+</ruleset>
diff --git a/searx/plugins/infinite_scroll.py b/searx/plugins/infinite_scroll.py
new file mode 100644
index 0000000..e372667
--- /dev/null
+++ b/searx/plugins/infinite_scroll.py
@@ -0,0 +1,9 @@
+from flask_babel import gettext
+
+name = gettext('Infinite scroll')
+description = gettext('Automatically load next page when scrolling to bottom of current page')
+default_on = False
+preference_section = 'ui'
+
+js_dependencies = ('plugins/js/infinite_scroll.js',)
+css_dependencies = ('plugins/css/infinite_scroll.css',)
diff --git a/searx/plugins/oa_doi_rewrite.py b/searx/plugins/oa_doi_rewrite.py
new file mode 100644
index 0000000..d494249
--- /dev/null
+++ b/searx/plugins/oa_doi_rewrite.py
@@ -0,0 +1,45 @@
+from flask_babel import gettext
+import re
+from searx.url_utils import urlparse, parse_qsl
+from searx import settings
+
+
+regex = re.compile(r'10\.\d{4,9}/[^\s]+')
+
+name = gettext('Open Access DOI rewrite')
+description = gettext('Avoid paywalls by redirecting to open-access versions of publications when available')
+default_on = False
+preference_section = 'general'
+
+doi_resolvers = settings['doi_resolvers']
+
+
+def extract_doi(url):
+ match = regex.search(url.path)
+ if match:
+ return match.group(0)
+ for _, v in parse_qsl(url.query):
+ match = regex.search(v)
+ if match:
+ return match.group(0)
+ return None
+
+
+def get_doi_resolver(args, preference_doi_resolver):
+ doi_resolvers = settings['doi_resolvers']
+ doi_resolver = args.get('doi_resolver', preference_doi_resolver)[0]
+ if doi_resolver not in doi_resolvers:
+ doi_resolvers = settings['default_doi_resolver']
+ doi_resolver_url = doi_resolvers[doi_resolver]
+ return doi_resolver_url
+
+
+def on_result(request, search, result):
+ doi = extract_doi(result['parsed_url'])
+ if doi and len(doi) < 50:
+ for suffix in ('/', '.pdf', '/full', '/meta', '/abstract'):
+ if doi.endswith(suffix):
+ doi = doi[:-len(suffix)]
+ result['url'] = get_doi_resolver(request.args, request.preferences.get_value('doi_resolver')) + doi
+ result['parsed_url'] = urlparse(result['url'])
+ return True
diff --git a/searx/plugins/open_results_on_new_tab.py b/searx/plugins/open_results_on_new_tab.py
new file mode 100644
index 0000000..ae27ea2
--- /dev/null
+++ b/searx/plugins/open_results_on_new_tab.py
@@ -0,0 +1,24 @@
+'''
+searx is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+searx is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with searx. If not, see < http://www.gnu.org/licenses/ >.
+
+(C) 2016 by Adam Tauber, <asciimoo@gmail.com>
+'''
+from flask_babel import gettext
+name = gettext('Open result links on new browser tabs')
+description = gettext('Results are opened in the same window by default. '
+ 'This plugin overwrites the default behaviour to open links on new tabs/windows. '
+ '(JavaScript required)')
+default_on = False
+
+js_dependencies = ('plugins/js/open_results_on_new_tab.js',)
diff --git a/searx/plugins/search_on_category_select.py b/searx/plugins/search_on_category_select.py
new file mode 100644
index 0000000..2a38cac
--- /dev/null
+++ b/searx/plugins/search_on_category_select.py
@@ -0,0 +1,24 @@
+'''
+searx is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+searx is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with searx. If not, see < http://www.gnu.org/licenses/ >.
+
+(C) 2015 by Adam Tauber, <asciimoo@gmail.com>
+'''
+from flask_babel import gettext
+name = gettext('Search on category select')
+description = gettext('Perform search immediately if a category selected. '
+ 'Disable to select multiple categories. (JavaScript required)')
+default_on = True
+preference_section = 'ui'
+
+js_dependencies = ('plugins/js/search_on_category_select.js',)
diff --git a/searx/plugins/self_info.py b/searx/plugins/self_info.py
new file mode 100644
index 0000000..8d6c661
--- /dev/null
+++ b/searx/plugins/self_info.py
@@ -0,0 +1,46 @@
+'''
+searx is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+searx is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with searx. If not, see < http://www.gnu.org/licenses/ >.
+
+(C) 2015 by Adam Tauber, <asciimoo@gmail.com>
+'''
+from flask_babel import gettext
+import re
+name = "Self Informations"
+description = gettext('Displays your IP if the query is "ip" and your user agent if the query contains "user agent".')
+default_on = True
+
+
+# Self User Agent regex
+p = re.compile(b'.*user[ -]agent.*', re.IGNORECASE)
+
+
+# attach callback to the post search hook
+# request: flask request object
+# ctx: the whole local context of the pre search hook
+def post_search(request, search):
+ if search.search_query.pageno > 1:
+ return True
+ if search.search_query.query == b'ip':
+ x_forwarded_for = request.headers.getlist("X-Forwarded-For")
+ if x_forwarded_for:
+ ip = x_forwarded_for[0]
+ else:
+ ip = request.remote_addr
+ search.result_container.answers.clear()
+ search.result_container.answers.add(ip)
+ elif p.match(search.search_query.query):
+ ua = request.user_agent
+ search.result_container.answers.clear()
+ search.result_container.answers.add(ua)
+ return True
diff --git a/searx/plugins/tracker_url_remover.py b/searx/plugins/tracker_url_remover.py
new file mode 100644
index 0000000..630c8a6
--- /dev/null
+++ b/searx/plugins/tracker_url_remover.py
@@ -0,0 +1,45 @@
+'''
+searx is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+searx is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with searx. If not, see < http://www.gnu.org/licenses/ >.
+
+(C) 2015 by Adam Tauber, <asciimoo@gmail.com>
+'''
+
+from flask_babel import gettext
+import re
+from searx.url_utils import urlunparse
+
+regexes = {re.compile(r'utm_[^&]+&?'),
+ re.compile(r'(wkey|wemail)[^&]+&?'),
+ re.compile(r'&$')}
+
+name = gettext('Tracker URL remover')
+description = gettext('Remove trackers arguments from the returned URL')
+default_on = True
+preference_section = 'privacy'
+
+
+def on_result(request, search, result):
+ query = result['parsed_url'].query
+
+ if query == "":
+ return True
+
+ for reg in regexes:
+ query = reg.sub('', query)
+
+ if query != result['parsed_url'].query:
+ result['parsed_url'] = result['parsed_url']._replace(query=query)
+ result['url'] = urlunparse(result['parsed_url'])
+
+ return True
diff --git a/searx/plugins/vim_hotkeys.py b/searx/plugins/vim_hotkeys.py
new file mode 100644
index 0000000..8f06f13
--- /dev/null
+++ b/searx/plugins/vim_hotkeys.py
@@ -0,0 +1,10 @@
+from flask_babel import gettext
+
+name = gettext('Vim-like hotkeys')
+description = gettext('Navigate search results with Vim-like hotkeys '
+ '(JavaScript required). '
+ 'Press "h" key on main or result page to get help.')
+default_on = False
+
+js_dependencies = ('plugins/js/vim_hotkeys.js',)
+css_dependencies = ('plugins/css/vim_hotkeys.css',)
diff --git a/searx/poolrequests.py b/searx/poolrequests.py
new file mode 100644
index 0000000..f9a9d77
--- /dev/null
+++ b/searx/poolrequests.py
@@ -0,0 +1,159 @@
+import requests
+
+from itertools import cycle
+from threading import RLock, local
+from searx import settings
+from time import time
+
+
+class HTTPAdapterWithConnParams(requests.adapters.HTTPAdapter):
+
+ def __init__(self, pool_connections=requests.adapters.DEFAULT_POOLSIZE,
+ pool_maxsize=requests.adapters.DEFAULT_POOLSIZE,
+ max_retries=requests.adapters.DEFAULT_RETRIES,
+ pool_block=requests.adapters.DEFAULT_POOLBLOCK,
+ **conn_params):
+ if max_retries == requests.adapters.DEFAULT_RETRIES:
+ self.max_retries = requests.adapters.Retry(0, read=False)
+ else:
+ self.max_retries = requests.adapters.Retry.from_int(max_retries)
+ self.config = {}
+ self.proxy_manager = {}
+
+ super(requests.adapters.HTTPAdapter, self).__init__()
+
+ self._pool_connections = pool_connections
+ self._pool_maxsize = pool_maxsize
+ self._pool_block = pool_block
+ self._conn_params = conn_params
+
+ self.init_poolmanager(pool_connections, pool_maxsize, block=pool_block, **conn_params)
+
+ def __setstate__(self, state):
+ # Can't handle by adding 'proxy_manager' to self.__attrs__ because
+ # because self.poolmanager uses a lambda function, which isn't pickleable.
+ self.proxy_manager = {}
+ self.config = {}
+
+ for attr, value in state.items():
+ setattr(self, attr, value)
+
+ self.init_poolmanager(self._pool_connections, self._pool_maxsize,
+ block=self._pool_block, **self._conn_params)
+
+
+threadLocal = local()
+connect = settings['outgoing'].get('pool_connections', 100) # Magic number kept from previous code
+maxsize = settings['outgoing'].get('pool_maxsize', requests.adapters.DEFAULT_POOLSIZE) # Picked from constructor
+if settings['outgoing'].get('source_ips'):
+ http_adapters = cycle(HTTPAdapterWithConnParams(pool_connections=connect, pool_maxsize=maxsize,
+ source_address=(source_ip, 0))
+ for source_ip in settings['outgoing']['source_ips'])
+ https_adapters = cycle(HTTPAdapterWithConnParams(pool_connections=connect, pool_maxsize=maxsize,
+ source_address=(source_ip, 0))
+ for source_ip in settings['outgoing']['source_ips'])
+else:
+ http_adapters = cycle((HTTPAdapterWithConnParams(pool_connections=connect, pool_maxsize=maxsize), ))
+ https_adapters = cycle((HTTPAdapterWithConnParams(pool_connections=connect, pool_maxsize=maxsize), ))
+
+
+class SessionSinglePool(requests.Session):
+
+ def __init__(self):
+ super(SessionSinglePool, self).__init__()
+
+ # reuse the same adapters
+ with RLock():
+ self.adapters.clear()
+ self.mount('https://', next(https_adapters))
+ self.mount('http://', next(http_adapters))
+
+ def close(self):
+ """Call super, but clear adapters since there are managed globaly"""
+ self.adapters.clear()
+ super(SessionSinglePool, self).close()
+
+
+def set_timeout_for_thread(timeout, start_time=None):
+ threadLocal.timeout = timeout
+ threadLocal.start_time = start_time
+
+
+def reset_time_for_thread():
+ threadLocal.total_time = 0
+
+
+def get_time_for_thread():
+ return threadLocal.total_time
+
+
+def request(method, url, **kwargs):
+ """same as requests/requests/api.py request(...)"""
+ time_before_request = time()
+
+ # session start
+ session = SessionSinglePool()
+
+ # proxies
+ kwargs['proxies'] = settings['outgoing'].get('proxies') or None
+
+ # timeout
+ if 'timeout' in kwargs:
+ timeout = kwargs['timeout']
+ else:
+ timeout = getattr(threadLocal, 'timeout', None)
+ if timeout is not None:
+ kwargs['timeout'] = timeout
+
+ # do request
+ response = session.request(method=method, url=url, **kwargs)
+
+ time_after_request = time()
+
+ # is there a timeout for this engine ?
+ if timeout is not None:
+ timeout_overhead = 0.2 # seconds
+ # start_time = when the user request started
+ start_time = getattr(threadLocal, 'start_time', time_before_request)
+ search_duration = time_after_request - start_time
+ if search_duration > timeout + timeout_overhead:
+ raise requests.exceptions.Timeout(response=response)
+
+ # session end
+ session.close()
+
+ if hasattr(threadLocal, 'total_time'):
+ threadLocal.total_time += time_after_request - time_before_request
+
+ return response
+
+
+def get(url, **kwargs):
+ kwargs.setdefault('allow_redirects', True)
+ return request('get', url, **kwargs)
+
+
+def options(url, **kwargs):
+ kwargs.setdefault('allow_redirects', True)
+ return request('options', url, **kwargs)
+
+
+def head(url, **kwargs):
+ kwargs.setdefault('allow_redirects', False)
+ return request('head', url, **kwargs)
+
+
+def post(url, data=None, **kwargs):
+ return request('post', url, data=data, **kwargs)
+
+
+def put(url, data=None, **kwargs):
+ return request('put', url, data=data, **kwargs)
+
+
+def patch(url, data=None, **kwargs):
+ return request('patch', url, data=data, **kwargs)
+
+
+def delete(url, **kwargs):
+ return request('delete', url, **kwargs)
diff --git a/searx/preferences.py b/searx/preferences.py
new file mode 100644
index 0000000..ed2cc40
--- /dev/null
+++ b/searx/preferences.py
@@ -0,0 +1,347 @@
+from base64 import urlsafe_b64encode, urlsafe_b64decode
+from zlib import compress, decompress
+from sys import version
+
+from searx import settings, autocomplete
+from searx.languages import language_codes as languages
+from searx.url_utils import parse_qs, urlencode
+
+if version[0] == '3':
+ unicode = str
+
+
+COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5 # 5 years
+LANGUAGE_CODES = [l[0] for l in languages]
+DISABLED = 0
+ENABLED = 1
+DOI_RESOLVERS = list(settings['doi_resolvers'])
+
+
+class MissingArgumentException(Exception):
+ pass
+
+
+class ValidationException(Exception):
+ pass
+
+
+class Setting(object):
+ """Base class of user settings"""
+
+ def __init__(self, default_value, **kwargs):
+ super(Setting, self).__init__()
+ self.value = default_value
+ for key, value in kwargs.items():
+ setattr(self, key, value)
+
+ self._post_init()
+
+ def _post_init(self):
+ pass
+
+ def parse(self, data):
+ self.value = data
+
+ def get_value(self):
+ return self.value
+
+ def save(self, name, resp):
+ resp.set_cookie(name, self.value, max_age=COOKIE_MAX_AGE)
+
+
+class StringSetting(Setting):
+ """Setting of plain string values"""
+ pass
+
+
+class EnumStringSetting(Setting):
+ """Setting of a value which can only come from the given choices"""
+
+ def _validate_selection(self, selection):
+ if selection not in self.choices:
+ raise ValidationException('Invalid value: "{0}"'.format(selection))
+
+ def _post_init(self):
+ if not hasattr(self, 'choices'):
+ raise MissingArgumentException('Missing argument: choices')
+ self._validate_selection(self.value)
+
+ def parse(self, data):
+ self._validate_selection(data)
+ self.value = data
+
+
+class MultipleChoiceSetting(EnumStringSetting):
+ """Setting of values which can only come from the given choices"""
+
+ def _validate_selections(self, selections):
+ for item in selections:
+ if item not in self.choices:
+ raise ValidationException('Invalid value: "{0}"'.format(selections))
+
+ def _post_init(self):
+ if not hasattr(self, 'choices'):
+ raise MissingArgumentException('Missing argument: choices')
+ self._validate_selections(self.value)
+
+ def parse(self, data):
+ if data == '':
+ self.value = []
+ return
+
+ elements = data.split(',')
+ self._validate_selections(elements)
+ self.value = elements
+
+ def parse_form(self, data):
+ self.value = []
+ for choice in data:
+ if choice in self.choices and choice not in self.value:
+ self.value.append(choice)
+
+ def save(self, name, resp):
+ resp.set_cookie(name, ','.join(self.value), max_age=COOKIE_MAX_AGE)
+
+
+class SearchLanguageSetting(EnumStringSetting):
+ """Available choices may change, so user's value may not be in choices anymore"""
+
+ def parse(self, data):
+ if data not in self.choices and data != self.value:
+ # hack to give some backwards compatibility with old language cookies
+ data = str(data).replace('_', '-')
+ lang = data.split('-')[0]
+ if data in self.choices:
+ pass
+ elif lang in self.choices:
+ data = lang
+ else:
+ data = self.value
+ self.value = data
+
+
+class MapSetting(Setting):
+ """Setting of a value that has to be translated in order to be storable"""
+
+ def _post_init(self):
+ if not hasattr(self, 'map'):
+ raise MissingArgumentException('missing argument: map')
+ if self.value not in self.map.values():
+ raise ValidationException('Invalid default value')
+
+ def parse(self, data):
+ if data not in self.map:
+ raise ValidationException('Invalid choice: {0}'.format(data))
+ self.value = self.map[data]
+ self.key = data
+
+ def save(self, name, resp):
+ if hasattr(self, 'key'):
+ resp.set_cookie(name, self.key, max_age=COOKIE_MAX_AGE)
+
+
+class SwitchableSetting(Setting):
+ """ Base class for settings that can be turned on && off"""
+
+ def _post_init(self):
+ self.disabled = set()
+ self.enabled = set()
+ if not hasattr(self, 'choices'):
+ raise MissingArgumentException('missing argument: choices')
+
+ def transform_form_items(self, items):
+ return items
+
+ def transform_values(self, values):
+ return values
+
+ def parse_cookie(self, data):
+ if data[DISABLED] != '':
+ self.disabled = set(data[DISABLED].split(','))
+ if data[ENABLED] != '':
+ self.enabled = set(data[ENABLED].split(','))
+
+ def parse_form(self, items):
+ items = self.transform_form_items(items)
+
+ self.disabled = set()
+ self.enabled = set()
+ for choice in self.choices:
+ if choice['default_on']:
+ if choice['id'] in items:
+ self.disabled.add(choice['id'])
+ else:
+ if choice['id'] not in items:
+ self.enabled.add(choice['id'])
+
+ def save(self, resp):
+ resp.set_cookie('disabled_{0}'.format(self.value), ','.join(self.disabled), max_age=COOKIE_MAX_AGE)
+ resp.set_cookie('enabled_{0}'.format(self.value), ','.join(self.enabled), max_age=COOKIE_MAX_AGE)
+
+ def get_disabled(self):
+ disabled = self.disabled
+ for choice in self.choices:
+ if not choice['default_on'] and choice['id'] not in self.enabled:
+ disabled.add(choice['id'])
+ return self.transform_values(disabled)
+
+ def get_enabled(self):
+ enabled = self.enabled
+ for choice in self.choices:
+ if choice['default_on'] and choice['id'] not in self.disabled:
+ enabled.add(choice['id'])
+ return self.transform_values(enabled)
+
+
+class EnginesSetting(SwitchableSetting):
+
+ def _post_init(self):
+ super(EnginesSetting, self)._post_init()
+ transformed_choices = []
+ for engine_name, engine in self.choices.items():
+ for category in engine.categories:
+ transformed_choice = dict()
+ transformed_choice['default_on'] = not engine.disabled
+ transformed_choice['id'] = '{}__{}'.format(engine_name, category)
+ transformed_choices.append(transformed_choice)
+ self.choices = transformed_choices
+
+ def transform_form_items(self, items):
+ return [item[len('engine_'):].replace('_', ' ').replace(' ', '__') for item in items]
+
+ def transform_values(self, values):
+ if len(values) == 1 and next(iter(values)) == '':
+ return list()
+ transformed_values = []
+ for value in values:
+ engine, category = value.split('__')
+ transformed_values.append((engine, category))
+ return transformed_values
+
+
+class PluginsSetting(SwitchableSetting):
+
+ def _post_init(self):
+ super(PluginsSetting, self)._post_init()
+ transformed_choices = []
+ for plugin in self.choices:
+ transformed_choice = dict()
+ transformed_choice['default_on'] = plugin.default_on
+ transformed_choice['id'] = plugin.id
+ transformed_choices.append(transformed_choice)
+ self.choices = transformed_choices
+
+ def transform_form_items(self, items):
+ return [item[len('plugin_'):] for item in items]
+
+
+class Preferences(object):
+ """Validates and saves preferences to cookies"""
+
+ def __init__(self, themes, categories, engines, plugins):
+ super(Preferences, self).__init__()
+
+ self.key_value_settings = {'categories': MultipleChoiceSetting(['general'], choices=categories + ['none']),
+ 'language': SearchLanguageSetting(settings['search']['language'],
+ choices=LANGUAGE_CODES),
+ 'locale': EnumStringSetting(settings['ui']['default_locale'],
+ choices=list(settings['locales'].keys()) + ['']),
+ 'autocomplete': EnumStringSetting(settings['search']['autocomplete'],
+ choices=list(autocomplete.backends.keys()) + ['']),
+ 'image_proxy': MapSetting(settings['server']['image_proxy'],
+ map={'': settings['server']['image_proxy'],
+ '0': False,
+ '1': True,
+ 'True': True,
+ 'False': False}),
+ 'method': EnumStringSetting('POST', choices=('GET', 'POST')),
+ 'safesearch': MapSetting(settings['search']['safe_search'], map={'0': 0,
+ '1': 1,
+ '2': 2}),
+ 'theme': EnumStringSetting(settings['ui']['default_theme'], choices=themes),
+ 'results_on_new_tab': MapSetting(False, map={'0': False,
+ '1': True,
+ 'False': False,
+ 'True': True}),
+ 'doi_resolver': MultipleChoiceSetting(['oadoi.org'], choices=DOI_RESOLVERS),
+ 'oscar-style': EnumStringSetting(
+ settings['ui'].get('theme_args', {}).get('oscar_style', 'logicodev'),
+ choices=['', 'logicodev', 'logicodev-dark', 'pointhi']),
+ }
+
+ self.engines = EnginesSetting('engines', choices=engines)
+ self.plugins = PluginsSetting('plugins', choices=plugins)
+ self.unknown_params = {}
+
+ def get_as_url_params(self):
+ settings_kv = {}
+ for k, v in self.key_value_settings.items():
+ if isinstance(v, MultipleChoiceSetting):
+ settings_kv[k] = ','.join(v.get_value())
+ else:
+ settings_kv[k] = v.get_value()
+
+ settings_kv['disabled_engines'] = ','.join(self.engines.disabled)
+ settings_kv['enabled_engines'] = ','.join(self.engines.enabled)
+
+ settings_kv['disabled_plugins'] = ','.join(self.plugins.disabled)
+ settings_kv['enabled_plugins'] = ','.join(self.plugins.enabled)
+
+ return urlsafe_b64encode(compress(urlencode(settings_kv).encode('utf-8'))).decode('utf-8')
+
+ def parse_encoded_data(self, input_data):
+ decoded_data = decompress(urlsafe_b64decode(input_data.encode('utf-8')))
+ self.parse_dict({x: y[0] for x, y in parse_qs(unicode(decoded_data)).items()})
+
+ def parse_dict(self, input_data):
+ for user_setting_name, user_setting in input_data.items():
+ if user_setting_name in self.key_value_settings:
+ self.key_value_settings[user_setting_name].parse(user_setting)
+ elif user_setting_name == 'disabled_engines':
+ self.engines.parse_cookie((input_data.get('disabled_engines', ''),
+ input_data.get('enabled_engines', '')))
+ elif user_setting_name == 'disabled_plugins':
+ self.plugins.parse_cookie((input_data.get('disabled_plugins', ''),
+ input_data.get('enabled_plugins', '')))
+ elif not any(user_setting_name.startswith(x) for x in [
+ 'enabled_',
+ 'disabled_',
+ 'engine_',
+ 'category_',
+ 'plugin_']):
+ self.unknown_params[user_setting_name] = user_setting
+
+ def parse_form(self, input_data):
+ disabled_engines = []
+ enabled_categories = []
+ disabled_plugins = []
+ for user_setting_name, user_setting in input_data.items():
+ if user_setting_name in self.key_value_settings:
+ self.key_value_settings[user_setting_name].parse(user_setting)
+ elif user_setting_name.startswith('engine_'):
+ disabled_engines.append(user_setting_name)
+ elif user_setting_name.startswith('category_'):
+ enabled_categories.append(user_setting_name[len('category_'):])
+ elif user_setting_name.startswith('plugin_'):
+ disabled_plugins.append(user_setting_name)
+ else:
+ self.unknown_params[user_setting_name] = user_setting
+ self.key_value_settings['categories'].parse_form(enabled_categories)
+ self.engines.parse_form(disabled_engines)
+ self.plugins.parse_form(disabled_plugins)
+
+ # cannot be used in case of engines or plugins
+ def get_value(self, user_setting_name):
+ if user_setting_name in self.key_value_settings:
+ return self.key_value_settings[user_setting_name].get_value()
+ if user_setting_name in self.unknown_params:
+ return self.unknown_params[user_setting_name]
+
+ def save(self, resp):
+ for user_setting_name, user_setting in self.key_value_settings.items():
+ user_setting.save(user_setting_name, resp)
+ self.engines.save(resp)
+ self.plugins.save(resp)
+ for k, v in self.unknown_params.items():
+ resp.set_cookie(k, v, max_age=COOKIE_MAX_AGE)
+ return resp
diff --git a/searx/query.py b/searx/query.py
new file mode 100644
index 0000000..0b5143d
--- /dev/null
+++ b/searx/query.py
@@ -0,0 +1,176 @@
+#!/usr/bin/env python
+
+'''
+searx is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+searx is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with searx. If not, see < http://www.gnu.org/licenses/ >.
+
+(C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at>
+'''
+
+from searx.languages import language_codes
+from searx.engines import (
+ categories, engines, engine_shortcuts
+)
+import re
+import sys
+
+if sys.version_info[0] == 3:
+ unicode = str
+
+VALID_LANGUAGE_CODE = re.compile(r'^[a-z]{2,3}(-[a-zA-Z]{2})?$')
+
+
+class RawTextQuery(object):
+ """parse raw text query (the value from the html input)"""
+
+ def __init__(self, query, disabled_engines):
+ self.query = query
+ self.disabled_engines = []
+
+ if disabled_engines:
+ self.disabled_engines = disabled_engines
+
+ self.query_parts = []
+ self.engines = []
+ self.languages = []
+ self.specific = False
+
+ # parse query, if tags are set, which
+ # change the serch engine or search-language
+ def parse_query(self):
+ self.query_parts = []
+
+ # split query, including whitespaces
+ raw_query_parts = re.split(r'(\s+)' if isinstance(self.query, str) else b'(\s+)', self.query)
+
+ parse_next = True
+
+ for query_part in raw_query_parts:
+ if not parse_next:
+ self.query_parts[-1] += query_part
+ continue
+
+ parse_next = False
+
+ # part does only contain spaces, skip
+ if query_part.isspace()\
+ or query_part == '':
+ parse_next = True
+ self.query_parts.append(query_part)
+ continue
+
+ # this force a language
+ if query_part[0] == ':':
+ lang = query_part[1:].lower().replace('_', '-')
+
+ # check if any language-code is equal with
+ # declared language-codes
+ for lc in language_codes:
+ lang_id, lang_name, country, english_name = map(unicode.lower, lc)
+
+ # if correct language-code is found
+ # set it as new search-language
+ if (lang == lang_id
+ or lang == lang_name
+ or lang == english_name
+ or lang.replace('-', ' ') == country)\
+ and lang not in self.languages:
+ parse_next = True
+ lang_parts = lang_id.split('-')
+ if len(lang_parts) == 2:
+ self.languages.append(lang_parts[0] + '-' + lang_parts[1].upper())
+ else:
+ self.languages.append(lang_id)
+ # to ensure best match (first match is not necessarily the best one)
+ if lang == lang_id:
+ break
+
+ # user may set a valid, yet not selectable language
+ if VALID_LANGUAGE_CODE.match(lang):
+ lang_parts = lang.split('-')
+ if len(lang_parts) > 1:
+ lang = lang_parts[0].lower() + '-' + lang_parts[1].upper()
+ if lang not in self.languages:
+ self.languages.append(lang)
+ parse_next = True
+
+ # this force a engine or category
+ if query_part[0] == '!' or query_part[0] == '?':
+ prefix = query_part[1:].replace('-', ' ').replace('_', ' ')
+
+ # check if prefix is equal with engine shortcut
+ if prefix in engine_shortcuts:
+ parse_next = True
+ engine_name = engine_shortcuts[prefix]
+ if engine_name in engines:
+ for engine_category in engines[engine_name].categories:
+ self.engines.append({'category': engine_category,
+ 'name': engine_name,
+ 'from_bang': True})
+
+ # check if prefix is equal with engine name
+ elif prefix in engines:
+ parse_next = True
+ if prefix in engines:
+ for engine_category in engines[prefix].categories:
+ self.engines.append({'category': engine_category,
+ 'name': prefix,
+ 'from_bang': True})
+
+ # check if prefix is equal with categorie name
+ elif prefix in categories:
+ # using all engines for that search, which
+ # are declared under that categorie name
+ parse_next = True
+ self.engines.extend({'category': prefix,
+ 'name': engine.name}
+ for engine in categories[prefix]
+ if (engine.name, prefix) not in self.disabled_engines)
+
+ if query_part[0] == '!':
+ self.specific = True
+
+ # append query part to query_part list
+ self.query_parts.append(query_part)
+
+ def changeSearchQuery(self, search_query):
+ if len(self.query_parts):
+ self.query_parts[-1] = search_query
+ else:
+ self.query_parts.append(search_query)
+
+ def getSearchQuery(self):
+ if len(self.query_parts):
+ return self.query_parts[-1]
+ else:
+ return ''
+
+ def getFullQuery(self):
+ # get full querry including whitespaces
+ return u''.join(self.query_parts)
+
+
+class SearchQuery(object):
+ """container for all the search parameters (query, language, etc...)"""
+
+ def __init__(self, query, engines, categories, lang, safesearch, pageno, time_range):
+ self.query = query.encode('utf-8')
+ self.engines = engines
+ self.categories = categories
+ self.lang = lang
+ self.safesearch = safesearch
+ self.pageno = pageno
+ self.time_range = time_range
+
+ def __str__(self):
+ return str(self.query) + ";" + str(self.engines)
diff --git a/searx/results.py b/searx/results.py
new file mode 100644
index 0000000..cb204a6
--- /dev/null
+++ b/searx/results.py
@@ -0,0 +1,321 @@
+import re
+import sys
+from collections import defaultdict
+from operator import itemgetter
+from threading import RLock
+from searx.engines import engines
+from searx.url_utils import urlparse, unquote
+
+if sys.version_info[0] == 3:
+ basestring = str
+
+CONTENT_LEN_IGNORED_CHARS_REGEX = re.compile(r'[,;:!?\./\\\\ ()-_]', re.M | re.U)
+WHITESPACE_REGEX = re.compile('( |\t|\n)+', re.M | re.U)
+
+
+# return the meaningful length of the content for a result
+def result_content_len(content):
+ if isinstance(content, basestring):
+ return len(CONTENT_LEN_IGNORED_CHARS_REGEX.sub('', content))
+ else:
+ return 0
+
+
+def compare_urls(url_a, url_b):
+ # ignore www. in comparison
+ if url_a.netloc.startswith('www.'):
+ host_a = url_a.netloc.replace('www.', '', 1)
+ else:
+ host_a = url_a.netloc
+ if url_b.netloc.startswith('www.'):
+ host_b = url_b.netloc.replace('www.', '', 1)
+ else:
+ host_b = url_b.netloc
+
+ if host_a != host_b or url_a.query != url_b.query or url_a.fragment != url_b.fragment:
+ return False
+
+ # remove / from the end of the url if required
+ path_a = url_a.path[:-1]\
+ if url_a.path.endswith('/')\
+ else url_a.path
+ path_b = url_b.path[:-1]\
+ if url_b.path.endswith('/')\
+ else url_b.path
+
+ return unquote(path_a) == unquote(path_b)
+
+
+def merge_two_infoboxes(infobox1, infobox2):
+ # get engines weights
+ if hasattr(engines[infobox1['engine']], 'weight'):
+ weight1 = engines[infobox1['engine']].weight
+ else:
+ weight1 = 1
+ if hasattr(engines[infobox2['engine']], 'weight'):
+ weight2 = engines[infobox2['engine']].weight
+ else:
+ weight2 = 1
+
+ if weight2 > weight1:
+ infobox1['engine'] = infobox2['engine']
+
+ if 'urls' in infobox2:
+ urls1 = infobox1.get('urls', None)
+ if urls1 is None:
+ urls1 = []
+
+ for url2 in infobox2.get('urls', []):
+ unique_url = True
+ for url1 in infobox1.get('urls', []):
+ if compare_urls(urlparse(url1.get('url', '')), urlparse(url2.get('url', ''))):
+ unique_url = False
+ break
+ if unique_url:
+ urls1.append(url2)
+
+ infobox1['urls'] = urls1
+
+ if 'img_src' in infobox2:
+ img1 = infobox1.get('img_src', None)
+ img2 = infobox2.get('img_src')
+ if img1 is None:
+ infobox1['img_src'] = img2
+ elif weight2 > weight1:
+ infobox1['img_src'] = img2
+
+ if 'attributes' in infobox2:
+ attributes1 = infobox1.get('attributes', None)
+ if attributes1 is None:
+ attributes1 = []
+ infobox1['attributes'] = attributes1
+
+ attributeSet = set()
+ for attribute in infobox1.get('attributes', []):
+ if attribute.get('label', None) not in attributeSet:
+ attributeSet.add(attribute.get('label', None))
+
+ for attribute in infobox2.get('attributes', []):
+ if attribute.get('label', None) not in attributeSet:
+ attributes1.append(attribute)
+
+ if 'content' in infobox2:
+ content1 = infobox1.get('content', None)
+ content2 = infobox2.get('content', '')
+ if content1 is not None:
+ if result_content_len(content2) > result_content_len(content1):
+ infobox1['content'] = content2
+ else:
+ infobox1['content'] = content2
+
+
+def result_score(result):
+ weight = 1.0
+
+ for result_engine in result['engines']:
+ if hasattr(engines[result_engine], 'weight'):
+ weight *= float(engines[result_engine].weight)
+
+ occurences = len(result['positions'])
+
+ return sum((occurences * weight) / position for position in result['positions'])
+
+
+class ResultContainer(object):
+ """docstring for ResultContainer"""
+
+ def __init__(self):
+ super(ResultContainer, self).__init__()
+ self.results = defaultdict(list)
+ self._merged_results = []
+ self.infoboxes = []
+ self.suggestions = set()
+ self.answers = set()
+ self.corrections = set()
+ self._number_of_results = []
+ self._ordered = False
+ self.paging = False
+ self.unresponsive_engines = set()
+
+ def extend(self, engine_name, results):
+ for result in list(results):
+ result['engine'] = engine_name
+ if 'suggestion' in result:
+ self.suggestions.add(result['suggestion'])
+ results.remove(result)
+ elif 'answer' in result:
+ self.answers.add(result['answer'])
+ results.remove(result)
+ elif 'correction' in result:
+ self.corrections.add(result['correction'])
+ results.remove(result)
+ elif 'infobox' in result:
+ self._merge_infobox(result)
+ results.remove(result)
+ elif 'number_of_results' in result:
+ self._number_of_results.append(result['number_of_results'])
+ results.remove(result)
+
+ if engine_name in engines:
+ with RLock():
+ engines[engine_name].stats['search_count'] += 1
+ engines[engine_name].stats['result_count'] += len(results)
+
+ if not results:
+ return
+
+ self.results[engine_name].extend(results)
+
+ if not self.paging and engine_name in engines and engines[engine_name].paging:
+ self.paging = True
+
+ for i, result in enumerate(results):
+ if 'url' in result and not isinstance(result['url'], basestring):
+ continue
+ try:
+ result['url'] = result['url'].decode('utf-8')
+ except:
+ pass
+ if 'title' in result and not isinstance(result['title'], basestring):
+ continue
+ if 'content' in result and not isinstance(result['content'], basestring):
+ continue
+ position = i + 1
+ self._merge_result(result, position)
+
+ def _merge_infobox(self, infobox):
+ add_infobox = True
+ infobox_id = infobox.get('id', None)
+ if infobox_id is not None:
+ for existingIndex in self.infoboxes:
+ if compare_urls(urlparse(existingIndex.get('id', '')), urlparse(infobox_id)):
+ merge_two_infoboxes(existingIndex, infobox)
+ add_infobox = False
+
+ if add_infobox:
+ self.infoboxes.append(infobox)
+
+ def _merge_result(self, result, position):
+ result['parsed_url'] = urlparse(result['url'])
+
+ # if the result has no scheme, use http as default
+ if not result['parsed_url'].scheme:
+ result['parsed_url'] = result['parsed_url']._replace(scheme="http")
+ result['url'] = result['parsed_url'].geturl()
+
+ result['engines'] = set([result['engine']])
+
+ # strip multiple spaces and cariage returns from content
+ if result.get('content'):
+ result['content'] = WHITESPACE_REGEX.sub(' ', result['content'])
+
+ # check for duplicates
+ duplicated = False
+ for merged_result in self._merged_results:
+ if compare_urls(result['parsed_url'], merged_result['parsed_url'])\
+ and result.get('template') == merged_result.get('template'):
+ duplicated = merged_result
+ break
+
+ # merge duplicates together
+ if duplicated:
+ # using content with more text
+ if result_content_len(result.get('content', '')) >\
+ result_content_len(duplicated.get('content', '')):
+ duplicated['content'] = result['content']
+
+ # merge all result's parameters not found in duplicate
+ for key in result.keys():
+ if not duplicated.get(key):
+ duplicated[key] = result.get(key)
+
+ # add the new position
+ duplicated['positions'].append(position)
+
+ # add engine to list of result-engines
+ duplicated['engines'].add(result['engine'])
+
+ # using https if possible
+ if duplicated['parsed_url'].scheme != 'https' and result['parsed_url'].scheme == 'https':
+ duplicated['url'] = result['parsed_url'].geturl()
+ duplicated['parsed_url'] = result['parsed_url']
+
+ # if there is no duplicate found, append result
+ else:
+ result['positions'] = [position]
+ with RLock():
+ self._merged_results.append(result)
+
+ def order_results(self):
+ for result in self._merged_results:
+ score = result_score(result)
+ result['score'] = score
+ with RLock():
+ for result_engine in result['engines']:
+ engines[result_engine].stats['score_count'] += score
+
+ results = sorted(self._merged_results, key=itemgetter('score'), reverse=True)
+
+ # pass 2 : group results by category and template
+ gresults = []
+ categoryPositions = {}
+
+ for i, res in enumerate(results):
+ # FIXME : handle more than one category per engine
+ res['category'] = engines[res['engine']].categories[0]
+
+ # FIXME : handle more than one category per engine
+ category = engines[res['engine']].categories[0]\
+ + ':' + res.get('template', '')\
+ + ':' + ('img_src' if 'img_src' in res or 'thumbnail' in res else '')
+
+ current = None if category not in categoryPositions\
+ else categoryPositions[category]
+
+ # group with previous results using the same category
+ # if the group can accept more result and is not too far
+ # from the current position
+ if current is not None and (current['count'] > 0)\
+ and (len(gresults) - current['index'] < 20):
+ # group with the previous results using
+ # the same category with this one
+ index = current['index']
+ gresults.insert(index, res)
+
+ # update every index after the current one
+ # (including the current one)
+ for k in categoryPositions:
+ v = categoryPositions[k]['index']
+ if v >= index:
+ categoryPositions[k]['index'] = v + 1
+
+ # update this category
+ current['count'] -= 1
+
+ else:
+ # same category
+ gresults.append(res)
+
+ # update categoryIndex
+ categoryPositions[category] = {'index': len(gresults), 'count': 8}
+
+ # update _merged_results
+ self._ordered = True
+ self._merged_results = gresults
+
+ def get_ordered_results(self):
+ if not self._ordered:
+ self.order_results()
+ return self._merged_results
+
+ def results_length(self):
+ return len(self._merged_results)
+
+ def results_number(self):
+ resultnum_sum = sum(self._number_of_results)
+ if not resultnum_sum or not self._number_of_results:
+ return 0
+ return resultnum_sum / len(self._number_of_results)
+
+ def add_unresponsive_engine(self, engine_error):
+ self.unresponsive_engines.add(engine_error)
diff --git a/searx/search.py b/searx/search.py
new file mode 100644
index 0000000..950a49f
--- /dev/null
+++ b/searx/search.py
@@ -0,0 +1,440 @@
+'''
+searx is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+searx is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with searx. If not, see < http://www.gnu.org/licenses/ >.
+
+(C) 2013- by Adam Tauber, <asciimoo@gmail.com>
+'''
+
+import gc
+import sys
+import threading
+from time import time
+from uuid import uuid4
+from flask_babel import gettext
+import requests.exceptions
+import searx.poolrequests as requests_lib
+from searx.engines import (
+ categories, engines, settings
+)
+from searx.answerers import ask
+from searx.utils import gen_useragent
+from searx.query import RawTextQuery, SearchQuery, VALID_LANGUAGE_CODE
+from searx.results import ResultContainer
+from searx import logger
+from searx.plugins import plugins
+from searx.exceptions import SearxParameterException
+
+try:
+ from thread import start_new_thread
+except:
+ from _thread import start_new_thread
+
+if sys.version_info[0] == 3:
+ unicode = str
+
+logger = logger.getChild('search')
+
+number_of_searches = 0
+
+
+def send_http_request(engine, request_params):
+ # create dictionary which contain all
+ # informations about the request
+ request_args = dict(
+ headers=request_params['headers'],
+ cookies=request_params['cookies'],
+ verify=request_params['verify']
+ )
+
+ # specific type of request (GET or POST)
+ if request_params['method'] == 'GET':
+ req = requests_lib.get
+ else:
+ req = requests_lib.post
+ request_args['data'] = request_params['data']
+
+ # send the request
+ return req(request_params['url'], **request_args)
+
+
+def search_one_request(engine, query, request_params):
+ # update request parameters dependent on
+ # search-engine (contained in engines folder)
+ engine.request(query, request_params)
+
+ # ignoring empty urls
+ if request_params['url'] is None:
+ return []
+
+ if not request_params['url']:
+ return []
+
+ # send request
+ response = send_http_request(engine, request_params)
+
+ # parse the response
+ response.search_params = request_params
+ return engine.response(response)
+
+
+def search_one_request_safe(engine_name, query, request_params, result_container, start_time, timeout_limit):
+ # set timeout for all HTTP requests
+ requests_lib.set_timeout_for_thread(timeout_limit, start_time=start_time)
+ # reset the HTTP total time
+ requests_lib.reset_time_for_thread()
+
+ #
+ engine = engines[engine_name]
+
+ # suppose everything will be alright
+ requests_exception = False
+
+ try:
+ # send requests and parse the results
+ search_results = search_one_request(engine, query, request_params)
+
+ # add results
+ result_container.extend(engine_name, search_results)
+
+ # update engine time when there is no exception
+ with threading.RLock():
+ engine.stats['engine_time'] += time() - start_time
+ engine.stats['engine_time_count'] += 1
+ # update stats with the total HTTP time
+ engine.stats['page_load_time'] += requests_lib.get_time_for_thread()
+ engine.stats['page_load_count'] += 1
+
+ except Exception as e:
+ search_duration = time() - start_time
+
+ with threading.RLock():
+ engine.stats['errors'] += 1
+
+ if (issubclass(e.__class__, requests.exceptions.Timeout)):
+ result_container.add_unresponsive_engine((engine_name, gettext('timeout')))
+ # requests timeout (connect or read)
+ logger.error("engine {0} : HTTP requests timeout"
+ "(search duration : {1} s, timeout: {2} s) : {3}"
+ .format(engine_name, search_duration, timeout_limit, e.__class__.__name__))
+ requests_exception = True
+ elif (issubclass(e.__class__, requests.exceptions.RequestException)):
+ result_container.add_unresponsive_engine((engine_name, gettext('request exception')))
+ # other requests exception
+ logger.exception("engine {0} : requests exception"
+ "(search duration : {1} s, timeout: {2} s) : {3}"
+ .format(engine_name, search_duration, timeout_limit, e))
+ requests_exception = True
+ else:
+ result_container.add_unresponsive_engine((
+ engine_name,
+ u'{0}: {1}'.format(gettext('unexpected crash'), e),
+ ))
+ # others errors
+ logger.exception('engine {0} : exception : {1}'.format(engine_name, e))
+
+ # suspend or not the engine if there are HTTP errors
+ with threading.RLock():
+ if requests_exception:
+ # update continuous_errors / suspend_end_time
+ engine.continuous_errors += 1
+ engine.suspend_end_time = time() + min(settings['search']['max_ban_time_on_fail'],
+ engine.continuous_errors * settings['search']['ban_time_on_fail'])
+ else:
+ # no HTTP error (perhaps an engine error)
+ # anyway, reset the suspend variables
+ engine.continuous_errors = 0
+ engine.suspend_end_time = 0
+
+
+def search_multiple_requests(requests, result_container, start_time, timeout_limit):
+ search_id = uuid4().__str__()
+
+ for engine_name, query, request_params in requests:
+ th = threading.Thread(
+ target=search_one_request_safe,
+ args=(engine_name, query, request_params, result_container, start_time, timeout_limit),
+ name=search_id,
+ )
+ th._engine_name = engine_name
+ th.start()
+
+ for th in threading.enumerate():
+ if th.name == search_id:
+ remaining_time = max(0.0, timeout_limit - (time() - start_time))
+ th.join(remaining_time)
+ if th.isAlive():
+ result_container.add_unresponsive_engine((th._engine_name, gettext('timeout')))
+ logger.warning('engine timeout: {0}'.format(th._engine_name))
+
+
+# get default reqest parameter
+def default_request_params():
+ return {
+ 'method': 'GET',
+ 'headers': {},
+ 'data': {},
+ 'url': '',
+ 'cookies': {},
+ 'verify': True
+ }
+
+
+def get_search_query_from_webapp(preferences, form):
+ # no text for the query ?
+ if not form.get('q'):
+ raise SearxParameterException('q', '')
+
+ # set blocked engines
+ disabled_engines = preferences.engines.get_disabled()
+
+ # parse query, if tags are set, which change
+ # the serch engine or search-language
+ raw_text_query = RawTextQuery(form['q'], disabled_engines)
+ raw_text_query.parse_query()
+
+ # set query
+ query = raw_text_query.getSearchQuery()
+
+ # get and check page number
+ pageno_param = form.get('pageno', '1')
+ if not pageno_param.isdigit() or int(pageno_param) < 1:
+ raise SearxParameterException('pageno', pageno_param)
+ query_pageno = int(pageno_param)
+
+ # get language
+ # set specific language if set on request, query or preferences
+ # TODO support search with multible languages
+ if len(raw_text_query.languages):
+ query_lang = raw_text_query.languages[-1]
+ elif 'language' in form:
+ query_lang = form.get('language')
+ else:
+ query_lang = preferences.get_value('language')
+
+ # provides backwards compatibility for requests using old language default
+ if query_lang == 'all':
+ query_lang = settings['search']['language']
+
+ # check language
+ if not VALID_LANGUAGE_CODE.match(query_lang):
+ raise SearxParameterException('language', query_lang)
+
+ # get safesearch
+ if 'safesearch' in form:
+ query_safesearch = form.get('safesearch')
+ # first check safesearch
+ if not query_safesearch.isdigit():
+ raise SearxParameterException('safesearch', query_safesearch)
+ query_safesearch = int(query_safesearch)
+ else:
+ query_safesearch = preferences.get_value('safesearch')
+
+ # safesearch : second check
+ if query_safesearch < 0 or query_safesearch > 2:
+ raise SearxParameterException('safesearch', query_safesearch)
+
+ # get time_range
+ query_time_range = form.get('time_range')
+
+ # check time_range
+ if query_time_range not in ('None', None, '', 'day', 'week', 'month', 'year'):
+ raise SearxParameterException('time_range', query_time_range)
+
+ # query_engines
+ query_engines = raw_text_query.engines
+
+ # query_categories
+ query_categories = []
+
+ # if engines are calculated from query,
+ # set categories by using that informations
+ if query_engines and raw_text_query.specific:
+ additional_categories = set()
+ for engine in query_engines:
+ if 'from_bang' in engine and engine['from_bang']:
+ additional_categories.add('none')
+ else:
+ additional_categories.add(engine['category'])
+ query_categories = list(additional_categories)
+
+ # otherwise, using defined categories to
+ # calculate which engines should be used
+ else:
+ # set categories/engines
+ load_default_categories = True
+ for pd_name, pd in form.items():
+ if pd_name == 'categories':
+ query_categories.extend(categ for categ in map(unicode.strip, pd.split(',')) if categ in categories)
+ elif pd_name == 'engines':
+ pd_engines = [{'category': engines[engine].categories[0],
+ 'name': engine}
+ for engine in map(unicode.strip, pd.split(',')) if engine in engines]
+ if pd_engines:
+ query_engines.extend(pd_engines)
+ load_default_categories = False
+ elif pd_name.startswith('category_'):
+ category = pd_name[9:]
+
+ # if category is not found in list, skip
+ if category not in categories:
+ continue
+
+ if pd != 'off':
+ # add category to list
+ query_categories.append(category)
+ elif category in query_categories:
+ # remove category from list if property is set to 'off'
+ query_categories.remove(category)
+
+ if not load_default_categories:
+ if not query_categories:
+ query_categories = list(set(engine['category']
+ for engine in query_engines))
+ else:
+ # if no category is specified for this search,
+ # using user-defined default-configuration which
+ # (is stored in cookie)
+ if not query_categories:
+ cookie_categories = preferences.get_value('categories')
+ for ccateg in cookie_categories:
+ if ccateg in categories:
+ query_categories.append(ccateg)
+
+ # if still no category is specified, using general
+ # as default-category
+ if not query_categories:
+ query_categories = ['general']
+
+ # using all engines for that search, which are
+ # declared under the specific categories
+ for categ in query_categories:
+ query_engines.extend({'category': categ,
+ 'name': engine.name}
+ for engine in categories[categ]
+ if (engine.name, categ) not in disabled_engines)
+
+ return SearchQuery(query, query_engines, query_categories,
+ query_lang, query_safesearch, query_pageno, query_time_range)
+
+
+class Search(object):
+
+ """Search information container"""
+
+ def __init__(self, search_query):
+ # init vars
+ super(Search, self).__init__()
+ self.search_query = search_query
+ self.result_container = ResultContainer()
+
+ # do search-request
+ def search(self):
+ global number_of_searches
+
+ # start time
+ start_time = time()
+
+ # answeres ?
+ answerers_results = ask(self.search_query)
+
+ if answerers_results:
+ for results in answerers_results:
+ self.result_container.extend('answer', results)
+ return self.result_container
+
+ # init vars
+ requests = []
+
+ # increase number of searches
+ number_of_searches += 1
+
+ # set default useragent
+ # user_agent = request.headers.get('User-Agent', '')
+ user_agent = gen_useragent()
+
+ search_query = self.search_query
+
+ # max of all selected engine timeout
+ timeout_limit = 0
+
+ # start search-reqest for all selected engines
+ for selected_engine in search_query.engines:
+ if selected_engine['name'] not in engines:
+ continue
+
+ engine = engines[selected_engine['name']]
+
+ # skip suspended engines
+ if engine.suspend_end_time >= time():
+ logger.debug('Engine currently suspended: %s', selected_engine['name'])
+ continue
+
+ # if paging is not supported, skip
+ if search_query.pageno > 1 and not engine.paging:
+ continue
+
+ # if time_range is not supported, skip
+ if search_query.time_range and not engine.time_range_support:
+ continue
+
+ # set default request parameters
+ request_params = default_request_params()
+ request_params['headers']['User-Agent'] = user_agent
+ request_params['category'] = selected_engine['category']
+ request_params['pageno'] = search_query.pageno
+
+ if hasattr(engine, 'language') and engine.language:
+ request_params['language'] = engine.language
+ else:
+ request_params['language'] = search_query.lang
+
+ # 0 = None, 1 = Moderate, 2 = Strict
+ request_params['safesearch'] = search_query.safesearch
+ request_params['time_range'] = search_query.time_range
+
+ # append request to list
+ requests.append((selected_engine['name'], search_query.query, request_params))
+
+ # update timeout_limit
+ timeout_limit = max(timeout_limit, engine.timeout)
+
+ if requests:
+ # send all search-request
+ search_multiple_requests(requests, self.result_container, start_time, timeout_limit)
+ start_new_thread(gc.collect, tuple())
+
+ # return results, suggestions, answers and infoboxes
+ return self.result_container
+
+
+class SearchWithPlugins(Search):
+
+ """Similar to the Search class but call the plugins."""
+
+ def __init__(self, search_query, ordered_plugin_list, request):
+ super(SearchWithPlugins, self).__init__(search_query)
+ self.ordered_plugin_list = ordered_plugin_list
+ self.request = request
+
+ def search(self):
+ if plugins.call(self.ordered_plugin_list, 'pre_search', self.request, self):
+ super(SearchWithPlugins, self).search()
+
+ plugins.call(self.ordered_plugin_list, 'post_search', self.request, self)
+
+ results = self.result_container.get_ordered_results()
+
+ for result in results:
+ plugins.call(self.ordered_plugin_list, 'on_result', self.request, self, result)
+
+ return self.result_container
diff --git a/searx/settings.yml b/searx/settings.yml
new file mode 100644
index 0000000..00b001b
--- /dev/null
+++ b/searx/settings.yml
@@ -0,0 +1,788 @@
+general:
+ debug : False # Debug mode, only for development
+ instance_name : "searx" # displayed name
+
+search:
+ safe_search : 0 # Filter results. 0: None, 1: Moderate, 2: Strict
+ autocomplete : "" # Existing autocomplete backends: "dbpedia", "duckduckgo", "google", "startpage", "wikipedia" - leave blank to turn it off by default
+ language : "en-US"
+ ban_time_on_fail : 5 # ban time in seconds after engine errors
+ max_ban_time_on_fail : 120 # max ban time in seconds after engine errors
+
+server:
+ port : 8888
+ bind_address : "127.0.0.1" # address to listen on
+ secret_key : "ultrasecretkey" # change this!
+ base_url : False # Set custom base_url. Possible values: False or "https://your.custom.host/location/"
+ image_proxy : False # Proxying image results through searx
+ http_protocol_version : "1.0" # 1.0 and 1.1 are supported
+
+ui:
+ static_path : "" # Custom static path - leave it blank if you didn't change
+ templates_path : "" # Custom templates path - leave it blank if you didn't change
+ default_theme : oscar # ui theme
+ default_locale : "" # Default interface locale - leave blank to detect from browser information or use codes from the 'locales' config section
+ theme_args :
+ oscar_style : logicodev # default style of oscar
+
+# searx supports result proxification using an external service: https://github.com/asciimoo/morty
+# uncomment below section if you have running morty proxy
+#result_proxy:
+# url : http://127.0.0.1:3000/
+# key : your_morty_proxy_key
+
+outgoing: # communication with search engines
+ request_timeout : 2.0 # seconds
+ useragent_suffix : "" # suffix of searx_useragent, could contain informations like an email address to the administrator
+ pool_connections : 100 # Number of different hosts
+ pool_maxsize : 10 # Number of simultaneous requests by host
+# uncomment below section if you want to use a proxy
+# see http://docs.python-requests.org/en/latest/user/advanced/#proxies
+# SOCKS proxies are also supported: see http://docs.python-requests.org/en/master/user/advanced/#socks
+# proxies :
+# http : http://127.0.0.1:8080
+# https: http://127.0.0.1:8080
+# uncomment below section only if you have more than one network interface
+# which can be the source of outgoing search requests
+# source_ips:
+# - 1.1.1.1
+# - 1.1.1.2
+
+engines:
+ - name : arch linux wiki
+ engine : archlinux
+ shortcut : al
+
+ - name : archive is
+ engine : xpath
+ search_url : https://archive.is/{query}
+ url_xpath : (//div[@class="TEXT-BLOCK"]/a)/@href
+ title_xpath : (//div[@class="TEXT-BLOCK"]/a)
+ content_xpath : //div[@class="TEXT-BLOCK"]/ul/li
+ categories : general
+ timeout : 7.0
+ disabled : True
+ shortcut : ai
+
+ - name : arxiv
+ engine : arxiv
+ shortcut : arx
+ categories : science
+ timeout : 4.0
+
+ - name : asksteem
+ engine : asksteem
+ shortcut : as
+
+ - name : base
+ engine : base
+ shortcut : bs
+
+ - name : wikipedia
+ engine : wikipedia
+ shortcut : wp
+ base_url : 'https://{language}.wikipedia.org/'
+
+ - name : bing
+ engine : bing
+ shortcut : bi
+
+ - name : bing images
+ engine : bing_images
+ shortcut : bii
+
+ - name : bing news
+ engine : bing_news
+ shortcut : bin
+
+ - name : bing videos
+ engine : bing_videos
+ shortcut : biv
+
+ - name : bitbucket
+ engine : xpath
+ paging : True
+ search_url : https://bitbucket.org/repo/all/{pageno}?name={query}
+ url_xpath : //article[@class="repo-summary"]//a[@class="repo-link"]/@href
+ title_xpath : //article[@class="repo-summary"]//a[@class="repo-link"]
+ content_xpath : //article[@class="repo-summary"]/p
+ categories : it
+ timeout : 4.0
+ disabled : True
+ shortcut : bb
+
+ - name : ccc-tv
+ engine : xpath
+ paging : False
+ search_url : https://media.ccc.de/search/?q={query}
+ url_xpath : //div[@class="caption"]/h3/a/@href
+ title_xpath : //div[@class="caption"]/h3/a/text()
+ content_xpath : //div[@class="caption"]/h4/@title
+ categories : videos
+ disabled : True
+ shortcut : c3tv
+
+ - name : crossref
+ engine : json_engine
+ paging : True
+ search_url : http://search.crossref.org/dois?q={query}&page={pageno}
+ url_query : doi
+ title_query : title
+ content_query : fullCitation
+ categories : science
+ shortcut : cr
+
+ - name : currency
+ engine : currency_convert
+ categories : general
+ shortcut : cc
+
+ - name : deezer
+ engine : deezer
+ shortcut : dz
+
+ - name : deviantart
+ engine : deviantart
+ shortcut : da
+ timeout: 3.0
+
+ - name : ddg definitions
+ engine : duckduckgo_definitions
+ shortcut : ddd
+ weight : 2
+ disabled : True
+
+ - name : digbt
+ engine : digbt
+ shortcut : dbt
+ timeout : 6.0
+ disabled : True
+
+ - name : digg
+ engine : digg
+ shortcut : dg
+
+ - name : erowid
+ engine : xpath
+ paging : True
+ first_page_num : 0
+ page_size : 30
+ search_url : https://www.erowid.org/search.php?q={query}&s={pageno}
+ url_xpath : //dl[@class="results-list"]/dt[@class="result-title"]/a/@href
+ title_xpath : //dl[@class="results-list"]/dt[@class="result-title"]/a/text()
+ content_xpath : //dl[@class="results-list"]/dd[@class="result-details"]
+ categories : general
+ shortcut : ew
+ disabled : True
+
+ - name : wikidata
+ engine : wikidata
+ shortcut : wd
+ timeout : 3.0
+ weight : 2
+
+ - name : duckduckgo
+ engine : duckduckgo
+ shortcut : ddg
+ disabled : True
+
+ - name : duckduckgo images
+ engine : duckduckgo_images
+ shortcut : ddi
+ timeout: 3.0
+ disabled : True
+
+ - name : etymonline
+ engine : xpath
+ paging : True
+ search_url : http://etymonline.com/?search={query}&p={pageno}
+ url_xpath : //a[contains(@class, "word--")]/@href
+ title_xpath : //p[contains(@class, "word__name--")]/text()
+ content_xpath : //section[contains(@class, "word__defination")]/object
+ first_page_num : 0
+ shortcut : et
+ disabled : True
+
+ - name : faroo
+ engine : faroo
+ shortcut : fa
+ disabled : True
+
+ - name : 1x
+ engine : www1x
+ shortcut : 1x
+ disabled : True
+
+ - name : fdroid
+ engine : fdroid
+ shortcut : fd
+ disabled : True
+
+ - name : flickr
+ categories : images
+ shortcut : fl
+# You can use the engine using the official stable API, but you need an API key
+# See : https://www.flickr.com/services/apps/create/
+# engine : flickr
+# api_key: 'apikey' # required!
+# Or you can use the html non-stable engine, activated by default
+ engine : flickr_noapi
+
+ - name : free software directory
+ engine : mediawiki
+ shortcut : fsd
+ categories : it
+ base_url : https://directory.fsf.org/
+ number_of_results : 5
+# what part of a page matches the query string: title, text, nearmatch
+# title - query matches title, text - query matches the text of page, nearmatch - nearmatch in title
+ search_type : title
+ timeout : 5.0
+ disabled : True
+
+ - name : frinkiac
+ engine : frinkiac
+ shortcut : frk
+ disabled : True
+
+ - name : genius
+ engine : genius
+ shortcut : gen
+
+ - name : gigablast
+ engine : gigablast
+ shortcut : gb
+ timeout : 3.0
+ disabled: True
+
+ - name : gentoo
+ engine : gentoo
+ shortcut : ge
+
+ - name : gitlab
+ engine : json_engine
+ paging : True
+ search_url : https://gitlab.com/api/v4/projects?search={query}&page={pageno}
+ url_query : web_url
+ title_query : name_with_namespace
+ content_query : description
+ page_size : 20
+ categories : it
+ shortcut : gl
+ timeout : 10.0
+ disabled : True
+
+ - name : github
+ engine : github
+ shortcut : gh
+
+ - name : google
+ engine : google
+ shortcut : go
+
+ - name : google images
+ engine : google_images
+ shortcut : goi
+
+ - name : google news
+ engine : google_news
+ shortcut : gon
+
+ - name : google videos
+ engine : google_videos
+ shortcut : gov
+
+ - name : google scholar
+ engine : xpath
+ paging : True
+ search_url : https://scholar.google.com/scholar?start={pageno}&q={query}&hl=en&as_sdt=0,5&as_vis=1
+ results_xpath : //div[contains(@class, "gs_r")]/div[@class="gs_ri"]
+ url_xpath : .//h3/a/@href
+ title_xpath : .//h3/a
+ content_xpath : .//div[@class="gs_rs"]
+ suggestion_xpath : //div[@id="gs_qsuggest"]/ul/li
+ page_size : 10
+ first_page_num : 0
+ categories : science
+ shortcut : gos
+
+ - name : google play apps
+ engine : xpath
+ search_url : https://play.google.com/store/search?q={query}&c=apps
+ url_xpath : //a[@class="title"]/@href
+ title_xpath : //a[@class="title"]
+ content_xpath : //a[@class="subtitle"]
+ categories : files
+ shortcut : gpa
+ disabled : True
+
+ - name : google play movies
+ engine : xpath
+ search_url : https://play.google.com/store/search?q={query}&c=movies
+ url_xpath : //a[@class="title"]/@href
+ title_xpath : //a[@class="title"]/@title
+ content_xpath : //a[contains(@class, "subtitle")]
+ categories : videos
+ shortcut : gpm
+ disabled : True
+
+ - name : google play music
+ engine : xpath
+ search_url : https://play.google.com/store/search?q={query}&c=music
+ url_xpath : //a[@class="title"]/@href
+ title_xpath : //a[@class="title"]
+ content_xpath : //a[@class="subtitle"]
+ categories : music
+ shortcut : gps
+ disabled : True
+
+ - name : geektimes
+ engine : xpath
+ paging : True
+ search_url : https://geektimes.ru/search/page{pageno}/?q={query}
+ url_xpath : //article[contains(@class, "post")]//a[@class="post__title_link"]/@href
+ title_xpath : //article[contains(@class, "post")]//a[@class="post__title_link"]
+ content_xpath : //article[contains(@class, "post")]//div[contains(@class, "post__text")]
+ categories : it
+ timeout : 4.0
+ disabled : True
+ shortcut : gt
+
+ - name : habrahabr
+ engine : xpath
+ paging : True
+ search_url : https://habrahabr.ru/search/page{pageno}/?q={query}
+ url_xpath : //article[contains(@class, "post")]//a[@class="post__title_link"]/@href
+ title_xpath : //article[contains(@class, "post")]//a[@class="post__title_link"]
+ content_xpath : //article[contains(@class, "post")]//div[contains(@class, "post__text")]
+ categories : it
+ timeout : 4.0
+ disabled : True
+ shortcut : habr
+
+ - name : hoogle
+ engine : json_engine
+ paging : True
+ search_url : https://www.haskell.org/hoogle/?mode=json&hoogle={query}&start={pageno}
+ results_query : results
+ url_query : location
+ title_query : self
+ content_query : docs
+ page_size : 20
+ categories : it
+ shortcut : ho
+
+ - name : ina
+ engine : ina
+ shortcut : in
+ timeout : 6.0
+ disabled : True
+
+ - name: kickass
+ engine : kickass
+ shortcut : kc
+ timeout : 4.0
+ disabled : True
+
+ - name : library genesis
+ engine : xpath
+ search_url : http://libgen.io/search.php?req={query}
+ url_xpath : //a[contains(@href,"bookfi.net")]/@href
+ title_xpath : //a[contains(@href,"book/")]/text()[1]
+ content_xpath : //td/a[1][contains(@href,"=author")]/text()
+ categories : general
+ timeout : 7.0
+ disabled : True
+ shortcut : lg
+
+ - name : lobste.rs
+ engine : xpath
+ search_url : https://lobste.rs/search?utf8=%E2%9C%93&q={query}&what=stories&order=relevance
+ results_xpath : //li[contains(@class, "story")]
+ url_xpath : .//span[@class="link"]/a/@href
+ title_xpath : .//span[@class="link"]/a
+ content_xpath : .//a[@class="domain"]
+ categories : it
+ shortcut : lo
+
+ - name : microsoft academic
+ engine : microsoft_academic
+ categories : science
+ shortcut : ma
+
+ - name : mixcloud
+ engine : mixcloud
+ shortcut : mc
+
+ - name : nyaa
+ engine : nyaa
+ shortcut : nt
+ disabled : True
+
+ - name : acgsou
+ engine : acgsou
+ shortcut : acg
+ disabled : True
+ timeout: 5.0
+
+ - name : openairedatasets
+ engine : json_engine
+ paging : True
+ search_url : http://api.openaire.eu/search/datasets?format=json&page={pageno}&size=10&title={query}
+ results_query : response/results/result
+ url_query : metadata/oaf:entity/oaf:result/children/instance/webresource/url/$
+ title_query : metadata/oaf:entity/oaf:result/title/$
+ content_query : metadata/oaf:entity/oaf:result/description/$
+ categories : science
+ shortcut : oad
+ timeout: 5.0
+
+ - name : openairepublications
+ engine : json_engine
+ paging : True
+ search_url : http://api.openaire.eu/search/publications?format=json&page={pageno}&size=10&title={query}
+ results_query : response/results/result
+ url_query : metadata/oaf:entity/oaf:result/children/instance/webresource/url/$
+ title_query : metadata/oaf:entity/oaf:result/title/$
+ content_query : metadata/oaf:entity/oaf:result/description/$
+ categories : science
+ shortcut : oap
+ timeout: 5.0
+
+ - name : openstreetmap
+ engine : openstreetmap
+ shortcut : osm
+
+ - name : openrepos
+ engine : xpath
+ paging : True
+ search_url : https://openrepos.net/search/node/{query}?page={pageno}
+ url_xpath : //li[@class="search-result"]//h3[@class="title"]/a/@href
+ title_xpath : //li[@class="search-result"]//h3[@class="title"]/a
+ content_xpath : //li[@class="search-result"]//div[@class="search-snippet-info"]//p[@class="search-snippet"]
+ categories : files
+ timeout : 4.0
+ disabled : True
+ shortcut : or
+
+ - name : pdbe
+ engine : pdbe
+ shortcut : pdb
+# Hide obsolete PDB entries.
+# Default is not to hide obsolete structures
+# hide_obsolete : False
+
+ - name : photon
+ engine : photon
+ shortcut : ph
+
+ - name : piratebay
+ engine : piratebay
+ shortcut : tpb
+ url: https://pirateproxy.red/
+ timeout : 3.0
+
+ - name : pubmed
+ engine : pubmed
+ shortcut : pub
+ categories: science
+ timeout : 3.0
+
+ - name : qwant
+ engine : qwant
+ shortcut : qw
+ categories : general
+ disabled : True
+
+ - name : qwant images
+ engine : qwant
+ shortcut : qwi
+ categories : images
+
+ - name : qwant news
+ engine : qwant
+ shortcut : qwn
+ categories : news
+
+ - name : qwant social
+ engine : qwant
+ shortcut : qws
+ categories : social media
+
+ - name : reddit
+ engine : reddit
+ shortcut : re
+ page_size : 25
+ timeout : 10.0
+ disabled : True
+
+ - name : scanr structures
+ shortcut: scs
+ engine : scanr_structures
+ disabled : True
+
+ - name : soundcloud
+ engine : soundcloud
+ shortcut : sc
+
+ - name : stackoverflow
+ engine : stackoverflow
+ shortcut : st
+
+ - name : searchcode doc
+ engine : searchcode_doc
+ shortcut : scd
+
+ - name : searchcode code
+ engine : searchcode_code
+ shortcut : scc
+ disabled : True
+
+ - name : framalibre
+ engine : framalibre
+ shortcut : frl
+ disabled : True
+
+# - name : searx
+# engine : searx_engine
+# shortcut : se
+# instance_urls :
+# - http://127.0.0.1:8888/
+# - ...
+# disabled : True
+
+ - name : semantic scholar
+ engine : xpath
+ paging : True
+ search_url : https://www.semanticscholar.org/search?q={query}&sort=relevance&page={pageno}&ae=false
+ results_xpath : //article
+ url_xpath : .//div[@class="search-result-title"]/a/@href
+ title_xpath : .//div[@class="search-result-title"]/a
+ content_xpath : .//div[@class="search-result-abstract"]
+ shortcut : se
+ categories : science
+
+ - name : spotify
+ engine : spotify
+ shortcut : stf
+
+ - name : subtitleseeker
+ engine : subtitleseeker
+ shortcut : ss
+# The language is an option. You can put any language written in english
+# Examples : English, French, German, Hungarian, Chinese...
+# language : English
+
+ - name : startpage
+ engine : startpage
+ shortcut : sp
+ timeout : 6.0
+ disabled : True
+
+ - name : swisscows
+ engine : swisscows
+ shortcut : sw
+ disabled : True
+
+ - name : tokyotoshokan
+ engine : tokyotoshokan
+ shortcut : tt
+ timeout : 6.0
+ disabled : True
+
+ - name : torrentz
+ engine : torrentz
+ shortcut : tor
+ url: https://torrentz2.eu/
+ timeout : 3.0
+
+ - name : twitter
+ engine : twitter
+ shortcut : tw
+
+# maybe in a fun category
+# - name : uncyclopedia
+# engine : mediawiki
+# shortcut : unc
+# base_url : https://uncyclopedia.wikia.com/
+# number_of_results : 5
+
+# tmp suspended - too slow, too many errors
+# - name : urbandictionary
+# engine : xpath
+# search_url : http://www.urbandictionary.com/define.php?term={query}
+# url_xpath : //*[@class="word"]/@href
+# title_xpath : //*[@class="def-header"]
+# content_xpath : //*[@class="meaning"]
+# shortcut : ud
+
+ - name : yahoo
+ engine : yahoo
+ shortcut : yh
+ disabled : True
+
+ - name : yandex
+ engine : yandex
+ shortcut : yn
+ disabled : True
+
+ - name : yahoo news
+ engine : yahoo_news
+ shortcut : yhn
+
+ - name : youtube
+ shortcut : yt
+ # You can use the engine using the official stable API, but you need an API key
+ # See : https://console.developers.google.com/project
+ # engine : youtube_api
+ # api_key: 'apikey' # required!
+ # Or you can use the html non-stable engine, activated by default
+ engine : youtube_noapi
+
+ - name : dailymotion
+ engine : dailymotion
+ shortcut : dm
+
+ - name : vimeo
+ engine : vimeo
+ shortcut : vm
+
+ - name : wolframalpha
+ shortcut : wa
+ # You can use the engine using the official stable API, but you need an API key
+ # See : http://products.wolframalpha.com/api/
+ # engine : wolframalpha_api
+ # api_key: '' # required!
+ engine : wolframalpha_noapi
+ timeout: 6.0
+ categories : science
+
+ - name : seedpeer
+ engine : seedpeer
+ shortcut: speu
+ categories: files, music, videos
+ disabled: True
+
+ - name : dictzone
+ engine : dictzone
+ shortcut : dc
+
+ - name : mymemory translated
+ engine : translated
+ shortcut : tl
+ timeout : 5.0
+ disabled : True
+ # You can use without an API key, but you are limited to 1000 words/day
+ # See : http://mymemory.translated.net/doc/usagelimits.php
+ # api_key : ''
+
+ - name : voat
+ engine: xpath
+ shortcut: vo
+ categories: social media
+ search_url : https://searchvoat.co/?t={query}
+ url_xpath : //div[@class="entry"]/p/a[@class="title"]/@href
+ title_xpath : //div[@class="entry"]/p/a[@class="title"]
+ content_xpath : //div[@class="entry"]/p/span[@class="domain"]
+ timeout : 10.0
+ disabled : True
+
+ - name : 1337x
+ engine : 1337x
+ shortcut : 1337x
+ disabled : True
+
+ - name : Duden
+ engine : duden
+ shortcut : du
+ disabled : True
+
+ - name : seznam
+ shortcut: szn
+ engine: xpath
+ paging : True
+ search_url : https://search.seznam.cz/?q={query}&count=10&from={pageno}
+ results_xpath: //div[@class="Page-content"]//div[@class="Result "]
+ url_xpath : ./h3/a/@href
+ title_xpath : ./h3
+ content_xpath : .//p[@class="Result-description"]
+ first_page_num : 0
+ page_size : 10
+ disabled : True
+
+ - name : mojeek
+ shortcut: mjk
+ engine: xpath
+ paging : True
+ search_url : https://www.mojeek.com/search?q={query}&s={pageno}
+ results_xpath: /html/body//div[@class="results"]/ul[@class="results-standard"]/li
+ url_xpath : ./h2/a/@href
+ title_xpath : ./h2
+ content_xpath : ./p[@class="s"]
+ suggestion_xpath : /html/body//div[@class="top-info"]/p[@class="top-info spell"]/a
+ first_page_num : 1
+ page_size : 10
+ disabled : True
+
+# - name : yacy
+# engine : yacy
+# shortcut : ya
+# base_url : 'http://localhost:8090'
+# number_of_results : 5
+# timeout : 3.0
+
+# Doku engine lets you access to any Doku wiki instance:
+# A public one or a privete/corporate one.
+# - name : ubuntuwiki
+# engine : doku
+# shortcut : uw
+# base_url : 'http://doc.ubuntu-fr.org'
+
+locales:
+ en : English
+ ar : العَرَبِيَّة (Arabic)
+ bg : Български (Bulgarian)
+ ca : Català (Catalan)
+ cs : Čeština (Czech)
+ cy : Cymraeg (Welsh)
+ da : Dansk (Danish)
+ de : Deutsch (German)
+ el_GR : Ελληνικά (Greek_Greece)
+ eo : Esperanto (Esperanto)
+ es : Español (Spanish)
+ eu : Euskara (Basque)
+ fa_IR : (fārsī) فارسى (Persian)
+ fi : Suomi (Finnish)
+ fil : Wikang Filipino (Filipino)
+ fr : Français (French)
+ gl : Galego (Galician)
+ he : עברית (Hebrew)
+ hr : Hrvatski (Croatian)
+ hu : Magyar (Hungarian)
+ it : Italiano (Italian)
+ ja : 日本語 (Japanese)
+ nl : Nederlands (Dutch)
+ nl_BE : Vlaams (Dutch_Belgium)
+ pl : Polski (Polish)
+ pt : Português (Portuguese)
+ pt_BR : Português (Portuguese_Brazil)
+ ro : Română (Romanian)
+ ru : Русский (Russian)
+ sk : Slovenčina (Slovak)
+ sl : Slovenski (Slovene)
+ sr : српски (Serbian)
+ sv : Svenska (Swedish)
+ te : తెలుగు (telugu)
+ tr : Türkçe (Turkish)
+ uk : українська мова (Ukrainian)
+ vi : tiếng việt (㗂越)
+ zh : 中文 (Chinese)
+ zh_TW : 國語 (Taiwanese Mandarin)
+
+doi_resolvers :
+ oadoi.org : 'https://oadoi.org/'
+ doi.org : 'https://doi.org/'
+ doai.io : 'http://doai.io/'
+ sci-hub.tw : 'http://sci-hub.tw/'
+
+default_doi_resolver : 'oadoi.org'
diff --git a/searx/settings_robot.yml b/searx/settings_robot.yml
new file mode 100644
index 0000000..e5f163a
--- /dev/null
+++ b/searx/settings_robot.yml
@@ -0,0 +1,41 @@
+general:
+ debug : False
+ instance_name : "searx_test"
+
+search:
+ safe_search : 0
+ autocomplete : ""
+ language: "en-US"
+
+server:
+ port : 11111
+ bind_address : 127.0.0.1
+ secret_key : "ultrasecretkey" # change this!
+ base_url : False
+ image_proxy : False
+ http_protocol_version : "1.0"
+
+ui:
+ static_path : ""
+ templates_path : ""
+ default_theme : oscar
+ default_locale : ""
+
+outgoing:
+ request_timeout : 1.0 # seconds
+ useragent_suffix : ""
+
+engines:
+ - name : general dummy
+ engine : dummy
+ categories : general
+ shortcut : gd
+
+ - name : dummy dummy
+ engine : dummy
+ categories : dummy
+ shortcut : dd
+
+locales:
+ en : English
+ hu : Magyar
diff --git a/searx/static/plugins/css/infinite_scroll.css b/searx/static/plugins/css/infinite_scroll.css
new file mode 100644
index 0000000..07b9f6d
--- /dev/null
+++ b/searx/static/plugins/css/infinite_scroll.css
@@ -0,0 +1,19 @@
+@keyframes rotate-forever {
+ 0% { transform: rotate(0deg) }
+ 100% { transform: rotate(360deg) }
+}
+.loading-spinner {
+ animation-duration: 0.75s;
+ animation-iteration-count: infinite;
+ animation-name: rotate-forever;
+ animation-timing-function: linear;
+ height: 30px;
+ width: 30px;
+ border: 8px solid #666;
+ border-right-color: transparent;
+ border-radius: 50% !important;
+ margin: 0 auto;
+}
+#pagination button {
+ visibility: hidden;
+}
diff --git a/searx/static/plugins/css/vim_hotkeys.css b/searx/static/plugins/css/vim_hotkeys.css
new file mode 100644
index 0000000..2ccfdc1
--- /dev/null
+++ b/searx/static/plugins/css/vim_hotkeys.css
@@ -0,0 +1,26 @@
+.vim-hotkeys-help {
+ position: fixed;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ z-index: 9999999;
+ overflow-y: auto;
+ max-height: 80%;
+ box-shadow: 0 0 1em;
+}
+
+.dflex {
+ display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */
+ display: -moz-box; /* OLD - Firefox 19- (buggy but mostly works) */
+ display: -ms-flexbox; /* TWEENER - IE 10 */
+ display: -webkit-flex; /* NEW - Chrome */
+ display: flex; /* NEW, Spec - Opera 12.1, Firefox 20+ */
+}
+
+.iflex {
+ -webkit-box-flex: 1; /* OLD - iOS 6-, Safari 3.1-6 */
+ -moz-box-flex: 1; /* OLD - Firefox 19- */
+ -webkit-flex: 1; /* Chrome */
+ -ms-flex: 1; /* IE 10 */
+ flex: 1; /* NEW, Spec - Opera 12.1, Firefox 20+ */
+}
diff --git a/searx/static/plugins/js/infinite_scroll.js b/searx/static/plugins/js/infinite_scroll.js
new file mode 100644
index 0000000..9cd582d
--- /dev/null
+++ b/searx/static/plugins/js/infinite_scroll.js
@@ -0,0 +1,18 @@
+$(document).ready(function() {
+ var win = $(window);
+ win.scroll(function() {
+ if ($(document).height() - win.height() == win.scrollTop()) {
+ var formData = $('#pagination form:last').serialize();
+ if (formData) {
+ $('#pagination').html('<div class="loading-spinner"></div>');
+ $.post('./', formData, function (data) {
+ var body = $(data);
+ $('#pagination').remove();
+ $('#main_results').append('<hr/>');
+ $('#main_results').append(body.find('.result'));
+ $('#main_results').append(body.find('#pagination'));
+ });
+ }
+ }
+ });
+});
diff --git a/searx/static/plugins/js/open_results_on_new_tab.js b/searx/static/plugins/js/open_results_on_new_tab.js
new file mode 100644
index 0000000..99ef382
--- /dev/null
+++ b/searx/static/plugins/js/open_results_on_new_tab.js
@@ -0,0 +1,3 @@
+$(document).ready(function() {
+ $('.result_header > a').attr('target', '_blank');
+});
diff --git a/searx/static/plugins/js/search_on_category_select.js b/searx/static/plugins/js/search_on_category_select.js
new file mode 100644
index 0000000..1c42d9e
--- /dev/null
+++ b/searx/static/plugins/js/search_on_category_select.js
@@ -0,0 +1,24 @@
+$(document).ready(function() {
+ if($('#q').length) {
+ $('#categories label').click(function(e) {
+ $('#categories input[type="checkbox"]').each(function(i, checkbox) {
+ $(checkbox).prop('checked', false);
+ });
+ $(document.getElementById($(this).attr("for"))).prop('checked', true);
+ if($('#q').val()) {
+ $('#search_form').submit();
+ }
+ return false;
+ });
+ $('#time-range').change(function(e) {
+ if($('#q').val()) {
+ $('#search_form').submit();
+ }
+ });
+ $('#language').change(function(e) {
+ if($('#q').val()) {
+ $('#search_form').submit();
+ }
+ });
+ }
+});
diff --git a/searx/static/plugins/js/vim_hotkeys.js b/searx/static/plugins/js/vim_hotkeys.js
new file mode 100644
index 0000000..13bd070
--- /dev/null
+++ b/searx/static/plugins/js/vim_hotkeys.js
@@ -0,0 +1,337 @@
+$(document).ready(function() {
+ highlightResult('top')();
+
+ $('.result').on('click', function() {
+ highlightResult($(this))();
+ });
+
+ var vimKeys = {
+ 27: {
+ key: 'Escape',
+ fun: removeFocus,
+ des: 'remove focus from the focused input',
+ cat: 'Control'
+ },
+ 73: {
+ key: 'i',
+ fun: searchInputFocus,
+ des: 'focus on the search input',
+ cat: 'Control'
+ },
+ 66: {
+ key: 'b',
+ fun: scrollPage(-window.innerHeight),
+ des: 'scroll one page up',
+ cat: 'Navigation'
+ },
+ 70: {
+ key: 'f',
+ fun: scrollPage(window.innerHeight),
+ des: 'scroll one page down',
+ cat: 'Navigation'
+ },
+ 85: {
+ key: 'u',
+ fun: scrollPage(-window.innerHeight / 2),
+ des: 'scroll half a page up',
+ cat: 'Navigation'
+ },
+ 68: {
+ key: 'd',
+ fun: scrollPage(window.innerHeight / 2),
+ des: 'scroll half a page down',
+ cat: 'Navigation'
+ },
+ 71: {
+ key: 'g',
+ fun: scrollPageTo(-document.body.scrollHeight, 'top'),
+ des: 'scroll to the top of the page',
+ cat: 'Navigation'
+ },
+ 86: {
+ key: 'v',
+ fun: scrollPageTo(document.body.scrollHeight, 'bottom'),
+ des: 'scroll to the bottom of the page',
+ cat: 'Navigation'
+ },
+ 75: {
+ key: 'k',
+ fun: highlightResult('up'),
+ des: 'select previous search result',
+ cat: 'Results'
+ },
+ 74: {
+ key: 'j',
+ fun: highlightResult('down'),
+ des: 'select next search result',
+ cat: 'Results'
+ },
+ 80: {
+ key: 'p',
+ fun: pageButtonClick(0),
+ des: 'go to previous page',
+ cat: 'Results'
+ },
+ 78: {
+ key: 'n',
+ fun: pageButtonClick(1),
+ des: 'go to next page',
+ cat: 'Results'
+ },
+ 79: {
+ key: 'o',
+ fun: openResult(false),
+ des: 'open search result',
+ cat: 'Results'
+ },
+ 84: {
+ key: 't',
+ fun: openResult(true),
+ des: 'open the result in a new tab',
+ cat: 'Results'
+ },
+ 82: {
+ key: 'r',
+ fun: reloadPage,
+ des: 'reload page from the server',
+ cat: 'Control'
+ },
+ 72: {
+ key: 'h',
+ fun: toggleHelp,
+ des: 'toggle help window',
+ cat: 'Other'
+ }
+ };
+
+ $(document).keydown(function(e) {
+ // check for modifiers so we don't break browser's hotkeys
+ if (vimKeys.hasOwnProperty(e.keyCode)
+ && !e.ctrlKey
+ && !e.altKey
+ && !e.shiftKey
+ && !e.metaKey)
+ {
+ if (e.keyCode === 27) {
+ if (e.target.tagName.toLowerCase() === 'input') {
+ vimKeys[e.keyCode].fun();
+ }
+ } else {
+ if (e.target === document.body) {
+ e.preventDefault();
+ vimKeys[e.keyCode].fun();
+ }
+ }
+ }
+ });
+
+ function highlightResult(which) {
+ return function() {
+ var current = $('.result[data-vim-selected]');
+ if (current.length === 0) {
+ current = $('.result:first');
+ if (current.length === 0) {
+ return;
+ }
+ }
+
+ var next;
+
+ if (typeof which !== 'string') {
+ next = which;
+ } else {
+ switch (which) {
+ case 'visible':
+ var top = $(window).scrollTop();
+ var bot = top + $(window).height();
+ var results = $('.result');
+
+ for (var i = 0; i < results.length; i++) {
+ next = $(results[i]);
+ var etop = next.offset().top;
+ var ebot = etop + next.height();
+
+ if ((ebot <= bot) && (etop > top)) {
+ break;
+ }
+ }
+ break;
+ case 'down':
+ next = current.next('.result');
+ if (next.length === 0) {
+ next = $('.result:first');
+ }
+ break;
+ case 'up':
+ next = current.prev('.result');
+ if (next.length === 0) {
+ next = $('.result:last');
+ }
+ break;
+ case 'bottom':
+ next = $('.result:last');
+ break;
+ case 'top':
+ default:
+ next = $('.result:first');
+ }
+ }
+
+ if (next) {
+ current.removeAttr('data-vim-selected').removeClass('well well-sm');
+ next.attr('data-vim-selected', 'true').addClass('well well-sm');
+ scrollPageToSelected();
+ }
+ }
+ }
+
+ function reloadPage() {
+ document.location.reload(false);
+ }
+
+ function removeFocus() {
+ if (document.activeElement) {
+ document.activeElement.blur();
+ }
+ }
+
+ function pageButtonClick(num) {
+ return function() {
+ var buttons = $('div#pagination button[type="submit"]');
+ if (buttons.length !== 2) {
+ console.log('page navigation with this theme is not supported');
+ return;
+ }
+ if (num >= 0 && num < buttons.length) {
+ buttons[num].click();
+ } else {
+ console.log('pageButtonClick(): invalid argument');
+ }
+ }
+ }
+
+ function scrollPageToSelected() {
+ var sel = $('.result[data-vim-selected]');
+ if (sel.length !== 1) {
+ return;
+ }
+
+ var wnd = $(window);
+
+ var wtop = wnd.scrollTop();
+ var etop = sel.offset().top;
+
+ var offset = 30;
+
+ if (wtop > etop) {
+ wnd.scrollTop(etop - offset);
+ } else {
+ var ebot = etop + sel.height();
+ var wbot = wtop + wnd.height();
+
+ if (wbot < ebot) {
+ wnd.scrollTop(ebot - wnd.height() + offset);
+ }
+ }
+ }
+
+ function scrollPage(amount) {
+ return function() {
+ window.scrollBy(0, amount);
+ highlightResult('visible')();
+ }
+ }
+
+ function scrollPageTo(position, nav) {
+ return function() {
+ window.scrollTo(0, position);
+ highlightResult(nav)();
+ }
+ }
+
+ function searchInputFocus() {
+ $('input#q').focus();
+ }
+
+ function openResult(newTab) {
+ return function() {
+ var link = $('.result[data-vim-selected] .result_header a');
+ if (link.length) {
+ var url = link.attr('href');
+ if (newTab) {
+ window.open(url);
+ } else {
+ window.location.href = url;
+ }
+ }
+ };
+ }
+
+ function toggleHelp() {
+ var helpPanel = $('#vim-hotkeys-help');
+ if (helpPanel.length) {
+ helpPanel.toggleClass('hidden');
+ return;
+ }
+
+ var categories = {};
+
+ for (var k in vimKeys) {
+ var key = vimKeys[k];
+ categories[key.cat] = categories[key.cat] || [];
+ categories[key.cat].push(key);
+ }
+
+ var sorted = Object.keys(categories).sort(function(a, b) {
+ return categories[b].length - categories[a].length;
+ });
+
+ if (sorted.length === 0) {
+ return;
+ }
+
+ var html = '<div id="vim-hotkeys-help" class="well vim-hotkeys-help">';
+ html += '<div class="container-fluid">';
+
+ html += '<div class="row">';
+ html += '<div class="col-sm-12">';
+ html += '<h3>How to navigate searx with Vim-like hotkeys</h3>';
+ html += '</div>'; // col-sm-12
+ html += '</div>'; // row
+
+ for (var i = 0; i < sorted.length; i++) {
+ var cat = categories[sorted[i]];
+
+ var lastCategory = i === (sorted.length - 1);
+ var first = i % 2 === 0;
+
+ if (first) {
+ html += '<div class="row dflex">';
+ }
+ html += '<div class="col-sm-' + (first && lastCategory ? 12 : 6) + ' dflex">';
+
+ html += '<div class="panel panel-default iflex">';
+ html += '<div class="panel-heading">' + cat[0].cat + '</div>';
+ html += '<div class="panel-body">';
+ html += '<ul class="list-unstyled">';
+
+ for (var cj in cat) {
+ html += '<li><kbd>' + cat[cj].key + '</kbd> ' + cat[cj].des + '</li>';
+ }
+
+ html += '</ul>';
+ html += '</div>'; // panel-body
+ html += '</div>'; // panel
+ html += '</div>'; // col-sm-*
+
+ if (!first || lastCategory) {
+ html += '</div>'; // row
+ }
+ }
+
+ html += '</div>'; // container-fluid
+ html += '</div>'; // vim-hotkeys-help
+
+ $('body').append(html);
+ }
+});
diff --git a/searx/static/themes/courgette/img/favicon.png b/searx/static/themes/courgette/img/favicon.png
new file mode 100644
index 0000000..3818d3d
--- /dev/null
+++ b/searx/static/themes/courgette/img/favicon.png
Binary files differ
diff --git a/searx/static/themes/courgette/img/preference-icon.png b/searx/static/themes/courgette/img/preference-icon.png
new file mode 100644
index 0000000..57e991c
--- /dev/null
+++ b/searx/static/themes/courgette/img/preference-icon.png
Binary files differ
diff --git a/searx/static/themes/courgette/img/search-icon.png b/searx/static/themes/courgette/img/search-icon.png
new file mode 100644
index 0000000..9bc7a22
--- /dev/null
+++ b/searx/static/themes/courgette/img/search-icon.png
Binary files differ
diff --git a/searx/static/themes/courgette/img/searx-mobile.png b/searx/static/themes/courgette/img/searx-mobile.png
new file mode 100644
index 0000000..31dd7d1
--- /dev/null
+++ b/searx/static/themes/courgette/img/searx-mobile.png
Binary files differ
diff --git a/searx/static/themes/courgette/img/searx.png b/searx/static/themes/courgette/img/searx.png
new file mode 100644
index 0000000..68c2e4f
--- /dev/null
+++ b/searx/static/themes/courgette/img/searx.png
Binary files differ
diff --git a/searx/static/themes/courgette/img/searx_logo.svg b/searx/static/themes/courgette/img/searx_logo.svg
new file mode 100644
index 0000000..67a2d45
--- /dev/null
+++ b/searx/static/themes/courgette/img/searx_logo.svg
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="744.09448819"
+ height="1052.3622047"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.4 r9939"
+ sodipodi:docname="searx_logo.svg"
+ inkscape:export-filename="/home/a/magnif.png"
+ inkscape:export-xdpi="203.1774"
+ inkscape:export-ydpi="203.1774">
+ <defs
+ id="defs4">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3857">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3859" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3861" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3790">
+ <stop
+ style="stop-color:#a9a9a9;stop-opacity:1;"
+ offset="0"
+ id="stop3792" />
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="1"
+ id="stop3794" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3790"
+ id="radialGradient3798"
+ cx="294.45947"
+ cy="208.37973"
+ fx="294.45947"
+ fy="208.37973"
+ r="107.58125"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3857"
+ id="linearGradient3865"
+ x1="120.68947"
+ y1="239.61774"
+ x2="120.68947"
+ y2="602.17517"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3790"
+ id="linearGradient3912"
+ x1="186.74416"
+ y1="354.42426"
+ x2="255.84358"
+ y2="254.35953"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2227304,0,0,0.89945099,-289.31433,113.40259)" />
+ <filter
+ inkscape:collect="always"
+ id="filter4024"
+ x="-0.12996517"
+ width="1.2599303"
+ y="-0.14709377"
+ height="1.2941875">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="6.4759344"
+ id="feGaussianBlur4026" />
+ </filter>
+ <filter
+ inkscape:collect="always"
+ id="filter3983"
+ x="-1.0608404"
+ width="3.1216809"
+ y="-0.31017202"
+ height="1.620344">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="9.392858"
+ id="feGaussianBlur3985" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.979899"
+ inkscape:cx="30.708726"
+ inkscape:cy="948.08556"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1364"
+ inkscape:window-height="663"
+ inkscape:window-x="0"
+ inkscape:window-y="30"
+ inkscape:window-maximized="0"
+ showguides="true"
+ inkscape:guide-bbox="true" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <path
+ style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ d="m 70.523181,34.870671 c -7.11959,15.242893 -10.17798,31.779192 -8.22563,48.814566 5.01677,43.774133 41.675309,79.324503 91.536109,95.162893 -6.62576,-22.40752 -5.34093,-44.9362 2.6395,-65.84431 C 108.73618,98.821131 74.828141,70.195435 70.523181,34.870671 z"
+ id="path3814-0-7"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ d="m 303.77876,36.21406 c 7.11959,15.242893 10.17798,31.779192 8.22563,48.814566 -5.01677,43.774134 -41.67531,79.324504 -91.53611,95.162894 6.62576,-22.40752 5.34093,-44.9362 -2.6395,-65.84431 47.73698,-14.18269 81.64502,-42.808386 85.94998,-78.13315 z"
+ id="path3814-0"
+ inkscape:connector-curvature="0" />
+ <path
+ transform="matrix(0.6556593,-0.75505688,0.75505688,0.6556593,0,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ d="m -5.0905523,259.06055 18.4167573,0 c 6.220455,0 11.228257,16.68196 11.228257,37.40349 l 0,172.83701 c 0,20.72153 -5.007802,37.40349 -11.228257,37.40349 l -18.4167573,0 c -6.2204547,0 -11.2282577,-16.68196 -11.2282577,-37.40349 l 0,-172.83701 c 0,-20.72153 5.007803,-37.40349 11.2282577,-37.40349 z"
+ id="rect3804" />
+ <path
+ sodipodi:type="arc"
+ style="fill:url(#radialGradient3798);fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path2987"
+ sodipodi:cx="294.45947"
+ sodipodi:cy="208.37973"
+ sodipodi:rx="107.58125"
+ sodipodi:ry="107.58125"
+ d="m 402.04073,208.37973 a 107.58125,107.58125 0 1 1 -215.16251,0 107.58125,107.58125 0 1 1 215.16251,0 z"
+ transform="translate(-107.07617,-60.609153)" />
+ <path
+ sodipodi:type="arc"
+ style="fill:url(#linearGradient3865);fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3757"
+ sodipodi:cx="131.82491"
+ sodipodi:cy="299.29346"
+ sodipodi:rx="101.52033"
+ sodipodi:ry="101.52033"
+ d="m 233.34524,299.29346 a 101.52033,101.52033 0 1 1 -203.040667,0 101.52033,101.52033 0 1 1 203.040667,0 z"
+ transform="matrix(0.76865672,0,0,0.76865672,85.80266,-82.535889)" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#1a1a1a;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3800"
+ sodipodi:cx="183.34268"
+ sodipodi:cy="156.35687"
+ sodipodi:rx="27.274118"
+ sodipodi:ry="27.274118"
+ d="m 210.6168,156.35687 a 27.274118,27.274118 0 1 1 -54.54824,0 27.274118,27.274118 0 1 1 54.54824,0 z"
+ transform="translate(5,-7.1428572)" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3802"
+ sodipodi:cx="197.9899"
+ sodipodi:cy="203.32896"
+ sodipodi:rx="5.5558391"
+ sodipodi:ry="5.5558391"
+ d="m 203.54574,203.32896 a 5.5558391,5.5558391 0 1 1 -11.11168,0 5.5558391,5.5558391 0 1 1 11.11168,0 z"
+ transform="translate(1.4847712,-63.564549)" />
+ <rect
+ style="fill:#ffffff;fill-opacity:0.82211531000000004;fill-rule:nonzero;stroke:none;filter:url(#filter4024)"
+ id="rect3916"
+ width="2.2392972"
+ height="159.43797"
+ x="19.525793"
+ y="337.8396"
+ rx="2.8666623"
+ ry="9.0007057"
+ transform="matrix(0.74466525,-0.84318084,0.84318084,0.74466525,-35.543204,-26.349917)" />
+ </g>
+</svg>
diff --git a/searx/static/themes/courgette/js/searx.js b/searx/static/themes/courgette/js/searx.js
new file mode 100644
index 0000000..92a25e3
--- /dev/null
+++ b/searx/static/themes/courgette/js/searx.js
@@ -0,0 +1,45 @@
+if(searx.autocompleter) {
+ window.addEvent('domready', function() {
+ new Autocompleter.Request.JSON('q', './autocompleter', {
+ postVar:'q',
+ postData:{
+ 'format': 'json'
+ },
+ ajaxOptions:{
+ timeout: 5 // Correct option?
+ },
+ 'minLength': 4,
+ // 'selectMode': 'type-ahead',
+ cache: true,
+ delay: 300
+ });
+ });
+}
+
+(function (w, d) {
+ 'use strict';
+ function addListener(el, type, fn) {
+ if (el.addEventListener) {
+ el.addEventListener(type, fn, false);
+ } else {
+ el.attachEvent('on' + type, fn);
+ }
+ }
+
+ function placeCursorAtEnd() {
+ if (this.setSelectionRange) {
+ var len = this.value.length * 2;
+ this.setSelectionRange(len, len);
+ }
+ }
+
+ addListener(w, 'load', function () {
+ var qinput = d.getElementById('q');
+ if (qinput !== null && qinput.value === "") {
+ addListener(qinput, 'focus', placeCursorAtEnd);
+ qinput.focus();
+ }
+ });
+
+})(window, document);
+
diff --git a/searx/static/themes/courgette/less/style-rtl.less b/searx/static/themes/courgette/less/style-rtl.less
new file mode 100644
index 0000000..3e357d3
--- /dev/null
+++ b/searx/static/themes/courgette/less/style-rtl.less
@@ -0,0 +1,42 @@
+.q {
+ padding: 0.5em 1em 0.5em 3em;
+}
+
+#search_submit {
+ left: 0;
+ right:auto;
+}
+
+.result .favicon {
+ float: right;
+ margin-left: 0.5em;
+ margin-right: 0;
+}
+
+#sidebar {
+ right: auto;
+ left: 0;
+}
+
+#results {
+ padding: 0px 32px 0px 272px;
+}
+
+.search.center {
+ padding-right: 0;
+ padding-left: 17em;
+}
+
+.right {
+ right: auto;
+ left: 0;
+}
+
+#pagination form + form {
+ float: left;
+ margin-top: -2em;
+}
+
+.engine-table {
+ text-align:right;
+} \ No newline at end of file
diff --git a/searx/static/themes/courgette/less/style.less b/searx/static/themes/courgette/less/style.less
new file mode 100644
index 0000000..0387af5
--- /dev/null
+++ b/searx/static/themes/courgette/less/style.less
@@ -0,0 +1,691 @@
+
+@color-main: #3498DB;
+@color-focus: #0665A2;
+@color-other-links: #666;
+@color-fonts: #333;
+@center-width: 70em;
+
+
+
+
+* {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+input[type="search"] {
+ -webkit-appearance: textfield;
+}
+
+h2 {
+ color: @color-other-links;
+ text-transform: uppercase;
+}
+
+body {
+ font-family: sans-serif;
+ line-height: 1.5;
+ margin: 0;
+ background: #EEE;
+}
+
+html {
+ position: relative;
+ min-height: 100%;
+}
+
+a {
+ color: @color-other-links;
+}
+
+.title h1 {
+ font-size:7em;
+ color:@color-main;
+ margin:0 auto;
+ line-height:100px;
+ margin-top:-20px;
+ padding-bottom:20px;
+}
+
+.center {
+ max-width: @center-width;
+ text-align: center;
+ background: rgba(255,255,255,0.6);
+ padding: 2em;
+ margin: 7% auto 0;
+ position: relative;
+}
+
+.center.search {
+ position: static;
+ width: auto;
+ background: none;
+ margin: auto;
+ padding-top: 1.8em;
+}
+
+@media screen and (min-width: 1001px) {
+ .center:after {
+ content: "";
+ z-index: -1;
+ background: url(../img/bg-body-index.jpg) no-repeat;
+ background-size: cover;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ position: fixed;
+ }
+ .center.search:after {
+ content: none;
+ }
+}
+
+.autocompleter-choices {
+ position: absolute;
+ margin: 0;
+ padding: 0;
+ background: #FFF;
+}
+
+.autocompleter-choices li {
+ padding: 0.5em 1em;
+}
+
+.autocompleter-choices li:hover {
+ background: @color-main;
+ color: #FFF;
+ cursor: pointer;
+}
+
+#categories {
+ text-align: center;
+}
+
+.top_margin {
+ position: absolute;
+ bottom: -3.5em;
+ width: 100%;
+ left: 0;
+}
+
+.top_margin a {
+ display: inline-block;
+ margin-right: 1em;
+ color: #FFF;
+ text-decoration: none;
+}
+
+.top_margin a:hover,
+.top_margin a:focus {
+ text-decoration: underline;
+}
+
+@media screen and (max-width: 1000px) {
+ .center { background: none; }
+ .top_margin a {
+ color: @color-fonts;
+ }
+}
+
+.checkbox_container { margin-top: 1.5em; }
+.checkbox_container label {
+ padding: 0.5em 1em;
+ color: @color-fonts;
+ cursor: pointer;
+ font-size: 0.9em;
+}
+
+.checkbox_container label:hover {
+ background: @color-main;
+ color: #FFF;
+}
+
+.checkbox_container input[type="checkbox"] {
+ position: absolute;
+ top: -9999px;
+}
+
+.checkbox_container input[type="checkbox"]:checked + label {
+ background: @color-main;
+ color: #FFF;
+}
+
+#categories_container > div {
+ display: inline-block;
+}
+
+#categories .hidden {
+ display: none;
+ position: absolute;
+ bottom: 1em;
+ left: 0;
+ text-align: center;
+ width: 100%;
+ font-size: 0.9em;
+ font-style: italic;
+ color: @color-fonts;
+}
+
+#categories:hover .hidden {
+ display: block;
+}
+
+@media screen and (max-width: 900px) {
+ #categories_container { letter-spacing: -5px; }
+ #categories_container > div {
+ letter-spacing: normal;
+ margin-top: 1em;
+ }
+ .checkbox_container {
+ margin: 0;
+ }
+ .checkbox_container label {
+ display: block;
+ background: #CCC;
+ padding: 1em;
+ border: 1px solid #FFF;
+ }
+ .top_margin { position: static; }
+ #categories .hidden {
+ position: static;
+ display: block;
+ }
+}
+
+@media screen and (max-width: 900px) and (min-width: 501px) {
+ #categories_container > div {
+ width: 31%;
+ margin-left: 2.333%;
+ }
+ #categories_container > div:nth-child(3n+1) { margin-left: 0; }
+}
+
+@media screen and (max-width: 500px) {
+ #categories_container > div {
+ width: 48%;
+ margin-left: 2%;
+ font-size: 0.9em;
+ }
+ #categories_container > div:nth-child(2n+1) { margin-left: 0; }
+ .title h1 {
+ background: url(../img/searx-mobile.png) no-repeat;
+ width: 200px;
+ height: 39px;
+ }
+}
+
+#search_wrapper {
+ position: relative;
+}
+
+.q {
+ padding: 0.5em 3em 0.5em 1em;
+ width: 100%;
+ font-size: 1.5em;
+ border: 0;
+ color: #666;
+}
+
+#search_submit {
+ position: absolute;
+ top: 0;
+ right: 0;
+ border: 0;
+ background:url("../img/search-icon.png") no-repeat scroll center center / 65% auto @color-main;
+ text-indent: -9999px;
+ width: 5em;
+ height: 100%;
+ cursor: pointer;
+}
+
+#search_submit:hover,
+#search_submit:focus {
+ background-color: @color-focus;
+}
+
+#sidebar {
+ background: @color-main;
+ position: fixed;
+ top: 0;
+ right: 0;
+ width: 15em;
+ height: 100%;
+ padding: 1.5em;
+ text-align: right;
+}
+
+.right {
+ position: fixed;
+ bottom: 1.5em;
+ width: 15em;
+ right: 0;
+ z-index: 1;
+ padding: 0 1.5em;
+ text-align: right;
+}
+
+.right a {
+ color: #FFF;
+ display: block;
+ text-decoration: none;
+}
+
+.right a:hover,
+.right a:focus {
+ text-decoration: underline;
+}
+
+#preferences {
+ background: url("../img/preference-icon.png") no-repeat right center / 12% auto;
+ padding-right: 1.8em;
+}
+
+#preferences:hover,
+#preferences:focus {
+
+}
+
+#search_url input {
+ border: 0;
+ padding: 0.5em;
+}
+
+#sidebar > div {
+ margin-bottom: 1em;
+ color: #FFF;
+}
+
+#sidebar form {
+ display: inline-block;
+}
+
+#sidebar input[type="submit"] {
+ background: #CCC;
+ border: 0;
+ padding: 0.5em 1em;
+ cursor: pointer;
+ margin-top: 0.5em;
+}
+
+#sidebar input[type="submit"]:hover,
+#sidebar input[type="submit"]:focus {
+ color: #FFF;
+ background-color: @color-focus;
+}
+
+#results {
+ padding-right: 17em;
+ padding-left: 2em;
+ padding: 0 17em 0 2em;
+}
+
+.result p {
+ font-size: 0.9em;
+}
+
+.result .content {
+ margin: 0;
+ color: #666;
+}
+
+.result .url {
+ margin-top: 0;
+ color: #FF6530;
+}
+
+.result .favicon {
+ float: left;
+ position: relative;
+ top: 0.5em;
+ margin-right: 0.5em;
+}
+
+.definition_result {
+ background: #CCC;
+ padding: 1em;
+}
+
+.definition_result .result_title,
+.definition_result p {
+ margin: 0;
+}
+
+.result_title {
+ margin-bottom: 0;
+ font-weight: normal;
+}
+
+.highlight {
+ font-weight: bold;
+}
+
+.result_title a {
+ color: @color-main;
+ text-decoration: none;
+}
+
+.result_title a:hover,
+.result_title a:focus {
+ text-decoration: underline;
+}
+
+.cache_link {
+ color: #666;
+ font-size: 0.9em;
+ font-style: italic;
+}
+
+.search.center {
+ padding-right: 17em;
+}
+
+#answers {
+ border: 2px solid @color-main;
+ padding: 20px;
+ color:#666;
+ text-align: center;
+ max-width:@center-width;
+ margin:0 auto 20px;
+}
+
+#suggestions { margin-bottom: 1em; }
+
+#suggestions span { color: #666; }
+
+#suggestions form {
+ display: inline-block;
+ vertical-align: top;
+ margin-bottom: 0.5em;
+}
+
+#suggestions input[type="submit"] {
+ color: @color-fonts;
+ padding: 0.5em 1em;
+ border: 0;
+ background: #CCC;
+ cursor:pointer;
+}
+
+#suggestions input[type="submit"]:hover,
+#suggestions input[type="submit"]:focus {
+ background: @color-main;
+ color: #FFF;
+}
+
+#pagination {
+ margin: 1.5em 0 2em;
+}
+
+#pagination form + form {
+ float: right;
+ margin-top: -2em;
+}
+
+input[type="submit"] {
+ display: inline-block;
+ background: @color-main;
+ color: #FFF;
+ border: 0;
+ padding: 0.6em 1em;
+ cursor: pointer;
+}
+
+input[type="submit"]:hover,
+input[type="submit"]:focus {
+ background: @color-focus;
+}
+
+.row {
+ max-width: 60em;
+ margin: auto;
+}
+
+.row a {
+ color: @color-main;
+}
+
+.row form {
+ letter-spacing: -5px;
+}
+
+.row form > * { letter-spacing: normal; }
+
+.row p { margin: 0; }
+
+.row fieldset {
+ display: inline-block;
+ width: 48%;
+ vertical-align: top;
+}
+
+.row fieldset:last-of-type {
+ display: block;
+ width: auto;
+ background: none;
+ padding: 0;
+}
+
+.row fieldset:nth-child(odd) {
+ margin-right: 2%;
+}
+
+.row fieldset:nth-child(2) {
+ min-height: 10.5em;
+}
+
+@media screen and (max-width: 900px) {
+ .row {
+ margin: 0 1em;
+ }
+
+ .row fieldset { width: 49%; }
+ .row fieldset,
+ .row fieldset:nth-child(odd) {
+ margin-right: 0;
+ }
+
+ .row fieldset:first-child {
+ width: 100%;
+ margin-right: 0;
+ }
+
+ .row fieldset:nth-child(even) {
+ margin-right: 2%;
+ }
+}
+
+@media screen and (max-width: 800px) {
+ .row fieldset { width: 100%; }
+
+ select { width: 100%; }
+
+ table { font-size: 0.8em; }
+ .right {display: none;}
+ #sidebar { display: none; }
+ #results { padding: 0 2em; }
+ .search.center {
+ padding-right: 2em;
+ }
+}
+
+@media screen and (max-width: 400px) {
+ .row #categories_container > div {
+ width: 100%;
+ margin-left: 0;
+ }
+}
+
+fieldset {
+ border: 0;
+ margin: 1em 0;
+ background: #CCC;
+ padding: 1.5em;
+}
+
+table {
+ width: 100%;
+ text-align: left;
+ border: 1px solid #CCC;
+ border-collapse: collapse;
+}
+
+table th {
+ background: #999;
+ color: #FFF;
+}
+
+table tr:nth-child(odd) {
+ background: #CCC;
+}
+
+table th,
+table td {
+ padding: 0.5em 1em;
+ border: 1px solid #FFF;
+}
+
+.engine_checkbox label {
+ padding: 0.5em;
+ background: @color-main;
+ color: #FFF;
+ cursor: pointer;
+}
+
+.engine_checkbox .deny {
+ background: @color-main;
+}
+
+.engine_checkbox .allow {
+ display: none;
+ background: #666;
+}
+
+.engine_checkbox input {
+ display: none;
+}
+
+.engine_checkbox input:checked + .allow {
+ display: inline;
+}
+
+.engine_checkbox input:checked + .allow + .deny{
+ display: none;
+}
+
+.row input[type="submit"] {
+ font-size: 1em;
+ margin: 1em 0 2em;
+}
+
+.row .right {
+ position: static;
+ display: inline-block;
+
+}
+
+.row .right a {
+ color: @color-fonts;
+ width: auto;
+ text-align: left;
+ padding: 0;
+}
+
+.small_font {
+ font-size: 0.8em;
+}
+
+table th {
+ padding: 1em;
+}
+
+legend {
+ background: #EEE;
+ padding: 0 1em;
+ position: relative;
+}
+
+select {
+ border: 1px solid #DDD;
+ padding: 0.5em 0.8em;
+ font-size: 1em;
+}
+
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #f8f8f8; }
+.highlight .c { color: #408080; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { color: #008000; font-weight: bold } /* Keyword */
+.highlight .o { color: #666666 } /* Operator */
+.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
+.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #008000 } /* Keyword.Pseudo */
+.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #B00040 } /* Keyword.Type */
+.highlight .m { color: #666666 } /* Literal.Number */
+.highlight .s { color: #BA2121 } /* Literal.String */
+.highlight .na { color: #7D9029 } /* Name.Attribute */
+.highlight .nb { color: #008000 } /* Name.Builtin */
+.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.highlight .no { color: #880000 } /* Name.Constant */
+.highlight .nd { color: #AA22FF } /* Name.Decorator */
+.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #0000FF } /* Name.Function */
+.highlight .nl { color: #A0A000 } /* Name.Label */
+.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #19177C } /* Name.Variable */
+.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mf { color: #666666 } /* Literal.Number.Float */
+.highlight .mh { color: #666666 } /* Literal.Number.Hex */
+.highlight .mi { color: #666666 } /* Literal.Number.Integer */
+.highlight .mo { color: #666666 } /* Literal.Number.Oct */
+.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
+.highlight .sc { color: #BA2121 } /* Literal.String.Char */
+.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
+.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.highlight .sx { color: #008000 } /* Literal.String.Other */
+.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
+.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
+.highlight .ss { color: #19177C } /* Literal.String.Symbol */
+.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #19177C } /* Name.Variable.Class */
+.highlight .vg { color: #19177C } /* Name.Variable.Global */
+.highlight .vi { color: #19177C } /* Name.Variable.Instance */
+.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
+
+.highlight pre { overflow: auto; }
+
+.highlight .lineno {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ cursor: default;
+}
+
+.highlight .lineno::selection { background: transparent; } /* WebKit/Blink Browsers */
+.highlight .lineno::-moz-selection { background: transparent; } /* Gecko Browsers */
diff --git a/searx/static/themes/legacy/img/favicon.png b/searx/static/themes/legacy/img/favicon.png
new file mode 100644
index 0000000..3818d3d
--- /dev/null
+++ b/searx/static/themes/legacy/img/favicon.png
Binary files differ
diff --git a/searx/static/themes/legacy/img/preference-icon.png b/searx/static/themes/legacy/img/preference-icon.png
new file mode 100644
index 0000000..8bdee64
--- /dev/null
+++ b/searx/static/themes/legacy/img/preference-icon.png
Binary files differ
diff --git a/searx/static/themes/legacy/img/search-icon.png b/searx/static/themes/legacy/img/search-icon.png
new file mode 100644
index 0000000..d70310b
--- /dev/null
+++ b/searx/static/themes/legacy/img/search-icon.png
Binary files differ
diff --git a/searx/static/themes/legacy/img/searx.png b/searx/static/themes/legacy/img/searx.png
new file mode 100644
index 0000000..a98f12a
--- /dev/null
+++ b/searx/static/themes/legacy/img/searx.png
Binary files differ
diff --git a/searx/static/themes/legacy/img/searx_logo.svg b/searx/static/themes/legacy/img/searx_logo.svg
new file mode 100644
index 0000000..67a2d45
--- /dev/null
+++ b/searx/static/themes/legacy/img/searx_logo.svg
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="744.09448819"
+ height="1052.3622047"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.4 r9939"
+ sodipodi:docname="searx_logo.svg"
+ inkscape:export-filename="/home/a/magnif.png"
+ inkscape:export-xdpi="203.1774"
+ inkscape:export-ydpi="203.1774">
+ <defs
+ id="defs4">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3857">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3859" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3861" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3790">
+ <stop
+ style="stop-color:#a9a9a9;stop-opacity:1;"
+ offset="0"
+ id="stop3792" />
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="1"
+ id="stop3794" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3790"
+ id="radialGradient3798"
+ cx="294.45947"
+ cy="208.37973"
+ fx="294.45947"
+ fy="208.37973"
+ r="107.58125"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3857"
+ id="linearGradient3865"
+ x1="120.68947"
+ y1="239.61774"
+ x2="120.68947"
+ y2="602.17517"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3790"
+ id="linearGradient3912"
+ x1="186.74416"
+ y1="354.42426"
+ x2="255.84358"
+ y2="254.35953"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2227304,0,0,0.89945099,-289.31433,113.40259)" />
+ <filter
+ inkscape:collect="always"
+ id="filter4024"
+ x="-0.12996517"
+ width="1.2599303"
+ y="-0.14709377"
+ height="1.2941875">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="6.4759344"
+ id="feGaussianBlur4026" />
+ </filter>
+ <filter
+ inkscape:collect="always"
+ id="filter3983"
+ x="-1.0608404"
+ width="3.1216809"
+ y="-0.31017202"
+ height="1.620344">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="9.392858"
+ id="feGaussianBlur3985" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.979899"
+ inkscape:cx="30.708726"
+ inkscape:cy="948.08556"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1364"
+ inkscape:window-height="663"
+ inkscape:window-x="0"
+ inkscape:window-y="30"
+ inkscape:window-maximized="0"
+ showguides="true"
+ inkscape:guide-bbox="true" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <path
+ style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ d="m 70.523181,34.870671 c -7.11959,15.242893 -10.17798,31.779192 -8.22563,48.814566 5.01677,43.774133 41.675309,79.324503 91.536109,95.162893 -6.62576,-22.40752 -5.34093,-44.9362 2.6395,-65.84431 C 108.73618,98.821131 74.828141,70.195435 70.523181,34.870671 z"
+ id="path3814-0-7"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ d="m 303.77876,36.21406 c 7.11959,15.242893 10.17798,31.779192 8.22563,48.814566 -5.01677,43.774134 -41.67531,79.324504 -91.53611,95.162894 6.62576,-22.40752 5.34093,-44.9362 -2.6395,-65.84431 47.73698,-14.18269 81.64502,-42.808386 85.94998,-78.13315 z"
+ id="path3814-0"
+ inkscape:connector-curvature="0" />
+ <path
+ transform="matrix(0.6556593,-0.75505688,0.75505688,0.6556593,0,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ d="m -5.0905523,259.06055 18.4167573,0 c 6.220455,0 11.228257,16.68196 11.228257,37.40349 l 0,172.83701 c 0,20.72153 -5.007802,37.40349 -11.228257,37.40349 l -18.4167573,0 c -6.2204547,0 -11.2282577,-16.68196 -11.2282577,-37.40349 l 0,-172.83701 c 0,-20.72153 5.007803,-37.40349 11.2282577,-37.40349 z"
+ id="rect3804" />
+ <path
+ sodipodi:type="arc"
+ style="fill:url(#radialGradient3798);fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path2987"
+ sodipodi:cx="294.45947"
+ sodipodi:cy="208.37973"
+ sodipodi:rx="107.58125"
+ sodipodi:ry="107.58125"
+ d="m 402.04073,208.37973 a 107.58125,107.58125 0 1 1 -215.16251,0 107.58125,107.58125 0 1 1 215.16251,0 z"
+ transform="translate(-107.07617,-60.609153)" />
+ <path
+ sodipodi:type="arc"
+ style="fill:url(#linearGradient3865);fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3757"
+ sodipodi:cx="131.82491"
+ sodipodi:cy="299.29346"
+ sodipodi:rx="101.52033"
+ sodipodi:ry="101.52033"
+ d="m 233.34524,299.29346 a 101.52033,101.52033 0 1 1 -203.040667,0 101.52033,101.52033 0 1 1 203.040667,0 z"
+ transform="matrix(0.76865672,0,0,0.76865672,85.80266,-82.535889)" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#1a1a1a;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3800"
+ sodipodi:cx="183.34268"
+ sodipodi:cy="156.35687"
+ sodipodi:rx="27.274118"
+ sodipodi:ry="27.274118"
+ d="m 210.6168,156.35687 a 27.274118,27.274118 0 1 1 -54.54824,0 27.274118,27.274118 0 1 1 54.54824,0 z"
+ transform="translate(5,-7.1428572)" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3802"
+ sodipodi:cx="197.9899"
+ sodipodi:cy="203.32896"
+ sodipodi:rx="5.5558391"
+ sodipodi:ry="5.5558391"
+ d="m 203.54574,203.32896 a 5.5558391,5.5558391 0 1 1 -11.11168,0 5.5558391,5.5558391 0 1 1 11.11168,0 z"
+ transform="translate(1.4847712,-63.564549)" />
+ <rect
+ style="fill:#ffffff;fill-opacity:0.82211531000000004;fill-rule:nonzero;stroke:none;filter:url(#filter4024)"
+ id="rect3916"
+ width="2.2392972"
+ height="159.43797"
+ x="19.525793"
+ y="337.8396"
+ rx="2.8666623"
+ ry="9.0007057"
+ transform="matrix(0.74466525,-0.84318084,0.84318084,0.74466525,-35.543204,-26.349917)" />
+ </g>
+</svg>
diff --git a/searx/static/themes/legacy/js/searx.js b/searx/static/themes/legacy/js/searx.js
new file mode 100644
index 0000000..d6d5b74
--- /dev/null
+++ b/searx/static/themes/legacy/js/searx.js
@@ -0,0 +1,49 @@
+if(searx.autocompleter) {
+ window.addEvent('domready', function() {
+ new Autocompleter.Request.JSON('q', './autocompleter', {
+ postVar:'q',
+ postData:{
+ 'format': 'json'
+ },
+ ajaxOptions:{
+ timeout: 5 // Correct option?
+ },
+ 'minLength': 4,
+ 'selectMode': false,
+ cache: true,
+ delay: 300
+ });
+ });
+}
+
+(function (w, d) {
+ 'use strict';
+ function addListener(el, type, fn) {
+ if (el.addEventListener) {
+ el.addEventListener(type, fn, false);
+ } else {
+ el.attachEvent('on' + type, fn);
+ }
+ }
+
+ function placeCursorAtEnd() {
+ if (this.setSelectionRange) {
+ var len = this.value.length * 2;
+ this.setSelectionRange(len, len);
+ }
+ }
+
+ addListener(w, 'load', function () {
+ var qinput = d.getElementById('q');
+ if (qinput !== null && qinput.value === "") {
+ addListener(qinput, 'focus', placeCursorAtEnd);
+ qinput.focus();
+ }
+ });
+
+ if (!!('ontouchstart' in window)) {
+ document.getElementsByTagName("html")[0].className += " touch";
+ }
+
+})(window, document);
+
diff --git a/searx/static/themes/legacy/less/autocompleter.less b/searx/static/themes/legacy/less/autocompleter.less
new file mode 100644
index 0000000..db9601a
--- /dev/null
+++ b/searx/static/themes/legacy/less/autocompleter.less
@@ -0,0 +1,61 @@
+/*
+ * searx, A privacy-respecting, hackable metasearch engine
+ */
+
+ul {
+ &.autocompleter-choices {
+ position: absolute;
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ border: 1px solid @color-autocompleter-choices-border;
+ border-left-color: @color-autocompleter-choices-border-left-right;
+ border-right-color: @color-autocompleter-choices-border-left-right;
+ border-bottom-color: @color-autocompleter-choices-border-bottom;
+ text-align: left;
+ font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
+ z-index: 50;
+ background-color: @color-autocompleter-choices-background;
+ color: @color-autocompleter-choices-font;
+
+ li {
+ position: relative;
+ margin: -2px 0 0 0;
+ padding: 0.2em 1.5em 0.2em 1em;
+ display: block;
+ float: none !important;
+ cursor: pointer;
+ font-weight: normal;
+ white-space: nowrap;
+ font-size: 1em;
+ line-height: 1.5em;
+
+ &.autocompleter-selected {
+ background-color: @color-autocompleter-selected-background;
+ color: @color-autocompleter-selected-font;
+
+ span.autocompleter-queried {
+ color: @color-autocompleter-selected-queried-font;
+ }
+ }
+ }
+
+ span.autocompleter-queried {
+ display: inline;
+ float: none;
+ font-weight: bold;
+ margin: 0;
+ padding: 0;
+ }
+ }
+}
+
+/*.autocompleter-loading {
+ //background-image: url(images/spinner.gif);
+ background-repeat: no-repeat;
+ background-position: right 50%;
+}*/
+
+/*textarea.autocompleter-loading {
+ background-position: right bottom;
+}*/
diff --git a/searx/static/themes/legacy/less/code.less b/searx/static/themes/legacy/less/code.less
new file mode 100644
index 0000000..a688dd9
--- /dev/null
+++ b/searx/static/themes/legacy/less/code.less
@@ -0,0 +1,83 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #f8f8f8; }
+.highlight .c { color: #408080; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { color: #008000; font-weight: bold } /* Keyword */
+.highlight .o { color: #666666 } /* Operator */
+.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
+.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #008000 } /* Keyword.Pseudo */
+.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #B00040 } /* Keyword.Type */
+.highlight .m { color: #666666 } /* Literal.Number */
+.highlight .s { color: #BA2121 } /* Literal.String */
+.highlight .na { color: #7D9029 } /* Name.Attribute */
+.highlight .nb { color: #008000 } /* Name.Builtin */
+.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.highlight .no { color: #880000 } /* Name.Constant */
+.highlight .nd { color: #AA22FF } /* Name.Decorator */
+.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #0000FF } /* Name.Function */
+.highlight .nl { color: #A0A000 } /* Name.Label */
+.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #19177C } /* Name.Variable */
+.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mf { color: #666666 } /* Literal.Number.Float */
+.highlight .mh { color: #666666 } /* Literal.Number.Hex */
+.highlight .mi { color: #666666 } /* Literal.Number.Integer */
+.highlight .mo { color: #666666 } /* Literal.Number.Oct */
+.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
+.highlight .sc { color: #BA2121 } /* Literal.String.Char */
+.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
+.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.highlight .sx { color: #008000 } /* Literal.String.Other */
+.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
+.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
+.highlight .ss { color: #19177C } /* Literal.String.Symbol */
+.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #19177C } /* Name.Variable.Class */
+.highlight .vg { color: #19177C } /* Name.Variable.Global */
+.highlight .vi { color: #19177C } /* Name.Variable.Instance */
+.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
+
+.highlight pre {
+ overflow: auto;
+}
+
+.highlight .lineno {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ cursor: default;
+
+ &::selection {
+ background: transparent; /* WebKit/Blink Browsers */
+ }
+ &::-moz-selection {
+ background: transparent; /* Gecko Browsers */
+ }
+}
diff --git a/searx/static/themes/legacy/less/definitions.less b/searx/static/themes/legacy/less/definitions.less
new file mode 100644
index 0000000..0ac0cc9
--- /dev/null
+++ b/searx/static/themes/legacy/less/definitions.less
@@ -0,0 +1,119 @@
+/*
+ * searx, A privacy-respecting, hackable metasearch engine
+ *
+ * To change the colors of the site, simple edit this variables
+ */
+
+/// Basic Colors
+
+@color-base: #3498DB;
+@color-base-dark: #2980B9;
+@color-base-light: #ECF0F1;
+@color-highlight: #094089;
+@color-black: #000000;
+
+/// General
+
+@color-font: #444;
+@color-font-light: #888;
+
+@color-red: #C0392B;
+
+@color-url-font: #1a11be;
+@color-url-visited-font: #8E44AD;
+@results-width: 50em;
+
+
+/// Start-Screen
+
+// hmarg
+@color-hmarg-border: @color-base;
+@color-hmarg-font: @color-base;
+@color-hmarg-font-hover: @color-base;
+
+
+/// Search-Input
+
+@color-search-border: @color-base;
+@color-search-background: #FFF;
+@color-search-font: #222;
+
+/// Autocompleter
+
+@color-autocompleter-choices-background: #FFF;
+@color-autocompleter-choices-border: @color-base;
+@color-autocompleter-choices-border-left-right: @color-base;
+@color-autocompleter-choices-border-bottom: @color-base;
+
+@color-autocompleter-choices-font: #444;
+
+/// Answers
+@color-answers-border: @color-base-dark;
+
+// Selected
+@color-autocompleter-selected-background: #444;
+@color-autocompleter-selected-font: #FFF;
+@color-autocompleter-selected-queried-font: #9FCFFF;
+
+/// Categories
+
+@color-categories-item-selected: @color-base;
+@color-categories-item-selected-font: #FFF;
+
+@color-categories-item-border-selected: @color-base-dark;
+@color-categories-item-border-unselected: #E8E7E6;
+@color-categories-item-border-unselected-hover: @color-base;
+
+
+/// Results
+
+@color-suggestions-button-background: @color-base;
+@color-suggestions-button-font: #FFF;
+
+@color-download-button-background: @color-base;
+@color-download-button-font: #FFF;
+
+@color-result-search-background: @color-base-light;
+
+@color-result-definition-border: gray;
+@color-result-torrent-border: lightgray;
+@color-result-top-border: #E8E7E6;
+
+// Link to result
+@color-result-link-font: @color-base-dark;
+@color-result-link-visited-font: @color-url-visited-font;
+
+// Url to result
+@color-result-url-font: @color-red;
+
+// Publish Date
+@color-result-publishdate-font: @color-font-light;
+
+// Images
+@color-result-image-span-background-hover: rgba(0, 0, 0, 0.6);
+@color-result-image-span-font: #FFF;
+
+// Search-URL
+@color-result-search-url-border: #888;
+@color-result-search-url-font: #444;
+
+
+/// Settings
+
+@color-settings-fieldset: @color-base;
+@color-settings-tr-hover: #DDD;
+
+// Labels
+@color-settings-label-allowed-background: #E74C3C;
+@color-settings-label-allowed-font: #FFF;
+
+@color-settings-label-deny-background: #2ECC71;
+@color-settings-label-deny-font: @color-font;
+
+@color-settings-return-background: @color-base;
+@color-settings-return-font: #FFF;
+
+/// Other
+
+@color-engines-font: @color-font-light;
+@color-percentage-div-background: #444;
diff --git a/searx/static/themes/legacy/less/mixins.less b/searx/static/themes/legacy/less/mixins.less
new file mode 100644
index 0000000..dbccce6
--- /dev/null
+++ b/searx/static/themes/legacy/less/mixins.less
@@ -0,0 +1,27 @@
+/*
+ * searx, A privacy-respecting, hackable metasearch engine
+ */
+
+// Mixins
+
+.text-size-adjust (@property: 100%) {
+ -webkit-text-size-adjust: @property;
+ -ms-text-size-adjust: @property;
+ -moz-text-size-adjust: @property;
+ text-size-adjust: @property;
+}
+
+.rounded-corners (@radius: 4px) {
+ -webkit-border-radius: @radius;
+ -moz-border-radius: @radius;
+ border-radius: @radius;
+}
+
+.user-select () {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
diff --git a/searx/static/themes/legacy/less/search.less b/searx/static/themes/legacy/less/search.less
new file mode 100644
index 0000000..d285ca7
--- /dev/null
+++ b/searx/static/themes/legacy/less/search.less
@@ -0,0 +1,68 @@
+/*
+ * searx, A privacy-respecting, hackable metasearch engine
+ */
+
+.search {
+ padding: 0;
+ margin: 0;
+ .checkbox_container label {
+ font-size: 0.9em;
+ border-bottom: 2px solid @color-categories-item-border-unselected;
+ }
+
+ .checkbox_container label:hover {
+ border-bottom: 2px solid @color-categories-item-border-unselected-hover;
+ }
+
+ .checkbox_container input[type="checkbox"]:checked + label {
+ border-bottom: 2px solid @color-categories-item-border-selected;
+ }
+}
+
+#search_wrapper {
+ position: relative;
+ width: @results-width;
+ padding: 10px;
+}
+
+.center #search_wrapper {
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.q {
+ background: none repeat scroll 0 0 @color-search-background;
+ border: 1px solid @color-search-border;
+ color: @color-search-font;
+ font-size: 16px;
+ height: 28px;
+ margin: 0;
+ outline: medium none;
+ padding: 2px;
+ padding-left: 8px;
+ padding-right: 0px !important;
+ width: 100%;
+ z-index: 2;
+}
+
+#search_submit {
+ position: absolute;
+ top: 13px;
+ right: 1px;
+ padding: 0;
+ border: 0;
+ background: url('../img/search-icon.png') no-repeat;
+ background-size: 24px 24px;
+ opacity: 0.8;
+ width: 24px;
+ height: 30px;
+ font-size: 0;
+}
+
+@media screen and (max-width: @results-width) {
+ #search_wrapper {
+ width: 90%;
+ clear:both;
+ overflow: hidden
+ }
+}
diff --git a/searx/static/themes/legacy/less/style-rtl.less b/searx/static/themes/legacy/less/style-rtl.less
new file mode 100644
index 0000000..eac53c1
--- /dev/null
+++ b/searx/static/themes/legacy/less/style-rtl.less
@@ -0,0 +1,11 @@
+#search_submit {
+ left: 1px;
+ right:auto;
+}
+
+.result .favicon {
+ float: right;
+ margin-left: 0.5em;
+ margin-right: 0;
+}
+
diff --git a/searx/static/themes/legacy/less/style.less b/searx/static/themes/legacy/less/style.less
new file mode 100644
index 0000000..4374f7d
--- /dev/null
+++ b/searx/static/themes/legacy/less/style.less
@@ -0,0 +1,739 @@
+/*
+ * searx, A privacy-respecting, hackable metasearch engine
+ *
+ * To convert "style.less" to "style.css" run: $make styles
+ */
+
+@import "definitions.less";
+
+@import "mixins.less";
+
+@import "code.less";
+
+// Main LESS-Code
+
+html {
+ font-family: sans-serif;
+ font-size: 0.9em;
+ .text-size-adjust;
+ color: @color-font;
+ padding: 0;
+ margin: 0;
+}
+
+body, #container {
+ padding: 0;
+ margin: 0;
+}
+
+#container {
+ width: 100%;
+ position: absolute;
+ top: 0;
+}
+
+// Search-Field
+
+@import "search.less";
+
+// Autocompleter
+
+@import "autocompleter.less";
+
+.row {
+ max-width: 800px;
+ margin: 20px auto;
+ text-align: justify;
+
+ h1 {
+ font-size: 3em;
+ margin-top: 50px;
+ }
+
+ p {
+ padding: 0 10px;
+ max-width: 700px;
+ }
+
+ h3,ul {
+ margin: 4px 8px;
+ }
+}
+
+.hmarg {
+ margin: 0 20px;
+ border: 1px solid @color-hmarg-border;
+ padding: 4px 10px;
+}
+
+a {
+ &:link.hmarg {
+ color: @color-hmarg-font;
+ }
+
+ &:visited.hmarg {
+ color: @color-hmarg-font;
+ }
+
+ &:active.hmarg {
+ color: @color-hmarg-font-hover;
+ }
+
+ &:hover.hmarg {
+ color: @color-hmarg-font-hover;
+ }
+}
+
+.top_margin {
+ margin-top: 60px;
+}
+
+.center {
+ text-align: center;
+}
+
+h1 {
+ font-size: 5em;
+}
+
+div.title {
+ background: url('../img/searx.png') no-repeat;
+ width: 100%;
+ min-height: 80px;
+ background-position: center;
+
+ h1 {
+ visibility: hidden;
+ }
+}
+
+input[type="submit"] {
+ padding: 2px 6px;
+ margin: 2px 4px;
+ display: inline-block;
+ background: @color-download-button-background;
+ color: @color-download-button-font;
+ .rounded-corners;
+ border: 0;
+ cursor: pointer;
+}
+
+input[type="checkbox"] {
+ visibility: hidden;
+}
+
+fieldset {
+ margin: 8px;
+ border: 1px solid @color-settings-fieldset;
+}
+
+#categories {
+ margin: 0 10px;
+ .user-select;
+}
+
+.checkbox_container {
+ display: inline-block;
+ position: relative;
+ margin: 0 3px;
+ padding: 0px;
+
+ input {
+ display: none;
+ }
+}
+
+.checkbox_container label, .engine_checkbox label {
+ cursor: pointer;
+ padding: 4px 10px;
+ margin: 0;
+ display: block;
+ text-transform: capitalize;
+ .user-select;
+}
+
+.checkbox_container input[type="checkbox"]:checked + label {
+ background: @color-categories-item-selected;
+ color: @color-categories-item-selected-font;
+}
+
+.engine_checkbox {
+ padding: 4px;
+}
+
+label {
+ &.allow {
+ background: @color-settings-label-allowed-background;
+ padding: 4px 8px;
+ color: @color-settings-label-allowed-font;
+ display: none;
+ }
+
+ &.deny {
+ background: @color-settings-label-deny-background;
+ padding: 4px 8px;
+ color: @color-settings-label-deny-font;
+ display: inline;
+ }
+}
+
+.engine_checkbox input[type="checkbox"]:checked + label {
+ &:nth-child(2) + label {
+ display: none;
+ }
+
+ &.allow {
+ display: inline;
+ }
+}
+
+a {
+ text-decoration: none;
+ color: @color-url-font;
+
+ &:visited {
+ color: @color-url-visited-font;
+ }
+}
+
+.result {
+ margin: 19px 0 18px 0;
+ padding: 0;
+ clear: both;
+}
+
+.result_title {
+ margin-bottom: 0;
+
+ a {
+ color: @color-result-link-font;
+ font-weight: normal;
+ font-size: 1.1em;
+
+ &:hover {
+ text-decoration: underline;
+ }
+
+ &:visited {
+ color: @color-result-link-visited-font;
+ }
+ }
+}
+
+.cache_link {
+ font-size: 10px !important;
+}
+
+.result {
+ h3 {
+ font-size: 1em;
+ word-wrap:break-word;
+ margin: 5px 0 1px 0;
+ padding: 0
+ }
+
+ .content {
+ font-size: 0.8em;
+ margin: 0;
+ padding: 0;
+ max-width: 54em;
+ word-wrap:break-word;
+ line-height: 1.24;
+
+ img {
+ float: left;
+ margin-right: 5px;
+ max-width: 200px;
+ max-height: 100px;
+ }
+
+ br.last {
+ clear: both;
+ }
+ }
+
+ .url {
+ font-size: 0.8em;
+ margin: 0 0 3px 0;
+ padding: 0;
+ max-width: 54em;
+ word-wrap:break-word;
+ color: @color-result-url-font;
+ }
+
+ .published_date {
+ font-size: 0.8em;
+ color: @color-result-publishdate-font;
+ Margin: 5px 20px;
+ }
+
+ .thumbnail {
+ width: 400px;
+ }
+}
+
+.engines {
+ color: @color-engines-font;
+}
+
+.small_font {
+ font-size: 0.8em;
+}
+
+.small p {
+ margin: 2px 0;
+}
+
+.right {
+ float: right;
+}
+
+.invisible {
+ display: none;
+}
+
+.left {
+ float: left;
+}
+
+.highlight {
+ color: @color-highlight;
+}
+
+.content .highlight {
+ color: @color-black;
+}
+
+.image_result {
+ display: inline-block;
+ margin: 10px 10px;
+ position: relative;
+ max-height: 160px;
+
+ img {
+ border: 0;
+ max-height: 160px;
+ }
+
+ p {
+ margin: 0;
+ padding: 0;
+
+ span a {
+ display: none;
+ color: @color-result-image-span-font;
+ }
+
+ &:hover span a {
+ display: block;
+ position: absolute;
+ bottom: 0;
+ right: 0;
+ padding: 4px;
+ background-color: @color-result-image-span-background-hover;
+ font-size: 0.7em;
+ }
+ }
+}
+
+.torrent_result {
+ border-left: 10px solid @color-result-torrent-border;
+ padding-left: 3px;
+
+ p {
+ margin: 3px;
+ font-size: 0.8em;
+ }
+
+ a {
+ color: @color-result-link-font;
+
+ &:hover {
+ text-decoration: underline;
+ }
+
+ &:visited {
+ color: @color-result-link-visited-font;
+ }
+ }
+}
+
+.definition_result {
+ border-left: 10px solid @color-result-definition-border;
+ padding-left: 3px;
+}
+
+.percentage {
+ position: relative;
+ width: 300px;
+
+ div {
+ background: @color-percentage-div-background;
+ }
+}
+
+table {
+ width: 100%;
+}
+
+td {
+ padding: 0 4px;
+}
+
+tr {
+ &:hover {
+ background: @color-settings-tr-hover;
+ }
+}
+
+#results {
+ margin: auto;
+ padding: 0;
+ width: @results-width;
+ margin-bottom: 20px;
+}
+
+#sidebar {
+ position: fixed;
+ bottom: 10px;
+ left: 10px;
+ margin: 0 2px 5px 5px;
+ padding: 0 2px 2px 2px;
+ width: 14em;
+
+ input {
+ padding: 0;
+ margin: 3px;
+ font-size: 0.8em;
+ display: inline-block;
+ background: transparent;
+ color: @color-result-search-url-font;
+ cursor: pointer;
+ }
+ input[type="submit"] {
+ text-decoration: underline;
+ }
+}
+
+#suggestions {
+
+ form {
+ display: inline;
+ }
+
+}
+
+#suggestions, #answers {
+
+ margin-top: 20px;
+ max-width: 45em;
+
+}
+
+#suggestions, #answers, #infoboxes {
+
+ input {
+ padding: 0;
+ margin: 3px;
+ font-size: 0.8em;
+ display: inline-block;
+ background: transparent;
+ color: @color-result-search-url-font;
+ cursor: pointer;
+ }
+
+ input[type="submit"] {
+ text-decoration: underline;
+ }
+
+}
+
+#suggestions-title {
+
+color: @color-font-light;
+
+
+}
+
+#answers {
+
+ border: 2px solid @color-answers-border;
+ padding: 20px;
+
+}
+
+#answers, #infoboxes {
+ form {
+ min-width: 210px;
+ }
+}
+
+
+#infoboxes {
+ position: absolute;
+ top: 100px;
+ right: 20px;
+ margin: 0px 2px 5px 5px;
+ padding: 0px 2px 2px;
+ max-width: 21em;
+ word-wrap: break-word;
+
+ .infobox {
+ margin: 10px 0 10px;
+ border: 1px solid #ddd;
+ padding: 5px;
+ font-size: 0.8em;
+ /* box-shadow: 0px 0px 5px #CCC; */
+
+ img {
+ max-width: 90%;
+ max-heigt: 12em;
+ display: block;
+ margin: 5px;
+ padding: 5px;
+ }
+
+ h2 {
+ margin: 0;
+ }
+
+ table {
+ table-layout: fixed;
+
+ td {
+ vertical-align: top;
+ }
+
+ }
+
+ input {
+ font-size: 1em;
+ }
+
+ br {
+ clear: both;
+ }
+
+ }
+}
+
+#search_url {
+ margin-top: 8px;
+
+ input {
+ border: 1px solid @color-result-search-url-border;
+ padding: 4px;
+ color: @color-result-search-url-font;
+ width: 14em;
+ display: block;
+ margin: 4px;
+ font-size: 0.8em;
+ }
+}
+
+#preferences {
+ top: 10px;
+ padding: 0;
+ border: 0;
+ background: url('../img/preference-icon.png') no-repeat;
+ background-size: 28px 28px;
+ opacity: 0.8;
+ width: 28px;
+ height: 30px;
+ display: block;
+
+ * {
+ display: none;
+ }
+}
+
+#pagination {
+ clear: both;
+
+ br {
+ clear: both;
+ }
+}
+
+#apis {
+ margin-top: 8px;
+ clear: both;
+}
+
+#categories_container {
+ position: relative;
+}
+
+@media screen and (max-width: @results-width) {
+
+ #results {
+ margin: auto;
+ padding: 0;
+ width: 90%;
+ }
+
+ .github {
+ display: none;
+ }
+
+ .checkbox_container {
+ display: block;
+ width: 90%;
+ //float: left;
+
+ label {
+ border-bottom: 0;
+ }
+ }
+
+ .preferences_container {
+ display: none;
+ postion: fixed !important;
+ top: 100px;
+ right: 0px;
+ }
+
+}
+
+@media screen and (max-width: 75em) {
+
+ div.title {
+
+ h1 {
+ font-size: 1em;
+ }
+ }
+
+ html.touch #categories {
+ width: 95%;
+ height: 30px;
+ text-align: left;
+ overflow-x: scroll;
+ overflow-y: hidden;
+ -webkit-overflow-scrolling: touch;
+
+ #categories_container {
+ width: 1000px;
+ width: -moz-max-content;
+ width: -webkit-max-content;
+ width: max-content;
+
+ .checkbox_container {
+ display: inline-block;
+ width: auto;
+ }
+ }
+ }
+
+ #categories {
+ font-size: 90%;
+ clear: both;
+
+ .checkbox_container {
+ margin-top: 2px;
+ margin: auto;
+ }
+ }
+
+ #suggestions, #answers {
+ margin-top: 5px;
+ }
+
+ #infoboxes {
+ position: inherit;
+ max-width: inherit;
+
+ .infobox {
+ clear:both;
+
+ img {
+ float: left;
+ max-width: 10em;
+ }
+ }
+ }
+
+ #categories {
+ font-size: 90%;
+ clear: both;
+
+ .checkbox_container {
+ margin-top: 2px;
+ margin: auto;
+ }
+ }
+
+ #sidebar {
+ position: static;
+ max-width: @results-width;
+ margin: 0 0 2px 0;
+ padding: 0;
+ float: none;
+ border: none;
+ width: auto;
+ input {
+ border: 0;
+ }
+ }
+
+ #apis {
+ display: none;
+ }
+
+ #search_url {
+ display: none;
+ }
+
+ .result {
+ border-top: 1px solid @color-result-top-border;
+ margin: 8px 0 8px 0;
+
+ .thumbnail {
+ max-width: 98%;
+ }
+ }
+
+ .image_result {
+ max-width: 98%;
+ img {
+ max-width: 98%;
+ }
+ }
+}
+
+.favicon {
+ float: left;
+ margin-right: 4px;
+ margin-top: 2px;
+}
+
+.preferences_back {
+ background: none repeat scroll 0 0 @color-settings-return-background;
+ border: 0 none;
+ .rounded-corners;
+ cursor: pointer;
+ display: inline-block;
+ margin: 2px 4px;
+ padding: 4px 6px;
+
+ a {
+ color: @color-settings-return-font;
+ }
+}
+
+.hidden {
+ opacity: 0;
+ overflow: hidden;
+ font-size: 0.8em;
+ position: absolute;
+ bottom: -20px;
+ width: 100%;
+ text-position: center;
+ background: white;
+ transition: opacity 1s ease;
+}
+
+#categories_container:hover .hidden {
+ transition: opacity 1s ease;
+ opacity: 0.8;
+}
diff --git a/searx/static/themes/oscar/.gitignore b/searx/static/themes/oscar/.gitignore
new file mode 100644
index 0000000..c2658d7
--- /dev/null
+++ b/searx/static/themes/oscar/.gitignore
@@ -0,0 +1 @@
+node_modules/
diff --git a/searx/static/themes/oscar/README.rst b/searx/static/themes/oscar/README.rst
new file mode 100644
index 0000000..e7daa87
--- /dev/null
+++ b/searx/static/themes/oscar/README.rst
@@ -0,0 +1,17 @@
+install dependencies
+~~~~~~~~~~~~~~~~~~~~
+
+run this command in the directory ``searx/static/themes/oscar``
+
+``npm install``
+
+compile sources
+~~~~~~~~~~~~~~~
+
+run this command in the directory ``searx/static/themes/oscar``
+
+``grunt``
+
+or in the root directory:
+
+``make grunt``
diff --git a/searx/static/themes/oscar/gruntfile.js b/searx/static/themes/oscar/gruntfile.js
new file mode 100644
index 0000000..5913994
--- /dev/null
+++ b/searx/static/themes/oscar/gruntfile.js
@@ -0,0 +1,96 @@
+module.exports = function(grunt) {
+
+ grunt.initConfig({
+ pkg: grunt.file.readJSON('package.json'),
+ concat: {
+ options: {
+ separator: ';'
+ },
+ dist: {
+ src: ['js/searx_src/*.js'],
+ dest: 'js/searx.js'
+ }
+ },
+ uglify: {
+ options: {
+ banner: '/*! oscar/searx.min.js | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n'
+ },
+ dist: {
+ files: {
+ 'js/searx.min.js': ['<%= concat.dist.dest %>']
+ }
+ }
+ },
+ jshint: {
+ files: ['gruntfile.js', 'js/searx_src/*.js'],
+ options: {
+ reporterOutput: "",
+ // options here to override JSHint defaults
+ globals: {
+ jQuery: true,
+ console: true,
+ module: true,
+ document: true
+ }
+ }
+ },
+ less: {
+ development: {
+ options: {
+ paths: ["less/pointhi", "less/logicodev", "less/logicodev-dark"]
+ //banner: '/*! less/oscar/oscar.css | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n'
+ },
+ files: {"css/pointhi.css": "less/pointhi/oscar.less",
+ "css/logicodev.css": "less/logicodev-dark/oscar.less",
+ "css/logicodev-dark.css": "less/logicodev/oscar.less"}
+ },
+ production: {
+ options: {
+ paths: ["less/pointhi", "less/logicodev", "less/logicodev-dark"],
+ //banner: '/*! less/oscar/oscar.css | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n',
+ cleancss: true
+ },
+ files: {"css/pointhi.min.css": "less/pointhi/oscar.less",
+ "css/logicodev.min.css": "less/logicodev/oscar.less",
+ "css/logicodev-dark.min.css": "less/logicodev-dark/oscar.less"}
+ },
+ /*
+ // built with ./manage.sh styles
+ bootstrap: {
+ options: {
+ paths: ["less/bootstrap"],
+ cleancss: true
+ },
+ files: {"css/bootstrap.min.css": "less/bootstrap/bootstrap.less"}
+ },
+ */
+ },
+ watch: {
+ scripts: {
+ files: ['<%= jshint.files %>'],
+ tasks: ['jshint', 'concat', 'uglify']
+ },
+ oscar_styles: {
+ files: ['less/pointhi/**/*.less'],
+ tasks: ['less:development', 'less:production']
+ },
+ bootstrap_styles: {
+ files: ['less/bootstrap/**/*.less'],
+ tasks: ['less:bootstrap']
+ }
+ }
+ });
+
+ grunt.loadNpmTasks('grunt-contrib-uglify');
+ grunt.loadNpmTasks('grunt-contrib-jshint');
+ grunt.loadNpmTasks('grunt-contrib-watch');
+ grunt.loadNpmTasks('grunt-contrib-concat');
+ grunt.loadNpmTasks('grunt-contrib-less');
+
+ grunt.registerTask('test', ['jshint']);
+
+ grunt.registerTask('default', ['jshint', 'concat', 'uglify', 'less']);
+
+ grunt.registerTask('styles', ['less']);
+
+};
diff --git a/searx/static/themes/oscar/img/favicon.png b/searx/static/themes/oscar/img/favicon.png
new file mode 100644
index 0000000..15b4575
--- /dev/null
+++ b/searx/static/themes/oscar/img/favicon.png
Binary files differ
diff --git a/searx/static/themes/oscar/img/loader.gif b/searx/static/themes/oscar/img/loader.gif
new file mode 100644
index 0000000..419cdee
--- /dev/null
+++ b/searx/static/themes/oscar/img/loader.gif
Binary files differ
diff --git a/searx/static/themes/oscar/img/logo_searx_a.png b/searx/static/themes/oscar/img/logo_searx_a.png
new file mode 100644
index 0000000..9427900
--- /dev/null
+++ b/searx/static/themes/oscar/img/logo_searx_a.png
Binary files differ
diff --git a/searx/static/themes/oscar/img/logo_searx_a_n.png b/searx/static/themes/oscar/img/logo_searx_a_n.png
new file mode 100644
index 0000000..5b24aea
--- /dev/null
+++ b/searx/static/themes/oscar/img/logo_searx_a_n.png
Binary files differ
diff --git a/searx/static/themes/oscar/img/map/layers-2x.png b/searx/static/themes/oscar/img/map/layers-2x.png
new file mode 100644
index 0000000..0b30da6
--- /dev/null
+++ b/searx/static/themes/oscar/img/map/layers-2x.png
Binary files differ
diff --git a/searx/static/themes/oscar/img/map/layers.png b/searx/static/themes/oscar/img/map/layers.png
new file mode 100644
index 0000000..4297fd9
--- /dev/null
+++ b/searx/static/themes/oscar/img/map/layers.png
Binary files differ
diff --git a/searx/static/themes/oscar/img/map/marker-icon-2x-green.png b/searx/static/themes/oscar/img/map/marker-icon-2x-green.png
new file mode 100644
index 0000000..7446bb0
--- /dev/null
+++ b/searx/static/themes/oscar/img/map/marker-icon-2x-green.png
Binary files differ
diff --git a/searx/static/themes/oscar/img/map/marker-icon-2x-orange.png b/searx/static/themes/oscar/img/map/marker-icon-2x-orange.png
new file mode 100644
index 0000000..ecd6773
--- /dev/null
+++ b/searx/static/themes/oscar/img/map/marker-icon-2x-orange.png
Binary files differ
diff --git a/searx/static/themes/oscar/img/map/marker-icon-2x-red.png b/searx/static/themes/oscar/img/map/marker-icon-2x-red.png
new file mode 100644
index 0000000..1d2e197
--- /dev/null
+++ b/searx/static/themes/oscar/img/map/marker-icon-2x-red.png
Binary files differ
diff --git a/searx/static/themes/oscar/img/map/marker-icon-2x.png b/searx/static/themes/oscar/img/map/marker-icon-2x.png
new file mode 100644
index 0000000..0015b64
--- /dev/null
+++ b/searx/static/themes/oscar/img/map/marker-icon-2x.png
Binary files differ
diff --git a/searx/static/themes/oscar/img/map/marker-icon-green.png b/searx/static/themes/oscar/img/map/marker-icon-green.png
new file mode 100644
index 0000000..f48ef41
--- /dev/null
+++ b/searx/static/themes/oscar/img/map/marker-icon-green.png
Binary files differ
diff --git a/searx/static/themes/oscar/img/map/marker-icon-orange.png b/searx/static/themes/oscar/img/map/marker-icon-orange.png
new file mode 100644
index 0000000..d0d2220
--- /dev/null
+++ b/searx/static/themes/oscar/img/map/marker-icon-orange.png
Binary files differ
diff --git a/searx/static/themes/oscar/img/map/marker-icon-red.png b/searx/static/themes/oscar/img/map/marker-icon-red.png
new file mode 100644
index 0000000..7a92b9e
--- /dev/null
+++ b/searx/static/themes/oscar/img/map/marker-icon-red.png
Binary files differ
diff --git a/searx/static/themes/oscar/img/map/marker-icon.png b/searx/static/themes/oscar/img/map/marker-icon.png
new file mode 100644
index 0000000..e2e9f75
--- /dev/null
+++ b/searx/static/themes/oscar/img/map/marker-icon.png
Binary files differ
diff --git a/searx/static/themes/oscar/img/map/marker-shadow.png b/searx/static/themes/oscar/img/map/marker-shadow.png
new file mode 100644
index 0000000..d1e773c
--- /dev/null
+++ b/searx/static/themes/oscar/img/map/marker-shadow.png
Binary files differ
diff --git a/searx/static/themes/oscar/img/searx_logo.png b/searx/static/themes/oscar/img/searx_logo.png
new file mode 100644
index 0000000..307b42f
--- /dev/null
+++ b/searx/static/themes/oscar/img/searx_logo.png
Binary files differ
diff --git a/searx/static/themes/oscar/js/searx_src/00_requirejs_config.js b/searx/static/themes/oscar/js/searx_src/00_requirejs_config.js
new file mode 100644
index 0000000..1aa4349
--- /dev/null
+++ b/searx/static/themes/oscar/js/searx_src/00_requirejs_config.js
@@ -0,0 +1,23 @@
+/**
+ * searx is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * searx is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with searx. If not, see < http://www.gnu.org/licenses/ >.
+ *
+ * (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at>
+ */
+
+requirejs.config({
+ baseUrl: './static/themes/oscar/js',
+ paths: {
+ app: '../app'
+ }
+});
diff --git a/searx/static/themes/oscar/js/searx_src/autocompleter.js b/searx/static/themes/oscar/js/searx_src/autocompleter.js
new file mode 100644
index 0000000..70c66d2
--- /dev/null
+++ b/searx/static/themes/oscar/js/searx_src/autocompleter.js
@@ -0,0 +1,37 @@
+/**
+ * searx is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * searx is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with searx. If not, see < http://www.gnu.org/licenses/ >.
+ *
+ * (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at>
+ */
+
+if(searx.autocompleter) {
+ searx.searchResults = new Bloodhound({
+ datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
+ queryTokenizer: Bloodhound.tokenizers.whitespace,
+ remote: './autocompleter?q=%QUERY'
+ });
+ searx.searchResults.initialize();
+}
+
+$(document).ready(function(){
+ if(searx.autocompleter) {
+ $('#q').typeahead(null, {
+ name: 'search-results',
+ displayKey: function(result) {
+ return result;
+ },
+ source: searx.searchResults.ttAdapter()
+ });
+ }
+});
diff --git a/searx/static/themes/oscar/js/searx_src/element_modifiers.js b/searx/static/themes/oscar/js/searx_src/element_modifiers.js
new file mode 100644
index 0000000..8e42805
--- /dev/null
+++ b/searx/static/themes/oscar/js/searx_src/element_modifiers.js
@@ -0,0 +1,99 @@
+/**
+ * searx is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * searx is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with searx. If not, see < http://www.gnu.org/licenses/ >.
+ *
+ * (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at>
+ */
+
+$(document).ready(function(){
+ /**
+ * focus element if class="autofocus" and id="q"
+ */
+ $('#q.autofocus').focus();
+
+ /**
+ * select full content on click if class="select-all-on-click"
+ */
+ $(".select-all-on-click").click(function () {
+ $(this).select();
+ });
+
+ /**
+ * change text during btn-collapse click if possible
+ */
+ $('.btn-collapse').click(function() {
+ var btnTextCollapsed = $(this).data('btn-text-collapsed');
+ var btnTextNotCollapsed = $(this).data('btn-text-not-collapsed');
+
+ if(btnTextCollapsed !== '' && btnTextNotCollapsed !== '') {
+ if($(this).hasClass('collapsed')) {
+ new_html = $(this).html().replace(btnTextCollapsed, btnTextNotCollapsed);
+ } else {
+ new_html = $(this).html().replace(btnTextNotCollapsed, btnTextCollapsed);
+ }
+ $(this).html(new_html);
+ }
+ });
+
+ /**
+ * change text during btn-toggle click if possible
+ */
+ $('.btn-toggle .btn').click(function() {
+ var btnClass = 'btn-' + $(this).data('btn-class');
+ var btnLabelDefault = $(this).data('btn-label-default');
+ var btnLabelToggled = $(this).data('btn-label-toggled');
+ if(btnLabelToggled !== '') {
+ if($(this).hasClass('btn-default')) {
+ new_html = $(this).html().replace(btnLabelDefault, btnLabelToggled);
+ } else {
+ new_html = $(this).html().replace(btnLabelToggled, btnLabelDefault);
+ }
+ $(this).html(new_html);
+ }
+ $(this).toggleClass(btnClass);
+ $(this).toggleClass('btn-default');
+ });
+
+ /**
+ * change text during btn-toggle click if possible
+ */
+ $('.media-loader').click(function() {
+ var target = $(this).data('target');
+ var iframe_load = $(target + ' > iframe');
+ var srctest = iframe_load.attr('src');
+ if(srctest === undefined || srctest === false){
+ iframe_load.attr('src', iframe_load.data('src'));
+ }
+ });
+
+ /**
+ * Select or deselect every categories on double clic
+ */
+ $(".btn-sm").dblclick(function() {
+ var btnClass = 'btn-' + $(this).data('btn-class'); // primary
+ if($(this).hasClass('btn-default')) {
+ $(".btn-sm > input").attr('checked', 'checked');
+ $(".btn-sm > input").prop("checked", true);
+ $(".btn-sm").addClass(btnClass);
+ $(".btn-sm").addClass('active');
+ $(".btn-sm").removeClass('btn-default');
+ } else {
+ $(".btn-sm > input").attr('checked', '');
+ $(".btn-sm > input").removeAttr('checked');
+ $(".btn-sm > input").checked = false;
+ $(".btn-sm").removeClass(btnClass);
+ $(".btn-sm").removeClass('active');
+ $(".btn-sm").addClass('btn-default');
+ }
+ });
+});
diff --git a/searx/static/themes/oscar/js/searx_src/leaflet_map.js b/searx/static/themes/oscar/js/searx_src/leaflet_map.js
new file mode 100644
index 0000000..4be46ac
--- /dev/null
+++ b/searx/static/themes/oscar/js/searx_src/leaflet_map.js
@@ -0,0 +1,167 @@
+/**
+ * searx is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * searx is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with searx. If not, see < http://www.gnu.org/licenses/ >.
+ *
+ * (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at>
+ */
+
+$(document).ready(function(){
+ $(".searx_overpass_request").on( "click", function( event ) {
+ var overpass_url = "https://overpass-api.de/api/interpreter?data=";
+ var query_start = overpass_url + "[out:json][timeout:25];(";
+ var query_end = ");out meta;";
+
+ var osm_id = $(this).data('osm-id');
+ var osm_type = $(this).data('osm-type');
+ var result_table = $(this).data('result-table');
+ var result_table_loadicon = "#" + $(this).data('result-table-loadicon');
+
+ // tags which can be ignored
+ var osm_ignore_tags = [ "addr:city", "addr:country", "addr:housenumber", "addr:postcode", "addr:street" ];
+
+ if(osm_id && osm_type && result_table) {
+ result_table = "#" + result_table;
+ var query = null;
+ switch(osm_type) {
+ case 'node':
+ query = query_start + "node(" + osm_id + ");" + query_end;
+ break;
+ case 'way':
+ query = query_start + "way(" + osm_id + ");" + query_end;
+ break;
+ case 'relation':
+ query = query_start + "relation(" + osm_id + ");" + query_end;
+ break;
+ default:
+ break;
+ }
+ if(query) {
+ //alert(query);
+ var ajaxRequest = $.ajax( query )
+ .done(function( html) {
+ if(html && html.elements && html.elements[0]) {
+ var element = html.elements[0];
+ var newHtml = $(result_table).html();
+ for (var row in element.tags) {
+ if(element.tags.name === null || osm_ignore_tags.indexOf(row) == -1) {
+ newHtml += "<tr><td>" + row + "</td><td>";
+ switch(row) {
+ case "phone":
+ case "fax":
+ newHtml += "<a href=\"tel:" + element.tags[row].replace(/ /g,'') + "\">" + element.tags[row] + "</a>";
+ break;
+ case "email":
+ newHtml += "<a href=\"mailto:" + element.tags[row] + "\">" + element.tags[row] + "</a>";
+ break;
+ case "website":
+ case "url":
+ newHtml += "<a href=\"" + element.tags[row] + "\">" + element.tags[row] + "</a>";
+ break;
+ case "wikidata":
+ newHtml += "<a href=\"https://www.wikidata.org/wiki/" + element.tags[row] + "\">" + element.tags[row] + "</a>";
+ break;
+ case "wikipedia":
+ if(element.tags[row].indexOf(":") != -1) {
+ newHtml += "<a href=\"https://" + element.tags[row].substring(0,element.tags[row].indexOf(":")) + ".wikipedia.org/wiki/" + element.tags[row].substring(element.tags[row].indexOf(":")+1) + "\">" + element.tags[row] + "</a>";
+ break;
+ }
+ /* jshint ignore:start */
+ default:
+ /* jshint ignore:end */
+ newHtml += element.tags[row];
+ break;
+ }
+ newHtml += "</td></tr>";
+ }
+ }
+ $(result_table).html(newHtml);
+ $(result_table).removeClass('hidden');
+ $(result_table_loadicon).addClass('hidden');
+ }
+ })
+ .fail(function() {
+ $(result_table_loadicon).html($(result_table_loadicon).html() + "<p class=\"text-muted\">could not load data!</p>");
+ });
+ }
+ }
+
+ // this event occour only once per element
+ $( this ).off( event );
+ });
+
+ $(".searx_init_map").on( "click", function( event ) {
+ var leaflet_target = $(this).data('leaflet-target');
+ var map_lon = $(this).data('map-lon');
+ var map_lat = $(this).data('map-lat');
+ var map_zoom = $(this).data('map-zoom');
+ var map_boundingbox = $(this).data('map-boundingbox');
+ var map_geojson = $(this).data('map-geojson');
+
+ require(['leaflet-0.7.3.min'], function(leaflet) {
+ if(map_boundingbox) {
+ southWest = L.latLng(map_boundingbox[0], map_boundingbox[2]);
+ northEast = L.latLng(map_boundingbox[1], map_boundingbox[3]);
+ map_bounds = L.latLngBounds(southWest, northEast);
+ }
+
+ // TODO hack
+ // change default imagePath
+ L.Icon.Default.imagePath = "./static/themes/oscar/img/map";
+
+ // init map
+ var map = L.map(leaflet_target);
+
+ // create the tile layer with correct attribution
+ var osmMapnikUrl='https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
+ var osmMapnikAttrib='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors';
+ var osmMapnik = new L.TileLayer(osmMapnikUrl, {minZoom: 1, maxZoom: 19, attribution: osmMapnikAttrib});
+
+ var osmWikimediaUrl='https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png';
+ var osmWikimediaAttrib = 'Wikimedia maps beta | Maps data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors';
+ var osmWikimedia = new L.TileLayer(osmWikimediaUrl, {minZoom: 1, maxZoom: 19, attribution: osmWikimediaAttrib});
+
+ // init map view
+ if(map_bounds) {
+ // TODO hack: https://github.com/Leaflet/Leaflet/issues/2021
+ setTimeout(function () {
+ map.fitBounds(map_bounds, {
+ maxZoom:17
+ });
+ }, 0);
+ } else if (map_lon && map_lat) {
+ if(map_zoom)
+ map.setView(new L.LatLng(map_lat, map_lon),map_zoom);
+ else
+ map.setView(new L.LatLng(map_lat, map_lon),8);
+ }
+
+ map.addLayer(osmMapnik);
+
+ var baseLayers = {
+ "OSM Mapnik": osmMapnik/*,
+ "OSM Wikimedia": osmWikimedia*/
+ };
+
+ L.control.layers(baseLayers).addTo(map);
+
+
+ if(map_geojson)
+ L.geoJson(map_geojson).addTo(map);
+ /*else if(map_bounds)
+ L.rectangle(map_bounds, {color: "#ff7800", weight: 3, fill:false}).addTo(map);*/
+ });
+
+ // this event occour only once per element
+ $( this ).off( event );
+ });
+});
diff --git a/searx/static/themes/oscar/less/logicodev-dark/oscar.less b/searx/static/themes/oscar/less/logicodev-dark/oscar.less
new file mode 100644
index 0000000..804dd76
--- /dev/null
+++ b/searx/static/themes/oscar/less/logicodev-dark/oscar.less
@@ -0,0 +1,245 @@
+@import "../logicodev/variables.less";
+@import "../logicodev/footer.less";
+@import "../logicodev/checkbox.less";
+@import "../logicodev/onoff.less";
+@import "../logicodev/results.less";
+@import "../logicodev/infobox.less";
+@import "../logicodev/search.less";
+@import "../logicodev/advanced.less";
+@import "../logicodev/cursor.less";
+@import "../logicodev/code.less";
+@import "../logicodev/preferences.less";
+
+/*Global*/
+body {
+ background:#1d1f21 none !important;
+ color:#D5D8D7 !important;
+}
+
+a {
+ color:#41a2ce !important;
+ text-decoration: none !important;
+}
+
+a:hover {
+ color:#5F89AC !important;
+}
+
+input, button, textarea, select {
+ border: 1px solid #282a2e !important;
+ background-color: #444 !important;
+ color: #BBB !important;
+}
+
+input:focus, button:focus, textarea:focus, select:focus {
+ border: 1px solid #C5C8C6 !important;
+ box-shadow: initial !important;
+}
+
+div#advanced-search-container div#categories label{
+ background:none;
+ border: 1px solid #282a2e;
+}
+
+ul.nav li a {
+ border: 0 !important;
+ border-bottom: 1px solid #4d3f43 !important;
+}
+
+#categories *, .modal-wrapper * {
+ background:#1d1f21 none !important;
+ color:#D5D8D7 !important;
+}
+
+#categories *, {
+ border: 1px solid #3d3f43 !important;
+}
+
+#categories *:checked + label {
+ border-bottom: 4px solid #3d9f94 !important;
+}
+
+.result-content {
+ color:#B5B8B7 !important;
+}
+
+.external-link {
+ color:#35B887 !important;
+}
+
+.table-striped tr td, .table-striped tr th {
+ border-color: #4d3f43 !important;
+}
+
+.highlight {
+ background: #333333 !important;
+}
+
+/*nav*/
+.navbar{
+ background:#1d1f21 none;
+ border: none;
+}
+
+.navbar .active, .menu {
+ background: none !important;
+}
+
+.label-default {
+ background: none;
+ color: #BBB;
+}
+
+.navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus, .nav-tabs.nav-justified > .active > a{
+ background-color: #282a2e !important;
+
+}
+
+/*Search Page*/
+.result-default:hover, .result-code:hover, .result-torrent:hover, .result-videos:hover, .result-map:hover {
+ background-color: #222426;
+}
+
+/*buttons*/
+.btn {
+ color: #BBB;
+ background-color: #444 ;
+ border: 1px solid #282a2e;
+}
+
+.btn:hover {
+ color:#444 !important;
+ background-color: #BBB !important;
+}
+
+.btn-primary.active {
+ color: #C5C8C6;
+ background-color: #5F89AC;
+ border-color: #5F89AC;
+}
+
+/*Right Pannels*/
+.panel {
+ border: 1px solid #111;
+ background: none;
+}
+
+.panel-heading {
+ color: #C5C8C6 !important;
+ background: #282a2e !important;
+ border-bottom: none;
+}
+
+.panel-body {
+ color: #C5C8C6 !important;
+ background: #1d1f21 !important;
+ border-color: #111 !important;
+}
+
+p.btn.btn-default{
+ background: none;
+}
+
+.table-striped>tbody>tr:nth-child(odd)>td, .table-striped>tbody>tr:nth-child(odd)>th, .table-striped>thead>tr:nth-child(odd)>th {
+ background:#2d2f32 none !important;
+ color:#D5D8D7 !important;
+}
+
+.label-success {
+ background:#1d6f42 none !important;
+}
+
+.label-danger {
+ background:#ad1f12 none !important;
+}
+
+.searx-navbar {
+ background: #333334;
+ height: 2.3rem;
+ font-size: 1.3rem;
+ line-height: 1.3rem;
+ padding: 0.5rem;
+ font-weight: bold;
+ margin-bottom: 0.8rem;
+
+ a, a:hover {
+ margin-right: 2.0rem;
+ color: white;
+ text-decoration: none;
+ }
+
+ .instance a {
+ color: @light-green;
+ margin-left: 2.0rem;
+ }
+}
+
+#main-logo {
+ margin-top: 20vh;
+ margin-bottom: 25px;
+
+ & > img {
+ max-width: 350px;
+ width: 80%;
+ }
+}
+
+.onoffswitch-inner:before, .onoffswitch-inner:after {
+ background:#1d1f21 none !important;
+}
+
+.onoffswitch-switch, .onoffswitch-label {
+ border: 2px solid #3d3f43 !important;
+}
+
+.nav>li>a:hover, .nav>li>a:focus {
+ background-color: #3d3f43 !important;
+}
+
+/*Images search*/
+.img-thumbnail, .thumbnail {
+ padding: 0px;
+ line-height: 1.42857143;
+ background: none;
+ border: none;
+}
+
+.modal-content {
+ background:#1d1f21 none !important;
+}
+
+/*Preferences*/
+
+.table > thead > tr > td.danger, .table > tbody > tr > td.danger, .table > tfoot > tr > td.danger, .table > thead > tr > th.danger, .table > tbody > tr > th.danger, .table > tfoot > tr > th.danger, .table > thead > tr.danger > td, .table > tbody > tr.danger > td, .table > tfoot > tr.danger > td, .table > thead > tr.danger > th, .table > tbody > tr.danger > th, .table > tfoot > tr.danger > th {
+ background: RGBA(240, 0, 0, 0.56) !important;
+ color: #C5C8C6 !important;
+}
+
+.table-hover > tbody > tr > td.danger:hover, .table-hover > tbody > tr > th.danger:hover, .table-hover > tbody > tr.danger:hover > td, .table-hover > tbody > tr:hover > .danger, .table-hover > tbody > tr.danger:hover > th {
+ background: RGBA(237, 59, 59, 0.61) !important;
+ color: #C5C8C6 !important;
+}
+
+.table-hover > tbody > tr:hover > td, .table-hover > tbody > tr:hover > th {
+ background: rgb(102, 105, 110) !important;
+}
+
+.btn-success {
+ color: #C5C8C6;
+ background: #449d44;
+}
+
+.btn-danger {
+ color: #C5C8C6;
+ background: #d9534f;
+
+}
+
+.well {
+ background: #444;
+ border-color: #282a2e;
+}
+
+.highlight {
+ background-color: transparent !important;
+}
diff --git a/searx/static/themes/oscar/less/logicodev/advanced.less b/searx/static/themes/oscar/less/logicodev/advanced.less
new file mode 100644
index 0000000..4c3827b
--- /dev/null
+++ b/searx/static/themes/oscar/less/logicodev/advanced.less
@@ -0,0 +1,49 @@
+#advanced-search-container {
+ display: none;
+ text-align: left;
+ margin-bottom: 1rem;
+ clear: both;
+
+ label, .input-group-addon {
+ font-size: 1.2rem;
+ font-weight:normal;
+ background-color: white;
+ border: @mild-gray 1px solid;
+ border-right: none;
+ color: @dark-gray;
+ padding-bottom: 0.4rem;
+ padding-right: 0.7rem;
+ padding-left: 0.7rem;
+ }
+
+ label:last-child, .input-group-addon:last-child {
+ border-right: @mild-gray 1px solid;
+ }
+
+ input[type="radio"] {
+ display: none;
+ }
+
+ input[type="radio"]:checked + label{
+ color: @black;
+ font-weight: bold;
+ border-bottom: @light-green 5px solid;
+ }
+}
+
+#check-advanced {
+ display: none;
+}
+
+#check-advanced:checked ~ #advanced-search-container {
+ display: block;
+}
+
+.advanced {
+ padding: 0;
+ margin-top: 0.3rem;
+ text-align: right;
+ label, select {
+ cursor: pointer;
+ }
+}
diff --git a/searx/static/themes/oscar/less/logicodev/checkbox.less b/searx/static/themes/oscar/less/logicodev/checkbox.less
new file mode 100644
index 0000000..6428b36
--- /dev/null
+++ b/searx/static/themes/oscar/less/logicodev/checkbox.less
@@ -0,0 +1,9 @@
+// Hide element if checkbox is checked
+input[type=checkbox]:checked + .label_hide_if_checked, input[type=checkbox]:checked + .label_hide_if_not_checked + .label_hide_if_checked {
+ display:none;
+}
+
+// Hide element if checkbox is not checked
+input[type=checkbox]:not(:checked) + .label_hide_if_not_checked, input[type=checkbox]:not(:checked) + .label_hide_if_checked + .label_hide_if_not_checked {
+ display:none;
+}
diff --git a/searx/static/themes/oscar/less/logicodev/code.less b/searx/static/themes/oscar/less/logicodev/code.less
new file mode 100644
index 0000000..96486f5
--- /dev/null
+++ b/searx/static/themes/oscar/less/logicodev/code.less
@@ -0,0 +1,103 @@
+pre, code{
+ font-family: 'Ubuntu Mono', 'Courier New', 'Lucida Console', monospace !important;
+}
+
+.lineno{
+ margin-right: 5px;
+}
+
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #f8f8f8; }
+.highlight .c { color: #556366; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid @orange } /* Error */
+.highlight .k { color: #BE74D5; font-weight: bold } /* Keyword */
+.highlight .o { color: #D19A66 } /* Operator */
+.highlight .cm { color: #556366; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
+.highlight .c1 { color: #556366; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #556366; font-style: italic } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #BE74D5; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #BE74D5; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #BE74D5; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #BE74D5 } /* Keyword.Pseudo */
+.highlight .kr { color: #BE74D5; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #D46C72 } /* Keyword.Type */
+.highlight .m { color: #D19A66 } /* Literal.Number */
+.highlight .s { color: #86C372 } /* Literal.String */
+.highlight .na { color: #7D9029 } /* Name.Attribute */
+.highlight .nb { color: #BE74D5 } /* Name.Builtin */
+.highlight .nc { color: #61AFEF; font-weight: bold } /* Name.Class */
+.highlight .no { color: #D19A66 } /* Name.Constant */
+.highlight .nd { color: #AA22FF } /* Name.Decorator */
+.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #61AFEF } /* Name.Function */
+.highlight .nl { color: #A0A000 } /* Name.Label */
+.highlight .nn { color: #61AFEF; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #BE74D5; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #DFC06F } /* Name.Variable */
+.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #D7DAE0 } /* Text.Whitespace */
+.highlight .mf { color: #D19A66 } /* Literal.Number.Float */
+.highlight .mh { color: #D19A66 } /* Literal.Number.Hex */
+.highlight .mi { color: #D19A66 } /* Literal.Number.Integer */
+.highlight .mo { color: #D19A66 } /* Literal.Number.Oct */
+.highlight .sb { color: #86C372 } /* Literal.String.Backtick */
+.highlight .sc { color: #86C372 } /* Literal.String.Char */
+.highlight .sd { color: #86C372; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #86C372 } /* Literal.String.Double */
+.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #86C372 } /* Literal.String.Heredoc */
+.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.highlight .sx { color: #BE74D5 } /* Literal.String.Other */
+.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
+.highlight .s1 { color: #86C372 } /* Literal.String.Single */
+.highlight .ss { color: #DFC06F } /* Literal.String.Symbol */
+.highlight .bp { color: #BE74D5 } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #DFC06F } /* Name.Variable.Class */
+.highlight .vg { color: #DFC06F } /* Name.Variable.Global */
+.highlight .vi { color: #DFC06F } /* Name.Variable.Instance */
+.highlight .il { color: #D19A66 } /* Literal.Number.Integer.Long */
+
+.highlight .lineno {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ cursor: default;
+ color: #556366;
+
+ &::selection {
+ background: transparent; /* WebKit/Blink Browsers */
+ }
+ &::-moz-selection {
+ background: transparent; /* Gecko Browsers */
+ }
+}
+
+.highlight pre {
+ background-color: #282C34;
+ color: #D7DAE0;
+ border: none;
+ margin-bottom: 25px;
+ font-size: 15px;
+ padding: 20px 10px;
+}
+
+.highlight {
+ font-weight: 700;
+}
+
+
diff --git a/searx/static/themes/oscar/less/logicodev/cursor.less b/searx/static/themes/oscar/less/logicodev/cursor.less
new file mode 100644
index 0000000..cbc1ea6
--- /dev/null
+++ b/searx/static/themes/oscar/less/logicodev/cursor.less
@@ -0,0 +1,8 @@
+// display cursor
+.cursor-text {
+ cursor: text !important;
+}
+
+.cursor-pointer {
+ cursor: pointer !important;
+}
diff --git a/searx/static/themes/oscar/less/logicodev/footer.less b/searx/static/themes/oscar/less/logicodev/footer.less
new file mode 100644
index 0000000..d23a0cc
--- /dev/null
+++ b/searx/static/themes/oscar/less/logicodev/footer.less
@@ -0,0 +1,30 @@
+// Sticky footer styles
+*{
+ border-radius: 0 !important;
+}
+html {
+ position: relative;
+ min-height: 100%;
+ color: @black;
+}
+
+body {
+ /* Margin bottom by footer height */
+ font-family: 'Roboto', Helvetica, Arial, sans-serif;
+ margin-bottom: 80px;
+ background-color: white;
+
+ a{
+ color: @blue;
+ }
+}
+
+.footer {
+ position: absolute;
+ bottom: 0;
+ width: 100%;
+ /* Set the fixed height of the footer here */
+ height: 60px;
+ text-align: center;
+ color: #999;
+}
diff --git a/searx/static/themes/oscar/less/logicodev/infobox.less b/searx/static/themes/oscar/less/logicodev/infobox.less
new file mode 100644
index 0000000..0d488d7
--- /dev/null
+++ b/searx/static/themes/oscar/less/logicodev/infobox.less
@@ -0,0 +1,37 @@
+.infobox {
+
+ .panel-heading{
+ background-color: @dim-gray;
+
+ .panel-title{
+ font-weight: 700;
+ }
+ }
+
+
+ p{
+ font-family: "DejaVu Serif", Georgia, Cambria, "Times New Roman", Times, serif !important;
+ font-style: italic;
+ }
+
+ .btn{
+ background-color: @green;
+ border: none;
+
+ a{
+ color: white;
+ margin: 5px;
+ }
+ }
+
+ .infobox_part {
+ margin-bottom: 20px;
+ word-wrap: break-word;
+ table-layout: fixed;
+
+ }
+
+ .infobox_part:last-child {
+ margin-bottom: 0;
+ }
+}
diff --git a/searx/static/themes/oscar/less/logicodev/navbar.less b/searx/static/themes/oscar/less/logicodev/navbar.less
new file mode 100644
index 0000000..5da7115
--- /dev/null
+++ b/searx/static/themes/oscar/less/logicodev/navbar.less
@@ -0,0 +1,31 @@
+.searx-navbar {
+ background: @black;
+ height: 2.3rem;
+ font-size: 1.3rem;
+ line-height: 1.3rem;
+ padding: 0.5rem;
+ font-weight: bold;
+ margin-bottom: 0.8rem;
+
+ a, a:hover {
+ margin-right: 2.0rem;
+ color: white;
+ text-decoration: none;
+ }
+
+ .instance a {
+ color: @light-green;
+ margin-left: 2.0rem;
+ }
+}
+
+#main-logo {
+ margin-top: 20vh;
+ margin-bottom: 25px;
+
+ & > img {
+ max-width: 350px;
+ width: 80%;
+ }
+}
+
diff --git a/searx/static/themes/oscar/less/logicodev/onoff.less b/searx/static/themes/oscar/less/logicodev/onoff.less
new file mode 100644
index 0000000..f471892
--- /dev/null
+++ b/searx/static/themes/oscar/less/logicodev/onoff.less
@@ -0,0 +1,57 @@
+.onoff-checkbox {
+ width:15%;
+}
+.onoffswitch {
+ position: relative;
+ width: 110px;
+ -webkit-user-select:none;
+ -moz-user-select:none;
+ -ms-user-select: none;
+}
+.onoffswitch-checkbox {
+ display: none;
+}
+.onoffswitch-label {
+ display: block;
+ overflow: hidden;
+ cursor: pointer;
+ border: 2px solid #FFFFFF !important;
+ border-radius: 50px !important;
+}
+.onoffswitch-inner {
+ display: block;
+ transition: margin 0.3s ease-in 0s;
+}
+
+.onoffswitch-inner:before, .onoffswitch-inner:after {
+ display: block;
+ float: left;
+ width: 50%;
+ height: 30px;
+ padding: 0;
+ line-height: 40px;
+ font-size: 20px;
+ box-sizing: border-box;
+ content: "";
+ background-color: #EEEEEE;
+}
+
+.onoffswitch-switch {
+ display: block;
+ width: 37px;
+ background-color: @light-green;
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ right: 0px;
+ border: 2px solid #FFFFFF !important;
+ border-radius: 50px !important;
+ transition: all 0.3s ease-in 0s;
+}
+.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner {
+ margin-right: 0;
+}
+.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch {
+ right: 71px;
+ background-color: #A1A1A1;
+}
diff --git a/searx/static/themes/oscar/less/logicodev/oscar.less b/searx/static/themes/oscar/less/logicodev/oscar.less
new file mode 100644
index 0000000..da80d1e
--- /dev/null
+++ b/searx/static/themes/oscar/less/logicodev/oscar.less
@@ -0,0 +1,23 @@
+@import "variables.less";
+
+@import "navbar.less";
+
+@import "footer.less";
+
+@import "checkbox.less";
+
+@import "onoff.less";
+
+@import "results.less";
+
+@import "infobox.less";
+
+@import "search.less";
+
+@import "advanced.less";
+
+@import "cursor.less";
+
+@import "code.less";
+
+@import "preferences.less";
diff --git a/searx/static/themes/oscar/less/logicodev/preferences.less b/searx/static/themes/oscar/less/logicodev/preferences.less
new file mode 100644
index 0000000..9672d50
--- /dev/null
+++ b/searx/static/themes/oscar/less/logicodev/preferences.less
@@ -0,0 +1,3 @@
+.table > tbody > tr > td, .table > tbody > tr > th {
+ vertical-align: middle !important;
+}
diff --git a/searx/static/themes/oscar/less/logicodev/results.less b/searx/static/themes/oscar/less/logicodev/results.less
new file mode 100644
index 0000000..a64dc7d
--- /dev/null
+++ b/searx/static/themes/oscar/less/logicodev/results.less
@@ -0,0 +1,177 @@
+.result_header {
+ margin-top: 0px;
+ margin-bottom: 2px;
+ font-size: 16px;
+
+ .favicon {
+ margin-bottom:-3px;
+ }
+
+ a {
+ color: @black;
+ text-decoration: none;
+
+ &:hover{
+ color: @blue;
+ }
+
+ &:visited{
+ color: @violet;
+ }
+
+ .highlight {
+ background-color: @dim-gray;
+ // Chrome hack: bold is different size than normal
+ // https://stackoverflow.com/questions/20713988/weird-text-alignment-issue-in-css-when-bolded-lucida-sans
+ }
+ }
+}
+
+.result-content {
+ margin-top: 2px;
+ margin-bottom: 0;
+ word-wrap: break-word;
+ color: @dark-gray;
+ font-size: 13px;
+
+
+ .highlight {
+ font-weight:bold;
+ }
+
+}
+
+.external-link {
+ color: @dark-green;
+ font-size: 12px;
+ margin-bottom: 15px;
+
+ a {
+ margin-right: 3px;
+ }
+}
+
+// default formating of results
+.result-default, .result-code, .result-torrent, .result-videos, .result-map {
+ clear: both;
+ padding: 2px 4px;
+ &:hover{
+ background-color: @dim-gray;
+ }
+}
+
+
+// image formating of results
+.result-images {
+ float: left !important;
+ width: 24%;
+ margin: .5%;
+ a {
+ display: block;
+ width: 100%;
+ background-size: cover;
+ }
+}
+
+.img-thumbnail {
+ margin: 5px;
+ max-height: 128px;
+ min-height: 128px;
+}
+
+// video formating of results
+.result-videos {
+ clear: both;
+
+ hr{
+ margin: 5px 0 15px 0;
+ }
+
+ .collapse{
+ width: 100%;
+ }
+
+ .in{
+ margin-bottom: 8px;
+ }
+}
+
+// torrent formating of results
+.result-torrent {
+ clear: both;
+
+ b{
+ margin-right: 5px;
+ margin-left: 5px;
+ }
+
+ .seeders{
+ color: @green;
+ }
+
+ .leechers{
+ color: @red;
+ }
+}
+
+// map formating of results
+.result-map {
+ clear: both;
+}
+
+// code formating of results
+.result-code {
+ clear: both;
+
+ .code-fork, .code-fork a{
+ color: @dark-gray;
+ }
+
+}
+
+// suggestion
+.suggestion_item {
+ margin: 2px 5px;
+ max-width: 100%;
+
+ .btn {
+ max-width: 100%;
+ white-space: normal;
+ word-wrap: break-word;
+ text-align: left;
+ }
+}
+
+// download result
+.result_download {
+ margin-right: 5px;
+}
+
+// page forward, backward
+#pagination {
+ margin-top: 30px;
+ padding-bottom: 60px;
+}
+
+.label-default {
+ color: @gray;
+ background: transparent;
+}
+
+.result .text-muted small {
+ word-wrap: break-word;
+}
+
+.modal-wrapper {
+ box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
+}
+
+.modal-wrapper {
+ background-clip: padding-box;
+ background-color: #fff;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ border-radius: 6px;
+ box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
+ outline: 0 none;
+ position: relative;
+}
diff --git a/searx/static/themes/oscar/less/logicodev/search.less b/searx/static/themes/oscar/less/logicodev/search.less
new file mode 100644
index 0000000..d65e305
--- /dev/null
+++ b/searx/static/themes/oscar/less/logicodev/search.less
@@ -0,0 +1,80 @@
+.search_categories, #categories {
+ text-transform: capitalize;
+ margin-bottom: 0.5rem;
+ display: flex;
+ flex-wrap: wrap;
+ flex-flow: row wrap;
+ align-content: stretch;
+
+ label, .input-group-addon {
+ flex-grow: 1;
+ flex-basis: auto;
+ font-size: 1.2rem;
+ font-weight: normal;
+ background-color: white;
+ border: @mild-gray 1px solid;
+ border-right: none;
+ color: @dark-gray;
+ padding-bottom: 0.4rem;
+ padding-top: 0.4rem;
+ text-align: center;
+ min-width: 50px;
+ }
+ label:last-child, .input-group-addon:last-child {
+ border-right: @mild-gray 1px solid;
+ }
+
+ input[type="checkbox"]:checked + label {
+ color: @black;
+ font-weight: bold;
+ border-bottom: @light-green 5px solid;
+ }
+}
+
+#main-logo{
+ margin-top: 10vh;
+ margin-bottom: 25px;
+}
+
+#main-logo > img {
+ max-width: 350px;
+ width: 80%;
+}
+
+#q{
+ box-shadow: none;
+ border-right: none;
+ border-color: @gray;
+}
+
+ #search_form .input-group-btn .btn{
+ border-color: @gray;
+ }
+
+ #search_form .input-group-btn .btn:hover{
+ background-color: @green;
+ color: white;
+ }
+
+.custom-select {
+ appearance: none;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ font-size: 1.2rem;
+ font-weight:normal;
+ background-color: white;
+ border: @mild-gray 1px solid;
+ color: @dark-gray;
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAQAAACR313BAAAABGdBTUEAALGPC/xhBQAAACBjSFJN
+AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAJcEhZ
+cwAABFkAAARZAVnbJUkAAAAHdElNRQfgBxgLDwB20OFsAAAAbElEQVQY073OsQ3CMAAEwJMYwJGn
+sAehpoXJItltBkmcdZBYgIIiQoLglnz3ui+eP+bk5uneteTMZJa6OJuIqvYzSJoqwqBq8gdmTTW8
+6/dghxAUq4xsVYT9laBYXCw93Aajh7GPEF23t4fkBYevGFTANkPRAAAAJXRFWHRkYXRlOmNyZWF0
+ZQAyMDE2LTA3LTI0VDExOjU1OjU4KzAyOjAwRFqFOQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNi0w
+Ny0yNFQxMToxNTowMCswMjowMP7RDgQAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb
+7jwaAAAAAElFTkSuQmCC) 96% no-repeat;
+}
+
+.search-margin {
+ margin-bottom: 0.6em;
+} \ No newline at end of file
diff --git a/searx/static/themes/oscar/less/logicodev/variables.less b/searx/static/themes/oscar/less/logicodev/variables.less
new file mode 100644
index 0000000..5966ee6
--- /dev/null
+++ b/searx/static/themes/oscar/less/logicodev/variables.less
@@ -0,0 +1,13 @@
+@black: #29314D;
+@gray: #A4A4A4;
+@dim-gray: #F6F9FA;
+@dark-gray: #666;
+@middle-gray: #F5F5F5;
+@mild-gray: #DDD;
+@blue: #0088CC;
+@red: #F35E77;
+@violet: #684898;
+@dark-green: #069025;
+@green: #2ecc71;
+@light-green: #01D7D4;
+@orange: #FFA92F;
diff --git a/searx/static/themes/oscar/less/pointhi/advanced.less b/searx/static/themes/oscar/less/pointhi/advanced.less
new file mode 100644
index 0000000..23bfdb0
--- /dev/null
+++ b/searx/static/themes/oscar/less/pointhi/advanced.less
@@ -0,0 +1,49 @@
+#advanced-search-container {
+ display: none;
+ text-align: center;
+ margin-bottom: 1rem;
+ clear: both;
+
+ label, .input-group-addon {
+ font-size: 1.3rem;
+ font-weight:normal;
+ background-color: white;
+ border: #DDD 1px solid;
+ border-right: none;
+ color: #333;
+ padding-bottom: 0.8rem;
+ padding-left: 1.2rem;
+ padding-right: 1.2rem;
+ }
+
+ label:last-child, .input-group-addon:last-child {
+ border-right: #DDD 1px solid;
+ }
+
+ input[type="radio"] {
+ display: none;
+ }
+
+ input[type="radio"]:checked + label {
+ color: black;
+ font-weight: bold;
+ background-color: #EEE;
+ }
+}
+
+#check-advanced {
+ display: none;
+}
+
+#check-advanced:checked ~ #advanced-search-container {
+ display: block;
+}
+
+.advanced {
+ padding: 0;
+ margin-top: 0.3rem;
+ text-align: right;
+ label, select {
+ cursor: pointer;
+ }
+}
diff --git a/searx/static/themes/oscar/less/pointhi/checkbox.less b/searx/static/themes/oscar/less/pointhi/checkbox.less
new file mode 100644
index 0000000..6428b36
--- /dev/null
+++ b/searx/static/themes/oscar/less/pointhi/checkbox.less
@@ -0,0 +1,9 @@
+// Hide element if checkbox is checked
+input[type=checkbox]:checked + .label_hide_if_checked, input[type=checkbox]:checked + .label_hide_if_not_checked + .label_hide_if_checked {
+ display:none;
+}
+
+// Hide element if checkbox is not checked
+input[type=checkbox]:not(:checked) + .label_hide_if_not_checked, input[type=checkbox]:not(:checked) + .label_hide_if_checked + .label_hide_if_not_checked {
+ display:none;
+}
diff --git a/searx/static/themes/oscar/less/pointhi/code.less b/searx/static/themes/oscar/less/pointhi/code.less
new file mode 100644
index 0000000..90a2cd6
--- /dev/null
+++ b/searx/static/themes/oscar/less/pointhi/code.less
@@ -0,0 +1,79 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #f8f8f8; }
+.highlight .c { color: #408080; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { color: #008000; font-weight: bold } /* Keyword */
+.highlight .o { color: #666666 } /* Operator */
+.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
+.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #008000 } /* Keyword.Pseudo */
+.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #B00040 } /* Keyword.Type */
+.highlight .m { color: #666666 } /* Literal.Number */
+.highlight .s { color: #BA2121 } /* Literal.String */
+.highlight .na { color: #7D9029 } /* Name.Attribute */
+.highlight .nb { color: #008000 } /* Name.Builtin */
+.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.highlight .no { color: #880000 } /* Name.Constant */
+.highlight .nd { color: #AA22FF } /* Name.Decorator */
+.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #0000FF } /* Name.Function */
+.highlight .nl { color: #A0A000 } /* Name.Label */
+.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #19177C } /* Name.Variable */
+.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mf { color: #666666 } /* Literal.Number.Float */
+.highlight .mh { color: #666666 } /* Literal.Number.Hex */
+.highlight .mi { color: #666666 } /* Literal.Number.Integer */
+.highlight .mo { color: #666666 } /* Literal.Number.Oct */
+.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
+.highlight .sc { color: #BA2121 } /* Literal.String.Char */
+.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
+.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.highlight .sx { color: #008000 } /* Literal.String.Other */
+.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
+.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
+.highlight .ss { color: #19177C } /* Literal.String.Symbol */
+.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #19177C } /* Name.Variable.Class */
+.highlight .vg { color: #19177C } /* Name.Variable.Global */
+.highlight .vi { color: #19177C } /* Name.Variable.Instance */
+.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
+
+.highlight .lineno {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ cursor: default;
+
+ &::selection {
+ background: transparent; /* WebKit/Blink Browsers */
+ }
+ &::-moz-selection {
+ background: transparent; /* Gecko Browsers */
+ }
+}
diff --git a/searx/static/themes/oscar/less/pointhi/cursor.less b/searx/static/themes/oscar/less/pointhi/cursor.less
new file mode 100644
index 0000000..cbc1ea6
--- /dev/null
+++ b/searx/static/themes/oscar/less/pointhi/cursor.less
@@ -0,0 +1,8 @@
+// display cursor
+.cursor-text {
+ cursor: text !important;
+}
+
+.cursor-pointer {
+ cursor: pointer !important;
+}
diff --git a/searx/static/themes/oscar/less/pointhi/footer.less b/searx/static/themes/oscar/less/pointhi/footer.less
new file mode 100644
index 0000000..0b25e73
--- /dev/null
+++ b/searx/static/themes/oscar/less/pointhi/footer.less
@@ -0,0 +1,19 @@
+// Sticky footer styles
+
+html {
+ position: relative;
+ min-height: 100%;
+}
+
+body {
+ /* Margin bottom by footer height */
+ margin-bottom: 80px;
+}
+
+.footer {
+ position: absolute;
+ bottom: 0;
+ width: 100%;
+ /* Set the fixed height of the footer here */
+ height: 60px;
+}
diff --git a/searx/static/themes/oscar/less/pointhi/infobox.less b/searx/static/themes/oscar/less/pointhi/infobox.less
new file mode 100644
index 0000000..41375f2
--- /dev/null
+++ b/searx/static/themes/oscar/less/pointhi/infobox.less
@@ -0,0 +1,11 @@
+.infobox {
+ .infobox_part {
+ margin-bottom: 20px;
+ word-wrap: break-word;
+ table-layout: fixed;
+ }
+
+ .infobox_part:last-child {
+ margin-bottom: 0;
+ }
+}
diff --git a/searx/static/themes/oscar/less/pointhi/navbar.less b/searx/static/themes/oscar/less/pointhi/navbar.less
new file mode 100644
index 0000000..a057f82
--- /dev/null
+++ b/searx/static/themes/oscar/less/pointhi/navbar.less
@@ -0,0 +1,20 @@
+.searx-navbar {
+ background: #eee;
+ color: #aaa;
+ height: 2.3rem;
+ font-size: 1.3rem;
+ line-height: 1.3rem;
+ padding: 0.5rem;
+ font-weight: bold;
+ margin-bottom: 1.3rem;
+
+ a, a:hover {
+ margin-right: 2.0rem;
+ text-decoration: none;
+ }
+
+ .instance a {
+ color: #444;
+ margin-left: 2.0rem;
+ }
+}
diff --git a/searx/static/themes/oscar/less/pointhi/onoff.less b/searx/static/themes/oscar/less/pointhi/onoff.less
new file mode 100644
index 0000000..72b289a
--- /dev/null
+++ b/searx/static/themes/oscar/less/pointhi/onoff.less
@@ -0,0 +1,57 @@
+.onoff-checkbox {
+ width:15%;
+}
+.onoffswitch {
+ position: relative;
+ width: 110px;
+ -webkit-user-select:none;
+ -moz-user-select:none;
+ -ms-user-select: none;
+}
+.onoffswitch-checkbox {
+ display: none;
+}
+.onoffswitch-label {
+ display: block;
+ overflow: hidden;
+ cursor: pointer;
+ border: 2px solid #FFFFFF !important;
+ border-radius: 50px !important;
+}
+.onoffswitch-inner {
+ display: block;
+ transition: margin 0.3s ease-in 0s;
+}
+
+.onoffswitch-inner:before, .onoffswitch-inner:after {
+ display: block;
+ float: left;
+ width: 50%;
+ height: 30px;
+ padding: 0;
+ line-height: 40px;
+ font-size: 20px;
+ box-sizing: border-box;
+ content: "";
+ background-color: #EEEEEE;
+}
+
+.onoffswitch-switch {
+ display: block;
+ width: 37px;
+ background-color: #00CC00;
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ right: 0px;
+ border: 2px solid #FFFFFF !important;
+ border-radius: 50px !important;
+ transition: all 0.3s ease-in 0s;
+}
+.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner {
+ margin-right: 0;
+}
+.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch {
+ right: 71px;
+ background-color: #A1A1A1;
+}
diff --git a/searx/static/themes/oscar/less/pointhi/oscar.less b/searx/static/themes/oscar/less/pointhi/oscar.less
new file mode 100644
index 0000000..fc1c525
--- /dev/null
+++ b/searx/static/themes/oscar/less/pointhi/oscar.less
@@ -0,0 +1,21 @@
+@import "footer.less";
+
+@import "checkbox.less";
+
+@import "onoff.less";
+
+@import "results.less";
+
+@import "infobox.less";
+
+@import "search.less";
+
+@import "advanced.less";
+
+@import "cursor.less";
+
+@import "code.less";
+
+@import "navbar.less";
+
+@import "preferences.less";
diff --git a/searx/static/themes/oscar/less/pointhi/preferences.less b/searx/static/themes/oscar/less/pointhi/preferences.less
new file mode 100644
index 0000000..9672d50
--- /dev/null
+++ b/searx/static/themes/oscar/less/pointhi/preferences.less
@@ -0,0 +1,3 @@
+.table > tbody > tr > td, .table > tbody > tr > th {
+ vertical-align: middle !important;
+}
diff --git a/searx/static/themes/oscar/less/pointhi/results.less b/searx/static/themes/oscar/less/pointhi/results.less
new file mode 100644
index 0000000..13266c0
--- /dev/null
+++ b/searx/static/themes/oscar/less/pointhi/results.less
@@ -0,0 +1,109 @@
+
+.result_header {
+ margin-bottom:5px;
+ margin-top:20px;
+
+ .favicon {
+ margin-bottom:-3px;
+ }
+
+ a {
+ vertical-align: bottom;
+
+ .highlight {
+ font-weight:bold;
+ }
+ }
+}
+
+.result-content {
+ margin-top: 5px;
+ word-wrap: break-word;
+
+ .highlight {
+ font-weight:bold;
+ }
+}
+
+// default formating of results
+.result-default {
+ clear: both;
+}
+
+// image formating of results
+.result-images {
+ float: left !important;
+ height: 138px;
+}
+
+.img-thumbnail {
+ margin: 5px;
+ max-height: 128px;
+}
+
+// video formating of results
+.result-videos {
+ clear: both;
+}
+
+// torrent formating of results
+.result-torrents {
+ clear: both;
+}
+
+// map formating of results
+.result-map {
+ clear: both;
+}
+
+// code formating of results
+.result-code {
+ clear: both;
+}
+
+// suggestion
+.suggestion_item {
+ margin: 2px 5px;
+ max-width: 100%;
+
+ .btn {
+ max-width: 100%;
+ white-space: normal;
+ word-wrap: break-word;
+ text-align: left;
+ }
+}
+
+// download result
+.result_download {
+ margin-right: 5px;
+}
+
+// page forward, backward
+#pagination {
+ margin-top: 30px;
+ padding-bottom: 50px;
+}
+
+.label-default {
+ color: #AAA;
+ background: #FFF;
+}
+
+.result .text-muted small {
+ word-wrap: break-word;
+}
+
+.modal-wrapper {
+ box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
+}
+
+.modal-wrapper {
+ background-clip: padding-box;
+ background-color: #fff;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ border-radius: 6px;
+ box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
+ outline: 0 none;
+ position: relative;
+}
diff --git a/searx/static/themes/oscar/less/pointhi/search.less b/searx/static/themes/oscar/less/pointhi/search.less
new file mode 100644
index 0000000..5ff7336
--- /dev/null
+++ b/searx/static/themes/oscar/less/pointhi/search.less
@@ -0,0 +1,33 @@
+.search_categories, #categories {
+ text-transform: capitalize;
+ margin-bottom: 1.5rem;
+ margin-top: 1.5rem;
+ display: flex;
+ flex-wrap: wrap;
+ align-content: stretch;
+
+ label, .input-group-addon {
+ flex-grow: 1;
+ flex-basis: auto;
+ font-size: 1.3rem;
+ font-weight: normal;
+ background-color: white;
+ border: #DDD 1px solid;
+ border-right: none;
+ color: #333;
+ padding-bottom: 0.8rem;
+ padding-top: 0.8rem;
+ text-align: center;
+ min-width: 50px;
+ }
+
+ label:last-child, .input-group-addon:last-child {
+ border-right: #DDD 1px solid;
+ }
+
+ input[type="checkbox"]:checked + label{
+ color: black;
+ font-weight: bold;
+ background-color: #EEE;
+ }
+}
diff --git a/searx/static/themes/oscar/package.json b/searx/static/themes/oscar/package.json
new file mode 100644
index 0000000..7eae9df
--- /dev/null
+++ b/searx/static/themes/oscar/package.json
@@ -0,0 +1,16 @@
+{
+ "devDependencies": {
+ "grunt": "~0.4.5",
+ "grunt-contrib-uglify": "~0.6.0",
+ "grunt-contrib-watch" : "~0.6.1",
+ "grunt-contrib-concat" : "~0.5.0",
+ "grunt-contrib-jshint" : "~0.10.0",
+ "grunt-contrib-less" : "~0.11.0"
+ },
+
+ "scripts": {
+ "build": "npm install && grunt",
+ "start": "grunt watch",
+ "test": "grunt"
+ }
+}
diff --git a/searx/static/themes/pix-art/img/favicon.png b/searx/static/themes/pix-art/img/favicon.png
new file mode 100644
index 0000000..3818d3d
--- /dev/null
+++ b/searx/static/themes/pix-art/img/favicon.png
Binary files differ
diff --git a/searx/static/themes/pix-art/img/preference-icon-pixel.png b/searx/static/themes/pix-art/img/preference-icon-pixel.png
new file mode 100644
index 0000000..424e01e
--- /dev/null
+++ b/searx/static/themes/pix-art/img/preference-icon-pixel.png
Binary files differ
diff --git a/searx/static/themes/pix-art/img/search-icon-pixel.png b/searx/static/themes/pix-art/img/search-icon-pixel.png
new file mode 100644
index 0000000..8235882
--- /dev/null
+++ b/searx/static/themes/pix-art/img/search-icon-pixel.png
Binary files differ
diff --git a/searx/static/themes/pix-art/img/searx-pixel-small.png b/searx/static/themes/pix-art/img/searx-pixel-small.png
new file mode 100644
index 0000000..75b476c
--- /dev/null
+++ b/searx/static/themes/pix-art/img/searx-pixel-small.png
Binary files differ
diff --git a/searx/static/themes/pix-art/img/searx-pixel.png b/searx/static/themes/pix-art/img/searx-pixel.png
new file mode 100644
index 0000000..6aee581
--- /dev/null
+++ b/searx/static/themes/pix-art/img/searx-pixel.png
Binary files differ
diff --git a/searx/static/themes/pix-art/js/searx.js b/searx/static/themes/pix-art/js/searx.js
new file mode 100644
index 0000000..5eb0af9
--- /dev/null
+++ b/searx/static/themes/pix-art/js/searx.js
@@ -0,0 +1,141 @@
+if(searx.autocompleter) {
+ window.addEvent('domready', function() {
+ new Autocompleter.Request.JSON('q', '/autocompleter', {
+ postVar:'q',
+ postData:{
+ 'format': 'json'
+ },
+ ajaxOptions:{
+ timeout: 5 // Correct option?
+ },
+ 'minLength': 4,
+ 'selectMode': false,
+ cache: true,
+ delay: 300
+ });
+ });
+}
+
+(function (w, d) {
+ 'use strict';
+ function addListener(el, type, fn) {
+ if (el.addEventListener) {
+ el.addEventListener(type, fn, false);
+ } else {
+ el.attachEvent('on' + type, fn);
+ }
+ }
+
+ function placeCursorAtEnd() {
+ if (this.setSelectionRange) {
+ var len = this.value.length * 2;
+ this.setSelectionRange(len, len);
+ }
+ }
+
+ addListener(w, 'load', function () {
+ var qinput = d.getElementById('q');
+ if (qinput !== null && qinput.value === "") {
+ addListener(qinput, 'focus', placeCursorAtEnd);
+ qinput.focus();
+ }
+ });
+
+ if (!!('ontouchstart' in window)) {
+ document.getElementsByTagName("html")[0].className += " touch";
+ }
+
+})(window, document);
+
+var xmlHttp
+
+function GetXmlHttpObject(){
+
+ var xmlHttp = null;
+
+ try {
+ // Firefox, Opera 8.0+, Safari
+ xmlHttp = new XMLHttpRequest();
+ }
+ catch (e) {
+ // Internet Explorer
+ try {
+ xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
+ }
+ catch (e){
+ xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
+ }
+ }
+ return xmlHttp;
+}
+
+var timer;
+
+// Load more results
+function load_more(query,page){
+
+ xmlHttp = GetXmlHttpObject();
+ clearTimeout(timer);
+
+ if(xmlHttp == null){
+ alert ("Your browser does not support AJAX!");
+ return;
+ }
+
+ favicons[page] = [];
+
+ xmlHttp.onreadystatechange = function(){
+
+ var loader = document.getElementById('load_more');
+
+ // If 4, response OK
+ if (xmlHttp.readyState == 4){
+
+ var res = xmlHttp.responseText;
+
+ clearTimeout(timer);
+ timer = setTimeout(function(){},6000);
+
+ var results = document.getElementById('results_list');
+
+ var newNode = document.createElement('span');
+ newNode.innerHTML = res;
+ results_list.appendChild(newNode);
+
+ var scripts = newNode.getElementsByTagName('script');
+ for (var ix = 0; ix < scripts.length; ix++) {
+ eval(scripts[ix].text);
+ }
+
+ load_images(page);
+ document.getElementById("load_more").onclick = function() { load_more(query, (page+1)); }
+ loader.removeAttribute("disabled");
+
+ } else {
+ loader.disabled = 'disabled';
+ }
+ }
+ var url = "/";
+ var params = "q="+query+"&pageno="+page+"&category_general=1&category_files=1&category_images=1&category_it=1&category_map=1&category_music=1&category_news=1&category_social+media=1&category_videos=1";
+ xmlHttp.open("POST",url,true);
+ xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
+ xmlHttp.setRequestHeader("Content-length", params.length);
+ xmlHttp.setRequestHeader("Connection", "close");
+ xmlHttp.send(params);
+}
+
+// Load the images on the canvas in the page
+function load_images(page){
+ var arrayLength = favicons[page].length;
+ for (var i = 1; i < arrayLength+1; i++) {
+ var img = new Image();
+ img.setAttribute("i",i)
+ img.onload = function () {
+ var id = 'canvas-'+page+'-'+this.getAttribute("i");
+ var can = document.getElementById(id);
+ var ctx = can.getContext("2d");
+ ctx.drawImage(this, 0, 0, 16, 16);
+ };
+ img.src = favicons[page][i];
+ }
+} \ No newline at end of file
diff --git a/searx/static/themes/pix-art/less/definitions.less b/searx/static/themes/pix-art/less/definitions.less
new file mode 100644
index 0000000..0ac0cc9
--- /dev/null
+++ b/searx/static/themes/pix-art/less/definitions.less
@@ -0,0 +1,119 @@
+/*
+ * searx, A privacy-respecting, hackable metasearch engine
+ *
+ * To change the colors of the site, simple edit this variables
+ */
+
+/// Basic Colors
+
+@color-base: #3498DB;
+@color-base-dark: #2980B9;
+@color-base-light: #ECF0F1;
+@color-highlight: #094089;
+@color-black: #000000;
+
+/// General
+
+@color-font: #444;
+@color-font-light: #888;
+
+@color-red: #C0392B;
+
+@color-url-font: #1a11be;
+@color-url-visited-font: #8E44AD;
+@results-width: 50em;
+
+
+/// Start-Screen
+
+// hmarg
+@color-hmarg-border: @color-base;
+@color-hmarg-font: @color-base;
+@color-hmarg-font-hover: @color-base;
+
+
+/// Search-Input
+
+@color-search-border: @color-base;
+@color-search-background: #FFF;
+@color-search-font: #222;
+
+/// Autocompleter
+
+@color-autocompleter-choices-background: #FFF;
+@color-autocompleter-choices-border: @color-base;
+@color-autocompleter-choices-border-left-right: @color-base;
+@color-autocompleter-choices-border-bottom: @color-base;
+
+@color-autocompleter-choices-font: #444;
+
+/// Answers
+@color-answers-border: @color-base-dark;
+
+// Selected
+@color-autocompleter-selected-background: #444;
+@color-autocompleter-selected-font: #FFF;
+@color-autocompleter-selected-queried-font: #9FCFFF;
+
+/// Categories
+
+@color-categories-item-selected: @color-base;
+@color-categories-item-selected-font: #FFF;
+
+@color-categories-item-border-selected: @color-base-dark;
+@color-categories-item-border-unselected: #E8E7E6;
+@color-categories-item-border-unselected-hover: @color-base;
+
+
+/// Results
+
+@color-suggestions-button-background: @color-base;
+@color-suggestions-button-font: #FFF;
+
+@color-download-button-background: @color-base;
+@color-download-button-font: #FFF;
+
+@color-result-search-background: @color-base-light;
+
+@color-result-definition-border: gray;
+@color-result-torrent-border: lightgray;
+@color-result-top-border: #E8E7E6;
+
+// Link to result
+@color-result-link-font: @color-base-dark;
+@color-result-link-visited-font: @color-url-visited-font;
+
+// Url to result
+@color-result-url-font: @color-red;
+
+// Publish Date
+@color-result-publishdate-font: @color-font-light;
+
+// Images
+@color-result-image-span-background-hover: rgba(0, 0, 0, 0.6);
+@color-result-image-span-font: #FFF;
+
+// Search-URL
+@color-result-search-url-border: #888;
+@color-result-search-url-font: #444;
+
+
+/// Settings
+
+@color-settings-fieldset: @color-base;
+@color-settings-tr-hover: #DDD;
+
+// Labels
+@color-settings-label-allowed-background: #E74C3C;
+@color-settings-label-allowed-font: #FFF;
+
+@color-settings-label-deny-background: #2ECC71;
+@color-settings-label-deny-font: @color-font;
+
+@color-settings-return-background: @color-base;
+@color-settings-return-font: #FFF;
+
+/// Other
+
+@color-engines-font: @color-font-light;
+@color-percentage-div-background: #444;
diff --git a/searx/static/themes/pix-art/less/mixins.less b/searx/static/themes/pix-art/less/mixins.less
new file mode 100644
index 0000000..dbccce6
--- /dev/null
+++ b/searx/static/themes/pix-art/less/mixins.less
@@ -0,0 +1,27 @@
+/*
+ * searx, A privacy-respecting, hackable metasearch engine
+ */
+
+// Mixins
+
+.text-size-adjust (@property: 100%) {
+ -webkit-text-size-adjust: @property;
+ -ms-text-size-adjust: @property;
+ -moz-text-size-adjust: @property;
+ text-size-adjust: @property;
+}
+
+.rounded-corners (@radius: 4px) {
+ -webkit-border-radius: @radius;
+ -moz-border-radius: @radius;
+ border-radius: @radius;
+}
+
+.user-select () {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
diff --git a/searx/static/themes/pix-art/less/search.less b/searx/static/themes/pix-art/less/search.less
new file mode 100644
index 0000000..f5ac33e
--- /dev/null
+++ b/searx/static/themes/pix-art/less/search.less
@@ -0,0 +1,57 @@
+/*
+ * searx, A privacy-respecting, hackable metasearch engine
+ */
+
+.search {
+ padding: 0;
+ margin: 0;
+}
+
+#search_wrapper {
+ position: relative;
+ width: @results-width;
+ padding: 10px;
+}
+
+.center #search_wrapper {
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.q {
+ background: none repeat scroll 0 0 @color-search-background;
+ border: 1px solid @color-search-border;
+ color: @color-search-font;
+ font-size: 16px;
+ font-family: "Courier New", Courier, monospace;
+ height: 28px;
+ margin: 0;
+ outline: medium none;
+ padding: 2px;
+ padding-left: 8px;
+ padding-right: 0px !important;
+ width: 100%;
+ z-index: 2;
+}
+
+#search_submit {
+ position: absolute;
+ top: 15px;
+ right: 5px;
+ padding: 0;
+ border: 0;
+ background: url('../img/search-icon-pixel.png') no-repeat;
+ background-size: 24px 24px;
+ opacity: 0.8;
+ width: 24px;
+ height: 24px;
+ font-size: 0;
+}
+
+@media screen and (max-width: @results-width) {
+ #search_wrapper {
+ width: 90%;
+ clear:both;
+ overflow: hidden
+ }
+}
diff --git a/searx/static/themes/pix-art/less/style.less b/searx/static/themes/pix-art/less/style.less
new file mode 100644
index 0000000..a2088e9
--- /dev/null
+++ b/searx/static/themes/pix-art/less/style.less
@@ -0,0 +1,451 @@
+/*
+ * searx, A privacy-respecting, hackable metasearch engine
+ *
+ * To convert "style.less" to "style.css" run: $make styles
+ */
+
+@import "definitions.less";
+
+@import "mixins.less";
+
+
+// Main LESS-Code
+
+html {
+ font-family: "Courier New", Courier, monospace;
+ font-size: 0.9em;
+ .text-size-adjust;
+ color: @color-font;
+ padding: 0;
+ margin: 0;
+}
+
+body, #container {
+ padding: 0;
+ margin: 0;
+}
+
+canvas {
+ image-rendering: optimizeSpeed;
+ image-rendering: -moz-crisp-edges;
+ image-rendering: -webkit-optimize-contrast;
+ image-rendering: optimize-contrast;
+ image-rendering: pixelated;
+ -ms-interpolation-mode: nearest-neighbor;
+ width:32px;
+ height:32px;
+}
+
+#container {
+ width: 100%;
+ position: absolute;
+ top: 0;
+}
+
+// Search-Field
+
+@import "search.less";
+
+.row {
+ max-width: 800px;
+ margin: 20px auto;
+ text-align: justify;
+
+ h1 {
+ font-size: 3em;
+ margin-top: 50px;
+ }
+
+ p {
+ padding: 0 10px;
+ max-width: 700px;
+ }
+
+ h3,ul {
+ margin: 4px 8px;
+ }
+}
+
+.hmarg {
+ margin: 0 20px;
+ border: 1px solid @color-hmarg-border;
+ padding: 4px 10px;
+}
+
+a {
+ &:link.hmarg {
+ color: @color-hmarg-font;
+ }
+
+ &:visited.hmarg {
+ color: @color-hmarg-font;
+ }
+
+ &:active.hmarg {
+ color: @color-hmarg-font-hover;
+ }
+
+ &:hover.hmarg {
+ color: @color-hmarg-font-hover;
+ }
+}
+
+.top_margin {
+ margin-top: 60px;
+}
+
+.center {
+ text-align: center;
+}
+
+h1 {
+ font-size: 5em;
+}
+
+div.title {
+ background: url('../img/searx-pixel.png') no-repeat;
+ width: 100%;
+ min-height: 80px;
+ background-position: center;
+
+ h1 {
+ visibility: hidden;
+ }
+}
+
+input[type="button"],
+input[type="submit"] {
+ font-family: "Courier New", Courier, monospace;
+ padding: 4px 12px;
+ margin: 2px 4px;
+ display: inline-block;
+ background: @color-download-button-background;
+ color: @color-download-button-font;
+ .rounded-corners;
+ border: 0;
+ cursor: pointer;
+}
+
+input[type="button"]:disabled {
+ cursor: progress;
+}
+
+input[type="checkbox"] {
+ visibility: hidden;
+}
+
+fieldset {
+ margin: 8px;
+ border: 1px solid @color-settings-fieldset;
+}
+
+#logo {
+ position: absolute;
+ top: 13px;
+ left: 10px;
+}
+
+#categories {
+ margin: 0 10px;
+ .user-select;
+}
+
+.checkbox_container {
+ display: inline-block;
+ position: relative;
+ margin: 0 3px;
+ padding: 0px;
+
+ input {
+ display: none;
+ }
+}
+
+.checkbox_container label, .engine_checkbox label {
+ cursor: pointer;
+ padding: 4px 10px;
+ margin: 0;
+ display: block;
+ text-transform: capitalize;
+ .user-select;
+}
+
+.checkbox_container input[type="checkbox"]:checked + label {
+ background: @color-categories-item-selected;
+ color: @color-categories-item-selected-font;
+}
+
+.engine_checkbox {
+ padding: 4px;
+}
+
+label {
+ &.allow {
+ background: @color-settings-label-allowed-background;
+ padding: 4px 8px;
+ color: @color-settings-label-allowed-font;
+ display: none;
+ }
+
+ &.deny {
+ background: @color-settings-label-deny-background;
+ padding: 4px 8px;
+ color: @color-settings-label-deny-font;
+ display: inline;
+ }
+}
+
+.engine_checkbox input[type="checkbox"]:checked + label {
+ &:nth-child(2) + label {
+ display: none;
+ }
+
+ &.allow {
+ display: inline;
+ }
+}
+
+a {
+ text-decoration: none;
+ color: @color-url-font;
+
+ &:visited {
+ color: @color-url-visited-font;
+ }
+}
+
+.engines {
+ color: @color-engines-font;
+}
+
+.small_font {
+ font-size: 0.8em;
+}
+
+.small p {
+ margin: 2px 0;
+}
+
+.right {
+ float: right;
+}
+
+.invisible {
+ display: none;
+}
+
+.left {
+ float: left;
+}
+
+.highlight {
+ color: @color-highlight;
+}
+
+.content .highlight {
+ color: @color-black;
+}
+
+.percentage {
+ position: relative;
+ width: 300px;
+
+ div {
+ background: @color-percentage-div-background;
+ }
+}
+
+table {
+ width: 100%;
+}
+
+td {
+ padding: 0 4px;
+}
+
+tr {
+ &:hover {
+ background: @color-settings-tr-hover;
+ }
+}
+
+#results {
+ margin: auto;
+ padding: 0;
+ width: @results-width;
+ margin-bottom: 20px;
+}
+
+#search_url {
+ margin-top: 8px;
+
+ input {
+ border: 1px solid @color-result-search-url-border;
+ padding: 4px;
+ color: @color-result-search-url-font;
+ width: 14em;
+ display: block;
+ margin: 4px;
+ font-size: 0.8em;
+ }
+}
+
+#preferences {
+ top: 10px;
+ padding: 0;
+ border: 0;
+ background: url('../img/preference-icon-pixel.png') no-repeat;
+ background-size: 28px 28px;
+ opacity: 0.8;
+ width: 28px;
+ height: 30px;
+ display: block;
+
+ * {
+ display: none;
+ }
+}
+
+#pagination {
+ clear: both;
+ text-align: center;
+ br {
+ clear: both;
+ }
+}
+
+#apis {
+ margin-top: 8px;
+ clear: both;
+}
+
+#categories_container {
+ position: relative;
+}
+
+@media screen and (max-width: @results-width) {
+
+ #results {
+ margin: auto;
+ padding: 0;
+ width: 90%;
+ }
+
+ .checkbox_container {
+ display: block;
+ width: 90%;
+ //float: left;
+
+ label {
+ border-bottom: 0;
+ }
+ }
+
+ .preferences_container {
+ display: none;
+ postion: fixed !important;
+ top: 100px;
+ right: 0px;
+ }
+
+}
+
+@media screen and (max-width: 75em) {
+
+ div.title {
+
+ h1 {
+ font-size: 1em;
+ }
+ }
+
+ html.touch #categories {
+ width: 95%;
+ height: 30px;
+ text-align: left;
+ overflow-x: scroll;
+ overflow-y: hidden;
+ -webkit-overflow-scrolling: touch;
+
+ #categories_container {
+ width: 1000px;
+ width: -moz-max-content;
+ width: -webkit-max-content;
+ width: max-content;
+
+ .checkbox_container {
+ display: inline-block;
+ width: auto;
+ }
+ }
+ }
+
+ #categories {
+ font-size: 90%;
+ clear: both;
+
+ .checkbox_container {
+ margin-top: 2px;
+ margin: auto;
+ }
+ }
+
+ #categories {
+ font-size: 90%;
+ clear: both;
+
+ .checkbox_container {
+ margin-top: 2px;
+ margin: auto;
+ }
+ }
+
+ #apis {
+ display: none;
+ }
+
+ #search_url {
+ display: none;
+ }
+
+ #logo {
+ display: none;
+ }
+}
+
+.favicon {
+ float: left;
+ margin-right: 4px;
+ margin-top: 2px;
+}
+
+.preferences_back {
+ background: none repeat scroll 0 0 @color-settings-return-background;
+ border: 0 none;
+ .rounded-corners;
+ cursor: pointer;
+ display: inline-block;
+ margin: 2px 4px;
+ padding: 4px 6px;
+
+ a {
+ color: @color-settings-return-font;
+ }
+}
+
+.hidden {
+ opacity: 0;
+ overflow: hidden;
+ font-size: 0.8em;
+ position: absolute;
+ bottom: -20px;
+ width: 100%;
+ text-position: center;
+ background: white;
+ transition: opacity 1s ease;
+}
+
+#categories_container:hover .hidden {
+ transition: opacity 1s ease;
+ opacity: 0.8;
+}
diff --git a/searx/static/themes/simple/.jshintignore b/searx/static/themes/simple/.jshintignore
new file mode 100644
index 0000000..3b2b714
--- /dev/null
+++ b/searx/static/themes/simple/.jshintignore
@@ -0,0 +1 @@
+js/searx_src/autocomplete.js
diff --git a/searx/static/themes/simple/gruntfile.js b/searx/static/themes/simple/gruntfile.js
new file mode 100644
index 0000000..a0f9fd7
--- /dev/null
+++ b/searx/static/themes/simple/gruntfile.js
@@ -0,0 +1,158 @@
+module.exports = function(grunt) {
+
+ const path = require('path');
+
+ grunt.initConfig({
+ pkg: grunt.file.readJSON('package.json'),
+ watch: {
+ scripts: {
+ files: ['<%= jshint.files %>', 'less/*.less'],
+ tasks: ['jshint', 'concat', 'uglify', 'webfont', 'less:development', 'less:production']
+ }
+ },
+ concat: {
+ options: {
+ separator: ';'
+ },
+ dist: {
+ src: ['js/searx_src/*.js'],
+ dest: 'js/searx.js'
+ }
+ },
+ uglify: {
+ options: {
+ banner: '/*! simple/searx.min.js | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n',
+ output: {
+ comments: 'some'
+ },
+ ie8: false,
+ warnings: true,
+ compress: false,
+ mangle: true,
+ sourceMap: true
+ },
+ dist: {
+ files: {
+ 'js/searx.min.js': ['<%= concat.dist.dest %>']
+ }
+ }
+ },
+ jshint: {
+ files: ['js/searx_src/*.js'],
+ options: {
+ reporterOutput: "",
+ proto: true,
+ // options here to override JSHint defaults
+ globals: {
+ browser: true,
+ jQuery: false,
+ devel: true
+ }
+ }
+ },
+ less: {
+ development: {
+ options: {
+ paths: ["less"],
+ banner: '/*! searx | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n'
+ },
+ files: {
+ "css/searx.css": "less/style.less",
+ "css/searx-rtl.css": "less/style-rtl.less"
+ }
+ },
+ production: {
+ options: {
+ paths: ["less"],
+ plugins: [
+ new (require('less-plugin-clean-css'))({
+ advanced: true,
+ compatibility: '*'
+ })
+ ],
+ banner: '/*! searx | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n'
+ },
+ files: {
+ "css/searx.min.css": "less/style.less",
+ "css/searx-rtl.min.css": "less/style-rtl.less"
+ }
+ },
+ },
+ webfont: {
+ icons: {
+ // src: 'node_modules/ionicons-npm/src/*.svg',
+ src: [
+ 'node_modules/ionicons-npm/src/navicon-round.svg',
+ 'node_modules/ionicons-npm/src/search.svg',
+ 'node_modules/ionicons-npm/src/play.svg',
+ 'node_modules/ionicons-npm/src/link.svg',
+ 'node_modules/ionicons-npm/src/chevron-up.svg',
+ 'node_modules/ionicons-npm/src/chevron-left.svg',
+ 'node_modules/ionicons-npm/src/chevron-right.svg',
+ 'node_modules/ionicons-npm/src/arrow-down-a.svg',
+ 'node_modules/ionicons-npm/src/arrow-up-a.svg',
+ 'node_modules/ionicons-npm/src/arrow-swap.svg',
+ 'node_modules/ionicons-npm/src/telephone.svg',
+ 'node_modules/ionicons-npm/src/android-arrow-dropdown.svg',
+ 'node_modules/ionicons-npm/src/android-globe.svg',
+ 'node_modules/ionicons-npm/src/android-time.svg',
+ 'node_modules/ionicons-npm/src/location.svg',
+ 'node_modules/ionicons-npm/src/alert-circled.svg',
+ 'node_modules/ionicons-npm/src/android-alert.svg',
+ 'node_modules/ionicons-npm/src/ios-film-outline.svg',
+ 'node_modules/ionicons-npm/src/music-note.svg',
+ 'node_modules/ionicons-npm/src/ion-close-round.svg',
+ 'node_modules/ionicons-npm/src/android-more-vertical.svg',
+ 'magnet.svg',
+ 'node_modules/ionicons-npm/src/android-close.svg',
+ ],
+ dest: 'fonts',
+ destLess: 'less',
+ options: {
+ font: 'ion',
+ hashes : true,
+ syntax: 'bem',
+ styles : 'font,icon',
+ types : 'eot,woff2,woff,ttf,svg',
+ order : 'eot,woff2,woff,ttf,svg',
+ stylesheets : ['css', 'less'],
+ relativeFontPath : '../fonts/',
+ autoHint : false,
+ normalize : false,
+ // ligatures : true,
+ optimize : true,
+ // fontHeight : 400,
+ rename : function(name) {
+ basename = path.basename(name);
+ if (basename === 'android-alert.svg') {
+ return 'error.svg';
+ }
+ if (basename === 'alert-circled.svg') {
+ return 'warning.svg';
+ }
+ if (basename === 'ion-close-round.svg') {
+ return 'close.svg';
+ }
+ return basename.replace(/(ios|md|android)-/i, '');
+ },
+ templateOptions: {
+ baseClass: 'ion-icon',
+ classPrefix: 'ion-'
+ }
+ }
+ }
+ }
+ });
+
+ grunt.loadNpmTasks('grunt-contrib-watch');
+ grunt.loadNpmTasks('grunt-contrib-uglify');
+ grunt.loadNpmTasks('grunt-contrib-jshint');
+ grunt.loadNpmTasks('grunt-contrib-concat');
+ grunt.loadNpmTasks('grunt-contrib-less');
+ grunt.loadNpmTasks('grunt-contrib-cssmin');
+ grunt.loadNpmTasks('grunt-webfont');
+
+ grunt.registerTask('test', ['jshint']);
+
+ grunt.registerTask('default', ['jshint', 'concat', 'uglify', 'less:development', 'less:production']);
+};
diff --git a/searx/static/themes/simple/img/favicon.png b/searx/static/themes/simple/img/favicon.png
new file mode 100644
index 0000000..36be5fc
--- /dev/null
+++ b/searx/static/themes/simple/img/favicon.png
Binary files differ
diff --git a/searx/static/themes/simple/img/logo_searx_a.png b/searx/static/themes/simple/img/logo_searx_a.png
new file mode 100644
index 0000000..2db0817
--- /dev/null
+++ b/searx/static/themes/simple/img/logo_searx_a.png
Binary files differ
diff --git a/searx/static/themes/simple/img/searx.png b/searx/static/themes/simple/img/searx.png
new file mode 100644
index 0000000..98538da
--- /dev/null
+++ b/searx/static/themes/simple/img/searx.png
Binary files differ
diff --git a/searx/static/themes/simple/img/searx_logo.svg b/searx/static/themes/simple/img/searx_logo.svg
new file mode 100644
index 0000000..67a2d45
--- /dev/null
+++ b/searx/static/themes/simple/img/searx_logo.svg
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="744.09448819"
+ height="1052.3622047"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.4 r9939"
+ sodipodi:docname="searx_logo.svg"
+ inkscape:export-filename="/home/a/magnif.png"
+ inkscape:export-xdpi="203.1774"
+ inkscape:export-ydpi="203.1774">
+ <defs
+ id="defs4">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3857">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3859" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3861" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3790">
+ <stop
+ style="stop-color:#a9a9a9;stop-opacity:1;"
+ offset="0"
+ id="stop3792" />
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="1"
+ id="stop3794" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3790"
+ id="radialGradient3798"
+ cx="294.45947"
+ cy="208.37973"
+ fx="294.45947"
+ fy="208.37973"
+ r="107.58125"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3857"
+ id="linearGradient3865"
+ x1="120.68947"
+ y1="239.61774"
+ x2="120.68947"
+ y2="602.17517"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3790"
+ id="linearGradient3912"
+ x1="186.74416"
+ y1="354.42426"
+ x2="255.84358"
+ y2="254.35953"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2227304,0,0,0.89945099,-289.31433,113.40259)" />
+ <filter
+ inkscape:collect="always"
+ id="filter4024"
+ x="-0.12996517"
+ width="1.2599303"
+ y="-0.14709377"
+ height="1.2941875">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="6.4759344"
+ id="feGaussianBlur4026" />
+ </filter>
+ <filter
+ inkscape:collect="always"
+ id="filter3983"
+ x="-1.0608404"
+ width="3.1216809"
+ y="-0.31017202"
+ height="1.620344">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="9.392858"
+ id="feGaussianBlur3985" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.979899"
+ inkscape:cx="30.708726"
+ inkscape:cy="948.08556"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1364"
+ inkscape:window-height="663"
+ inkscape:window-x="0"
+ inkscape:window-y="30"
+ inkscape:window-maximized="0"
+ showguides="true"
+ inkscape:guide-bbox="true" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <path
+ style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ d="m 70.523181,34.870671 c -7.11959,15.242893 -10.17798,31.779192 -8.22563,48.814566 5.01677,43.774133 41.675309,79.324503 91.536109,95.162893 -6.62576,-22.40752 -5.34093,-44.9362 2.6395,-65.84431 C 108.73618,98.821131 74.828141,70.195435 70.523181,34.870671 z"
+ id="path3814-0-7"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ d="m 303.77876,36.21406 c 7.11959,15.242893 10.17798,31.779192 8.22563,48.814566 -5.01677,43.774134 -41.67531,79.324504 -91.53611,95.162894 6.62576,-22.40752 5.34093,-44.9362 -2.6395,-65.84431 47.73698,-14.18269 81.64502,-42.808386 85.94998,-78.13315 z"
+ id="path3814-0"
+ inkscape:connector-curvature="0" />
+ <path
+ transform="matrix(0.6556593,-0.75505688,0.75505688,0.6556593,0,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ d="m -5.0905523,259.06055 18.4167573,0 c 6.220455,0 11.228257,16.68196 11.228257,37.40349 l 0,172.83701 c 0,20.72153 -5.007802,37.40349 -11.228257,37.40349 l -18.4167573,0 c -6.2204547,0 -11.2282577,-16.68196 -11.2282577,-37.40349 l 0,-172.83701 c 0,-20.72153 5.007803,-37.40349 11.2282577,-37.40349 z"
+ id="rect3804" />
+ <path
+ sodipodi:type="arc"
+ style="fill:url(#radialGradient3798);fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path2987"
+ sodipodi:cx="294.45947"
+ sodipodi:cy="208.37973"
+ sodipodi:rx="107.58125"
+ sodipodi:ry="107.58125"
+ d="m 402.04073,208.37973 a 107.58125,107.58125 0 1 1 -215.16251,0 107.58125,107.58125 0 1 1 215.16251,0 z"
+ transform="translate(-107.07617,-60.609153)" />
+ <path
+ sodipodi:type="arc"
+ style="fill:url(#linearGradient3865);fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3757"
+ sodipodi:cx="131.82491"
+ sodipodi:cy="299.29346"
+ sodipodi:rx="101.52033"
+ sodipodi:ry="101.52033"
+ d="m 233.34524,299.29346 a 101.52033,101.52033 0 1 1 -203.040667,0 101.52033,101.52033 0 1 1 203.040667,0 z"
+ transform="matrix(0.76865672,0,0,0.76865672,85.80266,-82.535889)" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#1a1a1a;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3800"
+ sodipodi:cx="183.34268"
+ sodipodi:cy="156.35687"
+ sodipodi:rx="27.274118"
+ sodipodi:ry="27.274118"
+ d="m 210.6168,156.35687 a 27.274118,27.274118 0 1 1 -54.54824,0 27.274118,27.274118 0 1 1 54.54824,0 z"
+ transform="translate(5,-7.1428572)" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3802"
+ sodipodi:cx="197.9899"
+ sodipodi:cy="203.32896"
+ sodipodi:rx="5.5558391"
+ sodipodi:ry="5.5558391"
+ d="m 203.54574,203.32896 a 5.5558391,5.5558391 0 1 1 -11.11168,0 5.5558391,5.5558391 0 1 1 11.11168,0 z"
+ transform="translate(1.4847712,-63.564549)" />
+ <rect
+ style="fill:#ffffff;fill-opacity:0.82211531000000004;fill-rule:nonzero;stroke:none;filter:url(#filter4024)"
+ id="rect3916"
+ width="2.2392972"
+ height="159.43797"
+ x="19.525793"
+ y="337.8396"
+ rx="2.8666623"
+ ry="9.0007057"
+ transform="matrix(0.74466525,-0.84318084,0.84318084,0.74466525,-35.543204,-26.349917)" />
+ </g>
+</svg>
diff --git a/searx/static/themes/simple/js/searx_src/00_searx_toolkit.js b/searx/static/themes/simple/js/searx_src/00_searx_toolkit.js
new file mode 100644
index 0000000..fb52442
--- /dev/null
+++ b/searx/static/themes/simple/js/searx_src/00_searx_toolkit.js
@@ -0,0 +1,164 @@
+/**
+* searx is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Affero General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* searx is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Affero General Public License for more details.
+*
+* You should have received a copy of the GNU Affero General Public License
+* along with searx. If not, see < http://www.gnu.org/licenses/ >.
+*
+* (C) 2017 by Alexandre Flament, <alex@al-f.net>
+*
+*/
+(function(w, d, searx) {
+
+ 'use strict';
+
+ // not invented here tookit with bugs fixed elsewhere
+ // purposes : be just good enough and as small as possible
+
+ // from https://plainjs.com/javascript/events/live-binding-event-handlers-14/
+ if (w.Element) {
+ (function(ElementPrototype) {
+ ElementPrototype.matches = ElementPrototype.matches ||
+ ElementPrototype.matchesSelector ||
+ ElementPrototype.webkitMatchesSelector ||
+ ElementPrototype.msMatchesSelector ||
+ function(selector) {
+ var node = this, nodes = (node.parentNode || node.document).querySelectorAll(selector), i = -1;
+ while (nodes[++i] && nodes[i] != node);
+ return !!nodes[i];
+ };
+ })(Element.prototype);
+ }
+
+ function callbackSafe(callback, el, e) {
+ try {
+ callback.call(el, e);
+ } catch (exception) {
+ console.log(exception);
+ }
+ }
+
+ searx = searx || {};
+
+ searx.on = function(obj, eventType, callback, useCapture) {
+ useCapture = useCapture || false;
+ if (typeof obj !== 'string') {
+ // obj HTMLElement, HTMLDocument
+ obj.addEventListener(eventType, callback, useCapture);
+ } else {
+ // obj is a selector
+ d.addEventListener(eventType, function(e) {
+ var el = e.target || e.srcElement, found = false;
+ while (el && el.matches && el !== d && !(found = el.matches(obj))) el = el.parentElement;
+ if (found) callbackSafe(callback, el, e);
+ }, useCapture);
+ }
+ };
+
+ searx.ready = function(callback) {
+ if (document.readyState != 'loading') {
+ callback.call(w);
+ } else {
+ w.addEventListener('DOMContentLoaded', callback.bind(w));
+ }
+ };
+
+ searx.http = function(method, url, callback) {
+ var req = new XMLHttpRequest(),
+ resolve = function() {},
+ reject = function() {},
+ promise = {
+ then: function(callback) { resolve = callback; return promise; },
+ catch: function(callback) { reject = callback; return promise; }
+ };
+
+ try {
+ req.open(method, url, true);
+
+ // On load
+ req.onload = function() {
+ if (req.status == 200) {
+ resolve(req.response, req.responseType);
+ } else {
+ reject(Error(req.statusText));
+ }
+ };
+
+ // Handle network errors
+ req.onerror = function() {
+ reject(Error("Network Error"));
+ };
+
+ req.onabort = function() {
+ reject(Error("Transaction is aborted"));
+ };
+
+ // Make the request
+ req.send();
+ } catch (ex) {
+ reject(ex);
+ }
+
+ return promise;
+ };
+
+ searx.loadStyle = function(src) {
+ var path = searx.staticPath + src,
+ id = "style_" + src.replace('.', '_'),
+ s = d.getElementById(id);
+ if (s === null) {
+ s = d.createElement('link');
+ s.setAttribute('id', id);
+ s.setAttribute('rel', 'stylesheet');
+ s.setAttribute('type', 'text/css');
+ s.setAttribute('href', path);
+ d.body.appendChild(s);
+ }
+ };
+
+ searx.loadScript = function(src, callback) {
+ var path = searx.staticPath + src,
+ id = "script_" + src.replace('.', '_'),
+ s = d.getElementById(id);
+ if (s === null) {
+ s = d.createElement('script');
+ s.setAttribute('id', id);
+ s.setAttribute('src', path);
+ s.onload = callback;
+ s.onerror = function() {
+ s.setAttribute('error', '1');
+ };
+ d.body.appendChild(s);
+ } else if (!s.hasAttribute('error')) {
+ try {
+ callback.apply(s, []);
+ } catch (exception) {
+ console.log(exception);
+ }
+ } else {
+ console.log("callback not executed : script '" + path + "' not loaded.");
+ }
+ };
+
+ searx.insertBefore = function (newNode, referenceNode) {
+ element.parentNode.insertBefore(newNode, referenceNode);
+ };
+
+ searx.insertAfter = function(newNode, referenceNode) {
+ referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
+ };
+
+ searx.on('.close', 'click', function(e) {
+ var el = e.target || e.srcElement;
+ this.parentNode.classList.add('invisible');
+ });
+
+ return searx;
+})(window, document, window.searx);
diff --git a/searx/static/themes/simple/js/searx_src/autocomplete.js b/searx/static/themes/simple/js/searx_src/autocomplete.js
new file mode 100644
index 0000000..b95fbcf
--- /dev/null
+++ b/searx/static/themes/simple/js/searx_src/autocomplete.js
@@ -0,0 +1,536 @@
+(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.AutoComplete = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
+/*
+ * @license MIT
+ *
+ * Autocomplete.js v2.6.3
+ * Developed by Baptiste Donaux
+ * http://autocomplete-js.com
+ *
+ * (c) 2017, Baptiste Donaux
+ */
+"use strict";
+var ConditionOperator;
+(function (ConditionOperator) {
+ ConditionOperator[ConditionOperator["AND"] = 0] = "AND";
+ ConditionOperator[ConditionOperator["OR"] = 1] = "OR";
+})(ConditionOperator || (ConditionOperator = {}));
+var EventType;
+(function (EventType) {
+ EventType[EventType["KEYDOWN"] = 0] = "KEYDOWN";
+ EventType[EventType["KEYUP"] = 1] = "KEYUP";
+})(EventType || (EventType = {}));
+/**
+ * Core
+ *
+ * @class
+ * @author Baptiste Donaux <baptiste.donaux@gmail.com> @baptistedonaux
+ */
+var AutoComplete = (function () {
+ // Constructor
+ function AutoComplete(params, selector) {
+ if (params === void 0) { params = {}; }
+ if (selector === void 0) { selector = "[data-autocomplete]"; }
+ if (Array.isArray(selector)) {
+ selector.forEach(function (s) {
+ new AutoComplete(params, s);
+ });
+ }
+ else if (typeof selector == "string") {
+ var elements = document.querySelectorAll(selector);
+ Array.prototype.forEach.call(elements, function (input) {
+ new AutoComplete(params, input);
+ });
+ }
+ else {
+ var specificParams = AutoComplete.merge(AutoComplete.defaults, params, {
+ DOMResults: document.createElement("div")
+ });
+ AutoComplete.prototype.create(specificParams, selector);
+ return specificParams;
+ }
+ }
+ AutoComplete.prototype.create = function (params, element) {
+ params.Input = element;
+ if (params.Input.nodeName.match(/^INPUT$/i) && (params.Input.hasAttribute("type") === false || params.Input.getAttribute("type").match(/^TEXT|SEARCH$/i))) {
+ params.Input.setAttribute("autocomplete", "off");
+ params._Position(params);
+ params.Input.parentNode.appendChild(params.DOMResults);
+ params.$Listeners = {
+ blur: params._Blur.bind(params),
+ destroy: AutoComplete.prototype.destroy.bind(null, params),
+ focus: params._Focus.bind(params),
+ keyup: AutoComplete.prototype.event.bind(null, params, EventType.KEYUP),
+ keydown: AutoComplete.prototype.event.bind(null, params, EventType.KEYDOWN),
+ position: params._Position.bind(params)
+ };
+ for (var event in params.$Listeners) {
+ params.Input.addEventListener(event, params.$Listeners[event]);
+ }
+ }
+ };
+ AutoComplete.prototype.getEventsByType = function (params, type) {
+ var mappings = {};
+ for (var key in params.KeyboardMappings) {
+ var event = EventType.KEYUP;
+ if (params.KeyboardMappings[key].Event !== undefined) {
+ event = params.KeyboardMappings[key].Event;
+ }
+ if (event == type) {
+ mappings[key] = params.KeyboardMappings[key];
+ }
+ }
+ return mappings;
+ };
+ AutoComplete.prototype.event = function (params, type, event) {
+ var eventIdentifier = function (condition) {
+ if ((match === true && mapping.Operator == ConditionOperator.AND) || (match === false && mapping.Operator == ConditionOperator.OR)) {
+ condition = AutoComplete.merge({
+ Not: false
+ }, condition);
+ if (condition.hasOwnProperty("Is")) {
+ if (condition.Is == event.keyCode) {
+ match = !condition.Not;
+ }
+ else {
+ match = condition.Not;
+ }
+ }
+ else if (condition.hasOwnProperty("From") && condition.hasOwnProperty("To")) {
+ if (event.keyCode >= condition.From && event.keyCode <= condition.To) {
+ match = !condition.Not;
+ }
+ else {
+ match = condition.Not;
+ }
+ }
+ }
+ };
+ for (var name in AutoComplete.prototype.getEventsByType(params, type)) {
+ var mapping = AutoComplete.merge({
+ Operator: ConditionOperator.AND
+ }, params.KeyboardMappings[name]), match = ConditionOperator.AND == mapping.Operator;
+ mapping.Conditions.forEach(eventIdentifier);
+ if (match === true) {
+ mapping.Callback.call(params, event);
+ }
+ }
+ };
+ AutoComplete.prototype.makeRequest = function (params, callback) {
+ var propertyHttpHeaders = Object.getOwnPropertyNames(params.HttpHeaders), request = new XMLHttpRequest(), method = params._HttpMethod(), url = params._Url(), queryParams = params._Pre(), queryParamsStringify = encodeURIComponent(params._QueryArg()) + "=" + encodeURIComponent(queryParams);
+ if (method.match(/^GET$/i)) {
+ if (url.indexOf("?") !== -1) {
+ url += "&" + queryParamsStringify;
+ }
+ else {
+ url += "?" + queryParamsStringify;
+ }
+ }
+ request.open(method, url, true);
+ for (var i = propertyHttpHeaders.length - 1; i >= 0; i--) {
+ request.setRequestHeader(propertyHttpHeaders[i], params.HttpHeaders[propertyHttpHeaders[i]]);
+ }
+ request.onreadystatechange = function () {
+ if (request.readyState == 4 && request.status == 200) {
+ params.$Cache[queryParams] = request.response;
+ callback(request.response);
+ }
+ };
+ return request;
+ };
+ AutoComplete.prototype.ajax = function (params, request, timeout) {
+ if (timeout === void 0) { timeout = true; }
+ if (params.$AjaxTimer) {
+ window.clearTimeout(params.$AjaxTimer);
+ }
+ if (timeout === true) {
+ params.$AjaxTimer = window.setTimeout(AutoComplete.prototype.ajax.bind(null, params, request, false), params.Delay);
+ }
+ else {
+ if (params.Request) {
+ params.Request.abort();
+ }
+ params.Request = request;
+ params.Request.send(params._QueryArg() + "=" + params._Pre());
+ }
+ };
+ AutoComplete.prototype.cache = function (params, callback) {
+ var response = params._Cache(params._Pre());
+ if (response === undefined) {
+ var request = AutoComplete.prototype.makeRequest(params, callback);
+ AutoComplete.prototype.ajax(params, request);
+ }
+ else {
+ callback(response);
+ }
+ };
+ AutoComplete.prototype.destroy = function (params) {
+ for (var event in params.$Listeners) {
+ params.Input.removeEventListener(event, params.$Listeners[event]);
+ }
+ params.DOMResults.parentNode.removeChild(params.DOMResults);
+ };
+ return AutoComplete;
+}());
+AutoComplete.merge = function () {
+ var merge = {}, tmp;
+ for (var i = 0; i < arguments.length; i++) {
+ for (tmp in arguments[i]) {
+ merge[tmp] = arguments[i][tmp];
+ }
+ }
+ return merge;
+};
+AutoComplete.defaults = {
+ Delay: 150,
+ EmptyMessage: "No result here",
+ Highlight: {
+ getRegex: function (value) {
+ return new RegExp(value, "ig");
+ },
+ transform: function (value) {
+ return "<strong>" + value + "</strong>";
+ }
+ },
+ HttpHeaders: {
+ "Content-type": "application/x-www-form-urlencoded"
+ },
+ Limit: 0,
+ MinChars: 0,
+ HttpMethod: "GET",
+ QueryArg: "q",
+ Url: null,
+ KeyboardMappings: {
+ "Enter": {
+ Conditions: [{
+ Is: 13,
+ Not: false
+ }],
+ Callback: function (event) {
+ if (this.DOMResults.getAttribute("class").indexOf("open") != -1) {
+ var liActive = this.DOMResults.querySelector("li.active");
+ if (liActive !== null) {
+ event.preventDefault();
+ this._Select(liActive);
+ this.DOMResults.setAttribute("class", "autocomplete");
+ }
+ }
+ },
+ Operator: ConditionOperator.AND,
+ Event: EventType.KEYDOWN
+ },
+ "KeyUpAndDown_down": {
+ Conditions: [{
+ Is: 38,
+ Not: false
+ },
+ {
+ Is: 40,
+ Not: false
+ }],
+ Callback: function (event) {
+ event.preventDefault();
+ },
+ Operator: ConditionOperator.OR,
+ Event: EventType.KEYDOWN
+ },
+ "KeyUpAndDown_up": {
+ Conditions: [{
+ Is: 38,
+ Not: false
+ },
+ {
+ Is: 40,
+ Not: false
+ }],
+ Callback: function (event) {
+ event.preventDefault();
+ var first = this.DOMResults.querySelector("li:first-child:not(.locked)"), last = this.DOMResults.querySelector("li:last-child:not(.locked)"), active = this.DOMResults.querySelector("li.active");
+ if (active) {
+ var currentIndex = Array.prototype.indexOf.call(active.parentNode.children, active), position = currentIndex + (event.keyCode - 39), lisCount = this.DOMResults.getElementsByTagName("li").length;
+ if (position < 0) {
+ position = lisCount - 1;
+ }
+ else if (position >= lisCount) {
+ position = 0;
+ }
+ active.classList.remove("active");
+ active.parentElement.children.item(position).classList.add("active");
+ }
+ else if (last && event.keyCode == 38) {
+ last.classList.add("active");
+ }
+ else if (first) {
+ first.classList.add("active");
+ }
+ },
+ Operator: ConditionOperator.OR,
+ Event: EventType.KEYUP
+ },
+ "AlphaNum": {
+ Conditions: [{
+ Is: 13,
+ Not: true
+ }, {
+ From: 35,
+ To: 40,
+ Not: true
+ }],
+ Callback: function () {
+ var oldValue = this.Input.getAttribute("data-autocomplete-old-value"), currentValue = this._Pre();
+ if (currentValue !== "" && currentValue.length >= this._MinChars()) {
+ if (!oldValue || currentValue != oldValue) {
+ this.DOMResults.setAttribute("class", "autocomplete open");
+ }
+ AutoComplete.prototype.cache(this, function (response) {
+ this._Render(this._Post(response));
+ this._Open();
+ }.bind(this));
+ }
+ },
+ Operator: ConditionOperator.AND,
+ Event: EventType.KEYUP
+ }
+ },
+ DOMResults: null,
+ Request: null,
+ Input: null,
+ /**
+ * Return the message when no result returns
+ */
+ _EmptyMessage: function () {
+ var emptyMessage = "";
+ if (this.Input.hasAttribute("data-autocomplete-empty-message")) {
+ emptyMessage = this.Input.getAttribute("data-autocomplete-empty-message");
+ }
+ else if (this.EmptyMessage !== false) {
+ emptyMessage = this.EmptyMessage;
+ }
+ else {
+ emptyMessage = "";
+ }
+ return emptyMessage;
+ },
+ /**
+ * Returns the maximum number of results
+ */
+ _Limit: function () {
+ var limit = this.Input.getAttribute("data-autocomplete-limit");
+ if (isNaN(limit) || limit === null) {
+ return this.Limit;
+ }
+ return parseInt(limit, 10);
+ },
+ /**
+ * Returns the minimum number of characters entered before firing ajax
+ */
+ _MinChars: function () {
+ var minchars = this.Input.getAttribute("data-autocomplete-minchars");
+ if (isNaN(minchars) || minchars === null) {
+ return this.MinChars;
+ }
+ return parseInt(minchars, 10);
+ },
+ /**
+ * Apply transformation on labels response
+ */
+ _Highlight: function (label) {
+ return label.replace(this.Highlight.getRegex(this._Pre()), this.Highlight.transform);
+ },
+ /**
+ * Returns the HHTP method to use
+ */
+ _HttpMethod: function () {
+ if (this.Input.hasAttribute("data-autocomplete-method")) {
+ return this.Input.getAttribute("data-autocomplete-method");
+ }
+ return this.HttpMethod;
+ },
+ /**
+ * Returns the query param to use
+ */
+ _QueryArg: function () {
+ if (this.Input.hasAttribute("data-autocomplete-param-name")) {
+ return this.Input.getAttribute("data-autocomplete-param-name");
+ }
+ return this.QueryArg;
+ },
+ /**
+ * Returns the URL to use for AJAX request
+ */
+ _Url: function () {
+ if (this.Input.hasAttribute("data-autocomplete")) {
+ return this.Input.getAttribute("data-autocomplete");
+ }
+ return this.Url;
+ },
+ /**
+ * Manage the close
+ */
+ _Blur: function (now) {
+ if (now === true) {
+ this.DOMResults.setAttribute("class", "autocomplete");
+ this.Input.setAttribute("data-autocomplete-old-value", this.Input.value);
+ }
+ else {
+ var params = this;
+ setTimeout(function () {
+ params._Blur(true);
+ }, 150);
+ }
+ },
+ /**
+ * Manage the cache
+ */
+ _Cache: function (value) {
+ return this.$Cache[value];
+ },
+ /**
+ * Manage the open
+ */
+ _Focus: function () {
+ var oldValue = this.Input.getAttribute("data-autocomplete-old-value");
+ if ((!oldValue || this.Input.value != oldValue) && this._MinChars() <= this.Input.value.length) {
+ this.DOMResults.setAttribute("class", "autocomplete open");
+ }
+ },
+ /**
+ * Bind all results item if one result is opened
+ */
+ _Open: function () {
+ var params = this;
+ Array.prototype.forEach.call(this.DOMResults.getElementsByTagName("li"), function (li) {
+ if (li.getAttribute("class") != "locked") {
+ li.onclick = function (event) {
+ params._Select(li);
+ };
+ li.onmouseenter = function () {
+ var active = params.DOMResults.querySelector("li.active");
+ if (active !== li) {
+ if (active !== null) {
+ active.classList.remove("active");
+ }
+ li.classList.add("active");
+ }
+ };
+ }
+ });
+ },
+ /**
+ * Position the results HTML element
+ */
+ _Position: function () {
+ this.DOMResults.setAttribute("class", "autocomplete");
+ this.DOMResults.setAttribute("style", "top:" + (this.Input.offsetTop + this.Input.offsetHeight) + "px;left:" + this.Input.offsetLeft + "px;width:" + this.Input.clientWidth + "px;");
+ },
+ /**
+ * Execute the render of results DOM element
+ */
+ _Render: function (response) {
+ var ul;
+ if (typeof response == "string") {
+ ul = this._RenderRaw(response);
+ }
+ else {
+ ul = this._RenderResponseItems(response);
+ }
+ if (this.DOMResults.hasChildNodes()) {
+ this.DOMResults.removeChild(this.DOMResults.childNodes[0]);
+ }
+ this.DOMResults.appendChild(ul);
+ },
+ /**
+ * ResponseItems[] rendering
+ */
+ _RenderResponseItems: function (response) {
+ var ul = document.createElement("ul"), li = document.createElement("li"), limit = this._Limit();
+ // Order
+ if (limit < 0) {
+ response = response.reverse();
+ }
+ else if (limit === 0) {
+ limit = response.length;
+ }
+ for (var item = 0; item < Math.min(Math.abs(limit), response.length); item++) {
+ li.innerHTML = response[item].Label;
+ li.setAttribute("data-autocomplete-value", response[item].Value);
+ ul.appendChild(li);
+ li = document.createElement("li");
+ }
+ return ul;
+ },
+ /**
+ * string response rendering (RAW HTML)
+ */
+ _RenderRaw: function (response) {
+ var ul = document.createElement("ul"), li = document.createElement("li");
+ if (response.length > 0) {
+ this.DOMResults.innerHTML = response;
+ }
+ else {
+ var emptyMessage = this._EmptyMessage();
+ if (emptyMessage !== "") {
+ li.innerHTML = emptyMessage;
+ li.setAttribute("class", "locked");
+ ul.appendChild(li);
+ }
+ }
+ return ul;
+ },
+ /**
+ * Deal with request response
+ */
+ _Post: function (response) {
+ try {
+ var returnResponse = [];
+ //JSON return
+ var json = JSON.parse(response);
+ if (Object.keys(json).length === 0) {
+ return "";
+ }
+ if (Array.isArray(json)) {
+ for (var i = 0; i < Object.keys(json).length; i++) {
+ returnResponse[returnResponse.length] = { "Value": json[i], "Label": this._Highlight(json[i]) };
+ }
+ }
+ else {
+ for (var value in json) {
+ returnResponse.push({
+ "Value": value,
+ "Label": this._Highlight(json[value])
+ });
+ }
+ }
+ return returnResponse;
+ }
+ catch (event) {
+ //HTML return
+ return response;
+ }
+ },
+ /**
+ * Return the autocomplete value to send (before request)
+ */
+ _Pre: function () {
+ return this.Input.value;
+ },
+ /**
+ * Choice one result item
+ */
+ _Select: function (item) {
+ console.log('test test test');
+ if (item.hasAttribute("data-autocomplete-value")) {
+ this.Input.value = item.getAttribute("data-autocomplete-value");
+ }
+ else {
+ this.Input.value = item.innerHTML;
+ }
+ this.Input.setAttribute("data-autocomplete-old-value", this.Input.value);
+ },
+ $AjaxTimer: null,
+ $Cache: {},
+ $Listeners: {}
+};
+module.exports = AutoComplete;
+
+},{}]},{},[1])(1)
+});
diff --git a/searx/static/themes/simple/js/searx_src/searx_imageresult.js b/searx/static/themes/simple/js/searx_src/searx_imageresult.js
new file mode 100644
index 0000000..7bbfc14
--- /dev/null
+++ b/searx/static/themes/simple/js/searx_src/searx_imageresult.js
@@ -0,0 +1,151 @@
+/**
+*
+* Google Image Layout v0.0.1
+* Description, by Anh Trinh.
+* Heavily modified for searx
+* http://trinhtrunganh.com
+*
+* @license Free to use under the MIT License.
+*
+*/
+(function(w, d) {
+ 'use strict';
+
+ function ImageLayout(container_selector, results_selector, img_selector, maxHeight) {
+ this.container_selector = container_selector;
+ this.results_selector = results_selector;
+ this.img_selector = img_selector;
+ this.margin = 10;
+ this.maxHeight = maxHeight;
+ this._alignAllDone = true;
+ }
+
+ /**
+ * Get the height that make all images fit the container
+ *
+ * width = w1 + w2 + w3 + ... = r1*h + r2*h + r3*h + ...
+ *
+ * @param {[type]} images the images to be calculated
+ * @param {[type]} width the container witdth
+ * @param {[type]} margin the margin between each image
+ *
+ * @return {[type]} the height
+ */
+ ImageLayout.prototype._getHeigth = function(images, width) {
+ var r = 0,
+ img;
+
+ width -= images.length * this.margin;
+ for (var i = 0; i < images.length; i++) {
+ img = images[i];
+ if ((img.naturalWidth > 0) && (img.naturalHeight > 0)) {
+ r += img.naturalWidth / img.naturalHeight;
+ } else {
+ // assume that not loaded images are square
+ r += 1;
+ }
+ }
+
+ return width / r; //have to round down because Firefox will automatically roundup value with number of decimals > 3
+ };
+
+ ImageLayout.prototype._setSize = function(images, height) {
+ var img, imgWidth, imagesLength = images.length;
+ for (var i = 0; i < imagesLength; i++) {
+ img = images[i];
+ if ((img.naturalWidth > 0) && (img.naturalHeight > 0)) {
+ imgWidth = height * img.naturalWidth / img.naturalHeight;
+ } else {
+ // not loaded image : make it square as _getHeigth said it
+ imgWidth = height;
+ }
+ img.style.width = imgWidth + 'px';
+ img.style.height = height + 'px';
+ img.style.marginLeft = '3px';
+ img.style.marginTop = '3px';
+ img.style.marginRight = this.margin - 7 + 'px'; // -4 is the negative margin of the inline element
+ img.style.marginBottom = this.margin - 7 + 'px';
+ }
+ };
+
+ ImageLayout.prototype._alignImgs = function(imgGroup) {
+ var slice, h,
+ containerWidth = d.querySelector(this.container_selector).clientWidth;
+
+ w: while (imgGroup.length > 0) {
+ for (var i = 1; i <= imgGroup.length; i++) {
+ slice = imgGroup.slice(0, i);
+ h = this._getHeigth(slice, containerWidth);
+ if (h < this.maxHeight) {
+ this._setSize(slice, h);
+ imgGroup = imgGroup.slice(i);
+ continue w;
+ }
+ }
+ this._setSize(slice, Math.min(this.maxHeight, h));
+ break;
+ }
+ };
+
+ ImageLayout.prototype.align = function(results_selector) {
+ var results_selectorNode = d.querySelectorAll(this.results_selector),
+ results_length = results_selectorNode.length,
+ previous = null,
+ current = null,
+ imgGroup = [];
+ for (var i = 0; i < results_length; i++) {
+ current = results_selectorNode[i];
+ if (current.previousElementSibling !== previous && imgGroup.length > 0) {
+ // the current image is not conected to previous one
+ // so the current image is the start of a new group of images.
+ // so call _alignImgs to align the current group
+ this._alignImgs(imgGroup);
+ // and start a new empty group of images
+ imgGroup = [];
+ }
+ // add the current image to the group (only the img tag)
+ imgGroup.push(current.querySelector(this.img_selector));
+ // update the previous variable
+ previous = current;
+ }
+ // align the remaining images
+ if (imgGroup.length > 0) {
+ this._alignImgs(imgGroup);
+ }
+ };
+
+ ImageLayout.prototype.watch = function() {
+ var i, img, imgGroup, imgNodeLength,
+ obj = this,
+ results_nodes = d.querySelectorAll(this.results_selector),
+ results_length = results_nodes.length;
+
+ function align(e) {
+ obj.align();
+ }
+
+ function throttleAlign(e) {
+ if (obj._alignAllDone) {
+ obj._alignAllDone = false;
+ setTimeout(function() {
+ obj.align();
+ obj._alignAllDone = true;
+ }, 100);
+ }
+ }
+
+ w.addEventListener('resize', throttleAlign);
+ w.addEventListener('pageshow', align);
+
+ for (i = 0; i < results_length; i++) {
+ img = results_nodes[i].querySelector(this.img_selector);
+ if (typeof img !== 'undefined') {
+ img.addEventListener('load', throttleAlign);
+ img.addEventListener('error', throttleAlign);
+ }
+ }
+ };
+
+ w.searx.ImageLayout = ImageLayout;
+
+})(window, document);
diff --git a/searx/static/themes/simple/js/searx_src/searx_keyboard.js b/searx/static/themes/simple/js/searx_src/searx_keyboard.js
new file mode 100644
index 0000000..657d9ec
--- /dev/null
+++ b/searx/static/themes/simple/js/searx_src/searx_keyboard.js
@@ -0,0 +1,366 @@
+searx.ready(function() {
+
+ searx.on('.result', 'click', function() {
+ highlightResult(this)(true);
+ });
+
+ searx.on('.result a', 'focus', function(e) {
+ var el = e.target;
+ while (el !== undefined) {
+ if (el.classList.contains('result')) {
+ if (el.getAttribute("data-vim-selected") === null) {
+ highlightResult(el)(true);
+ }
+ break;
+ }
+ el = el.parentNode;
+ }
+ }, true);
+
+ var vimKeys = {
+ 27: {
+ key: 'Escape',
+ fun: removeFocus,
+ des: 'remove focus from the focused input',
+ cat: 'Control'
+ },
+ 73: {
+ key: 'i',
+ fun: searchInputFocus,
+ des: 'focus on the search input',
+ cat: 'Control'
+ },
+ 66: {
+ key: 'b',
+ fun: scrollPage(-window.innerHeight),
+ des: 'scroll one page up',
+ cat: 'Navigation'
+ },
+ 70: {
+ key: 'f',
+ fun: scrollPage(window.innerHeight),
+ des: 'scroll one page down',
+ cat: 'Navigation'
+ },
+ 85: {
+ key: 'u',
+ fun: scrollPage(-window.innerHeight / 2),
+ des: 'scroll half a page up',
+ cat: 'Navigation'
+ },
+ 68: {
+ key: 'd',
+ fun: scrollPage(window.innerHeight / 2),
+ des: 'scroll half a page down',
+ cat: 'Navigation'
+ },
+ 71: {
+ key: 'g',
+ fun: scrollPageTo(-document.body.scrollHeight, 'top'),
+ des: 'scroll to the top of the page',
+ cat: 'Navigation'
+ },
+ 86: {
+ key: 'v',
+ fun: scrollPageTo(document.body.scrollHeight, 'bottom'),
+ des: 'scroll to the bottom of the page',
+ cat: 'Navigation'
+ },
+ 75: {
+ key: 'k',
+ fun: highlightResult('up'),
+ des: 'select previous search result',
+ cat: 'Results'
+ },
+ 74: {
+ key: 'j',
+ fun: highlightResult('down'),
+ des: 'select next search result',
+ cat: 'Results'
+ },
+ 80: {
+ key: 'p',
+ fun: pageButtonClick(0),
+ des: 'go to previous page',
+ cat: 'Results'
+ },
+ 78: {
+ key: 'n',
+ fun: pageButtonClick(1),
+ des: 'go to next page',
+ cat: 'Results'
+ },
+ 79: {
+ key: 'o',
+ fun: openResult(false),
+ des: 'open search result',
+ cat: 'Results'
+ },
+ 84: {
+ key: 't',
+ fun: openResult(true),
+ des: 'open the result in a new tab',
+ cat: 'Results'
+ },
+ 82: {
+ key: 'r',
+ fun: reloadPage,
+ des: 'reload page from the server',
+ cat: 'Control'
+ },
+ 72: {
+ key: 'h',
+ fun: toggleHelp,
+ des: 'toggle help window',
+ cat: 'Other'
+ }
+ };
+
+ searx.on(document, "keydown", function(e) {
+ // check for modifiers so we don't break browser's hotkeys
+ if (vimKeys.hasOwnProperty(e.keyCode) && !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey) {
+ var tagName = e.target.tagName.toLowerCase();
+ if (e.keyCode === 27) {
+ if (tagName === 'input' || tagName === 'select' || tagName === 'textarea') {
+ vimKeys[e.keyCode].fun();
+ }
+ } else {
+ if (e.target === document.body || tagName === 'a' || tagName === 'button') {
+ e.preventDefault();
+ vimKeys[e.keyCode].fun();
+ }
+ }
+ }
+ });
+
+ function highlightResult(which) {
+ return function(noScroll) {
+ var current = document.querySelector('.result[data-vim-selected]'),
+ effectiveWhich = which;
+ if (current === null) {
+ // no selection : choose the first one
+ current = document.querySelector('.result');
+ if (current === null) {
+ // no first one : there are no results
+ return;
+ }
+ // replace up/down actions by selecting first one
+ if (which === "down" || which === "up") {
+ effectiveWhich = current;
+ }
+ }
+
+ var next, results = document.querySelectorAll('.result');
+
+ if (typeof effectiveWhich !== 'string') {
+ next = effectiveWhich;
+ } else {
+ switch (effectiveWhich) {
+ case 'visible':
+ var top = document.documentElement.scrollTop || document.body.scrollTop;
+ var bot = top + document.documentElement.clientHeight;
+
+ for (var i = 0; i < results.length; i++) {
+ next = results[i];
+ var etop = next.offsetTop;
+ var ebot = etop + next.clientHeight;
+
+ if ((ebot <= bot) && (etop > top)) {
+ break;
+ }
+ }
+ break;
+ case 'down':
+ next = current.nextElementSibling;
+ if (next === null) {
+ next = results[0];
+ }
+ break;
+ case 'up':
+ next = current.previousElementSibling;
+ if (next === null) {
+ next = results[results.length - 1];
+ }
+ break;
+ case 'bottom':
+ next = results[results.length - 1];
+ break;
+ case 'top':
+ /* falls through */
+ default:
+ next = results[0];
+ }
+ }
+
+ if (next) {
+ current.removeAttribute('data-vim-selected');
+ next.setAttribute('data-vim-selected', 'true');
+ var link = next.querySelector('h3 a') || next.querySelector('a');
+ if (link !== null) {
+ link.focus();
+ }
+ if (!noScroll) {
+ scrollPageToSelected();
+ }
+ }
+ };
+ }
+
+ function reloadPage() {
+ document.location.reload(true);
+ }
+
+ function removeFocus() {
+ if (document.activeElement) {
+ document.activeElement.blur();
+ }
+ }
+
+ function pageButtonClick(num) {
+ return function() {
+ var buttons = $('div#pagination button[type="submit"]');
+ if (buttons.length !== 2) {
+ console.log('page navigation with this theme is not supported');
+ return;
+ }
+ if (num >= 0 && num < buttons.length) {
+ buttons[num].click();
+ } else {
+ console.log('pageButtonClick(): invalid argument');
+ }
+ };
+ }
+
+ function scrollPageToSelected() {
+ var sel = document.querySelector('.result[data-vim-selected]');
+ if (sel === null) {
+ return;
+ }
+ var wtop = document.documentElement.scrollTop || document.body.scrollTop,
+ wheight = document.documentElement.clientHeight,
+ etop = sel.offsetTop,
+ ebot = etop + sel.clientHeight,
+ offset = 120;
+ // first element ?
+ if ((sel.previousElementSibling === null) && (ebot < wheight)) {
+ // set to the top of page if the first element
+ // is fully included in the viewport
+ window.scroll(window.scrollX, 0);
+ return;
+ }
+ if (wtop > (etop - offset)) {
+ window.scroll(window.scrollX, etop - offset);
+ } else {
+ var wbot = wtop + wheight;
+ if (wbot < (ebot + offset)) {
+ window.scroll(window.scrollX, ebot - wheight + offset);
+ }
+ }
+ }
+
+ function scrollPage(amount) {
+ return function() {
+ window.scrollBy(0, amount);
+ highlightResult('visible')();
+ };
+ }
+
+ function scrollPageTo(position, nav) {
+ return function() {
+ window.scrollTo(0, position);
+ highlightResult(nav)();
+ };
+ }
+
+ function searchInputFocus() {
+ window.scrollTo(0, 0);
+ document.querySelector('#q').focus();
+ }
+
+ function openResult(newTab) {
+ return function() {
+ var link = document.querySelector('.result[data-vim-selected] h3 a');
+ if (link !== null) {
+ var url = link.getAttribute('href');
+ if (newTab) {
+ window.open(url);
+ } else {
+ window.location.href = url;
+ }
+ }
+ };
+ }
+
+ function initHelpContent(divElement) {
+ var categories = {};
+
+ for (var k in vimKeys) {
+ var key = vimKeys[k];
+ categories[key.cat] = categories[key.cat] || [];
+ categories[key.cat].push(key);
+ }
+
+ var sorted = Object.keys(categories).sort(function(a, b) {
+ return categories[b].length - categories[a].length;
+ });
+
+ if (sorted.length === 0) {
+ return;
+ }
+
+ var html = '<a href="#" class="close" aria-label="close" title="close">×</a>';
+ html += '<h3>How to navigate searx with Vim-like hotkeys</h3>';
+ html += '<table>';
+
+ for (var i = 0; i < sorted.length; i++) {
+ var cat = categories[sorted[i]];
+
+ var lastCategory = i === (sorted.length - 1);
+ var first = i % 2 === 0;
+
+ if (first) {
+ html += '<tr>';
+ }
+ html += '<td>';
+
+ html += '<h4>' + cat[0].cat + '</h4>';
+ html += '<ul class="list-unstyled">';
+
+ for (var cj in cat) {
+ html += '<li><kbd>' + cat[cj].key + '</kbd> ' + cat[cj].des + '</li>';
+ }
+
+ html += '</ul>';
+ html += '</td>'; // col-sm-*
+
+ if (!first || lastCategory) {
+ html += '</tr>'; // row
+ }
+ }
+
+ html += '</table>';
+
+ divElement.innerHTML = html;
+ }
+
+ function toggleHelp() {
+ var helpPanel = document.querySelector('#vim-hotkeys-help');
+ console.log(helpPanel);
+ if (helpPanel === undefined || helpPanel === null) {
+ // first call
+ helpPanel = document.createElement('div');
+ helpPanel.id = 'vim-hotkeys-help';
+ helpPanel.className='dialog-modal';
+ helpPanel.style='width: 40%';
+ initHelpContent(helpPanel);
+ var body = document.getElementsByTagName('body')[0];
+ body.appendChild(helpPanel);
+ } else {
+ // togggle hidden
+ helpPanel.classList.toggle('invisible');
+ return;
+ }
+
+ }
+
+});
diff --git a/searx/static/themes/simple/js/searx_src/searx_mapresult.js b/searx/static/themes/simple/js/searx_src/searx_mapresult.js
new file mode 100644
index 0000000..869d07d
--- /dev/null
+++ b/searx/static/themes/simple/js/searx_src/searx_mapresult.js
@@ -0,0 +1,176 @@
+/**
+* searx is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Affero General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* searx is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Affero General Public License for more details.
+*
+* You should have received a copy of the GNU Affero General Public License
+* along with searx. If not, see < http://www.gnu.org/licenses/ >.
+*
+* (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at>
+* (C) 2017 by Alexandre Flament, <alex@al-f.net>
+*/
+(function (w, d, searx) {
+ 'use strict';
+
+ searx.ready(function () {
+ searx.on('.searx_overpass_request', 'click', function(event) {
+ // no more request
+ this.classList.remove("searx_overpass_request");
+
+ //
+ var overpass_url = "https://overpass-api.de/api/interpreter?data=";
+ var query_start = overpass_url + "[out:json][timeout:25];(";
+ var query_end = ");out meta;";
+
+ var osm_id = this.dataset.osmId;
+ var osm_type = this.dataset.osmType;
+ var result_table = d.querySelector("#" + this.dataset.resultTable);
+ var result_table_loadicon = d.querySelector("#" + this.dataset.resultTableLoadicon);
+
+ // tags which can be ignored
+ var osm_ignore_tags = [ "addr:city", "addr:country", "addr:housenumber", "addr:postcode", "addr:street" ];
+
+ if(osm_id && osm_type && result_table) {
+ var query = null;
+ switch(osm_type) {
+ case 'node':
+ query = query_start + "node(" + osm_id + ");" + query_end;
+ break;
+ case 'way':
+ query = query_start + "way(" + osm_id + ");" + query_end;
+ break;
+ case 'relation':
+ query = query_start + "relation(" + osm_id + ");" + query_end;
+ break;
+ default:
+ break;
+ }
+ if(query) {
+ // console.log(query);
+ searx.http( 'GET', query ).then(function(html, contentType) {
+ html = JSON.parse(html);
+ if(html && html.elements && html.elements[0]) {
+ var element = html.elements[0];
+ var newHtml = "";
+ for (var row in element.tags) {
+ if(element.tags.name === null || osm_ignore_tags.indexOf(row) == -1) {
+ newHtml += "<tr><td>" + row + "</td><td>";
+ switch(row) {
+ case "phone":
+ case "fax":
+ newHtml += "<a href=\"tel:" + element.tags[row].replace(/ /g,'') + "\">" + element.tags[row] + "</a>";
+ break;
+ case "email":
+ newHtml += "<a href=\"mailto:" + element.tags[row] + "\">" + element.tags[row] + "</a>";
+ break;
+ case "website":
+ case "url":
+ newHtml += "<a href=\"" + element.tags[row] + "\">" + element.tags[row] + "</a>";
+ break;
+ case "wikidata":
+ newHtml += "<a href=\"https://www.wikidata.org/wiki/" + element.tags[row] + "\">" + element.tags[row] + "</a>";
+ break;
+ case "wikipedia":
+ if(element.tags[row].indexOf(":") != -1) {
+ newHtml += "<a href=\"https://" + element.tags[row].substring(0,element.tags[row].indexOf(":")) + ".wikipedia.org/wiki/" + element.tags[row].substring(element.tags[row].indexOf(":")+1) + "\">" + element.tags[row] + "</a>";
+ break;
+ }
+ /* jshint ignore:start */
+ default:
+ /* jshint ignore:end */
+ newHtml += element.tags[row];
+ break;
+ }
+ newHtml += "</td></tr>";
+ }
+ }
+ result_table_loadicon.parentNode.removeChild(result_table_loadicon);
+ result_table.classList.remove('invisible');
+ result_table.querySelector("tbody").innerHTML = newHtml;
+ }
+ })
+ .catch(function() {
+ result_table_loadicon.classList.remove('invisible');
+ result_table_loadicon.innerHTML = "could not load data!";
+ });
+ }
+ }
+
+ // this event occour only once per element
+ event.preventDefault();
+ });
+
+ searx.on('.searx_init_map', 'click', function(event) {
+ // no more request
+ this.classList.remove("searx_init_map");
+
+ //
+ var leaflet_target = this.dataset.leafletTarget;
+ var map_lon = parseFloat(this.dataset.mapLon);
+ var map_lat = parseFloat(this.dataset.mapLat);
+ var map_zoom = parseFloat(this.dataset.mapZoom);
+ var map_boundingbox = JSON.parse(this.dataset.mapBoundingbox);
+ var map_geojson = JSON.parse(this.dataset.mapGeojson);
+
+ searx.loadStyle('leaflet/leaflet.css');
+ searx.loadScript('leaflet/leaflet.js', function() {
+ var map_bounds = null;
+ if(map_boundingbox) {
+ var southWest = L.latLng(map_boundingbox[0], map_boundingbox[2]);
+ var northEast = L.latLng(map_boundingbox[1], map_boundingbox[3]);
+ map_bounds = L.latLngBounds(southWest, northEast);
+ }
+
+ // init map
+ var map = L.map(leaflet_target);
+ // create the tile layer with correct attribution
+ var osmMapnikUrl='https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
+ var osmMapnikAttrib='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors';
+ var osmMapnik = new L.TileLayer(osmMapnikUrl, {minZoom: 1, maxZoom: 19, attribution: osmMapnikAttrib});
+ var osmWikimediaUrl='https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png';
+ var osmWikimediaAttrib = 'Wikimedia maps beta | Maps data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors';
+ var osmWikimedia = new L.TileLayer(osmWikimediaUrl, {minZoom: 1, maxZoom: 19, attribution: osmWikimediaAttrib});
+ // init map view
+ if(map_bounds) {
+ // TODO hack: https://github.com/Leaflet/Leaflet/issues/2021
+ // Still useful ?
+ setTimeout(function () {
+ map.fitBounds(map_bounds, {
+ maxZoom:17
+ });
+ }, 0);
+ } else if (map_lon && map_lat) {
+ if(map_zoom) {
+ map.setView(new L.latLng(map_lat, map_lon),map_zoom);
+ } else {
+ map.setView(new L.latLng(map_lat, map_lon),8);
+ }
+ }
+
+ map.addLayer(osmMapnik);
+
+ var baseLayers = {
+ "OSM Mapnik": osmMapnik/*,
+ "OSM Wikimedia": osmWikimedia*/
+ };
+
+ L.control.layers(baseLayers).addTo(map);
+
+ if(map_geojson) {
+ L.geoJson(map_geojson).addTo(map);
+ } /*else if(map_bounds) {
+ L.rectangle(map_bounds, {color: "#ff7800", weight: 3, fill:false}).addTo(map);
+ }*/
+ });
+
+ // this event occour only once per element
+ event.preventDefault();
+ });
+ });
+})(window, document, window.searx);
diff --git a/searx/static/themes/simple/js/searx_src/searx_results.js b/searx/static/themes/simple/js/searx_src/searx_results.js
new file mode 100644
index 0000000..b13da83
--- /dev/null
+++ b/searx/static/themes/simple/js/searx_src/searx_results.js
@@ -0,0 +1,63 @@
+/**
+* searx is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Affero General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* searx is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Affero General Public License for more details.
+*
+* You should have received a copy of the GNU Affero General Public License
+* along with searx. If not, see < http://www.gnu.org/licenses/ >.
+*
+* (C) 2017 by Alexandre Flament, <alex@al-f.net>
+*/
+(function(w, d, searx) {
+ 'use strict';
+
+ searx.ready(function() {
+ searx.image_thumbnail_layout = new searx.ImageLayout('#urls', '#urls .result-images', 'img.image_thumbnail', 200);
+ searx.image_thumbnail_layout.watch();
+
+ searx.on('.btn-collapse', 'click', function(event) {
+ var btnLabelCollapsed = this.getAttribute('data-btn-text-collapsed');
+ var btnLabelNotCollapsed = this.getAttribute('data-btn-text-not-collapsed');
+ var target = this.getAttribute('data-target');
+ var targetElement = d.querySelector(target);
+ var html = this.innerHTML;
+ if (this.classList.contains('collapsed')) {
+ html = html.replace(btnLabelCollapsed, btnLabelNotCollapsed);
+ } else {
+ html = html.replace(btnLabelNotCollapsed, btnLabelCollapsed);
+ }
+ this.innerHTML = html;
+ this.classList.toggle('collapsed');
+ targetElement.classList.toggle('invisible');
+ });
+
+ searx.on('.media-loader', 'click', function(event) {
+ var target = this.getAttribute('data-target');
+ var iframe_load = d.querySelector(target + ' > iframe');
+ var srctest = iframe_load.getAttribute('src');
+ if (srctest === null || srctest === undefined || srctest === false) {
+ iframe_load.setAttribute('src', iframe_load.getAttribute('data-src'));
+ }
+ });
+
+ w.addEventListener('scroll', function() {
+ var e = d.getElementById('backToTop'),
+ scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
+ if (e !== null) {
+ if (scrollTop >= 200) {
+ e.style.opacity = 1;
+ } else {
+ e.style.opacity = 0;
+ }
+ }
+ });
+
+ });
+
+})(window, document, window.searx);
diff --git a/searx/static/themes/simple/js/searx_src/searx_search.js b/searx/static/themes/simple/js/searx_src/searx_search.js
new file mode 100644
index 0000000..964be21
--- /dev/null
+++ b/searx/static/themes/simple/js/searx_src/searx_search.js
@@ -0,0 +1,117 @@
+/**
+* searx is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Affero General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* searx is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Affero General Public License for more details.
+*
+* You should have received a copy of the GNU Affero General Public License
+* along with searx. If not, see < http://www.gnu.org/licenses/ >.
+*
+* (C) 2017 by Alexandre Flament, <alex@al-f.net>
+*/
+(function(w, d, searx) {
+ 'use strict';
+
+ var firstFocus = true, qinput_id = "q", qinput;
+
+ function placeCursorAtEnd(element) {
+ if (element.setSelectionRange) {
+ var len = element.value.length;
+ element.setSelectionRange(len, len);
+ }
+ }
+
+ function submitIfQuery() {
+ if (qinput.value.length > 0) {
+ var search = document.getElementById('search');
+ setTimeout(search.submit.bind(search), 0);
+ }
+ }
+
+ function createClearButton(qinput) {
+ var cs = document.getElementById('clear_search');
+ var updateClearButton = function() {
+ if (qinput.value.length === 0) {
+ cs.classList.add("empty");
+ } else {
+ cs.classList.remove("empty");
+ }
+ };
+
+ // update status, event listener
+ updateClearButton();
+ cs.addEventListener('click', function() {
+ qinput.value='';
+ qinput.focus();
+ updateClearButton();
+ });
+ qinput.addEventListener('keyup', updateClearButton, false);
+ }
+
+ searx.ready(function() {
+ qinput = d.getElementById(qinput_id);
+
+ function placeCursorAtEndOnce(e) {
+ if (firstFocus) {
+ placeCursorAtEnd(qinput);
+ firstFocus = false;
+ } else {
+ // e.preventDefault();
+ }
+ }
+
+ if (qinput !== null) {
+ // clear button
+ createClearButton(qinput);
+
+ // autocompleter
+ if (searx.autocompleter) {
+ searx.autocomplete = AutoComplete.call(w, {
+ Url: "./autocompleter",
+ EmptyMessage: searx.noItemFound,
+ HttpMethod: searx.method,
+ MinChars: 4,
+ Delay: 300,
+ }, "#" + qinput_id);
+
+ // hack, see : https://github.com/autocompletejs/autocomplete.js/issues/37
+ w.addEventListener('resize', function() {
+ var event = new CustomEvent("position");
+ qinput.dispatchEvent(event);
+ });
+ }
+
+ qinput.addEventListener('focus', placeCursorAtEndOnce, false);
+ qinput.focus();
+ }
+
+ // vanilla js version of search_on_category_select.js
+ if (qinput !== null && searx.search_on_category_select) {
+ d.querySelector('.help').className='invisible';
+
+ searx.on('#categories input', 'change', function(e) {
+ var i, categories = d.querySelectorAll('#categories input[type="checkbox"]');
+ for(i=0; i<categories.length; i++) {
+ if (categories[i] !== this && categories[i].checked) {
+ categories[i].click();
+ }
+ }
+ if (! this.checked) {
+ this.click();
+ }
+ submitIfQuery();
+ return false;
+ });
+
+ searx.on(d.getElementById('time_range'), 'change', submitIfQuery);
+ searx.on(d.getElementById('language'), 'change', submitIfQuery);
+ }
+
+ });
+
+})(window, document, window.searx);
diff --git a/searx/static/themes/simple/less/autocomplete.less b/searx/static/themes/simple/less/autocomplete.less
new file mode 100644
index 0000000..93f7df1
--- /dev/null
+++ b/searx/static/themes/simple/less/autocomplete.less
@@ -0,0 +1,69 @@
+/*! Autocomplete.js v2.6.3 | license MIT | (c) 2017, Baptiste Donaux | http://autocomplete-js.com */
+
+@background_color: white;
+
+.autocomplete {
+ position: absolute;
+ max-height: 0;
+ overflow-y: hidden;
+ text-align: left;
+
+ &:active, &:focus, &:hover {
+ background-color: @background_color;
+ }
+
+ &:empty {
+ display: none;
+ }
+
+ > ul {
+ list-style-type: none;
+ margin: 0;
+ padding: 0;
+
+ > li {
+ cursor: pointer;
+ padding: 5px 0 5px 10px;
+
+ &.active, &:active, &:focus {
+ background-color: @color-base;
+
+ a:active, a:focus, a:hover {
+ text-decoration: none;
+ }
+ }
+
+ &.locked {
+ cursor: inherit;
+ }
+ }
+ }
+
+ &.open {
+ display: block;
+ background-color: @background_color;
+ border: 1px solid @color-base;
+ max-height: 500px;
+ overflow-y: auto;
+ z-index:100;
+
+ &:empty {
+ display: none;
+ }
+ }
+}
+
+
+@media screen and (max-width: @results-width) {
+
+ .autocomplete {
+ bottom: 0;
+ }
+
+ .autocomplete > ul > li {
+ padding: 7px 0 7px 10px;
+ border-bottom: 1px solid @color-result-top-border;
+ text-align: left;
+ }
+
+}
diff --git a/searx/static/themes/simple/less/code.less b/searx/static/themes/simple/less/code.less
new file mode 100644
index 0000000..a688dd9
--- /dev/null
+++ b/searx/static/themes/simple/less/code.less
@@ -0,0 +1,83 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #f8f8f8; }
+.highlight .c { color: #408080; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { color: #008000; font-weight: bold } /* Keyword */
+.highlight .o { color: #666666 } /* Operator */
+.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
+.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #008000 } /* Keyword.Pseudo */
+.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #B00040 } /* Keyword.Type */
+.highlight .m { color: #666666 } /* Literal.Number */
+.highlight .s { color: #BA2121 } /* Literal.String */
+.highlight .na { color: #7D9029 } /* Name.Attribute */
+.highlight .nb { color: #008000 } /* Name.Builtin */
+.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.highlight .no { color: #880000 } /* Name.Constant */
+.highlight .nd { color: #AA22FF } /* Name.Decorator */
+.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #0000FF } /* Name.Function */
+.highlight .nl { color: #A0A000 } /* Name.Label */
+.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #19177C } /* Name.Variable */
+.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mf { color: #666666 } /* Literal.Number.Float */
+.highlight .mh { color: #666666 } /* Literal.Number.Hex */
+.highlight .mi { color: #666666 } /* Literal.Number.Integer */
+.highlight .mo { color: #666666 } /* Literal.Number.Oct */
+.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
+.highlight .sc { color: #BA2121 } /* Literal.String.Char */
+.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
+.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.highlight .sx { color: #008000 } /* Literal.String.Other */
+.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
+.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
+.highlight .ss { color: #19177C } /* Literal.String.Symbol */
+.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #19177C } /* Name.Variable.Class */
+.highlight .vg { color: #19177C } /* Name.Variable.Global */
+.highlight .vi { color: #19177C } /* Name.Variable.Instance */
+.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
+
+.highlight pre {
+ overflow: auto;
+}
+
+.highlight .lineno {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ cursor: default;
+
+ &::selection {
+ background: transparent; /* WebKit/Blink Browsers */
+ }
+ &::-moz-selection {
+ background: transparent; /* Gecko Browsers */
+ }
+}
diff --git a/searx/static/themes/simple/less/definitions.less b/searx/static/themes/simple/less/definitions.less
new file mode 100644
index 0000000..7a43720
--- /dev/null
+++ b/searx/static/themes/simple/less/definitions.less
@@ -0,0 +1,135 @@
+/*
+ * searx, A privacy-respecting, hackable metasearch engine
+ *
+ * To change the colors of the site, simple edit this variables
+ */
+
+/// Basic Colors
+
+@color-base: #3498DB;
+@color-base-dark: #084999;
+@color-base-light: #ECF0F1;
+@color-highlight: #094089;
+@color-black: #000000;
+
+///
+@color-error: #db3434;
+@color-error-background: lighten(@color-error, 40%);
+
+@color-warning: #dbba34;
+@color-warning-background: lighten(@color-warning, 40%);
+
+/// General
+
+@color-font: #444;
+@color-font-light: #888;
+
+@color-red: #25a55b;
+
+@color-url-font: #29314d;
+@color-url-visited-font: #684898;
+@results-width: 50em;
+@search-width: 40em;
+
+//
+@color-a-font: @color-base;
+@color-a-font-hover: @color-base;
+
+
+/// Start-Screen
+
+
+
+/// Search-Input
+
+@color-search-border: @color-base;
+@color-search-background: #FFF;
+@color-search-font: #222;
+
+/// Autocompleter
+
+@color-autocompleter-choices-background: #FFF;
+@color-autocompleter-choices-border: @color-base;
+@color-autocompleter-choices-border-left-right: @color-base;
+@color-autocompleter-choices-border-bottom: @color-base;
+
+@color-autocompleter-choices-font: #444;
+
+/// Answers
+@color-answers-border: @color-base-dark;
+
+// Selected
+@color-autocompleter-selected-background: #444;
+@color-autocompleter-selected-font: #FFF;
+@color-autocompleter-selected-queried-font: #9FCFFF;
+
+/// Categories
+
+@color-categories-item-selected: @color-base;
+@color-categories-item-selected-font: #FFF;
+
+@color-categories-item-border-selected: @color-base-dark;
+@color-categories-item-border-unselected: #E8E7E6;
+@color-categories-item-border-unselected-hover: @color-base;
+
+
+/// Results
+
+@color-suggestions-button-background: @color-base;
+@color-suggestions-button-font: #FFF;
+
+@color-download-button-background: @color-base;
+@color-download-button-font: #FFF;
+
+@color-result-search-background: @color-base-light;
+
+@color-result-definition-border: gray;
+@color-result-torrent-border: lightgray;
+@color-result-top-border: #E8E7E6;
+
+// Link to result
+@color-result-link-font: @color-base-dark;
+@color-result-link-visited-font: @color-url-visited-font;
+
+// Url to result
+@color-result-url-font: @color-red;
+
+// Publish Date
+@color-result-publishdate-font: @color-font-light;
+
+// Images
+@color-result-image-span-background-hover: rgba(0, 0, 0, 0.6);
+@color-result-image-span-font: #FFF;
+
+// Search-URL
+@color-result-search-url-border: #888;
+@color-result-search-url-font: #444;
+
+
+/// Settings
+
+@color-settings-fieldset: @color-base;
+@color-settings-table-striped: #dbdbdb;
+@color-settings-tr-hover: #ececec;
+
+// Labels
+@color-settings-label-allowed-background: #E74C3C;
+@color-settings-label-allowed-font: #FFF;
+
+@color-settings-label-deny-background: #2ECC71;
+@color-settings-label-deny-font: @color-font;
+
+@color-settings-return-background: @color-base;
+@color-settings-return-font: #FFF;
+
+/// Other
+
+@color-engines-font: @color-font-light;
+@color-percentage-div-background: #444;
+
+/// Load fonts from this directory.
+@icon-font-path: "../../../fonts/";
+//** File name for all font files.
+@icon-font-name: "glyphicons-halflings-regular";
+//** Element ID within SVG icon file.
+@icon-font-svg-id: "glyphicons_halflingsregular";
diff --git a/searx/static/themes/simple/less/index.less b/searx/static/themes/simple/less/index.less
new file mode 100644
index 0000000..e1efdac
--- /dev/null
+++ b/searx/static/themes/simple/less/index.less
@@ -0,0 +1,43 @@
+.index {
+
+ text-align: center;
+
+ .title {
+ background: url('../img/searx.png') no-repeat;
+ width: 100%;
+ min-height: 80px;
+ background-position: center;
+ }
+
+ h1 {
+ font-size: 5em;
+ visibility: hidden;
+ }
+
+ #search {
+ margin: 0 auto;
+ background: inherit;
+ border: inherit;
+ }
+
+ .search_filters {
+ display: block;
+ margin: 1em 0;
+ }
+
+ .category label {
+ padding: 6px 10px;
+ border-bottom: initial !important;
+ }
+
+}
+
+@media screen and (max-width: 75em) {
+
+ div.title {
+ h1 {
+ font-size: 1em;
+ }
+ }
+
+}
diff --git a/searx/static/themes/simple/less/mixins.less b/searx/static/themes/simple/less/mixins.less
new file mode 100644
index 0000000..b3aa4e1
--- /dev/null
+++ b/searx/static/themes/simple/less/mixins.less
@@ -0,0 +1,62 @@
+/*
+* searx, A privacy-respecting, hackable metasearch engine
+*/
+
+// Mixins
+.text-size-adjust (@property: 100%) {
+ -webkit-text-size-adjust: @property;
+ -ms-text-size-adjust: @property;
+ -moz-text-size-adjust: @property;
+ text-size-adjust: @property;
+}
+
+.rounded-corners (@radius: 4px) {
+ -webkit-border-radius: @radius;
+ -moz-border-radius: @radius;
+ border-radius: @radius;
+}
+
+// disable user selection
+.disable-user-select () {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+// select all on focus
+.select-all-on-focus() {
+ -webkit-user-select: all;
+ -moz-user-select: all;
+ -ms-user-select: element;
+ user-select: all;
+}
+
+// see https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Advanced_layouts_with_flexbox
+.flexbox() {
+ display: -webkit-box;
+ display: -moz-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+}
+
+.inline-flex() {
+ display: -webkit-inline-box;
+ display: -moz-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+}
+
+.flex-direction-row() {
+ -webkit-box-direction: normal;
+ -webkit-box-orient: horizontal;
+ -moz-box-direction: normal;
+ -moz-box-orient: horizontal;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+}
diff --git a/searx/static/themes/simple/less/normalize.less b/searx/static/themes/simple/less/normalize.less
new file mode 100644
index 0000000..47b010e
--- /dev/null
+++ b/searx/static/themes/simple/less/normalize.less
@@ -0,0 +1,341 @@
+/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */
+
+/* Document
+ ========================================================================== */
+
+/**
+ * 1. Correct the line height in all browsers.
+ * 2. Prevent adjustments of font size after orientation changes in iOS.
+ */
+
+html {
+ line-height: 1.15; /* 1 */
+ -webkit-text-size-adjust: 100%; /* 2 */
+}
+
+/* Sections
+ ========================================================================== */
+
+/**
+ * Remove the margin in all browsers.
+ */
+
+body {
+ margin: 0;
+}
+
+/**
+ * Correct the font size and margin on `h1` elements within `section` and
+ * `article` contexts in Chrome, Firefox, and Safari.
+ */
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+/* Grouping content
+ ========================================================================== */
+
+/**
+ * 1. Add the correct box sizing in Firefox.
+ * 2. Show the overflow in Edge and IE.
+ */
+
+hr {
+ box-sizing: content-box; /* 1 */
+ height: 0; /* 1 */
+ overflow: visible; /* 2 */
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+pre {
+ font-family: monospace, monospace; /* 1 */
+ font-size: 1em; /* 2 */
+}
+
+/* Text-level semantics
+ ========================================================================== */
+
+/**
+ * Remove the gray background on active links in IE 10.
+ */
+
+a {
+ background-color: transparent;
+}
+
+/**
+ * 1. Remove the bottom border in Chrome 57-
+ * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
+ */
+
+abbr[title] {
+ border-bottom: none; /* 1 */
+ text-decoration: underline; /* 2 */
+ text-decoration: underline dotted; /* 2 */
+}
+
+/**
+ * Add the correct font weight in Chrome, Edge, and Safari.
+ */
+
+b,
+strong {
+ font-weight: bolder;
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+code,
+kbd,
+samp {
+ font-family: monospace, monospace; /* 1 */
+ font-size: 1em; /* 2 */
+}
+
+/**
+ * Add the correct font size in all browsers.
+ */
+
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` elements from affecting the line height in
+ * all browsers.
+ */
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+sup {
+ top: -0.5em;
+}
+
+/* Embedded content
+ ========================================================================== */
+
+/**
+ * Remove the border on images inside links in IE 10.
+ */
+
+img {
+ border-style: none;
+}
+
+/* Forms
+ ========================================================================== */
+
+/**
+ * 1. Change the font styles in all browsers.
+ * 2. Remove the margin in Firefox and Safari.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ font-family: inherit; /* 1 */
+ font-size: 100%; /* 1 */
+ line-height: 1.15; /* 1 */
+ margin: 0; /* 2 */
+}
+
+/**
+ * Show the overflow in IE.
+ * 1. Show the overflow in Edge.
+ */
+
+button,
+input { /* 1 */
+ overflow: visible;
+}
+
+/**
+ * Remove the inheritance of text transform in Edge, Firefox, and IE.
+ * 1. Remove the inheritance of text transform in Firefox.
+ */
+
+button,
+select { /* 1 */
+ text-transform: none;
+}
+
+/**
+ * Correct the inability to style clickable types in iOS and Safari.
+ */
+
+button,
+[type="button"],
+[type="reset"],
+[type="submit"] {
+ -webkit-appearance: button;
+}
+
+/**
+ * Remove the inner border and padding in Firefox.
+ */
+
+button::-moz-focus-inner,
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+/**
+ * Restore the focus styles unset by the previous rule.
+ */
+
+button:-moz-focusring,
+[type="button"]:-moz-focusring,
+[type="reset"]:-moz-focusring,
+[type="submit"]:-moz-focusring {
+ outline: 1px dotted ButtonText;
+}
+
+/**
+ * Correct the padding in Firefox.
+ */
+
+fieldset {
+ padding: 0.35em 0.75em 0.625em;
+}
+
+/**
+ * 1. Correct the text wrapping in Edge and IE.
+ * 2. Correct the color inheritance from `fieldset` elements in IE.
+ * 3. Remove the padding so developers are not caught out when they zero out
+ * `fieldset` elements in all browsers.
+ */
+
+legend {
+ box-sizing: border-box; /* 1 */
+ color: inherit; /* 2 */
+ display: table; /* 1 */
+ max-width: 100%; /* 1 */
+ padding: 0; /* 3 */
+ white-space: normal; /* 1 */
+}
+
+/**
+ * Add the correct vertical alignment in Chrome, Firefox, and Opera.
+ */
+
+progress {
+ vertical-align: baseline;
+}
+
+/**
+ * Remove the default vertical scrollbar in IE 10+.
+ */
+
+textarea {
+ overflow: auto;
+}
+
+/**
+ * 1. Add the correct box sizing in IE 10.
+ * 2. Remove the padding in IE 10.
+ */
+
+[type="checkbox"],
+[type="radio"] {
+ box-sizing: border-box; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Correct the cursor style of increment and decrement buttons in Chrome.
+ */
+
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Correct the odd appearance in Chrome and Safari.
+ * 2. Correct the outline style in Safari.
+ */
+
+[type="search"] {
+ -webkit-appearance: textfield; /* 1 */
+ outline-offset: -2px; /* 2 */
+}
+
+/**
+ * Remove the inner padding in Chrome and Safari on macOS.
+ */
+
+[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * 1. Correct the inability to style clickable types in iOS and Safari.
+ * 2. Change font properties to `inherit` in Safari.
+ */
+
+::-webkit-file-upload-button {
+ -webkit-appearance: button; /* 1 */
+ font: inherit; /* 2 */
+}
+
+/* Interactive
+ ========================================================================== */
+
+/*
+ * Add the correct display in Edge, IE 10+, and Firefox.
+ */
+
+details {
+ display: block;
+}
+
+/*
+ * Add the correct display in all browsers.
+ */
+
+summary {
+ display: list-item;
+}
+
+/* Misc
+ ========================================================================== */
+
+/**
+ * Add the correct display in IE 10+.
+ */
+
+template {
+ display: none;
+}
+
+/**
+ * Add the correct display in IE 10.
+ */
+
+[hidden] {
+ display: none;
+}
diff --git a/searx/static/themes/simple/less/preferences.less b/searx/static/themes/simple/less/preferences.less
new file mode 100644
index 0000000..e1e88b5
--- /dev/null
+++ b/searx/static/themes/simple/less/preferences.less
@@ -0,0 +1,103 @@
+#main_preferences {
+ form {
+ width: 100%;
+ }
+
+ fieldset {
+ margin: 8px;
+ border: none;
+ }
+
+ legend {
+ margin: 0;
+ padding: 5px 0 0 0;
+ display: block;
+ float:left;
+ width: 300px;
+ }
+
+ .value {
+ margin: 0;
+ padding: 0;
+ float:left;
+ width: 15em;
+ }
+
+ .description {
+ margin: 0;
+ padding: 5px 0 0 0;
+ float:left;
+ width: 50%;
+ color: darken(#dcdcdc, 30%);
+ font-size: 90%;
+ }
+
+ select {
+ width: 200px;
+ font-size: inherit !important;
+ }
+
+ table {
+ border-collapse: collapse;
+ }
+
+ table td {
+ text-align: center;
+ }
+
+ table.cookies {
+ width: auto;
+
+ th, td {
+ text-align: left;
+ padding: 0.25em;
+ }
+
+ th:first-child, td:first-child {
+ padding-right: 4em;
+ }
+
+ &>tbody>tr:nth-child(even)>th,
+ &>tbody>tr:nth-child(even)>td {
+ background-color: @color-settings-tr-hover;
+ }
+ }
+
+ .name, .shortcut {
+ text-align: left;
+ }
+
+ .preferences_back {
+ background: none repeat scroll 0 0 @color-settings-return-background;
+ color: white;
+ border: 0 none;
+ .rounded-corners;
+ cursor: pointer;
+ display: inline-block;
+ margin: 2px 4px;
+ padding: 0.5em;
+
+ a {
+ display: block;
+ color: @color-settings-return-font;
+ }
+
+ a::first-letter {
+ text-transform: uppercase;
+ }
+ }
+
+
+ div.selectable_url {
+ pre {
+ width: 100%;
+ }
+ }
+
+}
+
+@media screen and (max-width: 75em) {
+ .preferences_back {
+ clear: both;
+ }
+}
diff --git a/searx/static/themes/simple/less/search.less b/searx/static/themes/simple/less/search.less
new file mode 100644
index 0000000..dbcfc93
--- /dev/null
+++ b/searx/static/themes/simple/less/search.less
@@ -0,0 +1,264 @@
+/*
+* searx, A privacy-respecting, hackable metasearch engine
+*/
+
+#search {
+ padding: 0 2em;
+ margin: 0;
+ background: #f7f7f7;
+ border-bottom: 1px solid #d7d7d7;
+}
+
+#search_wrapper {
+ padding: 10px 0;
+}
+
+.search_box {
+ margin: 0 12px 0 0;
+ display: inline-flex;
+ flex-direction: row;
+
+ white-space: nowrap;
+ /*
+ &:has(q:focus) {
+ box-shadow: 0px 0px 5px #CCC;
+}
+*/
+}
+
+#clear_search {
+ display: block;
+ border-collapse: separate;
+ box-sizing: border-box;
+ width: 1.8em;
+
+ margin: 0;
+ padding: 2px;
+ height: 2.2em;
+ background: none repeat scroll 0 0 @color-search-background;
+ border-top: 1px solid @color-search-border;
+ border-bottom: 1px solid @color-search-border;
+ border-right: none;
+ border-left: none;
+ border-radius: 0px;
+ outline: none;
+ color: @color-search-font;
+ font-size: 16px;
+ z-index: 10000;
+
+ &:hover {
+ color: @color-search-border;
+ }
+
+ &.empty * {
+ display: none;
+ }
+}
+
+#q::-ms-clear, #q::-webkit-search-cancel-button {
+ display: none;
+}
+
+#q, #send_search {
+ display: block !important;
+ border-collapse: separate;
+ box-sizing: border-box;
+
+ margin: 0;
+ padding: 2px;
+ height: 2.2em;
+ background: none repeat scroll 0 0 @color-search-background;
+ border: 1px solid @color-search-border;
+ border-radius: 0px;
+ outline: none;
+ color: @color-search-font;
+ font-size: 16px;
+ z-index: 2;
+}
+
+#q {
+ outline: medium none;
+ padding-left: 8px;
+ padding-right: 0px !important;
+ border-right: none;
+ width: @search-width;
+}
+
+#send_search {
+ border-left: none;
+ width: 2.2em;
+
+ &:hover {
+ cursor: pointer;
+ background-color: @color-search-border;
+ color: @color-base-light;
+ }
+}
+
+.no-js #send_search {
+ width: auto !important;
+}
+
+.search_filters {
+ display: inline-block;
+ vertical-align: middle;
+}
+
+@media screen and (max-width: 75em) {
+
+ #categories {
+ font-size: 90%;
+ clear: both;
+
+ .checkbox_container {
+ margin-top: 2px;
+ margin: auto;
+ }
+ }
+
+ html.touch {
+ #main_index, #main_results {
+
+ #categories_container {
+ width: 1000px;
+ width: -moz-max-content;
+ width: -webkit-max-content;
+ width: max-content;
+
+ .category {
+ display: inline-block;
+ width: auto;
+ }
+ }
+
+ #categories {
+ width: 100%;
+ margin: 0;
+ text-align: left;
+ overflow-x: scroll;
+ overflow-y: hidden;
+ -webkit-overflow-scrolling: touch;
+ }
+ }
+ }
+
+}
+
+@media screen and (max-width: @results-width) {
+
+ #search {
+ width: 100%;
+ margin: 0;
+ padding: 0.1em 0 0 0;
+ }
+
+ #search_wrapper {
+ width: 100%;
+ margin: 0 0 0.7em 0;
+ padding: 0;
+ }
+
+ .search_box {
+ // hack, should bew 100% ?
+ width: 99%;
+ margin: 0.1em;
+ padding: 0 0.1em 0 0;
+ display: flex;
+ flex-direction: row;
+ }
+
+ #q {
+ width: auto !important;
+ flex: 1;
+ }
+
+ .search_filters {
+ display: block;
+ margin: 0.5em;
+ }
+
+ .language, .time_range {
+ width: 45%;
+ }
+
+ .category {
+ display: block;
+ width: 90%;
+
+ label {
+ border-bottom: 0;
+ }
+ }
+
+}
+
+#categories {
+ margin: 0 10px 0 0;
+ .disable-user-select;
+
+ &::-webkit-scrollbar {
+ width: 0;
+ height: 0;
+ }
+}
+
+.category {
+ display: inline-block;
+ position: relative;
+ margin: 0 3px;
+ padding: 0px;
+
+ input {
+ display: none;
+ }
+
+ label {
+ cursor: pointer;
+ padding: 4px 10px;
+ margin: 0;
+ display: block;
+ text-transform: capitalize;
+ font-size: 0.9em;
+ border-bottom: 2px solid transparent;
+ .disable-user-select;
+ }
+
+ input[type="checkbox"]:focus + label {
+ box-shadow: 0px 0px 8px #3498DB;
+ }
+
+ /*label:hover {
+ border-bottom: 2px solid @color-categories-item-border-unselected-hover;
+ }*/
+
+ input[type="checkbox"]:checked + label {
+ background: @color-categories-item-selected;
+ color: @color-categories-item-selected-font;
+ border-bottom: 2px solid @color-categories-item-border-selected;
+ }
+}
+
+#categories_container {
+
+ position: relative;
+
+ .help {
+ position: absolute;
+ width: 100%;
+ bottom: -20px;
+ overflow: hidden;
+
+ opacity: 0;
+ transition: opacity 1s ease;
+
+ font-size: 0.8em;
+ text-position: center;
+ background: white;
+ }
+
+ &:hover .help {
+ opacity: 0.8;
+ transition: opacity 1s ease;
+ }
+
+}
diff --git a/searx/static/themes/simple/less/stats.less b/searx/static/themes/simple/less/stats.less
new file mode 100644
index 0000000..c134bd0
--- /dev/null
+++ b/searx/static/themes/simple/less/stats.less
@@ -0,0 +1,8 @@
+.percentage {
+ position: relative;
+ width: 300px;
+
+ div {
+ background: @color-percentage-div-background;
+ }
+}
diff --git a/searx/static/themes/simple/less/style-rtl.less b/searx/static/themes/simple/less/style-rtl.less
new file mode 100644
index 0000000..2b68bcf
--- /dev/null
+++ b/searx/static/themes/simple/less/style-rtl.less
@@ -0,0 +1,6 @@
+@import "style.less";
+
+#search_submit {
+ left: 1px;
+ right:auto;
+}
diff --git a/searx/static/themes/simple/less/style.less b/searx/static/themes/simple/less/style.less
new file mode 100644
index 0000000..9f69f7a
--- /dev/null
+++ b/searx/static/themes/simple/less/style.less
@@ -0,0 +1,721 @@
+/*
+* searx, A privacy-respecting, hackable metasearch engine
+*
+* To convert "style.less" to "style.css" run: $make styles
+*/
+
+@import "normalize.less";
+
+@import "definitions.less";
+
+@import "mixins.less";
+
+@import "code.less";
+
+@import "toolkit.less";
+
+@import "autocomplete.less";
+
+// ion-icon
+@import "ion.less";
+
+.ion-icon-big {
+ .ion-icon;
+ font-size: 149%;
+}
+
+// for index.html template
+@import "index.less";
+
+// for preferences.html template
+@import "preferences.less";
+
+// Search-Field
+@import "search.less";
+
+// Main LESS-Code
+html {
+ font-family: arial, sans-serif;
+ font-size: 0.9em;
+ .text-size-adjust;
+ color: @color-font;
+ padding: 0;
+ margin: 0;
+}
+
+body, main {
+ padding: 0;
+ margin: 0;
+}
+
+main {
+ width: 100%;
+ // position: absolute;
+}
+
+footer {
+ // position:absolute;
+ bottom:0;
+ width:100%;
+ height:50px;
+}
+
+#main_preferences, #main_about, #main_stats {
+ margin: 3em;
+ width: auto;
+}
+
+footer {
+ bottom: 0;
+ height: 3em;
+ margin: 1em 0;
+ padding: 1em 0;
+ clear: both;
+ width: 100%;
+ text-align: center;
+
+ p {
+ font-size: 0.9em;
+ }
+}
+
+#main_preferences h1, #main_stats h1 {
+ background: url('../img/searx.png') no-repeat;
+ background-size: auto 75%;
+ min-height: 40px;
+ margin: 0 auto;
+
+ span {
+ visibility: hidden;
+ }
+}
+
+input[type="submit"], #results button[type="submit"] {
+ padding: 0.5rem;
+ margin: 2px 4px;
+ display: inline-block;
+ background: @color-download-button-background;
+ color: @color-download-button-font;
+ .rounded-corners;
+ border: 0;
+ cursor: pointer;
+}
+
+a {
+ text-decoration: none;
+ color: @color-url-font;
+
+ &:visited {
+ color: @color-url-visited-font;
+
+ .highlight {
+ color: @color-url-visited-font;
+ }
+ }
+}
+
+article[data-vim-selected] {
+ background: #f7f7f7;
+}
+
+article[data-vim-selected]::before {
+ position: absolute;
+ left: 1em;
+ padding: 2px;
+ content: ">";
+ font-weight: bold;
+ color: @color-base;
+}
+
+article.result-images[data-vim-selected] {
+ background: @color-base;
+}
+
+article.result-images[data-vim-selected]::before {
+ display: none;
+ content: "";
+}
+
+.result {
+ margin: 19px 0 18px 0;
+ padding: 0;
+
+ h3 {
+ font-size: 1.1em;
+ word-wrap:break-word;
+ margin: 5px 0 1px 0;
+ padding: 0;
+ margin-bottom: 0;
+
+ a {
+ color: @color-result-link-font;
+ font-weight: normal;
+ font-size: 1.1em;
+
+ &:visited {
+ color: @color-result-link-visited-font;
+ }
+
+ &:focus, &:hover {
+ text-decoration: underline;
+ border: none;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ outline:none;
+ }
+ }
+ }
+
+ .cache_link, .proxyfied_link {
+ font-size: 0.9em !important;
+ }
+
+ .content, .stat, .altlink {
+ font-size: 0.9em;
+ margin: 0;
+ padding: 0;
+ max-width: 54em;
+ word-wrap:break-word;
+ line-height: 1.24;
+
+ .highlight {
+ color: @color-black;
+ background: inherit;
+ font-weight: bold;
+ }
+ }
+
+ .codelines {
+ .highlight {
+ color: inherit;
+ background: inherit;
+ font-weight: normal;
+ }
+ }
+
+ .url {
+ font-size: 0.9em;
+ margin: 0 0 3px 0;
+ padding: 0;
+ max-width: 54em;
+ word-wrap:break-word;
+ color: @color-result-url-font;
+ }
+
+ .published_date {
+ font-size: 0.8em;
+ color: @color-result-publishdate-font;
+ }
+
+ img {
+
+ &.thumbnail {
+ float: left;
+ padding: 0 5px 10px 0;
+ width: 20em;
+ min-width: 20em;
+ min-height: 8em;
+ // background: @color-base-light;
+ }
+
+ &.image {
+ float: left;
+ padding: 0 5px 10px 0;
+ width: 100px;
+ max-height: 100px;
+ object-fit: scale-down;
+ object-position: right top;
+ }
+
+ }
+
+ .break {
+ clear: both;
+ }
+
+}
+
+.category-social .image {
+ width: auto !important;
+ min-width: 48px;
+ min-height: 48px;
+ padding: 0 5px 25px 0 !important;
+}
+
+.result-videos .content {
+ overflow: hidden;
+}
+
+.engines {
+ float: right;
+ color: @color-engines-font;
+
+ span {
+ font-size: smaller;
+ margin: 0 0.5em 0 0;
+ }
+}
+
+.small_font {
+ font-size: 0.8em;
+}
+
+.highlight {
+ color: @color-highlight;
+ background: inherit;
+ font-weight: bold;
+}
+
+.result-images {
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ position: relative;
+ max-height: 200px;
+
+ img {
+ float: inherit;
+ margin: 0;
+ padding: 0;
+ border: none;
+ max-height: 200px;
+ background: @color-base-dark;
+ }
+
+ span a {
+ display: none;
+ color: @color-result-image-span-font;
+ }
+
+ &:hover span a {
+ display: block;
+ position: absolute;
+ bottom: 0;
+ right: 0;
+ padding: 4px;
+ margin: 0 0 4px 4px;
+ background-color: @color-result-image-span-background-hover;
+ font-size: 0.7em;
+ }
+}
+
+.torrent_result {
+ border-left: 10px solid @color-result-torrent-border;
+ padding-left: 3px;
+
+ p {
+ margin: 3px;
+ font-size: 0.8em;
+ }
+
+ a {
+ color: @color-result-link-font;
+
+ &:hover {
+ text-decoration: underline;
+ }
+
+ &:visited {
+ color: @color-result-link-visited-font;
+ }
+ }
+}
+
+#results {
+ margin: 2em 2em 20px 2em;
+ padding: 0;
+ width: @results-width;
+}
+
+#suggestions {
+
+ .wrapper {
+ display: flex;
+ flex-flow: row wrap;
+ justify-content: flex-end;
+
+ form {
+ display: inline-block;
+ flex: 1 1 50%;
+ }
+ }
+}
+
+#suggestions, #answers, #corrections {
+ max-width: @results-width;
+}
+
+#suggestions, #answers, #infoboxes, #corrections {
+
+ input {
+ padding: 0;
+ margin: 3px;
+ font-size: 0.9em;
+ display: inline-block;
+ background: transparent;
+ color: @color-result-search-url-font;
+ cursor: pointer;
+ }
+
+ input[type="submit"], .infobox .url a {
+ color: @color-result-link-font;
+ text-decoration: none;
+ font-size: 0.9rem;
+
+ &:hover {
+ text-decoration: underline;
+ }
+ }
+
+}
+
+#corrections {
+ display: flex;
+ flex-flow: row wrap;
+ margin: 1em 0;
+
+ h4, input[type="submit"] {
+ display: inline-block;
+ margin: 0 0.5em 0 0;
+ }
+
+ input[type="submit"]::after {
+ content: ", "
+ }
+
+}
+
+#suggestions .title, #search_url .title, #apis .title {
+ margin: 2em 0 0.5em 0;
+ color: @color-font;
+}
+
+#answers {
+ margin: 10px 8px 10px 8px;
+ border: 1px solid #ddd;
+ padding: 0.9em;
+ box-shadow: 0px 0px 5px #CCC;
+
+ h4 {
+ display: none;
+ }
+
+ .answer {
+ display: block;
+ font-size: 1.2em;
+ font-weight: bold;
+ }
+}
+
+#answers, #infoboxes {
+ form {
+ min-width: 210px;
+ }
+}
+
+#sidebar {
+ position: absolute;
+ top: 100px;
+ left: 57em;
+
+ margin: 0px 2px 5px 5px;
+ padding: 0px 2px 2px;
+ max-width: 25em;
+ word-wrap: break-word;
+
+ .infobox {
+ margin: 10px 0 10px;
+ border: 1px solid #ddd;
+ padding: 0.9em;
+ font-size: 0.9em;
+ box-shadow: 0px 0px 5px #CCC;
+
+ h2 {
+ margin: 0 0 .5em 0;
+ }
+
+ img {
+ max-width: 100%;
+ max-height: 12em;
+ display: block;
+ margin: 0;
+ padding: 0;
+ }
+
+ dl {
+ margin: 0.5em 0;
+ }
+
+ dt {
+ display: inline;
+ margin: 0.5em 0.25em 0.5em 0;
+ padding: 0;
+ font-weight: bold;
+ }
+
+ dd {
+ display: inline;
+ margin: 0.5em 0;
+ padding: 0;
+ }
+
+ input {
+ font-size: 1em;
+ }
+
+ br {
+ clear: both;
+ }
+
+ .attributes, .urls {
+ clear: both;
+ }
+
+ }
+}
+
+#search_url {
+ margin-top: 8px;
+
+ div.selectable_url {
+ pre {
+ width: 200em;
+ }
+ }
+}
+
+#linkto_preferences {
+ position: absolute;
+ right: 10px;
+ top: 0.9em;
+ padding: 0;
+ border: 0;
+ display: block;
+
+ font-size: 1.2em;
+ color: @color-search-font;
+
+ a:link *, a:hover *, a:visited *, a:active * {
+ color: @color-search-font;
+ }
+}
+
+#pagination {
+ clear: both;
+
+ br {
+ clear: both;
+ }
+}
+
+#apis {
+ margin-top: 8px;
+ clear: both;
+}
+
+#backToTop {
+ border: 1px solid #ddd;
+ margin: 0 0 0 2em;
+ padding: 0;
+ font-size: 1em;
+ box-shadow: 0px 0px 5px #CCC;
+ background: white;
+ position: fixed;
+ bottom: 85px;
+ left: @results-width;
+ transition: opacity 0.5s;
+ opacity: 0;
+
+ a {
+ display: block;
+ margin: 0;
+ padding: 0.6em;
+ }
+}
+
+@media screen and (max-width: 75em) {
+
+ #main_preferences, #main_about, #main_stats {
+ margin: 0.5em;
+ width: auto;
+ }
+
+ #suggestions, #answers {
+ margin-top: 1em;
+ }
+
+ #infoboxes {
+ position: inherit;
+ max-width: inherit;
+
+ .infobox {
+ clear:both;
+
+ img {
+ float: left;
+ max-width: 10em;
+ margin: 0.5em 0.5em 0.5em 0;
+ }
+ }
+
+ }
+
+ #sidebar {
+ position: static;
+ max-width: @results-width;
+ margin: 0 0 2px 0;
+ padding: 0;
+ float: none;
+ border: none;
+ width: auto;
+
+ input {
+ border: 0;
+ }
+ }
+
+ #apis {
+ display: none;
+ }
+
+ #search_url {
+ display: none;
+ }
+
+ .result {
+ border-bottom: 1px solid @color-result-top-border;
+ margin: 0;
+ padding-top: 8px;
+ padding-bottom: 6px;
+
+ h3 {
+ margin: 0 0 1px 0;
+ }
+
+ .thumbnail {
+ max-width: 98%;
+ }
+
+ .url {
+
+ span.url {
+ display: block;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ width: 100%;
+ }
+
+ a {
+ float: right;
+ padding: 0 0.5em;
+ }
+
+ }
+
+ .engines {
+ float: right;
+ padding: 0 0 3px 0;
+ }
+ }
+
+ .result-images {
+ border-bottom: none !important;
+ }
+
+ .image_result {
+ max-width: 98%;
+ img {
+ max-width: 98%;
+ }
+ }
+}
+
+
+#main_results div#results.only_template_images {
+ flex-direction: column;
+ width: auto;
+ display: flex;
+
+ #sidebar {
+ position: relative;
+ top: auto;
+ order: 2;
+ }
+
+ #urls {
+ position: relative;
+ order: 1;
+ }
+
+ #backToTop {
+ right: 0.5em;
+ left: auto;
+ }
+
+ #pagination {
+ position: relative;
+ order: 3;
+ }
+}
+
+
+@media screen and (max-width: @results-width) {
+
+ article[data-vim-selected]::before {
+ display: none;
+ content: "";
+ }
+
+ #linkto_preferences {
+ display: none;
+ postion: fixed !important;
+ top: 100px;
+ right: 0px;
+ }
+
+ #sidebar {
+ margin: 0 5px 2px 5px;
+ }
+
+ #corrections {
+ margin: 1em 5px 1em 5px;
+ }
+
+ #results {
+ margin: 0;
+ padding: 0;
+ width: initial;
+ }
+
+ #backToTop {
+ left: 40em;
+ bottom: 35px;
+ }
+
+ .result {
+ padding: 8px 10px 6px 10px;
+ }
+
+ .result-images {
+ margin: 0;
+ padding: 0;
+ border: none;
+ }
+
+}
+
+@media screen and (max-width: 35em) {
+
+ .result-videos {
+
+ img.thumbnail {
+ float: none !important;
+ }
+ .content {
+ overflow: inherit;
+ }
+
+ }
+
+}
diff --git a/searx/static/themes/simple/less/toolkit.less b/searx/static/themes/simple/less/toolkit.less
new file mode 100644
index 0000000..46ea17b
--- /dev/null
+++ b/searx/static/themes/simple/less/toolkit.less
@@ -0,0 +1,468 @@
+// other solution : http://stackoverflow.com/questions/1577598/how-to-hide-parts-of-html-when-javascript-is-disabled/13857783#13857783
+html.no-js .hide_if_nojs {
+ display: none;
+}
+
+html.js .show_if_nojs {
+ display: none;
+}
+
+.center {
+ text-align: center;
+}
+
+.right {
+ float: right ;
+}
+
+.left {
+ float: left;
+}
+
+.invisible {
+ display: none !important;
+}
+
+.list-unstyled {
+ list-style-type: none;
+
+ li {
+ margin-top: 4px;
+ margin-bottom: 4px;
+ }
+}
+
+.danger {
+ background-color: @color-error-background;
+}
+
+.badge {
+ display: inline-block;
+ color: #fff;
+ background-color: #777;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: baseline;
+ min-width: 10px;
+ padding: 1px 5px;
+ border-radius: 5px;
+}
+
+// kbd
+kbd {
+ padding: 2px 4px;
+ margin: 1px;
+ font-size: 90%;
+ color: white;
+ background: black;
+}
+
+// table
+table {
+
+ width: 100%;
+
+ &.striped {
+ tr {
+ border-bottom: 1px solid @color-settings-tr-hover;
+ }
+ }
+}
+
+th {
+ padding: 0.4em;
+}
+
+td {
+ padding: 0 4px;
+}
+
+tr {
+ &:hover {
+ background: @color-settings-tr-hover;
+ }
+}
+
+// pre
+.pre() {
+ display: block;
+ font-size: 0.8em;
+ word-break: break-all;
+ margin: 0.1em;
+ .select-all-on-focus();
+}
+
+div.selectable_url {
+ display: block;
+ border: 1px solid @color-result-search-url-border;
+ padding: 4px;
+ color: @color-result-search-url-font;
+ width: 100%;
+ display: block;
+ margin: 0.1em;
+ overflow: hidden;
+ height: 1.2em;
+ line-height: 1.2em;
+
+ pre {
+ .pre();
+ }
+}
+
+// dialog
+.dialog() {
+ position: relative;
+ width: 70%;
+ padding: 1em 1em 1em 2.7em;
+ margin: 0em 8% 1em 8%;
+ border: 1px solid black;
+ border-radius: 4px;
+ text-align: left;
+
+ &:before {
+ position: absolute;
+ top: 0.5em;
+ left: 0.5em;
+ font-family:"ion";
+ font-size: 1.5em;
+ }
+
+ .close {
+ float:right;
+ position: relative;
+ top: -3px;
+ color: inherit;
+ font-size: 1.5em;
+ }
+
+ ul, ol, p {
+ margin: 1px 0 0 0;
+ }
+
+ table {
+ width: auto;
+ }
+
+ tr {
+ vertical-align: text-top;
+
+ &:hover {
+ background: transparent;
+ }
+ }
+
+ td {
+ padding: 0 1em 0 0;
+ }
+
+
+ h4 {
+ margin-top: 0.3em;
+ margin-bottom: 0.3em;
+ }
+
+}
+
+.dialog-error {
+ .dialog();
+ color: @color-error;
+ background: @color-error-background;
+ border-color: @color-error;
+ .ion-error();
+}
+
+.dialog-warning {
+ .dialog();
+ color: @color-warning;
+ background: @color-warning-background;
+ border-color: @color-warning;
+ .ion-warning();
+}
+
+.dialog-modal {
+ .dialog();
+ background: white;
+ position: fixed;
+ top: 50%;
+ left: 50%;
+ /* bring your own prefixes */
+ transform: translate(-50%, -50%);
+ z-index: 100000;
+ margin: 0 50% 0 0;
+ box-shadow: 0 0 1em;
+}
+
+// btn-collapse
+.btn-collapse {
+ cursor: pointer;
+}
+
+//
+.scrollx {
+ overflow-x: auto;
+ overflow-y: hidden;
+ display: block;
+ padding: 0;
+ margin: 0;
+ border: none;
+}
+
+/* -- tabs --*/
+.tabs .tabs > label {
+ font-size: 90%;
+}
+
+.tabs {
+ .flexbox();
+ flex-wrap: wrap;
+ width: 100%;
+ min-width: 100%;
+
+ & > * {
+ order: 2;
+ }
+
+ & > input[type=radio] {
+ display: none;
+ }
+
+ & > label {
+ order: 1;
+ padding: 0.7em;
+ margin: 0 0.7em;
+ letter-spacing:0.5px;
+ text-transform: uppercase;
+
+ border: solid white;
+ border-width: 0px 0px 2px 0;
+
+ .disable-user-select();
+ cursor: pointer;
+ }
+
+ & > label:hover {
+ border-bottom: 2px solid @color-categories-item-border-selected;
+ }
+
+ & > section {
+ min-width: 100%;
+ padding: 0.7rem 0;
+ box-sizing: border-box;
+ border-top: 1px solid black;
+ display: none;
+ }
+
+ // default selection
+ & > label:last-of-type {
+ border-bottom: 2px solid @color-categories-item-border-selected;
+ background: @color-categories-item-selected;
+ color: @color-categories-item-selected-font;
+ font-weight: bold;
+ letter-spacing:-0.1px;
+ }
+
+ & > section:last-of-type {
+ display: block;
+ }
+
+}
+
+html body .tabs > input:checked {
+ ~ section {
+ display: none;
+ }
+ ~ label {
+ position: inherited;
+ background: inherit;
+ border-bottom: 2px solid transparent;
+ font-weight: normal;
+ color: inherit;
+
+ &:hover {
+ border-bottom: 2px solid @color-categories-item-border-selected;
+ }
+ }
+ + label {
+ border-bottom: 2px solid @color-categories-item-border-selected;
+ background: @color-categories-item-selected;
+ color: @color-categories-item-selected-font;
+ font-weight: bold;
+ letter-spacing:-0.1px;
+ }
+ + label + section {
+ display: block;
+ }
+}
+
+/* -- select -- */
+select {
+ height: 28px;
+ margin: 0 1em 0 0;
+ padding: 2px 8px 2px 0 !important;
+ color: @color-search-font;
+ font-size: 12px;
+ z-index: 2;
+
+ &:hover, &:focus {
+ cursor: pointer;
+ }
+}
+
+@supports ((background-position-x: 100%) and ((appearance: none) or (-webkit-appearance: none) or (-moz-appearance: none))) {
+
+ select {
+ appearance: none;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ border: none;
+ border-bottom: 1px solid #d7d7d7;
+ background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI1MTJweCIgaGVpZ2h0PSI1MTJweCIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDUxMiA1MTIiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxnPjxwb2x5Z29uIHBvaW50cz0iMTI4LDE5MiAyNTYsMzIwIDM4NCwxOTIiLz48L2c+PC9zdmc+Cg==) no-repeat;
+ background-position-x: 105%;
+ background-size: 2em;
+ background-origin: content-box;
+ outline: medium none;
+
+ &:hover, &:focus {
+ border-bottom: 1px solid @color-search-border;
+ }
+
+ }
+
+}
+
+/* -- checkbox-onoff -- */
+@supports (border-radius: 50px) {
+ .checkbox-onoff {
+ display: inline-block;
+ width: 40px;
+ height: 10px;
+ background: #dcdcdc;
+ margin: 8px auto;
+ position: relative;
+ border-radius: 50px;
+ label {
+ display: block;
+ width: 20px;
+ height: 20px;
+ position: absolute;
+ top: -5px;
+ cursor: pointer;
+ border-radius: 50px;
+ box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.3);
+ transition: all 0.4s ease;
+
+ left: 27px;
+ background-color: #3498DB;
+ }
+ input[type=checkbox] {
+ visibility: hidden;
+ &:checked + label {
+ left: -5px;
+ background: #dcdcdc;
+ }
+ }
+ }
+}
+
+/* -- checkbox --*/
+@supports (transform: rotate(-45deg)) {
+ .checkbox {
+ width: 20px;
+ position: relative;
+ margin: 20px auto;
+ label {
+ width: 20px;
+ height: 20px;
+ cursor: pointer;
+ position: absolute;
+ top: 0;
+ left: 0;
+ background: white;
+ border-radius: 4px;
+ box-shadow: inset 0px 1px 1px white, 0px 1px 4px rgba(0,0,0,0.5);
+ &:after {
+ content: '';
+ width: 9px;
+ height: 5px;
+ position: absolute;
+ top: 4px;
+ left: 4px;
+ border: 3px solid #333;
+ border-top: none;
+ border-right: none;
+ background: transparent;
+ opacity: 0;
+ transform: rotate(-45deg);
+ }
+ }
+
+ input[type=checkbox] {
+ visibility: hidden;
+ &:checked + label:after {
+ border-color: #3498DB;
+ opacity: 1;
+ }
+ }
+
+ // disabled : can''t be focused, show only the check mark
+ input[disabled] + label {
+ background-color: transparent !important;
+ box-shadow: none !important;
+ cursor: inherit;;
+ }
+
+ // if not checked and possible to checked then display a "light" check mark on hover
+ input:not(:checked):not([readonly]):not([disabled]) + label:hover::after {
+ opacity: 0.5;
+ }
+ }
+}
+
+@media screen and (max-width: 50em) {
+ .tabs > label {
+ width: 100%;
+ }
+}
+
+/* -- loader -- */
+.loader,
+.loader:after {
+ border-radius: 50%;
+ width: 2em;
+ height: 2em;
+}
+.loader {
+ margin: 1em auto;
+ font-size: 10px;
+ position: relative;
+ text-indent: -9999em;
+ border-top: 0.5em solid rgba(0, 0, 0, 0.2);
+ border-right: 0.5em solid rgba(0, 0, 0, 0.2);
+ border-bottom: 0.5em solid rgba(0, 0, 0, 0.2);
+ border-left: 0.5em solid rgba(255, 255, 255, 0);
+ -webkit-transform: translateZ(0);
+ -ms-transform: translateZ(0);
+ transform: translateZ(0);
+ -webkit-animation: load8 1.2s infinite linear;
+ animation: load8 1.2s infinite linear;
+}
+@-webkit-keyframes load8 {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+@keyframes load8 {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+} \ No newline at end of file
diff --git a/searx/static/themes/simple/less/toolkit_loader.less b/searx/static/themes/simple/less/toolkit_loader.less
new file mode 100644
index 0000000..7ef19c1
--- /dev/null
+++ b/searx/static/themes/simple/less/toolkit_loader.less
@@ -0,0 +1,41 @@
+.loader,
+.loader:after {
+ border-radius: 50%;
+ width: 10em;
+ height: 10em;
+}
+.loader {
+ margin: 60px auto;
+ font-size: 10px;
+ position: relative;
+ text-indent: -9999em;
+ border-top: 1.1em solid rgba(255, 255, 255, 0.2);
+ border-right: 1.1em solid rgba(255, 255, 255, 0.2);
+ border-bottom: 1.1em solid rgba(255, 255, 255, 0.2);
+ border-left: 1.1em solid #ffffff;
+ -webkit-transform: translateZ(0);
+ -ms-transform: translateZ(0);
+ transform: translateZ(0);
+ -webkit-animation: load8 1.1s infinite linear;
+ animation: load8 1.1s infinite linear;
+}
+@-webkit-keyframes load8 {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+@keyframes load8 {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+} \ No newline at end of file
diff --git a/searx/static/themes/simple/magnet.svg b/searx/static/themes/simple/magnet.svg
new file mode 100644
index 0000000..1a1defd
--- /dev/null
+++ b/searx/static/themes/simple/magnet.svg
@@ -0,0 +1 @@
+<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" width="31mm" height="44mm" viewBox="0 0 31 44" version="1.1"><metadata><rdf:RDF><cc:Work><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title/><cc:license rdf:resource="https://www.gnu.org/licenses/agpl-3.0.en.html"/><dc:creator><cc:Agent><dc:title>Alexandre Flament</dc:title></cc:Agent></dc:creator></cc:Work></rdf:RDF></metadata><g fill="#000"><path d="M2.381 28.39H9.79v5.82H2.38z" stroke-width=".049"/><path d="M15.872 10.398c2.381 0 5.82.264 5.82 3.704v12.17c2.47.055 4.94-.001 7.41 0 .02-4.371 0-8.73 0-12.964-.022-3.73-1.158-6.05-3.705-7.937-2.844-2.203-6.144-2.335-9.656-2.347-3.512.012-6.812.144-9.656 2.347-2.547 1.887-3.683 4.207-3.704 7.937 0 4.234-.02 8.593 0 12.965 2.47-.002 4.94.054 7.409 0v-12.17c0-3.44 3.44-3.705 5.82-3.705" stroke="#000" stroke-width=".063" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/><path d="M21.696 28.39h7.408v5.82h-7.408z" stroke-width=".049"/></g></svg>
diff --git a/searx/static/themes/simple/package.json b/searx/static/themes/simple/package.json
new file mode 100644
index 0000000..5150e81
--- /dev/null
+++ b/searx/static/themes/simple/package.json
@@ -0,0 +1,20 @@
+{
+ "devDependencies": {
+ "grunt": "~1.0.3",
+ "grunt-contrib-concat": "~1.0.1",
+ "grunt-contrib-cssmin": "^2.2.1",
+ "grunt-contrib-jshint": "~1.1.0",
+ "grunt-contrib-less": "^1.4.1",
+ "grunt-contrib-uglify": "~3.4.0",
+ "grunt-contrib-watch": "~1.1.0",
+ "grunt-webfont": "^1.7.1",
+ "ionicons-npm": "^2.0.1",
+ "jslint": "^0.12.0",
+ "less-plugin-clean-css": "^1.5.1"
+ },
+ "scripts": {
+ "build": "npm install && grunt",
+ "start": "grunt watch",
+ "test": "grunt"
+ }
+}
diff --git a/searx/templates/__common__/about.html b/searx/templates/__common__/about.html
new file mode 100644
index 0000000..bf17333
--- /dev/null
+++ b/searx/templates/__common__/about.html
@@ -0,0 +1,63 @@
+<div{% if rtl %} dir="ltr"{% endif %}>
+ <h1>About <a href="{{ url_for('index') }}">searx</a></h1>
+
+ <p>Searx is a <a href="https://en.wikipedia.org/wiki/Metasearch_engine">metasearch engine</a>, aggregating the results of other <a href="{{ url_for('preferences') }}">search engines</a> while not storing information about its users.
+ </p>
+ <h2>Why use searx?</h2>
+ <ul>
+ <li>searx may not offer you as personalised results as Google, but it doesn't generate a profile about you</li>
+ <li>searx doesn't care about what you search for, never shares anything with a third party, and it can't be used to compromise you</li>
+ <li>searx is free software, the code is 100% open and you can help to make it better. See more on <a href="https://github.com/asciimoo/searx">github</a></li>
+ </ul>
+ <p>If you do care about privacy, want to be a conscious user, or otherwise believe
+ in digital freedom, make searx your default search engine or run it on your own server</p>
+
+<h2>Technical details - How does it work?</h2>
+
+<p>Searx is a <a href="https://en.wikipedia.org/wiki/Metasearch_engine">metasearch engine</a>,
+inspired by the <a href="https://beniz.github.io/seeks/">seeks project</a>.<br />
+It provides basic privacy by mixing your queries with searches on other platforms without storing search data. Queries are made using a POST request on every browser (except chrome*). Therefore they show up in neither our logs, nor your url history. In case of Chrome* users there is an exception, searx uses the search bar to perform GET requests.<br />
+Searx can be added to your browser's search bar; moreover, it can be set as the default search engine.
+</p>
+
+<h2>How can I make it my own?</h2>
+
+<p>Searx appreciates your concern regarding logs, so take the <a href="https://github.com/asciimoo/searx">code</a> and run it yourself! <br />Add your Searx to this <a href="https://github.com/asciimoo/searx/wiki/Searx-instances">list</a> to help other people reclaim their privacy and make the Internet freer!
+<br />The more decentralized the Internet is, the more freedom we have!</p>
+
+
+<h2>More about searx</h2>
+
+<ul>
+ <li><a href="https://github.com/asciimoo/searx">github</a></li>
+ <li><a href="https://www.ohloh.net/p/searx/">ohloh</a></li>
+ <li><a href="https://twitter.com/Searx_engine">twitter</a></li>
+ <li>IRC: #searx @ freenode (<a href="https://kiwiirc.com/client/irc.freenode.com/searx">webclient</a>)</li>
+ <li><a href="https://www.transifex.com/projects/p/searx/">transifex</a></li>
+</ul>
+
+
+<hr />
+
+<h2 id="faq">FAQ</h2>
+
+<h3>How to add to firefox?</h3>
+<p><a href="#" onclick="window.external.AddSearchProvider(window.location.protocol + '//' + window.location.host + '{{ url_for('opensearch') }}');">Install</a> searx as a search engine on any version of Firefox! (javascript required)</p>
+
+<h2 id="dev_faq">Developer FAQ</h2>
+
+<h3>New engines?</h3>
+<ul>
+ <li>Edit your <a href="https://raw.github.com/asciimoo/searx/master/searx/settings.yml">settings.yml</a></li>
+ <li>Create your custom engine module, check the <a href="https://github.com/asciimoo/searx/blob/master/examples/basic_engine.py">example engine</a></li>
+</ul>
+<p>Don't forget to restart searx after config edit!</p>
+
+<h3>Installation/WSGI support?</h3>
+<p>See the <a href="https://github.com/asciimoo/searx/wiki/Installation">installation and setup</a> wiki page</p>
+
+<h3>How to debug engines?</h3>
+<p><a href="{{ url_for('stats') }}">Stats page</a> contains some useful data about the engines used.</p>
+
+</div>
+{% include "__common__/aboutextend.html" ignore missing %}
diff --git a/searx/templates/__common__/opensearch.xml b/searx/templates/__common__/opensearch.xml
new file mode 100644
index 0000000..15d3eb7
--- /dev/null
+++ b/searx/templates/__common__/opensearch.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
+ <ShortName>{{ instance_name }}</ShortName>
+ <Description>a privacy-respecting, hackable metasearch engine</Description>
+ <InputEncoding>UTF-8</InputEncoding>
+ <Image>{{ urljoin(host, url_for('static', filename='img/favicon.png')) }}</Image>
+ <LongName>searx metasearch</LongName>
+ {% if opensearch_method == 'get' %}
+ <Url type="text/html" method="get" template="{{ host }}search?q={searchTerms}"/>
+ {% if autocomplete %}
+ <Url type="application/x-suggestions+json" method="get" template="{{ host }}autocompleter">
+ <Param name="format" value="x-suggestions" />
+ <Param name="q" value="{searchTerms}" />
+ </Url>
+ {% endif %}
+ {% else %}
+ <Url type="text/html" method="post" template="{{ host }}">
+ <Param name="q" value="{searchTerms}" />
+ </Url>
+ {% if autocomplete %}
+ <!-- TODO, POST REQUEST doesn't work -->
+ <Url type="application/x-suggestions+json" method="get" template="{{ host }}autocompleter">
+ <Param name="format" value="x-suggestions" />
+ <Param name="q" value="{searchTerms}" />
+ </Url>
+ {% endif %}
+ {% endif %}
+</OpenSearchDescription>
diff --git a/searx/templates/__common__/opensearch_response_rss.xml b/searx/templates/__common__/opensearch_response_rss.xml
new file mode 100644
index 0000000..32c42e7
--- /dev/null
+++ b/searx/templates/__common__/opensearch_response_rss.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rss version="2.0"
+ xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"
+ xmlns:atom="http://www.w3.org/2005/Atom">
+ <channel>
+ <title>Searx search: {{ q|e }}</title>
+ <link>{{ base_url }}?q={{ q|e }}</link>
+ <description>Search results for "{{ q|e }}" - searx</description>
+ <opensearch:totalResults>{{ number_of_results }}</opensearch:totalResults>
+ <opensearch:startIndex>1</opensearch:startIndex>
+ <opensearch:itemsPerPage>{{ number_of_results }}</opensearch:itemsPerPage>
+ <atom:link rel="search" type="application/opensearchdescription+xml" href="{{ base_url }}opensearch.xml"/>
+ <opensearch:Query role="request" searchTerms="{{ q|e }}" startPage="1" />
+ {% if error_message %}
+ <item>
+ <title>Error</title>
+ <description>{{ error_message|e }}</description>
+ </item>
+ {% endif %}
+ {% for r in results %}
+ <item>
+ <title>{{ r.title }}</title>
+ <link>{{ r.url }}</link>
+ <description>{{ r.content }}</description>
+ {% if r.pubdate %}<pubDate>{{ r.pubdate }}</pubDate>{% endif %}
+ </item>
+ {% endfor %}
+ </channel>
+</rss>
diff --git a/searx/templates/courgette/404.html b/searx/templates/courgette/404.html
new file mode 100644
index 0000000..9e3b8ac
--- /dev/null
+++ b/searx/templates/courgette/404.html
@@ -0,0 +1,9 @@
+{% extends "courgette/base.html" %}
+{% block content %}
+<div class="center">
+ <h1>{{ _('Page not found') }}</h1>
+ {% autoescape false %}
+ <p>{{ _('Go to %(search_page)s.', search_page=unicode('<a href="{}">{}</a>').format(url_for('index'), _('search page'))) }}</p>
+ {% endautoescape %}
+</div>
+{% endblock %}
diff --git a/searx/templates/courgette/about.html b/searx/templates/courgette/about.html
new file mode 100644
index 0000000..08948ee
--- /dev/null
+++ b/searx/templates/courgette/about.html
@@ -0,0 +1,5 @@
+{% extends 'courgette/base.html' %}
+{% block content %}
+{% include 'courgette/github_ribbon.html' %}
+{% include '__common__/about.html' %}
+{% endblock %}
diff --git a/searx/templates/courgette/base.html b/searx/templates/courgette/base.html
new file mode 100644
index 0000000..8e27258
--- /dev/null
+++ b/searx/templates/courgette/base.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"{% if rtl %} dir="rtl"{% endif %}>
+ <head>
+ <meta charset="UTF-8" />
+ <meta name="description" content="searx - a privacy-respecting, hackable metasearch engine" />
+ <meta name="keywords" content="searx, search, search engine, metasearch, meta search" />
+ <meta name="generator" content="searx/{{ searx_version }}">
+ <meta name="referrer" content="no-referrer">
+ <meta name="viewport" content="width=device-width, maximum-scale=1.0, user-scalable=1" />
+ <title>{% block title %}{% endblock %}searx</title>
+ <link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}" type="text/css" media="screen" />
+ {% if rtl %}
+ <link rel="stylesheet" href="{{ url_for('static', filename='css/style-rtl.css') }}" type="text/css" media="screen" />
+ {% endif %}
+ {% if cookies['courgette-color'] %}
+ <style type="text/css">
+ {% include 'courgette/color.css' %}
+ </style>
+ {% endif %}
+ <link rel="shortcut icon" href="{{ url_for('static', filename='img/favicon.png') }}?v=2" />
+ {% block styles %}
+ {% endblock %}
+ {% block meta %}{% endblock %}
+ {% block head %}
+ <link title="{{ instance_name }}" type="application/opensearchdescription+xml" rel="search" href="{{ url_for('opensearch') }}"/>
+ {% endblock %}
+ <script type="text/javascript">
+ searx = {};
+ searx.autocompleter = {% if autocomplete %}true{% else %}false{% endif %};
+ </script>
+ </head>
+ <body>
+ <div id="container">
+ {% block content %}
+ {% endblock %}
+ {% if autocomplete %}
+ <script src="{{ url_for('static', filename='js/mootools-core-1.4.5-min.js') }}" ></script>
+ <script src="{{ url_for('static', filename='js/mootools-autocompleter-1.1.2-min.js') }}" ></script>
+ {% endif %}
+ <script src="{{ url_for('static', filename='js/searx.js') }}" ></script>
+ </div>
+ </body>
+</html>
diff --git a/searx/templates/courgette/categories.html b/searx/templates/courgette/categories.html
new file mode 100644
index 0000000..b8d6a75
--- /dev/null
+++ b/searx/templates/courgette/categories.html
@@ -0,0 +1,9 @@
+<div id="categories">
+ <div id="categories_container">
+ {% for category in categories %}
+ <div class="checkbox_container">
+ <input type="checkbox" id="checkbox_{{ category|replace(' ', '_') }}" name="category_{{ category }}" {% if category in selected_categories %}checked="checked"{% endif %} /><label for="checkbox_{{ category|replace(' ', '_') }}">{{ _(category) }}</label>
+ </div>
+ {% endfor %}
+ </div>
+</div> \ No newline at end of file
diff --git a/searx/templates/courgette/color.css b/searx/templates/courgette/color.css
new file mode 100644
index 0000000..3e0d730
--- /dev/null
+++ b/searx/templates/courgette/color.css
@@ -0,0 +1,34 @@
+ .autocompleter-choices li:hover,
+.checkbox_container label:hover,
+.checkbox_container input[type="checkbox"]:checked + label,
+#sidebar,
+#suggestions input[type="submit"]:hover,
+#suggestions input[type="submit"]:focus,
+input[type="submit"],
+.engine_checkbox label,
+.engine_checkbox .deny,
+#search_submit{
+ background-color: {{ cookies['courgette-color'].split()[0] }};
+}
+
+.result_title a,
+.row a,
+.title h1{
+ color: {{ cookies['courgette-color'].split()[0] }};
+}
+
+#answers {
+ border-color: {{ cookies['courgette-color'].split()[0] }};
+}
+
+#search_submit:hover,
+#search_submit:focus,
+#sidebar input[type="submit"]:hover,
+#sidebar input[type="submit"]:focus {
+ background-color: {{ cookies['courgette-color'].split()[1] }};
+}
+
+input[type="submit"]:hover,
+input[type="submit"]:focus {
+ background: {{ cookies['courgette-color'].split()[1] }};
+} \ No newline at end of file
diff --git a/searx/templates/courgette/github_ribbon.html b/searx/templates/courgette/github_ribbon.html
new file mode 100644
index 0000000..67c6e67
--- /dev/null
+++ b/searx/templates/courgette/github_ribbon.html
@@ -0,0 +1,3 @@
+<a href="https://github.com/asciimoo/searx" class="github">
+ <img style="position: absolute; top: 0; right: 0; border: 0;" src="{{ url_for('static', filename='img/github_ribbon.png') }}" alt="Fork me on GitHub" class="github"/>
+</a> \ No newline at end of file
diff --git a/searx/templates/courgette/index.html b/searx/templates/courgette/index.html
new file mode 100644
index 0000000..0d34e1c
--- /dev/null
+++ b/searx/templates/courgette/index.html
@@ -0,0 +1,17 @@
+{% extends "courgette/base.html" %}
+{% block content %}
+{% include 'courgette/github_ribbon.html' %}
+<div class="center">
+ <div class="title"><h1>searx</h1></div>
+ {% include 'courgette/search.html' %}
+ <p class="top_margin">
+ {% if rtl %}
+ <a href="{{ url_for('preferences') }}" class="hmarg">{{ _('preferences') }}</a>
+ {% endif %}
+ <a href="{{ url_for('about') }}" class="hmarg">{{ _('about') }}</a>
+ {% if not rtl %}
+ <a href="{{ url_for('preferences') }}" class="hmarg">{{ _('preferences') }}</a>
+ {% endif %}
+ </p>
+</div>
+{% endblock %} \ No newline at end of file
diff --git a/searx/templates/courgette/preferences.html b/searx/templates/courgette/preferences.html
new file mode 100644
index 0000000..61f5214
--- /dev/null
+++ b/searx/templates/courgette/preferences.html
@@ -0,0 +1,131 @@
+{% extends "courgette/base.html" %}
+{% block head %} {% endblock %}
+{% block content %}
+<div class="row">
+ <h2>{{ _('Preferences') }}</h2>
+
+ <form method="post" action="{{ url_for('preferences') }}" id="search_form">
+ <fieldset>
+ <legend>{{ _('Default categories') }}</legend>
+ {% include 'courgette/categories.html' %}
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('Search language') }}</legend>
+ <p>
+ <select name='language'>
+ {% for lang_id,lang_name,country_name,english_name in language_codes | sort(attribute=1) %}
+ <option value="{{ lang_id }}" {% if lang_id == current_language %}selected="selected"{% endif %}>{{ lang_name }} {% if country_name %}({{ country_name }}) {% endif %}- {{ lang_id }}</option>
+ {% endfor %}
+ </select>
+ </p>
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('Interface language') }}</legend>
+ <p>
+ <select name='locale'>
+ {% for locale_id,locale_name in locales.items() | sort %}
+ <option value="{{ locale_id }}" {% if locale_id == current_locale %}selected="selected"{% endif %}>{{ locale_name }}</option>
+ {% endfor %}
+ </select>
+ </p>
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('Autocomplete') }}</legend>
+ <p>
+ <select name="autocomplete">
+ <option value=""> - </option>
+ {% for backend in autocomplete_backends %}
+ <option value="{{ backend }}" {% if backend == autocomplete %}selected="selected"{% endif %}>{{ backend }}</option>
+ {% endfor %}
+ </select>
+ </p>
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('Image proxy') }}</legend>
+ <p>
+ <select name='image_proxy'>
+ <option value="1" {% if image_proxy %}selected="selected"{% endif %}>{{ _('Enabled') }}</option>
+ <option value="" {% if not image_proxy %}selected="selected"{% endif %}>{{ _('Disabled') }}</option>
+ </select>
+ </p>
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('Method') }}</legend>
+ <p>
+ <select name='method'>
+ <option value="POST" {% if method == 'POST' %}selected="selected"{% endif %}>POST</option>
+ <option value="GET" {% if method == 'GET' %}selected="selected"{% endif %}>GET</option>
+ </select>
+ </p>
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('SafeSearch') }}</legend>
+ <p>
+ <select name='safesearch'>
+ <option value="2" {% if safesearch == '2' %}selected="selected"{% endif %}>{{ _('Strict') }}</option>
+ <option value="1" {% if safesearch == '1' %}selected="selected"{% endif %}>{{ _('Moderate') }}</option>
+ <option value="0" {% if safesearch == '0' %}selected="selected"{% endif %}>{{ _('None') }}</option>
+ </select>
+ </p>
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('Themes') }}</legend>
+ <p>
+ <select name="theme">
+ {% for name in themes %}
+ <option value="{{ name }}" {% if name == theme %}selected="selected"{% endif %}>{{ name }}</option>
+ {% endfor %}
+ </select>
+ </p>
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('Color') }}</legend>
+ <p>
+ <select name="courgette-color">
+ <option value="#3498DB #0665A2" {% if cookies['courgette-color'] and cookies['courgette-color'] == '#3498DB #0665A2' %}selected="selected"{% endif %}>{{ _('Blue (default)') }}</option>
+ <option value="#6F5499 #563D7C" {% if cookies['courgette-color'] and cookies['courgette-color'] == '#6F5499 #563D7C' %}selected="selected"{% endif %}>{{ _('Violet') }}</option>
+ <option value="#5CB85C #449D44" {% if cookies['courgette-color'] and cookies['courgette-color'] == '#5CB85C #449D44' %}selected="selected"{% endif %}>{{ _('Green') }}</option>
+ <option value="#5BC0DE #31B0D5" {% if cookies['courgette-color'] and cookies['courgette-color'] == '#5BC0DE #31B0D5' %}selected="selected"{% endif %}>{{ _('Cyan') }}</option>
+ <option value="#F0AD4E #EC971F" {% if cookies['courgette-color'] and cookies['courgette-color'] == '#F0AD4E #EC971F' %}selected="selected"{% endif %}>{{ _('Orange') }}</option>
+ <option value="#D9534F #C9302C" {% if cookies['courgette-color'] and cookies['courgette-color'] == '#D9534F #C9302C' %}selected="selected"{% endif %}>{{ _('Red') }}</option>
+ </select>
+ </p>
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('Currently used search engines') }}</legend>
+
+ <table class="engine-table">
+ <tr>
+ <th>{{ _('Engine name') }}</th>
+ <th>{{ _('Category') }}</th>
+ <th>{{ _('Allow') }} / {{ _('Block') }}</th>
+ </tr>
+ {% for categ in all_categories %}
+ {% for search_engine in engines_by_category[categ] %}
+
+ {% if not search_engine.private %}
+ <tr>
+ <td>{{ search_engine.name }} ({{ shortcuts[search_engine.name] }})&lrm;</td>
+ <td>{{ _(categ) }}</td>
+ <td class="engine_checkbox">
+ <input type="checkbox" id="engine_{{ categ|replace(' ', '_') }}_{{ search_engine.name|replace(' ', '_') }}" name="engine_{{ search_engine.name }}__{{ categ }}"{% if (search_engine.name, categ) in disabled_engines %} checked="checked"{% endif %} />
+ <label class="allow" for="engine_{{ categ|replace(' ', '_') }}_{{ search_engine.name|replace(' ', '_') }}">{{ _('Allow') }}</label>
+ <label class="deny" for="engine_{{ categ|replace(' ', '_') }}_{{ search_engine.name|replace(' ', '_') }}">{{ _('Block') }}</label>
+ </td>
+ </tr>
+ {% endif %}
+ {% endfor %}
+ {% endfor %}
+ </table>
+ </fieldset>
+ <p class="small_font">{{ _('These settings are stored in your cookies, this allows us not to store this data about you.') }}
+ <br />
+ {{ _("These cookies serve your sole convenience, we don't use these cookies to track you.") }}
+ </p>
+
+ <input type="submit" value="{{ _('save') }}" />
+ <div class="right preferences_back"><a href="{{ url_for('clear_cookies') }}">{{ _('Reset defaults') }}</a></div>
+ <div class="right preferences_back"><a href="{{ url_for('index') }}">{{ _('back') }}</a></div>
+ </form>
+</div>
+{% endblock %}
diff --git a/searx/templates/courgette/result_templates/code.html b/searx/templates/courgette/result_templates/code.html
new file mode 100644
index 0000000..d6dbd5e
--- /dev/null
+++ b/searx/templates/courgette/result_templates/code.html
@@ -0,0 +1,11 @@
+<div class="result {{ result.class }}">
+ <h3 class="result_title"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3>
+ {% if result.publishedDate %}<span class="published_date">{{ result.publishedDate }}</span>{% endif %}
+ <p class="content">{% if result.img_src %}<img src="{{ image_proxify(result.img_src) }}" class="image" />{% endif %}{% if result.content %}{{ result.content|safe }}<br class="last"/>{% endif %}</p>
+ {% if result.repository %}<p class="content"><a href="{{ result.repository|safe }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.repository }}</a></p>{% endif %}
+ <div dir="ltr">
+ {{ result.codelines|code_highlighter(result.code_language)|safe }}
+ </div>
+
+ <p class="url">{{ result.pretty_url }}&lrm;</p>
+</div>
diff --git a/searx/templates/courgette/result_templates/default.html b/searx/templates/courgette/result_templates/default.html
new file mode 100644
index 0000000..5f2ead6
--- /dev/null
+++ b/searx/templates/courgette/result_templates/default.html
@@ -0,0 +1,13 @@
+<div class="result {{ result.class }}">
+
+ {% if "icon_"~result.engine~".ico" in favicons %}
+ <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />
+ {% endif %}
+
+ <div>
+ <h3 class="result_title"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3>
+ {% if result.publishedDate %}<span class="published_date">{{ result.publishedDate }}</span>{% endif %}
+ <p class="content">{% if result.content %}{{ result.content|safe }}<br />{% endif %}</p>
+ <p class="url">{{ result.pretty_url }}&lrm;</p>
+ </div>
+</div>
diff --git a/searx/templates/courgette/result_templates/images.html b/searx/templates/courgette/result_templates/images.html
new file mode 100644
index 0000000..49acb3b
--- /dev/null
+++ b/searx/templates/courgette/result_templates/images.html
@@ -0,0 +1,6 @@
+<div class="image_result">
+ <p>
+ <a href="{{ result.img_src }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}><img src="{% if result.thumbnail_src %}{{ image_proxify(result.thumbnail_src) }}{% else %}{{ image_proxify(result.img_src) }}{% endif %}" title="{{ result.title|striptags }}" alt="{{ result.title|striptags }}"/></a>
+ <span class="url"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %} class="small_font">{{ _('original context') }}</a></span>
+ </p>
+</div>
diff --git a/searx/templates/courgette/result_templates/map.html b/searx/templates/courgette/result_templates/map.html
new file mode 100644
index 0000000..5f2ead6
--- /dev/null
+++ b/searx/templates/courgette/result_templates/map.html
@@ -0,0 +1,13 @@
+<div class="result {{ result.class }}">
+
+ {% if "icon_"~result.engine~".ico" in favicons %}
+ <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />
+ {% endif %}
+
+ <div>
+ <h3 class="result_title"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3>
+ {% if result.publishedDate %}<span class="published_date">{{ result.publishedDate }}</span>{% endif %}
+ <p class="content">{% if result.content %}{{ result.content|safe }}<br />{% endif %}</p>
+ <p class="url">{{ result.pretty_url }}&lrm;</p>
+ </div>
+</div>
diff --git a/searx/templates/courgette/result_templates/torrent.html b/searx/templates/courgette/result_templates/torrent.html
new file mode 100644
index 0000000..2fd8395
--- /dev/null
+++ b/searx/templates/courgette/result_templates/torrent.html
@@ -0,0 +1,13 @@
+<div class="result torrent_result">
+ {% if "icon_"~result.engine~".ico" in favicons %}
+ <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />
+ {% endif %}
+ <h3 class="result_title"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3>
+ {% if result.content %}<span class="content">{{ result.content|safe }}</span><br />{% endif %}
+ <span class="stats">{{ _('Seeder') }} : {{ result.seed }}, {{ _('Leecher') }} : {{ result.leech }}</span><br />
+ <span>
+ {% if result.magnetlink %}<a href="{{ result.magnetlink }}" class="magnetlink">{{ _('magnet link') }}</a>{% endif %}
+ {% if result.torrentfile %}<a href="{{ result.torrentfile }}" class="torrentfile" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ _('torrent file') }}</a>{% endif %}
+ </span>
+ <p class="url">{{ result.pretty_url }}&lrm;</p>
+</div>
diff --git a/searx/templates/courgette/result_templates/videos.html b/searx/templates/courgette/result_templates/videos.html
new file mode 100644
index 0000000..b3e19e0
--- /dev/null
+++ b/searx/templates/courgette/result_templates/videos.html
@@ -0,0 +1,10 @@
+<div class="result">
+ {% if "icon_"~result.engine~".ico" in favicons %}
+ <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />
+ {% endif %}
+
+ <h3 class="result_title"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3>
+ {% if result.publishedDate %}<span class="published_date">{{ result.publishedDate }}</span><br />{% endif %}
+ <a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}><img width="400" src="{{ image_proxify(result.thumbnail) }}" title="{{ result.title|striptags }}" alt="{{ result.title|striptags }}"/></a>
+ <p class="url">{{ result.pretty_url }}&lrm;</p>
+</div>
diff --git a/searx/templates/courgette/results.html b/searx/templates/courgette/results.html
new file mode 100644
index 0000000..c72b7c3
--- /dev/null
+++ b/searx/templates/courgette/results.html
@@ -0,0 +1,87 @@
+{% extends "courgette/base.html" %}
+{% block title %}{{ q|e }} - {% endblock %}
+{% block meta %}<link rel="alternate" type="application/rss+xml" title="Searx search: {{ q|e }}" href="{{ url_for('index') }}?q={{ q|urlencode }}&amp;format=rss&amp;{% for category in selected_categories %}category_{{ category }}=1&amp;{% endfor %}pageno={{ pageno }}">{% endblock %}
+{% block content %}
+<div class="right"><a href="{{ url_for('preferences') }}" id="preferences"><span>{{ _('preferences') }}</span></a></div>
+<div class="small search center">
+ {% include 'courgette/search.html' %}
+</div>
+<div id="results">
+ <div id="sidebar">
+ <div id="search_url">
+ {{ _('Search URL') }}:
+ <input type="text" value="{{ base_url }}?q={{ q|urlencode }}{% if selected_categories %}&amp;categories={{ selected_categories|join(",") | replace(' ','+') }}{% endif %}{% if pageno > 1 %}&amp;pageno={{ pageno }}{% endif %}" readonly />
+ </div>
+ <div id="apis">
+ {{ _('Download results') }}<br />
+ {% for output_type in ('csv', 'json', 'rss') %}
+ <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
+ <div class="left">
+ <input type="hidden" name="q" value="{{ q|e }}" />
+ <input type="hidden" name="format" value="{{ output_type }}" />
+ {% for category in selected_categories %}
+ <input type="hidden" name="category_{{ category }}" value="1"/>
+ {% endfor %}
+ <input type="hidden" name="pageno" value="{{ pageno }}" />
+ <input type="submit" value="{{ output_type }}" />
+ </div>
+ </form>
+ {% endfor %}
+ </div>
+ </div>
+
+ {% if answers %}
+ <div id="answers" class=""><span>{{ _('Answers') }}</span>
+ {% for answer in answers %}
+ <span>{{ answer }}</span>
+ {% endfor %}
+ </div>
+ {% endif %}
+
+ {% if suggestions %}
+ <div id="suggestions"><span>{{ _('Suggestions') }}</span>
+ {% for suggestion in suggestions %}
+ <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
+ <input type="hidden" name="q" value="{{ suggestion }}">
+ <input type="submit" value="{{ suggestion }}" />
+ </form>
+ {% endfor %}
+ </div>
+ {% endif %}
+
+ {% for result in results %}
+ {% if result['template'] %}
+ {% include get_result_template('courgette', result['template']) %}
+ {% else %}
+ {% include 'courgette/result_templates/default.html' %}
+ {% endif %}
+ {% endfor %}
+
+ {% if paging %}
+ <div id="pagination">
+ {% if pageno > 1 %}
+ <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
+ <div class="left">
+ <input type="hidden" name="q" value="{{ q|e }}" />
+ {% for category in selected_categories %}
+ <input type="hidden" name="category_{{ category }}" value="1"/>
+ {% endfor %}
+ <input type="hidden" name="pageno" value="{{ pageno-1 }}" />
+ <input type="submit" value="<< {{ _('previous page') }}" />
+ </div>
+ </form>
+ {% endif %}
+ <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
+ <div class="left">
+ {% for category in selected_categories %}
+ <input type="hidden" name="category_{{ category }}" value="1"/>
+ {% endfor %}
+ <input type="hidden" name="q" value="{{ q|e }}" />
+ <input type="hidden" name="pageno" value="{{ pageno+1 }}" />
+ <input type="submit" value="{{ _('next page') }} >>" />
+ </div>
+ </form>
+ </div>
+ {% endif %}
+</div>
+{% endblock %}
diff --git a/searx/templates/courgette/search.html b/searx/templates/courgette/search.html
new file mode 100644
index 0000000..bd4efd4
--- /dev/null
+++ b/searx/templates/courgette/search.html
@@ -0,0 +1,7 @@
+<form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" id="search_form">
+ <div id="search_wrapper">
+ <input type="text" placeholder="{{ _('Search for...') }}" id="q" class="q" name="q" tabindex="1" autocomplete="off" {% if q %}value="{{ q }}"{% endif %}/>
+ <input type="submit" value="search" id="search_submit" />
+ </div>
+ {% include 'courgette/categories.html' %}
+</form> \ No newline at end of file
diff --git a/searx/templates/courgette/stats.html b/searx/templates/courgette/stats.html
new file mode 100644
index 0000000..b9aafbb
--- /dev/null
+++ b/searx/templates/courgette/stats.html
@@ -0,0 +1,22 @@
+{% extends "courgette/base.html" %}
+{% block head %} {% endblock %}
+{% block content %}
+<h2>{{ _('Engine stats') }}</h2>
+
+{% for stat_name,stat_category in stats %}
+<div class="left">
+ <table>
+ <tr>
+ <th colspan="3">{{ stat_name }}</th>
+ </tr>
+ {% for engine in stat_category %}
+ <tr>
+ <td>{{ engine.name }}</td>
+ <td>{{ '%.02f'|format(engine.avg) }}</td>
+ <td class="percentage"><div style="width: {{ engine.percentage }}%">&nbsp;</div></td>
+ </tr>
+ {% endfor %}
+ </table>
+</div>
+{% endfor %}
+{% endblock %} \ No newline at end of file
diff --git a/searx/templates/legacy/404.html b/searx/templates/legacy/404.html
new file mode 100644
index 0000000..3e889dd
--- /dev/null
+++ b/searx/templates/legacy/404.html
@@ -0,0 +1,9 @@
+{% extends "legacy/base.html" %}
+{% block content %}
+<div class="center">
+ <h1>{{ _('Page not found') }}</h1>
+ {% autoescape false %}
+ <p>{{ _('Go to %(search_page)s.', search_page=unicode('<a href="{}">{}</a>').format(url_for('index'), _('search page'))) }}</p>
+ {% endautoescape %}
+</div>
+{% endblock %}
diff --git a/searx/templates/legacy/about.html b/searx/templates/legacy/about.html
new file mode 100644
index 0000000..f773e3a
--- /dev/null
+++ b/searx/templates/legacy/about.html
@@ -0,0 +1,5 @@
+{% extends 'legacy/base.html' %}
+{% block content %}
+{% include 'legacy/github_ribbon.html' %}
+{% include '__common__/about.html' %}
+{% endblock %}
diff --git a/searx/templates/legacy/base.html b/searx/templates/legacy/base.html
new file mode 100644
index 0000000..da19741
--- /dev/null
+++ b/searx/templates/legacy/base.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"{% if rtl %} dir="rtl"{% endif %}>
+ <head>
+ <meta charset="UTF-8" />
+ <meta name="description" content="searx - a privacy-respecting, hackable metasearch engine" />
+ <meta name="keywords" content="searx, search, search engine, metasearch, meta search" />
+ <meta name="generator" content="searx/{{ searx_version }}">
+ <meta name="referrer" content="no-referrer">
+ <meta name="viewport" content="width=device-width, maximum-scale=1.0, user-scalable=1" />
+ <title>{% block title %}{% endblock %}searx</title>
+ <link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}" type="text/css" media="screen" />
+ {% if rtl %}
+ <link rel="stylesheet" href="{{ url_for('static', filename='css/style-rtl.css') }}" type="text/css" media="screen" />
+ {% endif %}
+ <link rel="shortcut icon" href="{{ url_for('static', filename='img/favicon.png') }}?v=2" />
+ {% block styles %}
+ {% endblock %}
+ {% block meta %}{% endblock %}
+ {% block head %}
+ <link title="{{ instance_name }}" type="application/opensearchdescription+xml" rel="search" href="{{ url_for('opensearch') }}"/>
+ {% endblock %}
+ </head>
+ <body>
+ <div id="container">
+ {% block content %}
+ {% endblock %}
+ {% if autocomplete %}
+ <script src="{{ url_for('static', filename='js/mootools-core-1.4.5-min.js') }}" ></script>
+ <script src="{{ url_for('static', filename='js/mootools-autocompleter-1.1.2-min.js') }}" ></script>
+ {% endif %}
+ <script type="text/javascript">
+ searx = {};
+ searx.autocompleter = {% if autocomplete %}true{% else %}false{% endif %};
+ </script>
+ <script src="{{ url_for('static', filename='js/searx.js') }}" ></script>
+ </div>
+ </body>
+</html>
diff --git a/searx/templates/legacy/categories.html b/searx/templates/legacy/categories.html
new file mode 100644
index 0000000..1c46678
--- /dev/null
+++ b/searx/templates/legacy/categories.html
@@ -0,0 +1,10 @@
+<div id="categories">
+ <div id="categories_container">
+ {% for category in categories %}
+ <div class="checkbox_container">
+ <input type="checkbox" id="checkbox_{{ category|replace(' ', '_') }}" name="category_{{ category }}" {% if category in selected_categories %}checked="checked"{% endif %} /><label for="checkbox_{{ category|replace(' ', '_') }}" class="tooltips">{{ _(category) }}</label>
+ </div>
+ {% endfor %}
+ {% if display_tooltip %}<div class="hidden">{{ _('Click on the magnifier to perform search') }}</div>{% endif %}
+ </div>
+</div>
diff --git a/searx/templates/legacy/github_ribbon.html b/searx/templates/legacy/github_ribbon.html
new file mode 100644
index 0000000..bdd9cf1
--- /dev/null
+++ b/searx/templates/legacy/github_ribbon.html
@@ -0,0 +1,3 @@
+<a href="https://github.com/asciimoo/searx" class="github">
+ <img style="position: absolute; top: 0; right: 0; border: 0;" src="{{ url_for('static', filename='img/github_ribbon.png') }}" alt="Fork me on GitHub" class="github"/>
+</a>
diff --git a/searx/templates/legacy/index.html b/searx/templates/legacy/index.html
new file mode 100644
index 0000000..de956d5
--- /dev/null
+++ b/searx/templates/legacy/index.html
@@ -0,0 +1,18 @@
+{% extends "legacy/base.html" %}
+{% block content %}
+<div class="center">
+ <div class="title"><h1>searx</h1></div>
+ {% include 'legacy/search.html' %}
+ <p class="top_margin">
+ {% if rtl %}
+ <a href="{{ url_for('preferences') }}" class="hmarg">{{ _('preferences') }}</a>
+ {% endif %}
+ <a href="{{ url_for('about') }}" class="hmarg">{{ _('about') }}</a>
+ {% if not rtl %}
+ <a href="{{ url_for('preferences') }}" class="hmarg">{{ _('preferences') }}</a>
+ {% endif %}
+ </p>
+</div>
+{% include 'legacy/github_ribbon.html' %}
+{% endblock %}
+
diff --git a/searx/templates/legacy/infobox.html b/searx/templates/legacy/infobox.html
new file mode 100644
index 0000000..4dd25fa
--- /dev/null
+++ b/searx/templates/legacy/infobox.html
@@ -0,0 +1,51 @@
+<div class="infobox">
+<h2><bdi>{{ infobox.infobox }}</bdi></h2>
+ {% if infobox.img_src %}<img src="{{ image_proxify(infobox.img_src) }}" title="{{ infobox.infobox|striptags }}" alt="{{ infobox.infobox|striptags }}" />{% endif %}
+ <p><bdi>{{ infobox.entity }}</bdi></p>
+ <p><bdi>{{ infobox.content | safe }}</bdi></p>
+ {% if infobox.attributes %}
+ <div class="attributes">
+ <table>
+ {% for attribute in infobox.attributes %}
+ <tr>
+ <td><bdi>{{ attribute.label }}</bdi></td>
+ {% if attribute.image %}
+ <td><img src="{{ image_proxify(attribute.image.src) }}" alt="{{ attribute.image.alt }}" /></td>
+ {% else %}
+ <td><bdi>{{ attribute.value }}</bdi></td>
+ {% endif %}
+ </tr>
+ {% endfor %}
+ </table>
+ </div>
+ {% endif %}
+
+ {% if infobox.urls %}
+ <div class="urls">
+ <ul>
+ {% for url in infobox.urls %}
+ <li class="url"><bdi><a href="{{ url.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ url.title }}</a></bdi></li>
+ {% endfor %}
+ </ul>
+ </div>
+ {% endif %}
+
+ {% if infobox.relatedTopics %}
+ <div class="relatedTopics">
+ {% for topic in infobox.relatedTopics %}
+ <div>
+ <h3><bdi>{{ topic.name }}</bdi></h3>
+ {% for suggestion in topic.suggestions %}
+ <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
+ <input type="hidden" name="q" value="{{ suggestion }}">
+ <input type="submit" value="{{ suggestion }}" />
+ </form>
+ {% endfor %}
+ </div>
+ {% endfor %}
+ </div>
+ {% endif %}
+
+ <br />
+
+</div>
diff --git a/searx/templates/legacy/preferences.html b/searx/templates/legacy/preferences.html
new file mode 100644
index 0000000..fb70832
--- /dev/null
+++ b/searx/templates/legacy/preferences.html
@@ -0,0 +1,128 @@
+{% extends "legacy/base.html" %}
+{% block head %} {% endblock %}
+{% block content %}
+<div class="row">
+ <h2>{{ _('Preferences') }}</h2>
+
+ <form method="post" action="{{ url_for('preferences') }}" id="search_form">
+ <fieldset>
+ <legend>{{ _('Default categories') }}</legend>
+ {% set display_tooltip = false %}
+ {% include 'legacy/categories.html' %}
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('Search language') }}</legend>
+ <p>
+ <select name='language'>
+ {% for lang_id,lang_name,country_name,english_name in language_codes | sort(attribute=1) %}
+ <option value="{{ lang_id }}" {% if lang_id == current_language %}selected="selected"{% endif %}>{{ lang_name }} {% if country_name %}({{ country_name }}) {% endif %}- {{ lang_id }}</option>
+ {% endfor %}
+ </select>
+ </p>
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('Interface language') }}</legend>
+ <p>
+ <select name='locale'>
+ {% for locale_id,locale_name in locales.items() | sort %}
+ <option value="{{ locale_id }}" {% if locale_id == current_locale %}selected="selected"{% endif %}>{{ locale_name }}</option>
+ {% endfor %}
+ </select>
+ </p>
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('Autocomplete') }}</legend>
+ <p>
+ <select name="autocomplete">
+ <option value=""> - </option>
+ {% for backend in autocomplete_backends %}
+ <option value="{{ backend }}" {% if backend == autocomplete %}selected="selected"{% endif %}>{{ backend }}</option>
+ {% endfor %}
+ </select>
+ </p>
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('Image proxy') }}</legend>
+ <p>
+ <select name='image_proxy'>
+ <option value="1" {% if image_proxy %}selected="selected"{% endif %}>{{ _('Enabled') }}</option>
+ <option value="" {% if not image_proxy %}selected="selected"{% endif %}>{{ _('Disabled') }}</option>
+ </select>
+ </p>
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('Method') }}</legend>
+ <p>
+ <select name='method'>
+ <option value="POST" {% if method == 'POST' %}selected="selected"{% endif %}>POST</option>
+ <option value="GET" {% if method == 'GET' %}selected="selected"{% endif %}>GET</option>
+ </select>
+ </p>
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('SafeSearch') }}</legend>
+ <p>
+ <select name='safesearch'>
+ <option value="2" {% if safesearch == '2' %}selected="selected"{% endif %}>{{ _('Strict') }}</option>
+ <option value="1" {% if safesearch == '1' %}selected="selected"{% endif %}>{{ _('Moderate') }}</option>
+ <option value="0" {% if safesearch == '0' %}selected="selected"{% endif %}>{{ _('None') }}</option>
+ </select>
+ </p>
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('Themes') }}</legend>
+ <p>
+ <select name="theme">
+ {% for name in themes %}
+ <option value="{{ name }}" {% if name == theme %}selected="selected"{% endif %}>{{ name }}</option>
+ {% endfor %}
+ </select>
+ </p>
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('Results on new tabs') }}</legend>
+ <p>
+ <select name='results_on_new_tab'>
+ <option value="1" {% if results_on_new_tab %}selected="selected"{% endif %}>{{ _('On') }}</option>
+ <option value="0" {% if not results_on_new_tab %}selected="selected"{% endif %}>{{ _('Off')}}</option>
+ </select>
+ </p>
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('Currently used search engines') }}</legend>
+
+ <table>
+ <tr>
+ <th>{{ _('Engine name') }}</th>
+ <th>{{ _('Category') }}</th>
+ <th>{{ _('Allow') }} / {{ _('Block') }}</th>
+ </tr>
+ {% for categ in all_categories %}
+ {% for search_engine in engines_by_category[categ] %}
+
+ {% if not search_engine.private %}
+ <tr>
+ <td>{{ search_engine.name }} ({{ shortcuts[search_engine.name] }})&lrm;</td>
+ <td>{{ _(categ) }}</td>
+ <td class="engine_checkbox">
+ <input type="checkbox" id="engine_{{ categ|replace(' ', '_') }}_{{ search_engine.name|replace(' ', '_') }}" name="engine_{{ search_engine.name }}__{{ categ }}"{% if (search_engine.name, categ) in disabled_engines %} checked="checked"{% endif %} />
+ <label class="allow" for="engine_{{ categ|replace(' ', '_') }}_{{ search_engine.name|replace(' ', '_') }}">{{ _('Allow') }}</label>
+ <label class="deny" for="engine_{{ categ|replace(' ', '_') }}_{{ search_engine.name|replace(' ', '_') }}">{{ _('Block') }}</label>
+ </td>
+ </tr>
+ {% endif %}
+ {% endfor %}
+ {% endfor %}
+ </table>
+ </fieldset>
+ <p class="small_font">{{ _('These settings are stored in your cookies, this allows us not to store this data about you.') }}
+ <br />
+ {{ _("These cookies serve your sole convenience, we don't use these cookies to track you.") }}
+ </p>
+
+ <input type="submit" value="{{ _('save') }}" />
+ <div class="{% if rtl %}left{% else %}right{% endif %} preferences_back"><a href="{{ url_for('clear_cookies') }}">{{ _('Reset defaults') }}</a></div>
+ <div class="{% if rtl %}left{% else %}right{% endif %} preferences_back"><a href="{{ url_for('index') }}">{{ _('back') }}</a></div>
+ </form>
+</div>
+{% endblock %}
diff --git a/searx/templates/legacy/result_templates/code.html b/searx/templates/legacy/result_templates/code.html
new file mode 100644
index 0000000..fee6c82
--- /dev/null
+++ b/searx/templates/legacy/result_templates/code.html
@@ -0,0 +1,11 @@
+<div class="result {{ result.class }}">
+ <h3 class="result_title"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3>
+ <p class="url">{{ result.pretty_url }}&lrm; <a class="cache_link" href="https://web.archive.org/web/{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ _('cached') }}</a></p>
+ {% if result.publishedDate %}<p class="published_date">{{ result.publishedDate }}</p>{% endif %}
+ <p class="content">{% if result.img_src %}<img src="{{ image_proxify(result.img_src) }}" class="image" />{% endif %}{% if result.content %}{{ result.content|safe }}<br class="last"/>{% endif %}</p>
+ {% if result.repository %}<p class="result-content"><a href="{{ result.repository|safe }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.repository }}</a></p>{% endif %}
+
+ <div dir="ltr">
+ {{ result.codelines|code_highlighter(result.code_language)|safe }}
+ </div>
+</div>
diff --git a/searx/templates/legacy/result_templates/default.html b/searx/templates/legacy/result_templates/default.html
new file mode 100644
index 0000000..da09117
--- /dev/null
+++ b/searx/templates/legacy/result_templates/default.html
@@ -0,0 +1,6 @@
+<div class="result {{ result.class }}">
+ <h3 class="result_title">{% if "icon_"~result.engine~".ico" in favicons %}<img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />{% endif %}<a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3>
+ <p class="url">{{ result.pretty_url }}&lrm; <a class="cache_link" href="https://web.archive.org/web/{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ _('cached') }}</a>
+ {% if result.publishedDate %}<span class="published_date">{{ result.publishedDate }}</span>{% endif %}</p>
+ <p class="content">{% if result.img_src %}<img src="{{ image_proxify(result.img_src) }}" class="image" />{% endif %}{% if result.content %}{{ result.content|safe }}<br class="last"/>{% endif %}</p>
+</div>
diff --git a/searx/templates/legacy/result_templates/images.html b/searx/templates/legacy/result_templates/images.html
new file mode 100644
index 0000000..00f62ab
--- /dev/null
+++ b/searx/templates/legacy/result_templates/images.html
@@ -0,0 +1,6 @@
+<div class="image_result">
+ <p>
+ <a href="{{ result.img_src }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}><img src="{% if result.thumbnail_src %}{{ image_proxify(result.thumbnail_src) }}{% else %}{{ image_proxify(result.img_src) }}{% endif %}" title="{{ result.title|striptags }}" alt="{{ result.title|striptags }}" /></a>
+ <span class="url"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %} class="small_font">{{ _('original context') }}</a></span>
+ </p>
+</div>
diff --git a/searx/templates/legacy/result_templates/map.html b/searx/templates/legacy/result_templates/map.html
new file mode 100644
index 0000000..0200e0f
--- /dev/null
+++ b/searx/templates/legacy/result_templates/map.html
@@ -0,0 +1,13 @@
+<div class="result {{ result.class }}">
+
+ {% if "icon_"~result.engine~".ico" in favicons %}
+ <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />
+ {% endif %}
+
+ <div>
+ <h3 class="result_title"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3>
+ <p class="url">{{ result.pretty_url }}&lrm; <a class="cache_link" href="https://web.archive.org/web/{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ _('cached') }}</a>
+ {% if result.publishedDate %}<span class="published_date">{{ result.publishedDate }}</span>{% endif %}</p>
+ <p class="content">{% if result.img_src %}<img src="{{ image_proxify(result.img_src) }}" class="image" />{% endif %}{% if result.content %}{{ result.content|safe }}<br class="last"/>{% endif %}</p>
+ </div>
+</div>
diff --git a/searx/templates/legacy/result_templates/torrent.html b/searx/templates/legacy/result_templates/torrent.html
new file mode 100644
index 0000000..67e058a
--- /dev/null
+++ b/searx/templates/legacy/result_templates/torrent.html
@@ -0,0 +1,13 @@
+<div class="result torrent_result">
+ {% if "icon_"~result.engine~".ico" in favicons %}
+ <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />
+ {% endif %}
+ <h3 class="result_title"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3>
+ <p class="url">{{ result.pretty_url }}&lrm;</p>
+ {% if result.content %}<p class="content">{{ result.content|safe }}</p>{% endif %}
+ <p>
+ {% if result.magnetlink %}<a href="{{ result.magnetlink }}" class="magnetlink">{{ _('magnet link') }}</a>{% endif %}
+ {% if result.torrentfile %}<a href="{{ result.torrentfile }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %} class="torrentfile">{{ _('torrent file') }}</a>{% endif %} -
+ <span class="stats">{{ _('Seeder') }} : {{ result.seed }}, {{ _('Leecher') }} : {{ result.leech }}</span>
+ </p>
+</div>
diff --git a/searx/templates/legacy/result_templates/videos.html b/searx/templates/legacy/result_templates/videos.html
new file mode 100644
index 0000000..727f44c
--- /dev/null
+++ b/searx/templates/legacy/result_templates/videos.html
@@ -0,0 +1,6 @@
+<div class="result">
+ <h3 class="result_title">{% if "icon_"~result.engine~".ico" in favicons %}<img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />{% endif %}<a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3>
+ {% if result.publishedDate %}<span class="published_date">{{ result.publishedDate }}</span><br />{% endif %}
+ <a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}><img class="thumbnail" src="{{ image_proxify(result.thumbnail) }}" title="{{ result.title|striptags }}" alt="{{ result.title|striptags }}"/></a>
+ <p class="url">{{ result.url }}&lrm;</p>
+</div>
diff --git a/searx/templates/legacy/results.html b/searx/templates/legacy/results.html
new file mode 100644
index 0000000..f0d7839
--- /dev/null
+++ b/searx/templates/legacy/results.html
@@ -0,0 +1,100 @@
+{% extends "legacy/base.html" %}
+{% block title %}{{ q|e }} - {% endblock %}
+{% block meta %}<link rel="alternate" type="application/rss+xml" title="Searx search: {{ q|e }}" href="{{ url_for('index') }}?q={{ q|urlencode }}&amp;format=rss&amp;{% for category in selected_categories %}category_{{ category }}=1&amp;{% endfor %}pageno={{ pageno }}">{% endblock %}
+{% block content %}
+<div class="preferences_container right"><a href="{{ url_for('preferences') }}" id="preferences"><span>preferences</span></a></div>
+<div class="small search center">
+ {% include 'legacy/search.html' %}
+</div>
+<div id="results">
+ <div id="sidebar">
+
+ <div id="search_url">
+ {{ _('Search URL') }}:
+ <input type="text" value="{{ base_url }}?q={{ q|urlencode }}{% if selected_categories %}&amp;categories={{ selected_categories|join(",") | replace(' ','+') }}{% endif %}{% if pageno > 1 %}&amp;pageno={{ pageno }}{% endif %}" readonly />
+ </div>
+ <div id="apis">
+ {{ _('Download results') }}
+ {% for output_type in ('csv', 'json', 'rss') %}
+ <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
+ <div class="left">
+ <input type="hidden" name="q" value="{{ q|e }}" />
+ <input type="hidden" name="format" value="{{ output_type }}" />
+ {% for category in selected_categories %}
+ <input type="hidden" name="category_{{ category }}" value="1"/>
+ {% endfor %}
+ <input type="hidden" name="pageno" value="{{ pageno }}" />
+ <input type="submit" value="{{ output_type }}" />
+ </div>
+ </form>
+ {% endfor %}
+ </div>
+ </div>
+
+ {% if answers %}
+ <div id="answers"><span>{{ _('Answers') }}</span>
+ {% for answer in answers %}
+ <span>{{ answer }}</span>
+ {% endfor %}
+ </div>
+ {% endif %}
+
+ {% if suggestions %}
+ <div id="suggestions"><span id="suggestions-title">{{ _('Suggestions') }} : </span>
+ {% set first = true %}
+ {% for suggestion in suggestions %}
+ {% if not first %} &bull; {% endif %}<form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
+ <input type="hidden" name="q" value="{{ suggestion }}">
+ <input type="submit" class="suggestion" value="{{ suggestion }}" />
+ </form>
+ {% set first = false %}
+ {% endfor %}
+ </div>
+ {% endif %}
+
+ {% if infoboxes %}
+ <div id="infoboxes">
+ {% for infobox in infoboxes %}
+ {% include 'legacy/infobox.html' %}
+ {% endfor %}
+ </div>
+ {% endif %}
+
+ {% for result in results %}
+ {% if result['template'] %}
+ {% include get_result_template('legacy', result['template']) %}
+ {% else %}
+ {% include 'legacy/result_templates/default.html' %}
+ {% endif %}
+ {% endfor %}
+
+ {% if paging %}
+ <div id="pagination">
+ {% if pageno > 1 %}
+ <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
+ <div class="{% if rtl %}right{% else %}left{% endif %}">
+ <input type="hidden" name="q" value="{{ q|e }}" />
+ {% for category in selected_categories %}
+ <input type="hidden" name="category_{{ category }}" value="1"/>
+ {% endfor %}
+ <input type="hidden" name="pageno" value="{{ pageno-1 }}" />
+ <input type="submit" value="<< {{ _('previous page') }}" />
+ </div>
+ </form>
+ {% endif %}
+ <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
+ <div class="{% if rtl %}left{% else %}right{% endif %}">
+ {% for category in selected_categories %}
+ <input type="hidden" name="category_{{ category }}" value="1"/>
+ {% endfor %}
+ <input type="hidden" name="q" value="{{ q|e }}" />
+ <input type="hidden" name="pageno" value="{{ pageno+1 }}" />
+ <input type="submit" value="{{ _('next page') }} >>" />
+ </div>
+ </form>
+
+ <br />
+ </div>
+ {% endif %}
+</div>
+{% endblock %}
diff --git a/searx/templates/legacy/search.html b/searx/templates/legacy/search.html
new file mode 100644
index 0000000..4d37f9b
--- /dev/null
+++ b/searx/templates/legacy/search.html
@@ -0,0 +1,8 @@
+<form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" id="search_form">
+ <div id="search_wrapper">
+ <input type="text" placeholder="{{ _('Search for...') }}" id="q" class="q" name="q" tabindex="1" autocomplete="off" size="100" {% if q %}value="{{ q }}"{% endif %}/>
+ <input type="submit" value="search" id="search_submit" />
+ </div>
+ {% set display_tooltip = true %}
+ {% include 'legacy/categories.html' %}
+</form>
diff --git a/searx/templates/legacy/stats.html b/searx/templates/legacy/stats.html
new file mode 100644
index 0000000..372447e
--- /dev/null
+++ b/searx/templates/legacy/stats.html
@@ -0,0 +1,22 @@
+{% extends "legacy/base.html" %}
+{% block head %} {% endblock %}
+{% block content %}
+<h2>{{ _('Engine stats') }}</h2>
+
+{% for stat_name,stat_category in stats %}
+<div class="left">
+ <table>
+ <tr colspan="3">
+ <th>{{ stat_name }}</th>
+ </tr>
+ {% for engine in stat_category %}
+ <tr>
+ <td>{{ engine.name }}</td>
+ <td>{{ '%.02f'|format(engine.avg) }}</td>
+ <td class="percentage"><div style="width: {{ engine.percentage }}%">&nbsp;</div></td>
+ </tr>
+ {% endfor %}
+ </table>
+</div>
+{% endfor %}
+{% endblock %}
diff --git a/searx/templates/oscar/404.html b/searx/templates/oscar/404.html
new file mode 100644
index 0000000..5a50880
--- /dev/null
+++ b/searx/templates/oscar/404.html
@@ -0,0 +1,9 @@
+{% extends "oscar/base.html" %}
+{% block content %}
+<div class="text-center">
+ <h1>{{ _('Page not found') }}</h1>
+ {% autoescape false %}
+ <p>{{ _('Go to %(search_page)s.', search_page=unicode('<a href="{}">{}</a>').format(url_for('index'), _('search page'))) }}</p>
+ {% endautoescape %}
+</div>
+{% endblock %}
diff --git a/searx/templates/oscar/about.html b/searx/templates/oscar/about.html
new file mode 100644
index 0000000..bc7fed8
--- /dev/null
+++ b/searx/templates/oscar/about.html
@@ -0,0 +1,5 @@
+{% extends "oscar/base.html" %}
+{% block title %}{{ _('about') }} - {% endblock %}
+{% block content %}
+{% include '__common__/about.html' %}
+{% endblock %}
diff --git a/searx/templates/oscar/advanced.html b/searx/templates/oscar/advanced.html
new file mode 100644
index 0000000..95d99ba
--- /dev/null
+++ b/searx/templates/oscar/advanced.html
@@ -0,0 +1,16 @@
+<input type="checkbox" name="advanced_search" id="check-advanced" {% if advanced_search %} checked="checked"{% endif %}>
+<label for="check-advanced">
+ <span class="glyphicon glyphicon-cog"></span>
+ {{ _('Advanced settings') }}
+</label>
+<div id="advanced-search-container">
+ {% include 'oscar/categories.html' %}
+ <div class="row">
+ <div class="col-xs-6">
+ {% include 'oscar/time-range.html' %}
+ </div>
+ <div class="col-xs-6">
+ {% include 'oscar/languages.html' %}
+ </div>
+ </div>
+</div>
diff --git a/searx/templates/oscar/base.html b/searx/templates/oscar/base.html
new file mode 100644
index 0000000..243e8b3
--- /dev/null
+++ b/searx/templates/oscar/base.html
@@ -0,0 +1,114 @@
+{% from 'oscar/macros.html' import icon %}
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"{% if rtl %} dir="rtl"{% endif %}>
+<head>
+ <meta charset="UTF-8" />
+ <meta name="description" content="searx - a privacy-respecting, hackable metasearch engine" />
+ <meta name="keywords" content="searx, search, search engine, metasearch, meta search" />
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="generator" content="searx/{{ searx_version }}">
+ <meta name="referrer" content="no-referrer">
+ <meta name="viewport" content="width=device-width, initial-scale=1 , maximum-scale=1.0, user-scalable=1" />
+ {% block meta %}{% endblock %}
+ <title>{% block title %}{% endblock %}{{ instance_name }}</title>
+
+ <link rel="stylesheet" href="{{ url_for('static', filename='css/bootstrap.min.css') }}" type="text/css" />
+ {% if preferences.get_value('oscar-style') %}
+ <link rel="stylesheet" href="{{ url_for('static', filename='css/'+preferences.get_value('oscar-style')+'.min.css') }}" type="text/css" />
+ {% else %}
+ <link rel="stylesheet" href="{{ url_for('static', filename='css/logicodev.min.css') }}" type="text/css" />
+ {% endif %}
+ <link rel="stylesheet" href="{{ url_for('static', filename='css/leaflet.min.css') }}" type="text/css" />
+ {% for css in styles %}
+ <link rel="stylesheet" href="{{ url_for('static', filename=css) }}" type="text/css" />
+ {% endfor %}
+
+ <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
+ <!--[if lt IE 9]>
+ <script src="{{ url_for('static', filename='js/html5shiv.min.js') }}"></script>
+ <script src="{{ url_for('static', filename='js/respond.min.js') }}"></script>
+ <![endif]-->
+
+ <link rel="shortcut icon" href="{{ url_for('static', filename='img/favicon.png') }}" />
+
+ {% block styles %}
+ {% endblock %}
+ {% block head %}
+ {% endblock %}
+
+ <link title="{{ instance_name }}" type="application/opensearchdescription+xml" rel="search" href="{{ url_for('opensearch') }}"/>
+
+ <script type="text/javascript">
+ searx = {};
+ searx.method = "{{ method or 'POST' }}";
+ searx.autocompleter = {% if autocomplete %}true{% else %}false{% endif %};
+ </script>
+ <noscript>
+ <style type="text/css">
+ .tab-content > .active_if_nojs, .active_if_nojs {display: block !important; visibility: visible !important;}
+ .margin_top_if_nojs {margin-top: 20px;}
+ .hide_if_nojs {display: none !important;overflow:none !important;}
+ .disabled_if_nojs {pointer-events: none; cursor: default; text-decoration: line-through;}
+ </style>
+ </noscript>
+</head>
+<body>
+ {% include 'oscar/navbar.html' %}
+ <div class="container">
+ {% if errors %}
+ <div class="alert alert-danger fade in" role="alert">
+ <button class="close" data-dismiss="alert" type="button">
+ <span aria-hidden="true">×</span>
+ <span class="sr-only">{{ _('Close') }}</span>
+ </button>
+ <strong class="lead">{{ icon('info-sign') }} {{ _('Error!') }}</strong>
+ <ul>
+ {% for message in errors %}
+ <li>{{ message }}</li>
+ {% endfor %}
+ </ul>
+ </div>
+ {% endif %}
+
+ {% block site_alert_error %}
+ {% endblock %}
+ {% block site_alert_warning %}
+ {% endblock %}
+ {% block site_alert_info %}
+ {% endblock %}
+ {% block site_alert_success %}
+ {% endblock %}
+
+ {% block content %}
+ {% endblock %}
+
+ </div>
+ <div class="footer">
+ <div class="container">
+ {% block footer %}
+ {% endblock %}
+ <p class="text-muted">
+ <small>
+ {{ _('Powered by') }} <a href="https://asciimoo.github.io/searx/">searx</a> - {{ searx_version }} - {{ _('a privacy-respecting, hackable metasearch engine') }}<br/>
+ <a href="https://github.com/asciimoo/searx">{{ _('Source code') }}</a> |
+ <a href="https://github.com/asciimoo/searx/issues">{{ _('Issue tracker') }}</a> |
+ <a href="https://github.com/asciimoo/searx/wiki/Searx-instances">{{ _('Public instances') }}</a>
+ </small>
+ </p>
+ </div>
+ </div>
+ <script src="{{ url_for('static', filename='js/jquery-1.11.1.min.js') }}"></script>
+ <script src="{{ url_for('static', filename='js/bootstrap.min.js') }}"></script>
+ {% if autocomplete %}<script src="{{ url_for('static', filename='js/typeahead.bundle.min.js') }}"></script>{% endif %}
+ <script src="{{ url_for('static', filename='js/require-2.1.15.min.js') }}"></script>
+ <script src="{{ url_for('static', filename='js/searx.min.js') }}"></script>
+ {% for script in scripts %}
+ <script src="{{ url_for('static', filename=script) }}"></script>
+ {% endfor %}
+ <noscript>
+ <style>
+ .glyphicon { display: none; }
+ </style>
+ </noscript>
+</body>
+</html>
diff --git a/searx/templates/oscar/categories.html b/searx/templates/oscar/categories.html
new file mode 100644
index 0000000..1ace10f
--- /dev/null
+++ b/searx/templates/oscar/categories.html
@@ -0,0 +1,13 @@
+<div id="categories">
+{% if rtl %}
+ {% for category in categories | reverse %}
+ <input class="hidden" type="checkbox" id="checkbox_{{ category|replace(' ', '_') }}" name="category_{{ category }}" {% if category in selected_categories %}checked="checked"{% endif %} />
+ <label for="checkbox_{{ category|replace(' ', '_') }}">{{ _(category) }}</label>
+ {% endfor %}
+{% else %}
+ {% for category in categories %}
+ <input class="hidden" type="checkbox" id="checkbox_{{ category|replace(' ', '_') }}" name="category_{{ category }}" {% if category in selected_categories %}checked="checked"{% endif %} />
+ <label for="checkbox_{{ category|replace(' ', '_') }}">{{ _(category) }}</label>
+ {% endfor %}
+{% endif %}
+</div>
diff --git a/searx/templates/oscar/index.html b/searx/templates/oscar/index.html
new file mode 100644
index 0000000..b941f5f
--- /dev/null
+++ b/searx/templates/oscar/index.html
@@ -0,0 +1,22 @@
+{% extends "oscar/base.html" %}
+{% block content %}
+<div class="container-fluid">
+ <div class="row">
+ <div class="text-center col-sm-12 col-md-12">
+ {% if cookies['oscar-style'] == 'pointhi' %}
+ <h1 class="text-hide center-block"><img class="center-block img-responsive" src="{{ url_for('static', filename='img/searx_logo.png') }}" alt="searx logo"/>searx</h1>
+ {% else %}
+ <h1 class="text-hide center-block" id="main-logo">
+ <img class="center-block img-responsive" src="{{ url_for('static', filename='img/logo_searx_a.png') }}" alt="searx logo" />
+ searx
+ </h1>
+ {% endif %}
+ </div>
+ </div>
+ <div class="row">
+ <div class="text-center col-sm-12 col-md-12">
+ {% include 'oscar/search_full.html' %}
+ </div>
+ </div>
+</div>
+{% endblock %}
diff --git a/searx/templates/oscar/infobox.html b/searx/templates/oscar/infobox.html
new file mode 100644
index 0000000..c98fb0e
--- /dev/null
+++ b/searx/templates/oscar/infobox.html
@@ -0,0 +1,35 @@
+{% from 'oscar/macros.html' import result_link with context %}
+<div class="panel panel-default infobox">
+ <div class="panel-heading">
+ <h4 class="panel-title infobox_part"><bdi>{{ infobox.infobox }}</bdi></h4>
+ </div>
+ <div class="panel-body">
+ {% if infobox.img_src %}<img class="img-responsive center-block infobox_part" src="{{ image_proxify(infobox.img_src) }}" alt="{{ infobox.infobox }}" />{% endif %}
+ {% if infobox.content %}<bdi><p class="infobox_part">{{ infobox.content }}</bdi></p>{% endif %}
+
+ {% if infobox.attributes %}
+ <table class="table table-striped infobox_part">
+ {% for attribute in infobox.attributes %}
+ <tr>
+ <td><bdi>{{ attribute.label }}</bdi></td>
+ {% if attribute.image %}
+ <td><img class="img-responsive" src="{{ image_proxify(attribute.image.src) }}" alt="{{ attribute.image.alt }}" /></td>
+ {% else %}
+ <td><bdi>{{ attribute.value }}</bdi></td>
+ {% endif %}
+ </tr>
+ {% endfor %}
+ </table>
+ {% endif %}
+
+ {% if infobox.urls %}
+ <div class="infobox_part">
+ <bdi>
+ {% for url in infobox.urls %}
+ <p class="btn btn-default btn-xs">{{ result_link(url.url, url.title) }}</a></p>
+ {% endfor %}
+ </bdi>
+ </div>
+ {% endif %}
+ </div>
+</div>
diff --git a/searx/templates/oscar/languages.html b/searx/templates/oscar/languages.html
new file mode 100644
index 0000000..369abca
--- /dev/null
+++ b/searx/templates/oscar/languages.html
@@ -0,0 +1,11 @@
+{% if preferences %}
+<select class="custom-select form-control" name='language'>
+{% else %}
+<select class="time_range custom-select form-control" id='language' name='language'>
+{% endif %}
+ {% for lang_id,lang_name,country_name,english_name in language_codes | sort(attribute=1) %}
+ <option value="{{ lang_id }}" {% if lang_id == current_language %}selected="selected"{% endif %}>
+ {{ lang_name }} {% if country_name %}({{ country_name }}) {% endif %}- {{ lang_id }}
+ </option>
+ {% endfor %}
+</select>
diff --git a/searx/templates/oscar/macros.html b/searx/templates/oscar/macros.html
new file mode 100644
index 0000000..0ff9575
--- /dev/null
+++ b/searx/templates/oscar/macros.html
@@ -0,0 +1,99 @@
+<!-- Draw glyphicon icon from bootstrap-theme -->
+{% macro icon(action) -%}
+ <span class="glyphicon glyphicon-{{ action }}"></span>
+{%- endmacro %}
+
+<!-- Draw favicon -->
+{% macro draw_favicon(favicon) -%}
+ <img width="32" height="32" class="favicon" src="{{ url_for('static', filename='themes/oscar/img/icons/' + favicon + '.png') }}" alt="{{ favicon }}" />
+{%- endmacro %}
+
+{%- macro result_link(url, title, classes='') -%}
+<a href="{{ url }}" {% if classes %}class="{{ classes }}" {% endif %}{% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ title }}</a>
+{%- endmacro -%}
+
+<!-- Draw result header -->
+{% macro result_header(result, favicons) -%}
+<h4 class="result_header">{% if result.engine~".png" in favicons %}{{ draw_favicon(result.engine) }} {% endif %}{{ result_link(result.url, result.title|safe) }}</h4>
+{%- endmacro %}
+
+<!-- Draw result sub header -->
+{% macro result_sub_header(result) -%}
+ {% if result.publishedDate %}<time class="text-muted" datetime="{{ result.pubdate }}" >{{ result.publishedDate }}</time>{% endif %}
+ {% if result.magnetlink %}<small> &bull; {{ result_link(result.magnetlink, icon('magnet') + _('magnet link'), "magnetlink") }}</small>{% endif %}
+ {% if result.torrentfile %}<small> &bull; {{ result_link(result.torrentfile, icon('download-alt') + _('torrent file'), "torrentfile") }}</small>{% endif %}
+{%- endmacro %}
+
+<!-- Draw result footer -->
+{% macro result_footer(result) -%}
+ <div class="clearfix"></div>
+ <div class="pull-right">
+ {% for engine in result.engines %}
+ <span class="label label-default">{{ engine }}</span>
+ {% endfor %}
+ <small>{{ result_link("https://web.archive.org/web/" + result.url, icon('link') + _('cached'), "text-info") }}</small>
+ {% if proxify %}
+ <small>{{ result_link(proxify(result.url), icon('sort') + _('proxied'), "text-info") }}</small>
+ {% endif %}
+</div>
+<div class="external-link">{{ result.pretty_url }}</div>
+{%- endmacro %}
+
+<!-- Draw result footer -->
+{% macro result_footer_rtl(result) -%}
+ <div class="clearfix"></div>
+ {% for engine in result.engines %}
+ <span class="label label-default">{{ engine }}</span>
+ {% endfor %}
+ <small>{{ result_link("https://web.archive.org/web/" + result.url, icon('link') + _('cached'), "text-info") }}</small>
+ {% if proxify %}
+ <small>{{ result_link(proxify(result.url), icon('sort') + _('proxied'), "text-info") }}</small>
+ {% endif %}
+ <div class="external-link">{{ result.pretty_url }}</div>
+{%- endmacro %}
+
+{% macro preferences_item_header(info, label, rtl) -%}
+ {% if rtl %}
+ <div class="row form-group">
+ <label class="col-sm-3 col-md-2 pull-right">{{ label }}</label>
+ <span class="col-sm-5 col-md-6 help-block pull-left">{{ info }}</span>
+ <div class="col-sm-4 col-md-4">
+ {% else %}
+ <div class="row form-group">
+ <label class="col-sm-3 col-md-2">{{ label }}</label>
+ <div class="col-sm-4 col-md-4">
+ {% endif %}
+{%- endmacro %}
+
+{% macro preferences_item_footer(info, label, rtl) -%}
+ {% if rtl %}
+ </div>
+ </div>
+ {% else %}
+ </div>
+ <span class="col-sm-5 col-md-6 help-block">{{ info }}</span>
+ </div>
+ {% endif %}
+{%- endmacro %}
+
+{% macro checkbox_toggle(id, blocked) -%}
+ <div class="onoffswitch">
+ <input type="checkbox" id="{{ id }}" name="{{ id }}"{% if blocked %} checked="checked"{% endif %} class="onoffswitch-checkbox">
+ <label class="onoffswitch-label" for="{{ id }}">
+ <span class="onoffswitch-inner"></span>
+ <span class="onoffswitch-switch"></span>
+ </label>
+ </div>
+{%- endmacro %}
+
+{% macro support_toggle(supports) -%}
+ {% if supports %}
+ <span class="label label-success">
+ {{ _("supported") }}
+ </span>
+ {% else %}
+ <span class="label label-danger">
+ {{ _("not supported") }}
+ </span>
+ {% endif %}
+{%- endmacro %}
diff --git a/searx/templates/oscar/messages/first_time.html b/searx/templates/oscar/messages/first_time.html
new file mode 100644
index 0000000..38db62b
--- /dev/null
+++ b/searx/templates/oscar/messages/first_time.html
@@ -0,0 +1,8 @@
+<div class="alert alert-info fade in" role="alert">
+ <button class="close" data-dismiss="alert" type="button">
+ <span aria-hidden="true">×</span>
+ <span class="sr-only">{{ _('Close') }}</span>
+ </button>
+ <strong class="lead">{{ icon('info-sign') }} {{ _('Heads up!') }}</strong>
+ {{ _('It look like you are using searx first time.') }}
+</div>
diff --git a/searx/templates/oscar/messages/no_cookies.html b/searx/templates/oscar/messages/no_cookies.html
new file mode 100644
index 0000000..9bebc8a
--- /dev/null
+++ b/searx/templates/oscar/messages/no_cookies.html
@@ -0,0 +1,5 @@
+{% from 'oscar/macros.html' import icon %}
+<div class="alert alert-info fade in" role="alert">
+ <strong class="lead">{{ icon('info-sign') }} {{ _('Information!') }}</strong>
+ {{ _('currently, there are no cookies defined.') }}
+</div>
diff --git a/searx/templates/oscar/messages/no_data_available.html b/searx/templates/oscar/messages/no_data_available.html
new file mode 100644
index 0000000..aee7917
--- /dev/null
+++ b/searx/templates/oscar/messages/no_data_available.html
@@ -0,0 +1,5 @@
+{% from 'oscar/macros.html' import icon %}
+<div class="alert alert-info fade in" role="alert">
+ <strong class="lead">{{ icon('info-sign') }} {{ _('Heads up!') }}</strong>
+ {{ _('There is currently no data available. ') }}
+</div>
diff --git a/searx/templates/oscar/messages/no_results.html b/searx/templates/oscar/messages/no_results.html
new file mode 100644
index 0000000..16b5984
--- /dev/null
+++ b/searx/templates/oscar/messages/no_results.html
@@ -0,0 +1,17 @@
+{% from 'oscar/macros.html' import icon %}
+{% if unresponsive_engines %}
+<div class="alert alert-danger fade in" role="alert">
+ <p><strong class="lead">{{ icon('remove-sign') }} {{ _('Error!') }}</strong> {{ _('Engines cannot retrieve results.') }}</p>
+ <p>
+ {% for engine_name, error_type in unresponsive_engines %}
+ {{ engine_name }} ({{ error_type }}){% if not loop.last %}, {% endif %}
+ {% endfor %}
+ </p>
+ <p><small>{{ _('Please, try again later or find another searx instance.') }}</small></p>
+</div>
+{% else %}
+<div class="alert alert-info fade in" role="alert">
+ <strong class="lead">{{ icon('info-sign') }} {{ _('Sorry!') }}</strong>
+ {{ _('we didn\'t find any results. Please use another query or search in more categories.') }}
+</div>
+{% endif %}
diff --git a/searx/templates/oscar/messages/save_settings_successfull.html b/searx/templates/oscar/messages/save_settings_successfull.html
new file mode 100644
index 0000000..63e578c
--- /dev/null
+++ b/searx/templates/oscar/messages/save_settings_successfull.html
@@ -0,0 +1,9 @@
+{% from 'oscar/macros.html' import icon %}
+<div class="alert alert-success fade in" role="alert">
+ <button class="close" data-dismiss="alert" type="button">
+ <span aria-hidden="true">×</span>
+ <span class="sr-only">{{ _('Close') }}</span>
+ </button>
+ <strong class="lead">{{ icon('ok-sign') }} {{ _('Well done!') }}</strong>
+ {{ _('Settings saved successfully.') }}
+</div>
diff --git a/searx/templates/oscar/messages/unknow_error.html b/searx/templates/oscar/messages/unknow_error.html
new file mode 100644
index 0000000..3c4c9c1
--- /dev/null
+++ b/searx/templates/oscar/messages/unknow_error.html
@@ -0,0 +1,9 @@
+{% from 'oscar/macros.html' import icon %}
+<div class="alert alert-danger fade in" role="alert">
+ <button class="close" data-dismiss="alert" type="button">
+ <span aria-hidden="true">×</span>
+ <span class="sr-only">{{ _('Close') }}</span>
+ </button>
+ <strong class="lead">{{ icon('exclamation-sign') }} {{ _('Oh snap!') }}</strong>
+ {{ _('Something went wrong.') }}
+</div>
diff --git a/searx/templates/oscar/navbar.html b/searx/templates/oscar/navbar.html
new file mode 100644
index 0000000..12bf14f
--- /dev/null
+++ b/searx/templates/oscar/navbar.html
@@ -0,0 +1,9 @@
+<div class="searx-navbar">
+ <span class="instance {% if rtl %}pull-right{% else %}pull-left{% endif%}">
+ <a href="{{ url_for('index') }}">{{ instance_name }}</a>
+ </span>
+ <span class="{% if rtl %}pull-left{% else %}pull-right{% endif %}">
+ <a href="{{ url_for('about') }}">{{ _('about') }}</a>
+ <a href="{{ url_for('preferences') }}">{{ _('preferences') }}</a>
+ </span>
+</div>
diff --git a/searx/templates/oscar/preferences.html b/searx/templates/oscar/preferences.html
new file mode 100644
index 0000000..b64d72d
--- /dev/null
+++ b/searx/templates/oscar/preferences.html
@@ -0,0 +1,311 @@
+{% from 'oscar/macros.html' import preferences_item_header, preferences_item_header_rtl, preferences_item_footer, preferences_item_footer_rtl, checkbox_toggle, support_toggle %}
+{% extends "oscar/base.html" %}
+{% block title %}{{ _('preferences') }} - {% endblock %}
+{% block content %}
+
+<div>
+
+ <h1>{{ _('Preferences') }}</h1>
+ <form method="post" action="{{ url_for('preferences') }}" id="search_form">
+
+ <!-- Nav tabs -->
+ <ul class="nav nav-tabs nav-justified hide_if_nojs" role="tablist" style="margin-bottom:20px;">
+ <li class="active"><a href="#tab_general" role="tab" data-toggle="tab">{{ _('General') }}</a></li>
+ <li><a href="#tab_engine" role="tab" data-toggle="tab">{{ _('Engines') }}</a></li>
+ <li><a href="#tab_plugins" role="tab" data-toggle="tab">{{ _('Plugins') }}</a></li>
+ {% if answerers %}<li><a href="#tab_answerers" role="tab" data-toggle="tab">{{ _('Answerers') }}</a></li>{% endif %}
+ <li><a href="#tab_cookies" role="tab" data-toggle="tab">{{ _('Cookies') }}</a></li>
+ </ul>
+
+ <!-- Tab panes -->
+ <noscript>
+ <h3>{{ _('General') }}</h3>
+ </noscript>
+ <div class="tab-content">
+ <div class="tab-pane active" id="tab_general">
+ <fieldset>
+ <div class="container-fluid">
+ <div class="row form-group">
+ {% if rtl %}
+ <div class="col-sm-11 col-md-10">
+ {% include 'oscar/categories.html' %}
+ </div>
+ <label class="col-sm-3 col-md-2">{{ _('Default categories') }}</label>
+ {% else %}
+ <label class="col-sm-3 col-md-2">{{ _('Default categories') }}</label>
+ <div class="col-sm-11 col-md-10 search-categories">
+ {% include 'oscar/categories.html' %}
+ </div>
+ {% endif %}
+ </div>
+ {% set language_label = _('Search language') %}
+ {% set language_info = _('What language do you prefer for search?') %}
+ {{ preferences_item_header(language_info, language_label, rtl) }}
+ {% include 'oscar/languages.html' %}
+ {{ preferences_item_footer(language_info, language_label, rtl) }}
+
+ {% set locale_label = _('Interface language') %}
+ {% set locale_info = _('Change the language of the layout') %}
+ {{ preferences_item_header(locale_info, locale_label, rtl) }}
+ <select class="form-control" name='locale'>
+ {% for locale_id,locale_name in locales.items() | sort %}
+ <option value="{{ locale_id }}" {% if locale_id == current_locale %}selected="selected"{% endif %}>{{ locale_name }}</option>
+ {% endfor %}
+ </select>
+ {{ preferences_item_footer(locale_info, locale_label, rtl) }}
+
+ {% set autocomplete_label = _('Autocomplete') %}
+ {% set autocomplete_info = _('Find stuff as you type') %}
+ {{ preferences_item_header(autocomplete_info, autocomplete_label, rtl) }}
+ <select class="form-control" name="autocomplete">
+ <option value=""> - </option>
+ {% for backend in autocomplete_backends %}
+ <option value="{{ backend }}" {% if backend == autocomplete %}selected="selected"{% endif %}>{{ backend }}</option>
+ {% endfor %}
+ </select>
+ {{ preferences_item_footer(autocomplete_info, autocomplete_label, rtl) }}
+
+ {% set image_proxy_label = _('Image proxy') %}
+ {% set image_proxy_info = _('Proxying image results through searx') %}
+ {{ preferences_item_header(image_proxy_info, image_proxy_label, rtl) }}
+ <select class="form-control" name='image_proxy'>
+ <option value="1" {% if image_proxy %}selected="selected"{% endif %}>{{ _('Enabled') }}</option>
+ <option value="" {% if not image_proxy %}selected="selected"{% endif %}>{{ _('Disabled')}}</option>
+ </select>
+ {{ preferences_item_footer(image_proxy_info, image_proxy_label, rtl) }}
+
+ {% set method_label = _('Method') %}
+ {% set method_info = _('Change how forms are submited, <a href="http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods" rel="external">learn more about request methods</a>') %}
+ {{ preferences_item_header(method_info, method_label, rtl) }}
+ <select class="form-control" name='method'>
+ <option value="POST" {% if method == 'POST' %}selected="selected"{% endif %}>POST</option>
+ <option value="GET" {% if method == 'GET' %}selected="selected"{% endif %}>GET</option>
+ </select>
+ {{ preferences_item_footer(method_info, method_label, rtl) }}
+
+ {% set safesearch_label = _('SafeSearch') %}
+ {% set safesearch_info = _('Filter content') %}
+ {{ preferences_item_header(safesearch_info, safesearch_label, rtl) }}
+ <select class="form-control" name='safesearch'>
+ <option value="2" {% if safesearch == '2' %}selected="selected"{% endif %}>{{ _('Strict') }}</option>
+ <option value="1" {% if safesearch == '1' %}selected="selected"{% endif %}>{{ _('Moderate') }}</option>
+ <option value="0" {% if safesearch == '0' %}selected="selected"{% endif %}>{{ _('None') }}</option>
+ </select>
+ {{ preferences_item_footer(safesearch_info, safesearch_label, rtl) }}
+
+ {% set theme_label = _('Themes') %}
+ {% set theme_info = _('Change searx layout') %}
+ {{ preferences_item_header(theme_info, theme_label, rtl) }}
+ <select class="form-control" name="theme">
+ {% for name in themes %}
+ <option value="{{ name }}" {% if name == theme %}selected="selected"{% endif %}>{{ name }}</option>
+ {% endfor %}
+ </select>
+ {{ preferences_item_footer(theme_info, theme_label, rtl) }}
+
+ {{ preferences_item_header(_('Choose style for this theme'), _('Style'), rtl) }}
+ <select class="form-control" name='oscar-style'>
+ <option value="logicodev" >Logicodev</option>
+ <option value="pointhi" {% if preferences.get_value('oscar-style') == 'pointhi' %}selected="selected"{% endif %}>Pointhi</option>
+ <option value="logicodev-dark" {% if preferences.get_value('oscar-style') == 'logicodev-dark' %}selected="selected"{% endif %}>Logicodev dark</option>
+ </select>
+ {{ preferences_item_footer(_('Choose style for this theme'), _('Style'), rtl) }}
+
+ {% set label = _('Results on new tabs') %}
+ {% set info = _('Open result links on new browser tabs') %}
+ {{ preferences_item_header(info, label, rtl) }}
+ <select class="form-control" name='results_on_new_tab'>
+ <option value="1" {% if results_on_new_tab %}selected="selected"{% endif %}>{{ _('On') }}</option>
+ <option value="0" {% if not results_on_new_tab %}selected="selected"{% endif %}>{{ _('Off')}}</option>
+ </select>
+ {{ preferences_item_footer(info, label, rtl) }}
+
+ {% set label = _('Open Access DOI resolver') %}
+ {% set info = _('Redirect to open-access versions of publications when available (plugin required)') %}
+ {{ preferences_item_header(info, label, rtl) }}
+ <select class="form-control" id='doi_resolver' name='doi_resolver'>
+ {% for doi_resolver_name,doi_resolver_url in doi_resolvers.items() %}
+ <option value="{{ doi_resolver_name }}" {% if doi_resolver_name == current_doi_resolver %}selected="selected"{% endif %}>
+ {{ doi_resolver_name }} - {{ doi_resolver_url }}
+ </option>
+ {% endfor %}
+ </select>
+ {{ preferences_item_footer(info, label, rtl) }}
+ </div>
+ </fieldset>
+ </div>
+ <div class="tab-pane active_if_nojs" id="tab_engine">
+
+ <!-- Nav tabs -->
+ <ul class="nav nav-tabs nav-justified hide_if_nojs" role="tablist" style="margin-bottom:20px;">
+ {% for categ in all_categories %}
+ <li{% if loop.first %} class="active"{% endif %}><a href="#tab_engine_{{ categ|replace(' ', '_') }}" role="tab" data-toggle="tab">{{ _(categ) }}</a></li>
+ {% endfor %}
+ </ul>
+
+ <noscript>
+ <h3>{{ _('Engines') }}</h3>
+ </noscript>
+
+ <!-- Tab panes -->
+ <div class="tab-content">
+ {% for categ in all_categories %}
+ <noscript><label>{{ _(categ) }}</label>
+ </noscript>
+ <div class="tab-pane{% if loop.first %} active{% endif %} active_if_nojs" id="tab_engine_{{ categ|replace(' ', '_') }}">
+ <div class="container-fluid">
+ <fieldset>
+ <div class="table-responsive">
+ <table class="table table-hover table-condensed table-striped">
+ <tr>
+ {% if not rtl %}
+ <th>{{ _("Allow") }}</th>
+ <th>{{ _("Engine name") }}</th>
+ <th>{{ _("Shortcut") }}</th>
+ <th>{{ _("Selected language") }}</th>
+ <th>{{ _("SafeSearch") }}</th>
+ <th>{{ _("Time range") }}</th>
+ <th>{{ _("Avg. time") }}</th>
+ <th>{{ _("Max time") }}</th>
+ {% else %}
+ <th>{{ _("Max time") }}</th>
+ <th>{{ _("Avg. time") }}</th>
+ <th>{{ _("Time range") }}</th>
+ <th>{{ _("SafeSearch") }}</th>
+ <th>{{ _("Selected language") }}</th>
+ <th>{{ _("Shortcut") }}</th>
+ <th>{{ _("Engine name") }}</th>
+ <th>{{ _("Allow") }}</th>
+ {% endif %}
+ </tr>
+ {% for search_engine in engines_by_category[categ] %}
+ {% if not search_engine.private %}
+ <tr>
+ {% if not rtl %}
+ <td class="onoff-checkbox">
+ {{ checkbox_toggle('engine_' + search_engine.name|replace(' ', '_') + '__' + categ|replace(' ', '_'), (search_engine.name, categ) in disabled_engines) }}
+ </td>
+ <th>{{ search_engine.name }}</th>
+ <td class="name">{{ shortcuts[search_engine.name] }}</td>
+ <td>{{ support_toggle(stats[search_engine.name].supports_selected_language) }}</td>
+ <td>{{ support_toggle(search_engine.safesearch==True) }}</td>
+ <td>{{ support_toggle(search_engine.time_range_support==True) }}</td>
+ <td class="{{ 'danger' if stats[search_engine.name]['warn_time'] else '' }}">{{ 'N/A' if stats[search_engine.name].time==None else stats[search_engine.name].time }}</td>
+ <td class="{{ 'danger' if stats[search_engine.name]['warn_timeout'] else '' }}">{{ search_engine.timeout }}</td>
+ {% else %}
+ <td class="{{ 'danger' if stats[search_engine.name]['warn_timeout'] else '' }}">{{ search_engine.timeout }}</td>
+ <td class="{{ 'danger' if stats[search_engine.name]['warn_time'] else '' }}">{{ 'N/A' if stats[search_engine.name].time==None else stats[search_engine.name].time }}</td>
+ <td>{{ support_toggle(search_engine.time_range_support==True) }}</td>
+ <td>{{ support_toggle(search_engine.safesearch==True) }}</td>
+ <td>{{ support_toggle(stats[search_engine.name].supports_selected_language) }}</td>
+ <td>{{ shortcuts[search_engine.name] }}</td>
+ <th>{{ search_engine.name }}</th>
+ <td class="onoff-checkbox">
+ {{ checkbox_toggle('engine_' + search_engine.name|replace(' ', '_') + '__' + categ|replace(' ', '_'), (search_engine.name, categ) in disabled_engines) }}
+ </td>
+ {% endif %}
+ </tr>
+ {% endif %}
+ {% endfor %}
+ </table>
+ </div>
+ </fieldset>
+ </div>
+ </div>
+ {% endfor %}
+ </div>
+ </div>
+ <div class="tab-pane active_if_nojs" id="tab_plugins">
+ <noscript>
+ <h3>{{ _('Plugins') }}</h3>
+ </noscript>
+ <fieldset>
+ <div class="container-fluid">
+ {% for plugin in plugins %}
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h3 class="panel-title">{{ _(plugin.name) }}</h3>
+ </div>
+ <div class="panel-body">
+ <div class="col-xs-6 col-sm-4 col-md-6">{{ _(plugin.description) }}</div>
+ <div class="col-xs-6 col-sm-4 col-md-6">
+ <div class="onoff-checkbox">
+ {{ checkbox_toggle('plugin_' + plugin.id, plugin.id not in allowed_plugins) }}
+ </div>
+ </div>
+ </div>
+ </div>
+ {% endfor %}
+ </div>
+ </fieldset>
+ </div>
+
+ {% if answerers %}
+ <div class="tab-pane active_if_nojs" id="tab_answerers">
+ <noscript>
+ <h3>{{ _('Answerers') }}</h3>
+ </noscript>
+ <p class="text-muted" style="margin:20px 0;">
+ {{ _('This is the list of searx\'s instant answering modules.') }}
+ </p>
+ <table class="table table-striped">
+ <tr>
+ <th class="text-muted">{{ _('Name') }}</th>
+ <th class="text-muted">{{ _('Keywords') }}</th>
+ <th class="text-muted">{{ _('Description') }}</th>
+ <th class="text-muted">{{ _('Examples') }}</th>
+ </tr>
+
+ {% for answerer in answerers %}
+ <tr>
+ <td class="text-muted">{{ answerer.info.name }}</td>
+ <td class="text-muted">{{ answerer.keywords|join(', ') }}</td>
+ <td class="text-muted">{{ answerer.info.description }}</td>
+ <td class="text-muted">{{ answerer.info.examples|join(', ') }}</td>
+ </tr>
+ {% endfor %}
+ </table>
+ </div>
+ {% endif %}
+
+ <div class="tab-pane active_if_nojs" id="tab_cookies">
+ <noscript>
+ <h3>{{ _('Cookies') }}</h3>
+ </noscript>
+ <p class="text-muted" style="margin:20px 0;">
+ {{ _('This is the list of cookies and their values searx is storing on your computer.') }}<br />
+ {{ _('With that list, you can assess searx transparency.') }}<br />
+ </p>
+ {% if cookies %}
+ <table class="table table-striped">
+ <tr>
+ <th class="text-muted" style="padding-right:40px;">{{ _('Cookie name') }}</th>
+ <th class="text-muted">{{ _('Value') }}</th>
+ </tr>
+
+ {% for cookie in cookies %}
+ <tr>
+ <td class="text-muted" style="padding-right:40px;">{{ cookie }}</td>
+ <td class="text-muted">{{ cookies[cookie] }}</td>
+ </tr>
+ {% endfor %}
+ </table>
+ {% else %}
+ {% include 'oscar/messages/no_cookies.html' %}
+ {% endif %}
+ </div>
+ </div>
+ <p class="text-muted" style="margin:20px 0;">{{ _('These settings are stored in your cookies, this allows us not to store this data about you.') }}
+ <br />
+ {{ _("These cookies serve your sole convenience, we don't use these cookies to track you.") }}
+ </p>
+ <p style="margin:20px 0;">{{ _('Search URL of the currently saved preferences') }} <small class="text-muted">({{ _('Note: specifying custom settings in the search URL can reduce privacy by leaking data to the clicked result sites.') }})</small>:<br/>
+ <input readonly="" class="form-control select-all-on-click cursor-text" type="url" value="{{ url_for('index', _external=True) }}?preferences={{ preferences_url_params|e }}{% raw %}&amp;q=%s{% endraw %}">
+ </p>
+
+ <input type="submit" class="btn btn-primary" value="{{ _('save') }}" />
+ <a href="{{ url_for('index') }}"><div class="btn btn-default">{{ _('back') }}</div></a>
+ <a href="{{ url_for('clear_cookies') }}"><div class="btn btn-default">{{ _('Reset defaults') }}</div></a>
+ </form>
+</div>
+{% endblock %}
diff --git a/searx/templates/oscar/result_templates/code.html b/searx/templates/oscar/result_templates/code.html
new file mode 100644
index 0000000..ba74d03
--- /dev/null
+++ b/searx/templates/oscar/result_templates/code.html
@@ -0,0 +1,18 @@
+{% from 'oscar/macros.html' import result_header, result_sub_header, result_footer, result_footer_rtl, icon %}
+
+{{ result_header(result, favicons) }}
+{{ result_sub_header(result) }}
+
+{% if result.content %}<p class="result-content">{{ result.content|safe }}</p>{% endif %}
+
+{% if result.repository %}<p class="result-content">{{ icon('file') }} <a href="{{ result.repository }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.repository }}</a></p>{% endif %}
+
+<div dir="ltr">
+{{ result.codelines|code_highlighter(result.code_language)|safe }}
+</div>
+
+{% if rtl %}
+{{ result_footer_rtl(result) }}
+{% else %}
+{{ result_footer(result) }}
+{% endif %}
diff --git a/searx/templates/oscar/result_templates/default.html b/searx/templates/oscar/result_templates/default.html
new file mode 100644
index 0000000..3ed0f31
--- /dev/null
+++ b/searx/templates/oscar/result_templates/default.html
@@ -0,0 +1,31 @@
+{% from 'oscar/macros.html' import result_header, result_sub_header, result_footer, result_footer_rtl, icon with context %}
+
+{{ result_header(result, favicons) }}
+{{ result_sub_header(result) }}
+
+{% if result.embedded %}
+ <small> &bull; <a class="text-info btn-collapse collapsed cursor-pointer media-loader disabled_if_nojs" data-toggle="collapse" data-target="#result-media-{{ index }}" data-btn-text-collapsed="{{ _('show media') }}" data-btn-text-not-collapsed="{{ _('hide media') }}">{{ icon('music') }} {{ _('show media') }}</a></small>
+{% endif %}
+
+{% if result.embedded %}
+<div id="result-media-{{ index }}" class="collapse">
+ {{ result.embedded|safe }}
+</div>
+{% endif %}
+
+{% if result.img_src %}
+<div class="container-fluid">
+ <div class="row">
+<img src="{{ image_proxify(result.img_src) }}" alt="{{ result.title|striptags }}" title="{{ result.title|striptags }}" style="width: auto; max-height: 60px; min-height: 60px;" class="col-xs-2 col-sm-4 col-md-4 result-content">
+{% if result.content %}<p class="result-content col-xs-8 col-sm-8 col-md-8">{{ result.content|safe }}</p>{% endif %}
+ </div>
+</div>
+{% else %}
+{% if result.content %}<p class="result-content">{{ result.content|safe }}</p>{% endif %}
+{% endif %}
+
+{% if rtl %}
+{{ result_footer_rtl(result) }}
+{% else %}
+{{ result_footer(result) }}
+{% endif %}
diff --git a/searx/templates/oscar/result_templates/images.html b/searx/templates/oscar/result_templates/images.html
new file mode 100644
index 0000000..b23f349
--- /dev/null
+++ b/searx/templates/oscar/result_templates/images.html
@@ -0,0 +1,39 @@
+{% from 'oscar/macros.html' import draw_favicon %}
+
+<a href="{{ result.img_src }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %} data-toggle="modal" data-target="#modal-{{ index }}-{{pageno}}">
+ <img src="{% if result.thumbnail_src %}{{ image_proxify(result.thumbnail_src) }}{% else %}{{ image_proxify(result.img_src) }}{% endif %}" alt="{{ result.title|striptags }}" title="{{ result.title|striptags }}" class="img-thumbnail">
+</a>
+
+<div class="modal fade" id="modal-{{ index }}-{{ pageno }}" tabindex="-1" role="dialog" aria-hidden="true">
+ <div class="modal-dialog">
+ <div class="modal-wrapper">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
+ <h4 class="modal-title">{% if result.engine~".png" in favicons %}{{ draw_favicon(result.engine) }} {% endif %}{{ result.title|striptags }}</h4>
+ </div>
+ <div class="modal-body">
+ <img class="img-responsive center-block" src="{% if result.thumbnail_src %}{{ image_proxify(result.thumbnail_src) }}{% else %}{{ image_proxify(result.img_src) }}{% endif %}" alt="{{ result.title|striptags }}">
+ {% if result.author %}<span class="photo-author">{{ result.author }}</span><br />{% endif %}
+ {% if result.content %}
+ <p class="result-content">
+ {{ result.content }}
+ </p>
+ {% endif %}
+ </div>
+ <div class="modal-footer">
+ <div class="clearfix"></div>
+ <span class="label label-default pull-right">{{ result.engine }}</span>
+ <p class="text-muted pull-left">{{ result.pretty_url }}</p>
+ <div class="clearfix"></div>
+ <div class="row">
+ <div class="col-md-6">
+ <a href="{{ result.img_src }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %} class="btn btn-default">{{ _('Get image') }}</a>
+ </div>
+ <div class="col-md-6">
+ <a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %} class="btn btn-default">{{ _('View source') }}</a>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/searx/templates/oscar/result_templates/map.html b/searx/templates/oscar/result_templates/map.html
new file mode 100644
index 0000000..822c7cd
--- /dev/null
+++ b/searx/templates/oscar/result_templates/map.html
@@ -0,0 +1,72 @@
+{% from 'oscar/macros.html' import result_header, result_sub_header, result_footer, result_footer_rtl, icon %}
+
+{{ result_header(result, favicons) }}
+{{ result_sub_header(result) }}
+
+{% if (result.latitude and result.longitude) or result.boundingbox %}
+ <small> &bull; <a class="text-info btn-collapse collapsed searx_init_map cursor-pointer disabled_if_nojs" data-toggle="collapse" data-target="#result-map-{{ index }}" data-leaflet-target="osm-map-{{ index }}" data-map-lon="{{ result.longitude }}" data-map-lat="{{ result.latitude }}" {% if result.boundingbox %}data-map-boundingbox='{{ result.boundingbox|tojson|safe }}'{% endif %} {% if result.geojson %}data-map-geojson='{{ result.geojson|tojson|safe }}'{% endif %} data-btn-text-collapsed="{{ _('show map') }}" data-btn-text-not-collapsed="{{ _('hide map') }}">{{ icon('globe') }} {{ _('show map') }}</a></small>
+{% endif %}
+
+{% if result.osm and (result.osm.type and result.osm.id) %}
+ <small> &bull; <a class="text-info btn-collapse collapsed cursor-pointer searx_overpass_request disabled_if_nojs" data-toggle="collapse" data-target="#result-overpass-{{ index }}" data-osm-type="{{ result.osm.type }}" data-osm-id="{{ result.osm.id }}" data-result-table="result-overpass-table-{{ index }}" data-result-table-loadicon="result-overpass-table-loading-{{ index }}" data-btn-text-collapsed="{{ _('show details') }}" data-btn-text-not-collapsed="{{ _('hide details') }}">{{ icon('map-marker') }} {{ _('show details') }}</a></small>
+{% endif %}
+
+{# {% if (result.latitude and result.longitude) %}
+ <small> &bull; <a class="text-info btn-collapse collapsed cursor-pointer disabled_if_nojs" data-toggle="collapse" data-target="#result-geodata-{{ index }}" data-btn-text-collapsed="{{ _('show geodata') }}" data-btn-text-not-collapsed="{{ _('hide geodata') }}">{{ icon('map-marker') }} {{ _('show geodata') }}</a></small>
+{% endif %} #}
+
+<div class="container-fluid">
+
+{% if result.address %}
+<p class="row result-content result-adress col-xs-12 col-sm-5 col-md-4" itemscope itemtype="http://schema.org/PostalAddress">
+ {% if result.address.name %}
+ <strong itemprop="name">{{ result.address.name }}</strong><br/>
+ {% endif %}
+ {% if result.address.road %}
+ <span itemprop="streetAddress">
+ {% if result.address.house_number %}{{ result.address.house_number }}, {% endif %}
+ {{ result.address.road }}
+ </span><br/>
+ {% endif %}
+ {% if result.address.locality %}
+ <span itemprop="addressLocality">{{ result.address.locality }}</span>
+ {% if result.address.postcode %}, <span itemprop="postalCode">{{ result.address.postcode }}</span>{% endif %}
+ <br/>
+ {% endif %}
+ {% if result.address.country %}
+ <span itemprop="addressCountry">{{ result.address.country }}</span>
+ {% endif %}
+</p>
+{% endif %}
+
+{% if result.osm and (result.osm.type and result.osm.id) %}
+ <div class="row result-content collapse col-xs-12 col-sm-7 col-md-8" id="result-overpass-{{ index }}"{% if rtl %} dir="ltr"{% endif %}>
+ <div class="text-center" id="result-overpass-table-loading-{{ index }}"><img src="{{ url_for('static', filename='img/loader.gif') }}" alt="Loading ..."/></div>
+ <table class="table table-striped table-condensed hidden" id="result-overpass-table-{{ index }}">
+ <tr><th>key</th><th>value</th></tr>
+ </table>
+ </div>
+{% endif %}
+
+{# {% if (result.latitude and result.longitude) %}
+ <div class="row collapse col-xs-12 col-sm-5 col-md-4" id="result-geodata-{{ index }}">
+ <strong>Longitude:</strong> {{ result.longitude }} <br/>
+ <strong>Latitude:</strong> {{ result.latitude }}
+ </div>
+{% endif %} #}
+
+{% if result.content %}<p class="row result-content col-xs-12 col-sm-12 col-md-12">{{ result.content|safe }}</p>{% endif %}
+
+</div>
+
+{% if (result.latitude and result.longitude) or result.boundingbox %}
+ <div class="collapse" id="result-map-{{ index }}">
+ <div style="height:300px; width:100%; margin: 10px 0;" id="osm-map-{{ index }}"></div>
+ </div>
+{% endif %}
+
+{% if rtl %}
+{{ result_footer_rtl(result) }}
+{% else %}
+{{ result_footer(result) }}
+{% endif %}
diff --git a/searx/templates/oscar/result_templates/torrent.html b/searx/templates/oscar/result_templates/torrent.html
new file mode 100644
index 0000000..bc2b30f
--- /dev/null
+++ b/searx/templates/oscar/result_templates/torrent.html
@@ -0,0 +1,25 @@
+{% from 'oscar/macros.html' import result_header, result_sub_header, result_footer, result_footer_rtl, icon %}
+
+{{ result_header(result, favicons) }}
+{{ result_sub_header(result) }}
+
+<p class="result-content">{{ icon('transfer') }} {{ _('Seeder') }} <span class="badge">{{ result.seed }}</span> &bull; {{ _('Leecher') }} <span class="badge">{{ result.leech }}</span>
+{% if result.filesize %}<br />{{ icon('floppy-disk') }} {{ _('Filesize') }}
+ <span class="badge">
+ {% if result.filesize < 1024 %}{{ result.filesize }} {{ _('Bytes') }}
+ {% elif result.filesize < 1024*1024 %}{{ '{0:0.2f}'.format(result.filesize/1024) }} {{ _('kiB') }}
+ {% elif result.filesize < 1024*1024*1024 %}{{ '{0:0.2f}'.format(result.filesize/1024/1024) }} {{ _('MiB') }}
+ {% elif result.filesize < 1024*1024*1024*1024 %}{{ '{0:0.2f}'.format(result.filesize/1024/1024/1024) }} {{ _('GiB') }}
+ {% else %}{{ '{0:0.2f}'.format(result.filesize/1024/1024/1024/1024) }} {{ _('TiB') }}{% endif %}
+ </span>{% endif %}
+{% if result.files %}<br />{{ icon('file') }} {{ _('Number of Files') }} <span class="badge">{{ result.files }}</span>{% endif %}
+
+{% if result.content %}<br />{{ result.content|safe }}{% endif %}
+
+</p>
+
+{% if rtl %}
+{{ result_footer_rtl(result) }}
+{% else %}
+{{ result_footer(result) }}
+{% endif %}
diff --git a/searx/templates/oscar/result_templates/videos.html b/searx/templates/oscar/result_templates/videos.html
new file mode 100644
index 0000000..36fb262
--- /dev/null
+++ b/searx/templates/oscar/result_templates/videos.html
@@ -0,0 +1,27 @@
+{% from 'oscar/macros.html' import result_header, result_sub_header, result_footer, result_footer_rtl, icon %}
+
+{{ result_header(result, favicons) }}
+{{ result_sub_header(result) }}
+
+{% if result.embedded %}
+ <small> &bull; <a class="text-info btn-collapse collapsed cursor-pointer media-loader disabled_if_nojs" data-toggle="collapse" data-target="#result-video-{{ index }}" data-btn-text-collapsed="{{ _('show video') }}" data-btn-text-not-collapsed="{{ _('hide video') }}">{{ icon('film') }} {{ _('show video') }}</a></small>
+{% endif %}
+
+{% if result.embedded %}
+<div id="result-video-{{ index }}" class="collapse">
+ {{ result.embedded|safe }}
+</div>
+{% endif %}
+
+<div class="container-fluid">
+ <div class="row">
+ <a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}><img class="thumbnail col-xs-6 col-sm-4 col-md-4 result-content" src="{{ image_proxify(result.thumbnail) }}" alt="{{ result.title|striptags }} {{ result.engine }}" /></a>
+ {% if result.content %}<p class="col-xs-12 col-sm-8 col-md-8 result-content">{{ result.content|safe }}</p>{% endif %}
+ </div>
+</div>
+
+{% if rtl %}
+{{ result_footer_rtl(result) }}
+{% else %}
+{{ result_footer(result) }}
+{% endif %}
diff --git a/searx/templates/oscar/results.html b/searx/templates/oscar/results.html
new file mode 100644
index 0000000..ee1052d
--- /dev/null
+++ b/searx/templates/oscar/results.html
@@ -0,0 +1,155 @@
+{% extends "oscar/base.html" %}
+{% macro search_form_attrs(pageno) -%}
+ {% for category in selected_categories %}<input type="hidden" name="category_{{ category }}" value="1"/>{% endfor %}
+ <input type="hidden" name="q" value="{{ q|e }}" />
+ <input type="hidden" name="pageno" value="{{ pageno }}" />
+ <input type="hidden" name="time_range" value="{{ time_range }}" />
+ <input type="hidden" name="language" value="{{ current_language }}" />
+{%- endmacro %}
+{%- macro search_url() %}{{ base_url }}?q={{ q|urlencode }}{% if selected_categories %}&amp;categories={{ selected_categories|join(",") | replace(' ','+') }}{% endif %}{% if pageno > 1 %}&amp;pageno={{ pageno }}{% endif %}{% if time_range %}&amp;time_range={{ time_range }}{% endif %}{% if current_language != 'all' %}&amp;language={{ current_language }}{% endif %}{% endmacro -%}
+
+{% block title %}{{ q|e }} - {% endblock %}
+{% block meta %}<link rel="alternate" type="application/rss+xml" title="Searx search: {{ q|e }}" href="{{ search_url() }}&amp;format=rss">{% endblock %}
+{% block content %}
+ {% include 'oscar/search.html' %}
+ <div class="row">
+ <div class="col-sm-8" id="main_results">
+ <h1 class="sr-only">{{ _('Search results') }}</h1>
+
+ {% if corrections %}
+ <div class="result">
+ <span class="result_header text-muted form-inline pull-left suggestion_item">{{ _('Try searching for:') }}</span>
+ {% for correction in corrections %}
+ <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" role="navigation" class="form-inline pull-left suggestion_item">
+ <input type="hidden" name="q" value="{{ correction }}">
+ <button type="submit" class="btn btn-default btn-xs">{{ correction }}</button>
+ </form>
+ {% endfor %}
+ </div>
+ {% endif %}
+
+ {% if answers %}
+ {% for answer in answers %}
+ <div class="result well">
+ <span>{{ answer }}</span>
+ </div>
+ {% endfor %}
+ {% endif %}
+
+ {% for result in results %}
+ <div class="result {% if result['template'] %}result-{{ result.template|replace('.html', '') }}{% else %}result-default{% endif %}">
+ {% set index = loop.index %}
+ {% if result.template %}
+ {% include get_result_template('oscar', result['template']) %}
+ {% else %}
+ {% include 'oscar/result_templates/default.html' %}
+ {% endif %}
+ </div>
+ {% endfor %}
+
+ {% if not results and not answers %}
+ {% include 'oscar/messages/no_results.html' %}
+ {% endif %}
+
+ <div class="clearfix"></div>
+
+ {% if paging %}
+ {% if rtl %}
+ <div id="pagination">
+ <div class="pull-left">
+ <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" class="pull-left">
+ {{ search_form_attrs(pageno+1) }}
+ <button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-backward"></span> {{ _('next page') }}</button>
+ </form>
+ </div>
+ <div class="pull-right">
+ <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" class="pull-left">
+ {{ search_form_attrs(pageno-1) }}
+ <button type="submit" class="btn btn-default" {% if pageno == 1 %}disabled{% endif %}><span class="glyphicon glyphicon-forward"></span> {{ _('previous page') }}</button>
+ </form>
+ </div>
+ </div><!-- /#pagination -->
+ <div class="clearfix"></div>
+ {% else %}
+ <div id="pagination">
+ <div class="pull-left">
+ <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" class="pull-left">
+ {{ search_form_attrs(pageno-1) }}
+ <button type="submit" class="btn btn-default" {% if pageno == 1 %}disabled{% endif %}><span class="glyphicon glyphicon-backward"></span> {{ _('previous page') }}</button>
+ </form>
+ </div>
+ <div class="pull-right">
+ <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" class="pull-left">
+ {{ search_form_attrs(pageno+1) }}
+ <button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-forward"></span> {{ _('next page') }}</button>
+ </form>
+ </div>
+ </div><!-- /#pagination -->
+ <div class="clearfix"></div>
+ {% endif %}
+ {% endif %}
+ </div><!-- /#main_results -->
+
+ <div class="col-sm-4" id="sidebar_results">
+ {% if number_of_results != '0' %}
+ <p><small>{{ _('Number of results') }}: {{ number_of_results }}</small></p>
+ {% endif %}
+
+ {% if unresponsive_engines and results|length >= 1 %}
+ <div class="alert alert-danger fade in" role="alert">
+ <p>{{ _('Engines cannot retrieve results') }}:</p>
+ {% for engine_name, error_type in unresponsive_engines %}
+ {{ engine_name }} ({{ error_type }}){% if not loop.last %}, {% endif %}
+ {% endfor %}
+ </div>
+ {% endif %}
+
+ {% if infoboxes %}
+ {% for infobox in infoboxes %}
+ {% include 'oscar/infobox.html' %}
+ {% endfor %}
+ {% endif %}
+
+ {% if suggestions %}
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h4 class="panel-title">{{ _('Suggestions') }}</h4>
+ </div>
+ <div class="panel-body">
+ {% for suggestion in suggestions %}
+ <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" role="navigation" class="form-inline pull-{% if rtl %}right{% else %}left{% endif %} suggestion_item">
+ <input type="hidden" name="q" value="{{ suggestion }}">
+ <button type="submit" class="btn btn-default btn-xs">{{ suggestion }}</button>
+ </form>
+ {% endfor %}
+ </div>
+ </div>
+ {% endif %}
+
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h4 class="panel-title">{{ _('Links') }}</h4>
+ </div>
+ <div class="panel-body">
+ <form role="form">
+ <div class="form-group">
+ <label for="search_url">{{ _('Search URL') }}</label>
+ <input id="search_url" type="url" class="form-control select-all-on-click cursor-text" name="search_url" value="{{ search_url() }}" readonly>
+ </div>
+ </form>
+
+ <label>{{ _('Download results') }}</label>
+ <div class="clearfix"></div>
+ {% for output_type in ('csv', 'json', 'rss') %}
+ <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" class="form-inline pull-{% if rtl %}right{% else %}left{% endif %} result_download">
+ {{ search_form_attrs(pageno) }}
+ <input type="hidden" name="format" value="{{ output_type }}">
+ <button type="submit" class="btn btn-default">{{ output_type }}</button>
+ </form>
+ {% endfor %}
+ <div class="clearfix"></div>
+ </div>
+ </div>
+ </div><!-- /#sidebar_results -->
+ </div>
+{% endblock %}
diff --git a/searx/templates/oscar/search.html b/searx/templates/oscar/search.html
new file mode 100644
index 0000000..59ee468
--- /dev/null
+++ b/searx/templates/oscar/search.html
@@ -0,0 +1,24 @@
+{% from 'oscar/macros.html' import icon %}
+<form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" id="search_form" role="search">
+ <div class="row">
+ <div class="col-xs-12 col-md-8">
+ <div class="input-group search-margin">
+ <input type="search" name="q" class="form-control" id="q" placeholder="{{ _('Search for...') }}" autocomplete="off" value="{{ q }}">
+ <span class="input-group-btn">
+ <button type="submit" class="btn btn-default"><span class="hide_if_nojs">{{ icon('search') }}</span><span class="hidden active_if_nojs">{{ _('Start search') }}</span></button>
+ </span>
+ </div>
+ </div>
+ <div class="col-xs-6 col-md-2 search-margin">
+ {% include 'oscar/time-range.html' %}
+ </div>
+ <div class="col-xs-6 col-md-2 search-margin">
+ {% include 'oscar/languages.html' %}
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-sm-12">
+ {% include 'oscar/categories.html' %}
+ </div>
+ </div>
+</form><!-- / #search_form_full -->
diff --git a/searx/templates/oscar/search_full.html b/searx/templates/oscar/search_full.html
new file mode 100644
index 0000000..6fdae40
--- /dev/null
+++ b/searx/templates/oscar/search_full.html
@@ -0,0 +1,18 @@
+{% from 'oscar/macros.html' import icon %}
+
+<form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" id="search_form" role="search">
+ {% if rtl %}
+ <div class="input-group">
+ {% else %}
+ <div class="input-group col-md-8 col-md-offset-2">
+ {% endif %}
+ <input type="search" name="q" class="form-control input-lg autofocus" id="q" placeholder="{{ _('Search for...') }}" autocomplete="off" value="{{ q }}">
+ <span class="input-group-btn">
+ <button type="submit" class="btn btn-default input-lg"><span class="hide_if_nojs">{{ icon('search') }}</span><span class="hidden active_if_nojs">{{ _('Start search') }}</span></button>
+ </span>
+ </div>
+ <div class="col-md-8 col-md-offset-2 advanced">
+ {% include 'oscar/advanced.html' %}
+ </div>
+
+</form><!-- / #search_form_full -->
diff --git a/searx/templates/oscar/stats.html b/searx/templates/oscar/stats.html
new file mode 100644
index 0000000..0fb1042
--- /dev/null
+++ b/searx/templates/oscar/stats.html
@@ -0,0 +1,33 @@
+{% extends "oscar/base.html" %}
+{% block title %}{{ _('stats') }} - {% endblock %}
+{% block content %}
+<div class="container-fluid">
+ <h1>{{ _('Engine stats') }}</h1>
+ <div class="row">
+ {% for stat_name,stat_category in stats %}
+ <div class="col-xs-12 col-sm-12 col-md-6">
+ <h3>{{ stat_name }}</h3>
+ <div class="container-fluid">
+ {% for engine in stat_category %}
+ <div class="row">
+ <div class="col-sm-4 col-md-4">{{ engine.name }}</div>
+ <div class="col-sm-8 col-md-8">
+ <div class="progress">
+ <div class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="{{ '%i'|format(engine.avg) }}" aria-valuemin="0" aria-valuemax="100" style="width: {{ engine.percentage }}%;">
+ {{ '%.02f'|format(engine.avg) }}
+ </div>
+ </div>
+ </div>
+ </div>
+ {% endfor %}
+ {% if not stat_category %}
+ <div class="col-sm-12 col-md-12">
+ {% include 'oscar/messages/no_data_available.html' %}
+ </div>
+ {% endif %}
+ </div>
+ </div>
+ {% endfor %}
+ </div>
+</div>
+{% endblock %}
diff --git a/searx/templates/oscar/time-range.html b/searx/templates/oscar/time-range.html
new file mode 100644
index 0000000..d5efe91
--- /dev/null
+++ b/searx/templates/oscar/time-range.html
@@ -0,0 +1,17 @@
+<select name="time_range" id="time-range" class="custom-select form-control">
+ <option id="time-range-anytime" value="" {{ "selected" if time_range=="" or not time_range else ""}}>
+ {{ _('Anytime') }}
+ </option>
+ <option id="time-range-day" value="day" {{ "selected" if time_range=="day" else ""}}>
+ {{ _('Last day') }}
+ </option>
+ <option id="time-range-week" value="week" {{ "selected" if time_range=="week" else ""}}>
+ {{ _('Last week') }}
+ </option>
+ <option id="time-range-month" value="month" {{ "selected" if time_range=="month" else ""}}>
+ {{ _('Last month') }}
+ </option>
+ <option id="time-range-year" value="year" {{ "selected" if time_range=="year" else ""}}>
+ {{ _('Last year') }}
+ </option>
+</select>
diff --git a/searx/templates/pix-art/404.html b/searx/templates/pix-art/404.html
new file mode 100644
index 0000000..389bb5e
--- /dev/null
+++ b/searx/templates/pix-art/404.html
@@ -0,0 +1,9 @@
+{% extends "pix-art/base.html" %}
+{% block content %}
+<div class="center">
+ <h1>{{ _('Page not found') }}</h1>
+ {% autoescape false %}
+ <p>{{ _('Go to %(search_page)s.', search_page=unicode('<a href="{}">{}</a>').format(url_for('index'), _('search page'))) }}</p>
+ {% endautoescape %}
+</div>
+{% endblock %}
diff --git a/searx/templates/pix-art/about.html b/searx/templates/pix-art/about.html
new file mode 100644
index 0000000..f76a689
--- /dev/null
+++ b/searx/templates/pix-art/about.html
@@ -0,0 +1,4 @@
+{% extends 'pix-art/base.html' %}
+{% block content %}
+{% include '__common__/about.html' %}
+{% endblock %}
diff --git a/searx/templates/pix-art/base.html b/searx/templates/pix-art/base.html
new file mode 100644
index 0000000..6af8823
--- /dev/null
+++ b/searx/templates/pix-art/base.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"{% if rtl %} dir="rtl"{% endif %}>
+ <head>
+ <meta charset="UTF-8" />
+ <meta name="description" content="searx - a privacy-respecting, hackable metasearch engine" />
+ <meta name="keywords" content="searx, search, search engine, metasearch, meta search" />
+ <meta name="generator" content="searx/{{ searx_version }}">
+ <meta name="referrer" content="no-referrer">
+ <meta name="viewport" content="width=device-width, maximum-scale=1.0, user-scalable=1" />
+ <title>{% block title %}{% endblock %}searx</title>
+ <link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}" type="text/css" media="screen" />
+ <link rel="shortcut icon" href="{{ url_for('static', filename='img/favicon.png') }}?v=2" />
+ {% block styles %}
+ {% endblock %}
+ {% block meta %}{% endblock %}
+ {% block head %}
+ {% endblock %}
+ <script type="text/javascript">
+ var favicons = [[]];
+ </script>
+ </head>
+ <body>
+ <div id="container">
+ {% block content %}
+ {% endblock %}
+ <script type="text/javascript">
+ searx = {};
+ </script>
+ <script src="{{ url_for('static', filename='js/searx.js') }}" ></script>
+ <script type="text/javascript">
+ load_images(1);
+ </script>
+ </div>
+ </body>
+</html>
diff --git a/searx/templates/pix-art/index.html b/searx/templates/pix-art/index.html
new file mode 100644
index 0000000..a0c61f9
--- /dev/null
+++ b/searx/templates/pix-art/index.html
@@ -0,0 +1,12 @@
+{% extends "pix-art/base.html" %}
+{% block content %}
+<div class="center">
+ <div class="title"><h1><img src="{{ url_for('static', filename='img/searx-pixel.png') }}" alt="searx Logo"/></h1></div>
+ {% include 'pix-art/search.html' %}
+ <p class="top_margin">
+ <a href="{{ url_for('about') }}" class="hmarg">{{ _('about') }}</a>
+ <a href="{{ url_for('preferences') }}" class="hmarg">{{ _('preferences') }}</a>
+ </p>
+</div>
+{% endblock %}
+
diff --git a/searx/templates/pix-art/preferences.html b/searx/templates/pix-art/preferences.html
new file mode 100644
index 0000000..0b2bb67
--- /dev/null
+++ b/searx/templates/pix-art/preferences.html
@@ -0,0 +1,81 @@
+{% extends "legacy/base.html" %}
+{% block head %} {% endblock %}
+{% block content %}
+<div class="row">
+ <h2>{{ _('Preferences') }}</h2>
+
+ <form method="post" action="{{ url_for('preferences') }}" id="search_form">
+ <fieldset>
+ <legend>{{ _('Search language') }}</legend>
+ <p>
+ <select name='language'>
+ {% for lang_id,lang_name,country_name,english_name in language_codes | sort(attribute=1) %}
+ <option value="{{ lang_id }}" {% if lang_id == current_language %}selected="selected"{% endif %}>{{ lang_name }} {% if country_name %}({{ country_name }}) {% endif %}- {{ lang_id }}</option>
+ {% endfor %}
+ </select>
+ </p>
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('Interface language') }}</legend>
+ <p>
+ <select name='locale'>
+ {% for locale_id,locale_name in locales.items() | sort %}
+ <option value="{{ locale_id }}" {% if locale_id == current_locale %}selected="selected"{% endif %}>{{ locale_name }}</option>
+ {% endfor %}
+ </select>
+ </p>
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('Method') }}</legend>
+ <p>
+ <select name='method'>
+ <option value="POST" {% if method == 'POST' %}selected="selected"{% endif %}>POST</option>
+ <option value="GET" {% if method == 'GET' %}selected="selected"{% endif %}>GET</option>
+ </select>
+ </p>
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('Themes') }}</legend>
+ <p>
+ <select name="theme">
+ {% for name in themes %}
+ <option value="{{ name }}" {% if name == theme %}selected="selected"{% endif %}>{{ name }}</option>
+ {% endfor %}
+ </select>
+ </p>
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('Currently used search engines') }}</legend>
+
+ <table>
+ <tr>
+ <th>{{ _('Engine name') }}</th>
+ <th>{{ _('Allow') }} / {{ _('Block') }}</th>
+ </tr>
+ {% for categ in all_categories %}
+ {% for search_engine in engines_by_category[categ] %}
+
+ {% if not search_engine.private %}
+ <tr>
+ <td>{{ search_engine.name }} ({{ shortcuts[search_engine.name] }})&lrm;</td>
+ <td class="engine_checkbox">
+ <input type="checkbox" id="engine_{{ categ|replace(' ', '_') }}_{{ search_engine.name|replace(' ', '_') }}" name="engine_{{ search_engine.name }}__{{ categ }}"{% if (search_engine.name, categ) in disabled_engines %} checked="checked"{% endif %} />
+ <label class="allow" for="engine_{{ categ|replace(' ', '_') }}_{{ search_engine.name|replace(' ', '_') }}">{{ _('Allow') }}</label>
+ <label class="deny" for="engine_{{ categ|replace(' ', '_') }}_{{ search_engine.name|replace(' ', '_') }}">{{ _('Block') }}</label>
+ </td>
+ </tr>
+ {% endif %}
+ {% endfor %}
+ {% endfor %}
+ </table>
+ </fieldset>
+ <p class="small_font">{{ _('These settings are stored in your cookies, this allows us not to store this data about you.') }}
+ <br />
+ {{ _("These cookies serve your sole convenience, we don't use these cookies to track you.") }}
+ </p>
+
+ <input type="submit" value="{{ _('save') }}" />
+ <div class="{% if rtl %}left{% else %}right{% endif %} preferences_back"><a href="{{ url_for('index') }}">{{ _('back') }}</a></div>
+ </form>
+</div>
+{% endblock %}
diff --git a/searx/templates/pix-art/result_templates/default.html b/searx/templates/pix-art/result_templates/default.html
new file mode 100644
index 0000000..ada81e5
--- /dev/null
+++ b/searx/templates/pix-art/result_templates/default.html
@@ -0,0 +1,7 @@
+<a href="{{ result.url }}" title="{{ result.title | striptags }}" rel="noreferrer">
+ <canvas id="canvas-{{ pageno }}-{{ index }}" class="icon" width="16" height="16"></canvas>
+</a>
+<script type="text/javascript">
+favicons[{{ pageno }}][{{ index }}] = 'http://{{ result.url | extract_domain }}/favicon.ico';
+</script>
+
diff --git a/searx/templates/pix-art/result_templates/images.html b/searx/templates/pix-art/result_templates/images.html
new file mode 100644
index 0000000..d85f841
--- /dev/null
+++ b/searx/templates/pix-art/result_templates/images.html
@@ -0,0 +1,6 @@
+<div class="image_result">
+ <p>
+ <a href="{{ result.img_src }}" rel="noreferrer"><img src="{% if result.thumbnail_src %}{{ image_proxify(result.thumbnail_src) }}{% else %}{{ image_proxify(result.img_src) }}{% endif %}" title="{{ result.title|striptags }}" alt="{{ result.title|striptags }}" /></a>
+ <span class="url"><a href="{{ result.url }}" rel="noreferrer" class="small_font">{{ _('original context') }}</a></span>
+ </p>
+</div>
diff --git a/searx/templates/pix-art/results.html b/searx/templates/pix-art/results.html
new file mode 100644
index 0000000..8999e05
--- /dev/null
+++ b/searx/templates/pix-art/results.html
@@ -0,0 +1,32 @@
+{% if pageno > 1 %}
+ {% for result in results %}
+ {% set index = loop.index %}
+ {% include 'pix-art/result_templates/default.html' %}
+ {% endfor %}
+{% else %}
+{% extends "pix-art/base.html" %}
+{% block title %}{{ q|e }} - {% endblock %}
+{% block meta %}{% endblock %}
+{% block content %}
+<div id="logo"><a href="./"><img src="{{ url_for('static', filename='img/searx-pixel-small.png') }}" alt="searx Logo"/></a></div>
+<div class="preferences_container right"><a href="{{ url_for('preferences') }}" id="preferences"><span>preferences</span></a></div>
+<div class="small search center">
+ {% include 'pix-art/search.html' %}
+</div>
+<script type="text/javascript">
+ favicons[{{ pageno }}] = [];
+</script>
+<div id="results">
+ <span id="results_list">
+ {% for result in results %}
+ {% set index = loop.index %}
+ {% include 'pix-art/result_templates/default.html' %}
+ {% endfor %}
+ </span>
+ <div id="pagination">
+ <br />
+ <input type="button" onclick="load_more('{{ q|e }}', {{ pageno+1 }})" id="load_more" value="{{ _('Load more...') }}" />
+ </div>
+</div>
+{% endblock %}
+{% endif %}
diff --git a/searx/templates/pix-art/search.html b/searx/templates/pix-art/search.html
new file mode 100644
index 0000000..4d129ec
--- /dev/null
+++ b/searx/templates/pix-art/search.html
@@ -0,0 +1,9 @@
+<form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" id="search_form">
+ <div id="search_wrapper">
+ <input type="text" placeholder="{{ _('Search for...') }}" id="q" class="q" name="q" tabindex="1" size="100" {% if q %}value="{{ q }}"{% endif %}/>
+ <input type="submit" value="" id="search_submit" />
+ {% for category in categories %}
+ <input type="hidden" name="category_{{ category }}" value="1"/>
+ {% endfor %}
+ </div>
+</form>
diff --git a/searx/templates/pix-art/stats.html b/searx/templates/pix-art/stats.html
new file mode 100644
index 0000000..372447e
--- /dev/null
+++ b/searx/templates/pix-art/stats.html
@@ -0,0 +1,22 @@
+{% extends "legacy/base.html" %}
+{% block head %} {% endblock %}
+{% block content %}
+<h2>{{ _('Engine stats') }}</h2>
+
+{% for stat_name,stat_category in stats %}
+<div class="left">
+ <table>
+ <tr colspan="3">
+ <th>{{ stat_name }}</th>
+ </tr>
+ {% for engine in stat_category %}
+ <tr>
+ <td>{{ engine.name }}</td>
+ <td>{{ '%.02f'|format(engine.avg) }}</td>
+ <td class="percentage"><div style="width: {{ engine.percentage }}%">&nbsp;</div></td>
+ </tr>
+ {% endfor %}
+ </table>
+</div>
+{% endfor %}
+{% endblock %}
diff --git a/searx/templates/simple/404.html b/searx/templates/simple/404.html
new file mode 100644
index 0000000..11d6043
--- /dev/null
+++ b/searx/templates/simple/404.html
@@ -0,0 +1,9 @@
+{% extends "simple/base.html" %}
+{% block content %}
+<div class="center">
+ <h1>{{ _('Page not found') }}</h1>
+ {% autoescape false %}
+ <p>{{ _('Go to %(search_page)s.', search_page=unicode('<a href="{}">{}</a>').format(url_for('index'), _('search page'))) }}</p>
+ {% endautoescape %}
+</div>
+{% endblock %}
diff --git a/searx/templates/simple/about.html b/searx/templates/simple/about.html
new file mode 100644
index 0000000..1913879
--- /dev/null
+++ b/searx/templates/simple/about.html
@@ -0,0 +1,4 @@
+{% extends 'simple/base.html' %}
+{% block content %}
+{% include '__common__/about.html' %}
+{% endblock %}
diff --git a/searx/templates/simple/base.html b/searx/templates/simple/base.html
new file mode 100644
index 0000000..f0dea57
--- /dev/null
+++ b/searx/templates/simple/base.html
@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<html class="no-js" lang="en" {% if rtl %} dir="rtl"{% endif %}>
+<head>
+ <meta charset="UTF-8" />
+ <meta name="description" content="searx - a privacy-respecting, hackable metasearch engine">
+ <meta name="keywords" content="searx, search, search engine, metasearch, meta search">
+ <meta name="generator" content="searx/{{ searx_version }}">
+ <meta name="referrer" content="no-referrer">
+ <meta name="robots" content="noarchive">
+ <meta name="viewport" content="width=device-width, maximum-scale=1.0, user-scalable=1">
+ <meta name="HandheldFriendly" content="True">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1">
+ <title>{% block title %}{% endblock %}searx</title>
+ {% if rtl %}
+ <link rel="stylesheet" href="{{ url_for('static', filename='css/searx-rtl.min.css') }}" type="text/css" media="screen" />
+ {% else %}
+ <link rel="stylesheet" href="{{ url_for('static', filename='css/searx.min.css') }}" type="text/css" media="screen" />
+ {% endif %}
+ {% block styles %}{% endblock %}
+ {% block meta %}{% endblock %}
+ {% block head %}
+ <link title="{{ instance_name }}" type="application/opensearchdescription+xml" rel="search" href="{{ url_for('opensearch') }}"/>
+ {% endblock %}
+ <link rel="shortcut icon" href="{{ url_for('static', filename='img/favicon.png') }}" />
+ <script type="text/javascript">
+ var searx = {
+ autocompleter: {% if autocomplete %}true{% else %}false{% endif %},
+ method: "{{ method or 'POST' }}",
+ touch: (("ontouchstart" in window) || window.DocumentTouch && document instanceof DocumentTouch) || false,
+ staticPath: "{{ url_for('static', filename='themes/simple') }}/",
+ noItemFound: "{{ _('No item found') }}",
+ search_on_category_select: {{ 'true' if 'plugins/js/search_on_category_select.js' in scripts else 'false'}},
+ infinite_scroll: {{ 'true' if 'plugins/js/infinite_scroll.js' in scripts else 'false' }}
+ };
+ document.getElementsByTagName("html")[0].className = (searx.touch)?"js touch":"js";
+ </script>
+</head>
+<body>
+ <main id="main_{{ self._TemplateReference__context.name|replace("simple/", "")|replace(".html", "") }}">
+ {% if errors %}
+ <div class="dialog-error" role="alert">
+ <a href="#" class="close" aria-label="close" title="close">×</a>
+ <ul>
+ {% for message in errors %}
+ <li>{{ message }}</li>
+ {% endfor %}
+ </ul>
+ </div>
+ {% endif %}
+
+ {% block content %}
+ {% endblock %}
+ </main>
+ <footer>
+ <p>
+ {{ _('Powered by') }} <a href="{{ url_for('about') }}">searx</a> - {{ searx_version }} - {{ _('a privacy-respecting, hackable metasearch engine') }}<br/>
+ <a href="https://github.com/asciimoo/searx">{{ _('Source code') }}</a> |
+ <a href="https://github.com/asciimoo/searx/issues">{{ _('Issue tracker') }}</a> |
+ <a href="https://github.com/asciimoo/searx/wiki/Searx-instances">{{ _('Public instances') }}</a>
+ </p>
+ </footer>
+ <!--[if gte IE 9]>-->
+ <script src="{{ url_for('static', filename='js/searx.min.js') }}" ></script>
+ <!--<![endif]-->
+</body>
+</html>
diff --git a/searx/templates/simple/categories.html b/searx/templates/simple/categories.html
new file mode 100644
index 0000000..127d55b
--- /dev/null
+++ b/searx/templates/simple/categories.html
@@ -0,0 +1,8 @@
+<div id="categories">{{- '' -}}
+ <div id="categories_container">
+ {%- for category in categories -%}
+ <div class="category"><input type="checkbox" id="checkbox_{{ category|replace(' ', '_') }}" name="category_{{ category }}"{% if category in selected_categories %} checked="checked"{% endif %}/><label for="checkbox_{{ category|replace(' ', '_') }}" class="tooltips">{{ _(category) }}</label></div>
+ {%- endfor -%}
+ {%- if display_tooltip %}<div class="help">{{ _('Click on the magnifier to perform search') }}</div>{% endif -%}
+ </div>{{- '' -}}
+</div>
diff --git a/searx/templates/simple/index.html b/searx/templates/simple/index.html
new file mode 100644
index 0000000..4e8e76c
--- /dev/null
+++ b/searx/templates/simple/index.html
@@ -0,0 +1,12 @@
+{% extends "simple/base.html" %}
+{% from 'simple/macros.html' import icon %}
+{% block meta %}
+ <link rel="preload" href="{{ url_for('static', filename='img/searx.png') }}" as="image" />
+{% endblock %}
+{% block content %}
+<nav id="linkto_preferences"><a href="{{ url_for('preferences') }}">{{ icon('navicon-round') }}</a></nav>
+<div class="index">
+ <div class="title"><h1>searx</h1></div>
+ {% include 'simple/search.html' %}
+</div>
+{% endblock %}
diff --git a/searx/templates/simple/infobox.html b/searx/templates/simple/infobox.html
new file mode 100644
index 0000000..d99806a
--- /dev/null
+++ b/searx/templates/simple/infobox.html
@@ -0,0 +1,46 @@
+<aside class="infobox">
+ <h2><bdi>{{ infobox.infobox }}</bdi></h2>
+ {% if infobox.img_src %}<img src="{{ image_proxify(infobox.img_src) }}" title="{{ infobox.infobox|striptags }}" alt="{{ infobox.infobox|striptags }}" />{% endif %}
+ <p><bdi>{{ infobox.entity }}</bdi></p>
+ <p><bdi>{{ infobox.content | safe }}</bdi></p>
+ {% if infobox.attributes %}
+ <div class="attributes">
+ {% for attribute in infobox.attributes %}
+ <dl>
+ <dt><bdi>{{ attribute.label }} :</bdi></dt>
+ {%- if attribute.image -%}
+ <dd><img src="{{ image_proxify(attribute.image.src) }}" alt="{{ attribute.image.alt }}" /></dd>
+ {%- else -%}
+ <dd><bdi>{{ attribute.value }}</bdi></dd>
+ {%- endif -%}
+ </dl>
+ {% endfor %}
+ </div>
+ {% endif %}
+
+ {% if infobox.urls %}
+ <div class="urls">
+ <ul>
+ {%- for url in infobox.urls -%}
+ <li class="url"><bdi><a href="{{ url.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ url.title }}</a></bdi></li>
+ {%- endfor -%}
+ </ul>
+ </div>
+ {% endif %}
+
+ {% if infobox.relatedTopics %}
+ <div class="relatedTopics">
+ {% for topic in infobox.relatedTopics %}
+ <div>
+ <h3><bdi>{{ topic.name }}</bdi></h3>
+ {% for suggestion in topic.suggestions %}
+ <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
+ <input type="hidden" name="q" value="{{ suggestion }}">
+ <input type="submit" value="{{ suggestion }}" />
+ </form>
+ {% endfor %}
+ </div>
+ {% endfor %}
+ </div>
+ {% endif %}
+</aside>
diff --git a/searx/templates/simple/languages.html b/searx/templates/simple/languages.html
new file mode 100644
index 0000000..dd928ff
--- /dev/null
+++ b/searx/templates/simple/languages.html
@@ -0,0 +1,8 @@
+<select class="language" id="language" name="language" tabindex="2">{{- '' -}}
+ <option value="all" {% if current_language == 'all' %}selected="selected"{% endif %}>{{ _('Default language') }}</option>
+ {%- for lang_id,lang_name,country_name,english_name in language_codes | sort(attribute=1) -%}
+ <option value="{{ lang_id }}" {% if lang_id == current_language %}selected="selected"{% endif %}>
+ {{- lang_name }} {% if country_name %}({{ country_name }}) {% endif %}- {{ lang_id -}}
+ </option>
+ {%- endfor -%}
+</select>
diff --git a/searx/templates/simple/macros.html b/searx/templates/simple/macros.html
new file mode 100644
index 0000000..f0b3627
--- /dev/null
+++ b/searx/templates/simple/macros.html
@@ -0,0 +1,85 @@
+<!-- Draw glyphicon icon from bootstrap-theme -->
+{% macro icon(action) -%}
+ <span class="ion-icon-big ion-{{ action }}"></span>
+{%- endmacro %}
+
+{% macro icon_small(action) -%}
+ <span class="ion-icon ion-{{ action }}"></span>
+{%- endmacro %}
+
+<!-- Draw favicon -->
+{% macro draw_favicon(favicon) -%}
+ <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='themes/simple/img/icons/' + favicon + '.png') }}" alt="{{ favicon }}" />
+{%- endmacro %}
+
+{% macro result_open_link(url, classes='') -%}
+ <a href="{{ url }}" {% if classes %}class="{{ classes }}" {% endif %}{% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>
+{%- endmacro %}
+
+{%- macro result_close_link() -%}
+ </a>
+{%- endmacro %}
+
+{%- macro result_link(url, title, classes='') -%}
+ {{ result_open_link(url, classes) }}{{ title }}{{ result_close_link() }}
+{%- endmacro -%}
+
+<!-- Draw result header -->
+{% macro result_header(result, favicons, image_proxify) -%}
+<article class="result {% if result['template'] %}result-{{ result.template|replace('.html', '') }}{% else %}result-default{% endif %} {% if result['category'] %}category-{{ result['category'] }}{% endif %}">
+ {%- if result.img_src %}{{ result_open_link(result.url) }}<img class="image" src="{{ image_proxify(result.img_src) }}" alt="{{ result.title|striptags }}" title="{{ result.title|striptags }}" class="image" />{{ result_close_link() }}{% endif -%}
+ {%- if result.thumbnail %}{{ result_open_link(result.url) }}<img class="thumbnail" src="{{ image_proxify(result.thumbnail) }}" title="{{ result.title|striptags }}" alt="{{ result.title|striptags }}"/>{{ result_close_link() }}{% endif -%}
+ <h3>{{ result_link(result.url, result.title|safe) }}</h3>
+{%- endmacro -%}
+
+<!-- Draw result sub header -->
+{%- macro result_sub_header(result) -%}
+ {% if result.publishedDate %}<time class="published_date" datetime="{{ result.pubdate }}" >{{ result.publishedDate }}</time>{% endif %}
+{%- endmacro -%}
+
+<!-- Draw result sub footer -->
+{%- macro result_sub_footer(result, proxify) -%}
+<div class="engines">{% for engine in result.engines %}<span>{{ engine }}</span>{% endfor %}</div>{{- '' -}}
+<p class="url"><span class="url">{{ result.pretty_url }}</span>{{ result_link("https://web.archive.org/web/" + result.url, icon('link') + _('cached'), "cache_link") }}&lrm; {% if proxify %} {{ result_link(proxify(result.url), icon('link') + _('proxied'), "proxyfied_link") }} {% endif %}</p>{{- '' -}}
+<div class="break"></div>{{- '' -}}
+{%- endmacro -%}
+
+<!-- Draw result footer -->
+{%- macro result_footer(result) -%}
+</article>
+{%- endmacro -%}
+
+<!-- -->
+{%- macro tabs_open() -%}
+<div class="tabs" role="tablist">
+{%- endmacro -%}
+
+{%- macro tab_header(name, id, label) -%}
+<input type="radio" name="{{ name }}" id="tab_{{ id }}"/>
+<label for="tab_{{ id }}" role="tab"
+ aria-controls="panel{{ id }}">{{ label }}</label>
+<section id="tab-content{{ id }}" role="tabpanel"
+ aria-labelledby="{{ label }}" aria-hidden="false">
+{%- endmacro -%}
+
+{%- macro tab_footer() -%}
+</section>
+{%- endmacro -%}
+
+{%- macro tabs_close() -%}
+</div>
+{%- endmacro -%}
+
+{%- macro checkbox_onoff(name, checked) -%}
+<div class="checkbox-onoff">{{- '' -}}
+ <input type="checkbox" value="None" id="{{ name }}" name="{{ name }}" {% if checked %}checked{% endif %}/>{{- '' -}}
+ <label for="{{ name }}"></label>{{- '' -}}
+</div>
+{%- endmacro -%}
+
+{%- macro checkbox(name, checked, readonly, disabled) -%}
+<div class="checkbox">{{- '' -}}
+ <input type="checkbox" value="None" id="{{ name }}" name="{{ name }}" {% if checked %}checked{% endif %}{% if readonly %} readonly="readonly" {% endif %}{% if disabled %} disabled="disabled" {% endif %}/>{{- '' -}}
+ <label for="{{ name }}"></label>{{- '' -}}
+</div>
+{%- endmacro -%}
diff --git a/searx/templates/simple/messages/no_results.html b/searx/templates/simple/messages/no_results.html
new file mode 100644
index 0000000..fa984b0
--- /dev/null
+++ b/searx/templates/simple/messages/no_results.html
@@ -0,0 +1,17 @@
+{% from 'simple/macros.html' import icon %}
+{% if unresponsive_engines %}
+<div class="dialog-error" role="alert">
+ <p><strong>{{ _('Error!') }}</strong> {{ _('Engines cannot retrieve results.') }}</p>
+ <p>
+ {% for engine_name, error_type in unresponsive_engines %}
+ {{ engine_name }} ({{ error_type }}){% if not loop.last %}, {% endif %}
+ {% endfor %}
+ </p>
+ <p><small>{{ _('Please, try again later or find another searx instance.') }}</small></p>
+</div>
+{% else %}
+<div class="dialog-error" role="alert">
+ <p><strong>{{ _('Sorry!') }}</strong></p>
+ <p>{{ _('we didn\'t find any results. Please use another query or search in more categories.') }}</p>
+</div>
+{% endif %}
diff --git a/searx/templates/simple/preferences.html b/searx/templates/simple/preferences.html
new file mode 100644
index 0000000..049af5e
--- /dev/null
+++ b/searx/templates/simple/preferences.html
@@ -0,0 +1,236 @@
+{% from 'simple/macros.html' import tabs_open, tabs_close, tab_header, tab_footer, checkbox_onoff, checkbox %}
+
+{% extends "simple/base.html" %}
+
+{%- macro plugin_preferences(section) -%}
+{%- for plugin in plugins -%}
+{%- if plugin.preference_section == section -%}
+<fieldset>{{- '' -}}
+ <legend>{{ _(plugin.name) }}</legend>{{- '' -}}
+ <div class="value">
+ {{- checkbox_onoff('plugin_' + plugin.id, plugin.id not in allowed_plugins) -}}
+ </div>{{- '' -}}
+ <div class="description">
+ {{- _(plugin.description) -}}
+ </div>{{- '' -}}
+</fieldset>
+{%- endif -%}
+{%- endfor -%}
+{%- endmacro -%}
+
+{% block head %} {% endblock %}
+{% block content %}
+
+<a href="{{ url_for('index') }}"><h1><span>searx</span></h1></a>
+
+<h2>{{ _('Preferences') }}</h2>
+
+<form id="search_form" method="post" action="{{ url_for('preferences') }}">
+
+{{ tabs_open() }}
+
+{{ tab_header('maintab', 'general', _('General')) }}
+ <fieldset>
+ <legend>{{ _('Default categories') }}</legend>
+ {% set display_tooltip = false %}
+ {% include 'simple/categories.html' %}
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('Search language') }}</legend>
+ <p class="value">{{- '' -}}
+ <select name='language'>{{- '' -}}
+ <option value="all" {% if current_language == 'all' %}selected="selected"{% endif %}>{{ _('Default language') }}</option>
+ {%- for lang_id,lang_name,country_name,english_name in language_codes | sort(attribute=1) -%}
+ <option value="{{ lang_id }}" {% if lang_id == current_language %}selected="selected"{% endif %}>{{ lang_name }} {% if country_name %}({{ country_name }}) {% endif %}- {{ lang_id }}</option>
+ {%- endfor -%}
+ </select>{{- '' -}}
+ </p>
+ <div class="description">{{ _('What language do you prefer for search?') }}</div>
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('Autocomplete') }}</legend>
+ <p class="value">
+ <select name="autocomplete">
+ <option value=""> - </option>
+ {%- for backend in autocomplete_backends -%}
+ <option value="{{ backend }}" {% if backend == autocomplete %}selected="selected"{% endif %}>{{ backend }}</option>
+ {%- endfor -%}
+ </select>
+ </p>
+ <div class="description">{{ _('Find stuff as you type') }}</div>
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('SafeSearch') }}</legend>
+ <p class="value">
+ <select name='safesearch'>
+ <option value="2" {% if safesearch == '2' %}selected="selected"{% endif %}>{{ _('Strict') }}</option>
+ <option value="1" {% if safesearch == '1' %}selected="selected"{% endif %}>{{ _('Moderate') }}</option>
+ <option value="0" {% if safesearch == '0' %}selected="selected"{% endif %}>{{ _('None') }}</option>
+ </select>
+ </p>
+ <div class="description">{{ _('Filter content') }}</p>
+ </fieldset>
+ {{ plugin_preferences('general') }}
+ <fieldset>
+ <legend>{{ _('Open Access DOI resolver') }}</legend>
+ <p class="value">
+ <select id='doi_resolver' name='doi_resolver'>
+ {%- for doi_resolver_name,doi_resolver_url in doi_resolvers.items() -%}
+ <option value="{{ doi_resolver_name }}" {% if doi_resolver_name == current_doi_resolver %}selected="selected"{% endif %}>
+ {{- doi_resolver_name }} - {{ doi_resolver_url -}}
+ </option>
+ {%- endfor -%}
+ </select>
+ </p>
+ <div class="description"><!-- {{ _('Redirect to open-access versions of publications when available (plugin required)') }} --></div>
+ </fieldset>
+ {{ tab_footer() }}
+
+ {{ tab_header('maintab', 'engines', _('Engines')) }}
+ <p>{{ _('Currently used search engines') }}</p>
+
+ {{ tabs_open() }}
+ {% for categ in all_categories %}
+
+ {{ tab_header('enginetab', 'category' + categ, _(categ)) }}
+ <div class="scrollx">
+ <table class="striped">
+ <tr>
+ <th class="engine_checkbox">{{ _("Allow") }}</th>
+ <th class="name">{{ _("Engine name") }}</th>
+ <th class="shortcut">{{ _("Shortcut") }}</th>
+ <th>{{ _("Supports selected language") }}</th>
+ <th>{{ _("SafeSearch") }}</th>
+ <th>{{ _("Time range") }}</th>
+ <th>{{ _("Avg. time") }}</th>
+ <th>{{ _("Max time") }}</th>
+ </tr>
+ {% for search_engine in engines_by_category[categ] %}
+
+ {% if not search_engine.private %}
+ {% set engine_id = 'engine_' + search_engine.name|replace(' ', '_') + '__' + categ|replace(' ', '_') %}
+ <tr>
+ <td class="engine_checkbox">{{ checkbox_onoff(engine_id, (search_engine.name, categ) in disabled_engines) }}</td>
+ <th class="name">{{ search_engine.name }}</th>
+ <td class="shortcut">{{ shortcuts[search_engine.name] }}</td>
+ <td>{{ checkbox(engine_id + '_supported_languages', current_language == 'all' or current_language in search_engine.supported_languages or current_language.split('-')[0] in search_engine.supported_languages, true, true) }}</td>
+ <td>{{ checkbox(engine_id + '_safesearch', search_engine.safesearch==True, true, true) }}</td>
+ <td>{{ checkbox(engine_id + '_time_range_support', search_engine.time_range_support==True, true, true) }}</td>
+ <td class="{{ 'danger' if stats[search_engine.name]['warn_time'] else '' }}">{{ 'N/A' if stats[search_engine.name].time==None else stats[search_engine.name].time }}</td>
+ <td class="{{ 'danger' if stats[search_engine.name]['warn_timeout'] else '' }}">{{ search_engine.timeout }}</td>
+ </tr>
+ {% endif %}
+ {% endfor %}
+ </table>
+ <div>
+ {{ tab_footer() }}
+ {% endfor %}
+ {{ tabs_close() }}
+ {{ tab_footer() }}
+
+ {{ tab_header('maintab', 'ui', _('User interface')) }}
+ <fieldset>
+ <legend>{{ _('Interface language') }}</legend>
+ <p class="value">
+ <select name='locale'>
+ {% for locale_id,locale_name in locales.items() | sort %}
+ <option value="{{ locale_id }}" {% if locale_id == current_locale %}selected="selected"{% endif %}>{{ locale_name }}</option>
+ {% endfor %}
+ </select>
+ </p>
+ <div class="description">{{ _('Change the language of the layout') }}</div>
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('Themes') }}</legend>
+ <p class="value">
+ <select name="theme">
+ {%- for name in themes -%}
+ <option value="{{ name }}" {% if name == theme %}selected="selected"{% endif %}>{{ name }}</option>
+ {%- endfor -%}
+ </select>
+ </p>
+ <div class="description">{{ _('Change searx layout') }}</div>
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('Results on new tabs') }}</legend>
+ <p class="value">
+ <select name='results_on_new_tab'>
+ <option value="1" {% if results_on_new_tab %}selected="selected"{% endif %}>{{ _('On') }}</option>
+ <option value="0" {% if not results_on_new_tab %}selected="selected"{% endif %}>{{ _('Off')}}</option>
+ </select>
+ </p>
+ <div class="description">{{_('Open result links on new browser tabs') }}</div>
+ </fieldset>
+ {{ plugin_preferences('ui') }}
+ {{ tab_footer() }}
+
+ {{ tab_header('maintab', 'cookies', _('Cookies')) }}
+
+ <p class="text-muted" style="margin:20px 0;">
+ {{ _('This is the list of cookies and their values searx is storing on your computer.') }}<br />
+ {{ _('With that list, you can assess searx transparency.') }}<br />
+ </p>
+
+ {% if cookies %}
+ <table class="cookies">
+ <tr>
+ <th>{{ _('Cookie name') }}</th>
+ <th>{{ _('Value') }}</th>
+ </tr>
+ {% for cookie in cookies %}
+ <tr>
+ <td>{{ cookie }}</td>
+ <td>{{ cookies[cookie] }}</td>
+ </tr>
+ {% endfor %}
+ </table>
+ {% else %}
+ {% include 'oscar/messages/no_cookies.html' %}
+ {% endif %}
+
+ <h4>{{ _('Search URL of the currently saved preferences') }} :</h4>
+ <div class="selectable_url">
+ <pre>{{ url_for('index', _external=True) }}?preferences={{ preferences_url_params|e }}{% raw %}&amp;q=%s{% endraw %}</pre>
+ </div>
+ <p class="small_font">{{ _('Note: specifying custom settings in the search URL can reduce privacy by leaking data to the clicked result sites.') }}</p>
+
+ {{ tab_footer() }}
+
+ {{ tab_header('maintab', 'privacy', _('Privacy')) }}
+ <fieldset>
+ <legend>{{ _('Method') }}</legend>
+ <p class="value">
+ <select name='method'>
+ <option value="POST" {% if method == 'POST' %}selected="selected"{% endif %}>POST</option>
+ <option value="GET" {% if method == 'GET' %}selected="selected"{% endif %}>GET</option>
+ </select>
+ </p>
+ <div class="description">{{ _('Search language') }}</div>
+ </fieldset>
+ <fieldset>
+ <legend>{{ _('Image proxy') }}</legend>
+ <p class="value">
+ <select name='image_proxy'>
+ <option value="1" {% if image_proxy %}selected="selected"{% endif %}>{{ _('Enabled') }}</option>
+ <option value="" {% if not image_proxy %}selected="selected"{% endif %}>{{ _('Disabled') }}</option>
+ </select>
+ </p>
+ <div class="description">{{ _('Proxying image results through searx') }}</div>
+ </fieldset>
+ {{ plugin_preferences('privacy') }}
+
+ {{ tab_footer() }}
+
+ {{ tabs_close() }}
+
+ <p class="small_font">{{ _('These settings are stored in your cookies, this allows us not to store this data about you.') }}
+ <br />
+ {{ _("These cookies serve your sole convenience, we don't use these cookies to track you.") }}
+ </p>
+
+ <input type="submit" value="{{ _('save') }}" />
+ <div class="{% if rtl %}left{% else %}right{% endif %} preferences_back"><a href="{{ url_for('clear_cookies') }}">{{ _('Reset defaults') }}</a></div>
+ <div class="{% if rtl %}left{% else %}right{% endif %} preferences_back"><a href="{{ url_for('index') }}">{{ _('back') }}</a></div>
+
+</form>
+{% endblock %}
diff --git a/searx/templates/simple/result_templates/code.html b/searx/templates/simple/result_templates/code.html
new file mode 100644
index 0000000..9db0531
--- /dev/null
+++ b/searx/templates/simple/result_templates/code.html
@@ -0,0 +1,13 @@
+{% from 'simple/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer, result_footer_rtl %}
+
+{{ result_header(result, favicons, image_proxify) -}}
+{{- result_sub_header(result) -}}
+{%- if result.content %}{{ result.content|safe }}{% endif %}</p>
+{%- if result.repository -%}
+<p class="content"><a href="{{ result.repository|safe }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.repository }}</a></p>
+{%- endif -%}
+<div dir="ltr" class="codelines">
+ {{- result.codelines|code_highlighter(result.code_language)|safe -}}
+</div>{{- '' -}}
+{{- result_sub_footer(result, proxify) -}}
+{{ result_footer(result) }}
diff --git a/searx/templates/simple/result_templates/default.html b/searx/templates/simple/result_templates/default.html
new file mode 100644
index 0000000..b29ca55
--- /dev/null
+++ b/searx/templates/simple/result_templates/default.html
@@ -0,0 +1,17 @@
+{% from 'simple/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer, result_footer_rtl %}
+
+{{ result_header(result, favicons, image_proxify) -}}
+{{- result_sub_header(result) -}}
+{% if result.embedded -%}
+<p class="altlink"> &bull; <a class="btn-collapse collapsed media-loader disabled_if_nojs" data-target="#result-media-{{ index }}" data-btn-text-collapsed="{{ _('show media') }}" data-btn-text-not-collapsed="{{ _('hide media') }}">{{ icon('music-note') }} {{ _('show media') }}</a></p>
+{%- endif %}
+<p class="content">
+ {%- if result.content %}{{ result.content|safe }}{% endif -%}
+</p>
+{{- result_sub_footer(result, proxify) -}}
+{% if result.embedded -%}
+<div id="result-media-{{ index }}" class="invisible">
+ {{- result.embedded|safe -}}
+</div>
+{%- endif %}
+{{- result_footer(result) }}
diff --git a/searx/templates/simple/result_templates/images.html b/searx/templates/simple/result_templates/images.html
new file mode 100644
index 0000000..f756acb
--- /dev/null
+++ b/searx/templates/simple/result_templates/images.html
@@ -0,0 +1,4 @@
+<article class="result result-images {% if result['category'] %}category-{{ result['category'] }}{% endif %}">
+ <a href="{{ result.img_src }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}><img class="image_thumbnail" src="{% if result.thumbnail_src %}{{ image_proxify(result.thumbnail_src) }}{% else %}{{ image_proxify(result.img_src) }}{% endif %}" title="{{ result.title|striptags }}" alt="{{ result.title|striptags }}" /></a>
+ <span class="url"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %} class="small_font">{{ result.parsed_url[0] }}://{{ result.parsed_url[1] }}</a></span>
+</article>
diff --git a/searx/templates/simple/result_templates/map.html b/searx/templates/simple/result_templates/map.html
new file mode 100644
index 0000000..2de4451
--- /dev/null
+++ b/searx/templates/simple/result_templates/map.html
@@ -0,0 +1,68 @@
+{% from 'simple/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer, result_footer_rtl, icon %}
+
+{{ result_header(result, favicons, image_proxify) -}}
+{{- result_sub_header(result) -}}
+
+{%- if (result.latitude and result.longitude) or result.boundingbox -%}
+ <small> &bull; <a class="btn-collapse collapsed searx_init_map hide_if_nojs" data-target="#result-map-{{ index }}" data-btn-text-collapsed="{{ _('show map') }}" data-btn-text-not-collapsed="{{ _('hide map') }}" data-leaflet-target="osm-map-{{ index }}" data-map-lon="{{ result.longitude }}" data-map-lat="{{ result.latitude }}" {% if result.boundingbox %}data-map-boundingbox='{{ result.boundingbox|tojson|safe }}'{% endif %} {% if result.geojson %}data-map-geojson='{{ result.geojson|tojson|safe }}'{% endif %}>{{ icon( 'globe') }} {{ _('show map') }}</a></small>
+{%- endif -%}
+
+{%- if result.osm and (result.osm.type and result.osm.id) -%}
+ <small> &bull; <a class="btn-collapse collapsed hide_if_nojs searx_overpass_request" data-target="#result-overpass-{{ index }}" data-btn-text-collapsed="{{ _('show details') }}" data-btn-text-not-collapsed="{{ _('hide details') }}" data-osm-type="{{ result.osm.type }}" data-osm-id="{{ result.osm.id }}" data-result-table="result-overpass-table-{{ index }}" data-result-table-loadicon="result-overpass-table-loading-{{ index }}">{{ icon('location') }} {{ _('show details') }}</a></small>
+{%- endif -%}
+{#-
+{% if (result.latitude and result.longitude) %}
+ <small> &bull; <a class="btn-collapse disabled_if_nojs" data-target="#result-geodata-{{ index }}" data-btn-text-collapsed="{{ _('show geodata') }}" data-btn-text-not-collapsed="{{ _('hide geodata') }}">{{ icon('location') }} {{ _('show geodata') }}</a></small>
+{% endif %}
+-#}
+
+{%- if result.address -%}
+<p itemscope itemtype="http://schema.org/PostalAddress" class="content">
+ {%- if result.address.name -%}
+ <strong itemprop="name">{{ result.address.name }}</strong><br/>
+ {%- endif -%}
+ {% if result.address.road -%}
+ <span itemprop="streetAddress">
+ {%- if result.address.house_number -%}{{- result.address.house_number -}}, {% endif %}
+ {{- result.address.road -}}
+ </span><br/>
+ {%- endif %}
+ {%- if result.address.locality -%}
+ <span itemprop="addressLocality">{{- result.address.locality -}}</span>
+ {%- if result.address.postcode -%}, <span itemprop="postalCode">{{- result.address.postcode -}}</span>{% endif %}
+ <br/>
+ {%- endif -%}
+ {%- if result.address.country -%}
+ <span itemprop="addressCountry">{{- result.address.country -}}</span>
+ {%- endif -%}
+</p>
+{%- endif -%}
+
+{%- if result.content %}<p class="content">{{ result.content|safe }}</p>{% endif -%}
+
+{{- result_sub_footer(result, proxify) -}}
+
+{% if result.osm and (result.osm.type and result.osm.id) -%}
+ <div class="result-content invisible" id="result-overpass-{{ index }}"{% if rtl %} dir="ltr"{% endif %}>
+ <div id="result-overpass-table-loading-{{ index }}"><div class="loader">{{ _('Loading...') }}</div></div>
+ <table id="result-overpass-table-{{ index }}">
+ <tbody>
+ </tbody>
+ </table>
+ </div>
+{%- endif %}
+
+{#-
+{% if (result.latitude and result.longitude) -%}
+ <div id="result-geodata-{{ index }}" class="invisible">
+ <strong>Longitude:</strong> {{ result.longitude }} <br/>
+ <strong>Latitude:</strong> {{ result.latitude }}
+ </div>
+{%- endif %}
+-#}
+
+{% if (result.latitude and result.longitude) or result.boundingbox -%}
+ <div id="result-map-{{ index }}" class="invisible"><div id="osm-map-{{ index }}" style="height:300px; width:100%; margin: 10px 0;" ></div></div>
+{%- endif %}
+
+{{- result_footer(result) }}
diff --git a/searx/templates/simple/result_templates/torrent.html b/searx/templates/simple/result_templates/torrent.html
new file mode 100644
index 0000000..3c7fd15
--- /dev/null
+++ b/searx/templates/simple/result_templates/torrent.html
@@ -0,0 +1,24 @@
+{% from 'simple/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer, result_footer_rtl, result_link %}
+
+{{ result_header(result, favicons, image_proxify) -}}
+{{- result_sub_header(result) -}}
+
+{% if result.magnetlink %}<p class="altlink"> &bull; {{ result_link(result.magnetlink, icon('magnet') + _('magnet link'), "magnetlink") }}</p>{% endif %}
+{% if result.torrentfile %}<p class="altlink"> &bull; {{ result_link(result.torrentfile, icon('download-alt') + _('torrent file'), "torrentfile") }}</p>{% endif %}
+
+{% if result.seed %}<p class="stat"> &bull; {{ icon('arrow-swap') }} {{ _('Seeder') }} <span class="badge">{{ result.seed }}</span> &bull; {{ _('Leecher') }} <span class="badge">{{ result.leech }}</span></p>{% endif %}
+
+{%- if result.filesize %}<p class="stat">{{ icon('floppy-disk') }} {{ _('Filesize') }}<span class="badge">
+ {%- if result.filesize < 1024 %}{{ result.filesize }} {{ _('Bytes') }}
+ {%- elif result.filesize < 1024*1024 %}{{ '{0:0.2f}'.format(result.filesize/1024) }} {{ _('kiB') }}
+ {%- elif result.filesize < 1024*1024*1024 %}{{ '{0:0.2f}'.format(result.filesize/1024/1024) }} {{ _('MiB') }}
+ {%- elif result.filesize < 1024*1024*1024*1024 %}{{ '{0:0.2f}'.format(result.filesize/1024/1024/1024) }} {{ _('GiB') }}
+ {%- else %}{{ '{0:0.2f}'.format(result.filesize/1024/1024/1024/1024) }} {{ _('TiB') }}{% endif -%}
+ </span></p>
+{%- endif -%}
+
+{%- if result.files %}<p class="stat">{{ icon('file') }} {{ _('Number of Files') }} <span class="badge">{{ result.files }}</span></p>{% endif -%}
+
+{%- if result.content %}<p class="content">{{ result.content|safe }}</p>{% endif -%}
+{{- result_sub_footer(result, proxify) -}}
+{{- result_footer(result) }}
diff --git a/searx/templates/simple/result_templates/videos.html b/searx/templates/simple/result_templates/videos.html
new file mode 100644
index 0000000..be270e9
--- /dev/null
+++ b/searx/templates/simple/result_templates/videos.html
@@ -0,0 +1,15 @@
+{% from 'simple/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer, result_footer_rtl %}
+
+{{ result_header(result, favicons, image_proxify) }}
+{{ result_sub_header(result) }}
+{% if result.embedded -%}
+<p class="altlink"> &bull; <a class="btn-collapse collapsed media-loader disabled_if_nojs" data-target="#result-video-{{ index }}" data-btn-text-collapsed="{{ _('show video') }}" data-btn-text-not-collapsed="{{ _('hide video') }}">{{ icon('film-outline') }} {{ _('show video') }}</a></p>
+{%- endif %}
+{% if result.content %}<p class="content">{{ result.content|safe }}</p>{% endif %}
+{{- result_sub_footer(result, proxify) -}}
+{% if result.embedded -%}
+<div id="result-video-{{ index }}" class="invisible">
+ {{- result.embedded|safe -}}
+</div>
+{%- endif %}
+{{ result_footer(result) }}
diff --git a/searx/templates/simple/results.html b/searx/templates/simple/results.html
new file mode 100644
index 0000000..195c478
--- /dev/null
+++ b/searx/templates/simple/results.html
@@ -0,0 +1,158 @@
+{% extends "simple/base.html" %}
+{% from 'simple/macros.html' import icon, icon_small %}
+{% block title %}{% if method == 'GET' %}{{- q|e -}} -{% endif %}{% endblock %}
+{% block meta %}<link rel="alternate" type="application/rss+xml" title="Searx search: {{ q|e }}" href="{{ url_for('index') }}?q={{ q|urlencode }}&amp;categories={{ selected_categories|join(",") | replace(' ','+') }}&amp;pageno={{ pageno }}&amp;time_range={{ time_range }}&amp;language={{ current_language }}&amp;safesearch={{ safesearch }}&amp;format=rss">{% endblock %}
+{% block content %}
+<nav id="linkto_preferences"><a href="{{ url_for('preferences') }}">{{ icon('navicon-round') }}</a></nav>
+{% include 'simple/search.html' %}
+
+{% if results and results|map(attribute='template')|unique|list|count == 1 %}
+ {% set only_template = 'only_template_' + results[0]['template']|default('default')|replace('.html', '') %}
+{% else %}
+ {% set unique_template = '' %}
+{% endif %}
+
+<div id="results" class="{{ only_template }}">
+ {% if answers -%}
+ <div id="answers"><h4 class="title">{{ _('Answers') }} : </h4>
+ {%- for answer in answers -%}
+ <div class="answer">{{- answer -}}</div>
+ {%- endfor -%}
+ </div>
+ {%- endif %}
+
+ <div id="sidebar">
+
+ {% if number_of_results != '0' -%}
+ <p id="result_count"><small>{{ _('Number of results') }}: {{ number_of_results }}</small></p>
+ {%- endif %}
+
+ {% if unresponsive_engines and results|length >= 1 %}
+ <div class="dialog-error" role="alert">
+ <p><strong>{{ _('Error!') }}</strong> {{ _('Engines cannot retrieve results') }}:</p>
+ <p>{% for engine_name, error_type in unresponsive_engines %}
+ {{- engine_name }} ({{- error_type -}}){% if not loop.last %}, {% endif %}
+ {% endfor %}</p>
+ </div>
+ {% endif %}
+
+ {% if infoboxes %}
+ <div id="infoboxes">
+ {% for infobox in infoboxes -%}
+ {% include 'simple/infobox.html' %}
+ {%- endfor %}
+ </div>
+ {% endif %}
+
+ {% if suggestions %}
+ <div id="suggestions">
+ <h4 class="title">{{ _('Suggestions') }} : </h4>
+ <div class="wrapper">
+ {% for suggestion in suggestions %}
+ <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
+ <input type="hidden" name="q" value="{{ suggestion }}">
+ <input type="hidden" name="language" value="{{ current_language }}">
+ <input type="hidden" name="safesearch" value="{{ safesearch }}">
+ <input type="hidden" name="theme" value="{{ theme }}">
+ <input type="submit" class="suggestion" value="&bull; {{ suggestion }}">
+ </form>
+ {% endfor %}
+ </div>
+ </div>
+ {% endif %}
+
+ <div id="search_url">
+ <h4 class="title">{{ _('Search URL') }} :</h4>
+ <div class="selectable_url"><pre>{{ base_url }}?q={{ q|urlencode }}&amp;language={{ current_language }}&amp;time_range={{ time_range }}&amp;safesearch={{ safesearch }}{% if pageno > 1 %}&amp;pageno={{ pageno }}{% endif %}{% if selected_categories %}&amp;categories={{ selected_categories|join(",") | replace(' ','+') }}{% endif %}</pre></div>
+ </div>
+ <div id="apis">
+ <h4 class="title">{{ _('Download results') }}</h4>
+ {% for output_type in ('csv', 'json', 'rss') %}
+ <div class="left">
+ <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
+ <input type="hidden" name="q" value="{{ q|e }}">
+ {% for category in selected_categories %}
+ <input type="hidden" name="category_{{ category }}" value="1">
+ {% endfor %}
+ <input type="hidden" name="pageno" value="{{ pageno }}">
+ <input type="hidden" name="time_range" value="{{ time_range }}">
+ <input type="hidden" name="language" value="{{ current_language }}">
+ <input type="hidden" name="safesearch" value="{{ safesearch }}">
+ <input type="hidden" name="format" value="{{ output_type }}">
+ <input type="submit" value="{{ output_type }}">
+ </form>
+ </div>
+ {% endfor %}
+ </div>
+ </div>
+
+ {% if corrections %}
+ <div id="corrections">
+ <h4>{{ _('Try searching for:') }}</h4>
+ {% for correction in corrections %}
+ <div class="left">
+ <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" role="navigation">
+ <input type="hidden" name="q" value="{{ correction }}">
+ <input type="hidden" name="time_range" value="{{ time_range }}">
+ <input type="hidden" name="language" value="{{ current_language }}">
+ <input type="hidden" name="safesearch" value="{{ safesearch }}">
+ <input type="hidden" name="theme" value="{{ theme }}">
+ <input type="submit" value="{{ correction }}">
+ </form>
+ </div>
+ {% endfor %}
+ </div>
+ {% endif %}
+
+ <div id="urls">
+ {% for result in results %}
+ {% set index = loop.index %}
+ {% if result['template'] %}
+ {% include get_result_template('simple', result['template']) %}
+ {% else %}
+ {% include 'simple/result_templates/default.html' %}
+ {% endif %}
+ {% endfor %}
+ {% if not results and not answers %}
+ {% include 'simple/messages/no_results.html' %}
+ {% endif %}
+ </div>
+ <div id="backToTop">
+ <a href="#">{{ icon_small('chevron-up') }}</a>
+ </div>
+ {% if paging %}
+ <nav id="pagination">
+ {% if pageno > 1 %}
+ <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
+ <div class="{% if rtl %}right{% else %}left{% endif %}">
+ <input type="hidden" name="q" value="{{ q|e }}" >
+ {% for category in selected_categories %}
+ <input type="hidden" name="category_{{ category }}" value="1" >
+ {% endfor %}
+ <input type="hidden" name="pageno" value="{{ pageno-1 }}" >
+ <input type="hidden" name="time_range" value="{{ time_range }}" >
+ <input type="hidden" name="language" value="{{ current_language }}" >
+ <input type="hidden" name="safesearch" value="{{ safesearch }}" >
+ <input type="hidden" name="theme" value="{{ theme }}" >
+ <button type="submit">{{ icon_small('chevron-left') }} {{ _('previous page') }}</button>
+ </div>
+ </form>
+ {% endif %}
+ <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
+ <div class="{% if rtl %}left{% else %}right{% endif %}">
+ <input type="hidden" name="q" value="{{ q|e }}" >
+ {% for category in selected_categories %}
+ <input type="hidden" name="category_{{ category }}" value="1" >
+ {% endfor %}
+ <input type="hidden" name="pageno" value="{{ pageno+1 }}" >
+ <input type="hidden" name="time_range" value="{{ time_range }}" >
+ <input type="hidden" name="language" value="{{ current_language }}" >
+ <input type="hidden" name="safesearch" value="{{ safesearch }}" >
+ <input type="hidden" name="theme" value="{{ theme }}" >
+ <button type="submit">{{ _('next page') }} {{ icon_small('chevron-right') }}</button>
+ </div>
+ </form>
+ </nav>
+ {% endif %}
+</div>
+{% endblock %}
diff --git a/searx/templates/simple/search.html b/searx/templates/simple/search.html
new file mode 100644
index 0000000..9c4a99b
--- /dev/null
+++ b/searx/templates/simple/search.html
@@ -0,0 +1,17 @@
+<form id="search" method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
+ <div id="search_wrapper">
+ <div class="search_box">
+ <input id="q" name="q" type="text" placeholder="{{ _('Search for...') }}" tabindex="1" autocomplete="off" spellcheck="false" dir="auto" {% if q %}value="{{ q }}"{% endif %} >
+ <button id="clear_search" type="button" tabindex="-1"><span class="hide_if_nojs">{{ icon('close') }}</span><span class="show_if_nojs">{{ _('Clear search') }}</span></button>
+ <button id="send_search" type="submit" tabindex="-1"><span class="hide_if_nojs">{{ icon('search') }}</span><span class="show_if_nojs">{{ _('Start search') }}</span></button>
+ </div>
+ <div class="search_filters">
+ {% include 'simple/languages.html' %}
+ {% include 'simple/time-range.html' %}
+ </div>
+ </div>
+ {% set display_tooltip = true %}
+ {% include 'simple/categories.html' %}
+ <input type="hidden" name="safesearch" value="{{ safesearch }}" >
+ <input type="hidden" name="theme" value="{{ theme }}" >
+</form>
diff --git a/searx/templates/simple/simple.spec.txt b/searx/templates/simple/simple.spec.txt
new file mode 100644
index 0000000..a9724f8
--- /dev/null
+++ b/searx/templates/simple/simple.spec.txt
@@ -0,0 +1,40 @@
+#container
+ .search
+ #search_form
+
+#results
+
+ #sidebar
+ #result-count
+ .title
+ .content
+
+ .infobox
+ h2
+ img
+ p
+ div#attributes
+ table
+ tbody
+ tr
+ td
+ td
+ div#urls
+ ul
+ li
+
+ #suggestions
+ .title
+ .suggestion
+
+ #search_url
+ .title
+ input
+
+ #apis
+ .title
+ .api-link
+
+ .result
+
+
diff --git a/searx/templates/simple/stats.html b/searx/templates/simple/stats.html
new file mode 100644
index 0000000..462ab4a
--- /dev/null
+++ b/searx/templates/simple/stats.html
@@ -0,0 +1,25 @@
+{% extends "simple/base.html" %}
+{% block head %} {% endblock %}
+{% block content %}
+
+<a href="{{ url_for('index') }}"><h1><span>searx</span></h1></a>
+
+<h2>{{ _('Engine stats') }}</h2>
+
+{% for stat_name,stat_category in stats %}
+<div class="left">
+ <table>
+ <tr colspan="3">
+ <th>{{ stat_name }}</th>
+ </tr>
+ {% for engine in stat_category %}
+ <tr>
+ <td>{{ engine.name }}</td>
+ <td>{{ '%.02f'|format(engine.avg) }}</td>
+ <td class="percentage"><div style="width: {{ engine.percentage }}%">&nbsp;</div></td>
+ </tr>
+ {% endfor %}
+ </table>
+</div>
+{% endfor %}
+{% endblock %}
diff --git a/searx/templates/simple/time-range.html b/searx/templates/simple/time-range.html
new file mode 100644
index 0000000..a9fc9f1
--- /dev/null
+++ b/searx/templates/simple/time-range.html
@@ -0,0 +1,17 @@
+<select name="time_range" id="time_range" class="time_range" tabindex="3">{{- '' -}}
+ <option id="time-range-anytime" value="" {{ "selected" if time_range=="" or not time_range else ""}}>
+ {{- _('Anytime') -}}
+ </option>{{- '' -}}
+ <option id="time-range-day" value="day" {{ "selected" if time_range=="day" else ""}}>
+ {{- _('Last day') -}}
+ </option>{{- '' -}}
+ <option id="time-range-week" value="week" {{ "selected" if time_range=="week" else ""}}>
+ {{- _('Last week') -}}
+ </option>{{- '' -}}
+ <option id="time-range-month" value="month" {{ "selected" if time_range=="month" else ""}}>
+ {{- _('Last month') -}}
+ </option>{{- '' -}}
+ <option id="time-range-year" value="year" {{ "selected" if time_range=="year" else ""}}>
+ {{- _('Last year') -}}
+ </option>{{- '' -}}
+</select>
diff --git a/searx/testing.py b/searx/testing.py
new file mode 100644
index 0000000..0d17b2a
--- /dev/null
+++ b/searx/testing.py
@@ -0,0 +1,98 @@
+# -*- coding: utf-8 -*-
+"""Shared testing code."""
+
+
+import os
+import subprocess
+import traceback
+
+
+from os.path import dirname, join, abspath
+
+from splinter import Browser
+from unittest2 import TestCase
+
+
+class SearxTestLayer:
+ """Base layer for non-robot tests."""
+
+ __name__ = u'SearxTestLayer'
+
+ def setUp(cls):
+ pass
+ setUp = classmethod(setUp)
+
+ def tearDown(cls):
+ pass
+ tearDown = classmethod(tearDown)
+
+ def testSetUp(cls):
+ pass
+ testSetUp = classmethod(testSetUp)
+
+ def testTearDown(cls):
+ pass
+ testTearDown = classmethod(testTearDown)
+
+
+class SearxRobotLayer():
+ """Searx Robot Test Layer"""
+
+ def setUp(self):
+ os.setpgrp() # create new process group, become its leader
+
+ # get program paths
+ webapp = os.path.join(
+ os.path.abspath(os.path.dirname(os.path.realpath(__file__))),
+ 'webapp.py'
+ )
+ exe = 'python'
+
+ # set robot settings path
+ os.environ['SEARX_SETTINGS_PATH'] = abspath(
+ dirname(__file__) + '/settings_robot.yml')
+
+ # run the server
+ self.server = subprocess.Popen(
+ [exe, webapp],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT
+ )
+
+ def tearDown(self):
+ os.kill(self.server.pid, 9)
+ # remove previously set environment variable
+ del os.environ['SEARX_SETTINGS_PATH']
+
+
+# SEARXROBOTLAYER = SearxRobotLayer()
+def run_robot_tests(tests):
+ print('Running {0} tests'.format(len(tests)))
+ for test in tests:
+ with Browser() as browser:
+ test(browser)
+
+
+class SearxTestCase(TestCase):
+ """Base test case for non-robot tests."""
+
+ layer = SearxTestLayer
+
+
+if __name__ == '__main__':
+ import sys
+ # test cases
+ from tests import robot
+
+ base_dir = abspath(join(dirname(__file__), '../tests'))
+ if sys.argv[1] == 'robot':
+ test_layer = SearxRobotLayer()
+ errors = False
+ try:
+ test_layer.setUp()
+ run_robot_tests([getattr(robot, x) for x in dir(robot) if x.startswith('test_')])
+ except Exception:
+ errors = True
+ print('Error occured: {0}'.format(traceback.format_exc()))
+ test_layer.tearDown()
+ sys.exit(1 if errors else 0)
diff --git a/searx/translations/ar/LC_MESSAGES/messages.po b/searx/translations/ar/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..645ca0e
--- /dev/null
+++ b/searx/translations/ar/LC_MESSAGES/messages.po
@@ -0,0 +1,1014 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# ButterflyOfFire ButterflyOfFire, 2018
+# ButterflyOfFire, 2017-2018
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2018-09-08 08:23+0000\n"
+"Last-Translator: ButterflyOfFire ButterflyOfFire\n"
+"Language-Team: Arabic (http://www.transifex.com/asciimoo/searx/language/ar/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: ar\n"
+"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "إنتهت مهلة الإنتظار"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr ""
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "خلل غير مُتوقّع"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "ملفات"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "الرئيسية"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "موسيقى"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "شبكات التواصل الإجتماعي"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "صور"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "فيديوهات"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "علوم و تكنولوجيا"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "أخبار"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "خرائط"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "علوم"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "إنّ الإعدادات خاطئة، يرجى تعديل خياراتك"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "إعدادات غير صالحة"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "خطأ في البحث"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "قبل {minutes} ثانية"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "قبل {hours} ساعات، {minutes} دقائق"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "مولّد قيمة عشوائية"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "توليد قِيم عشوائية مختلفة"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr ""
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr ""
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "المدة المستغرقة للمحرك (ثواني)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "مدة تحميل الصفحة (ثواني)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "حصيلة نتائج البحث"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr ""
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr ""
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "أخطاء"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(OBSOLETE)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr ""
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr ""
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "تحويل روابط HTTP إلى روابط آمنة HTTPS عندما يكون ذلك مُتاحًا"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "تمرير الصفحات بلا حدود"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "حمّل تلقائيا الصفحة التالية عن السحب إلى أسفل النتائج"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr ""
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr ""
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "عرض روابط نتائج البحث في ألسنة جديدة للمتصفح"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr ""
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "البحث في الفئة المحددة"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr ""
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr ""
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "مزيل روابط التعقّب"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr ""
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "إختصارات لوحة المفاتيح مثل التي في Vim"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr ""
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "تعذر العثور على الصفحة"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "إذهب إلى %(search_page)s."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "صفحة البحث"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "التفضيلات"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "عن سيركس"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "التفضيلات"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "القوائم الإفتراضية"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "لغة البحث"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "اللغة الإفتراضية"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "لغة الواجهة"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "تكملة تلقائية"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "وكيل بروكسي الصور"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "مُفَعَّل"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "غير مُفَعَّل"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "الطريقة"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "البحث المؤمَّن"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "صارم"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "معتدل"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "لا شيء"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "السمات"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "اللون"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "أزرق (إفتراضي)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "بنفسجي"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "أخضر"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "سماوي"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "برتقالي"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "أحمر"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "محركات البحث المُستخدَمة حاليًا"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "إسم المحرك"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "الفئة"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "تمكين"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "حظر"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "حفظ"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "إعاد التعيين إلى الإعدادات الإفتراضية"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "العودة"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "رابط البحث"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "حصيلة التنزيل"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "الإجابات"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "الإقتراحات"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "الصفحة السابقة"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "الصفحة التالية"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "البحث عن ..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "إحصائيات المحرك"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "الوضع الأصلي"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "الزارع"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "الحاصد"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "رابط ماغنت"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "ملف تورنت"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr ""
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "عرض نتائج البحث في ألسنة جديدة"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "يشتغل"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "مُعطَّل"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "النسخة المخبأة"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "الإعدادات المتقدمة"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "غلق"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "خطأ !"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "مدعوم بواسطة"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "محرك بحث يحمي الخصوصية و قابل للتهكير"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "النفاذ عبر البروكسي"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "مدعوم"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "غير مدعوم"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "الرئيسية"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "المحركات"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "الإضافات"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "المجيبون"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "كعكات الكوكيز"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "ما هي لغتك المفضلة للبحث ؟"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "يقوم بتغيير لغة واجهة البحث"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "العثور على نتائج أثناء الكتابة"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "تمرير نتائج البحث عن الصور عبر بروكسي Searx"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "فلترة المحتوى"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "تغيير مظهر سيركس"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "إختر الشكل الذي ستبدو عليه هذه السمة"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "الشكل"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "الإختصار"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "اللغة المختارة"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "الفترة"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "متوسط الوقت"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "أقصى مدّة"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "التسمية"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "الكلمات الرمزية"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "الوصف"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "أمثلة"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "إسم الكوكي"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "القيمة"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr ""
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "حصيلة البحث"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "حاول البحث عن :"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "لم تتمكن محركات البحث من العثور على أية نتيجة"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "الروابط"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "إبدأ البحث"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "الإحصاءات"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "في أي وقت"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "يوم أمس"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "الأسبوع الماضي"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "الشهر الماضي"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "السنة الفارطة"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr ""
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "يظهر أنك تستخدم محرك سيركس لأول مرة."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "معلومة !"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "حاليا لم تقم بتحديد أي مِن كعكات الكوكيز."
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "لم يتم العثور على أية بيانات بعدُ."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "لم تتمكن المحركات من العثور على أية نتيجة."
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "يرجى إعادة المحاولة لاحقًا. إن كنت في عجلة من أمرك، ندعوك إلى البحث عن مثيل خادم آخر لمحرك سيركس."
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "عفوا !"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "لم نتوصل إلى العثور على أية نتيجة. الرجاء إعادة صياغة طلب البحث أو إبحث مع تحديد أكثر من فئة."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "أحسنت !"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "تمت عملية حفظ الإعدادات بنجاح."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "يا للهول !"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "لقد حدث هناك خلل ما."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "عرض الوسائط"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "إخفاء الوسائط"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "تحصل على الصورة"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "عرض المصدر"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "عرض الخريطة"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "إخفاء الخريطة"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "عرض المعلومات الإضافية"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "إخفاء المعلومات الإضافية"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "حجم الملف"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "بايت"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "ك.بايت"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "ميغابايت"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "جيجابيت"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "تيرابيت"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "عدد الملفات"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "عرض الفيديو"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "إخفاء الفيديو"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "تحميل المزيد ..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "تعذر العثور على عناصر"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "يدعم اللغة المختارة"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "واجهة المستخدم"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "الخصوصية"
diff --git a/searx/translations/bg/LC_MESSAGES/messages.po b/searx/translations/bg/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..09a013e
--- /dev/null
+++ b/searx/translations/bg/LC_MESSAGES/messages.po
@@ -0,0 +1,1014 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# ubone <van_ds_ff@mail.bg>, 2015
+# ubone <van_ds_ff@mail.bg>, 2016-2017
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2017-11-01 20:31+0000\n"
+"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
+"Language-Team: Bulgarian (http://www.transifex.com/asciimoo/searx/language/bg/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: bg\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr ""
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr ""
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr ""
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "файлове"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "общо"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "музика"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "социална мрежа"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "изображения"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "видео"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "IT"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "новини"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "карта"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "наука"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Неправилни настройки, моля проверете предпочитанията си."
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr ""
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "грешка при търсенето"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "преди {minutes} минута(минути)"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "преди {hours} час(ове), {minutes} минута(минути)"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr ""
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr ""
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr ""
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr ""
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr ""
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Страницата зарежда (сек)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Брой резултати"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr ""
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr ""
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Грешки"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr ""
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr ""
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr ""
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "Поправи HTTP връзки на HTTPS, ако е възможно"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Списък без страници."
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "Автоматично зареждане на следващата страница."
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr ""
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr ""
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Отвори връзките в нов раздел."
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "Отвори връзките в нов прозорец."
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Търси при избор на категория"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Търси веднага при избрана категория. Изключи за избор на няколко категории. (Необходим е JavaScript)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Показва IP-то ви и др. инфо, ако търсенето е \"ip\" или \"user agent\"."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr ""
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr ""
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr ""
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr ""
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Страницата не е намерена."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr ""
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "търси страница"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "предпочитания"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "относно"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Предпочитания"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Първоначални категории"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Език на търсене"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Търси на език"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Език"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Автоматично допълване"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Включено"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Изключено"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Метод"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "Безопасно търсене"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Стриктно"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Умерено"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Нищо"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Облик"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Цвят"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Синьо (първоначален)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Виолетов"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Зелено"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "зелено-синьо"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Оранжево"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Червено"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "Използвани търсачки в момента "
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Име на търсачка"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Категория"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Позволи"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Забрани"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Тези настройки се съхраняват във вашите бисквитки. Това ни позволява да не съхраняваме тази информация за вас."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Тези бисквитки служат за ваше удобство. Ние не ги използваме, за да ви следим."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "запази"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Върни първоначалните"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "назад"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "Адрес на търсенето"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Свали резултатите"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Отговори"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Предложения"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "предишна страница"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "следваща страница"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Търси за..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Статистика на търсачката"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "оригинален контекст"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Сийдър"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Лийчър"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "магнитна връзка"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "торент файл"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "Кликнете лупичката, за да изпълните търсене"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr ""
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "Включено"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Изключено"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "кеширана"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Допълнителни настройки"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Затвори"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Грешка!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr ""
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Общи"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Търсачки"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Добавки"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Отговори"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Бисквитки"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "Кой език предпочитате за търсене?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Промени езика на оформлението"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Намери докато пишеш"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Филтрирай съдържание"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Промени оформлението на searx"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Избери стил за избрания облик"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Стил"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Пряк път"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "Средно време"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "Макс. време"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Име"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Ключови думи"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Описание"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Примери"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "Това е списък на бисквитки с техните стойности, които searx съхранява на вашия компютър."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Име на бисквитката"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Стойност"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr ""
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Резултати от търсенето"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr ""
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr ""
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Връзки"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Започни търсене"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "статистики"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr ""
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr ""
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr ""
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr ""
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr ""
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "Внимание!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Изглежда използвате searx за първи път."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Информация!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "В момента няма налични бисквитки."
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Няма налична достъпна информация."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr ""
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr ""
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Съжалявам!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "не намерихме резултати. Моля пробвайте други ключови думи или търсете в повече категории."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Браво!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Настройките са успешно запазени."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "Да му се не види!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Нещо се обърка."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "покажи медия"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "скрий медия"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Вземи изображение"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Покажи източник"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "покажи карта"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "скрий картата"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "покажи детайлите"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "скрий детайлите"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Размер на файла"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "Байта"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "килобайт"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "мегабайт"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "гигабайт"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "терабайт"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Брой на Файлове"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "покажи видео"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "скрий видеото"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Зареди още..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr ""
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr ""
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr ""
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr ""
diff --git a/searx/translations/ca/LC_MESSAGES/messages.po b/searx/translations/ca/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..460091c
--- /dev/null
+++ b/searx/translations/ca/LC_MESSAGES/messages.po
@@ -0,0 +1,1014 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Calbasi <joan@calbasi.net>, 2018
+# jmontane, 2018
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2018-12-15 15:10+0000\n"
+"Last-Translator: jmontane\n"
+"Language-Team: Catalan (http://www.transifex.com/asciimoo/searx/language/ca/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: ca\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "s'ha esgotat el temps d'espera"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "Excepció en la petició"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "Fallada no esperada"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "fitxers"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "general"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "música"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "xarxes socials"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "imatges"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "vídeos"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "informàtica"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "notícies"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "mapa"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "ciència"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "La configuració no és vàlida, editeu-la"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "La configuració no és vàlida"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "error en la cerca"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "fa {minutes} minuts"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "fa {hours} hores i {minutes} minuts"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Generador de valor aleatori"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Genera valors aleatoris diferents"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "Funcions estadístiques"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "Calcula {functions} dels arguments"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Temps del motor (segons)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Càrrega de la pàgina (segons)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Nombre de resultats"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "Valoració"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "Valoració segons el resultat"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Errors"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(OBSOLET)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "Aquesta entrada ha estat substituïda per"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "No hi ha resum disponible per a aquesta publicació."
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "Reescriu els enllaços HTTP cap a HTTPS si és possible"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Desplaçament infinit"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "Carrega automàticament la pàgina següent en desplaçar-se al final de la pàgina actual"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Reescriu l'Open Access DOI"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Evita els llocs de pagaments redirigint a versions d'accés obert de les publicacions si és possible"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Obre els enllaços de resultats en una pestanya nova"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "De forma predeterminada, els resultats s'obren en la mateixa finestra. Aquest connector canvia el comportament predeterminat i obre els enllaços en una finestra o pestanya nova. (Cal JavaScript)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Cerca en la selecció de categories"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Executa la cerca immediatament si hi ha seleccionada una categoria. Desactiveu-ho per a seleccionar més d'una categoria. (Cal JavaScript)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Mostra la vostra IP si la consulta és «ip» i el valor «user agent» del navegador si la consulta conté «user agent»."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "Suprimeix l'URL de rastreig"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "Suprimeix els arguments de rastreig de les URL retornades"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Dreceres de teclat del Vim"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "Navegació pels resultats de la cerca amb les dreceres a l'estil Vim (cal JavaScript). Pitgeu la tecla «h» en la pàgina principal o de resultats per a obtenir ajuda."
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "No s'ha trobat la pàgina"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "Vés a %(search_page)s."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "pàgina de cerca"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "preferències"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "quant a"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Preferències"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Categories predeterminades"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Llengua de cerca"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Llengua predeterminada"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Llengua de la interfície"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Compleció automàtica"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "Servidor intermediari d'imatges"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Activat"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Desactivat"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Mètode"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "Cerca segura"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Estricta"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Moderada"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Cap"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Temes"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Color"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Blau (predeterminat)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Violat"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Verd"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Cian"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Taronja"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Vermell"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "Motors de cerca usats actualment"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Nom del motor"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Categoria"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Permet"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Bloca"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Aquesta configuració es desa en les galetes. Això ens permet no emmagatzemar les vostres dades."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Aquestes galetes només són per a la vostra conveniència. No les usem per a rastrejar-vos."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "desa"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Restaura els valors predeterminats"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "enrere"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "URL de cerca"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Baixa els resultats"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Respostes"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Suggeriments"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "pàgina anterior"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "pàgina següent"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Cerca..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Estadístiques del motor"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "context original"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Font"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Descarregador"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "enllaç magnet"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "fitxer torrent"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "Feu clic en la lupa per a executar la cerca"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Resultats en pestanyes noves"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "Activat"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Desactivat"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "en memòria cau"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Configuració avançada"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Tanca"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Error!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Funciona amb"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "un meta motor de cerca personalitzable i respectuós amb la privadesa"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "en servidor intermediari"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "suportat"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "no suportat"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "General"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Motorrs"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Connectat"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Resposter"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Galetes"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "En quina llengua preferiu cercar?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Canvia la llengua de la disposició"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Troba coses tal com escriu"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "Envia els resultats d'imatges via el servidor intermediari del searx"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "Canvia com es trameten els formularis, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">més informació sobre els mètodes de petició</a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Filtra el contingut"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Canvia la disposició del searx"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Trieu un estil per a aquest tema"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Estil"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr "Solucionador de l'Open Access DOI"
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Redirigeix cap a versions d'accés obert de les publicacions si són disponibles (cal un connector)"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Drecera"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "Llengua seleccionada"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Interval de temps"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "Temps amitjanat"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "Temps màxim"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "Aquest és el llistat dels mòduls de resposta ràpida del searx."
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Nom"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Paraules clau"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Descripció"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Exemples"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "Aquest és el llistat de les galetes, i els seu valor, que el searx té desats en el vostre equip."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "Amb aquest llistat, podeu avaluar la transparència del searx."
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Nom de la galeta"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Valor"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "URL de cerca de les preferències desades actualment"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "Nota: si indiqueu configuracions personalitzades en la URL de cerca podeu reduir la privadesa, amb filtració de dades, en fer clic als llocs dels resultats."
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Resultats de la cerca"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "Proveu a cercar:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "Els motors no poden obtenir cap resultat"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Enllaços"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Comença la cerca"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "estadístiques"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "En qualsevol moment"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "Les darreres 24 hores"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "La setmana passada"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "El darrer mes"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "El darrer any"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "Atenció!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Sembla que esteu usant searx per primer cop."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Informació!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "actualment, no hi ha definida cap galeta."
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Actualment, no hi ha dades disponibles."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "Els motors no poden obtenir cap resultat"
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "Torneu-ho a intentar més tard o useu una altra instància del searx."
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Disculpeu!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "no hem trobat cap resultat. Feu una consulta diferent o cerqueu en més categories."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Ben fet!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "La configuració s'ha desat correctament."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "Cagundena!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Alguna cosa ha anat malament."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "mostra el contingut multimèdia"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "amaga el contingut multimèdia"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Obtén la imatge"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Mostra el codi font"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "mostra el mapa"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "amaga el mapa"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "mostra els detalls"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "amaga els detalls"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Mida del fitxer"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "Bytes"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Nombre de fiters"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "mostra el vídeo"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "amaga el vídeo"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Carrega'n més..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "No s'ha trobat cap element"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Suporta la llengua seleccionada"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "Interfície d'usuari"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "Privadesa"
diff --git a/searx/translations/cs/LC_MESSAGES/messages.po b/searx/translations/cs/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..8d3ce3c
--- /dev/null
+++ b/searx/translations/cs/LC_MESSAGES/messages.po
@@ -0,0 +1,1014 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Clon <fillip1@seznam.cz>, 2017
+# Václav Zouzalík <Vaclav.Zouzalik@seznam.cz>, 2018
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2018-12-18 12:03+0000\n"
+"Last-Translator: Václav Zouzalík <Vaclav.Zouzalik@seznam.cz>\n"
+"Language-Team: Czech (http://www.transifex.com/asciimoo/searx/language/cs/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: cs\n"
+"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "timeout"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr ""
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr ""
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "soubory"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "obecné"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "hudba"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "sociální media"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "obrázky"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "videa"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "IT"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "zprávy"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "mapa"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "věda"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Neplatné nastavení, upravte svoje předvolby"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "Neplatné nastavení"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "chyba vyhledávání"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "před {minutes} minutamy"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "před {hours} hodinami, {minutes} minutami"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Generátor náhodné hodnoty"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Generuje různé náhodné hodnoty"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "Statistické funkce"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "Vypočítá {functions} daného argumentu"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Strojový čas (s)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Načítání stránky (s)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Počet výsledků"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr ""
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr ""
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Chyby"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(ZASTARALÉ)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "Tato položka byla nahrazena"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr ""
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "Pokud je to možné přepsat HTTP linky na HTTPS"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Nekonečné rolování"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "Automaticky načíst další stránku při dorolování na konec současné"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr ""
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Předejít placené sekce přesměrováním na verze s otevřený přístupem pokud je to možné"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Otevřít odkazy výsledků na nové panelu"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "V základu jsou výsledky jsou otevřeny ve stejném okně. Tento plugin přepisuje základní chování tak že se odkazy otevírají na nové panelu/okně. (požaduje JavaScript)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Hledat ve vybrané kategorii"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Vyhledávejte okamžitě, pokud je vybrána kategorie. Vypněte, pokud potřebujete zvolit vícero kategorií. (vyžaduje JavaScript)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Ukáže vaši IP adresu, pokud dotaz je \"ip\", a váš user agent, pokud dotatz obsahuje \"user agent\"."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "Odstraňovač sledovacích URL"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "Odstranit sledovací parametry z navrácených URL"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Zkratky jako ve Vim"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr ""
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Stránka nenalezena"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr ""
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "stránka vyhledávání"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "nastavení"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "o nás"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Nastavení"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Základní kategorie"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Jazyk hledání"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Základní jazyk"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Jazyk prostředí"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Automatické dokončování"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Aktivní"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Vypnuto"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Metoda"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "Bezpečné vyhledávání"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Striktní"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Střední"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Žádné"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Motivy"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Barva"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Modrá (základní)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Fialová"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Zelená"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Modrozelená"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Oranžová"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Červená"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "Nyní používaný vyhledávač"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Jméno vyhledávače"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Kategorie"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Povolit"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Blokovat"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Tato nastavení jsou uložena ve vašem cookies, to nám umožňuje taková data o vás neukládat."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Tato cookie slouží výhradně vašemu pohodlí, neužíváme je pro vaše sledování."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "uložit"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Obnovit základní"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "zpět"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "Hledat URL"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Výsledky stahování"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Odpovědi"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Návrhy"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "předchozí stránka"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "další stránka"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Hledat…"
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Statistiky vyhledávače"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "původní kontext"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Seeder"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Leecher"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "soubor torrentu"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr ""
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Výsledky na novém panelu"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "Zapnuto"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Vypnuto"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr ""
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Pokročilá nastavení"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Zavřít"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Chyba!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr ""
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "soukromý respektující, heknutelný meta-vyhledávač"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Obecné"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Vyhledávače"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Zásuvné moduly"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Odpovědi"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Cookies"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "Jaký jazyk vyhledávání upřednostňujete?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Změnít jazyk prostředí"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Vyhledávat během psaní"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Filtrovat obsah"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Změnit uspořádání searx"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Vybrat styl tohoto motivu"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Styl"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Zkratka"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "Zvolený jazyk"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Čásový interval"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "Prům. čas"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "Max. čas"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "Toto je seznam modulů okamžité odpovědi searxu."
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Jméno"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Klíčová slova"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Popis"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Příklady"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "Toto je seznam cookies a jejich hodnot které searx ukládá ve vašem počítači."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "S tímto seznamem můžete posoudit průhlednost searxu"
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Název cookie"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Hodnota"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr ""
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Výsledky vyhledávání"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr ""
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr ""
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Odkazy"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Začít hledat"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "statistiky"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "Kdykoli"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "Dnes"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "Tento týden"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "Měsíc"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "Rok"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "Hlavu vzhůru!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Zdá se že používáte searx poprvé."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Informace!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "nyní, nejsou definovány žádné cookies."
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Data nyní nejsou dostupná."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr ""
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "Zkuste prosím později, nebo na jiné instanci searxu."
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Pardón!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "Nenašli jsme žádné výsledky. Použijte prosím jiný dotaz nebo hledejte ve více kategoriích."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Výborně!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Nastavení úspěšně uloženo."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "Ale ne!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Něco se nepovedlo."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "ukázat media"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "skrýt media"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Získat obrázek"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Zobrazit zdroj"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "zobrazit mapu"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "skrýt mapu"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "zobrazit detaily"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "skrýt detaily"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Velikost"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "bajtů"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Počet souborů"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "zobrazit video"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "skrýt video"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Načíst více…"
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr ""
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Podporuje vybraný jazyk"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr ""
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "Soukromí"
diff --git a/searx/translations/cy/LC_MESSAGES/messages.po b/searx/translations/cy/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..3344c6d
--- /dev/null
+++ b/searx/translations/cy/LC_MESSAGES/messages.po
@@ -0,0 +1,1013 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Aled Powell <aled@aledpowell.cymru>, 2019
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2019-01-05 13:50+0000\n"
+"Last-Translator: Aled Powell <aled@aledpowell.cymru>\n"
+"Language-Team: Welsh (http://www.transifex.com/asciimoo/searx/language/cy/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: cy\n"
+"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr ""
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr ""
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr ""
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "ffeiliau"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "cyffredinol"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "cerddoriaeth"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "cyfryngau cymdeithasol"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "delweddau"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "fideos"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "Technoleg"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "newyddion"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "map"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "gwyddoniaeth"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Gosodiadau annilys. Addasa dy ddewisiadau."
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "Gosodiadau annilys"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "gwall chwilio"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "{minutes} munud yn ôl"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "{hours} awr, {minutes} munud yn ôl"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr ""
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr ""
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr ""
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr ""
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr ""
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr ""
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Nifer o ganlyniadau"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "Sgoriau"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr ""
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Gwallau"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr ""
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr ""
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr ""
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr ""
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr ""
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr ""
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr ""
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr ""
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Agor dolenni canlyniadau mewn tabiau newydd yn y porwr"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "Mae canlyniadau fel arfer yn cael eu hagor yn yr un ffenestr. Mae'r ategolyn hwn yn newid hyn fel bod dolenni yn cael eu hagor mewn tabiau/ffenestri newydd. (Angen JavaScript)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr ""
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr ""
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr ""
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr ""
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr ""
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr ""
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr ""
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr ""
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "Mynd i %(search_page)s."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "tudalen chwilio"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "dewisiadau"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "ynghylch"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Dewisiadau"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Categorïau arferol"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Iaith chwilio"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Iaith arferol"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Iaith y rhyngwyneb"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Awto-gwblhau"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Galluogwyd"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Analluogwyd"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Dull"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Caeth"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Cymhedrol"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Dim"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Themâu"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Lliw"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Glas (arferol)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Fioled"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Gwyrdd"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Gwyrddlas"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Oren"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Coch"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Categori"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Caniatáu"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Rhwystro"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "cadw"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Ailosod rhagosodiadau"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "nôl"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr ""
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Lawrlwytho'r canlyniadau"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Atebion"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Awgrymiadau"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "tudalen ddiwethaf"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "tudalen nesaf"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Chwilio am..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "cyd-destun gwreiddiol"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Hadau"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Lawrlwythwyr"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "dolen magnet"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "ffeil torrent"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "Cliciwch ar y chwyddwydr i berfformio chwiliad"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Canlyniadau mewn tabiau newydd"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "Ymlaen"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "I ffwrdd"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr ""
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Gosodiadau uwch"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Cau"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Gwall!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Pwerwyd gan"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "cefnogir"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "ni chefnogir"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Cyffredin"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Peiriannau"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Ategolion"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Atebwyr"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Cwcis"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "Ym mha iaith wyt ti'n ffafrio chwilio?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Newid iaith rhyngwyneb searX"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Darganfod pethau wrth i chi deipio"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Newid cynllun searX"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Dewis arddull ar gyfer y thema hon"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Arddull"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Llwybr Byr"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "Iaith a ddewiswyd"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Cyfnod amser"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Enw"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Allweddeiriau"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Disgrifiad"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Enghreifftiau"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "Dyma restr y cwcis, a'u gwerthoedd, mae searX yn eu cadw ar eich dyfais."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Enw cwci"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Gwerth"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr ""
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Canlyniadau chwilio"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "Rho gynnig ar chwilio am:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "Ni all y peiriannau cael canlyniadau"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Dolenni"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Dechrau chwilio"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "ystadegau"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "Unrhyw amser"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "Y diwrnod diwethaf"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "Yr wythnos diwethaf"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "Y mis diwethaf"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "Y flwyddyn ddiwethaf"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr ""
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Mae'n ymddangos eich bod yn defnyddio searx am y tro cyntaf."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Gwybodaeth!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr ""
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Does dim data ar gael ar hyn o bryd."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "Ni all y peiriannau cael canlyniadau."
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr ""
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Sori!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "Ni ddaethpwyd o hyd i unrhyw ganlyniadau. Defnyddiwch derm(au) chwilio gwahanol neu ehangu'r chwilio i ragor o gategorïau."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Da iawn!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Cadwyd y gosodiadau yn iawn!"
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr ""
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Aeth rhywbeth o'i le."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "dangos cyfryngau"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "cuddio cyfryngau"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Cael y ddelwedd"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Gweld y ffynhonnell"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "dangos map"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "cuddio map"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "dangos manylion"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "cuddio manylion"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Maint ffeil"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "Beitiau"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Nifer o Ffeiliau"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "dangos fideo"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "cuddio fideo"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Dysgu mwy..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "Ni chanfuwyd eitem"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Cefnogir yr iaith a ddewiswyd"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "Rhyngwyneb defnyddiwr"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "Preifatrwydd"
diff --git a/searx/translations/da/LC_MESSAGES/messages.po b/searx/translations/da/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..f235ccd
--- /dev/null
+++ b/searx/translations/da/LC_MESSAGES/messages.po
@@ -0,0 +1,1014 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Mikkel Kirkgaard Nielsen <memb_transifex@mikini.dk>, 2018
+# Morten Krogh Andersen <spam1@krogh.net>, 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2018-02-22 01:48+0000\n"
+"Last-Translator: Mikkel Kirkgaard Nielsen <memb_transifex@mikini.dk>\n"
+"Language-Team: Danish (http://www.transifex.com/asciimoo/searx/language/da/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: da\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "tidsudløb"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "forespørgsels-undtagelse"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "uventet nedlukning"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "filer"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "generelt"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "musik"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "sociale medier"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "billeder"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "videoer"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "it"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "nyheder"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "kort"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "videnskab"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Ugyldige indstillinger, redigér venligst dine valg"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "Ugyldig indstilling"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "søgefejl"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "for {minutes} minut(ter) siden"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "for {hours} time(r) og {minutes} minut(ter) siden"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Generator af tilfældig værdi"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Generér forskellige tilfældige værdier"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "Statistiske funktioner"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "Beregn {functions} af parametrene"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Søgemaskine-tid (sek)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Sideindlæsninger (sek)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Antal resultater"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "Vægtninger"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "Vægtninger pr. resultat"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Fejl"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(OVERFLØDIG)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "Denne værdi er blevet overskrevet af"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Intet sammendrag er tilgængelig for denne publikation."
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "Omskriv HTTP links til HTTPS hvis muligt"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Uendelig scrolling"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "Indlæs automatisk næste side, når der scrolles til bunden af den nuværende side"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Open Access DOI-omskrivning"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Undgå betalingsmure ved at viderestille til en åbent tilgængelig version, hvis en sådan findes"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Åben resultat-link i en ny browser-tab"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "Resultater åbnes som standard i det samme vindue. Dette plugin overskriver dette, således at link åbnes i nye tabs eller vinduer. (JavaScript påkrævet)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Søg på kategori i stedet"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Udfør søgning straks, hvis en kategori vælges. Slå dette fra for at kunne vælge flere kategorier (JavaScript påkrævet)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Viser din IP adresse hvis søgningen er \"ip\" og din user-agent i søgningen indeholder \"user agent\""
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "Fjernelse af tracker URL"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "Fjern trackeres parametre fra den returnerede URL"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Genvejstaster i Vim-stil"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "Navigér søgeresultater med Vim-lignende genvejstaster (JavaScript påkrævet). Tryk på \"h\" på hoved- eller resultatsiden for at få hjælp."
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Side ikke fundet"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "Gå til 1%(search_page)s"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "søgeside"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "indstillinger"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "om"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Indstillinger"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Standardkategorier"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Søgesprog"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Standardsprog"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Sprog i brugergrænsefladen"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Automatisk fuldførelse"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "Billede-proxy"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Slået til"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Slået fra"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Metode"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "SafeSearch"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Stringent"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Moderat"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Ingen"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Temaer"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Farve"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Blå (standard)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Violet"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Grøn"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Cyan"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Orange"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Rød"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "Pt. anvendte søgemaskiner"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Søgemaskinenavn"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Kategori"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Tillad"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Blokér"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Disse indstillnger gemmes cookies på din enhed. Dette gør, at vi ikke behøver at gemme data om dig"
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Disse cookies er kun til dine data. Vi benytter ikke disse til at spore dig."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "gem"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Nustil til standard"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "tilbage"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "Søge-URL"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Hent resultater"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Svar"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Forslag"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "forrige side"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "næste side"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Søg efter..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Søgemaskine-statistik"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "oprindelig sammenhæng"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Afsender"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Henter"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "magnet-link"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "torrent-fil"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "Klik på forstørrelsesglasset for at udføre søgning"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Resultater på nye tabs"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "Til"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Fra"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "cached"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Avancerede indstillinger"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Luk"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Fejl!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Leveret af"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "en privatlivs--respekterende, hackbar meta-søgemaskine"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "viderestillet"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "understøttet"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "ikke-understøttet"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Generelt"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Søgemaskiner"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Plugins"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Svarere"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Cookies"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "Hvilket sprog foretrækker du til søgninger?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Ændring af layout-sproget"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Find under indtastning"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "Send billeder via searx"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "Ændring af hvordan webforms indsendes, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">lær mere om request-metoder</a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Filtrér indhold"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Ændring af searx layout"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Vælg stil for dette tema"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Stil"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr "Open Access DOI-forløser"
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Omdiriger til open-access-udgaver af publikationer hvis tilgængelig (plugin påkrævet)"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Genvej"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "Valgt sprog"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Tidsinterval"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "Gns. tid"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "Maks-tid"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "Dette er listen over searx's installationens svar-moduler"
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Navn"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Nøgleord"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Beskrivelse"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Eksempler"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "Dette er listen over de cookies og værdier searx gemmer på din computer"
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "Med denne liste, kan du bekræfte gennemsigtigheden af searx"
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Cookie-navn"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Værdi"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "Søge-URL for den nuværende gemte indstilling"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "Bemærk: brugertilpassede indstillinger i søge-URL kan reducere niveauet af beskyttelse ved at lække data til de sider der klikkes på i resultatet."
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Søgereresultater"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "Prøv at søge efter:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "Søgemotorer kan ikke hente resultater"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Links"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Start søgning"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "statistik"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "Når som helst"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "Det seneste døgn"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "Den seneste uge"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "Den seneste måned"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "Det sidste år"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "OBS!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Det ser ud til at benytter searx for første gang."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Information!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "der er pt. ingen cookies defineret"
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Der er pt. ingen tilgængelige data"
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "Søgemotorer kan ikke hente resultater."
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "Vær venlig at prøve igen senere, eller find en anden searx-instans."
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Beklager!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "vi fandt ingen resultater. Benyt venligst en anden søge-streng eller søg i flere kategorier"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Godt klaret!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Indstillinger gemt."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "Åh, pokkers!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Noget gik galt"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "vis media"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "skjul media"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Hent billede"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Vis kilde"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "vis kort"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "skjul kort"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "vis detaljer"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "skjul detaljer"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Filstørrelse"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "Bytes"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Antal filer"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "vis video"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "skjul video"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Indlæs mere..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "Intet fundet"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Undstøtter valgte sprog"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "Brugerinterface"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "Privatliv"
diff --git a/searx/translations/de/LC_MESSAGES/messages.po b/searx/translations/de/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..64f253e
--- /dev/null
+++ b/searx/translations/de/LC_MESSAGES/messages.po
@@ -0,0 +1,1026 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Bamstam, 2017
+# Bamstam, 2017
+# Thomas Pointhuber, 2014-2015
+# Ettore Atalan <atalanttore@googlemail.com>, 2016
+# Jona Abdinghoff <jona.abdinghoff@gmail.com>, 2016
+# Mario Siegmann <mario_siegmann@web.de>, 2017
+# Max <theshirinzu@gmail.com>, 2015
+# pointhi, 2014
+# rike, 2014
+# S R <acc-transifex@rie.hm>, 2018
+# stf <stefan.marsiske@gmail.com>, 2014
+# stf <stefan.marsiske@gmail.com>, 2014
+# Thomas Pointhuber, 2016-2017
+# rike, 2014
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2018-12-28 11:02+0000\n"
+"Last-Translator: S R <acc-transifex@rie.hm>\n"
+"Language-Team: German (http://www.transifex.com/asciimoo/searx/language/de/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: de\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "Zeitüberschreitung"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "Abbruch der Anfrage"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "Unerwarteter Absturz"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "Dateien"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "Allgemein"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "Musik"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "Soziale Medien"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "Bilder"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "Videos"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "IT"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "Neuigkeiten"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "Karte"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "Wissenschaft"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Ungültige Einstellungen. Bitte diese überprüfen"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "Ungültige Einstellungen"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "Suchfehler"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "vor {minutes} Minute(n)"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "vor {hours} Stunde(n), {minutes} Minute(n)"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Zufallszahlengenerator"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Erzeugt diverse Zufallswerte"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "Statistikfuntionen"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "{functions} der Argumente berechnen"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Suchmaschinen Zeit (sek)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Ladezeit (sek)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Trefferanzahl"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "Punkte"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "Punkte pro Treffer"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Fehler"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(OBSOLET)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "Dieser Eintrag wurde überschrieben von"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Keine Zusammenfassung für die Veröffentlichung verfügbar."
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "Wandelt wenn möglich HTTP-Links in HTTPS-Links um"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Unendliches Scrollen"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "Lädt automatisch die nächste Seite, wenn das Ende der aktuellen Seite erreicht wurde"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Open-Access-DOI umschreiben"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Bezahlbeschränkungen durch die Weiterleitung zu der verfügbaren Open-Access-Version vermeiden"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Links in einem neuen Browser-Tab öffnen"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "Links werden normalerweise im gleichen Fenster geöffnet. Dieses Plugin überschreibt dieses Verhalten und öffnet Links in einem neuen Tab bzw. Fenster.\n(JavaScript wird benötigt)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Suche starten, wenn Kategorie angeklickt wird"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Die Suche sofort starten, wenn eine Kategorie ausgewählt wird. Es ist dann nicht mehr möglich, mehrere Kategorien auszuwählen. (JavaScript wird benötigt)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Zeigt deine IP-Adresse an, wenn die Suchabfrage \"ip\" lautet, und deinen User-Agent, wenn deine Suchabfrage \"user agent\" beinhaltet."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "Tracker-URL-Entferner"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "Tracker-Argumente von den zurückgegebenen URLs entfernen"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "An Vim angelehnte Tastenkombinationen"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "Navigiere in der Ergebnisseite mit Vim ähnlichen Tastaturkombinationen (es wird JavaScript benötigt).\nDrücke \"h\" auf der Start- bzw. Ergebnisseite, um ein Hifefenster anzuzeigen"
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Seite nicht gefunden"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "Gehe zu %(search_page)s."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "Suchseite"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "Einstellungen"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "Über uns"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Einstellungen"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Standardkategorien"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Suchsprache"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Standardsprache"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Oberflächensprache"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Autovervollständigung"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "Bilder-Proxy"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Aktiviert"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Deaktiviert"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Methode"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "Sichere Suche (SafeSearch)"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Streng"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Moderat"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Keine"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Designs"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Farbe"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Blau (Standard)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Violett"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Grün"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Cyan"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Orange"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Rot"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "Aktuell benutzte Suchmaschinen"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Suchmaschinenname"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Kategorie"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Erlauben"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Blockieren"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Diese Informationen werden in Cookies auf Ihrem Rechner gespeichert, damit wir keine Ihrer persönlichen Daten speichern müssen."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Diese Cookies dienen einzig Ihrem Komfort. Wir verwenden sie nicht, um Sie zu überwachen."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "Speichern"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Zurücksetzen"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "Zurück"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "Such-URL"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Ergebnisse herunterladen"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Antworten"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Vorschläge"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "vorherige Seite"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "nächste Seite"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Suche nach..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Suchmaschinenstatistiken"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "ursprüngliche Seite"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Seeder"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Leecher"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "Magnet Link"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "Torrent"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "klicke auf die Lupe, um die Suche zu starten"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Ergebnisse in neuem Tab"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "Ein"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Aus"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "Im Cache"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Erweiterte Einstellungen"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Schließen"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Fehler!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Betrieben mit"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "eine privatsphären-respektierende, hackbare Metasuchmaschine"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "proxied"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "Unterstützt"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "Nicht unterstützt"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Allgemein"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Suchmaschinen"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Erweiterungen"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Antworten"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Cookies"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "welche Sprache bevorzugst du für die Suche?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "ändere die Sprache des Layouts"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "zeige Vorschläge während der Eingabe an"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "Bilder über einen Proxy an Searx weiterleiten"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "ändere wie Formulare übertragen werden, <a href=\"https://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol#HTTP-Anfragemethoden\" rel=\"external\">lerne mehr über Anfragemethoden</a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Inhalte filtern"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "ändere das Aussehen von searx"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Stil für dieses Thema auswählen"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Aussehen"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr "Open Access DOI resolver"
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Weiterleitung zu frei zugänglichen Versionen von Veröffentlichungen, wenn verfügbar (Plugin benötigt)"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Abkürzung"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "Ausgewählte Sprache"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Zeitbereich"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "mittlere Zeit"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "max. Zeit"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "Dies ist die Liste der in searx verfügbaren Module für Sofortantworten "
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Name"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Schlüsselwörter"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Beschreibung"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Beispiele"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "Die nachfolgende Liste zeigt alle Cookies, die searx auf deinem Computer speichert."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "Mit dieser Liste können Sie die Transparenz von searx einschätzen"
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Cookie-Name"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Wert"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "Such-URL für die aktuell gespeicherten Einstellungen"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "Hinweis: Das Festlegen eigener Einstellungen in der Such-URL kann Ihre Privatsphäre reduzieren, weil gegebenenfalls ungewollt Daten an die ausgewählten Ergebnisseiten übermittelt werden."
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Suchergebnisse"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "Suche nach:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "Die folgenden Suchmaschinen können die Ergebnisse nicht empfangen"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Links"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Suche starten"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "Statistiken"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "beliebiger Zeitpunkt"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "Letzter Tag"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "Letzte Woche"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "Letzten Monat"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "Letztes Jahr"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "Achtung!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Es sieht so aus, als ob das erstes mal mit searx arbeitest."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Information!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "Derzeit sind keine Cookies gespeichert."
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Es sind derzeit keine Daten vorhanden."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "Suchmaschinen können die Ergebnisse nicht empfangen."
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "Bitte später nochmals versuchen oder eine andere Searx-Instanz verwenden."
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Entschuldigung!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "Es konnten keine Suchergebnisse gefunden werden. Bitte nutze einen anderen Suchbegriff, oder suche das gewünschte in einer anderen Kategorie. "
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Gut gemacht!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Einstellungen wurden erfolgreich gespeichert."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "Oh nein!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Irgendetwas ist falsch gelaufen."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "Medien anzeigen"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "Medien verstecken"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Bild ansehen"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Seite besuchen"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "Karte anzeigen"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "Karte verstecken"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "Details anzeigen"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "Details verstecken"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Dateigröße"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "Bytes"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Anzahl der Dateien"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "Video anzeigen"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "Video verstecken"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Lade mehr..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "Keine Einträge gefunden"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Unterstützt die ausgewählten Sprachen"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "Benutzeroberfläche"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "Privatsphäre"
diff --git a/searx/translations/el_GR/LC_MESSAGES/messages.po b/searx/translations/el_GR/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..073f2f6
--- /dev/null
+++ b/searx/translations/el_GR/LC_MESSAGES/messages.po
@@ -0,0 +1,1014 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# xinomilo <dimitris@stinpriza.org>, 2017-2018
+# xinomilo <dimitris@stinpriza.org>, 2015
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2018-01-17 10:03+0000\n"
+"Last-Translator: xinomilo <dimitris@stinpriza.org>\n"
+"Language-Team: Greek (Greece) (http://www.transifex.com/asciimoo/searx/language/el_GR/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: el_GR\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr ""
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr ""
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr ""
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "αρχεία"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "γενικά"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "μουσική"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "κοινωνικά δίκτυα"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "εικόνες"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr ""
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr ""
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "νέα"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "χάρτης"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "επιστήμη"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr ""
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr ""
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "λάθος αναζήτησης"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "{minutes} λεπτά πριν"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr ""
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Γεννήτρια τυχαίων τιμών"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr ""
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr ""
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr ""
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Χρόνος μηχανής (δευτ)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Φόρτωση σελίδας (δευτ)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Αριθμός αποτελεσμάτων"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr ""
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr ""
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Λάθη"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr ""
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr ""
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr ""
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "Επανεγγραφή συνδέσμων HTTP σε HTTPS αν είναι δυνατό"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr ""
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr ""
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr ""
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr ""
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Άνοιξε τους συνδέσμους των αποτελεσμάτων σε νέα καρτέλα περιηγητή"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr ""
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Αναζήτηση κατά την επιλογή κατηγορίας"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Άμεση αναζήτηση κατά την επιλογή κατηγορίας. Απενεργοποιήστε για να διαλέξετε πολλαπλές κατηγορίες. (απαιτείται JavaScript)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Προβολή της IP διεύθυνσης αν η αναζήτηση είναι \"ip\" και το user agent αν η αναζήτηση περιέχει \"user agent\"."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr ""
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr ""
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr ""
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr ""
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Η σελίδα δεν βρέθηκε"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr ""
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "σελίδα αναζήτησης"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "προτιμήσεις"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "σχετικά"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Προτιμήσεις"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Προεπιλεγμένες κατηγορίες"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Γλώσσα αναζήτησης"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Προεπιλεγμένη γλώσσα"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Αυτόματη συμπλήρωση"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Ενεργοποιημένο"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Απενεργοποιημένο"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Μέθοδος"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "Ασφαλής Αναζήτηση"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Κανένα"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Θέματα"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Χρώμα"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Μπλε (προεπιλεγμένο)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Βιολετί"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Πράσινο"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Κυανό"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Πορτοκαλί"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Κόκκινο"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "Μηχανές αναζήτησης που χρησιμοποιούνται"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Όνομα μηχανής"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Κατηγορία"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Επέτρεψε"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Αποκλεισμός"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "αποθήκευση"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Επαναφορά προεπιλογών"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "πίσω"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "Σύνδεσμος αναζήτησης"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr ""
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Απαντήσεις"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Προτάσεις"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "προηγούμενη σελίδα"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "επόμενη σελίδα"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Αναζήτηση για..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Στατιστικά μηχανής"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "σύνδεσμος magnet"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "αρχείο torrent"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr ""
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Αποτελέσματα σε νέες καρτέλες"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "Ενεργό"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Ανενεργό"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr ""
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Ρυθμίσεις για προχωρημένους"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr ""
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Λάθος!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr ""
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "υποστηρίζεται"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "δεν υποστηρίζεται"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Γενικά"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Μηχανές"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Πρόσθετα"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "Τι γλώσσα προτιμάτε για αναζήτηση;"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Εύρεση όρων κατά την πληκτρολόγηση"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Φιλτράρισμα περιεχομένου"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Συντόμευση"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "Επιλεγμένη γλώσσα"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Όνομα"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Λέξεις κλειδιά"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Περιγραφή"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Παραδείγματα"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Τιμή"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr ""
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Αποτελέσματα αναζήτησης"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "Δοκιμάστε αναζήτηση για:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "Οι μηχανές δε μπορούν να φέρουν αποτελέσματα"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Σύνδεσμοι"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Έναρξη αναζήτησης"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "στατιστικά"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "Οποιαδήποτε στιγμή"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "Τελευταία μέρα"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "Τελευταία βδομάδα"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "Τελευταίος μήνας"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "Τελευταίο έτος"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr ""
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Φαίνεται ότι χρησιμοποιείται το searx για πρώτη φορά."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Πληροφορίες!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr ""
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Δεν υπάρχουν διαθέσιμα δεδομένα."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "Οι μηχανές δε μπορούν να φέρουν αποτελέσματα."
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr ""
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Συγνώμη!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "δε βρέθηκαν αποτελέσματα. Παρακαλούμε χρησιμοποιήστε άλλη αναζήτηση ή ψάξτε σε περισσότερες κατηγορίες."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Πολύ καλά!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Οι ρυθμίσεις αποθηκεύτηκαν επιτυχώς."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "Φτου!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Κάτι πήγε στραβά."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "προβολή πολυμέσων"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "απόκρυψη πολυμέσων"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Προβολή πηγής"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "προβολή χάρτη"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "απόκρυψη χάρτη"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "προβολή λεπτομερειών"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "απόκρυψη λεπτομερειών"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Μέγεθος αρχείου"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Αριθμός Αρχείων"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "προβολή βίντεο"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "απόκρυψη βίντεο"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Φόρτωση περισσότερων..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr ""
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Υποστηρίζει την επιλεγμένη γλώσσα"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr ""
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "Ιδιωτικότητα"
diff --git a/searx/translations/en/LC_MESSAGES/messages.po b/searx/translations/en/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..1f7f591
--- /dev/null
+++ b/searx/translations/en/LC_MESSAGES/messages.po
@@ -0,0 +1,695 @@
+# English translations for PROJECT.
+# Copyright (C) 2016 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2016.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PROJECT VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2016-01-21 16:05+0100\n"
+"PO-Revision-Date: 2014-01-30 15:22+0100\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language: en\n"
+"Language-Team: en <LL@li.org>\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.2.0\n"
+
+#: searx/webapp.py:114
+msgid "files"
+msgstr ""
+
+#: searx/webapp.py:115
+msgid "general"
+msgstr ""
+
+#: searx/webapp.py:116
+msgid "music"
+msgstr ""
+
+#: searx/webapp.py:117
+msgid "social media"
+msgstr ""
+
+#: searx/webapp.py:118
+msgid "images"
+msgstr ""
+
+#: searx/webapp.py:119
+msgid "videos"
+msgstr ""
+
+#: searx/webapp.py:120
+msgid "it"
+msgstr ""
+
+#: searx/webapp.py:121
+msgid "news"
+msgstr ""
+
+#: searx/webapp.py:122
+msgid "map"
+msgstr ""
+
+#: searx/webapp.py:123
+msgid "science"
+msgstr ""
+
+#: searx/webapp.py:415
+msgid "{minutes} minute(s) ago"
+msgstr ""
+
+#: searx/webapp.py:417
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr ""
+
+#: searx/engines/__init__.py:185
+msgid "Page loads (sec)"
+msgstr ""
+
+#: searx/engines/__init__.py:189
+msgid "Number of results"
+msgstr ""
+
+#: searx/engines/__init__.py:193
+msgid "Scores"
+msgstr ""
+
+#: searx/engines/__init__.py:197
+msgid "Scores per result"
+msgstr ""
+
+#: searx/engines/__init__.py:201
+msgid "Errors"
+msgstr ""
+
+#: searx/plugins/https_rewrite.py:29
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr ""
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr ""
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr ""
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr ""
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr ""
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr ""
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/default/index.html:8 searx/templates/default/index.html:12
+#: searx/templates/oscar/navbar.html:7 searx/templates/oscar/navbar.html:35
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr ""
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/default/index.html:10 searx/templates/oscar/about.html:3
+#: searx/templates/oscar/navbar.html:8 searx/templates/oscar/navbar.html:34
+#: searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/default/preferences.html:5
+#: searx/templates/oscar/preferences.html:12
+#: searx/templates/pix-art/preferences.html:5
+msgid "Preferences"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/default/preferences.html:9
+#: searx/templates/oscar/preferences.html:36
+#: searx/templates/oscar/preferences.html:38
+msgid "Default categories"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/default/preferences.html:14
+#: searx/templates/oscar/preferences.html:44
+#: searx/templates/pix-art/preferences.html:9
+msgid "Search language"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/default/preferences.html:17
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/pix-art/preferences.html:12
+msgid "Automatic"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/default/preferences.html:25
+#: searx/templates/oscar/preferences.html:55
+#: searx/templates/pix-art/preferences.html:20
+msgid "Interface language"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/default/preferences.html:35
+#: searx/templates/oscar/preferences.html:65
+msgid "Autocomplete"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/default/preferences.html:46
+#: searx/templates/oscar/preferences.html:76
+msgid "Image proxy"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/default/preferences.html:49
+#: searx/templates/oscar/preferences.html:80
+msgid "Enabled"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/default/preferences.html:50
+#: searx/templates/oscar/preferences.html:81
+msgid "Disabled"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/default/preferences.html:55
+#: searx/templates/oscar/preferences.html:85
+#: searx/templates/pix-art/preferences.html:30
+msgid "Method"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/default/preferences.html:64
+#: searx/templates/oscar/preferences.html:94
+#: searx/templates/oscar/preferences.html:144
+#: searx/templates/oscar/preferences.html:150
+msgid "SafeSearch"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/default/preferences.html:67
+#: searx/templates/oscar/preferences.html:98
+msgid "Strict"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/default/preferences.html:68
+#: searx/templates/oscar/preferences.html:99
+msgid "Moderate"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/default/preferences.html:69
+#: searx/templates/oscar/preferences.html:100
+msgid "None"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/default/preferences.html:74
+#: searx/templates/oscar/preferences.html:104
+#: searx/templates/pix-art/preferences.html:39
+msgid "Themes"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/default/preferences.html:84
+#: searx/templates/pix-art/preferences.html:49
+msgid "Currently used search engines"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/default/preferences.html:88
+#: searx/templates/oscar/preferences.html:142
+#: searx/templates/oscar/preferences.html:152
+#: searx/templates/pix-art/preferences.html:53
+msgid "Engine name"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/default/preferences.html:89
+msgid "Category"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/default/preferences.html:90
+#: searx/templates/default/preferences.html:101
+#: searx/templates/oscar/macros.html:71
+#: searx/templates/oscar/preferences.html:141
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+msgid "Allow"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/default/preferences.html:90
+#: searx/templates/default/preferences.html:102
+#: searx/templates/oscar/macros.html:70
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/default/preferences.html:110
+#: searx/templates/oscar/preferences.html:235
+#: searx/templates/pix-art/preferences.html:73
+msgid ""
+"These settings are stored in your cookies, this allows us not to store "
+"this data about you."
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/default/preferences.html:112
+#: searx/templates/oscar/preferences.html:237
+#: searx/templates/pix-art/preferences.html:75
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/default/preferences.html:115
+#: searx/templates/oscar/preferences.html:240
+#: searx/templates/pix-art/preferences.html:78
+msgid "save"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/default/preferences.html:116
+#: searx/templates/oscar/preferences.html:242
+msgid "Reset defaults"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/default/preferences.html:117
+#: searx/templates/oscar/preferences.html:241
+#: searx/templates/pix-art/preferences.html:79
+msgid "back"
+msgstr ""
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/default/results.html:13
+#: searx/templates/oscar/results.html:110
+msgid "Search URL"
+msgstr ""
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/default/results.html:17
+#: searx/templates/oscar/results.html:115
+msgid "Download results"
+msgstr ""
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/default/results.html:35
+msgid "Answers"
+msgstr ""
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/default/results.html:43
+#: searx/templates/oscar/results.html:90
+msgid "Suggestions"
+msgstr ""
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/default/results.html:81
+#: searx/templates/oscar/results.html:51 searx/templates/oscar/results.html:63
+msgid "previous page"
+msgstr ""
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/default/results.html:92
+#: searx/templates/oscar/results.html:44 searx/templates/oscar/results.html:71
+msgid "next page"
+msgstr ""
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/default/search.html:3 searx/templates/oscar/search.html:4
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3
+msgid "Search for..."
+msgstr ""
+
+#: searx/templates/courgette/stats.html:4 searx/templates/default/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+msgid "Engine stats"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/default/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/default/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+msgid "Seeder"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/default/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+msgid "Leecher"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/default/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:21
+msgid "magnet link"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/default/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:22
+msgid "torrent file"
+msgstr ""
+
+#: searx/templates/default/categories.html:8
+msgid "Click on the magnifier to perform search"
+msgstr ""
+
+#: searx/templates/default/result_templates/code.html:3
+#: searx/templates/default/result_templates/default.html:3
+#: searx/templates/default/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:20
+msgid "cached"
+msgstr ""
+
+#: searx/templates/oscar/base.html:78
+msgid "Powered by"
+msgstr ""
+
+#: searx/templates/oscar/base.html:78
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr ""
+
+#: searx/templates/oscar/navbar.html:9 searx/templates/oscar/navbar.html:33
+msgid "home"
+msgstr ""
+
+#: searx/templates/oscar/navbar.html:14 searx/templates/oscar/navbar.html:24
+msgid "Toggle navigation"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:25
+msgid "General"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:18
+#: searx/templates/oscar/preferences.html:126
+msgid "Engines"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:19
+#: searx/templates/oscar/preferences.html:187
+msgid "Plugins"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:20
+#: searx/templates/oscar/preferences.html:210
+msgid "Cookies"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:45
+msgid "What language do you prefer for search?"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:56
+msgid "Change the language of the layout"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:66
+msgid "Find stuff as you type"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:77
+msgid "Proxying image results through searx"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:86
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:95
+msgid "Filter content"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:105
+msgid "Change searx layout"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:143
+#: searx/templates/oscar/preferences.html:151
+msgid "Shortcut"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:145
+#: searx/templates/oscar/preferences.html:149
+msgid "Avg. time"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/oscar/preferences.html:148
+msgid "Max time"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:213
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:214
+msgid "With that list, you can assess searx transparency."
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:219
+msgid "Cookie name"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:220
+msgid "Value"
+msgstr ""
+
+#: searx/templates/oscar/results.html:7
+msgid "Search results"
+msgstr ""
+
+#: searx/templates/oscar/results.html:105
+msgid "Links"
+msgstr ""
+
+#: searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:11
+msgid "Start search"
+msgstr ""
+
+#: searx/templates/oscar/search_full.html:15
+msgid "Show search filters"
+msgstr ""
+
+#: searx/templates/oscar/search_full.html:15
+msgid "Hide search filters"
+msgstr ""
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr ""
+
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/no_results.html:5
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr ""
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr ""
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr ""
+
+#: searx/templates/oscar/messages/js_disabled.html:2
+msgid "Warning!"
+msgstr ""
+
+#: searx/templates/oscar/messages/js_disabled.html:3
+msgid "Please enable JavaScript to use full functionality of this site."
+msgstr ""
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr ""
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr ""
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr ""
+
+#: searx/templates/oscar/messages/no_results.html:7
+msgid "Sorry!"
+msgstr ""
+
+#: searx/templates/oscar/messages/no_results.html:8
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr ""
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr ""
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr ""
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr ""
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr ""
+
+#: searx/templates/oscar/result_templates/default.html:7
+msgid "show media"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/default.html:7
+msgid "hide media"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/images.html:23
+msgid "Get image"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/images.html:24
+msgid "View source"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/map.html:7
+msgid "show map"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/map.html:7
+msgid "hide map"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/map.html:11
+msgid "show details"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/map.html:11
+msgid "hide details"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+msgid "Filesize"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+msgid "Bytes"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+msgid "kiB"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+msgid "MiB"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+msgid "GiB"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+msgid "TiB"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+msgid "Number of Files"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/videos.html:7
+msgid "show video"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/videos.html:7
+msgid "hide video"
+msgstr ""
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr ""
+
+#~ msgid "Localization"
+#~ msgstr ""
+
+#~ msgid "Yes"
+#~ msgstr ""
+
+#~ msgid "No"
+#~ msgstr ""
+
diff --git a/searx/translations/eo/LC_MESSAGES/messages.po b/searx/translations/eo/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..cd7ffe8
--- /dev/null
+++ b/searx/translations/eo/LC_MESSAGES/messages.po
@@ -0,0 +1,1016 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Jack Stehn <jaxadeo@gmail.com>, 2017
+# juanda097 <juanda097@protonmail.ch>, 2015-2016
+# pizzaiolo, 2016
+# Václav Zouzalík <Vaclav.Zouzalik@seznam.cz>, 2018
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2018-11-22 08:33+0000\n"
+"Last-Translator: Václav Zouzalík <Vaclav.Zouzalik@seznam.cz>\n"
+"Language-Team: Esperanto (http://www.transifex.com/asciimoo/searx/language/eo/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: eo\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "tempolimo"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "escepto de peto"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "neatendita paneo"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "dosieroj"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "ĝenerala"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "muziko"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "sociaj retoj"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "bildoj"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "videoj"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "komputiko"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "novaĵoj"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "mapo"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "scienco"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Nevalidaj agordoj, bonvolu redakti viajn agordojn"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "Nevalidaj agordoj"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "serĉa eraro"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "antaŭ {minutes} minuto(j)"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "antaŭ {hours} horo(j), {minutes} minuto(j)"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Hazardvalora generilo"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Ĝi generas diversajn hazardajn valorojn"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "Statistikaj funkcioj"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "Kalkulas {functions} el la argumentoj"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Motora tempo (s)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Paĝŝarĝo (sekundoj)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Nombro da rezultoj"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "Poentaroj"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "Poentaroj por unu rezulto"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Eraroj"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(MALNOVA)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "Tiu ĉi enigo estis anstataŭigita per"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Neniu resumo atingeblas por tiu ĉi eldonaĵo."
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "Ŝanĝi HTTP-ligilojn al HTTPS, se eblas"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Senfina rulumado"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "Aŭtomate ŝarĝi sekvan paĝon rulumante al la subo de la nuna paĝo"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Malfermalira COI-ŝanĝo"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Eviti pagomurojn per direkto al malfermaliraj versioj de eldonaĵoj, se eblas"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Malfermi rezultligilojn en novaj retumilaj langetoj"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "Oni malfermas rezultojn en la sama langeto defaŭlte. Ĉi tiu aldonaĵo ŝanĝas la kutiman agmanieron por malfermi ligilojn en novaj langetoj/fenestroj. (ĜavoSkripto bezonata)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Serĉi en elektita kategorio"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Serĉi tuj se oni elektas kategorion. Malŝaltu ĝin por elekti plurajn kategoriojn (ĜavoSkripto bezonata)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Montras vian IP-adreson se la serĉofrazo estas \"ip\" kaj vian klientan aplikaĵon se la serĉofrazo enhavas \"user agent\"."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "Forigilo de URL-spuriloj"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "Forviŝi spurajn argumentojn el la ricevita URL"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Vim-ŝajnaj klavkomandoj"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "Tranavigi serĉrezultojn per Vim-ŝajnaj klavkomandoj (ĜavoSkripto bezonata). Premu \"h\" por helptekstaro en ĉef- aŭ rezultpaĝo."
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Paĝo ne trovita"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "Iri al %(search_page)s."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "Serĉopaĝo"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "agordoj"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "pri"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Agordoj"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Defaŭltaj kategorioj"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Serĉolingvo"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Defaŭlta lingvo"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Fasada lingvo"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Aŭtomate kompletigi"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "Prokurila servilo por bildoj"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Ŝaltita"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Malŝaltita"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Metodo"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr " SekuraSerĉo"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Strikta"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Modera"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Neniu"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Temoj"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Koloro"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Blua (defaŭlta)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Viola"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Verda"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Bluverda"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Oranĝa"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Ruĝa"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr " Aktuale uzataj serĉiloj"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr " Motora nomo"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Kategorio"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Permesi"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Bloki"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Tiuj ĉi agordoj estas konservitaj en viaj kuketoj, kio ebligas al ni ne konservi tiujn datumojn pri vi en nia servilo."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Tiuj kuketoj estas nur por via plaĉo, ni ne uzas ilin por spuri vin."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "konservi"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Reagordi al defaŭlto"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "antaŭen"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "Serĉi URL"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Elŝuti rezultojn"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Respondoj"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Sugestoj"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr " antaŭa paĝo"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr " sekva paĝo"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Serĉi..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Statistikoj pri la motoro"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "originala kunteksto"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Fonto"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Ricevanto"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "magnetligilo"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "torentodosiero"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "Alklaku la lupeon por serĉi"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Rezultoj en novaj langetoj"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "Ŝaltita"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Malŝaltita"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "kaŝmemorigita"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Altgradaj agordoj"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Fermi"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Eraro!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Funkciigita per"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "kodumebla metaserĉilo kiu respektas vian privatecon"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "prokurata"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "subtenata"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "nesubtenata"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Ĝenerala"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Motoroj"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Aldonaĵoj"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Respondiloj"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Kuketoj"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "Kiun lingvon vi pli ŝatas por serĉi?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Ŝanĝi lingvon de la fasono"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Trovi aferojn dum tajpado"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "Prokuri bildrezultojn per searx"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "Ŝanĝi kiel formoj estas sendataj, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">sciu pli pri peto-metodoj</a> "
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Filtri enhavon"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Ŝanĝi fasonon de Searx"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Elekti stilon por ĉi tiu temo"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Stilo"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr "Malfermalira COI-solvilo"
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Direkti al malfermaliraj versioj de eldonaĵoj, se eblas (aldonaĵo necesas)"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Fulmoklavo"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "Elekti lingvon"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Tempa intervalo"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "Mezkvanta tempo"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "Maksimuma tempo"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "Tio ĉi estas listo de tuje respondantaj moduloj de Searx."
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Nomo"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Ŝlosilvortoj"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Priskribo"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Ekzemploj"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "Ĉi tio estas listo de kuketoj kaj iliaj valoroj, kiujn searx konservas en via komputilo."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "Kun tiu listo, vi povas kontroli la travideblecon de searx."
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Nomo de kuketo"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Valoro"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "Serĉo-URL kun aktuale konservitaj agordoj"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "Rimarko: Precizigo de propraj agordoj en la serĉo-URL povas malaltigi privatecon per nevola diskonigo de la datumoj al alklikantaj retejoj."
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Serĉrezultoj"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "Provu serĉi:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "Motoroj ne povas trovi rezultojn"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Ligiloj"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Komenci serĉon"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "statistikoj"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "Iam ajn"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "Pasinta tago"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "Pasinta semajno"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "Pasinta monato"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "Pasinta jaro"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "Atentu!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Ŝajnas, ke ĉi tio estas via unua fojo, kiam vi uzas searx."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Informoj!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "nun ne estas ajnaj kuketoj difinitaj."
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Nun ne estas datumoj disponeblaj."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "Motoroj ne povas trovi rezultojn."
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "Bonvolu provi ĝin poste aŭ trovi aliajn searx-instancon."
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Pardonu!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "ni ne trovis rezultojn. Bonvole uzu alian serĉfrazon aŭ serĉu en pliaj kategorioj."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Bonfarite!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Agordoj konservitaj sukcese."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "Ho ve!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Io fuŝiĝis."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "montri aŭdvidaĵojn"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "kaŝi aŭdvidaĵojn"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Akiri bildon"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Vidi fonton"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "montri mapon"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "kaŝi mapon"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "montri detalojn"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "kaŝi detalojn"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Dosiergrandeco"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "Bitokoj"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Nombro da Dosieroj"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "montri videojn"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "kaŝi videojn"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Ŝarĝi pli..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "Nenio trovita"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Subtenas elektitan lingvon"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "Fasado"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "Privateco"
diff --git a/searx/translations/es/LC_MESSAGES/messages.po b/searx/translations/es/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..4c27630
--- /dev/null
+++ b/searx/translations/es/LC_MESSAGES/messages.po
@@ -0,0 +1,1023 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Adam Tauber <asciimoo@gmail.com>, 2015
+# Alejandro León Aznar, 2014
+# Alejandro León Aznar, 2014-2018
+# Carmen Fernández B., 2016
+# juanda097 <juanda097@protonmail.ch>, 2016
+# juanda097 <juanda097@protonmail.ch>, 2017
+# Marc Abonce Seguin, 2016
+# Marc Abonce Seguin, 2018
+# Oscar <ocf@openmailbox.org>, 2015
+# rivera valdez <riveravaldezmail@gmail.com>, 2016
+# wefwefew ewfewfewf <nnnedmz0d@moakt.ws>, 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2018-02-16 05:29+0000\n"
+"Last-Translator: Marc Abonce Seguin\n"
+"Language-Team: Spanish (http://www.transifex.com/asciimoo/searx/language/es/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: es\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "límite de tiempo"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "solicitud de excepción"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "choque inesperado"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "Archivos"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "General"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "Música"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "Medios sociales"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "Imágenes"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "Vídeos"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "Informática"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "Noticias"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "Mapa"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "Ciencia"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Parámetros incorrectos, por favor, cambia tus preferencias"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "Ajustes no válidos"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "error en la búsqueda"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "hace {minutes} minuto(s)"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "hace {hours} hora(s) y {minutes} minuto(s)"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Generador de valores aleaorios"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Generar varios valores aleatorios"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "Funciones de estadística"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "Computar {functions} de parámetros"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Motor de tiempo (seg)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Tiempo de carga (segundos)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Número de resultados"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "Puntuaciones"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "Puntuaciones por resultado"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Errores"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(OBSOLETO)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "Esta entrada la ha sustituido"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "No hay resúmenes disponibles para esta publicación."
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "Cambiar los enlaces HTTP a HTTPS si es posible"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Deslizamiento infinito"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "Cargar automáticamente la siguiente página al deslizarse hasta el final de la página actual"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr ""
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Evitar barreras de pago redireccionando a las versiones de acceso libre de las publicaciones cuando estén disponibles"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Abrir los enlaces resultantes en nuevas pestañas del navegador"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "Los resultados se abren en la misma ventana por defecto. Este plugin sobrescribe el comportamiento por defecto para abrir enlaces en nuevas pestañas / ventanas. (es necesario JavaScript)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Buscar en la categoría seleccionada"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Realizar una búsqueda inmediatamente si se ha seleccionado una categoría. Desactivar para seleccionar varias categorías. (Se requiere JavaScript)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Muestra tu dirección IP si la consulta es \"ip\" y tu Agente de Usuario si la consulta contiene \"agente de usuario\"."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "Eliminador de URL rastreadora"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "Eliminar los argumentos de los rastreadores en la URL devuelta"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Teclas de acceso rápido como-Vim"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "Navegar por los resultados de búsqueda con las teclas de acceso rápido como-Vim (es necesario JavaScript). Pulse la tecla \"h\" en la página principal o en el resultado para obtener ayuda."
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Página no encontrada"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "Ir a %(search_page)s."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "Página de búsqueda"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "preferencias"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "acerca de"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Preferencias"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Categorías predeterminadas"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Idioma de búsqueda"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Idioma por defecto"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Idioma de la interfaz"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Autocompletar"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "Imagen proxy"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Activado"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Desactivado"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Método"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "Búsqueda segura"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Riguroso"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Moderado"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Ninguno"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Temas"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Color"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Azul (predeterminado)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Violeta"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Verde"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Cian"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Naranja"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Rojo"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "Motores de búsqueda actualmente en uso"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Nombre del motor de búsqueda"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Categoría"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Permitir"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Bloquear"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Esta configuración se guarda en sus cookies, lo que nos permite no almacenar dicha información sobre usted."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Estas cookies son para su propia comodidad, no las utilizamos para rastrearle."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "Guardar"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Restablecer configuración por defecto"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "Atrás"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "URL de la búsqueda"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Descargar resultados"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Respuestas"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Sugerencias"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "Página anterior"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "Página siguiente"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Buscar..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Estadísticas del motor de búsqueda"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "contexto original"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Fuente"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Descargador"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "magnet link (enlace sin archivo)"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "archivo torrent"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "Haz clic en la lupa para realizar la búsqueda"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Resultados en nuevas pestañas"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "Activado"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Desactivado"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "en caché"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Ajustes avanzados"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Cerrar"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "¡Error!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Creado por"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "un metabuscador hackable que respeta la privacidad"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "proxied"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "soportado"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "no soportado"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "General"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Motores"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Plugins"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Respondedores"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Cookies"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "¿Qué idioma prefieres para la búsqueda?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Cambiar idioma de la interfaz"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Buscar mientras escribes"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "Filtrado de resultados de imágenes en searx"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "Modifica cómo se envian los formularios <a href=\"http://es.wikipedia.org/wiki/Hypertext_Transfer_Protocol#M.C3.A9todos_de_petici.C3.B3n\" rel=\"external\">más información sobre métodos de peticiones</a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Filtro de contenido"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Cambiar aspecto de searx"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Elige un estilo para este tema"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Estilo"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Redireccionar a versiones de acceso abierto de las publicaciones cuando estén disponibles (se requiere plugin)"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Atajo"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "Idioma elegido"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Rango de tiempo"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "Tiempo promedio"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "Tiempo máximo"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "Esta es la lista de los módulos de respuesta inmediata de searx."
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Nombre"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Plabras clave"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Descripción"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Ejemplos"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "Esta es la lista de cookies y sus valores que searx está almacenando en tu ordenador."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "Con esa lista puedes valorar la transparencia de searx."
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Nombre de la cookie"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Valor"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "Buscar URL de las preferencias guardadas actualmente"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "Nota: especificar configuraciones personalizadas en la URL de búsqueda puede reducir la privacidad al filtrar datos a los sitios de resultados en los que se ha hecho clic."
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Buscar"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "Intenta buscar:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "Los motores no pueden obtener resultados"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Enlaces"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Comenzar búsqueda"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "estadísitcas"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "En cualquier momento"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "Último día"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "Última semana"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "Último mes"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "Último año"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "¡Atención!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Parece que estás usando searx por primera vez."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "¡Información!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "No existen cookies definidas actualmente."
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Actualmente no hay datos disponibles."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "Los motores no pueden obtener resultados."
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "Por favor, inténtelo de nuevo más tarde o busque otra instancia de searx."
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "¡Lo siento!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "No encontramos nada. Por favor, formule su búsqueda de otra forma o busque en más categorías."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "¡Bien hecho!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Configuración guardada correctamente."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "¡Mecachis!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Algo ha ido mal."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "mostrar multimedia"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "ocultar multimedia"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Obtener imagen"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Ver fuente"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "mostrar mapa"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "ocultar mapa"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "ver detalles"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "ocultar detalles"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Tamaño de archivo"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "Bytes"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "KiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Número de archivos"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "mostrar vídeo"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "ocultar video"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Cargar más"
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "Ningún artículo encontrado"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Soporta el idioma seleccionado"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "Interfaz de usuario"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "Privacidad"
diff --git a/searx/translations/eu/LC_MESSAGES/messages.po b/searx/translations/eu/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..b6fa194
--- /dev/null
+++ b/searx/translations/eu/LC_MESSAGES/messages.po
@@ -0,0 +1,1015 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# beriain <beriain@bitmessage.ch>, 2018
+# beriain <beriain@bitmessage.ch>, 2018
+# Txopi <txopi@ikusimakusi.eus>, 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2018-11-06 16:39+0000\n"
+"Last-Translator: beriain <beriain@bitmessage.ch>\n"
+"Language-Team: Basque (http://www.transifex.com/asciimoo/searx/language/eu/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: eu\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "denbora agortzea"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "salbuespena eskaeran"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "ustekabeko gelditzea"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "fitxategiak"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "orokorra"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "musika"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "multimedia soziala"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "irudiak"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "bideoak"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "it"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "berriak"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "mapa"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "zientzia"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Ezarpen ez baliodunak, mesedez editatu zure hobespenak"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "Ezarpen ez baliodunak"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "bilaketa akatsa"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "duela {minutes} minutu"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "duela {hours} ordu eta {minutes} minutu"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Ausazko balio sortzailea"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Ausazko balio ezberdinak sortu"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "Funtzio estatistikoak"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "Parametroen {functions} zenbatu"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Bilatzailearen denbora (seg)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Orri kargak (seg)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Emaitza kopurua"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "Balorazioak"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "Balorazioak emaitza bakoitzeko"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Erroreak"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(ZAHARKITUA)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "Sarrera hau hurrengoarekin ordezkatu da"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Ez dago abstrakturik eskuragarri argitalpen honetarako."
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "HTTP loturak HTTPS bihurtu ahal denean"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Korritze amaigabea"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "Hurrengo orria automatikoki kargatu uneko orriaren behekaldera mugitzerakoan"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Berridatzi Open Access DOI"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Ordainketa hormak sahiestu argitalpenen sartze-askeko bertsioetara berbidaliz ahal denean"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Emaitzen estekak nabigatzailearen fitxa berrietan ireki"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "Emaitzak leiho berdinean irekitzen dira lehenetsi bezala. Plugin honek lehenetsitako jokabidea aldatzen du estekak fitxa/leiho berrietan irekitzeko. (JavaScript behar du)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Bilatu kategoria hautatzerakoan"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Bilaketa egin kategoria hautatu bezain laster. Ezgaitu ezazu hainbat kategoria hautatu ahal izateko. (JavaScript behar du)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Zure IPa erakutsi bilatutakoa \"ip\" bada eta zure user agenta bilatutakoa \"user agent\" bada."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "URL aztarnariak kendu"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "Aztarnarien argumentuak kendu itzulitako URLtik"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Vim antzeko laster-teklak"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "Emaitzetan zehar Vim bezalako tekla azkarrekin nabigatu (JavaScript behar du). Sakatu \"h\" tekla orri nagusian edo emaitzen orrian laguntza ikusteko."
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Orria ez da aurkitu"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "%(search_page)s(e)ra joan."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "bilaketa orria"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "hobespenak"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "honi buruz"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Hobespenak"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Lehenetsitako kategoriak"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Bilaketaren hizkuntza"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Lehenetsitako hizkuntza"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Interfazearen hizkuntza"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Osatze automatikoa"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "Irudietarako proxya"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Gaituta"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Desgaituta"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Metodoa"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "Bilaketa segurua"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Zorrotza"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Moderatua"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Bat ere ez"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Itxurak"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Kolorea"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Urdina (lehenetsia)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Bioleta"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Berdea"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Zian"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Laranja"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Gorria"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "Erabiliak izaten ari diren bilatzaileak"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Bilatzailearen izena"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Kategoria"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Baimendu"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Blokeatu"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Ezarpen hauek zure cookietan gurdetzen dira, honek zuri buruzko informaziorik ez gordetzea baimentzen digu."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Cookie hauek zure onurarako besterik ez dira, ez ditugu zure jarraipenik egiteko erabiltzen."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "gorde"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Berrezarri lehenetsiak"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "atzera"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "Bilaketa URLa"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Emaitzak deskargatu"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Erantzunak"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Iradokizunak"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "aurreko orrialdea"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "hurrengo orrialdea"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Bilatu..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Bilatzaileen estatistikak"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "jatorrizko testuingurua"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Ereilea"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Izaina"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "magnet lotura"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "torrent fitxategia"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "Lupan sakatu bilaketa egiteko"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Emaitzak fitxa berrietan"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "Piztuta"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Itzalita"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "cacheatuta"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Ezarpen aurreratuak"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Itxi"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Errorea!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Honek bultzatua"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "pribatutasun-errespetatzaile, metabilaketa motor hackeagarri bat"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "proxyatuta"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "onartua"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "ez onartua"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Orokorra"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Bilatzaileak"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Pluginak"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Erantzun emaileak"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Cookieak"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "Zein hizkuntzan egin nahi duzu bilaketa?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Interfazearen hizkuntza aldatu"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Gauzak aurkitu idatzi bitartean"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "Irudien emaitzak searx bitartez proxyatu"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "Aldatu inprimakiak nola bidaltzen diren, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">ikasi gehiago eskaera metodoen inguruan</a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Edukia iragazi"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Searxen diseinua aldatu"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Gai honetarako estiloa hautatu"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Estiloa"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr "Open Access DOI ebatzi"
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Argitalpenen sartze-askeko bertsioetara berbidali ahal denean (plugina behar du)"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Lasterbidea"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "Hautatutako hizkuntza"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Denbora tartea"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr " Batezbesteko denbora"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "Gehienezko denbora"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "Hau da searxen berehalako erantzunen moduluen zerrenda."
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Izena"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Gako-hitzak"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Deskripzioa"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Adibideak"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "Hau searxek zure ordenagailuan gordetzen ari den cookien eta haien balioen zerrenda bat da."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "Zerrenda horrekin, searxen gardentasuna balioztatu dezakezu."
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Cookiearen izena"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Balioa"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "Une honetan gordetako hobespenen bilaketa URLa"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "Oharra: bilaketa URLan ezarpen pertsonalizatuak zehazteak pribatutasuna txikiagotu dezake klikatutako erantzun guneetara datuak emanez"
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Bilaketaren emaitzak"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "Saiatu hau bilatzen:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "Bilatzaileek ezin dute emaitzik lortu"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Estekak"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Bilaketa hasi"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "estatistikak"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "Edonoiz"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "Azken eguna"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "Azken astea"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "Azken hilabetea"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "Azken urtea"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "Kasu!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Searx lehen aldiz erabiltzen ari zarela ematen du."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Informazioa!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "une honetan, ez dago cookierik definitutik."
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Une honetan ez dago daturik eskuragarri."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "Bilatzaileek ezin dute emaitzik lortu."
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "Mesedez, saiatu berriz beranduago edo bila ezazu beste searx instantzia bat."
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Barkatu!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "ez dugu emaitzik aurkitu. Mesedez beste kontsulta bat egin edo bilatu kategoria gehiagotan."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Ondo egina!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Ezarpenak ongi gorde dira."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "Hara!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Zerbait gaizki joan da."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "media erakutsi"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "media ezkutatu"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Irudia eskuratu"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Iturria ikusi"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "mapa erakutsi"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "mapa ezkutatu"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "xehetasunak erakutsi"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "xehetasunak ezkutatu"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Fitxategi neurria"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "Byteak"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Fitxategi kopurua"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "erakutsi bideoa"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "ezkutatu bideoa"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Kargatu gehiago..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "Ez da elementurik aurkitu"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Hautatutako hizkuntza onartzen du"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "Erabiltzailearen interfazea"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "Pribatutasuna"
diff --git a/searx/translations/fa_IR/LC_MESSAGES/messages.po b/searx/translations/fa_IR/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..0e568e1
--- /dev/null
+++ b/searx/translations/fa_IR/LC_MESSAGES/messages.po
@@ -0,0 +1,1015 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Aurora, 2018
+# Jim <inactive+Jim11@transifex.com>, 2017
+# Mostafa Ahangarha <ahangarha@gmail.com>, 2018
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2018-04-16 16:41+0000\n"
+"Last-Translator: Aurora\n"
+"Language-Team: Persian (Iran) (http://www.transifex.com/asciimoo/searx/language/fa_IR/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: fa_IR\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "پایان زمان<br>"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "خطا در درخواست"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "ایست ناگهانی"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "فایل ها<br>"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "فراگیر"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "موسیقی"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "رسانه اجتماعی"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "تصاویر<br>"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "ویدیو ها<br>"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "فناوری اطلاعات"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "اخبار"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "نقشه"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "دانش<br>"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "تنظیمات نادرست است، لطفا اولویت‌های جستجو را تغییر دهید"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "تنظیمات اشتباه"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "خطای جستجو"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "{minutes} دقیقه پیش"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "{hours} ساعت و {minutes} دقیقه پیش"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "ایجاد کننده ی مقدار تصادفی"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "ایجاد مقادیر تصادفی متفاوت"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "توابع آماری"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "پردازش {عملکرد های} نشانوند ها<br>"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "زمان موتور(ثانیه)<br>"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "زمان بارگذاری صفحه (ثانیه)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "تعداد نتایج"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "امتیازات<br>"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "امتیازات بر نتیجه<br>"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "خطاها"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(OBSOLETE)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "این ورودی معلق شده است توسط"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "هیچ چکید ای برای این نشریه در دسترس نیست.<br>"
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "تغییر پیوند های HTTP به HTTPS در صورت امکان"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "پایین رفتن بی‌پایان"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "بارگذاری خودکار صفحه بعد در صورت پیمایش تا پایین صفحه کنونی"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "بازنویسی Open Access DOI<br>"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "امتناع از منابع غیر رایگان با تغییر مسیر به نسخه ی رایگان نشریات اگر در دسترس باشد<br>"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "باز کردن لینک های نتیجه در برگه‌ی جدید مرورگر"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "به طور پیش‌فرض، نتایج در پنجره ی کنونی باز می‌شوند. این افزونه، رفتار پیش‌فرض را برای بازشدن پیوند در پنجره/برگه جدید تغییر می‌دهد. (نیازمند جاوااسکریپت)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "جستجو به محض انتخاب یک دسته<br>"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "جستجو به محض انتخاب یک دسته. برای انتخاب چند دسته این گزینه را غیرفعال کنید. (نیازمند جاواسکریپت)<br>"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "اگر آی پی شما در صورت جستجو برای 'ip' و نشان دادن عامل کاربر در صورت جستجو برای 'user agent'.<br>"
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "از بین برنده ی آدرس ردیاب ها<br>"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "حذف نشانوند های ردیاب ها از آدرس برگشتی"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "کلیدهای میانبر شبیه Vim<br>"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "جابجایی در نتایج با کلیدهای میان‌بر مشابه Vim (نیازمند جاوااسکریپت). در صفحه اصلی و یا صفحه نتیجه، دکمه h را برای نمایش راهنما بفشارید."
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "صفحه پیدا نشد"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "برو به%(search_page)s."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "صفحه جستجو<br>"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "تنظیمات<br>"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "درباره<br>"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "تنظیمات<br>"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "دسته‌بندی های پیش‌فرض"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "زبان جستجو"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "زبان پیش‌فرض"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "زبان رابط کاربری"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "تکمیل خودکار<br>"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "پراکسی تصویر<br>"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "فعال<br>"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "غیرفعال"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "روش<br>"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "جستجوی امن"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "سخت گیر<br>"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "متوسط<br>"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "هیچ<br>"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "تم ها<br>"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "رنگ"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "آبی (پیش‌فرض)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "بنفش"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "سبز<br>"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "فیروزه‌ای"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "نارنجی"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "قرمز"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "موتورهای جستجوی در حال استفاده"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "نام موتور"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "دسته"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "اجازه"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "انسداد<br>"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "این تنظیمات در کوکی های شما ذخیره شده اند، این به ما اجازه می دهد این اطلاعات را درباره شما ذخیره نکنیم.<br>"
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "این کوکی ها برای راحتی شماست، ما از این کوکی برای ردیابی شما استفاده نمیکنیم.<br>"
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "ذخیره"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "بازنشانی پیشفرض ها<br>"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "عقب<br>"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "آدرس جستجو<br>"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "نتایج دانلود<br>"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "پاسخ ها<br>"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "پیشنهادات"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "صفحه پیش"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "صفحه بعد"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "جستجو برای …"
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "آمار موتور<br>"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "متن اصلی<br>"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "سیدر<br>"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "لیچر<br>"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "لینک مگنت<br>"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "فایل تورنت<br>"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "برای اجرای جستجو روی ذره بین کلیک کنید<br>"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "نتایج در برگه جدید"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "روشن<br>"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "خاموش<br>"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "ذخیره شده<br>"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "تنظیمات پیشرفته<br>"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "بستن<br>"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "خطا!<br>"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "قدرت گرفته از<br>"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "یک ابر موتور جستجوی حافظ حریم شخصی"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "پراکسی شده<br>"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "پشتیبانی شده<br>"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "پشتیبانی نشده<br>"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "کلی<br>"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "موتور ها<br>"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "افزونه ها"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "پاسخگو ها<br>"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "کوکی ها<br>"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "چه زبانی را برای جستجو ترجیح می‌دهید؟"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "تغییر زبان رابط کاربری"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "یافتن مطالب حین نوشتن"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "پراکسی کردن نتایج تصویری از طریق searx<br>"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "چگونگی ثبت فرم ها را تغییر دهید، درباره ی متود های درخواست بیشتر بدانید"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "فیلتر کردن محتوا"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "رابط کاربری searx را تغییر دهید<br>"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "سبک این پوسته را انتخاب کنید"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "سبک"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr "حل کننده ی Open Access DOI<br>"
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "هدایت به نسخه رایگان نشریات اگر در دسترس باشد(نیازمند به افزونه)<br>"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "میانبر<br>"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "زبان انتخابی<br>"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "بازه ی زمانی<br>"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "زمان میانگین"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "حداکثر زمان"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "این، فهرست ماژول‌های پاسخ بلادرنگ searx است."
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "نام"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "کلیدواژه ها<br>"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "شرح<br>"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "مثال ها<br>"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "این، لیست کوکی‌ها و مقادیری است که searx روی دستگاه شما ذخیره می‌کند."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "با آن لیست، می‌توانید شفافیت searx را ارزیابی کنید."
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "نام کوکی<br>"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "مقدار<br>"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "آدرس جستجو بر اساس تنظیمات ذخیره شده<br>"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "هشدار: تعیین تنظیمات شخصی در آدرس جستجو میتواند حریم شخصی شما را به خطر بیاندازد با درز کردن اطلاعات به سایت های نتایج انتخاب شده.<br>"
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "نتایج جستجو<br>"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "تلاش کنید برای جستجوی:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "موتور ها قادر به دریافت نتایج نیستند<br>"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "لینک ها<br>"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "شروع جستجو<br>"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "آمار<br>"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "هر زمانی<br>"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "روز گذشته"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "هفته گذشته"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "ماه گذشته"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "سال گذشته"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "بالاخره!<br>"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "به نظر می‌رسد اولین باری است که از searx استفاده می‌کنید."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "اطلاعات!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "در حال حاضر کوکی‌ای تعریف نشده است."
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "در حال حاضر هیچ داده‌ای در دسترس نیست."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "موتورها قادر به دریافت نتایج نیستند."
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "لطفا بعدا دوباره تلاش کنید و یا به دنبال نمونه‌ای دیگری از searx بگردید."
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "ببخشید!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "چیزی پیدا نشد. لطفا جستار دیگری را امتحان و یا در دسته‌ های بیشتری جستجو کنید."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "آفرین!<br>"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "تنظیمات با موفقیت ذخیره شد!<br>"
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "ای وای! خراب شد!<br>"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "مشکلی رخ داد."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "نمایش رسانه<br>"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "پنهان سازی رسانه<br>"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "دریافت تصویر"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "نمایش منبع"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "نمایش نقشه"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "پنهان‌سازی نقشه"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "نمایش جزئیات"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "پنهان‌سازی جزئیات"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "اندازه فایل<br>"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "بایت"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "کیلوبایت"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "مگابایت"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "گیگابایت"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "ترابایت"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "تعداد فایل ها"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "نمایش ویدئو"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "پنهان‌سازی ویدئو"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "بیشتر…<br>"
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "چیزی پیدا نشد"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "زبان انتخاب شده را پشتیبانی می‌کند"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "رابط کاربری"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "حریم خصوصی"
diff --git a/searx/translations/fi/LC_MESSAGES/messages.po b/searx/translations/fi/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..dbec358
--- /dev/null
+++ b/searx/translations/fi/LC_MESSAGES/messages.po
@@ -0,0 +1,1013 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Jiri Grönroos <jiri.gronroos@iki.fi>, 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2017-11-13 07:36+0000\n"
+"Last-Translator: Jiri Grönroos <jiri.gronroos@iki.fi>\n"
+"Language-Team: Finnish (http://www.transifex.com/asciimoo/searx/language/fi/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: fi\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "aikakatkaisu"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "pyyntöpoikkeus"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "odottamaton kaatuminen"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "tiedostot"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "yleiset"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "musiikki"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "sosiaalinen media"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "kuvat"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "videot"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "it"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "uutiset"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "kartta"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "tiede"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Virheelliset asetukset, muokkaa siis asetuksia"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "Virheelliset asetukset"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "hakuvirhe"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "{minutes} min sitten"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "{hours} t, {minutes} min sitten"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Satunnaisluvun generaattori"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Generoi satunnaislukuja"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "Tilastolliset funktiot"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "Laske argumenttien {functions}"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Hakukoneen aika (s)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Sivun lataus (s)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Tulosten määrä"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "Pisteet"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "Pisteet per tulos"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Virheet"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(VANHENTUNUT)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "Tämän kohdan on korvannut"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Tästä julkaisusta ei ole yhteenvetoa."
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "Muuta HTTP-linkit HTTPS-muotoon jos mahdollista"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Loputon vieritys"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "Lataa automaattisesti seuraava sivu, kun nykyisen sivun loppu saavutetaan"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Open Access DOI -uudelleenkirjoitus"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Vältä maksumuureja ohjaamalla julkaisujen avoimiin versioihin jos mahdollista"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Avaa tulokset uusiin välilehtiin"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "Tulokset avataan oletuksena samaan ikkunaan. Tämä lisäosa korvaa oletustoiminnan avaamalla linkit uusiin välilehtiin tai ikkunoihin. (JavaScript vaaditaan)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Etsi valitsemalla luokka"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Suorita haku välittömästi, jos luokka valitaan. Poista käytöstä valitaksesi useita luokkia. (JavaScript vaaditaan)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Näyttää IP-osoitteesi jos hakuehtosi on \"ip\" ja selaimen tunnistetiedot jos hakuehtosi sisältää sanat \"user agent\"."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "Seurantapalvelimen osoitteen poistaja"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "Poista seurantapalvelinten argumentit palautetusta osoitteesta"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Vim-kaltaiset pikanäppäimet"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "Liiku hakutulossivuilla Vim-kaltaisin näppäinkomennoin (JavaScript vaaditaan). Paina \"h\" pää- tai hakutulossivulla nähdäksesi ohjeet."
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Sivua ei löytynyt"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "Siirry %(search_page)s."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "hakusivulle"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "asetukset"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "tietoja"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Asetukset"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Oletusluokat"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Haun kieli"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Oletuskieli"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Käyttöliittymän kieli"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Automaattinen täydentäminen"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "Kuvat välityspalvelimen kautta"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Käytössä"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Ei käytössä"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Tapa"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "SafeSearch"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Tiukka"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Keskitaso"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Ei mitään"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Teemat"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Väri"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Sininen (oletus)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Violetti"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Vihreä"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Syaani"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Oranssi"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Punainen"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "Nyt käytetyt hakukoneet"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Hakukoneen nimi"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Luokka"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Salli"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Estä"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Nämä asetukset tallennetaan evästeisiisi. Näin Searxin ei tarvitse tallentaa sinuun liittyviä henkilökohtaisia tietoja."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Kyseiset evästeet palvelevat ainoastaan sinua, eikä niitä käytetä seuraamiseesi."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "Tallenna"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Palauta oletukset"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "Takaisin"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "Haun osoite"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Lataa tulokset"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Vastaukset"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Ehdotukset"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "edellinen sivu"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "seuraava sivu"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Etsi..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Hakukoneen tilastot"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "alkuperäinen konteksti"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Lähettäjä"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Lataaja"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "magnet-linkki"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "torrent-tiedosto"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "Napsauta suurennuslasia suorittaaksesi haun"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Tulokset uusiin välilehtiin"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "Päällä"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Pois"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "välimuistissa"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Lisäasetukset"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Sulje"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Virhe!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Taustavoimana"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "yksityisyyttä kunnioittava, muokattava metahakukone"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "välityspalvelimella"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "tuettu"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "ei tuettu"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Yleiset"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Hakukoneet"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Lisäosat"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Vastaajat"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Evästeet"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "Millä kielellä haluat etsiä ensisijaisesti?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Vaihda asettelun kieltä"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Löydä tuloksia kirjoittaessasi"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "Kuvatulokset välitetään searxin välityspalvelimen kautta"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "Muuta tapaa, miten lomaketiedot välitetään. <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">Lisätietoja eri välitystavoista.</a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Suodata hakutulosten sisältöä"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Muuta searxin asettelua"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Valitse tyyli tälle teemalle"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Tyyli"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr "Open Access DOI -selvitin"
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Uudelleenohjaa julkaisujen open-access-versioihin kun mahdollista (vaatii liitännäisen)"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Oikoreitti"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "Valittu kieli"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Aikaväli"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "Keskimääräinen\naika"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "Enimmäisaika"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "Tämä on luettelo searxin vastaajamoduuleista."
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Nimi"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Avainsanat"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Kuvaus"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Esimerkit"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "Ohessa on lista evästeistä ja niiden arvoista, joita searx tallentaa tietokoneellesi."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "Tämän luettelon avulla voit arvioida searxin läpinäkyvyyden."
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Evästeen nimi"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Arvo"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "Nykyisten asetusten hakuosoite"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "Huomio: mukautettujen asetusten hakuosoite voi heikentää yksityisyyttä vuotamalla tietoja niille sivustoille, joihin kohdistuvia tuloksia napsautetaan."
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Hakutulokset"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "Yritä etsiä:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "Moottorit eivät voi palauttaa tuloksia"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Linkit"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Aloita haku"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "tilastot"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "Milloin tahansa"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "Viimeinen päivä"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "Viimeinen viikko"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "Viimeinen kuukausi"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "Viimeinen vuosi"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "Pää pystyyn!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Vaikuttaa siltä, että käytät searxia ensimmäistä kertaa."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Huomio!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "Evästeitä ei ole määritetty tällä hetkellä."
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Tietoja ei ole juuri nyt saatavilla."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "Moottorit eivät voi palauttaa tuloksia."
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "Yritä myöhemmin uudelleen tai kokeile toista searx-instanssia."
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Pahoittelut!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "Yhtäkään hakuasi vastaavaa tulosta ei löytynyt. Etsi käyttäen eri hakuehtoja tai ulota hakusi nykyistä useampiin eri luokkiin."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Hyvin tehty!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Asetukset tallennettiin onnistuneesti"
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "Voi ei!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Jokin meni pieleen."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "näytä media"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "piilota media"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Avaa kuva"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Näytä lähde"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "näytä kartta"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "piilota kartta"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "näytä tiedot"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "piilota tiedot"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Tiedostokoko"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "Tavua"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Tiedostojen määrä"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "näytä video"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "piilota video"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Lataa lisää..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "Tietuetta ei löytynyt"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Tukee valittua kieltä"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "Käyttöliittymä"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "Yksityisyys"
diff --git a/searx/translations/fil/LC_MESSAGES/messages.po b/searx/translations/fil/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..4600619
--- /dev/null
+++ b/searx/translations/fil/LC_MESSAGES/messages.po
@@ -0,0 +1,1014 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# gr01d, 2018
+# gr01d, 2018
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2018-02-18 04:45+0000\n"
+"Last-Translator: gr01d\n"
+"Language-Team: Filipino (http://www.transifex.com/asciimoo/searx/language/fil/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: fil\n"
+"Plural-Forms: nplurals=2; plural=(n == 1 || n==2 || n==3) || (n % 10 != 4 || n % 10 != 6 || n % 10 != 9);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "timeout"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "request exception"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "hindi inaasahan na crash"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "file"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "pangkalahatan"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "musika"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "social media"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "larawan"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "bidyo"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "it"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "balita"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "mapa"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "agham"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Maling settings, paki ayos ang preferences"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "Maling settings"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "nagkaproblema sa paghahanap"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "{minutes} na minuto ang nakalipas"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "{hours} oras at {minutes} na minto ang nakalipas"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Random value generator"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Generate different random values"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "Estatistika ng mga tungkulin"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "Tuusin ang {functions} ng pangangatuwiran"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Oras ng engine (segundo)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Oras ng pagkarga ng pahina (segundo)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Bilang ng resulta"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "Iskor"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "Iskor ng bawat resulta"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Kamalian"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(LUMA)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "Ang tala na ito ay ipinagpaliban ng"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Walang nakita na abstract para sa pahahayag na ito."
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "Palitan ang HTTP links patungo sa HTTPS hanggat maaari"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Walang hanggan na pag-scroll"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "Awtomatiko na ikarga ang sumunod na pahina kapag nakarating na sa dulo ng kasalukuyang pahina"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Open Access DOI rewrite"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Iwasan ang paywall sa pag-redirect sa open-access na bersyon ng pahahayagan kapagmakukuha"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Buksan ang resulta sa panibagong browser tab"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "Ang mga resulta ang bubuksan sa kasalukuyan window, ito ay ang default. Ang plugin na ito ay babaliwalain ang default na kilos sa pagbukas ng panibagong link sa bagong tab/window."
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Maghanap kapag nakapili ng uri"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Gawin ang paghahanap hanggat maaari kapag nakapili ng uri. Alisin kapag nakapili ng maraming uri. (Nangagailangan ng JavaScript)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Ipapakita ang iyong IP kapag ang tanong ay \"ip\" at ang iyong user agent kapag ang sa tanong ay naglalaman ng \"user agent\"."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "Alisin ang URL tracker"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "Alisin ang tracker sa ibabalik na URL"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Vim-like hotkeys"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "Maglakbay sa resulta ng paghahanap gamit ang 'Vim-like hotkeys' (Nangagailangan ito ng JavaScript). Pindutin ang \"h\" na pindutan sa panguna o ang pahina ng resulta para makahingi ng tulong."
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Hindi natagpuan ang pahina"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "Pumunta sa %(search_page)s."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "ang pahina ng paghahanap"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "preferences"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "hinggil"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Preferences"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Ang mga default na uri"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Ang wika ng paghahanap"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Default na wika"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Ang wika ng Interface"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Autocomplete"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "Proxy ng larawan"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Paganahin"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Hindi paganahin"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Paraan"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "Ligtas na Paghahanap"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Mahigpit"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Banayad"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Wala"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Tema"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Kulay"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Asul (default)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Byoleta"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Berde"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Siyano"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Kulay-dalandan"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Pula"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "Ang ginagamit natin na search engines"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Pangalan ng engine"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Uri"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Payagan"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Harangan"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Ang settings ay nakalagay sa cookies upang hindi kami makakuha ng datos mula sa iyo."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Hindi namin ginagamit ang cookies para i-track ka, ito ay para maging maayos ang paggamit mo."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "i-save"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "I-reset ang defaults"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "bumalik"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "URL ng Search"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "I-download ang mga resulta"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Mga sagot"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Mga mungkahi"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "bumalik sa nakaraang pahina"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "pumanhik sa sumunod na pahina"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Maghanap ng..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Engine stats"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "orihinal na nilalaman"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Seeder"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Leecher"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "i-magnet ang link"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "torrent file"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "Pindutin ang magnifier para maghanap"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Ang resulta ay na sa bagong tab"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "Bukas"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Sara"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "cached"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Advanced settings"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Isara"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Kamalian!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Pinapatakbo ng"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "isang gumagalang sa pagiging pribado, hackable na metasearch engine"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "proxied"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "suportado"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "hindi suportado"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Pangkalahatan"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Engines"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Plugins"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Mga pangsagot"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Cookies"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "Ano ang gusto mong wika sa paghahanap?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Ibahin ang wika ng layout"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Maghanap habang ikaw ang nag-tytype"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "I-Proxy ang resulta ng mga larawan papunta sa searx"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "Ibahin kung paano ang mga forms are pinapasa, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">alamin ang iba pang mga request methods</a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Salain ang mga nilalaman"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Ibahin ang layout ng searx"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Pumili ng estilo para sa tema na ito"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Estilo"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr "Open Access DOI resolver"
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Redirect to open-access versions of publications when available (plugin required)"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Shortcut"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "Piniling wika"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Agwat ng oras"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "Gitnang oras"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "Ang max na oras"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "Ito ang listahan ng instant answering modules ni searx."
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Pangalan"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Mga keyword"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Paglalarawan"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Mga halimbawa"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "Ito ang listahan ng cookies at ang kanilang value na inilagay ni searx sa iyon kompyuter."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "Dahil sa listahan na iyon, maaari mong makita ang pagiging transparent ni searx."
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Pangalan ng cookie"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Value"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "Search URL ng kasalukuyan na naka-save sa preferences"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "Tandaan: kapag gumawa ng sariling settings sa search URL mababawasan ang pagiging pribado dahil magkakaroon ng butas sa datos dahil sa pag-pindot sa resulta na sites."
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Mga resulta ng paghahanap"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "Subukan maghanap ng:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "Hindi makuha ng engines ang mga resulta"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Links"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Simulan ang paghahanap"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "stats"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "Kahit anong oras"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "Nakaraang araw"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "Nakaraang linggo"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "Nakaraang buwan"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "Nakaraang taon"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "Alerto!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Mukhang ito ang unang paggamit mo ng searx."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Impormasyon!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "wala pa sa ngayon na cookies na naka define."
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Wala pa sa ngayon na makitang datos."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "Hindi makuha ng engines ang mga resulta."
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "Paki subukan muli o gumamit ng ibang instance ng searx."
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Paumanhin!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "wala kaming nakita na resulta. Pakiusap na ibahin ang tanong o maghanap sa maraming uri."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Mahusay!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Tagumpay sa pag-save ng settings."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "Naku!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Nagkaproblema."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "ipakita ang media"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "itago ang media"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Kuhanin ang larawan"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Tignan ang pinagkuhanan"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "ipakita ang mapa"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "itago ang mapa"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "ipakita ang nilalaman"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "itago ang nilalaman"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Filesize"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "Bytes"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Bilang ng mga files"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "ipakita ang bidyo"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "itago ang bidyo"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Maghanap pa..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "Walang nakita na aytem"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Suportado ang pinili na wika"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "Ang User interface"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "Pagiging Pribado"
diff --git a/searx/translations/fr/LC_MESSAGES/messages.po b/searx/translations/fr/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..4c076dd
--- /dev/null
+++ b/searx/translations/fr/LC_MESSAGES/messages.po
@@ -0,0 +1,1020 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Alexandre Flament <alex@al-f.net>, 2017-2018
+# Benjamin Sonntag <benjamin@sonntag.fr>, 2014
+# Cqoicebordel <david.barouh@wanadoo.fr>, 2014
+# Cqoicebordel <david.barouh@wanadoo.fr>, 2014-2017
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
+# Noémi Ványi <sitbackandwait@gmail.com>, 2017
+# rike, 2014
+# rike, 2014
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2018-04-03 08:18+0000\n"
+"Last-Translator: Alexandre Flament <alex@al-f.net>\n"
+"Language-Team: French (http://www.transifex.com/asciimoo/searx/language/fr/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: fr\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "délai dépassé"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "erreur de requête"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "crash inattendu"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "fichiers"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "général"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "musique"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "réseaux sociaux"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "images"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "vidéos"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "informatique"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "actualités"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "carte"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "science"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Paramètres non valides, veuillez éditer vos préférences"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "Paramètres non valides"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "erreur de recherche"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "il y a {minutes} minute(s)"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "il y a {hours} heure(s), {minutes} minute(s)"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Générateur de valeur aléatoire"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Crée des valeurs aléatoires différentes"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "Fonctions statistiques"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "Calcule les {functions} des arguments"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Temps du moteur (sec)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Chargement de la page (sec)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Nombre de résultats"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "Score"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "Score par résultat"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Erreur"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{titre}&nbsp;(OBSOLETE)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "Cet item a été remplacé par"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Pas de résumé disponible pour cette publication."
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "Réécrire les liens HTTP en HTTPS si possible"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Défilement infini"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "Charge automatiquement la page suivante quand vous arriver en bas de la page"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Utiliser Open Access DOI"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Contourne les verrous payants de certaines publications scientifiques en redirigeant vers la version ouverte de ces papiers si elle est disponible."
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Ouvrir les liens de résultats dans un nouvel onglet"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "Les résultats sont ouvert dans la même fenêtre par défaut. Cette extension change le comportement par défaut pour ouvrir les liens dans des nouveaux onglets ou fenêtres (Javascript est nécessaire)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Lancer la recherche lors du choix d'une catégorie"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Exécute la recherche immédiatement si une catégorie est sélectionnée. Désactiver pour sélectionner plusieurs catégories (nécessite JavaScript)."
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Affiche votre adresse IP si la requête est \"ip\", et affiche votre user-agent si la requete contient \"user agent\"."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "Nettoyeur d'URL de suivis"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "Retire les arguments utilisés pour vous pister des URL retournées"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Raccourcis comme Vim"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "Parcourez les résultats de recherche avec des raccourcis clavier similaires à Vim (Javascript est nécessaire. Appuyez sur \"h\" dans la fenêtre principale de résultats pour afficher de l'aide."
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Page non trouvée"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "Aller à %(search_page)s."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "la page d'accueil"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "préférences"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "À propos"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Préférences"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Catégories par défaut"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Langue de recherche"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Langue par défaut"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Langue de l'interface"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Complétion automatique"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "Proxy d'images"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Activé"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Désactivé"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Méthode"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "Recherche sécurisée"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Stricte"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Modérée"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Pas du tout"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Thème"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Couleur"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Bleu (défaut)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Violet"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Vert"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Cyan"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Orange"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Rouge"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "Moteurs de recherche actuellement utilisés"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Nom du moteur"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Catégorie"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Autoriser"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Bloquer"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Ces paramètres sont stockés dans vos cookies ; ceci nous permet de ne pas collecter vos données."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Ces cookies existent pour votre confort d'utilisation, nous ne les utilisons pas pour vous espionner."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "enregistrer"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Remettre les valeurs par défaut"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "retour"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "URL de recherche"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Télécharger les résultats"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Réponses"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Suggestions"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "page précédente"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "page suivante"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Rechercher..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Statistiques des moteurs"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "contexte original"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Sources"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Téléchargeurs"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "lien magnet"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "fichier torrent"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "Cliquez sur la loupe pour effectuer une recherche"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Résultats dans de nouveaux onglets"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "On"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Off"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "en cache"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Paramètres avancés"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Fermer"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Erreur !"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Powered by"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "un meta-moteur de recherche hackable et respectueux de la vie privée"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "proxifié"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "pris en charge"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "non pris en charge"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Général"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Moteurs"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Plugins"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Réponses instantanées"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Cookies"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "Dans quelle langue préférez-vous effectuer la recherche ?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Changer la langue d'affichage"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Chercher au fil de la saisie"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "Proxifier les images de résultats à travers searx"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "Permet de choisir comment la recherche est envoyée, <a href=\"https://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol#M.C3.A9thodes\" rel=\"external\">en savoir plus sur les méthodes HTTP</a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Filtrer le contenu"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Modifier l'affichage de searx"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Choisir un style pour ce thème"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Style"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr "Résolveur Open Access DOI"
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Rediriger vers les versions des articles en libre accès lorsqu'elles sont disponibles (nécessite un plugin)"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Raccourcis"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "Langue choisie"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Espace temporel"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "Temps moy."
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "Temps max"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "Voici la liste des module de searx produisant une réponse instantanée."
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Nom"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Mots clés"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Description"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Exemples"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "C'est une liste de cookies et de leurs valeurs que searx enregistre sur votre ordinateur."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "Avec cette liste, vous pouvez juger de la transparence de searx."
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Nom du cookie"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Valeur"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "Adresse de recherche des réglages actuels"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "Note : utiliser des réglages personnalisés dans l'adresse de recherche peut réduire la vie privée en donnant accès à certaines données aux sites des résultats sélectionnés."
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Résultats de recherche"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "Essayez de chercher : "
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "Les moteurs ne peuvent récupérer de résultats"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Liens"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Lancer une recherche"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "statistiques"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "N'importe quand"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "Dernières 24h"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "Semaine précédente"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "Mois précédent"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "Année précédente"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "Astuces !"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Il semble que ce soit la première fois que vous utilisez searx."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Information !"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "il n'y a pas de cookies définis pour le moment."
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Aucune donnée disponible pour l'instant. "
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "Les moteurs ne peuvent récupérer de résultats."
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "Veuillez réessayer ultérieurement, ou utiliser une instance différente de searx."
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Désolé !"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "nous n'avons trouvé aucun résultat. Effectuez une autre recherche ou changez de catégorie."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Bravo !"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Paramètres sauvés avec succès."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "Oups !"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Il y a un problème."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "afficher le média"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "cacher le media"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Voir l'image"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Voir la source"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "afficher la carte"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "cacher la carte"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "afficher les détails"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "cacher les détails"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Taille de fichier"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "octets"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kio"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "Mio"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "Gio"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "Tio"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Nombre de fichiers"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "afficher la vidéo"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "cacher la vidéo"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Afficher plus..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "Pas d'élément trouvé"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Supporte la langue sélectionnée"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "Interface utilisateur"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "Vie privée"
diff --git a/searx/translations/gl/LC_MESSAGES/messages.po b/searx/translations/gl/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..3e1e223
--- /dev/null
+++ b/searx/translations/gl/LC_MESSAGES/messages.po
@@ -0,0 +1,1013 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Xosé M. Lamas <correo@xmgz.eu>, 2018
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2018-04-20 11:00+0000\n"
+"Last-Translator: Xosé M. Lamas <correo@xmgz.eu>\n"
+"Language-Team: Galician (http://www.transifex.com/asciimoo/searx/language/gl/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: gl\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "caducidade"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "excepción na petición"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "fallo non agardado"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "ficheiros"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "xeral"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "música"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "Medios sociais"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "imaxes"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "vídeos"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "TIC"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "novas"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "mapa"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "ciencia"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Axustes non válidos, por favor edite a configuración"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "Axustes non válidos"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "fallo na busca"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "hai {minutes} minuto(s)"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "hai {hours} hora(s), {minutes} minuto(s)"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Xerador de valor aleatorio"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Xerar diferentes valores aleatorios"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "Funcións de estatística"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "Calcule {functions} dos argumentos"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Tempo de busca (sec)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Cargou en (seg)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Número de resultados"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "Puntuacións"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "Puntuacións por resultado"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Fallos"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(OBSOLETO)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "Esta entrada foi proporcionada por"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Non hai dispoñible un extracto para esta publicación."
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "Reescribir ligazóns HTTP a HTTPS si fose posible"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Desplazamento infinito"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "Cargar automáticamente a seguinte páxina ao desplazarse ao fondo da páxina actual"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Reescritura Open Access DOI"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Evitar muros de pago redirecciionando a versións públicas das publicacións cando estén dispoñibles"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Abrir ligazóns de resultados en novas lapelas do navegador"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "Por omisión, os resultados ábrense na mesma lapela. Este engadido sobreescribe o comportamento por omisión para abrir as ligazóns en novas lapelas/ventás. (Require JavaScript)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Busca en categoría seleccionada"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Busca ao momento si hai unha categoría seleccionada. Desactivar para seleccionar múltiples categorías. (Require JavaScript)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Mostra o seu IP si a consulta é \"ip\" e o seu Use Agent si a consulta contén \"user agent\"."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "Eliminador de rastrexadores na URL"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "Elimina os argumentos de rastrexo da URL devolta"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Atallos como os de Vim"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "Navegar nos resultados da busca con atallos como os de Vim (require JavaScript). Pulse \"h\" na pantalla principal ou de resultados para obter axuda."
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Páxina non atopada"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "Ir a %(search_page)s"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "páxina de busca"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "axustes"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "Sobre"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Axustes"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Categorías por omisión"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Idioma de busca"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Idioma por omisión"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Idioma da interface"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Autocompletar"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "Proxy de imaxes"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Activado"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Desactivado"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Método"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "Busca segura"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Stricta"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Moderada"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Ningunha"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Decorado"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Cor"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Azul (por omisión)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Violeta"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Verde"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Cian"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Laranxa"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Vermello"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "Motores de busca utilizados actualmente"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Nome do motor"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Categoría"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Permitir"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Bloquear"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Estos axustes gárdanse en testemuños, esto permítenos non ter que gardar ningún datos sobre vostede."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Estos testemuños son para a súa conveniencia, non utilizamos estos testemuños para rastrexala."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "gardar"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Restablecer"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "atrás"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "Busca URL"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Descargar resultados"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Respostas"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Suxestións"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "páxina anterior"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "páxina seguinte"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Buscar por..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Estatísticas do buscador"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "contexto orixinal"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Sementadora"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Cliente"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "ligazón magnet"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "ficheiro torrent"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "Pulse na lupa para realizar a busca"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Resultados en novas lapelas"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "On"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Off"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "en memoria"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Axustes avanzados"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Pechar"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Fallo!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Proporcionado por"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "un metabuscador configurable e respetuoso coa intimidade"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "a través de proxy"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "soportado"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "non soportado"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Xeral"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Motores"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Engadidos"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Respostas"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Testemuños"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "Qué idioma prefire para buscar?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Cambiar o idioma da disposición"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Buscar nas cousas metras escribe"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "Utilizar o proxy de searx para as imaxes dos resultados"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "Cambiar cómo se envían os formularios, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">coñeza máis sobre os métodos de consulta</a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Filtro de contido"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Cambiar a disposición de searx"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Escolla o estilo para este decorado"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Estilo"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr "Resolutor Open Access DOI"
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Redireccionar a versións abertas das publicacións cando estén dispoñibles (require o engadido)"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Atallo"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "Idioma seleccionado"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Rango temporal"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "Tempo medio"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "Tempo máx."
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "Este é o listado dos módulos de respostas instantáneas de searx"
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Nome"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Palabras chave"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Descrición"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Exemplos"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "Este é o listados dos testemuños e os seus valores que searx almacena na súa computadora."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "Con esta lista vostede pode comprobar a transparencia de searx."
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Nome do testemuño"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Valor"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "URL de busca dos axustes gardados actualmente."
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "Nota: indicando axustes personalizados na URL de busca pode reducir a súa intimidade ao filtrar datos aos sitios web dos resultados."
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Resultados da busca"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "Intente buscar:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "Os buscadores non obtiveron resultados"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Ligazóns"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Iniciar busca"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "estatísticas"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "Calquer momento"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "Último día"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "Última semana"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "Último mes"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "Último ano"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "Heads up!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Semella que é a primeira vez que utiliza searx."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Información!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "actualmente non hai testemuños establecidos."
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Non hai datos dispoñibles."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "Os buscadores non poden obter resultados."
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "Por favor, inténteo de novo máis tarde ou busque outra instancia de searx."
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Sentímolo!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "non atopamos ningún resultado. Por favor, utilice outra consulta ou busque en máis categorías."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Ben feito!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Gardáronse correctamente os Axustes."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "Vaia!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Algo fallou."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "mostrar medios"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "agochar medios"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Obter imaxe"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Ver fonte"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "mostrar mapa"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "agochar mapa"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "mostrar detalles"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "agochar detalles"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Tamaño do ficheiro"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "Bytes"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Número de ficheiros"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "mostrar vídeo"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "agochar vídeo"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Cargar máis..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "Non se atoparon elementos"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Soporta o idioma seleccionado"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "Interface de usuaria"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "Intimidade"
diff --git a/searx/translations/he/LC_MESSAGES/messages.po b/searx/translations/he/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..a7d0bcc
--- /dev/null
+++ b/searx/translations/he/LC_MESSAGES/messages.po
@@ -0,0 +1,1017 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# GenghisKhan <genghiskhan@gmx.ca>, 2015
+# GenghisKhan <genghiskhan@gmx.ca>, 2015-2017
+# pointhi, 2014
+# rike, 2014
+# stf <stefan.marsiske@gmail.com>, 2014
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2017-11-01 20:31+0000\n"
+"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
+"Language-Team: Hebrew (http://www.transifex.com/asciimoo/searx/language/he/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: he\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr ""
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr ""
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr ""
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "קבצים"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "כללי"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "מוזיקה"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "מדיה חברתית"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "תמונות"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "סרטונים"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "IT"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "חדשות"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "מפות"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "מדע"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "הגדרות שגויות, אנא ערוך את ההעדפות שלך"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr ""
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "שגיאת חיפוש"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "לפני {minutes} דקות"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "לפני {hours} שעות, {minutes} דקות"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "מפיק ערך אקראי"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "צור ערכים אקראיים שונים"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "פונקציות סטטיסטיקה"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr ""
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "זמן מנוע (שניות)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "עומס עמוד (שניות)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "מספר תוצאות"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "דירוג"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "דירוג לכל תוצאה"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "שגיאות"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr ""
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "רשומה זו הוחלפה על ידי"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr ""
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "שכתוב קישורי HTTP לקישורי HTTPS כאשר ניתן"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "גלילה אינסופית"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "טען אוטומטית עמוד הלאה כאשר גוללים לתחתית של עמוד נוכחי"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr ""
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "הימנעות מקירות-תשלום (paywalls) על ידי הכוונה מחודשת לגרסאות כניסה-חופשית של כתבי-עת כאשר זמינות"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "פתיחת קישורי תוצאה בתוך כרטיסיות דפדפן חדשות"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "תוצאות נפתחות בתוך אותו חלון באופן שגרתי. תוסף זה משכתב את ההתנהגות השגרתית כדי לפתוח קישורים בתוך כרטיסיות/חלונות חדשים. (JavaScript נדרש)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "חיפוש בעת בחירת קטגוריה"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "ביצוע חיפוש כאשר קטגוריה נבחרת. יש לנטרל את תוסף זה כדי לבחור קטגוריות מרובות. (מצריך JavaScript)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "הצגת כתובת IP המשוייכת לך אם השאילתא היא \"ip\" וגם סוכן משתמש אם השאילתא מכילה \"user agent\"."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "הסרת Tracker URL"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "הסרת ארגומנטים מאתרים מתוך URL מוחזר"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "מקשים חמים Vim-like"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "ניווט בתוצאות בעזרת מקשים חמים Vim-like (JavaScript נדרש). לחיצה על קליד \"h\" במסך ראשי או תוצאות תציג דו שיח עזרה."
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "עמוד לא נמצא"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "המשך אל %(search_page)s."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "עמוד חיפוש"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "העדפות"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "אודות"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "העדפות"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "קטגוריות ברירת מחדל"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "שפת חיפוש"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "שפה ברירת מחדל"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "שפת ממשק"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "השלמה אוטומטית"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "מתווך תמונה"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "מאופשר"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "מנוטרל"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "שיטה"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "חיפוש בטוח"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "מחמיר"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "מתון"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "בלי"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "עיצובים"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "צבע"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "כחול (שגרתי)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "סגול"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "ירוק"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "ציאן"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "כתום"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "אדום"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "מנועי חיפוש בשימוש עתה"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "שם מנוע"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "קטגוריה"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "התר"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "חסום"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "הגדרות אלו מאוחסנות בתוך העוגיות שלך, אלו מאפשרות לנו להימנע מלאחסן את מידע זה אודותייך."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "עוגיות אלו משרתות את נוחותך הבלעדית, אנחנו לא משתמשים בהן כדי לעקוב אחריך."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "שמור"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "אפס ברירות מחדל"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "חזור"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "קישור חיפוש"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "הורד תוצאות"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "תשובות"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "הצעות"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "עמוד קודם"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "עמוד הבא"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "חיפוש..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "סטטיסטיקות מנוע"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "הקשר מקורי"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "זורעים"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "יונקים"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "קישור magnet"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "קובץ torrent"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "לחצו על הזכוכית מגדלת כדי לבצע חיפוש"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "תוצאות בכרטיסיות חדשות"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "פועל"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "כבוי"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "מוטמן"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "הגדרות מתקדמות"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "סגור"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "שגיאה!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "מופעל באמצעות"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "מנוע מטא-חיפוש גמיש, ומכבד פרטיות"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "דרך פרוקסי"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "כללי"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "מנועים"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "תוספים"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "תשובות"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "עוגיות"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "איזו שפה אתם מעדיפים לצורך חיפוש?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "שינוי שפת הממשק"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "מציאת דברים בזמן הקלדה"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "שליפת תוצאות תמונה דרך searx (מבעד Proxy)"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "שינוי האופן בו טפסים נשלחים, <a href=\"https://he.wikipedia.org/wiki/Hypertext_Transfer_Protocol#.D7.A9.D7.99.D7.98.D7.95.D7.AA_.D7.91.D7.A7.D7.A9.D7.94\" rel=\"external\">למדו עוד אודות שיטות בקשה (request methods)</a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "סינון תוכן"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "שינוי ממשק searx"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "בחירת סגנון עבור עיצוב זה"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "סגנון"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "קיצור דרך"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "טווח זמן"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "זמן ממוצע"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "זמן מירבי"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "שם"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "מילות מפתח"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "תיאור"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "דוגמאות"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "זוהי רשימה של עוגיות וערכיהן אשר searx מאחסנת על המחשב שלך."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "בעזרת רשימה זו, באפשרותך לגשת אל searx transparency."
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "שם עוגייה"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "ערך"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr ""
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "תוצאות חיפוש"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr ""
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr ""
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "קישורים"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "התחל חיפוש"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "סטטיסטיקות"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "כל עת"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "יום אחרון"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "שבוע אחרון"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "חודש אחרון"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "שנה אחרונה"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "זהירות!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "נראה כי אתם משתמשים ב-searx בפעם הראשונה."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "מידע!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "ברגע זה, אין עוגיות מוגדרות."
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "אין כעת מידע זמין. "
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr ""
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr ""
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "מצטערים!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "לא מצאנו תוצאות. אנא נסו שאילתא אחרת או חפשו בתוך יותר קטגוריות."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "כל הכבוד!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "הגדרות נשמרו בהצלחה."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "אבוי!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "משהו השתבש."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "הצג מדיה"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "הסתר מדיה"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "השג תמונה"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "צפה במקור"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "הצג מפה"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "הסתר מפה"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "הצג פרטים"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "הסתר פרטים"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "גודל קובץ"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "בייטים"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "קי״ב"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "מי״ב"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "גי״ב"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "טי״ב"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "מספר קבצים"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "הצג וידאו"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "הסתר וידאו"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "טען עוד..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr ""
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr ""
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr ""
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr ""
diff --git a/searx/translations/hr/LC_MESSAGES/messages.po b/searx/translations/hr/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..104876c
--- /dev/null
+++ b/searx/translations/hr/LC_MESSAGES/messages.po
@@ -0,0 +1,1013 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Dino Dugandžija <ddugandz@tutanota.com>, 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2017-11-10 18:43+0000\n"
+"Last-Translator: Dino Dugandžija <ddugandz@tutanota.com>\n"
+"Language-Team: Croatian (http://www.transifex.com/asciimoo/searx/language/hr/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: hr\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "istek vremena"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "zatraži iznimku"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "neočekivani pad"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "datoteke"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "općenito"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "glazba"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "društveni mediji"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "slike"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "video zapisi"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "it"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "vijesti"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "karta"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "znanost"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Nevažeće postavke, uredite svoje postavke"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "Nevažeće postavke"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "greška u pretraživanju"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "{minutes} minutu(minute, minuta) prije"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "{hours} sat(sata, sati), {minutes} minutu(minute, minuta) prije"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Generator slučajnih vrijednosti"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Generirajte različite slučajne vrijednosti"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "Funkcije statistike"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "Izračunajte {functions} argumenata"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Vrijeme pretraživanja (sek)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Učitavanje stranice (sek)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Broj rezultata"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "Pogodci"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "Pogodci po rezultatu"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Greške"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(ZASTARJELO)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "Ovaj je unos zamijenio"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Nijedan sažetak nije dostupan za ovu objavu."
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "Zamijeni HTTP veze sa HTTPS ukoliko je moguće"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Beskonačno pomicanje"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "Automatski učitajte sljedeću stranicu kada se pomaknete do dna trenutne stranice"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Otvoreni pristup DOI prijepisa"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Izbjegnite plaćanje u slučaju dostupnosti besplatne objave"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Otvorite veze rezultata na novim karticama preglednika"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "Po zadanom, rezultati se otvaraju u istom prozoru. Ovaj dodatak poništava zadano ponašanje za otvaranje veza na novim karticama/prozorima. (Potreban je JavaScript)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Traži u odabranoj kategoriji"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Izvrši pretraživanje odmah ako je odabrana kategorija. Onemogući odabir više kategorija. (Potreban je JavaScript)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Prikazuje vašu IP adresu ako je upit \"ip\" i vaš korisnički agent ako upit sadrži \"user agent\"."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "Ukloni praćenje URL-ova"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "Ukloni elemente za označavanje rezultata vraćenih s URL-a"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Vim tipkovni prečaci"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "Kretanje rezultatima pretraživanja pomoću tipkovnih prečaca sličnih Vim-u (potreban je JavaScript). Pritisnite tipku \"h\" na glavnoj stranici ili stranici s rezultatima kako biste dobili pomoć."
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Stranica nije pronađena"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "Idi na %(search_page)s."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "pretraži stranicu"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "postavke"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "o nama"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Postavke"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Zadane kategorije"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Jezik pretraživanja"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Zadani jezik"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Jezik sučelja"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Automatsko dovršavanje"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "Proxy slike"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Omogućeno"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Onemogućeno"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Metoda"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "Sigurno pretraživanje"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Strogo"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Umjereno"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Ništa"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Teme"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Boja"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Plava (zadano)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Ljubičasta"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Zelena"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Cijan"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Narančasta"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Crvena"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "Trenutno korištene tražilice"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Naziv tražilice"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Kategorija"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Dozvoli"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Blokiraj"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Ove postavke su pohranjene u Vašim kolačićima, što omogućuje da ne spremamo podatke o Vama."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Ovi kolačići služe Vašoj pogodnosti, ne upotrebljavamo te kolačiće da bi Vas pratili."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "spremi"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Vraćanje zadanih postavki"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "natrag"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "Pretraži URL"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Preuzmi rezultate"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Odgovori"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Prijedlozi"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "Prethodna stranica"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "Sljedeća stranica"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Traži..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Podaci o tražilic"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "izvorni sadržaj"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Seeder"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Leecher"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "magnet link"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "torrent datoteka"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "Kliknite na povećalo za izvođenje pretraživanja"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Rezultati u novim karticama"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "Uključeno"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Isključeno"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "spremljeno"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Napredne postavke"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Zatvori"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Greška!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Pokreće"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "meta-tražilica koja poštuje privatnost"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "preko proxyja"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "podržano"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "nije podržano"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Općenito"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Tražilice"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Dodaci"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Davatelji odgovora"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Kolačići"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "Koji jezik želite za pretraživanje?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Promijenite jezik prikaza"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Pronađite stvari prilikom upisivanja"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "Koristite proxy za slike dobivene pretraživanjem searxa"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "Promijenite način slanja obrasca, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">saznajte više o metodama zahtjeva</a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Filtriranje sadržaja"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Promijenite izgled searxa"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Odaberite stil za ovu temu"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Stil"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr "Otvoreni pristup DOI rješenja"
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Preusmjeri na verzije izdanja otvorenog pristupa kada je isto dostupno (potreban je dodatak)"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Prečac"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "Odabrani jezik"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Vremenski raspon"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "Prosječno vrijeme"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "Maksimalno vrijeme"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "Ovo je popis searx modula za odgovore"
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Naziv"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Ključne riječi"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Opis"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Primjeri"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "Ovo je popis kolačića i njihovih vrijednosti koje pohranjuju na Vašem računalu."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "S tim popisom možete procijeniti transparentnost pretraživanja."
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Naziv kolačića"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Vrijednost"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "Pretraži URL adresu trenutno spremljenih postavki"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "Napomena: određivanje prilagođenih postavki u URL-u za pretraživanje može smanjiti privatnost \nzbog propuštanja podataka na kliknute web lokacije rezultata."
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Rezultati pretraživanja"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "Pokušajte tražiti sljedeće:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "Tražilice ne mogu dohvatiti rezultate"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Poveznice"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Pokreni pretraživanje"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "statistika"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "Bilokad"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "Posljednji dan"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "Prošli tjedan"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "Prošli mjesec"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "Prošle godine"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "Glavu gore!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Izgleda kao da prvi puta koristite searx."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Informacija!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "trenutačno nema definiranih kolačića."
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Trenutačno nema dostupnih podataka."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "Tražilice ne mogu dohvatiti rezultate."
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "Pokušajte ponovo kasnije ili potražite drugu searx instancu."
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Ispričavamo se!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "nema rezultata pretraživanja. Unesite novi upit ili pretražite u više kategorija"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Odlično!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Postavke uspješno spremljene."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "Ups!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Nešto je pošlo po zlu."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "prikaži medije"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "sakrij medije"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Dohvati sliku"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Prikaži izvor"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "prikaži kartu"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "sakrij kartu"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "prikaži detalje"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "sakrij detalje"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Veličina datoteke"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "Bajti"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Broj datoteka"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "prikaži video"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "sakrij video"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Učitaj više..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "Nije pronađena nijedna stavka"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Podržava odabrani jezik"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "Korisničko sučelje"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "Privatnost"
diff --git a/searx/translations/hu/LC_MESSAGES/messages.po b/searx/translations/hu/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..58383cd
--- /dev/null
+++ b/searx/translations/hu/LC_MESSAGES/messages.po
@@ -0,0 +1,1016 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Adam Tauber <asciimoo@gmail.com>, 2014-2017
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
+# Noémi Ványi <sitbackandwait@gmail.com>, 2016
+# Noémi Ványi <sitbackandwait@gmail.com>, 2016-2017
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2017-11-03 11:14+0000\n"
+"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
+"Language-Team: Hungarian (http://www.transifex.com/asciimoo/searx/language/hu/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: hu\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "idő túllépés"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "kérés hiba"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "nem várt hiba"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "fájlok"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "általános"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "zene"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "közösségi média"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "képek"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "videók"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "it"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "hírek"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "térkép"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "tudomány"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Érvénytelen beállítások"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "érvénytelen beállítások"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "keresési hiba"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "{minutes} perce"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "{hours} óra, {minutes} perce"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Véletlen érték generátor"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Különböző random értékek generálása"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "Statisztikai függvények"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "{functions} függvények alkalmazása az argumentumokon"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Keresési idő (másodperc)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Válaszidők (sec)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Találatok száma"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "Pontszámok"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "Pontszámok találatonként"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Hibák"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(ELAVULT)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "Ezt a bejegyzést törölte:"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Nem elérhető absztrakt a publikációhoz."
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "HTTP linkek lecserélése HTTPS-re"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Végtelenített találatok"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "További találatok automatikus betöltése"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Szabad DOI használat"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Publikácós linkeknél szabad forrás használat, amennyiben lehetséges"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Találatok megnyitása új lapon"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "A találatok az aktuális oldalon nyílnak meg alapértelmezetten. Ez a plugin megváltoztatja ezt a működést és új lapra nyitja meg a találatokat. (ez a funkció JavaScript-et igényel)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Azonnali keresés kategória választással"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Keresés megkezdése kategória kiválasztáskor. Több kategória kiválasztásához deaktiválás szükséges. (Javascript szükséges)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Saját IP cím, user agent megjelenítés az \"ip\", \"user agent\" szavakra keresve."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "Tracker URL eltávolítás"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "Felhasználó követéshez használt találati URL paraméterek eltávolítása"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Vim típusú billentyűzetes navigáció"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "Navigálj néhány gombnyomással a találatok között. Aktiválás után a \"h\" betű lenyomásával jeleníthető meg részletes segítség a használatról. (Ez a funkció JavaScript-et igényel)"
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Az oldal nem található"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "Vissza a %(search_page)s."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "kereső oldalra"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "beállítások"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "rólunk"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Beállítások"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Alapértelmezett kategóriák"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Keresés nyelve"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Alapértelmezett nyelv"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Felület nyelve"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Automatikus kiegészítés"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "Kép proxy"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Engedélyez"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Inaktivál"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Method"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "Felnőtt tartalom szűrés"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Erős"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Enyhe"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Nincs"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Megjelenés"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Szín"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Kék"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Ibolya"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Zöld"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Türkiz"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Narancs"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Piros"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "Jelenleg használt keresők"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Kereső neve"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Kategória"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Engedélyezés"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Tiltás"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Ezek a beállítások csak a böngésző cookie-jaiban tárolódnak."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Ezek a cookie-k csak kényelmi funkciókat látnak el, nem használjuk a felhasználók követésére."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "mentés"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Alapbeállítások visszaállítása"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "vissza"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "Keresési URL"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Találatok letöltése"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Válaszok"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Javaslatok"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "előző oldal"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "következő oldal"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Keresés..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Kereső statisztikák"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "eredeti kontextus"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Seeder"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Leecher"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "magnet link"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "torrent fájl"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "A nagyítóra kattintva indítható a keresés"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Eredmények új tabon"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "On"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Off"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "tárolt"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Keresés beállításai"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Bezár"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Hiba!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Az oldalt kiszolgálja: "
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "egy privátszféra tisztelő, könnyen módosítható metakereső"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "proxy nézet"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "támogatott"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "nem támogatott"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Általános"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Keresőmotorok"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Pluginek"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Válaszok"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Sütik"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "Preferált keresési nyelv"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Felület nyelve"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Autómatikus kereső kifejezés kiegészítés"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "Kép találatok betöltése searx-ön keresztül"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "Keresés metódusa (<a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">bővebben</a>)"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Tartalom szűrés"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Megjelenés"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Válassz megjelenést ehhez a témához"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Megjelenés"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr "Szabad DOI feloldó"
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Átirányítás a publikáció szabadon elérhető változatára (plugin szükséges)"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Rövidítés"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "Kiválasztott nyelv"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Idő szűrés"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "Átlag idő"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "Maximális idő"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "Az alábbi lista tartalmazza searx instant válaszoló moduljait."
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Név"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Kulcsszavak"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Leírás"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Példák"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "Searx által használt sütik listája."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "Ez a lista a kereső transzparenciáját hivatott megmutatni."
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Süti név"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Érték"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "Keresési URL a beállítások alapján"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "Megjegyzés: URL-ben tárolt saját beállítások csökkenthetik az anonimitást."
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Keresési eredmények"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "Keresés erre:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "Nincs találat a keresőmotortól"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Linkek"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Keresés indítása"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "statisztikák"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "Bármikor"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "Legutóbbi nap"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "Legutóbbi hét"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "Legutóbbi hónap"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "Előző év"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "Figyelem!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Úgy tűnik először használod a keresőt."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Figyelem!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "jelenleg nincs süti definiálva"
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Nincs megjeleníthető adat."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "Nincs találat a keresőmotortól."
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "Kérjük próbáld újra, vagy használj egy másik searx-t."
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Elnézést!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "Nincs megjeleníthető találat."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Siker!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Beállítások mentve"
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "Oh!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Hiba történt"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "médium mutatása"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "médium elrejtése"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Kép megjelenítése"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Forrás megtekintése"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "Térkép"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "Térkép elrejtése"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "Részletek"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "Részletek elrejtése"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Fájl méret"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "Byte"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Fájlok száma"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "video mutatása"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "video elrejtése"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "További találatok betöltése"
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "Nincs találat"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Támogatja a kiválasztott nyelvet"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "Felhaszálói felület"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "Magánszféra"
diff --git a/searx/translations/it/LC_MESSAGES/messages.po b/searx/translations/it/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..c2d5c85
--- /dev/null
+++ b/searx/translations/it/LC_MESSAGES/messages.po
@@ -0,0 +1,1021 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Adam Tauber <asciimoo@gmail.com>, 2018
+# caoswave, 2016
+# caoswave, 2016-2018
+# dp <d.pitrolo@gmx.com>, 2014
+# dp <d.pitrolo@gmx.com>, 2014,2017
+# Federico <fedett@gmail.com>, 2018
+# Luca C <mybusiness@yopmail.com>, 2017
+# Luc <luc.absil2@gmail.com>, 2015
+# Random_R, 2018
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2018-10-16 15:53+0000\n"
+"Last-Translator: caoswave\n"
+"Language-Team: Italian (http://www.transifex.com/asciimoo/searx/language/it/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: it\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "tempo scaduto"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "eccezione della richiesta"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "crash inaspettato"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "documenti"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "generale"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "musica"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "social"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "immagini"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "video"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "IT"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "notizie"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "mappe"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "scienza"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Impostazioni non valide, modifica le tue preferenze"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "Impostazioni non valide"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "errore di ricerca"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "di {minutes} minuti fa"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "di {hours} ore e {minutes} minuti fa"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Generatore di numeri casuali"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Genera più numeri casuali"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "Funzioni statistiche"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "Calcola {functions} degli argomenti"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Tempo del motore (secondi)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr " Caricamento della pagina (secondi)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Numero di risultati"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "Punteggio"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "Punteggio per risultato"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Errori"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(OBSOLETO)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "Questa voce è stata sostituita da"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Nessun sommario disponibile per questa pubblicazione"
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "Se possible, converti gli indirizzi HTTP in HTTPS"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Scorrimento infinito"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "Carica automaticamente la pagina successiva quando si scorre sino alla fine della pagina attuale"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Reindirizzamento Open Access DOI"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Se possibile, evita il paywall di una pubblicazione reindirizzando ad una versione libera"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Apri i risultati in nuove schede del browser"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "Di base i risultati sono aperti nella stessa finestra. Questa estensione fa sì invece che vengano mostrati in nuove schede/finestre. (Javascript necessario)\""
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Cerca nella categoria selezionata"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Esegui la ricerca immediatamente se una categoria è selezionata. Disabilita questa opzione se vuoi selezionare più categorie. (Javascript necessario)\""
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Mostra il tuo IP se hai cercato \"ip\" ed il tuo user agent se hai cercato \"user agent\"."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "Rimuovi tracciamento URL"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "Elimina elementi traccianti dai link dei risultati"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Scorciatoie in stile Vim"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "Usa comandi in stile Vim per navigare tra i risultati (JavaScript necessario). Premi il tasto \"h\" per visualizzare la finestra d'aiuto."
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Pagina non trovata"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "Vai a %(search_page)s."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "cerca nella pagina"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "preferenze"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "informazioni"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Preferenze"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Categorie predefinite"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Lingua di ricerca"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Lingua predefinita"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Linguaggio dell'interfaccia"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Completamento automatico"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "Proxy immagini"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Attivo"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Disabilitato"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Metodo"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "Ricerca Sicura"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Rigoroso"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Moderato"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Nessuno"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Temi"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Colore"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Blu (predefinito)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Viola"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Verde"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Ciano"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Arancione"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Rosso"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "Motori di ricerca attualmente in uso"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Nome del motore"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Categoria"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Autorizza"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Blocca"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Le impostazioni vengono salvate nei tuoi cookie, consentendoci di non conservare dati su di te."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Questi cookie servono solo ad offrirti un servizio migliore. Non li usiamo per tracciarti."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "salva"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Reimposta i valori iniziali"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "indietro"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "URL della ricerca"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Scarica i risultati"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Risposte"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Suggerimenti"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "pagina precedente"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "pagina successiva"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Cerca..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Statistiche dei motori"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "contesto originale"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Seeder"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Leecher"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "magnet link"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "file torrent"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "Premi sull'icona della lente per avviare la ricerca"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Risultati in una nuova scheda"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "On"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Off"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "in cache"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Impostazioni avanzate"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Chiudi"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Errore!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Offerto da"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "Un metamotore di ricerca hackerabile e rispettoso della privacy"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "via proxy"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "supportato"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "non supportato"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Generale"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Motori"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Plugin"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Risponditori"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Cookie"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "Lingua dei risultati di ricerca"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Cambia la lingua dell'interfaccia"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Visualizza risultati mentre digiti"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "Usa un proxy per le immagini ottenute attraverso searx"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "Seleziona il metodo di richiesta HTTP (<a href=\"https://it.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Messaggio_di_richiesta\" rel=\"external\">Cos'è un metodo di richiesta?</a>)"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Filtro famiglia"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Cambia il layout di searx"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Scegli lo stile per questo tema"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Stile"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr "Resolver Open Access DOI"
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Indirizza a versioni open-access delle pubblicazioni quando disponibili (plugin richiesto)"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Scorciatoia"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "Lingua selezionata"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Intervallo di tempo"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "Tempo medio"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "Tempo massimo"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "Questa è la lista dei moduli searx con risposta immediata"
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Nome"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Parole chiave"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Descrizione"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Esempi"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "Qui puoi vedere i cookie che vengono conservati sul tuo computer."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "In questo modo, puoi constatare la trasparenza di searx."
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Nome del cookie"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Valore"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "Cerca URL delle preferenze attualmente salvate"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "Nota: specificando impostazioni personalizzate nella ricerca URL può ridurre la privacy facendo traperlare dati ai siti cliccati"
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Risultati della ricerca"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "Prova a cercare:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "I motori di ricerca non riescono a recuperare risultati"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Collegamenti"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Cerca"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "statistiche"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "Di sempre"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "Ultimo giorno"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "Ultima settimana"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "Ultimo mese"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "L'anno scorso"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "Avviso!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Sembra che tu stia utilizzando searx per la prima volta."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Informazione!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "Attualmente non ci sono cookie definiti."
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Non ci sono dati attualmente disponibili."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "I motori di ricerca non riescono a recuperare risultati"
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "Riprova nuovamente o cerca un'altra istanza di searx."
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Scusa!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "non abbiamo trovato alcun risultato. Prova una nuova ricerca, o cerca in più categorie."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Ottimo!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Impostazioni salvate con successo."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "Mannaggia!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Qualcosa è andato storto."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "mostra media"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "nascondi media"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Visualizza immagine"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Guarda la fonte"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "mostra mappa"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "nascondi mappa"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "mostra dettagli"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "nascondi dettagli"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Dimensioni file"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "Bytes"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Numero di file"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "mostra video"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "nascondi video"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Carica altro..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "Nessun oggetto trovato"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "La lingua selezionata è disponibile"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "Interfaccia utente"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "Privacy"
diff --git a/searx/translations/ja/LC_MESSAGES/messages.po b/searx/translations/ja/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..24d2c35
--- /dev/null
+++ b/searx/translations/ja/LC_MESSAGES/messages.po
@@ -0,0 +1,1020 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Akio Nishimura <akionux@gmail.com>, 2016-2018
+# Thomas Pointhuber, 2014-2015
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014,2016
+# Lucas Phillips <mail@lep.pw>, 2015
+# Max <theshirinzu@gmail.com>, 2015
+# Nobuhiro Iwamatsu <iwamatsu@nigauri.org>, 2018
+# pointhi, 2014
+# Thomas Pointhuber, 2015-2016
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2018-08-13 03:03+0000\n"
+"Last-Translator: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>\n"
+"Language-Team: Japanese (http://www.transifex.com/asciimoo/searx/language/ja/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: ja\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "タイムアウト"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "例外要求"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "予期しないクラッシュ"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "ファイル"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "一般"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "音楽"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "ソーシャルメディア"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "画像"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "動画"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "情報技術"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "お知らせ"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "地図"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "学問"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "不正な設定です。設定を編集してください。"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "不正な設定"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "検索エラー"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "{minutes}分前"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "{hours}時間と{minutes}分前"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "ランダム値の生成"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "新しいランダム値を生成する"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "統計機能"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "変数の{functions}を計算する"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "検索時間 (秒)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "ページ読み込み時間 (秒)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "通知の数"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "スコア"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "検索結果当たりスコア"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "エラー"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(廃止)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "このエントリーの優先"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "この出版物には要約がありません。"
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "可能ならば HTTP リンクを HTTPS リンクに書き換える"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "無限スクロール"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "現在のページの下端でスクロールすると自動的に次のページを読み込む"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "オープンアクセス DOI リライト"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "可能ならば出版物のオープンアクセス版へリダイレクトして有料の壁を避ける"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "検索結果のリンクを新しいタブで開く"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "デフォルトでは結果は同じウィンドウで開きます。このプラグインはデフォルトの動作を書き換えて新しいタブ/ウィンドウで開くようにします。(JavaScript が必要です)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "カテゴリ選択したら検索を実行"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "カテゴリが選択されたときに検索を実行します。複数のカテゴリを選択する場合は無効にします。(JavaScript が必要です)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "クエリが \"ip\" の場合にあなたのIPを、クエリに \"user agent\" が含まれる場合にあなたのユーザーエージェントを表示します。"
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "トラッカー URL リムーバー"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "返された URL からトラッカー引数を消去する"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Vim 風のホットキー"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "検索結果をVim 風のホットキーで操作します(JavaScript が必要)。メインページまたは検索結果ページで \"h\" キーを押してヘルプを表示します。"
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "ページが見つかりません"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "%(search_page)s へ行く。"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "検索ページ"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "設定"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "このサイトについて"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "設定"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "デフォルトのカテゴリ"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "検索の言語"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "デフォルト言語"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "インターフェースの言語"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "オートコンプリート"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "画像プロキシ"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "有効"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "無効"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "方法"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "安全な検索"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "厳しく"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "ゆるく"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "なし"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "テーマ"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "色"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "青 (初期設定)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "紫"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "緑"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "シアン"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "オレンジ"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "赤"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "現在使用中の検索エンジン"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "検索エンジン名"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "カテゴリー"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "許可する"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "禁止する"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "これらの設定はあなたのクッキーに保存されますが、これはサーバーがあなたの情報の保存するわけではありません。"
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "クッキーはあなたが便利に使えるようにするために使うのであって、サーバーはあなたを追跡するためにクッキーを使うことはありません。"
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "保存"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "デフォルト設定に戻す"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "戻る"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "URL を検索する"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "ダウンロードするファイル形式"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "回答"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "提案"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "前のページ"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "次のページ"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "検索する..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "検索エンジンの状態"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "元の文脈"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "シーダー"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "リーチャー"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "マグネットリンク"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "トレントファイル"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "検索を実行するには虫めがねをクリックしてください"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "新しいタブに結果を表示"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "有効"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "無効"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "キャッシュ"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "発展的な設定"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "閉じる"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "エラー!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Powered by"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "プライバシー保護を重視した、ハッカブルなメタサーチエンジン"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "プロキシされている"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "サポート"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "未サポート"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "一般設定"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "検索エンジン"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "プラグイン"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "回答者"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "クッキー"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "検索に使う言語はどれが良いですか?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "表示する言語を変更"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "入力補助に使う検索エンジン"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "画像検索結果を searx でプロキシする"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "フォームがどの方法で送信されるかを変更できます。<a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">リクエストメソッドについて詳しく知るにはここをクリック</a>。"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "コンテンツをフィルタリングする"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Searx のレイアウトの変更"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "このテーマのスタイルを選択"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "スタイル"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr "オープンアクセス DOI リゾルバー"
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "利用可能な場合(プラグインが必要)、オープンアクセス版の出版物にリダイレクトする"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "ショートカット"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "選択された言語"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "時間範囲"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "平均時間"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "最大時間"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "これは searx の即席回答モジュールのリストです。"
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "名前"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "キーワード"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "説明"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "例"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "これはクッキーのリストで、これらの値はあなたのコンピュータに保存されています。"
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "このリストによって、あなたは searx の透明性を評価できます。"
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "クッキー名"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "値"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "現在保存されている設定の検索 URL"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "注意: 検索 URL にカスタム設定を指定すると、クリックした結果サイトにデータが漏洩し、プライバシーが低下する恐れがあります。"
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "検索結果"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "検索:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "エンジンは結果を取得できません"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "リンク"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "検索を開始"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "統計"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "いつでも"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "先日"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "先週"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "先月"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "去年"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "気をつけて!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Searxを使うのは初めてようですね。"
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "お知らせ!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "現在、クッキーは定義されていません。"
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "現在データがありません。"
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "エンジンは結果を取得できません。"
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "後でやり直すか、別の searx インスタンスを探して下さい。"
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "申し訳ありません!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "検索結果はありませんでした。別カテゴリで、他のクエリまたは検索を試してください。"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "あっぱれ!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "設定の保存に成功しました。"
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "ちぇっ!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "なにか問題が起こっているようです。"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "メディアを表示する"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "メディアを隠す"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "画像を取得する"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "ソースを閲覧する"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "地図を表示する"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "地図を隠す"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "詳細を表示する"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "詳細を隠す"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "ファイルサイズ"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "バイト"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "キロバイト"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "メガバイト"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "ギガバイト"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "テラバイト"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "ファイル数"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "動画を表示する"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "動画を隠す"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "もっと見る…"
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "アイテムが見つかりません"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "選択された言語のサポート"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "ユーザーインターフェース"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "プライバシー"
diff --git a/searx/translations/nl/LC_MESSAGES/messages.po b/searx/translations/nl/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..b4e0614
--- /dev/null
+++ b/searx/translations/nl/LC_MESSAGES/messages.po
@@ -0,0 +1,1015 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# André Koot <meneer@tken.net>, 2014-2018
+# Nathan Follens, 2015-2018
+# Rejo Zenger <rejo@zenger.nl>, 2016-2017
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2018-09-22 06:46+0000\n"
+"Last-Translator: André Koot <meneer@tken.net>\n"
+"Language-Team: Dutch (http://www.transifex.com/asciimoo/searx/language/nl/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: nl\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "time-out"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "aanvraaguitzondering"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "onverwachte crash"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "bestanden"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "algemeen"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "muziek"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "sociale media"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "afbeeldingen"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "video’s"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "IT"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "nieuws"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "kaart"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "wetenschap"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Ongeldige instellingen, werk je voorkeuren bij"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "Ongeldige instellingen"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "zoekfout"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "{minutes} min geleden"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "{hours} uur, {minutes} min geleden"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Random value generator"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Genereer verschillende willekeurige waarden"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "Statistische functies"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "Bereken {functions} van de argumenten"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Snelheid zoekmachine (sec)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Laden van pagina’s (sec)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Aantal zoekresultaten"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "Scores"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "Scores per zoekresultaat"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Fouten"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(VEROUDERD)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "Dit object is vervangen door"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Voor deze publicatie is geen abstract beschikbaar."
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "Herschrijf HTTP-koppelingen naar HTTPS, indien mogelijk"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Oneindig scrollen"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "Volgende pagina automatisch laden bij bereiken van de onderkant van de huidige pagina"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Open Access DOI herschrijven"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Omzeil betaalmuren met een doorverwijzing naar vrij toegankelijke versies van publicaties indien beschikbaar"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Open koppelingen in nieuwe tabbladen"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "Resultaten worden standaard in hetzelfde venster geopend. Deze plug-in overschrijft het standaardgedrag zodat koppelingen in nieuwe tabbladen/vensters geopend worden. (JavaScript vereist)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Zoeken bij selecteren van categorie"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Zoekopdracht onmiddellijk uitvoeren wanneer een categorie geselecteerd wordt. Zet dit uit om meerdere categorieën te selecteren. (JavaScript vereist)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Geeft je IP-adres weer als de zoekopdracht ‘ip’ is en je gebruikersagent als de zoekopdracht ‘user agent’ bevat."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "Tracker-URL-verwijderaar"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "Verwijdert trackerargumenten van de gekregen URL"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Sneltoetsen als in Vim"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "Blader door zoekresultaten met sneltoetsen zoals die in Vim (JavaScript vereist). Druk op ‘h’ op de hoofdpagina of de pagina met resultaten voor hulp."
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Pagina niet gevonden"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "Ga naar %(search_page)s."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "zoekpagina"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "voorkeuren"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "over"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Voorkeuren"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Standaardcategorieën"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Zoektaal"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Standaardtaal"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Interfacetaal"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Auto-aanvullen"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "Afbeeldingenproxy"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Ingeschakeld"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Uitgeschakeld"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Methode"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "SafeSearch"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Strikt"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Gemiddeld"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Geen"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Thema’s"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Kleur"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Blauw (standaard)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Violet"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Groen"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Cyaan"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Oranje"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Rood"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "Momenteel gebruikte zoekmachines"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Naam zoekmachine"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Categorie"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Toestaan"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Blokkeren"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Deze instellingen worden bewaard in je cookies. Hierdoor hoeven wij niets over jou te bewaren."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Deze cookies zijn alleen voor je eigen gemak, we gebruiken deze cookies niet om je te volgen."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "bewaren"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Standaardinstellingen herstellen"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "terug"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "Zoek-URL"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Zoekresultaten downloaden"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Antwoorden"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Suggesties"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "vorige pagina"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "volgende pagina"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Zoeken naar..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Zoekmachinestatistieken"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "oorspronkelijke context"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Seeders"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Leechers"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "magneetlink"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "torrentbestand"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "Klik op het vergrootglas om te zoeken"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Resultaten op nieuwe tabbladen"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "Aan"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Uit"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "gecachet"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Geavanceerde instellingen"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Sluiten"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Fout!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Zoekmachine"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "een privacy-eerbiedigende, aanpasbare metazoekmachine"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "geproxyt"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "ondersteund"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "niet ondersteund"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Algemeen"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Zoekmachines"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Plug-ins"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Beantwoorders"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Cookies"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "Welke taal wil je gebruiken voor het zoeken?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Wijzig de taal van de lay-out"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Zoek tijdens het typen"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "Afbeeldingsresultaten via searx laden"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "Bepaal hoe de formulieren worden ingestuurd, <a href=\"http://nl.wikipedia.org/wiki/Hypertext_Transfer_Protocol#HTTP-requests\" rel=\"external\">lees meer over opvraagmethodes</a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Filteren op inhoud"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Opmaak van searx aanpassen"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Kies een stijl voor dit thema"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Stijl"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr "Open Access DOI herschrijven"
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Doorverwijzen naar vrij toegankelijke versies van publicaties, indien beschikbaar (plug-in vereist)"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Snelkoppeling"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "Geselecteerde taal"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Tijdspanne"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "Gem. duur"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "Max. duur"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "Dit is het overzicht van de instantantwoordmodules van searx."
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Naam"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Kernwoorden"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Beschrijving"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Voorbeelden"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "Dit is de lijst van cookies en hun waarden die searx op je computer opslaat."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "Met deze lijst kan je de openheid van searx beoordelen."
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Cookienaam"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Waarde"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "Zoek-URL van de huidig opgeslagen voorkeuren"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "Let op: aangepaste instellingen opgeven in de zoek-URL kan nadelig zijn voor je privacy, omdat het gegevens lekt aan de aangeklikte resultaatwebsites."
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Zoekresultaten"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "Probeer te zoeken naar:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "Zoekmachines konden geen resultaten ophalen"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Koppelingen"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Start zoeken"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "stats"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "Altijd"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "Gisteren"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "Vorige week"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "Vorige maand"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "Vorig jaar"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "Opgelet!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Het lijkt erop dat je searx voor de eerste keer gebruikt."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Informatie!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "er zijn momenteel geen cookies gedefinieerd."
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Er zijn momenteel geen gegevens beschikbaar."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "Zoekmachines konden geen resultaten ophalen."
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "Probeer het later opnieuw, of gebruik een andere searx server."
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Sorry!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "We konden geen resultaten vinden. Probeer een andere zoekopdracht, of zoek in meer categorieën."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Goed gedaan!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Instellingen opgeslagen."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "Oeps!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Er ging iets fout."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "toon media"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "verberg media"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Toon afbeelding"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Bekijk bron"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "toon kaart"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "verberg kaart"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "toon details"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "verberg details"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Bestandsgrootte"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "Bytes"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Aantal bestanden"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "toon video"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "verberg video"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Meer laden..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "Geen resultaat gevonden"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Ondersteunt geselecteerde taal"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "Gebruikersinterface"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "Privacy"
diff --git a/searx/translations/nl_BE/LC_MESSAGES/messages.po b/searx/translations/nl_BE/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..c4ef022
--- /dev/null
+++ b/searx/translations/nl_BE/LC_MESSAGES/messages.po
@@ -0,0 +1,1013 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Nathan Follens, 2018
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2018-06-24 07:59+0000\n"
+"Last-Translator: Nathan Follens\n"
+"Language-Team: Dutch (Belgium) (http://www.transifex.com/asciimoo/searx/language/nl_BE/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: nl_BE\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "time-out"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "aanvraaguitzondering"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "onverwachte crash"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "bestanden"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "algemeen"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "muziek"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "sociale media"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "afbeeldingen"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "video’s"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "IT"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "nieuws"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "kaart"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "wetenschap"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Ongeldige instellingen, werkt uw voorkeuren bij"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "Ongeldige instellingen"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "zoekfout"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "{minutes} min geleden"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "{hours} uur, {minutes} min geleden"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Willekeurigewaardegenerator"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Genereert verschillende willekeurige waarden"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "Statistische functies"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "Berekent {functions} van de argumenten"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Snelheid zoekmachien (sec)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Laden van pagina’s (sec)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Aantal zoekresultaten"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "Scores"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "Scores per zoekresultaat"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Fouten"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(VEROUDERD)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "Dit object is vervangen door"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Voor deze publicatie is geen abstract beschikbaar."
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "Herschrijft HTTP-koppelingen naar HTTPS, indien mogelijk"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Oneindig scrollen"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "Volgende pagina automatisch laden bij bereiken van den onderkant van de huidige pagina"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Open Access DOI herschrijven"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Omzeilt betaalmuren met een doorverwijzing naar vrij toegankelijke versies van publicaties indien beschikbaar"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Koppelingen openen in nieuwe tabbladen"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "Resultaten worden standaard in hetzelfde venster geopend. Deze plug-in overschrijft het standaardgedrag zodat koppelingen in nieuwe tabbladen/vensters worden geopend. (JavaScript vereist)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Zoeken bij selecteren van categorie"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Zoekopdracht onmiddellijk uitvoeren wanneer dat een categorie wordt geselecteerd. Zet dit uit voor meerdere categorieën te selecteren. (JavaScript vereist)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Geeft uw IP-adres weer als de zoekopdracht ‘ip’ is, en uwe gebruikersagent als de zoekopdracht ‘user agent’ bevat."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "Tracker-URL-verwijderaar"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "Verwijdert trackerargumenten van de gekregen URL"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Sneltoetsen gelijk in Vim"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "Bladert door zoekresultaten met sneltoetsen gelijk die in Vim (JavaScript vereist). Drukt op ‘h’ op de hoofdpagina of de pagina met resultaten voor hulp."
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Pagina niet gevonden"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "Ga naar %(search_page)s."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "zoekpagina"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "voorkeuren"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "over"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Voorkeuren"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Standaardcategorieën"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Zoektaal"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Standaardtaal"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Interfacetaal"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Auto-aanvullen"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "Afbeeldingsproxy"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Ingeschakeld"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Uitgeschakeld"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Methode"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "SafeSearch"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Strikt"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Gemiddeld"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Geen"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Thema’s"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Kleur"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Blauw (standaard)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Paars"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Groen"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Appelblauwzeegroen"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Oranje"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Rood"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "Momenteel gebruikte zoekmachienen"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Naam zoekmachien"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Categorie"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Toestaan"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Blokkeren"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Deze instellingen worden bewaard in uw cookies. Hierdoor hoeven wij niks over u te bewaren."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Deze cookies zijn alleen voor uw eigen gemak, we gebruiken deze cookies niet voor u te volgen."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "opslaan"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Standaardinstellingen herstellen"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "terug"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "Zoek-URL"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Zoekresultaten downloaden"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Antwoorden"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Suggesties"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "vorige pagina"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "volgende pagina"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Zoeken naar..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Zoekmachienstatistieken"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "oorspronkelijke context"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Seeders"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Leechers"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "magneetkoppeling"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "torrentbestand"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "Klikt op het vergrootglas voor te zoeken"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Resultaten op nieuwe tabbladen"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "Aan"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Uit"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "gecachet"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Geavanceerde instellingen"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Sluiten"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Fout!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Aangedreven door"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "een privacyrespecterend, aanpasbaar metazoekmachien"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "geproxyt"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "ondersteund"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "niet ondersteund"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Algemeen"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Zoekmachienen"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Plug-ins"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Beantwoorders"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Cookies"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "Welke taal wilt ge gebruiken voor het zoeken?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Wijzigt de taal van den opmaak"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Zoekt tijdens het typen"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "Afbeeldingsresultaten via searx laden"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "Bepaalt hoe dat de formulieren worden ingestuurd, <a href=\"http://nl.wikipedia.org/wiki/Hypertext_Transfer_Protocol#HTTP-requests\" rel=\"external\">leest meer over opvraagmethodes</a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Filteren op inhoud"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Opmaak van searx aanpassen"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Kiest ne stijl voor dit thema"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Stijl"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr "Open Access DOI herschrijven"
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Doorverwijzen naar vrij toegankelijke versies van publicaties, indien beschikbaar (plug-in vereist)"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Snelkoppeling"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "Geselecteerde taal"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Tijdspanne"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "Gem. duur"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "Max. duur"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "Dit is het overzicht van de instantantwoordmodules van searx."
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Naam"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Kernwoorden"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Beschrijving"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Voorbeelden"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "Dit is de lijst van cookies en hun waarden die searx op uwe computer opslaat."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "Met deze lijst kunt ge de openheid van searx beoordelen."
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Cookienaam"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Waarde"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "Zoek-URL van de momenteel opgeslagen voorkeuren"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "Let op: aangepaste instellingen opgeven in de zoek-URL kan nadelig zijn voor uw privacy, omdat het gegevens lekt aan de aangeklikte resultaatwebsites."
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Zoekresultaten"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "Probeert te zoeken naar:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "Zoekmachienen konden geen resultaten ophalen"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Koppelingen"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Start zoeken"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "stats"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "Altijd"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "Voorbijen dag"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "Voorbije week"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "Voorbije maand"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "Voorbije jaar"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "Opgelet!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Het lijkt erop dat ge searx voor den eerste keer gebruikt."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Informatie!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "der zijn momenteel geen cookies gedefinieerd."
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Der zijn momenteel geen gegevens beschikbaar."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "Zoekmachinen konden geen resultaten ophalen."
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "Probeert het later opnieuw, of gebruikt een andere instantie van searx."
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Sorry!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "We konden geen resultaten vinden. Probeert nen andere zoekopdracht, of zoekt in meer categorieën."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Goed gedaan!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Instellingen opgeslagen."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "Oeps!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Der is iets misgegaan."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "media tonen"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "media verbergen"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Afbeelding tonen"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Bron bekijken"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "kaart tonen"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "kaart verbergen"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "details tonen"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "details verbergen"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Bestandsgrootte"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "Bytes"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Aantal bestanden"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "video tonen"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "video verbergen"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Meer laden…"
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "Geen resultaat gevonden"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Ondersteunt geselecteerde taal"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "Gebruikersinterface"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "Privacy"
diff --git a/searx/translations/pl/LC_MESSAGES/messages.po b/searx/translations/pl/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..d0521ed
--- /dev/null
+++ b/searx/translations/pl/LC_MESSAGES/messages.po
@@ -0,0 +1,1014 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Artur <artur@komoter.pl>, 2017
+# Artur <artur@komoter.pl>, 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2017-11-20 13:39+0000\n"
+"Last-Translator: Artur <artur@komoter.pl>\n"
+"Language-Team: Polish (Poland) (http://www.transifex.com/asciimoo/searx/language/pl_PL/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: pl_PL\n"
+"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "przekroczenie maksymalnego dozwolonego czasu"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "wyjątek w żądaniu"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "niespodziewana awaria"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "pliki"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "ogólne"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "muzyka"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "media społecznościowe"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "zdjęcia"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "wideo"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "informatyka"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "wiadomości"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "mapa"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "nauka"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Nieprawidłowe ustawienia, proszę zmienić swoje preferencje"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "Nieprawidłowe ustawienia"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "błąd wyszukiwania"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "{minutes} minut(y) temu"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "{hours} godzin(y), {minutes} minut(y) temu"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Generator wartości losowych"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Wygeneruj różne wartości losowe"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "Funkcje statystyczne"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "Oblicz {functions} argumentów"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Czas wyszukiwania (sek)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Ładowanie strony (sek)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Liczba wyników"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "Wyniki"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "Wyniki na rezultat"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Błędy"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(PRZESTARZAŁE)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "Ten wpis został zastąpiony przez"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Streszczenie nie jest dostępne dla tej publikacji."
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "Nadpisuj hiperłącza HTTP na HTTPS, jeśli to możliwe"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Nieskończone przewijanie"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "Automatycznie ładuj następną stronę podczas przewijania do dolnej części bieżącej strony"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Nadpisywanie DOI z otwartym dostępem"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Unikaj opłat za dostęp, przekierowując do otwartych wersji publikacji, gdy są dostępne"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Otwórz hiperłącza wyników w nowych kartach przeglądarki"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "Wyniki są domyślnie otwierane w tym samym oknie. Ta wtyczka zastępuje domyślne zachowanie w celu otwarcia hiperłączy w nowych kartach/oknach. (Wymagany Javascript)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Szukaj po wybraniu kategorii"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Wykonaj wyszukiwanie natychmiast po wybraniu kategorii. Wyłącz, aby wybrać wiele kategorii. (Wymagany Javascript)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Wyświetla Twój adres IP, jeśli zapytanie to \"ip\", i Twojego agenta użytkownika, jeśli zapytanie zawiera \"user agent\"."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "Usuwanie elementów śledzących z URL-ów"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "Usuń argumenty elementów śledzących ze zwróconego adresu URL"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Skróty podobne do Vima"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "Poruszaj się po wynikach wyszukiwania za pomocą skrótów podobnych do Vima (wymagany Javascript). Naciśnij klawisz \"h\" na stronie głównej lub stronie wyników, aby uzyskać pomoc."
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Strona nie znaleziona"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "Przejdź do %(search_page)s."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "strona wyszukiwania"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "preferencje"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "O searx"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Preferencje"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Domyślne kategorie"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Język wyszukiwania"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Domyślny język"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Język interfejsu"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Autouzupełnienie"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "Proxy zdjęć"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Włączone"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Wyłączone"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Metoda"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "Bezpieczne wyszukiwanie"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Bezkompromisowe"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Umiarkowane"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Wyłączone"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Motywy"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Kolor"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Niebieski (domyślny)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Fioletowy"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Zielony"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Turkusowy"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Pomarańczowy"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Czerwony"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "Obecnie używane wyszukiwarki"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Nazwa wyszukiwarki"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Kategoria"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Pozwól"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Blokuj"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Ustawienia te są przechowywane w ciasteczkach, co pozwala nam nie przechowywać tych danych o Tobie."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Te ciasteczka służą wyłącznie Twojej wygodzie, nie używamy tych ciasteczek do śledzenia Ciebie."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "zapisz"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Przywróć domyślne"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "z powrotem"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "URL wyszukiwania"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Ściągnij wyniki"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Odpowiedzi"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Propozycje"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "poprzednia strona"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "następna strona"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Wyszukaj..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Statystyki wyszukiwarki"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "oryginalny kontekst"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Udostępniający"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Pobierający"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "hiperłącze magnetyczne"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "plik torrent"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "Kliknij na szkło powiększające, aby wykonać wyszukiwanie"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Wyniki w nowych kartach"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "Włączone"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Wyłączone"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "buforowane"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Zaawansowane ustawienia"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Zamknij"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Błąd!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Obsługiwane przez"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "szanująca prywatność, hackowalna wyszukiwarka metasearch"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "przesłane poprzez proxy"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "wspierane"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "niewspierane"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Ogólne"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Wyszukiwarki"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Wtyczki"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Respondenci"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Ciasteczka"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "W jakim języku wolisz wyszukiwać?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Zmień język układu"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Szukaj podczas pisania"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "Przesyłanie wyników obrazów poprzez proxy searx"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "Zmień sposób przesyłania formularzy, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">dowiedz się więcej o metodach HTTP</a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Filtruj treści"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Zmień układ searx"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Wybierz styl dla tego motywu"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Styl"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr "Podsystem DOI z otwartym dostępem"
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Przekierowanie do otwartych wersji publikacji, gdy są dostępne (wymagana wtyczka)"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Skrót"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "Wybrany język"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Zakres czasu"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "Śr. czas"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "Maksymalny czas"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "Oto lista modułów natychmiastowych odpowiedzi w searx."
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Nazwa"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Słowa kluczowe"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Opis"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Przykłady"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "Oto lista ciasteczek i ich wartości, które searx zapisuje na Twoim komputerze."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "Za pomocą tej listy możesz ocenić przezroczystość searx."
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Nazwa ciasteczka"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Wartość"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "Wyszukaj adres URL aktualnie zapisanych preferencji"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "Uwaga: określanie ustawień niestandardowych w adresie URL wyszukiwania może zmniejszyć prywatność, przenosząc dane do klikniętych stron z wyników."
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Wyniki wyszukiwania"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "Spróbuj wyszukać:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "Wyszukiwarki nie mogą pobrać wyników"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Hiperłącza"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Rozpocznij wyszukiwanie"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "statystyki"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "W każdej chwili"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "W ostatnim dniu"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "W ostatnim tygodniu"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "W ostatnim miesiącu"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "W ostatnim roku"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "Moment!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Wygląda na to, że po raz pierwszy używasz searx."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Informacja!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "obecnie nie zdefiniowano żadnych ciasteczek."
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Obecnie nie ma dostępnych danych."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "Wyszukiwarki nie mogą pobrać wyników."
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "Spróbuj ponownie później lub znajdź inną instancję searx."
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Przepraszamy!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "nie znaleźliśmy żadnych wyników. Użyj innego zapytania lub wyszukaj więcej kategorii."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Dobra robota!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Ustawienia zostały pomyślnie zapisane."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "O rany!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Coś poszło nie tak."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "pokaż media"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "ukryj media"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Pobierz obraz"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Pokaż źródło"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "pokaż mapę"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "ukryj mapę"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "pokaż szczegóły"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "ukryj szczegóły"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Rozmiar pliku"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "Bajtów"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "KiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Liczba plików"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "pokaż wideo"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "ukryj wideo"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Załaduj więcej..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "Nie znaleziono elementu"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Obsługuje wybrany język"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "Interfejs użytkownika"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "Prywatność"
diff --git a/searx/translations/pt/LC_MESSAGES/messages.po b/searx/translations/pt/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..d844673
--- /dev/null
+++ b/searx/translations/pt/LC_MESSAGES/messages.po
@@ -0,0 +1,1014 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Dickprince, 2017
+# Chacal Exodius, 2018
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2018-12-26 22:43+0000\n"
+"Last-Translator: Chacal Exodius\n"
+"Language-Team: Portuguese (http://www.transifex.com/asciimoo/searx/language/pt/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: pt\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "tempo esgotado"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "solicitar exceção"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "acidente inesperado"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "ficheiros"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "geral"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "música"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "redes sociais"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "imagens"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "vídeos"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "ti"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "notícias"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "mapa"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "ciência"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Definições inválidas, por favor edite as suas preferências"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "Configurações inválidas"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "erro de procura"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "{minutes} minuto(s) atrás"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "{hours} hora(s), {minutes} minuto(s) atrás"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Gerador de valores aleatórios"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Gerar valores aleatórios diferentes"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "Funções de estatística"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "Calcular {functions} dos argumentos"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Tempo de pesquisa (seg)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Página carregada (seg)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Número de resultados"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "Contagens"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "Contagens por resultado"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Erros"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(OBSOLETE)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "Esta entrada foi substituída por"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Nenhum resumo está disponível para esta publicação."
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "Reformulação de hiperligações HTTP para HTTPS se possível"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Deslocação Infinita"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "Carregar automaticamente a próxima página assim que se desloque para o fim da página atual"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Reescrita DOI de acesso aberto"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Evite acessos pagos acedendo a versões de livre acesso sempre que disponível"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Abrir resultados num novo separador"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "Por defeito os resultados são abertos no mesmo separador. Esta extensão sobreguarda o comportamento padrão de abrir hiperligações num novo separador. (Necessário JavaScript)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Pesquisar na seleção de categoria"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Realizar imediatamente uma pesquisa após selecionar uma categoria. Desative esta opção para selecionar várias categorias. (Necessário JavaScript)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Mostrar IP se a pesquisar por \"IP\" e mostrar o user agent se pesquisar por \"user agent\"."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "Remover rastreio de hiperligação"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "Remover argumentos de rastreio da hiperligação devolvida"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Atalhos Vim"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "Navegar resultados de pesquisa com atalhos semelhantes ao Vim (Necessário JavaScript). Pressione a tecla \"h\" para obter ajuda."
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Página não encontrada"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "Ir para %(search_page)s."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "pesquisar página"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "preferências"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "sobre"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Preferências"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Categorias Padrão"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Idioma de pesquisa"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Idioma padrão"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Idioma de interface"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Preenchimento automático"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "Proxy de imagem"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Ativado"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Desativado"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Método"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "Pesquisa segura"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Rigoroso"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Moderado"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Nenhum"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Temas"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Cor"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Azul (padrão)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Violeta"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Verde"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Ciano"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Laranja"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Vermelho"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "Motores de pesquisa utilizados"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Nome do motor de pesquisa"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Categoria"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Permitir"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Bloquear"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Estas definições são guardadas nos seus cookies, isto permite-nos que não guardemos informação sobre si."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Estes cookies servem somente para sua conveniência, não os utilizamos para o rastrear."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "Guardar"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Repor predefinições"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "Atrás"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "Procurar hiperligação"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Resultados de transferências"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Respostas"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Sugestões"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "página anterior"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "página seguinte"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Procurar por..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Estatísticas de motor de pesquisa"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "contexto original"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Seeder"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Leecher"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "hiperligação magnética"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "ficheiro torrent"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "Clique na lupa para realizar a pesquisa"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Resultados em novos separadores"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "Ligado"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Desligado"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "armazenados em cache"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Definições avançadas"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Fechar"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Erro!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Produzido por"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "um motor de metapesquisa editável e respeitador da sua privacidade"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "via proxy"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "suportado"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "não suportado"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Geral"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Motores de pesquisa"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Extensões"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Remetente"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Cookies"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "Que idioma de pesquisa prefere?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Alterar o idioma do esquema"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Pesquisar enquanto escreve"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "Resultados de imagens pelo proxy searx"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "Alterar como formulários são submetidos, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">aprender mais sobre métodos de pedidos</a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Filtrar conteúdo"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Alterar esquema do searx"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Escolher estilo para este tema"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Estilo"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr "Resolvedor DOI de Acesso Aberto"
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Redirecionar para versões de acesso aberto de publicações quando disponíveis (requer plug-in)"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Atalho"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "Idioma selecionado"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Período de tempo"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "Tempo médio"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "Tempo máximo"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "Esta é a lista dos modulos instantâneos de resposta do searx"
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Nome"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Palavras-chave"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Descrição"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Exemplos"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "Esta é a lista de cookies e os valores que o searx está a guardar no seu computador."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "Com essa lista pode aceder à transparência do searx."
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Nome de cookie"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Valor"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "URL de pesquisa das preferências salvas atualmente"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "Nota: a especificação de configurações personalizadas no URL de pesquisa pode reduzir a privacidade ao vazar dados para os sites de resultados clicados."
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Resultados de pesquisa"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "Tente pesquisar por:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "Mecanismos não podem recuperar resultados"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Hiperligações"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Começar pesquisa"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "estatísticas"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "Qualquer altura"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "Ontem"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "Semana passada"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "Mês passado"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "Ano passado"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "Atenção!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Parece que está a utilizar o searx pela primeira vez."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Informação!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "atualmente não existem cookies definidos"
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Não existem dados disponíveis."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "Mecanismos não podem recuperar resultados."
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "Por favor, tente novamente mais tarde ou encontre outra ocorrência de searx."
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Desculpe!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "não encontramos nenhum resultado. Por favor pesquise outra coisa ou utilize mais categorias na sua pesquisa."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Muito bem!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Definições guardadas com sucesso."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "Ora bolas!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Alguma coisa correu mal."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "mostrar média"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "esconder média"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Obter imagem"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Ver fonte"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "mostrar mapa"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "esconder mapa"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "mostrar detalhes"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "esconder detalhes"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Tamanho de ficheiro"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "Bytes"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Número de Ficheiros"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "mostrar vídeo"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "esconder vídeo"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Carregar mais..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "Nenhum item encontrado"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Suporta idioma selecionado"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "Interface de usuário"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "Privacidade"
diff --git a/searx/translations/pt_BR/LC_MESSAGES/messages.po b/searx/translations/pt_BR/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..6a0a6b8
--- /dev/null
+++ b/searx/translations/pt_BR/LC_MESSAGES/messages.po
@@ -0,0 +1,1019 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Adam Tauber <asciimoo@gmail.com>, 2017
+# Chacal Exodius, 2018
+# Gabriel Nunes <gabriel.hkr@gmail.com>, 2017
+# Guimarães Mello <maeslor@cryptolab.net>, 2017
+# Neton Brício <fervelinux@gmail.com>, 2015
+# pizzaiolo, 2016
+# shizuka, 2018
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2018-08-06 05:21+0000\n"
+"Last-Translator: Chacal Exodius\n"
+"Language-Team: Portuguese (Brazil) (http://www.transifex.com/asciimoo/searx/language/pt_BR/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: pt_BR\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "tempo esgotado"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "falha na requisição"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "erro inesperado"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "arquivos"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "geral"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "áudio"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "redes sociais"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "imagens"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "vídeos"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "códigos"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "notícias"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "mapas"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "ciência"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Configurações inválidas, por favor, edite suas preferências"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "Configurações inválidas"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "erro de busca"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "{minutos} minuto(s) atrás"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "{hours} hora(s), {minutes} minuto(s) atrás"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Gerador de valor aleatório"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Gere diferentes valores aleatórios"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "Funções estatísticas"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "Compute {functions} dos argumentos"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Tempo do motor (segundos)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Carregamento da página (sec)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Número de resultados"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "Pontuações"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "Pontuações por resultado"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Erros"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(OBSOLETA)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "Esta entrada foi substituída por"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Nenhum resumo disponível para essa publicação."
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "Redirecionar conexões HTTP para HTTPS, se possível"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Scroll infinito"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "Automaticamente carregar a próxima página quando ir até o fim da página atual"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Reescrita DOI de acesso aberto"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Evita \"paywalls\" ao redirecionar para versões de acesso livre de publicações, quando possível"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Abrir resultados em novas abas do navegador"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "Os resultados são abertos na mesma janela por padrão. Este complemento muda o comportamento padrão ao abrir links em novas abas/janelas (JavaScript necessário)."
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Pesquisar na categoria selecionada"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Executar a busca imediatamente se a categoria está selecionada. Desativar para selecionar várias categorias. (Necessário JavaScript)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Exibe o seu IP se a consulta é \"ip\" e seu agente de usuário, se a consulta contém \"user agent\"."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "Remover Tracker da url"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "Remover argumentos de url retornáveis"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Atalhos estilo Vim"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "Navegar pelos resultados de busca com atalhos à la Vim (JavaScript necessário). Aperte \"h\" na página de resultados para obter ajuda."
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Página não encontrada"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "Ir a %(search_page)s."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "página de busca"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "configurações"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "sobre"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Configurações"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Categoria padrão"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Idioma de busca"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Língua padrão"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Idioma da interface "
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Autocompletar"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "Imagem proxy"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Habilitado "
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Desabilitado"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Método"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "Busca Segura"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Forte"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Moderado"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Nenhum"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Temas"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Cor"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Azul (padrão)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Violeta"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Verde"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Ciano"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Laranja"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Vermelho"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "Serviço de busca usado atualmente"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Nome do serviço"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Categoria"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Ativo"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Bloqueado"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Essas configurações são armazenadas em seus cookies, nos não armazenamos nenhum dado a seu respeito."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Estes cookies servem ao seu único propósito, nós não usamos esses cookies para rastreá-lo."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "salvar"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Redefinir configurações"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "voltar"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "Buscar URL"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Resultados para download"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Perguntas"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Sugestões"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "Página anterior"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "Próxima página"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Buscar por..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Estatísticas de busca"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "Contexto original"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Semeador"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Leecher"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "Link magnético"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "Arquivo torrent"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "Clique na lupa para executar a busca"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Resultados em novas abas"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "Ligado"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Desligado"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "em cache"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Configurações avançadas"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Fechar"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Erro!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Distribuído por"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "um mecanismo de metabusca que respeita a sua privacidade"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "por proxy"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "suportado"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "não suportado"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Geral"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Buscadores"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Complementos"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Operadores de Resposta"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Cookies"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "Qual idioma padrão para pesquisar?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Alterar o idioma da interface"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Exibir sugestões enquanto você digita"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "Usar proxy para resultado de imagens exibidas através do searx"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "Alterar o modo como os formulários são submetidos<a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">ganhar desempenho sobre métodos de solicitação</a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Filtrar conteúdo"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Alterar interface do searx"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Escolher um estilo para este tema"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Estilo"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr "Resolvedor DOI de Acesso Aberto"
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Quando disponível, redirecionar para as versões de acesso livre das publicações (necessário plugin)"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Atalhos"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "Idioma selecionado"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Intervalo de tempo"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "Tempo médio"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "Tempo máximo"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "Esta é a lista do módulos de resposta instantânea do searx."
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Nome"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Palavras-chave"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Descrição"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Exemplos"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "Esta é a lista de cookies que o searx está armazenando em seu computador."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "Com essa lista, você pode avaliar a transparência do searx."
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Nome do cookie"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Valor"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "URL de Pesquisa das configurações salvas atuais"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "Nota: especificar configurações personalizadas na URL de pesquisa pode reduzir a privacidade ao vazar dados para os sites clicados nos resultados."
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Procurar resultados"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "Tente pesquisar por:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "Os motores de busca não conseguiram obter resultados"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Links"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Iniciar busca"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "estatísticas"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "A qualquer momento"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "Ontem"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "Semana passada"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "Mês passado"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "Ano passado"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "Atenção!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Parece que você está usando o searx pela primeira vez."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Informação"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "Atualmente, não há cookies definidos"
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Atualmente, não há dados disponíveis."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "Os motores de busca não podem obter resultados."
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "Por favor, tente novamente mais tarde ou procure outra instância do searx."
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Desculpe!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "Não encontramos nenhum resultado. Utilize outra consulta ou pesquisa em mais categorias."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Muito bem!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Configurações salvas com sucesso"
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "Oh não!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Algo deu errado."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "exibir mídia"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "ocultar mídia"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Obter imagem"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Ver código-fonte"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "exibir mapas"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "ocultar mapas"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "Exibir detalhes"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "ocultar detalhes"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Tamanho do arquivo"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "Bytes"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Número de Arquivos"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "exibir vídeo"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "ocultar vídeo"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Mostrar mais..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "Nenhum item encontrado"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Suporta a língua selecionada"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "Interface de usuário"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "Privacidade"
diff --git a/searx/translations/ro/LC_MESSAGES/messages.po b/searx/translations/ro/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..7cfd1be
--- /dev/null
+++ b/searx/translations/ro/LC_MESSAGES/messages.po
@@ -0,0 +1,1014 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# adrian.fita <adrian.fita@gmail.com>, 2015
+# Daniel Șerbănescu <daniel@serbanescu.dk>, 2018
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2018-11-15 21:18+0000\n"
+"Last-Translator: Daniel Șerbănescu <daniel@serbanescu.dk>\n"
+"Language-Team: Romanian (http://www.transifex.com/asciimoo/searx/language/ro/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: ro\n"
+"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "timp alocat expirat"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "excepție la cerere"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "terminare prematură neașteptată"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "fișiere"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "generale"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "muzică"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "rețele sociale"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "imagini"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "videouri"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "informatică"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "știri"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "hărți"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "știință"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Configurări nevalide, editați preferințele"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "Configurări nevalide"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "eroare de căutare"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "{minutes} minut(e) în urmă"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "{hours} oră(e), {minutes} minut(e) în urmă"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Generator de valori aleatorii"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Generează valori aleatoare diferite"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "Funcții statistice"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "Calculează {functions} din argumente"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Timpul motorului (sec)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Încărcarea paginii (sec)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Numărul de rezultate"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "Scoruri"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "Scoruri per rezultat"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Erori"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(ÎNVECHIT)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "Această intrare a fost perimată de"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Niciun abstract disponibil pentru această publicație."
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "Rescrie legăturile HTTP cu HTTPS dacă e posibil"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Derulare infinită"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "Încarcă automat pagina următoare când se derulează la baza paginii curente"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Rescriere către acces deschis DOI"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Evită „zidurile de plată” redirecționând către versiuni cu acces deschis ale publicațiilor când sunt disponibile"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Deschide legăturile rezultate în taburi noi"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "Rezultatele sunt deschise în aceeași fereastră în mod implicit. Acest modul suprascrie acțiunea implicită de a deschide legături în ferestre/taburi noi. (Necesită JavaScript)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Caută la selectarea categoriei"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Execută căutarea imediat dacă o categorie este selectată. Dezactivează pentru a selecta categorii multiple. (Necesită JavaScript)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Afișează IP-ul dacă interogarea este „ip” și agentul de utilizator dacă interogarea conține „user agent”."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "Eliminator de URL pentru urmăritor"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "Elimină argumentele urmăritorului din URL-ul returnat"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Scurtături de tastatură în stilul Vim"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "Navighează rezultatele căutării cu scurtături de tastatură în stilul Vim (necesită JavaScript). Apăsați tasta „h” în pagina principală sau în pagina cu rezultate pentru a obține ajutor."
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Pagină negăsită"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "Navighează la %(search_page)s"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "pagină de căutare"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "preferințe"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "despre"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Preferințe"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Categorii implicite"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Limba de căutare"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Limba implicită"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Limba interfeței"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Completare automată"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "Proxy de imagini"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Activat"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Dezactivat"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Metodă"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "CăutareSigură"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Strict"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Moderat"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Nimic"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Teme"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Culoare"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Albastru (implicit)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Violet"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Verde"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Azuriu"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Portocaliu"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Roșu"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "Motoarele de căutare folosite curent"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Numele motorului"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Categorie"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Permite"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Blochează"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Aceste configurări sunt stocate în cookie-uri, ceea ce ne permite să nu stocăm aceste date despre dumeavoastră."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Aceste cookie-uri servesc doar pentru conveniența dumneavoastră, noi nu stocăm aceste cookie-uri pentru a vă urmări."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "salvează"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Restabilește la valorile implicite"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "înapoi"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "URL de căutare"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Descarcă rezultate"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Răspunsuri"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Sugestii"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "pagina anterioară"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "pagina următoare"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Caută după..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Statisticile motorului"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "contextul original"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Partener"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Sursă incompletă"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "legătură magnet"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "fișier torrent"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "Apăsați pe lupă pentru a executa căutarea"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Rezultate în taburi noi"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "Pornit"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Oprit"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "stocat temporar"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Configurări avansate"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Închide"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Eroare!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Motorizat de"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "un meta-motor de căutare care respectă confidențialitatea"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "delegat"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "suporat"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "nesuportat"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Generale"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Motoare"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Module"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Răspunzători"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Cookie-uri"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "Ce limbă preferați pentru căutare?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Schimbă limba aspectului"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Găsește lucruri în timp ce tastezi"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "Transferă rezultatele cu imagini prin searx"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "Modificați cum sunt trimise formularele, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">învățați mai multe despre metodele de transfer</a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Filtrează conținutul"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Schimbă aspectul lui searx"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Alegeți stilul pentru această temă"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Stil"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr "Rezolvator de acces deschis DOI"
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Redirecționează către versiuni cu acces deschis ale publicațiilor când sunt disponibile (modul necesar)"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Scurtătură"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "Limba selectată"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Interval de timp"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "Timp mediu"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "Timp maxim"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "Aceasta este lista de module de răspundere instantă a lui searx."
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Nume"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Cuvinte cheie"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Descriere"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Exemple"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "Aceasta este lista de cookie-uri și valorile lor pe care searx le stochează pe calculatorul dumneavoastră."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "Cu acea listă puteți evalua nivelul de transparență al lui searx."
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Nume cookie"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Valuare"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "URL-ul de căutare al preferințelor salvate curent"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "Notă: specificând configurări personalizate în URL-ul de căutare poate reduce nivelul de confidențialitate prin scurgerea datelor către siturile accesate la căutare."
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Rezultatele căutării"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "Încercați să căutați după:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "Motoarele nu pot obține rezultate"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Legături"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Pornește căutarea"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "statistici"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "Oricând"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "Ultima zi"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "Ultima săptămână"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "Ultima lună"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "Ultimul an"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "Atenție!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Se pare că folosiți searx pentru prima dată."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Informație!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "momentan, nu există cookie-uri definite"
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Deocamdată nu există date disponibile."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "Motoarele nu pot obține rezultate"
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "Încercați din nou mai târziu sau folosiți o altă instanță searx-"
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Ne pare rău!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "n-am găsit nici un rezultat. Folosiți o altă interogare sau căutați în mai multe categorii."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Bravo!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Configurările au fost salvate cu succes."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "Vai!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Ceva n-a funcționat corect."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "arată media"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "ascunde media"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Obține imaginea"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Vizualizare sursă"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "arată harta"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "ascunde harta"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "arată detalii"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "ascunde detalii"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Dimensiune fișier"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "Octeți"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Numărul fișierelor"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "arată video"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "ascunde video"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Încarcă mai multe..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "Niciun element găsit"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Suportă limba selectată"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "Interfața pentru utilizator"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "Confidențialitate"
diff --git a/searx/translations/ru/LC_MESSAGES/messages.po b/searx/translations/ru/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..befe7f9
--- /dev/null
+++ b/searx/translations/ru/LC_MESSAGES/messages.po
@@ -0,0 +1,1018 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Andrey, 2017-2019
+# dimqua <dimqua@riseup.net>, 2015
+# dimqua <dimqua@riseup.net>, 2015
+# dimqua <dimqua@riseup.net>, 2017
+# John DOe <is-kir@ya.ru>, 2018
+# Дмитрий Михирев, 2016-2017
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2019-01-05 12:11+0000\n"
+"Last-Translator: Andrey\n"
+"Language-Team: Russian (http://www.transifex.com/asciimoo/searx/language/ru/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: ru\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "таймаут"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "ошибка выполнения запроса"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "неожиданный сбой"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "файлы"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "общие"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "музыка"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "социальные сети"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "картинки"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "видео"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "it"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "новости"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "карты"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "наука"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Неправильные параметры, измените настройки"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "Настройки некорректны"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "ошибка поиска"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "{minutes} минут(а) назад"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "{hours} час(ов), {minutes} минут(а) назад"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Генератор случайных значений"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Генерирует различные случайные значения"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "Статистические функции"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "Вычисляет {functions} от аргументов"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Время поиска (сек)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Загрузка страниц (сек)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Количество результатов"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "Попаданий"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "Попаданий за результат"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Ошибки"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(УСТАРЕВШИЕ)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "Эта запись была заменена на"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Нет аннотации для этой публикации."
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "Заменять в ссылках HTTP на HTTPS если это возможно"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Бесконечная прокрутка"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "Автоматически загружать следующую страницу при прокрутке до конца текущей"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Перезапись открытого доступа к DOI"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Позволяет получить бесплатную версию запрашиваемой статьи, если таковая имеется"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Открывать ссылки из результатов поиска в новых вкладках"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "По умолчанию результаты открываются в том же окне. Этот плагин переопределяет поведение по умолчанию для открытия ссылок в новых вкладках/окнах. (Требуется JavaScript)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Поиск по выбранной категории"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Выполнять поиск немедленно, если выбрана категория. Отключите для выбора нескольких категорий. (требуется JavaScript)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Отображает ваш IP-адрес при запросе \"ip\" и пользовательский агент при запросе \"user agent\"."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "Удаление трекинга URL-адресов"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "Удаляет аргументы отслеживания из URL-адреса"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Горячие клавиши в стиле vim"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "Навигация по результатам поиска с помощью горячих клавиш в стиле Vim (требуется JavaScript). Чтобы получить справку, нажмите клавишу \"h\" на главной странице или на страницах результатов."
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Страница не найдена"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "Перейти к %(search_page)s."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "страница поиска"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "настройки"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "о сайте"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Настройки"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Категории по умолчанию"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Язык поиска"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Язык по умолчанию"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Язык интерфейса"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Автозавершение"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "Прокси для изображений"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Включен"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Выключен"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Метод"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "Безопасный поиск"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Строгий"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Умеренный"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Выключен"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Темы"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Цвет"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Синий (по умолчанию)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Фиолетовый"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Зеленый"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Бирюзовый"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Оранжевый"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Красный"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "Используемые поисковые системы"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Имя поисковой системы"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Категория"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Разрешить"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Блокировать"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Настройки сохраняются в ваших файлах cookie, что позволяет нам не хранить никаких сведений о вас."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Эти файлы используются исключительно для вашего удобства, мы не отслеживаем вашу активность."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "сохранить"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Восстановить настройки по умолчанию"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "назад"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "Ссылка на поиск"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Загрузить результаты"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Ответы"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Предложения"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "предыдущая страница"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "следующая страница"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Искать..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Статистика поисковых систем"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "исходный контекст"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Сидер"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Личер"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "магнет-ссылка"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "торрент-файл"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "Нажмите на лупу, чтобы выполнить поиск"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Результаты в новых вкладках"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "Вкл."
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Выкл."
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "архив"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Дополнительные настройки"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Закрыть"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Ошибка!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Основано на"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "уважающая вашу приватность, открытая метапоисковая система"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "proxied"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "поддерживается"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "не поддерживается"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Общие"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Поисковые системы"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Плагины"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Ответчики"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Cookie"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "Какой язык предпочтителен для поиска?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Изменение языка сайта"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Поисковые предложения по мере ввода"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "Проксировать найденные изображения с помощью searx"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "Изменяет способ отправки запросов. <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">Узнать больше о методах запроса</a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Фильтрация контента"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Изменить вид сайта"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Стиль для выбранной темы"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Стиль"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr "Распознаватель открытого доступа к DOI"
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Перенаправление на открытые версии публикаций при их наличии (требуется плагин)"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Сокращение"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "Выбранный язык"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Временной диапазон"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "Среднее время"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "Максимальное время"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "Это список модулей мгновенного ответа searx"
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Имя"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Ключевые слова"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Описание"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Примеры"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "Это список файлов cookie и их значения, которые searx хранит на вашем компьютере."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "С помощью этого списка можно оценить прозрачность searx."
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Имя файла cookie"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Значение"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "URL поиска для текущих сохраненных параметров"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "Учтите, что укаание пользовательских настроек в URL поиска может привести к их утечке к посещаемым сайтам из поисковой выдачи."
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Результаты поиска"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "Попробуйте поискать:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "Движки не могут получить результаты"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Ссылки"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Начать поиск"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "статистика"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "Когда угодно"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "Последние сутки"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "Последняя неделя"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "Последний месяц"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "Последний год"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "Эй!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Похоже, вы используете searx впервые."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Информация!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "в настоящее время не определены файлы cookie."
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "На данный момент данные недоступны."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "Движки не могут получить результаты."
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "Пожалуйста, попробуйте позже или воспользуйтесь другим сервером searx."
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Сожалеем!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "мы не нашли никаких результатов. Попробуйте другой запрос или поищите в других категориях."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Отлично!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Настройки успешно сохранены."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "Вот черт!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Что-то пошло не так."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "показать медиа"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "скрыть медиа"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Скачать изображение"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Посмотреть источник"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "показать карту"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "скрыть карту"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "показать подробности"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "скрыть подробности"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Размер файла"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "Байт"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "КБ"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "МБ"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "ГБ"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "ТБ"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Число файлов"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "показать видео"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "скрыть видео"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Загрузить еще…"
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "Ничего не найдено"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Поддержка выбранного языка"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "Интерфейс пользователя"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "Приватность"
diff --git a/searx/translations/sk/LC_MESSAGES/messages.po b/searx/translations/sk/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..ebf1bba
--- /dev/null
+++ b/searx/translations/sk/LC_MESSAGES/messages.po
@@ -0,0 +1,1013 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Jan Hovancik, 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2017-11-01 20:31+0000\n"
+"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
+"Language-Team: Slovak (http://www.transifex.com/asciimoo/searx/language/sk/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: sk\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr ""
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr ""
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr ""
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "súbory"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "všeobecné"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "hudba"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "sociálne médiá"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "obrázky"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "videá"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "technika"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "správy"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "mapy"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "veda"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Neplatné nastavenia, upravte svoje hodnoty, prosím"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr ""
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "chyba vyhľadávania"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "{minutes} min. pred"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "{hours} hod., {minutes} min. pred"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Generátor nahodných hodnôt"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Vytvoriť iné náhodné hodnoty"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "Štatistické funkcie"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "Vypočítať {functions} argumentov"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Načítanie vyhľadávača (sek)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Načítanie stránky (sek)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Počet výsledkov"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr ""
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr ""
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Chyby"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(ZASTARANÉ)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "Táto položka bola nahradená"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr ""
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "Prepísať odkazy HTTP na HTTPS, ak je to možné"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Nekonečné posúvanie"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "Automaticky načítať ďalšiu stránku pri posunutí na koniec aktuálnej stránky"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr ""
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Vyhnúť sa plateným bránam presmerovaním na verejne prístupné verzie publikácií ak sú k dispozícii"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Otvoriť odkazy v novom tabe"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "Výsledky sú otvorené v rovnakom okne predvolene. Tento plugin prepíše predvolené správanie otvoriania odkazov na nových taboch a oknách. (Je potrebný JavaScript)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Vyhľadávanie pri výbere kategórie"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Vyhľadávať okamžite, ak je kategória vybraná. Vypnúť pre vyberanie viacerých kategórií. (Je potrebný JavaScript)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Zobrazí vašu IP ak je dotaz \"ip\" a user agenta ak dotaz obsahuje \"user agent\"."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "Odstraňovanie sledovacích argumentov"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "Odstrániť sledovacie argumenty z vrátenej URL"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Skratky ako vo VIM"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "Prechádzať výsledky vyhľadávania klávesovými skratkami ako VIM (je potrebný JavaScript). Stlačte klávesy \"h\" na hlavnej stránke alebo na stránke s výsledkami pre zobrazenie pomoci."
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Stránka sa nenašla."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "Choď na %(search_page)s."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "stránka vyhľadávania"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "nastavenia"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "o nás"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Nastavenia"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Predvolené kategórie"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Jazyk vyhľadávania"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Predvolený jazyk"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Jazyk rozhrania"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Automatické dokončovanie"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "Proxy pre obrázky"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Povolené"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Zakázané"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Metóda"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "Bezpečné vyhľadávanie"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Striktné"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Mierne"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Žiadne"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Téma"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Farba"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Modrá (predvolené)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Fialová"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Zelená"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Azúrová"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Oranžová"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Červená"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "poruba@contours.cz"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Názov vyhľadávača"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Kategória"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Povoliť"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Blokovať"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Tieto nastavenia sú uložené v cookies, čo nám umožňuje neukladať dáta o vás na našej strane."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Tieto cookies slúžia výhradné pre vaše pohodlie a nie sú používané na sledovanie."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "uložiť"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Obnoviť predvolené"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "späť"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "Adresa URL vyhľadávania"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Výsledky na stiahnutie"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Odpovede"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Návrhy"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "predchádzajúca strana"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "ďalšia strana"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Hľadať..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Štatistiky vyhľadávača"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "pôvodný kontext"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "odkaz na magnet"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "torrent súbor"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "Kliknite na lupu pre vyhľadávanie"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Výsledky v novom tabe"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "Zapnuté"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Vypnuté"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "z vyrovnávacej pamäte"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Pokročilé nastavenia"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Zatvoriť"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Chyba!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Používame"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "prispôsobitelný meta-vyhľadávač, ktorý rešpektuje vaše súkromie"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "cez proxy"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Všeobecné"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Vyhľadávače"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Zásuvné moduly"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Rýchle odpovede"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Cookies"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "Aký jazyk preferujete pre vyhľadávanie?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Zmena jazyku rozhrania"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Vyhľadávať počas písania"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "Zobrazovanie výsledkov obrázkov cez searx proxy"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "Zmeniť spôsob, akým sú odosielané formuláre, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">dozvedieť sa viac o týchto metódach</a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Filtrovanie obsahu"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Zmena rozhrania searx"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Vyberte si štýl pre túto tému"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Štýl"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Skratka"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Časový rozsah"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "Priemerný čas"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "Maximálny čas"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "Toto je zoznam modulov rýchlej odpovede pre searx."
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Názov"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Kľúčové slová"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Popis"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Príklady"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "Toto je zoznam cookies a ich hodnôt uložených searx na vašom počítači"
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "Pomocou tohto zoznamu môžte vidieť transparentnosť searx."
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Názov cookie"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Hodnota"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr ""
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Výsledky vyhľadávania"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr ""
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr ""
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Odkazy"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Začať vyhľadávanie"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "štatistiky"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "Kedykoľvek"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "Posledný deň"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "Posledný týždeň"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "Posledný mesiac"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "Posledný rok"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "Pozor!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Zdá sa, že používate searx prvýkrát."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Informácia!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "momentálne nie su definované žiadne cookies."
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Momentálne nie su dostupné žiadne dáta."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr ""
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr ""
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Je nám ľúto!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "nepodarilo sa nájsť žiadne výsledky. Skúste použiť iné zadanie alebo vyhľadávajte vo viacerých kategóriach. "
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Dobrá práca!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Nastavenia sa uložili."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "Ó nie!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Stalo sa niečo neočakávané."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "ukázať médiá"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "skryť médiá"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Získať obrázok"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Zobraziť zdroj"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "ukázať mapu"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "skryť mapu"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "ukázať detaily"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "skryť detaily"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Veľkosť súboru"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "bajtov"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Počet súborov"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "ukázať video"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "skryť video"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Načítať viac..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr ""
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Podporuje zvolený jazyk"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr ""
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr ""
diff --git a/searx/translations/sl/LC_MESSAGES/messages.po b/searx/translations/sl/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..3ce7f97
--- /dev/null
+++ b/searx/translations/sl/LC_MESSAGES/messages.po
@@ -0,0 +1,1013 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# asladic <ales.sladic@gmail.com>, 2017-2018
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2018-05-01 08:59+0000\n"
+"Last-Translator: asladic <ales.sladic@gmail.com>\n"
+"Language-Team: Slovenian (http://www.transifex.com/asciimoo/searx/language/sl/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: sl\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "presežena časovna omejitev"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "napaka poizvedbe"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "nepričakovana napaka"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "datoteke"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "splošno"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "glasba"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "družabna omrežja"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "slike"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "videi"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "informatika"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "novice"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "zemljevid"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "znanost"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Neveljavne nastavitve. Prosimo, preverite vašo konfiguracijo"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "Neveljavne nastavitve"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "napaka pri iskanju"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "{minutes} minut nazaj"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "pred {hours} urami in {minutes} minut"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Generator naključnih števil"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Generiraj različne naključne vrednosti"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "Statistične funkcije"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "Izračunaj {functions} argumentov"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Čas iskanja (sek.)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Čas nalaganja (sek.)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Število zadetkov"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "Točke"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "Točke na zadetek"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Napake"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(ZASTARANO)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "Ta vnos je presegel"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr ""
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "Prepisovanje HTTP povezav v HTTPS, ko je to mogoče"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Neskončno drsenje"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "Samodejno naloži naslednjo stran ob ogledu dna trenutne strani"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr ""
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Izogibanje plačilom s preusmeritvijo na prostodostopne različice publikacij, ko so na voljo"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Odpri povezave zadetkov v novih zavihkih brskalnika"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "Zadetki so privzeto odprti v istem oknu. Ta vstavek spremeni privzeto obnašanje tako, da se povezave odprejo v novih zavihkih/oknih. (Potrebuje JavaScript)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Išči ob izboru kategorije"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Takoj izvedi iskanje, če je izbrana kategorija. Onemogočiti za izbor več kategorij. Potrebuje (JavaScript)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Prikaže IP naslov, če je niz poizvedbe \"ip\", in uporabniški agent, če je niz \"user agent\"."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "Odstranjevalec sledilcev URL"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "Odstrani argumente sledilcev iz vrnjenega URL"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Tipkovne bližnjice Vim"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "Premikanje po zadetkih z tipkovnimi bližnjicami Vim (zahtevan JavaScript). Pritisnite tipko \"h\" na glavni strani ali strani z zadetki za pomoč."
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Strani ni bilo mogoče najti"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "Pojdi na %(search_page)s."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "stran za iskanje"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "nastavitve"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "več o"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Nastavitve"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Privzete kategorije"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Jezik iskanja"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Privzeti jezik"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Jezik vmesnika"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Samodejni predlogi"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "Posredniški strežnik za slike"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Omogočeno"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Onemogočeno"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Metoda"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "Varno iskanje"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Strogo"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Zmerno"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Brez"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Teme"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Barva"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Modra (privzeto)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Vijolična"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Zelena"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Cian modra"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Oranžna"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Rdeča"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "Trenutno uporabljeni iskalniki"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Ime iskalnika"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Kategorija"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Dovoli"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Blokiraj"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Te nastavitve so shranjene v vaših piškotkih; to nam omogoča, da ne hranimo teh podatkov o vas."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Ti piškotki so za boljšo izkušnjo, ne uporabljamo jih za sledenje."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "shrani"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Ponastavi na privzeto"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "nazaj"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "Iskalni URL"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Prenesi zadetke"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Odgovori"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Predlogi"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "prejšnja stran"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "naslednja stran"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Poišči..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Statistike searx"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "originalna stran"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Sejalec"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Odjemalec"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "magnetna povezava"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "datoteka .torrent"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "Kiknite na lupo za iskanje"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Zadetki v novih zavihkih"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "Vklopljeno"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Izklopljeno"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "predpomnjeno"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Napredne nastavitve"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Zapri"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Napaka!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Omogočeno z"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "razširljiv metaiskalnik, ki spoštuje vašo zasebnost"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "preko posredniškega strežnika"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "podprto"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "ni podprto"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Splošno"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Iskalniki"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Vtičniki"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Ponudniki odgovorov"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Piškotki"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "V katerem jeziku želite iskati?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Spremeni jezik vmesnika"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Iščite že med tipkanjem"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "Uporaba searx kot posredniški strežnik za slike"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "Spremeni, kako se pošiljajo obrazci, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">, več o metodah za zahtevke </a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Filtriraj vsebino"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Spremeni izgled searx"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Izberite stil za trenutno temo"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Stil"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Preusmeri na prosto dostopne različice publikacij, ko so na voljo (zahtevan vtičnik)"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Bližnjica"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "Izbrani jezik"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Časovni razpon"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "Povprečni čas"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "Največji čas"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "To je seznam modulov searx za takojšnje odgovore."
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Ime"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Ključne besede"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Opis"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Primeri"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "To je seznam piškotkov in pripadajočih vrednosti, ki jih searx hrani na vašem računalniku."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "S tem seznamom lahko ocenite transparentnost searx."
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Ime piškotka"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Vrednost"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "Iskalni URL trenutno shranjenih nastavitev"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "Opomba: navajanje lastnih nastavitev v iskalnem URL lahko vodi do zmanjšane zasebnosti preko podajanja podatkov izbranim rezultatom."
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Zadetki iskanja"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "Poskusite iskati:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "Iskalniki ne morejo pridobiti rezultatov"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Povezave"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Začni iskati"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "statistike"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "Kadarkoli"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "V zadnjem dnevu"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "V zadnjem tednu"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "V zadnjem mesecu"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "V zadnjem letu"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "Pozor!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Prvič uporabljate searx."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Informacije!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "Trenutno ni definiranih piškotkov."
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Trenutno ni podatkov na voljo."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "Iskalniki ne morejo pridobiti rezultatov."
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "Prosimo, poskusite kasneje tu ali na drugi instanci searx."
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Škoda!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "Nismo našli zadetkov. Uporabite drugo poizvedbo ali pa razširite nabor kategorij za iskanje."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Opravljeno!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Nastavitve so bile uspešno shranjene."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "Ojej!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Nekaj je bilo narobe."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "pokaži medijske vsebine"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "skrij medijske vsebine"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Pridobi sliko"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Ogled vira"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "prikaži zemljevid"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "skrij zemljevid"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "prikaži podrobnosti"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "skrij podrobnosti"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Velikost"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "Bajti"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Število datotek"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "pokaži video"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "skrij video"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Naloži več..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "Ni zadetkov"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Podpira izbrani jezik"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "Uporabniški vmesnik"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "Zasebnost"
diff --git a/searx/translations/sr/LC_MESSAGES/messages.po b/searx/translations/sr/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..b676f3d
--- /dev/null
+++ b/searx/translations/sr/LC_MESSAGES/messages.po
@@ -0,0 +1,1013 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# jugi1, 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2017-11-03 11:24+0000\n"
+"Last-Translator: jugi1\n"
+"Language-Team: Serbian (http://www.transifex.com/asciimoo/searx/language/sr/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: sr\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "пауза"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "захтевај изузетак"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "неочекивани пад"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "фајлови"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "уопштено"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "музика"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "друштвени медији"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "слике"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "видео"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "ит"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "новости"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "мапа"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "наука"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Неважеће поставке, молимо уредите свој избор"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "Неважећа подешавања"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "грешка у претрази"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "{minutes} минут(а) назад"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "{hours} час(a), {minutes} минут(а) назад"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Генератор случајних вредности"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Генеришите различите случајне вредности"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "Статистичке функције"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "Израчунајте {функције} аргумената"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Време претраге (сек)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Учитавање странице (сек)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Број резултата"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "Резултати"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "Остварени резултати"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Грешке"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{наслов}&nbsp;(ЗАСТАРЕЛО)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "Овај унос је заменио"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Абстракт није доступан за ову публикацију."
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "Препишите HTTP линкове у HTTPS ако је могуће"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Бесконачно померање"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "Аутоматско учитавање следеће странице приликом померања на дно текуће странице"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Отворени приступ DOI преписа"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Избегните плаћање у случају да је доступна бесплатна публикација"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Отворите линкове резултата на новим картицама прегледача"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "Резултати се отварају у истом прозору. Овај додатак преписује подразумевано понашање како би отворио везе на новим картицама / прозорима. (Потребан је JavaScript )"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Тражите категорију избора"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Одмах извршите претрагу ако је изабрана категорија. Онемогућите да би изабрали више категорија. (Потребан је JavaScript)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Прикажите своју IP адресу ако је упит \"ip\" и ако кориснички агент садржи \"user agent\"."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "Уклони трекер URL адресе"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "Уклања аргументе трекера од повратне URL адресе"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Vim стил пречице"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "Померите резултате претраге помоћу Vim-пречица (потребан је JavaScript ). Притисните тастер \"h\" на главној или резултатној страници да бисте добили помоћ."
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Страница није пронађена"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "Иди на %(search_page)s."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "Претражи страницу"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "ПОДЕШАВАЊА"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "О сајту"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Подешавања"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Подразумеване категорије"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Језик претраге"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Подразумевани језик"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Језик интерфејса"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Ауто попуњавање"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "Прокси слика"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Омогућено"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Онемогућено"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Метода"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "Безбедна Претрага"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Стриктно"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Умерено"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Ништа"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Теме"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Боја"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Плава (подразумевано)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Љубичаста"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Зелена"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Цијан"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Наранџаста"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Црвена"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "Тренутно коришћени претраживачи"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Име претраживача"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Категорија"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Допусти"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Блокирај"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Ова подешавања се чувају у вашим колачићима, што нам омогућава да не сачувамо ове податке о вама."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Ови колачићи служе Вашој погодности, ми не користимо ове колачиће да вас пратимо."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "сними"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Врати на подразумевано"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "назад"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "Тражи URL адресу"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Резултати преузимања"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Одговори"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Предлози"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "претходна страница"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "наредна страница"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Тражи ..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Статистика"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "оригинални садржај"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Сидер"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Личер"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "магнет линк"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "торент фајл"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "Кликни на лупу за претрагу"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Резултати на картицама"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "Укључено"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Искључено"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "кеширано"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Напредне поставке"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Затвори"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Грешка!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Покреће"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "мета-претраживач који поштује приватност"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "прокси"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "подржано"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "неподржано"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Уопштено"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Претраживачи"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Плагини"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Одговори"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Колачићи"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "Који језик преферирате за претрагу?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Промените језик сајта"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Пронађите док куцате"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "Прокси слике преко searx-а"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "Промените начин слања форме, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">сазнајте више о методама захтева</a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Филтрирајте садржај"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Промените изглед searx сајта"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Изаберите стил за ову тему"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Стил"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr "Отворени приступ DOI решења"
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Преусмери на верзије публикација отвореног приступа кад је доступно (потребан је плагин)"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Пречица"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "Изабрани језик"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Временски опсег"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "Просечно време"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "Макс. време"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "Ово је листа searx инстант одговора."
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Име"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Кључне речи"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Опис"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Примери"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "Ово је листа колачића и њихова вредност се снима на вашем рачунару."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "Са овом листом можете бити searx транспаренти"
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Име колачића"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Вредност"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "Pretražite URL адресу тренутно сачуваних поставки"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "Напомена: навођење прилагођених поставки у URL претрази може смањити приватност цурењем података кликнутих страница."
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Резултати претраге"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "Покушај да нађеш:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "Не може повратити резултате"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Линкови"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Почни претрагу"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "статистика"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "Било када"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "Последњи дан"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "Последња недеља"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "Последњи месец"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "Последња година"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "Главу горе!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Изгледа да први пут користите searx."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Информације!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "тренутно, нема дефинисаних колачића."
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Тренутно нема доступних података."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "Нема резултата."
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "Молимо, покушајте поново касније."
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Опростите!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "нема никавих резултата претраге. Молимо покишајте другу претрагу или категорију."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Одлично!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Подешавања успешно сачувана."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "Упс!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Нешто је пошло наопако."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "покажи медије"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "сакриј медије"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Узми слику"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Види извор"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "покажи мапу"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "сакриј мапу"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "покажи детаље"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "сакриј детаље"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "величина фајла"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "Бајта"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Број фајлова"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "покажи видео"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "сакриј видео"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Учитај више..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "Ставка није пронађена"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Подржава изабрани језик"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "Кориснички интерфејс"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "Приватност"
diff --git a/searx/translations/sv/LC_MESSAGES/messages.po b/searx/translations/sv/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..e8b01c8
--- /dev/null
+++ b/searx/translations/sv/LC_MESSAGES/messages.po
@@ -0,0 +1,1015 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Jonatan Nyberg, 2016-2017
+# Jonatan Nyberg, 2018
+# Jonatan Nyberg, 2017-2018
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2018-07-24 18:39+0000\n"
+"Last-Translator: Jonatan Nyberg\n"
+"Language-Team: Swedish (http://www.transifex.com/asciimoo/searx/language/sv/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: sv\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "tiden tog slut"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "begär undantag"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "oväntad krasch"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "filer"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "allmänt"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "musik"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "sociala medier"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "bilder"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "videor"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "it"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "nyheter"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "karta"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "vetenskap"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Ogiltiga inställningar, vänligen redigerar dina inställningar"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "Ogiltiga inställningar"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "sökfel"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "{minutes} minut(er) sedan"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "{hours} timm(e/ar), {minutes} minut(er) sedan"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Slumpvärdesgenerator"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Generera olika slumpmässiga värden"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "Statistikfunktioner"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "Beräkna {functions} av argumenten"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Sökmotor tid (sek)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Sidan laddas (sek)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Antal resultat"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "Poäng"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "Poäng per resultat"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Fel"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(FÖRÅLDRAD)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "Detta inlägg har ersatts av"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Inget abstract är tillgänglig för denna publikation."
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "Omskriv HTTP-länkar till HTTPS om möjligt"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Oändlig bläddring"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "Automatiskt ladda nästa sida när du bläddrar till botten av aktuell sida"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Open Access DOI-omskrivning"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Undvik betalväggar genom att omdirigera till öppen tillgång versioner av publikationer när de är tillgängliga"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Öppna resultat länkar i nya webbläsarflikar"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "Resultat öppnas i samma fönster som standard. Denna insticksmodul skriver över standardbeteende för att öppna länkar i nya flikar/fönster. (JavaScript krävs)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Sök vid val av kategori"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Utför sökning omedelbart om en kategori är vald. Inaktivera att välja flera kategorier. (JavaScript krävs)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Visar din IP om förfrågan är \"ip\" och din användaragent om förfrågan innehåller \"user agent\"."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "Bevakningswebbadress borttagare"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "Ta bort tracker-argument från den återgivna webbadressen"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Vim-liknande snabbtangenter"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "Navigera sökresultat med Vim-liknande snabbtangenter (JavaScript krävs). Tryck på \"h\"-tangenten på huvud- eller resultatsida för att få hjälp."
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Sidan hittades inte"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "Gå till %(search_page)s."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "söksida"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "inställningar"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "om"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Inställningar"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Standardkategorier"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Sökspråk"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Standardspråk"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Gränssnittspråk"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Slutför automatiskt"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "Bildproxy"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Aktiverad"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Inaktiverad"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Metod"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "SafeSearch"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Sträng"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Måttlig"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Inga"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Tema"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Färg"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Blå (standard)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Violett"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Grön"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Turkos"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Orange"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Röd"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "För tillfället används sökmotorer"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Sökmotorns namn"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Kategori"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Tillåt"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Blockera"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Dessa inställningar lagras i dina kakor, vilket gör att vi inte lagrar data om dig."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Dessa kakor tjänar din egen bekvämlighet, vi använder inte dessa kakor för att spåra dig."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "spara"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Återställ standardvärden"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "tillbaka"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "Sök webbadress"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Nedladdningsresultat"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Svar"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Förslag"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "föregående sida"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "nästa sida"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Sök efter..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Sökmotor statistik"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "ursprungliga sammanhang"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Distributör"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Reciprokör"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "magnetlänk"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "torrentfil"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "Klicka på förstoringsglaset för att utföra sökning"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Resultat i nya flikar"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "På"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Av"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "cachad"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Avancerade inställningar"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Stäng"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Fel!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Drivet av"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "en integritetsrespekterande, hackningsbar metasökmotor"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "proxade"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "stöds"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "stöds inte"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Allmänt"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Sökmotorer"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Insticksmoduler"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Besvarare"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Kakor"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "Vilket språk föredrar du för att söka?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Ändra språk för layouten"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Hitta saker medan du skriver"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "Proxya bildresultat genom searx"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "Ändra hur formulär inlämnas, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">lär dig mera om förfrågningsmetoder</a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Filtrera innehåll"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Ändra layout för searx"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Välj stil för detta tema"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Stil"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr "Open Access DOI-lösare"
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Omdirigera till öppna versioner av publikationer när de är tillgängliga (tillägg krävs)"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Genväg"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "Valt språk"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Tidsintervall"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "Genomsnittstid"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "Max tid"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "Detta är en lista över searxs snabbsvarsmoduler."
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Namn"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Nyckelord"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Beskrivning"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Exempel"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "Detta är en lista över kakor och deras värden som searx lagrar på din dator."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "Med denna lista kan du bedöma searx öppenhet."
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Kaknamn"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Värde"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "Sökadressen för de för nuvarande sparade inställningarna"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "Obs: Att ange anpassade inställningar i sökadressen kan minska sekretess genom att läcka data till de klickade resultatwebbplatserna."
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Sökresultat"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "Försök söka efter:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "Sökmotorer kan inte hämta resultat"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Länkar"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Starta sökning"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "statistik"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "Närsom"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "Senaste dag"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "Senaste vecka"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "Senaste månad"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "Senaste år"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "Se upp!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Det ser ut som om du använder searx första gången."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Information!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "för närvarande finns det inga kakor definierade."
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Det finns för närvarande ingen data tillgänglig."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "Sökmotorer kan inte hämta resultat."
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "Försök igen eller hitta en annan searx-instans."
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Ursäkta!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "vi hittade inte några resultat. Använd en annan förfråga eller sök i flera kategorier."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Bra gjort!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Inställningar sparats."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "Oh plötsligt!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Något gick fel."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "visa media"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "göm media"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Hämta bild"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Visa källa"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "visa karta"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "göm karta"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "visa detaljer"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "göm detaljer"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Filstorlek"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "Bytes"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Antal filer"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "visa video"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "göm video"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Ladda fler..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "Inga artiklar hittade"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Stöder valda språket"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "Användargränssnitt"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "Sekretess"
diff --git a/searx/translations/te/LC_MESSAGES/messages.po b/searx/translations/te/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..8da1506
--- /dev/null
+++ b/searx/translations/te/LC_MESSAGES/messages.po
@@ -0,0 +1,1013 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Joseph Nuthalapati <njoseph@thoughtworks.com>, 2018
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2018-03-08 16:40+0000\n"
+"Last-Translator: Joseph Nuthalapati <njoseph@thoughtworks.com>\n"
+"Language-Team: Telugu (http://www.transifex.com/asciimoo/searx/language/te/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: te\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "కాలపరిమితి దాటిపోయింది"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr ""
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr ""
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "ఫైళ్ళు"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "సాధారణ"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "సంగీతం"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "సోషల్ మీడియా"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "చిత్రాలు"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "వీడియోలు"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "ఐటి"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "వార్తలు"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "పటము"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "విజ్ఞానశాస్త్రం"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr ""
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "చెల్లని అమరికలు"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "శోధనలో దోషము"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "{minutes} నిమిషము(ల) క్రిందట"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr ""
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr ""
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr ""
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "సాంఖ్యకశాస్త్ర ప్రమేయాలు"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr ""
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr ""
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr ""
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "ఫలితముల సంఖ్య"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr ""
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr ""
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "దోషములు"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr ""
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr ""
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr ""
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr ""
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr ""
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr ""
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr ""
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr ""
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr ""
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr ""
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr ""
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr ""
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr ""
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr ""
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr ""
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr ""
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr ""
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "పుట దొరకలేదు"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "%(search_page)sకు వెళ్ళు"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "శోధన పుట"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "అభిరుచులు"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "గురించి"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "అభిరుచులు"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "నిష్క్రియ వర్గాలు"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "శోధన భాష"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "నిష్క్రియ భాష"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "వినిమయసీమ భాష"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "విధానం"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "సురక్షితశోధన"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "కఠినమైన"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "మితమైన"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "ఏమీ లేదు"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "రంగు"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "నీలం (నిష్క్రియం)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "ఊదారంగు"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "ఆకుపచ్చ"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr " ముదురు నీలం"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "నారింజ"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "ఎరుపు"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "ప్రస్తుతం ఉపయోగించబడుతున్న శోధన యంత్రాలు"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "యంత్రం పేరు"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "వర్గము"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "అనుమతించు"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "అడ్డగించు"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "దాచు"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "నిష్క్రియాలకు అమర్చు"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "వెనక్కి"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "శోధన URL"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "ఫలితాలను దింపుకోండి"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "జవాబులు"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "సూచనలు"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "పూర్వపు పుట"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "తర్వాతి పుట"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "శోధించు..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr ""
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr ""
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr ""
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr ""
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr ""
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr ""
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr ""
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr ""
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "మూసివేయు"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "దోషం!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr ""
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "ఆదరించబడిన"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "ఆదరణ లేని"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "సాధారణ"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "యంత్రాలు"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "ప్లగిన్లు"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "జవాబులు"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "కుకీలు"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "వినిమయసీమ యొక్క భాషను మార్చు"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "టైపు చేస్తూ శోధించు"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "విషయాలను వడకట్టు"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "శైలి"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "సత్వరమార్గం"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "ఎంచుకున్న భాష"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "కాల శ్రేణి"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "సగటు సమయం"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "గరిష్ఠ సమయం"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "పేరు"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "వర్ణన"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "ఉదాహరణలు"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "కుకీ పేరు"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "విలువ"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr ""
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr ""
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "దీనికొరకు శోధించండి:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "యంత్రాలు ఫలితాలను రాబట్టలేకపోతున్నాయి"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "లంకెలు"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "శోధన ప్రారంభించు"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "స్థితి వివరణ లెక్కలు"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "ఎప్పుడైనా"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "క్రిందటి రోజు"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "క్రిందటి వారం"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "క్రిందటి నెల"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "క్రిందటి సంవత్సరం"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "జాగ్రత్త!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr ""
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "సమాచారం!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr ""
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr ""
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "యంత్రాలు ఫలితాలను రాబట్టలేకపోయాయి."
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr ""
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "క్షమించండి!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr ""
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "భళా!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "ఆమరికలు విజయవంతంగా పొందుపరచబడ్డాయి."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "అయ్యో!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "ఏదో తప్పు జరిగింది."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "ఫైళ్ళ సంఖ్య"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "వీడియో చూపించు"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "వీడియోను దాచిపెట్టు"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr ""
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "ఏమీ దొరకలేదు"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr ""
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr ""
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "ఆంతరంగికత"
diff --git a/searx/translations/tr/LC_MESSAGES/messages.po b/searx/translations/tr/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..a15c856
--- /dev/null
+++ b/searx/translations/tr/LC_MESSAGES/messages.po
@@ -0,0 +1,1015 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Arda Kılıçdağı <ardakilicdagi@gmail.com>, 2018
+# Caner Başaran <basaran.caner@protonmail.com>, 2014-2016
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2018-12-06 17:22+0000\n"
+"Last-Translator: Arda Kılıçdağı <ardakilicdagi@gmail.com>\n"
+"Language-Team: Turkish (http://www.transifex.com/asciimoo/searx/language/tr/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: tr\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "zaman aşımı"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "istekte bir hata oluştu"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "beklenmmeyen hata"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "dosyalar"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "genel"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "müzik"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "sosyal medya"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "görseller"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "videolar"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "bilişim"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "haberler"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "harita"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "bilim"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Hatalı ayar girildi, lütfen ayarlarınızı kontrol edin"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "Hatalı ayar"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "arama hatası"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "{minutes} dakika() önce"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "{hours} saat(), {minutes} dakika() önce"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Rastgele değer üretici"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Farklı rastgele metinler üret"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "İstatistik fonksiyonları"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "Argümanların {functions} değerlerini hesapla"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Motor cevap süresi (sn)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Sayfa yüklenmesi (sn)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Sonuç sayısı"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "Skor"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "Sonuç başına skor"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Hatalar"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(GEÇERSİZ)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr ""
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr ""
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "Mümkünse HTTP bağlantıları HTTPS olarak düzelt"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr ""
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr ""
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr ""
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr ""
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Bağlantıları yeni sekmede aç"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr ""
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr ""
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr ""
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr ""
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr ""
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr ""
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr ""
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr ""
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr ""
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr ""
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr ""
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "tercihler"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "hakkında"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Tercihler"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Öntanımlı kategoriler"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Arama dili"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr ""
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Arayüz dili"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Otomatik tamamlama"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "Görsel vekil sunucu"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Etkin"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Devre dışı"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Sorgu gönderim yöntemi"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "Güvenli Arama"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Sıkı"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Orta"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Yok"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Temalar"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Renk"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Mavi (varsayılan)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Menekşe rengi"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Yeşil"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Camgöbeği"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Turuncu"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Kırmızı"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "Şu anda kullanılan arama motorları"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Motor adı"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Türü"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "İzin ver"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Engelle"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Ayarlar çerezlerinizde saklanır. Verdiğiniz izinler, sizin hakkınızda veri saklamak için değildir."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Bu çerezler size kolaylık sağlar. Sizi takip etmek için kullanılmaz."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "kaydet"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Varsayılanları sıfırla"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "geri"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "Arama Bağlantısı"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Arama sonuçlarını indir"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr ""
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Öneriler"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "önceki sayfa"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "sonraki sayfa"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Aramak için..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Arama motoru istatistikleri"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "özgün içerik"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Besleyenler"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Sömürenler"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "mıknatıs bağlantı"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "torrent dosyası"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "Arama yapmak için büyütece tıklayın"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr ""
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr ""
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr ""
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "önbellek"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr ""
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Kapat"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr ""
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Gücümün kaynağı"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "kişisel gizliliğe saygılı ve merak edenlerin kurcalayabildiği bir meta arama motoru"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Genel"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Motorlar"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Eklentiler"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "Tercih ettiğiniz arama sonuçları dili"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Site dilini değiştir"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Leb demeden leblebiyi anlasın"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "Görsel arama sonuçlarını, searx vekil sunucusu üzerinden geçir"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "Aramaların nasıl gönderildiğini değiştir, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">istek yöntemleri hakkında daha fazla bilgi</a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "İçeriyi süz"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "searx yerleşim düzenini değiştir"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr ""
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Arama sonuçları"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr ""
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr ""
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Bağlantılar"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Aramayı başlat"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "istatistikler"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr ""
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr ""
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr ""
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr ""
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr ""
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "Dikkat et!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "İlk defa searx kullanıyor gibi görünüyorsunuz."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr ""
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr ""
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Şuan uygun veri yok."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr ""
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr ""
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Üzgünüz!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "herhangi bir sonuç bulamadık. Lütfen, başka sorgu kullanın veya daha fazla kategoride arama yapın."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Aferin!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Ayarlar başarıyla kaydedildi."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "Tüh tüh!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Bazı bazı şeylerde problem olmuş."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "medya göster"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "medya gizle"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Görseli indir"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Kaynağı göster"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "haritayı göster"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "haritayı gizle"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "ayrıntıları göster"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "ayrıntıları gizle"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Dosya boyutu"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "Bayt"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Dosya Sayısı"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "video göster"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "video gizle"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Daha fazlasını getir..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr ""
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr ""
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr ""
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr ""
diff --git a/searx/translations/uk/LC_MESSAGES/messages.po b/searx/translations/uk/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..7c6ac5a
--- /dev/null
+++ b/searx/translations/uk/LC_MESSAGES/messages.po
@@ -0,0 +1,1015 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# pvhn4 <pvhn4@protonmail.com>, 2017
+# pvhn4 <pvhn4@protonmail.com>, 2017
+# zubr139, 2016-2017
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2017-11-01 20:31+0000\n"
+"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
+"Language-Team: Ukrainian (http://www.transifex.com/asciimoo/searx/language/uk/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: uk\n"
+"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr ""
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr ""
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr ""
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "файли"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "загальні"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "музика"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "соцмережі"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "зображення"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "відео"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "IT"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "новини"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "карти"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "наука"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Невірні налаштування, будь ласка, зробіть зміни в налаштуваннях"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr ""
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "помилка пошуку"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "{minutes} хвилин тому"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "{hours} годин, {minutes} хвилин тому"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Генератор випадкових значень"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Створити різні випадкові значення"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "Функції статистики"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "Розрахувати {functions} аргументів"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Час пошуку (сек)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Час завантадення (сек)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Число результатів"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "Влучань"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "Влучань за результат"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Помилок"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(OBSOLETE)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "Цей запис був змінений"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr ""
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "За можливістю замінити в посиланнях HTTP на HTTPS"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Нескінченна прокрутка"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "Автоматично завантажувати наступну сторінку при прокрутці поточної до кінця"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr ""
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Уникайте платіжних каналів шляхом переадресації на версії публікацій з відкритим доступом, коли це можливо"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Відкривати посилання результатів в нових вкладках"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "Типово результати відкриваються в тому ж вікні. Цей плагін змінює поведінку, щоб посилання відкривались типово в нових вкладках/вікнах. (Необхідний JavaScript)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Пошук по обраній категорії"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Виконувати пошук зразу при обранні категорії. Вимкнути вибір декількох категорій. (Необхідний JavaScript)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Відображає IP-адресу при запиті \"ip\" та ваш user-agent при запиті \"user agent\"."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "Видалення URL-адреси трекера"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "Вилучіть аргументи трекера з поверненої URL-адреси"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Гарячі клавіші Vim"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "Переміщення результатів пошуку за допомогою віртуальних клавіш (потрібно JavaScript). Натисніть клавішу \"h\" на головній сторінці або на сторінці результатів, щоб отримати допомогу."
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Сторінка не знайдена"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "Перейти до %(search_page)s."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "сторінки пошуку"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "опції"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "про сайт"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Опції"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Типові категорії"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Мова пошуку"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Стандартна мова"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Мова інтерфейсу"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Автозаповнення"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "Проксі для зображень"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Ввімкнено"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Вимкнено"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Метод"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "БезпечнийПошук"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Жорский"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Помірний"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Вимкнений"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Теми"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Колір"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Синій (типово)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Фіолетовий"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Зелений"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Блакитний"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Помаранчевий"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Червоний"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "Пошукові системи, які використовуються"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Назва пошукової системи"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Категорія"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Дозволити"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Заблокувати"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Налаштування зберігаються в ваших cookie-файлах, що дає нам змогу не зберігати ці відомості про вас."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Ці cookie-файли необхідні винятково для вашої зручності, ми не використовуємо ці cookie-файли, щоб відслідковувати вас."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "зберегти"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Відновити стандартні налаштування"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "назад"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "Посилання на пошук"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Завантажити результати"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Відповіді"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Пропозиції"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "попередня сторінка"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "наступна сторінка"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Шукати..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Статистика пошукової системи"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "в контексті"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Сідер"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Лічер"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "магнет-посилання"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "торрент-файл"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "Натисніть лупу, щоб виконати пошук"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Результати в нових вкладках"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "Ввімк."
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Вимк."
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "архівовано"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Додаткові налаштування"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Закрити"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Помилка!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Використовується"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "вільна система метапошуку, яка поважає вашу приватність"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "проксовано"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Загальні"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Пошукові системи"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Плагіни"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Відповідачі"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Cookie-файли"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "Якій мові ви віддаєте перевагу для пошуку?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Змінити мову сайту"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Шукати підчас набору"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "Проксувати знайдені зображення за допомогою searx"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "Змінити спосіб відправки запитів, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">детальніше про методи запитів</a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Фільтр контенту"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Змінити вигляд сайту"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Обрати стиль для цієї теми"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Стиль"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Гарячі клавіші"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Часовий діапазон"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "Середній час"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "Максимальний час"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "Список модулів миттєвих відповідей searx."
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Назва"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Ключові слова"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Опис"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Приклади"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "Це список cookie-файлів та їх значень, які searx зберігає на вашому комп'ютері."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "По цьому списку ви можете оцінити відкритість searx."
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Ім'я cookie"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Значення"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr ""
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Результати пошуку"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr ""
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr ""
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Посилання"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Розпочати пошук"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "статистика"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "За весь час"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "За останній день"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "За останній тиждень"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "За останній місяць"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "За останній рік"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "Отакої!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Схоже, що ви використовуєте searx вперше."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Інформація!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "в даний час cookie-файли не встановлені."
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "В даний час немає доступних даних."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr ""
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr ""
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Вибачте!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "ми не знайшли жодних результатів. Будь ласка, використайте інший запит або виконайте пошук в декількох категоріях."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Чудово!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Налаштування успішно збережені."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "От халепа!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Щось пішло не так."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "показати медіа"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "приховати медіа"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Завантажити зображення"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Переглянути джерело"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "показати карту"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "приховати карту"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "показати деталі"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "приховати деталі"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Розмір файла"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "Байтів"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "КіБ"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "МіБ"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "ГіБ"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "ТіБ"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Кількість Файлів"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "показати відео"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "приховати відео"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Завантажити більше..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr ""
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Підтримка обраної мови"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr ""
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr ""
diff --git a/searx/translations/vi/LC_MESSAGES/messages.po b/searx/translations/vi/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..d8a1a0c
--- /dev/null
+++ b/searx/translations/vi/LC_MESSAGES/messages.po
@@ -0,0 +1,1013 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# dd721411 <dd721411@gmail.com>, 2018
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2018-02-28 17:27+0000\n"
+"Last-Translator: dd721411 <dd721411@gmail.com>\n"
+"Language-Team: Vietnamese (http://www.transifex.com/asciimoo/searx/language/vi/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: vi\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "hết thời hạn"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "ngoại lệ yêu cầu"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "lỗi bất ngờ"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "các tập tin"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "tổng quát"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "âm nhạc"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "mạng xã hội"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "hình ảnh"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "phim"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "CNTT"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "tin tức"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "bản đồ"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "khoa học"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "Cài đặt không hợp lệ, xin xem lại tuỳ chỉnh"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "Cài đặt không hợp lệ"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "lỗi tìm kiếm"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "{minutes} phút() trước"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "{hours} giờ(), {minutes} phút() trước"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "Trình tạo giá trị ngẫu nhiên"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "Tạo các giá trị ngẫu nhiên khác nhau"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "Các hàm thống kê"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "Tính toán {functions} của các đối số"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "Thời gian trình tìm kiếm (giây)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "Tải trang (giây)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "Số lượng kết quả"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "Điểm số"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "Điểm số cho từng kết quả"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "Các lỗi"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(LỖI THỜI)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "Mục này đã được thay thế bởi"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Không có bản tóm tắt nào cho ấn phẩm này."
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "Viết lại các liên kết HTTP thành HTTPS khi có thể"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "Cuộn liên tục"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "Tự động tải trang kế tiếp khi cuộn đến cuối trang hiện tại"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Viết lại DOI Truy Cập Miễn Phí"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Tránh việc trả phí bằng cách chuyển hướng đến các phiên bản truy cập miễn phí của ấn phẩm khi có thể"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "Mở kết quả trên những thẻ trình duyệt mới"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "Theo mặc định thì các kết quả được mở trên cùng một cửa sổ. Phần mở rộng này sẽ ghi đè lên hành vi mặc định đó để mở các liên kết trên các thẻ/cửa sổ mới. (yêu cầu JavaScript)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "Tìm kiếm khi chọn danh mục đơn"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "Thực thi tìm kiếm ngay khi chọn một danh mục. Tắt đi để chọn nhiều danh mục. (yêu cầu JavaScript)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "Hiện IP của bạn khi gõ \"ip\" và hiện user agent khi gõ \"user agent\"."
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "Trình loại bỏ URL theo dõi"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "Loại bỏ các đối số theo dõi từ URL trả về"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Các phím tắt Vim-like"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "Điều hướng các kết quả tìm kiếm với các phím tắt Vim-like (yêu cầu JavaScript). Nhấn phím \"h\" trên trang chính hoặc trang kết quả để xem trợ giúp."
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "Không tìm thấy trang"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "Đi đến %(search_page)s."
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "tìm kiếm trang"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "tuỳ chỉnh"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "thông tin về"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "Tuỳ chỉnh"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "Các danh mục mặc định"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "Ngôn ngữ tìm kiếm"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "Ngôn ngữ mặc định"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "Ngôn ngữ giao diện"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "Gợi ý tự động"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "Proxy hình ảnh"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "Đã "
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "Đã tắt"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "Phương pháp"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "Tìm Kiếm An Toàn"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "Nghiêm ngặt"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "Vừa phải"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "Không"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "Nền"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "Màu sắc"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "Xanh lam (mặc định)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "Tím"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "Xanh lục"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "Lục lam"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "Cam"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "Đỏ"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "Các trình tìm kiếm đang được dùng"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "Tên trình tìm kiếm"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "Danh mục"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "Cho phép"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "Chặn"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "Những cài đặt này được lưu trữ trong các cookie, điều này cho phép chúng tôi không phải lưu các dữ liệu về bạn."
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "Những cookie này chỉ phục vụ cho chính bạn, chúng tôi không sử dụng chúng để theo dõi bạn."
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "lưu"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "Đưa về mặc định"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "trở về"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "URL Tìm kiếm"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "Tải về các kết quả"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "Các đáp án"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "Các gợi ý"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "trang liền trước"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "trang tiếp theo"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "Tìm kiếm về..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "Các thông số về trình tìm kiếm"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "ngữ cảnh gốc"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "Seeder"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "Leecher"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "liên kết magnet"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "tập tin torrent"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "Nhấp vào hình kính lúp để tiến hành tìm kiếm"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "Hiện kết quả trên các thẻ mới"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "Bật"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "Tắt"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "đã lưu cache"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "Cài đặt nâng cao"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "Đóng"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "Lỗi!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "Được cung cấp bởi"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "một trình tìm kiếm đa nguồn, dễ tuỳ biến và tôn trọng quyền riêng tư"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "đã proxy"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "có hỗ trợ"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "không hỗ trợ"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "Tổng quát"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "Các trình tìm kiếm"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "Các phần mở rộng"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "Trình trả lời nhanh"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Các cookie"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "Bạn muốn tìm kiếm bằng ngôn ngữ nào?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "Thay đổi ngôn ngữ giao diện"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "Tìm kiếm ngay khi gõ"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "Proxy kết quả hình ảnh qua searx"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "Thay đổi cách thức các cụm từ tìm kiếm được gửi đi, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">tìm hiểu thêm về các phương thức tìm kiếm</a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "Lọc các nội dung"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "Thay đổi giao diện searx"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "Chọn phong cách cho nền này"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "Phong cách"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr "Trình xử lý DOI Truy Cập Miễn Phí"
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Chuyển hướng đến các phiên bản truy cập miễn phí của ấn phẩm khi có thể (yêu cầu phần mở rộng)"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "Lối tắt"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "Ngôn ngữ được chọn"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "Khoảng thời gian"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "Thời gian trung bình"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "Thời gian tối đa"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "Đây là danh sách các module trả lời nhanh của searx"
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "Tên"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "Các từ khoá"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "Mô tả"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "Các ví dụ"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "Đây là danh sách các cookie và giá trị của chúng mà searx đang lưu trữ trên máy tính của bạn."
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "Với danh sách này, bạn có thể đánh giá tính minh bạch của searx."
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Tên cookie"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "Giá trị"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "URL tìm kiếm của tuỳ chỉnh được lưu hiện tại"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "Ghi chú: việc định rõ cài đặt cá nhân trong URL tìm kiếm có thể làm suy giảm mức độ riêng tư vì nó chuyển dữ liệu đến các trang kết quả được nhấp chọn."
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "Kết quả tìm kiếm"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "Thử tìm kiếm:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "Các trình tìm kiếm không nhận được kết quả"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "Các liên kết"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "Bắt đầu tìm kiếm"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "các thông số"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "Bất kỳ lúc nào"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "Hôm trước"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "Tuần trước"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "Tháng trước"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "Năm ngoái"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "Cẩn thận!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "Có vẻ như bạn mới sử dụng searx lần đầu."
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "Thông tin!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "hiện tại không có cookie nào."
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "Hiện không có dữ liệu nào."
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "Các trình tìm kiếm không nhận được kết quả."
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "Xin thử lại lần nữa hoặc tìm một server searx khác"
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "Xin lỗi!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "chúng tôi không tìm thấy kết quả nào. Xin gõ cụm từ khác hoặc tìm kiếm trong nhiều danh mục hơn."
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "Tốt lắm!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "Lưu cài đặt thành công."
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "Quái quỷ thật!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "Đã có sự cố."
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "hiện nội dung"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "ẩn nội dung"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "Xem hình ảnh"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "Xem nguồn"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "hiện bản đồ"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "ẩn bản đồ"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "hiện chi tiết"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "ẩn chi tiết"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "Kích thước tập tin"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "Byte"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "Số lượng tập tin"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "hiện "
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "ẩn phim"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "Tải thêm..."
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "Không tìm thấy gì"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "Có hỗ trợ ngôn ngữ được chọn"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "Giao diện người dùng"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "Quyền riêng tư"
diff --git a/searx/translations/zh_CN/LC_MESSAGES/messages.po b/searx/translations/zh_CN/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..78acb2d
--- /dev/null
+++ b/searx/translations/zh_CN/LC_MESSAGES/messages.po
@@ -0,0 +1,1017 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# Crystal RainSlide, 2018
+# Mingye Wang <arthur200126@gmail.com>, 2018
+# Sion Kazama, 2018
+# wenke, 2015
+# wenke, 2015-2018
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2018-12-10 08:32+0000\n"
+"Last-Translator: Crystal RainSlide\n"
+"Language-Team: Chinese (China) (http://www.transifex.com/asciimoo/searx/language/zh_CN/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: zh_CN\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "超时"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "请求异常"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "意外崩溃"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "文件"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "全部"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "音乐"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "社交媒体"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "图片"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "视频"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "IT"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "新闻"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "地图"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "学术"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "设置无效,请编辑您的首选项"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "设置无效"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "搜索错误"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "{minutes} 分钟前"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "{hours} 小时 {minutes} 分钟前"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "随机数生成器"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "生成不同的随机数"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "统计功能"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "计算 {functions} 参数"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "搜索引擎时间(秒)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "页面加载(秒)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "结果数"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "得分"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "每个结果的分数"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "错误"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(过时)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "此条目已被取代"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "本出版物没有摘要。"
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "将支持 HTTPS 的 HTTP 链接改为 HTTPS 链接"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "无限滚动"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "滚动到当前页面底部时自动加载下一页"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "开放访问 DOI 重定向"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "尽量重定向到开放访问的文章以避免付费墙(如果可用)"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "在新标签页打开搜索链接"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "搜索结果默认在原窗口打开。此插件能使其在新标签页或新窗口打开。(需启用 JavaScript)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "搜索类别选择"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "选中一个类别后立即执行搜索。禁用后,可以选择多个类别一起搜索。(需启用 JavaScript)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "当您搜索「ip」时,这将会显示您的 IP 地址;同理,在搜索「user agent」时,将会显示您的 User Agent。"
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "移除跟踪链接"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "从返回的链接中移除跟踪参数"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "Vim 式快捷键"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "使用 Vim 式快捷键浏览搜索结果(需要 JavaScript)。在主页或结果页按“h”键获取帮助。"
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "未找到网页"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "前往 %(search_page)s。"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "搜索页面"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "首选项"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "关于"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "首选项"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "默认类别"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "搜索语言"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "默认语言"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "界面语言"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "自动补全"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "代理图片"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "启用"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "禁用"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "方法"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "安全搜索"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "严格"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "中等"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "无"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "主题"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "颜色"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "蓝色(默认)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "紫色"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "绿色"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "青色"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "橙色"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "红色"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "目前使用的搜索引擎"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "搜索引擎名称"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "类别"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "允许"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "阻止"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "这些设置被存储在您的 cookie 中,这种保存设置的方式允许我们不存储您的设置数据。"
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "这些 Cookie 信息可辅助您便捷地使用服务,我们不会利用这些信息来追踪您。"
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "保存"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "恢复默认"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "返回"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "搜索链接"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "下载结果"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "回答"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "搜索建议"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "上一页"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "下一页"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "搜索..."
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "搜索引擎统计"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "原始上下文"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "做种"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "接收"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "磁力链接"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "种子文件"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "点击放大镜按钮开始搜索"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "在新标签页打开搜索结果"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "启用"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "禁用"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "缓存"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "高级设置"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "关闭"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "错误!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "技术支持来自"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "一个尊重隐私、可再开发的元搜索引擎"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "代理"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "支持的"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "不支持的"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "常规"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "搜索引擎"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "插件"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "智能答复"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Cookies"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "您更喜欢使用什么语言进行搜索?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "改变界面语言"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "自动补全搜索字词"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "通过 searx 代理图片结果"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "更改提交表单时使用的请求方法,<a href=\"https://zh.wikipedia.org/wiki/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE#%E8%AF%B7%E6%B1%82%E6%96%B9%E6%B3%95\" rel=\"external\">深入了解请求方法</a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "过滤内容"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "改变 searx 布局"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "选择此主题的样式"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "样式"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr "开放访问 DOI 解析器"
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "尽可能重定向到出版物的开放访问版本(需要插件)"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "快捷键"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "选择语言"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "时间范围"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "平均时间"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "最大时间"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "这是 searx 的即时回答模块列表。"
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "名称"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "关键词"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "描述"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "示例"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "此列表展示了 searx 在您设备上存储的 cookie 信息。"
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "您可以基于此表格来评估 searx 的透明度。"
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Cookie 名称"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "值"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "当前保存选项的搜索链接"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "注意:在搜索链接中保存自定义设置会把数据泄露给点击的结果网站,从而泄漏隐私。"
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "搜索结果"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "尝试搜索:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "引擎无法获取结果"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "链接"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "开始搜索"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "统计"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "时间不限"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "一天内"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "一周内"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "一月内"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "一年内"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "小心!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "看来这是您第一次使用 searx。"
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "注意!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "目前,还没有任何信息被存储在 Cookie 中。"
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "目前没有可用的数据。"
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "引擎无法获取结果。"
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "请稍后再试,或寻找其它的 searx 实例替代。"
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "抱歉!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "我们没有找到任何结果。请使用其它关键词或在更多类别中搜索。"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "做得好!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "设置保存成功。"
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "哦,糟糕!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "出了些问题。"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "显示媒体"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "隐藏媒体"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "获取图片"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "查看来源"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "显示地图"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "隐藏地图"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "显示详细信息"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "隐藏详细信息"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "文件大小"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "B"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "文件数"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "显示视频"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "隐藏视频"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "载入更多……"
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "未找到条目"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "支持选定的语言"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "用户界面"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "隐私"
diff --git a/searx/translations/zh_Hant_TW/LC_MESSAGES/messages.po b/searx/translations/zh_Hant_TW/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..85060a0
--- /dev/null
+++ b/searx/translations/zh_Hant_TW/LC_MESSAGES/messages.po
@@ -0,0 +1,1014 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2016
+# Jeff Huang <s8321414@gmail.com>, 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2017-12-28 12:58+0000\n"
+"Last-Translator: Jeff Huang <s8321414@gmail.com>\n"
+"Language-Team: Chinese (Taiwan) (http://www.transifex.com/asciimoo/searx/language/zh_TW/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: zh_TW\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "逾時"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "請求例外"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "未預期的當機"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "檔案"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "一般"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "音樂"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "社群媒體"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "圖片"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "影片"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "IT"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "新聞"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "地圖"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "科學"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "無效的設定,請編輯您的偏好設定"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "無效的設定"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "搜尋錯誤"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "{minutes} 分鐘前"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "{hours} 小時 {minutes} 分鐘前"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "隨機數值產生器"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "生成不同的隨機數值"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "統計功能"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "計算 {functions} 參數"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "引擎時間(秒)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "頁面載入(秒)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "結果筆數"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "分數"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "每個結果的分數"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "錯誤"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(已過時)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "此條目已被取代"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "此出版品無可用摘要。"
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "可以的話將 HTTP 連結重寫為 HTTPS"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "無限捲動"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "當捲動至目前頁面的底部時自動載入下一頁"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "開放存取 DOI 重寫"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "盡可能透過重新導向至出版品的開放存取版本來避免付費牆"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "在新瀏覽器分頁中開啟結果連結"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "結果預設會在同一個視窗開啟。這個外掛程式會覆寫預設行為,會在新分頁/視窗中開啟連結。(需要 JavaScript)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "類別選取搜尋"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "若分類被選取時立刻執行搜尋。停用以選取多個分類。(需要 JavaScript)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "若搜尋字串包含「ip」則顯示您的 IP,而若包含「agent」則顯示您的使用者代理字串。"
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "追蹤器 URL 移除器"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "從傳回的 URL 中移除追蹤器參數"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "類 Vim 快捷鍵"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "以類 Vim 的快捷鍵導覽搜尋結果(需要 JavaScript)。在主頁面或結果頁面按「h」鍵以取得說明。"
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "找不到頁面"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "到 %(search_page)s。"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "搜尋頁面"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "偏好設定"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "關於"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "偏好設定"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "預設分類"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "搜尋語言"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "預設語言"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "介面語言"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "自動完成"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "圖片代理伺服器"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "已啟用"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "已停用"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "方法"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "安全搜尋"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "嚴格"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "適中"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "無"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "佈景主題"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "顏色"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "藍色(預設值)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "紫色"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "綠色"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "青色"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "橘色"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "紅色"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "目前使用的搜尋引擎"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "引擎名稱"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "分類"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "允許"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "封鎖"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "這些設定只會儲存在您的 cookies 中,我們會儲存關於您的資訊。"
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "這些 cookies 僅做為提供您方便之用,我們不會使用這些 cookies 來追蹤您。"
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "儲存"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "重設為預設值"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "返回"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "搜尋網址"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "下載結果"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "答案"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "建議"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "上一頁"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "下一頁"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "搜尋……"
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "引擎統計"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "原始內容"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "播種者"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "接收者"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "磁力連結"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "torrent 檔案"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "在磁鐵上點選以執行搜尋"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "在新分頁開啟結果"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "開啟"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "關閉"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "已快取"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "進階設定"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "關閉"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "錯誤!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "技術支援"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "一個尊重隱私,可再開發的集合式搜尋引擎"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "已代理"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "支援"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "不支援"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "一般"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "引擎"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "外掛程式"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "答案"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Cookies"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "您偏好用哪種語言搜尋?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "變更佈局的語言"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "隨打即找"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "透過 searx 代理圖片結果"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "變更遞交形式,<a href=\"https://zh.wikipedia.org/wiki/%%E8%%B6%%85%%E6%%96%%87%%E6%%9C%%AC%%E4%%BC%%A0%%E8%%BE%%93%%E5%%8D%%8F%%E8%%AE%%AE#%%E8%%AF%%B7%%E6%%B1%%82%%E6%%96%%B9%%E6%%B3%%95\" rel=\"external\">看看更多關於請求方法的介紹</a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "過濾內容"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "變更 searx 佈局"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "選擇這個主題的樣式"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "樣式"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr "開放存取 DOI 解析器"
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "盡可能重新導向至出版品的開放存取版本(需要外掛程式)"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "快捷鍵"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "已選取的語言"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "時間範圍"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "平均時間"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "最大時間"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "這是 searx 的即時回覆模組清單。"
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "名稱"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "關鍵字"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "描述"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "範例"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "這是 searx 儲存在您電腦上的 cookies 與它們的值的清單。"
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "有了這份清單,您就可以評估 searx 的透明度。"
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Cookie 名稱"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "值"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "目前偏好設定的搜尋 URL"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "注意:在搜尋 URL 中指定自訂的設定可能會降低隱私,因為會洩漏資料給點選的結果頁面。"
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "搜尋結果"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "嘗試搜尋:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "引擎無法擷取結果"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "連結"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "開始搜尋"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "統計"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "任何時間"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "一天內"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "一週內"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "一個月內"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "一年內"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "注意!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "看起來您是第一次使用 searx。"
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "資訊!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "目前未有已定義的 cookies。"
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "目前無可用資料。"
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "引擎無法擷取結果。"
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "請再試一次或是使用其他 searx 實體搜尋。"
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "抱歉!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "我們找不到任何結果。請使用其他搜尋方式或在更多分類中搜尋。"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "很好!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "設定成功儲存。"
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "糟糕!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "發生了一點問題。"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "顯示媒體"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "隱藏媒體"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "取得圖片"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "檢視來源"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "顯示地圖"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "隱藏地圖"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "顯示詳情"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "隱藏詳情"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "檔案大小"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "位元組"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "檔案數量"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "顯示影片"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "隱藏影片"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "載入更多……"
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "找不到項目"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "支援選定的語言"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "使用者介面"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "隱私"
diff --git a/searx/translations/zh_TW/LC_MESSAGES/messages.po b/searx/translations/zh_TW/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..0a4796f
--- /dev/null
+++ b/searx/translations/zh_TW/LC_MESSAGES/messages.po
@@ -0,0 +1,1015 @@
+# Translations template for PROJECT.
+# Copyright (C) 2017 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2016
+# Jeff Huang <s8321414@gmail.com>, 2017
+# Mingye Wang <arthur200126@gmail.com>, 2018
+msgid ""
+msgstr ""
+"Project-Id-Version: searx\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2017-11-01 21:31+0100\n"
+"PO-Revision-Date: 2018-09-16 00:29+0000\n"
+"Last-Translator: Mingye Wang <arthur200126@gmail.com>\n"
+"Language-Team: Chinese (Taiwan) (http://www.transifex.com/asciimoo/searx/language/zh_TW/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.3.4\n"
+"Language: zh_TW\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: searx/search.py:137 searx/search.py:182
+msgid "timeout"
+msgstr "逾時"
+
+#: searx/search.py:144
+msgid "request exception"
+msgstr "請求例外"
+
+#: searx/search.py:151
+msgid "unexpected crash"
+msgstr "未預期的當機"
+
+#: searx/webapp.py:136
+msgid "files"
+msgstr "檔案"
+
+#: searx/webapp.py:137
+msgid "general"
+msgstr "一般"
+
+#: searx/webapp.py:138
+msgid "music"
+msgstr "音樂"
+
+#: searx/webapp.py:139
+msgid "social media"
+msgstr "社群媒體"
+
+#: searx/webapp.py:140
+msgid "images"
+msgstr "圖片"
+
+#: searx/webapp.py:141
+msgid "videos"
+msgstr "影片"
+
+#: searx/webapp.py:142
+msgid "it"
+msgstr "IT"
+
+#: searx/webapp.py:143
+msgid "news"
+msgstr "新聞"
+
+#: searx/webapp.py:144
+msgid "map"
+msgstr "地圖"
+
+#: searx/webapp.py:145
+msgid "science"
+msgstr "科學"
+
+#: searx/webapp.py:399 searx/webapp.py:658
+msgid "Invalid settings, please edit your preferences"
+msgstr "無效的設定,請編輯您的偏好設定"
+
+#: searx/webapp.py:415
+msgid "Invalid settings"
+msgstr "無效的設定"
+
+#: searx/webapp.py:449 searx/webapp.py:493
+msgid "search error"
+msgstr "搜尋錯誤"
+
+#: searx/webapp.py:530
+msgid "{minutes} minute(s) ago"
+msgstr "{minutes} 分鐘前"
+
+#: searx/webapp.py:532
+msgid "{hours} hour(s), {minutes} minute(s) ago"
+msgstr "{hours} 小時 {minutes} 分鐘前"
+
+#: searx/answerers/random/answerer.py:53
+msgid "Random value generator"
+msgstr "隨機數值產生器"
+
+#: searx/answerers/random/answerer.py:54
+msgid "Generate different random values"
+msgstr "生成不同的隨機數值"
+
+#: searx/answerers/statistics/answerer.py:53
+msgid "Statistics functions"
+msgstr "統計功能"
+
+#: searx/answerers/statistics/answerer.py:54
+msgid "Compute {functions} of the arguments"
+msgstr "計算 {functions} 參數"
+
+#: searx/engines/__init__.py:194 searx/engines/flycheck___init__.py:201
+msgid "Engine time (sec)"
+msgstr "引擎時間(秒)"
+
+#: searx/engines/__init__.py:198 searx/engines/flycheck___init__.py:205
+msgid "Page loads (sec)"
+msgstr "頁面載入(秒)"
+
+#: searx/engines/__init__.py:202 searx/engines/flycheck___init__.py:209
+#: searx/templates/oscar/results.html:95
+#: searx/templates/simple/results.html:20
+msgid "Number of results"
+msgstr "結果筆數"
+
+#: searx/engines/__init__.py:206 searx/engines/flycheck___init__.py:213
+msgid "Scores"
+msgstr "分數"
+
+#: searx/engines/__init__.py:210 searx/engines/flycheck___init__.py:217
+msgid "Scores per result"
+msgstr "每個結果的分數"
+
+#: searx/engines/__init__.py:214 searx/engines/flycheck___init__.py:221
+msgid "Errors"
+msgstr "錯誤"
+
+#: searx/engines/pdbe.py:87
+msgid "{title}&nbsp;(OBSOLETE)"
+msgstr "{title}&nbsp;(已過時)"
+
+#: searx/engines/pdbe.py:91
+msgid "This entry has been superseded by"
+msgstr "此條目已被取代"
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "此出版品無可用摘要。"
+
+#: searx/plugins/https_rewrite.py:32
+msgid "Rewrite HTTP links to HTTPS if possible"
+msgstr "可以的話將 HTTP 連結重寫為 HTTPS"
+
+#: searx/plugins/infinite_scroll.py:3
+msgid "Infinite scroll"
+msgstr "無限捲動"
+
+#: searx/plugins/infinite_scroll.py:4
+msgid "Automatically load next page when scrolling to bottom of current page"
+msgstr "當捲動至目前頁面的底部時自動載入下一頁"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "開放存取 DOI 重寫"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "盡可能重新導向至出版品的開放存取版本,來避免付費牆"
+
+#: searx/plugins/open_results_on_new_tab.py:18
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:149
+msgid "Open result links on new browser tabs"
+msgstr "在新瀏覽器分頁中開啟結果連結"
+
+#: searx/plugins/open_results_on_new_tab.py:19
+msgid ""
+"Results are opened in the same window by default. This plugin overwrites the"
+" default behaviour to open links on new tabs/windows. (JavaScript required)"
+msgstr "結果預設會在同一個視窗開啟。這個外掛程式會覆寫預設行為,會在新分頁/視窗中開啟連結。(需要 JavaScript)"
+
+#: searx/plugins/search_on_category_select.py:18
+msgid "Search on category select"
+msgstr "類別選取搜尋"
+
+#: searx/plugins/search_on_category_select.py:19
+msgid ""
+"Perform search immediately if a category selected. Disable to select "
+"multiple categories. (JavaScript required)"
+msgstr "若分類被選取時立刻執行搜尋。停用以選取多個分類。(需要 JavaScript)"
+
+#: searx/plugins/self_info.py:20
+msgid ""
+"Displays your IP if the query is \"ip\" and your user agent if the query "
+"contains \"user agent\"."
+msgstr "若搜尋字串爲「ip」則顯示您的 IP,而若是「user agent」則顯示您的使用者代理字串。"
+
+#: searx/plugins/tracker_url_remover.py:26
+msgid "Tracker URL remover"
+msgstr "追蹤器 URL 移除器"
+
+#: searx/plugins/tracker_url_remover.py:27
+msgid "Remove trackers arguments from the returned URL"
+msgstr "從傳回的 URL 中移除追蹤器參數"
+
+#: searx/plugins/vim_hotkeys.py:3
+msgid "Vim-like hotkeys"
+msgstr "類 Vim 快捷鍵"
+
+#: searx/plugins/vim_hotkeys.py:4
+msgid ""
+"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
+"\"h\" key on main or result page to get help."
+msgstr "以類 Vim 的快捷鍵導覽搜尋結果(需要 JavaScript)。在主頁面或結果頁面按「h」鍵以取得說明。"
+
+#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
+#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
+#: searx/templates/simple/404.html:4
+msgid "Page not found"
+msgstr "找不到頁面"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+#, python-format
+msgid "Go to %(search_page)s."
+msgstr "到 %(search_page)s。"
+
+#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
+#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
+#: searx/templates/simple/404.html:6
+msgid "search page"
+msgstr "搜尋頁面"
+
+#: searx/templates/courgette/index.html:9
+#: searx/templates/courgette/index.html:13
+#: searx/templates/courgette/results.html:5
+#: searx/templates/legacy/index.html:8 searx/templates/legacy/index.html:12
+#: searx/templates/oscar/navbar.html:7
+#: searx/templates/oscar/preferences.html:3
+#: searx/templates/pix-art/index.html:8
+msgid "preferences"
+msgstr "偏好設定"
+
+#: searx/templates/courgette/index.html:11
+#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
+#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
+msgid "about"
+msgstr "關於"
+
+#: searx/templates/courgette/preferences.html:5
+#: searx/templates/legacy/preferences.html:5
+#: searx/templates/oscar/preferences.html:8
+#: searx/templates/pix-art/preferences.html:5
+#: searx/templates/simple/preferences.html:26
+msgid "Preferences"
+msgstr "偏好設定"
+
+#: searx/templates/courgette/preferences.html:9
+#: searx/templates/legacy/preferences.html:9
+#: searx/templates/oscar/preferences.html:33
+#: searx/templates/oscar/preferences.html:35
+#: searx/templates/simple/preferences.html:34
+msgid "Default categories"
+msgstr "預設分類"
+
+#: searx/templates/courgette/preferences.html:13
+#: searx/templates/legacy/preferences.html:14
+#: searx/templates/oscar/preferences.html:41
+#: searx/templates/pix-art/preferences.html:9
+#: searx/templates/simple/preferences.html:39
+#: searx/templates/simple/preferences.html:163
+msgid "Search language"
+msgstr "搜尋語言"
+
+#: searx/templates/courgette/preferences.html:16
+#: searx/templates/legacy/preferences.html:17
+#: searx/templates/oscar/languages.html:6
+#: searx/templates/pix-art/preferences.html:12
+#: searx/templates/simple/languages.html:2
+#: searx/templates/simple/preferences.html:42
+msgid "Default language"
+msgstr "預設語言"
+
+#: searx/templates/courgette/preferences.html:24
+#: searx/templates/legacy/preferences.html:25
+#: searx/templates/oscar/preferences.html:47
+#: searx/templates/pix-art/preferences.html:20
+#: searx/templates/simple/preferences.html:120
+msgid "Interface language"
+msgstr "介面語言"
+
+#: searx/templates/courgette/preferences.html:34
+#: searx/templates/legacy/preferences.html:35
+#: searx/templates/oscar/preferences.html:57
+#: searx/templates/simple/preferences.html:51
+msgid "Autocomplete"
+msgstr "自動完成"
+
+#: searx/templates/courgette/preferences.html:45
+#: searx/templates/legacy/preferences.html:46
+#: searx/templates/oscar/preferences.html:68
+#: searx/templates/simple/preferences.html:166
+msgid "Image proxy"
+msgstr "圖片代理伺服器"
+
+#: searx/templates/courgette/preferences.html:48
+#: searx/templates/legacy/preferences.html:49
+#: searx/templates/oscar/preferences.html:72
+#: searx/templates/simple/preferences.html:169
+msgid "Enabled"
+msgstr "已啟用"
+
+#: searx/templates/courgette/preferences.html:49
+#: searx/templates/legacy/preferences.html:50
+#: searx/templates/oscar/preferences.html:73
+#: searx/templates/simple/preferences.html:170
+msgid "Disabled"
+msgstr "已停用"
+
+#: searx/templates/courgette/preferences.html:54
+#: searx/templates/legacy/preferences.html:55
+#: searx/templates/oscar/preferences.html:77
+#: searx/templates/pix-art/preferences.html:30
+#: searx/templates/simple/preferences.html:156
+msgid "Method"
+msgstr "方法"
+
+#: searx/templates/courgette/preferences.html:63
+#: searx/templates/legacy/preferences.html:64
+#: searx/templates/oscar/preferences.html:86
+#: searx/templates/oscar/preferences.html:165
+#: searx/templates/oscar/preferences.html:173
+#: searx/templates/simple/preferences.html:63
+#: searx/templates/simple/preferences.html:90
+msgid "SafeSearch"
+msgstr "安全搜尋"
+
+#: searx/templates/courgette/preferences.html:66
+#: searx/templates/legacy/preferences.html:67
+#: searx/templates/oscar/preferences.html:90
+#: searx/templates/simple/preferences.html:66
+msgid "Strict"
+msgstr "嚴格"
+
+#: searx/templates/courgette/preferences.html:67
+#: searx/templates/legacy/preferences.html:68
+#: searx/templates/oscar/preferences.html:91
+#: searx/templates/simple/preferences.html:67
+msgid "Moderate"
+msgstr "適中"
+
+#: searx/templates/courgette/preferences.html:68
+#: searx/templates/legacy/preferences.html:69
+#: searx/templates/oscar/preferences.html:92
+#: searx/templates/simple/preferences.html:68
+msgid "None"
+msgstr "無"
+
+#: searx/templates/courgette/preferences.html:73
+#: searx/templates/legacy/preferences.html:74
+#: searx/templates/oscar/preferences.html:96
+#: searx/templates/pix-art/preferences.html:39
+#: searx/templates/simple/preferences.html:131
+msgid "Themes"
+msgstr "佈景主題"
+
+#: searx/templates/courgette/preferences.html:83
+msgid "Color"
+msgstr "顏色"
+
+#: searx/templates/courgette/preferences.html:86
+msgid "Blue (default)"
+msgstr "藍色(預設值)"
+
+#: searx/templates/courgette/preferences.html:87
+msgid "Violet"
+msgstr "紫色"
+
+#: searx/templates/courgette/preferences.html:88
+msgid "Green"
+msgstr "綠色"
+
+#: searx/templates/courgette/preferences.html:89
+msgid "Cyan"
+msgstr "青色"
+
+#: searx/templates/courgette/preferences.html:90
+msgid "Orange"
+msgstr "橘色"
+
+#: searx/templates/courgette/preferences.html:91
+msgid "Red"
+msgstr "紅色"
+
+#: searx/templates/courgette/preferences.html:96
+#: searx/templates/legacy/preferences.html:93
+#: searx/templates/pix-art/preferences.html:49
+#: searx/templates/simple/preferences.html:77
+msgid "Currently used search engines"
+msgstr "目前使用的搜尋引擎"
+
+#: searx/templates/courgette/preferences.html:100
+#: searx/templates/legacy/preferences.html:97
+#: searx/templates/oscar/preferences.html:162
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/pix-art/preferences.html:53
+#: searx/templates/simple/preferences.html:87
+msgid "Engine name"
+msgstr "引擎名稱"
+
+#: searx/templates/courgette/preferences.html:101
+#: searx/templates/legacy/preferences.html:98
+msgid "Category"
+msgstr "分類"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:113
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:110
+#: searx/templates/oscar/preferences.html:161
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:64
+#: searx/templates/simple/preferences.html:86
+msgid "Allow"
+msgstr "允許"
+
+#: searx/templates/courgette/preferences.html:102
+#: searx/templates/courgette/preferences.html:114
+#: searx/templates/legacy/preferences.html:99
+#: searx/templates/legacy/preferences.html:111
+#: searx/templates/pix-art/preferences.html:54
+#: searx/templates/pix-art/preferences.html:65
+msgid "Block"
+msgstr "封鎖"
+
+#: searx/templates/courgette/preferences.html:122
+#: searx/templates/legacy/preferences.html:119
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/pix-art/preferences.html:73
+#: searx/templates/simple/preferences.html:180
+msgid ""
+"These settings are stored in your cookies, this allows us not to store this "
+"data about you."
+msgstr "這些設定只會儲存在您的 cookies 中,這樣我們無需也不會存儲關於您的資訊。"
+
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:299
+#: searx/templates/pix-art/preferences.html:75
+#: searx/templates/simple/preferences.html:182
+msgid ""
+"These cookies serve your sole convenience, we don't use these cookies to "
+"track you."
+msgstr "這些 cookies 僅做為提供您方便之用,我們不會使用這些 cookies 來追蹤您。"
+
+#: searx/templates/courgette/preferences.html:127
+#: searx/templates/legacy/preferences.html:124
+#: searx/templates/oscar/preferences.html:305
+#: searx/templates/pix-art/preferences.html:78
+#: searx/templates/simple/preferences.html:185
+msgid "save"
+msgstr "儲存"
+
+#: searx/templates/courgette/preferences.html:128
+#: searx/templates/legacy/preferences.html:125
+#: searx/templates/oscar/preferences.html:307
+#: searx/templates/simple/preferences.html:186
+msgid "Reset defaults"
+msgstr "重設為預設值"
+
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:306
+#: searx/templates/pix-art/preferences.html:79
+#: searx/templates/simple/preferences.html:187
+msgid "back"
+msgstr "返回"
+
+#: searx/templates/courgette/results.html:12
+#: searx/templates/legacy/results.html:13
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:58
+msgid "Search URL"
+msgstr "搜尋網址"
+
+#: searx/templates/courgette/results.html:16
+#: searx/templates/legacy/results.html:17
+#: searx/templates/oscar/results.html:141
+#: searx/templates/simple/results.html:62
+msgid "Download results"
+msgstr "下載結果"
+
+#: searx/templates/courgette/results.html:34
+#: searx/templates/legacy/results.html:35
+#: searx/templates/simple/results.html:10
+msgid "Answers"
+msgstr "答案"
+
+#: searx/templates/courgette/results.html:42
+#: searx/templates/legacy/results.html:43
+#: searx/templates/oscar/results.html:116
+#: searx/templates/simple/results.html:42
+msgid "Suggestions"
+msgstr "建議"
+
+#: searx/templates/courgette/results.html:70
+#: searx/templates/legacy/results.html:81
+#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
+#: searx/templates/simple/results.html:130
+msgid "previous page"
+msgstr "上一頁"
+
+#: searx/templates/courgette/results.html:81
+#: searx/templates/legacy/results.html:92
+#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
+#: searx/templates/simple/results.html:145
+msgid "next page"
+msgstr "下一頁"
+
+#: searx/templates/courgette/search.html:3
+#: searx/templates/legacy/search.html:3 searx/templates/oscar/search.html:6
+#: searx/templates/oscar/search_full.html:9
+#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
+msgid "Search for..."
+msgstr "搜尋……"
+
+#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
+#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
+#: searx/templates/simple/stats.html:7
+msgid "Engine stats"
+msgstr "引擎統計"
+
+#: searx/templates/courgette/result_templates/images.html:4
+#: searx/templates/legacy/result_templates/images.html:4
+#: searx/templates/pix-art/result_templates/images.html:4
+msgid "original context"
+msgstr "原始內容"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Seeder"
+msgstr "播種者"
+
+#: searx/templates/courgette/result_templates/torrent.html:7
+#: searx/templates/legacy/result_templates/torrent.html:11
+#: searx/templates/oscar/result_templates/torrent.html:6
+#: searx/templates/simple/result_templates/torrent.html:9
+msgid "Leecher"
+msgstr "接收者"
+
+#: searx/templates/courgette/result_templates/torrent.html:9
+#: searx/templates/legacy/result_templates/torrent.html:9
+#: searx/templates/oscar/macros.html:23
+#: searx/templates/simple/result_templates/torrent.html:6
+msgid "magnet link"
+msgstr "磁力連結"
+
+#: searx/templates/courgette/result_templates/torrent.html:10
+#: searx/templates/legacy/result_templates/torrent.html:10
+#: searx/templates/oscar/macros.html:24
+#: searx/templates/simple/result_templates/torrent.html:7
+msgid "torrent file"
+msgstr "torrent 檔案"
+
+#: searx/templates/legacy/categories.html:8
+#: searx/templates/simple/categories.html:6
+msgid "Click on the magnifier to perform search"
+msgstr "在磁鐵上點選以執行搜尋"
+
+#: searx/templates/legacy/preferences.html:84
+#: searx/templates/oscar/preferences.html:113
+#: searx/templates/simple/preferences.html:142
+msgid "Results on new tabs"
+msgstr "在新分頁開啟結果"
+
+#: searx/templates/legacy/preferences.html:87
+#: searx/templates/oscar/preferences.html:117
+#: searx/templates/simple/preferences.html:145
+msgid "On"
+msgstr "開啟"
+
+#: searx/templates/legacy/preferences.html:88
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:146
+msgid "Off"
+msgstr "關閉"
+
+#: searx/templates/legacy/result_templates/code.html:3
+#: searx/templates/legacy/result_templates/default.html:3
+#: searx/templates/legacy/result_templates/map.html:9
+#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
+#: searx/templates/simple/macros.html:43
+msgid "cached"
+msgstr "已快取"
+
+#: searx/templates/oscar/advanced.html:4
+msgid "Advanced settings"
+msgstr "進階設定"
+
+#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/messages/first_time.html:4
+#: searx/templates/oscar/messages/save_settings_successfull.html:5
+#: searx/templates/oscar/messages/unknow_error.html:5
+msgid "Close"
+msgstr "關閉"
+
+#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+#: searx/templates/simple/results.html:25
+msgid "Error!"
+msgstr "錯誤!"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "Powered by"
+msgstr "技術支援"
+
+#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+msgid "a privacy-respecting, hackable metasearch engine"
+msgstr "一個尊重隱私,可再開發的集合式搜尋引擎"
+
+#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
+#: searx/templates/simple/macros.html:43
+msgid "proxied"
+msgstr "已代理"
+
+#: searx/templates/oscar/macros.html:92
+msgid "supported"
+msgstr "支援"
+
+#: searx/templates/oscar/macros.html:96
+msgid "not supported"
+msgstr "不支援"
+
+#: searx/templates/oscar/preferences.html:13
+#: searx/templates/oscar/preferences.html:22
+#: searx/templates/simple/preferences.html:32
+msgid "General"
+msgstr "一般"
+
+#: searx/templates/oscar/preferences.html:14
+#: searx/templates/oscar/preferences.html:146
+#: searx/templates/simple/preferences.html:76
+msgid "Engines"
+msgstr "引擎"
+
+#: searx/templates/oscar/preferences.html:15
+#: searx/templates/oscar/preferences.html:219
+msgid "Plugins"
+msgstr "外掛程式"
+
+#: searx/templates/oscar/preferences.html:16
+#: searx/templates/oscar/preferences.html:245
+msgid "Answerers"
+msgstr "答案"
+
+#: searx/templates/oscar/preferences.html:17
+#: searx/templates/oscar/preferences.html:272
+msgid "Cookies"
+msgstr "Cookies"
+
+#: searx/templates/oscar/preferences.html:42
+#: searx/templates/simple/preferences.html:48
+msgid "What language do you prefer for search?"
+msgstr "您偏好用哪種語言搜尋?"
+
+#: searx/templates/oscar/preferences.html:48
+#: searx/templates/simple/preferences.html:128
+msgid "Change the language of the layout"
+msgstr "變更佈局的語言"
+
+#: searx/templates/oscar/preferences.html:58
+#: searx/templates/simple/preferences.html:60
+msgid "Find stuff as you type"
+msgstr "隨打即找"
+
+#: searx/templates/oscar/preferences.html:69
+#: searx/templates/simple/preferences.html:173
+msgid "Proxying image results through searx"
+msgstr "透過 searx 代理圖片結果"
+
+#: searx/templates/oscar/preferences.html:78
+msgid ""
+"Change how forms are submited, <a "
+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
+" rel=\"external\">learn more about request methods</a>"
+msgstr "變更遞交形式,<a href=\"https://zh.wikipedia.org/wiki/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE#%E8%AF%B7%E6%B1%82%E6%96%B9%E6%B3%95\" rel=\"external\">看看更多關於請求方法的介紹</a>"
+
+#: searx/templates/oscar/preferences.html:87
+#: searx/templates/simple/preferences.html:71
+msgid "Filter content"
+msgstr "過濾內容"
+
+#: searx/templates/oscar/preferences.html:97
+#: searx/templates/simple/preferences.html:139
+msgid "Change searx layout"
+msgstr "變更 searx 佈局"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Choose style for this theme"
+msgstr "選擇這個主題的樣式"
+
+#: searx/templates/oscar/preferences.html:106
+#: searx/templates/oscar/preferences.html:111
+msgid "Style"
+msgstr "樣式"
+
+#: searx/templates/oscar/preferences.html:122
+msgid "Open Access DOI resolver"
+msgstr "開放存取 DOI 解析器"
+
+#: searx/templates/oscar/preferences.html:123
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "盡可能重新導向至出版品的開放存取版本(需要外掛程式)"
+
+#: searx/templates/oscar/preferences.html:163
+#: searx/templates/oscar/preferences.html:175
+#: searx/templates/simple/preferences.html:88
+msgid "Shortcut"
+msgstr "快捷鍵"
+
+#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:174
+msgid "Selected language"
+msgstr "已選取的語言"
+
+#: searx/templates/oscar/preferences.html:166
+#: searx/templates/oscar/preferences.html:172
+#: searx/templates/simple/preferences.html:91
+msgid "Time range"
+msgstr "時間範圍"
+
+#: searx/templates/oscar/preferences.html:167
+#: searx/templates/oscar/preferences.html:171
+#: searx/templates/simple/preferences.html:92
+msgid "Avg. time"
+msgstr "平均時間"
+
+#: searx/templates/oscar/preferences.html:168
+#: searx/templates/oscar/preferences.html:170
+#: searx/templates/simple/preferences.html:93
+msgid "Max time"
+msgstr "最大時間"
+
+#: searx/templates/oscar/preferences.html:248
+msgid "This is the list of searx's instant answering modules."
+msgstr "這是 searx 的即時回覆模組清單。"
+
+#: searx/templates/oscar/preferences.html:252
+msgid "Name"
+msgstr "名稱"
+
+#: searx/templates/oscar/preferences.html:253
+msgid "Keywords"
+msgstr "關鍵字"
+
+#: searx/templates/oscar/preferences.html:254
+msgid "Description"
+msgstr "描述"
+
+#: searx/templates/oscar/preferences.html:255
+msgid "Examples"
+msgstr "範例"
+
+#: searx/templates/oscar/preferences.html:275
+msgid ""
+"This is the list of cookies and their values searx is storing on your "
+"computer."
+msgstr "這是 searx 儲存在您電腦上的 cookies 與它們的值的清單。"
+
+#: searx/templates/oscar/preferences.html:276
+msgid "With that list, you can assess searx transparency."
+msgstr "有了這份清單,您就可以評估 searx 的透明度。"
+
+#: searx/templates/oscar/preferences.html:281
+msgid "Cookie name"
+msgstr "Cookie 名稱"
+
+#: searx/templates/oscar/preferences.html:282
+msgid "Value"
+msgstr "值"
+
+#: searx/templates/oscar/preferences.html:301
+msgid "Search URL of the currently saved preferences"
+msgstr "目前偏好設定的搜尋 URL"
+
+#: searx/templates/oscar/preferences.html:301
+msgid ""
+"Note: specifying custom settings in the search URL can reduce privacy by "
+"leaking data to the clicked result sites."
+msgstr "注意:在搜尋 URL 中指定自訂的設定可能會降低隱私,因為會洩漏資料給點選的結果頁面。"
+
+#: searx/templates/oscar/results.html:17
+msgid "Search results"
+msgstr "搜尋結果"
+
+#: searx/templates/oscar/results.html:21
+#: searx/templates/simple/results.html:84
+msgid "Try searching for:"
+msgstr "嘗試搜尋:"
+
+#: searx/templates/oscar/results.html:100
+#: searx/templates/simple/results.html:25
+msgid "Engines cannot retrieve results"
+msgstr "引擎無法擷取結果"
+
+#: searx/templates/oscar/results.html:131
+msgid "Links"
+msgstr "連結"
+
+#: searx/templates/oscar/search.html:8
+#: searx/templates/oscar/search_full.html:11
+#: searx/templates/simple/search.html:5
+msgid "Start search"
+msgstr "開始搜尋"
+
+#: searx/templates/oscar/stats.html:2
+msgid "stats"
+msgstr "統計"
+
+#: searx/templates/oscar/time-range.html:3
+#: searx/templates/simple/time-range.html:3
+msgid "Anytime"
+msgstr "任何時間"
+
+#: searx/templates/oscar/time-range.html:6
+#: searx/templates/simple/time-range.html:6
+msgid "Last day"
+msgstr "一天內"
+
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:9
+msgid "Last week"
+msgstr "一週內"
+
+#: searx/templates/oscar/time-range.html:12
+#: searx/templates/simple/time-range.html:12
+msgid "Last month"
+msgstr "一個月內"
+
+#: searx/templates/oscar/time-range.html:15
+#: searx/templates/simple/time-range.html:15
+msgid "Last year"
+msgstr "一年內"
+
+#: searx/templates/oscar/messages/first_time.html:6
+#: searx/templates/oscar/messages/no_data_available.html:3
+msgid "Heads up!"
+msgstr "注意!"
+
+#: searx/templates/oscar/messages/first_time.html:7
+msgid "It look like you are using searx first time."
+msgstr "看起來您是第一次使用 searx。"
+
+#: searx/templates/oscar/messages/no_cookies.html:3
+msgid "Information!"
+msgstr "資訊!"
+
+#: searx/templates/oscar/messages/no_cookies.html:4
+msgid "currently, there are no cookies defined."
+msgstr "目前未有已定義的 cookies。"
+
+#: searx/templates/oscar/messages/no_data_available.html:4
+msgid "There is currently no data available. "
+msgstr "目前無可用資料。"
+
+#: searx/templates/oscar/messages/no_results.html:4
+#: searx/templates/simple/messages/no_results.html:4
+msgid "Engines cannot retrieve results."
+msgstr "引擎無法擷取結果。"
+
+#: searx/templates/oscar/messages/no_results.html:10
+#: searx/templates/simple/messages/no_results.html:10
+msgid "Please, try again later or find another searx instance."
+msgstr "請再試一次或是使用其他 searx 實體搜尋。"
+
+#: searx/templates/oscar/messages/no_results.html:14
+#: searx/templates/simple/messages/no_results.html:14
+msgid "Sorry!"
+msgstr "抱歉!"
+
+#: searx/templates/oscar/messages/no_results.html:15
+#: searx/templates/simple/messages/no_results.html:15
+msgid ""
+"we didn't find any results. Please use another query or search in more "
+"categories."
+msgstr "我們找不到任何結果。請使用其他搜尋方式或在更多分類中搜尋。"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:7
+msgid "Well done!"
+msgstr "很好!"
+
+#: searx/templates/oscar/messages/save_settings_successfull.html:8
+msgid "Settings saved successfully."
+msgstr "設定成功儲存。"
+
+#: searx/templates/oscar/messages/unknow_error.html:7
+msgid "Oh snap!"
+msgstr "糟糕!"
+
+#: searx/templates/oscar/messages/unknow_error.html:8
+msgid "Something went wrong."
+msgstr "發生了一點問題。"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "show media"
+msgstr "顯示媒體"
+
+#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/simple/result_templates/default.html:6
+msgid "hide media"
+msgstr "隱藏媒體"
+
+#: searx/templates/oscar/result_templates/images.html:30
+msgid "Get image"
+msgstr "取得圖片"
+
+#: searx/templates/oscar/result_templates/images.html:33
+msgid "View source"
+msgstr "檢視來源"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "show map"
+msgstr "顯示地圖"
+
+#: searx/templates/oscar/result_templates/map.html:7
+#: searx/templates/simple/result_templates/map.html:7
+msgid "hide map"
+msgstr "隱藏地圖"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "show details"
+msgstr "顯示詳情"
+
+#: searx/templates/oscar/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:11
+msgid "hide details"
+msgstr "隱藏詳情"
+
+#: searx/templates/oscar/result_templates/torrent.html:7
+#: searx/templates/simple/result_templates/torrent.html:11
+msgid "Filesize"
+msgstr "檔案大小"
+
+#: searx/templates/oscar/result_templates/torrent.html:9
+#: searx/templates/simple/result_templates/torrent.html:12
+msgid "Bytes"
+msgstr "位元組"
+
+#: searx/templates/oscar/result_templates/torrent.html:10
+#: searx/templates/simple/result_templates/torrent.html:13
+msgid "kiB"
+msgstr "kiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:14
+msgid "MiB"
+msgstr "MiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:15
+msgid "GiB"
+msgstr "GiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:16
+msgid "TiB"
+msgstr "TiB"
+
+#: searx/templates/oscar/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:20
+msgid "Number of Files"
+msgstr "檔案數量"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "show video"
+msgstr "顯示影片"
+
+#: searx/templates/oscar/result_templates/videos.html:7
+#: searx/templates/simple/result_templates/videos.html:6
+msgid "hide video"
+msgstr "隱藏影片"
+
+#: searx/templates/pix-art/results.html:28
+msgid "Load more..."
+msgstr "載入更多……"
+
+#: searx/templates/simple/base.html:31
+msgid "No item found"
+msgstr "找不到項目"
+
+#: searx/templates/simple/preferences.html:89
+msgid "Supports selected language"
+msgstr "支援選定的語言"
+
+#: searx/templates/simple/preferences.html:118
+msgid "User interface"
+msgstr "使用者介面"
+
+#: searx/templates/simple/preferences.html:154
+msgid "Privacy"
+msgstr "隱私"
diff --git a/searx/url_utils.py b/searx/url_utils.py
new file mode 100644
index 0000000..dcafc3b
--- /dev/null
+++ b/searx/url_utils.py
@@ -0,0 +1,30 @@
+from sys import version_info
+
+if version_info[0] == 2:
+ from urllib import quote, quote_plus, unquote, urlencode
+ from urlparse import parse_qs, parse_qsl, urljoin, urlparse, urlunparse, ParseResult
+else:
+ from urllib.parse import (
+ parse_qs,
+ parse_qsl,
+ quote,
+ quote_plus,
+ unquote,
+ urlencode,
+ urljoin,
+ urlparse,
+ urlunparse,
+ ParseResult
+ )
+
+
+__export__ = (parse_qs,
+ parse_qsl,
+ quote,
+ quote_plus,
+ unquote,
+ urlencode,
+ urljoin,
+ urlparse,
+ urlunparse,
+ ParseResult)
diff --git a/searx/utils.py b/searx/utils.py
new file mode 100644
index 0000000..dfa22c5
--- /dev/null
+++ b/searx/utils.py
@@ -0,0 +1,401 @@
+import csv
+import hashlib
+import hmac
+import os
+import re
+
+from babel.core import get_global
+from babel.dates import format_date
+from codecs import getincrementalencoder
+from imp import load_source
+from numbers import Number
+from os.path import splitext, join
+from io import open
+from random import choice
+import sys
+import json
+
+from searx import settings
+from searx.version import VERSION_STRING
+from searx.languages import language_codes
+from searx import settings
+from searx import logger
+
+try:
+ from cStringIO import StringIO
+except:
+ from io import StringIO
+
+try:
+ from HTMLParser import HTMLParser
+except:
+ from html.parser import HTMLParser
+
+if sys.version_info[0] == 3:
+ unichr = chr
+ unicode = str
+ IS_PY2 = False
+ basestring = str
+else:
+ IS_PY2 = True
+
+logger = logger.getChild('utils')
+
+blocked_tags = ('script',
+ 'style')
+
+useragents = json.loads(open(os.path.dirname(os.path.realpath(__file__))
+ + "/data/useragents.json", 'r', encoding='utf-8').read())
+
+
+def searx_useragent():
+ return 'searx/{searx_version} {suffix}'.format(
+ searx_version=VERSION_STRING,
+ suffix=settings['outgoing'].get('useragent_suffix', ''))
+
+
+def gen_useragent(os=None):
+ return str(useragents['ua'].format(os=os or choice(useragents['os']), version=choice(useragents['versions'])))
+
+
+def highlight_content(content, query):
+
+ if not content:
+ return None
+ # ignoring html contents
+ # TODO better html content detection
+ if content.find('<') != -1:
+ return content
+
+ query = query.decode('utf-8')
+ if content.lower().find(query.lower()) > -1:
+ query_regex = u'({0})'.format(re.escape(query))
+ content = re.sub(query_regex, '<span class="highlight">\\1</span>',
+ content, flags=re.I | re.U)
+ else:
+ regex_parts = []
+ for chunk in query.split():
+ if len(chunk) == 1:
+ regex_parts.append(u'\\W+{0}\\W+'.format(re.escape(chunk)))
+ else:
+ regex_parts.append(u'{0}'.format(re.escape(chunk)))
+ query_regex = u'({0})'.format('|'.join(regex_parts))
+ content = re.sub(query_regex, '<span class="highlight">\\1</span>',
+ content, flags=re.I | re.U)
+
+ return content
+
+
+class HTMLTextExtractor(HTMLParser):
+
+ def __init__(self):
+ HTMLParser.__init__(self)
+ self.result = []
+ self.tags = []
+
+ def handle_starttag(self, tag, attrs):
+ self.tags.append(tag)
+
+ def handle_endtag(self, tag):
+ if not self.tags:
+ return
+
+ if tag != self.tags[-1]:
+ raise Exception("invalid html")
+
+ self.tags.pop()
+
+ def is_valid_tag(self):
+ return not self.tags or self.tags[-1] not in blocked_tags
+
+ def handle_data(self, d):
+ if not self.is_valid_tag():
+ return
+ self.result.append(d)
+
+ def handle_charref(self, number):
+ if not self.is_valid_tag():
+ return
+ if number[0] in (u'x', u'X'):
+ codepoint = int(number[1:], 16)
+ else:
+ codepoint = int(number)
+ self.result.append(unichr(codepoint))
+
+ def handle_entityref(self, name):
+ if not self.is_valid_tag():
+ return
+ # codepoint = htmlentitydefs.name2codepoint[name]
+ # self.result.append(unichr(codepoint))
+ self.result.append(name)
+
+ def get_text(self):
+ return u''.join(self.result).strip()
+
+
+def html_to_text(html):
+ html = html.replace('\n', ' ')
+ html = ' '.join(html.split())
+ s = HTMLTextExtractor()
+ s.feed(html)
+ return s.get_text()
+
+
+class UnicodeWriter:
+ """
+ A CSV writer which will write rows to CSV file "f",
+ which is encoded in the given encoding.
+ """
+
+ def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds):
+ # Redirect output to a queue
+ self.queue = StringIO()
+ self.writer = csv.writer(self.queue, dialect=dialect, **kwds)
+ self.stream = f
+ self.encoder = getincrementalencoder(encoding)()
+
+ def writerow(self, row):
+ if IS_PY2:
+ row = [s.encode("utf-8") if hasattr(s, 'encode') else s for s in row]
+ self.writer.writerow(row)
+ # Fetch UTF-8 output from the queue ...
+ data = self.queue.getvalue()
+ if IS_PY2:
+ data = data.decode("utf-8")
+ else:
+ data = data.strip('\x00')
+ # ... and reencode it into the target encoding
+ data = self.encoder.encode(data)
+ # write to the target stream
+ if IS_PY2:
+ self.stream.write(data)
+ else:
+ self.stream.write(data.decode("utf-8"))
+ # empty queue
+ self.queue.truncate(0)
+
+ def writerows(self, rows):
+ for row in rows:
+ self.writerow(row)
+
+
+def get_resources_directory(searx_directory, subdirectory, resources_directory):
+ if not resources_directory:
+ resources_directory = os.path.join(searx_directory, subdirectory)
+ if not os.path.isdir(resources_directory):
+ raise Exception(directory + " is not a directory")
+ return resources_directory
+
+
+def get_themes(templates_path):
+ """Returns available themes list."""
+ themes = os.listdir(templates_path)
+ if '__common__' in themes:
+ themes.remove('__common__')
+ return themes
+
+
+def get_static_files(static_path):
+ static_files = set()
+ static_path_length = len(static_path) + 1
+ for directory, _, files in os.walk(static_path):
+ for filename in files:
+ f = os.path.join(directory[static_path_length:], filename)
+ static_files.add(f)
+ return static_files
+
+
+def get_result_templates(templates_path):
+ result_templates = set()
+ templates_path_length = len(templates_path) + 1
+ for directory, _, files in os.walk(templates_path):
+ if directory.endswith('result_templates'):
+ for filename in files:
+ f = os.path.join(directory[templates_path_length:], filename)
+ result_templates.add(f)
+ return result_templates
+
+
+def format_date_by_locale(date, locale_string):
+ # strftime works only on dates after 1900
+
+ if date.year <= 1900:
+ return date.isoformat().split('T')[0]
+
+ if locale_string == 'all':
+ locale_string = settings['ui']['default_locale'] or 'en_US'
+
+ # to avoid crashing if locale is not supported by babel
+ try:
+ formatted_date = format_date(date, locale=locale_string)
+ except:
+ formatted_date = format_date(date, "YYYY-MM-dd")
+
+ return formatted_date
+
+
+def dict_subset(d, properties):
+ result = {}
+ for k in properties:
+ if k in d:
+ result[k] = d[k]
+ return result
+
+
+def prettify_url(url, max_length=74):
+ if len(url) > max_length:
+ chunk_len = int(max_length / 2 + 1)
+ return u'{0}[...]{1}'.format(url[:chunk_len], url[-chunk_len:])
+ else:
+ return url
+
+
+# get element in list or default value
+def list_get(a_list, index, default=None):
+ if len(a_list) > index:
+ return a_list[index]
+ else:
+ return default
+
+
+def get_torrent_size(filesize, filesize_multiplier):
+ try:
+ filesize = float(filesize)
+
+ if filesize_multiplier == 'TB':
+ filesize = int(filesize * 1024 * 1024 * 1024 * 1024)
+ elif filesize_multiplier == 'GB':
+ filesize = int(filesize * 1024 * 1024 * 1024)
+ elif filesize_multiplier == 'MB':
+ filesize = int(filesize * 1024 * 1024)
+ elif filesize_multiplier == 'KB':
+ filesize = int(filesize * 1024)
+ elif filesize_multiplier == 'TiB':
+ filesize = int(filesize * 1000 * 1000 * 1000 * 1000)
+ elif filesize_multiplier == 'GiB':
+ filesize = int(filesize * 1000 * 1000 * 1000)
+ elif filesize_multiplier == 'MiB':
+ filesize = int(filesize * 1000 * 1000)
+ elif filesize_multiplier == 'KiB':
+ filesize = int(filesize * 1000)
+ except:
+ filesize = None
+
+ return filesize
+
+
+def convert_str_to_int(number_str):
+ if number_str.isdigit():
+ return int(number_str)
+ else:
+ return 0
+
+
+# convert a variable to integer or return 0 if it's not a number
+def int_or_zero(num):
+ if isinstance(num, list):
+ if len(num) < 1:
+ return 0
+ num = num[0]
+ return convert_str_to_int(num)
+
+
+def is_valid_lang(lang):
+ is_abbr = (len(lang) == 2)
+ if is_abbr:
+ for l in language_codes:
+ if l[0][:2] == lang.lower():
+ return (True, l[0][:2], l[3].lower())
+ return False
+ else:
+ for l in language_codes:
+ if l[1].lower() == lang.lower():
+ return (True, l[0][:2], l[3].lower())
+ return False
+
+
+# auxiliary function to match lang_code in lang_list
+def _match_language(lang_code, lang_list=[], custom_aliases={}):
+ # replace language code with a custom alias if necessary
+ if lang_code in custom_aliases:
+ lang_code = custom_aliases[lang_code]
+
+ if lang_code in lang_list:
+ return lang_code
+
+ # try to get the most likely country for this language
+ subtags = get_global('likely_subtags').get(lang_code)
+ if subtags:
+ subtag_parts = subtags.split('_')
+ new_code = subtag_parts[0] + '-' + subtag_parts[-1]
+ if new_code in custom_aliases:
+ new_code = custom_aliases[new_code]
+ if new_code in lang_list:
+ return new_code
+
+ # try to get the any supported country for this language
+ for lc in lang_list:
+ if lang_code == lc.split('-')[0]:
+ return lc
+
+ return None
+
+
+# get the language code from lang_list that best matches locale_code
+def match_language(locale_code, lang_list=[], custom_aliases={}, fallback='en-US'):
+ # try to get language from given locale_code
+ language = _match_language(locale_code, lang_list, custom_aliases)
+ if language:
+ return language
+
+ locale_parts = locale_code.split('-')
+ lang_code = locale_parts[0]
+
+ # try to get language using an equivalent country code
+ if len(locale_parts) > 1:
+ country_alias = get_global('territory_aliases').get(locale_parts[-1])
+ if country_alias:
+ language = _match_language(lang_code + '-' + country_alias[0], lang_list, custom_aliases)
+ if language:
+ return language
+
+ # try to get language using an equivalent language code
+ alias = get_global('language_aliases').get(lang_code)
+ if alias:
+ language = _match_language(alias, lang_list, custom_aliases)
+ if language:
+ return language
+
+ if lang_code != locale_code:
+ # try to get language from given language without giving the country
+ language = _match_language(lang_code, lang_list, custom_aliases)
+
+ return language or fallback
+
+
+def load_module(filename, module_dir):
+ modname = splitext(filename)[0]
+ if modname in sys.modules:
+ del sys.modules[modname]
+ filepath = join(module_dir, filename)
+ module = load_source(modname, filepath)
+ module.name = modname
+ return module
+
+
+def new_hmac(secret_key, url):
+ if sys.version_info[0] == 2:
+ return hmac.new(bytes(secret_key), url, hashlib.sha256).hexdigest()
+ else:
+ return hmac.new(bytes(secret_key, 'utf-8'), url, hashlib.sha256).hexdigest()
+
+
+def to_string(obj):
+ if isinstance(obj, basestring):
+ return obj
+ if isinstance(obj, Number):
+ return unicode(obj)
+ if hasattr(obj, '__str__'):
+ return obj.__str__()
+ if hasattr(obj, '__repr__'):
+ return obj.__repr__()
diff --git a/searx/version.py b/searx/version.py
new file mode 100644
index 0000000..4e14972
--- /dev/null
+++ b/searx/version.py
@@ -0,0 +1,26 @@
+# -*- coding: utf-8 -*-
+'''
+searx is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+searx is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with searx. If not, see < http://www.gnu.org/licenses/ >.
+
+(C) 2013- by Adam Tauber, <asciimoo@gmail.com>
+'''
+
+# version of searx
+VERSION_MAJOR = 0
+VERSION_MINOR = 15
+VERSION_BUILD = 0
+
+VERSION_STRING = "{0}.{1}.{2}".format(VERSION_MAJOR,
+ VERSION_MINOR,
+ VERSION_BUILD)
diff --git a/searx/webapp.py b/searx/webapp.py
new file mode 100644
index 0000000..7145cac
--- /dev/null
+++ b/searx/webapp.py
@@ -0,0 +1,929 @@
+#!/usr/bin/env python
+
+'''
+searx is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+searx is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with searx. If not, see < http://www.gnu.org/licenses/ >.
+
+(C) 2013- by Adam Tauber, <asciimoo@gmail.com>
+'''
+
+if __name__ == '__main__':
+ from sys import path
+ from os.path import realpath, dirname
+ path.append(realpath(dirname(realpath(__file__)) + '/../'))
+
+import hashlib
+import hmac
+import json
+import os
+import sys
+
+import requests
+
+from searx import logger
+logger = logger.getChild('webapp')
+
+try:
+ from pygments import highlight
+ from pygments.lexers import get_lexer_by_name
+ from pygments.formatters import HtmlFormatter
+except:
+ logger.critical("cannot import dependency: pygments")
+ from sys import exit
+ exit(1)
+from cgi import escape
+from datetime import datetime, timedelta
+from werkzeug.contrib.fixers import ProxyFix
+from flask import (
+ Flask, request, render_template, url_for, Response, make_response,
+ redirect, send_from_directory
+)
+from flask_babel import Babel, gettext, format_date, format_decimal
+from flask.json import jsonify
+from searx import settings, searx_dir, searx_debug
+from searx.exceptions import SearxParameterException
+from searx.engines import (
+ categories, engines, engine_shortcuts, get_engines_stats, initialize_engines
+)
+from searx.utils import (
+ UnicodeWriter, highlight_content, html_to_text, get_resources_directory,
+ get_static_files, get_result_templates, get_themes, gen_useragent,
+ dict_subset, prettify_url, match_language
+)
+from searx.version import VERSION_STRING
+from searx.languages import language_codes as languages
+from searx.search import SearchWithPlugins, get_search_query_from_webapp
+from searx.query import RawTextQuery
+from searx.autocomplete import searx_bang, backends as autocomplete_backends
+from searx.plugins import plugins
+from searx.plugins.oa_doi_rewrite import get_doi_resolver
+from searx.preferences import Preferences, ValidationException, LANGUAGE_CODES
+from searx.answerers import answerers
+from searx.url_utils import urlencode, urlparse, urljoin
+from searx.utils import new_hmac
+
+# check if the pyopenssl package is installed.
+# It is needed for SSL connection without trouble, see #298
+try:
+ import OpenSSL.SSL # NOQA
+except ImportError:
+ logger.critical("The pyopenssl package has to be installed.\n"
+ "Some HTTPS connections will fail")
+
+try:
+ from cStringIO import StringIO
+except:
+ from io import StringIO
+
+
+if sys.version_info[0] == 3:
+ unicode = str
+ PY3 = True
+else:
+ PY3 = False
+
+# serve pages with HTTP/1.1
+from werkzeug.serving import WSGIRequestHandler
+WSGIRequestHandler.protocol_version = "HTTP/{}".format(settings['server'].get('http_protocol_version', '1.0'))
+
+# about static
+static_path = get_resources_directory(searx_dir, 'static', settings['ui']['static_path'])
+logger.debug('static directory is %s', static_path)
+static_files = get_static_files(static_path)
+
+# about templates
+default_theme = settings['ui']['default_theme']
+templates_path = get_resources_directory(searx_dir, 'templates', settings['ui']['templates_path'])
+logger.debug('templates directory is %s', templates_path)
+themes = get_themes(templates_path)
+result_templates = get_result_templates(templates_path)
+global_favicons = []
+for indice, theme in enumerate(themes):
+ global_favicons.append([])
+ theme_img_path = os.path.join(static_path, 'themes', theme, 'img', 'icons')
+ for (dirpath, dirnames, filenames) in os.walk(theme_img_path):
+ global_favicons[indice].extend(filenames)
+
+# Flask app
+app = Flask(
+ __name__,
+ static_folder=static_path,
+ template_folder=templates_path
+)
+
+app.jinja_env.trim_blocks = True
+app.jinja_env.lstrip_blocks = True
+app.secret_key = settings['server']['secret_key']
+
+if not searx_debug \
+ or os.environ.get("WERKZEUG_RUN_MAIN") == "true" \
+ or os.environ.get('UWSGI_ORIGINAL_PROC_NAME') is not None:
+ initialize_engines(settings['engines'])
+
+babel = Babel(app)
+
+rtl_locales = ['ar', 'arc', 'bcc', 'bqi', 'ckb', 'dv', 'fa', 'glk', 'he',
+ 'ku', 'mzn', 'pnb', 'ps', 'sd', 'ug', 'ur', 'yi']
+
+# used when translating category names
+_category_names = (gettext('files'),
+ gettext('general'),
+ gettext('music'),
+ gettext('social media'),
+ gettext('images'),
+ gettext('videos'),
+ gettext('it'),
+ gettext('news'),
+ gettext('map'),
+ gettext('science'))
+
+outgoing_proxies = settings['outgoing'].get('proxies') or None
+
+
+@babel.localeselector
+def get_locale():
+ locale = request.accept_languages.best_match(settings['locales'].keys())
+
+ if request.preferences.get_value('locale') != '':
+ locale = request.preferences.get_value('locale')
+
+ if 'locale' in request.args\
+ and request.args['locale'] in settings['locales']:
+ locale = request.args['locale']
+
+ if 'locale' in request.form\
+ and request.form['locale'] in settings['locales']:
+ locale = request.form['locale']
+
+ if locale == 'zh_TW':
+ locale = 'zh_Hant_TW'
+
+ return locale
+
+
+# code-highlighter
+@app.template_filter('code_highlighter')
+def code_highlighter(codelines, language=None):
+ if not language:
+ language = 'text'
+
+ try:
+ # find lexer by programing language
+ lexer = get_lexer_by_name(language, stripall=True)
+ except:
+ # if lexer is not found, using default one
+ logger.debug('highlighter cannot find lexer for {0}'.format(language))
+ lexer = get_lexer_by_name('text', stripall=True)
+
+ html_code = ''
+ tmp_code = ''
+ last_line = None
+
+ # parse lines
+ for line, code in codelines:
+ if not last_line:
+ line_code_start = line
+
+ # new codeblock is detected
+ if last_line is not None and\
+ last_line + 1 != line:
+
+ # highlight last codepart
+ formatter = HtmlFormatter(linenos='inline',
+ linenostart=line_code_start)
+ html_code = html_code + highlight(tmp_code, lexer, formatter)
+
+ # reset conditions for next codepart
+ tmp_code = ''
+ line_code_start = line
+
+ # add codepart
+ tmp_code += code + '\n'
+
+ # update line
+ last_line = line
+
+ # highlight last codepart
+ formatter = HtmlFormatter(linenos='inline', linenostart=line_code_start)
+ html_code = html_code + highlight(tmp_code, lexer, formatter)
+
+ return html_code
+
+
+# Extract domain from url
+@app.template_filter('extract_domain')
+def extract_domain(url):
+ return urlparse(url)[1]
+
+
+def get_base_url():
+ if settings['server']['base_url']:
+ hostname = settings['server']['base_url']
+ else:
+ scheme = 'http'
+ if request.is_secure:
+ scheme = 'https'
+ hostname = url_for('index', _external=True, _scheme=scheme)
+ return hostname
+
+
+def get_current_theme_name(override=None):
+ """Returns theme name.
+
+ Checks in this order:
+ 1. override
+ 2. cookies
+ 3. settings"""
+
+ if override and (override in themes or override == '__common__'):
+ return override
+ theme_name = request.args.get('theme', request.preferences.get_value('theme'))
+ if theme_name not in themes:
+ theme_name = default_theme
+ return theme_name
+
+
+def get_result_template(theme, template_name):
+ themed_path = theme + '/result_templates/' + template_name
+ if themed_path in result_templates:
+ return themed_path
+ return 'result_templates/' + template_name
+
+
+def url_for_theme(endpoint, override_theme=None, **values):
+ if endpoint == 'static' and values.get('filename'):
+ theme_name = get_current_theme_name(override=override_theme)
+ filename_with_theme = "themes/{}/{}".format(theme_name, values['filename'])
+ if filename_with_theme in static_files:
+ values['filename'] = filename_with_theme
+ return url_for(endpoint, **values)
+
+
+def proxify(url):
+ if url.startswith('//'):
+ url = 'https:' + url
+
+ if not settings.get('result_proxy'):
+ return url
+
+ url_params = dict(mortyurl=url.encode('utf-8'))
+
+ if settings['result_proxy'].get('key'):
+ url_params['mortyhash'] = hmac.new(settings['result_proxy']['key'],
+ url.encode('utf-8'),
+ hashlib.sha256).hexdigest()
+
+ return '{0}?{1}'.format(settings['result_proxy']['url'],
+ urlencode(url_params))
+
+
+def image_proxify(url):
+
+ if url.startswith('//'):
+ url = 'https:' + url
+
+ if not request.preferences.get_value('image_proxy'):
+ return url
+
+ if settings.get('result_proxy'):
+ return proxify(url)
+
+ h = new_hmac(settings['server']['secret_key'], url.encode('utf-8'))
+
+ return '{0}?{1}'.format(url_for('image_proxy'),
+ urlencode(dict(url=url.encode('utf-8'), h=h)))
+
+
+def render(template_name, override_theme=None, **kwargs):
+ disabled_engines = request.preferences.engines.get_disabled()
+
+ enabled_categories = set(category for engine_name in engines
+ for category in engines[engine_name].categories
+ if (engine_name, category) not in disabled_engines)
+
+ if 'categories' not in kwargs:
+ kwargs['categories'] = ['general']
+ kwargs['categories'].extend(x for x in
+ sorted(categories.keys())
+ if x != 'general'
+ and x in enabled_categories)
+
+ if 'all_categories' not in kwargs:
+ kwargs['all_categories'] = ['general']
+ kwargs['all_categories'].extend(x for x in
+ sorted(categories.keys())
+ if x != 'general')
+
+ if 'selected_categories' not in kwargs:
+ kwargs['selected_categories'] = []
+ for arg in request.args:
+ if arg.startswith('category_'):
+ c = arg.split('_', 1)[1]
+ if c in categories:
+ kwargs['selected_categories'].append(c)
+
+ if not kwargs['selected_categories']:
+ cookie_categories = request.preferences.get_value('categories')
+ for ccateg in cookie_categories:
+ kwargs['selected_categories'].append(ccateg)
+
+ if not kwargs['selected_categories']:
+ kwargs['selected_categories'] = ['general']
+
+ if 'autocomplete' not in kwargs:
+ kwargs['autocomplete'] = request.preferences.get_value('autocomplete')
+
+ if get_locale() in rtl_locales and 'rtl' not in kwargs:
+ kwargs['rtl'] = True
+
+ kwargs['searx_version'] = VERSION_STRING
+
+ kwargs['method'] = request.preferences.get_value('method')
+
+ kwargs['safesearch'] = str(request.preferences.get_value('safesearch'))
+
+ kwargs['language_codes'] = languages
+ if 'current_language' not in kwargs:
+ kwargs['current_language'] = match_language(request.preferences.get_value('language'),
+ LANGUAGE_CODES,
+ fallback=settings['search']['language'])
+
+ # override url_for function in templates
+ kwargs['url_for'] = url_for_theme
+
+ kwargs['image_proxify'] = image_proxify
+
+ kwargs['proxify'] = proxify if settings.get('result_proxy', {}).get('url') else None
+
+ kwargs['get_result_template'] = get_result_template
+
+ kwargs['theme'] = get_current_theme_name(override=override_theme)
+
+ kwargs['template_name'] = template_name
+
+ kwargs['cookies'] = request.cookies
+
+ kwargs['errors'] = request.errors
+
+ kwargs['instance_name'] = settings['general']['instance_name']
+
+ kwargs['results_on_new_tab'] = request.preferences.get_value('results_on_new_tab')
+
+ kwargs['unicode'] = unicode
+
+ kwargs['preferences'] = request.preferences
+
+ kwargs['scripts'] = set()
+ for plugin in request.user_plugins:
+ for script in plugin.js_dependencies:
+ kwargs['scripts'].add(script)
+
+ kwargs['styles'] = set()
+ for plugin in request.user_plugins:
+ for css in plugin.css_dependencies:
+ kwargs['styles'].add(css)
+
+ return render_template(
+ '{}/{}'.format(kwargs['theme'], template_name), **kwargs)
+
+
+@app.before_request
+def pre_request():
+ request.errors = []
+
+ preferences = Preferences(themes, list(categories.keys()), engines, plugins)
+ request.preferences = preferences
+ try:
+ preferences.parse_dict(request.cookies)
+ except:
+ request.errors.append(gettext('Invalid settings, please edit your preferences'))
+
+ # merge GET, POST vars
+ # request.form
+ request.form = dict(request.form.items())
+ for k, v in request.args.items():
+ if k not in request.form:
+ request.form[k] = v
+
+ if request.form.get('preferences'):
+ preferences.parse_encoded_data(request.form['preferences'])
+ else:
+ try:
+ preferences.parse_dict(request.form)
+ except Exception as e:
+ logger.exception('invalid settings')
+ request.errors.append(gettext('Invalid settings'))
+
+ # request.user_plugins
+ request.user_plugins = []
+ allowed_plugins = preferences.plugins.get_enabled()
+ disabled_plugins = preferences.plugins.get_disabled()
+ for plugin in plugins:
+ if ((plugin.default_on and plugin.id not in disabled_plugins)
+ or plugin.id in allowed_plugins):
+ request.user_plugins.append(plugin)
+
+
+def index_error(output_format, error_message):
+ if output_format == 'json':
+ return Response(json.dumps({'error': error_message}),
+ mimetype='application/json')
+ elif output_format == 'csv':
+ response = Response('', mimetype='application/csv')
+ cont_disp = 'attachment;Filename=searx.csv'
+ response.headers.add('Content-Disposition', cont_disp)
+ return response
+ elif output_format == 'rss':
+ response_rss = render(
+ 'opensearch_response_rss.xml',
+ results=[],
+ q=request.form['q'] if 'q' in request.form else '',
+ number_of_results=0,
+ base_url=get_base_url(),
+ error_message=error_message,
+ override_theme='__common__',
+ )
+ return Response(response_rss, mimetype='text/xml')
+ else:
+ # html
+ request.errors.append(gettext('search error'))
+ return render(
+ 'index.html',
+ )
+
+
+@app.route('/search', methods=['GET', 'POST'])
+@app.route('/', methods=['GET', 'POST'])
+def index():
+ """Render index page.
+
+ Supported outputs: html, json, csv, rss.
+ """
+
+ # output_format
+ output_format = request.form.get('format', 'html')
+ if output_format not in ['html', 'csv', 'json', 'rss']:
+ output_format = 'html'
+
+ # check if there is query
+ if request.form.get('q') is None:
+ if output_format == 'html':
+ return render(
+ 'index.html',
+ )
+ else:
+ return index_error(output_format, 'No query'), 400
+
+ # search
+ search_query = None
+ result_container = None
+ try:
+ search_query = get_search_query_from_webapp(request.preferences, request.form)
+ # search = Search(search_query) # without plugins
+ search = SearchWithPlugins(search_query, request.user_plugins, request)
+ result_container = search.search()
+ except Exception as e:
+ # log exception
+ logger.exception('search error')
+
+ # is it an invalid input parameter or something else ?
+ if (issubclass(e.__class__, SearxParameterException)):
+ return index_error(output_format, e.message), 400
+ else:
+ return index_error(output_format, gettext('search error')), 500
+
+ # results
+ results = result_container.get_ordered_results()
+ number_of_results = result_container.results_number()
+ if number_of_results < result_container.results_length():
+ number_of_results = 0
+
+ # UI
+ advanced_search = request.form.get('advanced_search', None)
+
+ # output
+ for result in results:
+ if output_format == 'html':
+ if 'content' in result and result['content']:
+ result['content'] = highlight_content(escape(result['content'][:1024]), search_query.query)
+ result['title'] = highlight_content(escape(result['title'] or u''), search_query.query)
+ else:
+ if result.get('content'):
+ result['content'] = html_to_text(result['content']).strip()
+ # removing html content and whitespace duplications
+ result['title'] = ' '.join(html_to_text(result['title']).strip().split())
+
+ result['pretty_url'] = prettify_url(result['url'])
+
+ # TODO, check if timezone is calculated right
+ if 'publishedDate' in result:
+ try: # test if publishedDate >= 1900 (datetime module bug)
+ result['pubdate'] = result['publishedDate'].strftime('%Y-%m-%d %H:%M:%S%z')
+ except ValueError:
+ result['publishedDate'] = None
+ else:
+ if result['publishedDate'].replace(tzinfo=None) >= datetime.now() - timedelta(days=1):
+ timedifference = datetime.now() - result['publishedDate'].replace(tzinfo=None)
+ minutes = int((timedifference.seconds / 60) % 60)
+ hours = int(timedifference.seconds / 60 / 60)
+ if hours == 0:
+ result['publishedDate'] = gettext(u'{minutes} minute(s) ago').format(minutes=minutes)
+ else:
+ result['publishedDate'] = gettext(u'{hours} hour(s), {minutes} minute(s) ago').format(hours=hours, minutes=minutes) # noqa
+ else:
+ result['publishedDate'] = format_date(result['publishedDate'])
+
+ if output_format == 'json':
+ return Response(json.dumps({'query': search_query.query.decode('utf-8'),
+ 'number_of_results': number_of_results,
+ 'results': results,
+ 'answers': list(result_container.answers),
+ 'corrections': list(result_container.corrections),
+ 'infoboxes': result_container.infoboxes,
+ 'suggestions': list(result_container.suggestions),
+ 'unresponsive_engines': list(result_container.unresponsive_engines)},
+ default=lambda item: list(item) if isinstance(item, set) else item),
+ mimetype='application/json')
+ elif output_format == 'csv':
+ csv = UnicodeWriter(StringIO())
+ keys = ('title', 'url', 'content', 'host', 'engine', 'score')
+ csv.writerow(keys)
+ for row in results:
+ row['host'] = row['parsed_url'].netloc
+ csv.writerow([row.get(key, '') for key in keys])
+ csv.stream.seek(0)
+ response = Response(csv.stream.read(), mimetype='application/csv')
+ cont_disp = 'attachment;Filename=searx_-_{0}.csv'.format(search_query.query)
+ response.headers.add('Content-Disposition', cont_disp)
+ return response
+ elif output_format == 'rss':
+ response_rss = render(
+ 'opensearch_response_rss.xml',
+ results=results,
+ q=request.form['q'],
+ number_of_results=number_of_results,
+ base_url=get_base_url(),
+ override_theme='__common__',
+ )
+ return Response(response_rss, mimetype='text/xml')
+
+ return render(
+ 'results.html',
+ results=results,
+ q=request.form['q'],
+ selected_categories=search_query.categories,
+ pageno=search_query.pageno,
+ time_range=search_query.time_range,
+ number_of_results=format_decimal(number_of_results),
+ advanced_search=advanced_search,
+ suggestions=result_container.suggestions,
+ answers=result_container.answers,
+ corrections=result_container.corrections,
+ infoboxes=result_container.infoboxes,
+ paging=result_container.paging,
+ unresponsive_engines=result_container.unresponsive_engines,
+ current_language=match_language(search_query.lang,
+ LANGUAGE_CODES,
+ fallback=settings['search']['language']),
+ base_url=get_base_url(),
+ theme=get_current_theme_name(),
+ favicons=global_favicons[themes.index(get_current_theme_name())]
+ )
+
+
+@app.route('/about', methods=['GET'])
+def about():
+ """Render about page"""
+ return render(
+ 'about.html',
+ )
+
+
+@app.route('/autocompleter', methods=['GET', 'POST'])
+def autocompleter():
+ """Return autocompleter results"""
+
+ # set blocked engines
+ disabled_engines = request.preferences.engines.get_disabled()
+
+ # parse query
+ if PY3:
+ raw_text_query = RawTextQuery(request.form.get('q', b''), disabled_engines)
+ else:
+ raw_text_query = RawTextQuery(request.form.get('q', u'').encode('utf-8'), disabled_engines)
+ raw_text_query.parse_query()
+
+ # check if search query is set
+ if not raw_text_query.getSearchQuery():
+ return '', 400
+
+ # run autocompleter
+ completer = autocomplete_backends.get(request.preferences.get_value('autocomplete'))
+
+ # parse searx specific autocompleter results like !bang
+ raw_results = searx_bang(raw_text_query)
+
+ # normal autocompletion results only appear if max 3 inner results returned
+ if len(raw_results) <= 3 and completer:
+ # get language from cookie
+ language = request.preferences.get_value('language')
+ if not language:
+ language = settings['search']['language']
+ else:
+ language = language.split('-')[0]
+ # run autocompletion
+ raw_results.extend(completer(raw_text_query.getSearchQuery(), language))
+
+ # parse results (write :language and !engine back to result string)
+ results = []
+ for result in raw_results:
+ raw_text_query.changeSearchQuery(result)
+
+ # add parsed result
+ results.append(raw_text_query.getFullQuery())
+
+ # return autocompleter results
+ if request.form.get('format') == 'x-suggestions':
+ return Response(json.dumps([raw_text_query.query, results]),
+ mimetype='application/json')
+
+ return Response(json.dumps(results),
+ mimetype='application/json')
+
+
+@app.route('/preferences', methods=['GET', 'POST'])
+def preferences():
+ """Render preferences page && save user preferences"""
+
+ # save preferences
+ if request.method == 'POST':
+ resp = make_response(redirect(urljoin(settings['server']['base_url'], url_for('index'))))
+ try:
+ request.preferences.parse_form(request.form)
+ except ValidationException:
+ request.errors.append(gettext('Invalid settings, please edit your preferences'))
+ return resp
+ return request.preferences.save(resp)
+
+ # render preferences
+ image_proxy = request.preferences.get_value('image_proxy')
+ lang = request.preferences.get_value('language')
+ disabled_engines = request.preferences.engines.get_disabled()
+ allowed_plugins = request.preferences.plugins.get_enabled()
+
+ # stats for preferences page
+ stats = {}
+
+ for c in categories:
+ for e in categories[c]:
+ stats[e.name] = {'time': None,
+ 'warn_timeout': False,
+ 'warn_time': False}
+ if e.timeout > settings['outgoing']['request_timeout']:
+ stats[e.name]['warn_timeout'] = True
+ if match_language(request.preferences.get_value('language'),
+ getattr(e, 'supported_languages', []),
+ getattr(e, 'language_aliases', {}), None):
+ stats[e.name]['supports_selected_language'] = True
+
+ # get first element [0], the engine time,
+ # and then the second element [1] : the time (the first one is the label)
+ for engine_stat in get_engines_stats()[0][1]:
+ stats[engine_stat.get('name')]['time'] = round(engine_stat.get('avg'), 3)
+ if engine_stat.get('avg') > settings['outgoing']['request_timeout']:
+ stats[engine_stat.get('name')]['warn_time'] = True
+ # end of stats
+
+ return render('preferences.html',
+ locales=settings['locales'],
+ current_locale=get_locale(),
+ image_proxy=image_proxy,
+ engines_by_category=categories,
+ stats=stats,
+ answerers=[{'info': a.self_info(), 'keywords': a.keywords} for a in answerers],
+ disabled_engines=disabled_engines,
+ autocomplete_backends=autocomplete_backends,
+ shortcuts={y: x for x, y in engine_shortcuts.items()},
+ themes=themes,
+ plugins=plugins,
+ doi_resolvers=settings['doi_resolvers'],
+ current_doi_resolver=get_doi_resolver(request.args, request.preferences.get_value('doi_resolver')),
+ allowed_plugins=allowed_plugins,
+ theme=get_current_theme_name(),
+ preferences_url_params=request.preferences.get_as_url_params(),
+ base_url=get_base_url(),
+ preferences=True)
+
+
+@app.route('/image_proxy', methods=['GET'])
+def image_proxy():
+ url = request.args.get('url').encode('utf-8')
+
+ if not url:
+ return '', 400
+
+ h = new_hmac(settings['server']['secret_key'], url)
+
+ if h != request.args.get('h'):
+ return '', 400
+
+ headers = dict_subset(request.headers, {'If-Modified-Since', 'If-None-Match'})
+ headers['User-Agent'] = gen_useragent()
+
+ resp = requests.get(url,
+ stream=True,
+ timeout=settings['outgoing']['request_timeout'],
+ headers=headers,
+ proxies=outgoing_proxies)
+
+ if resp.status_code == 304:
+ return '', resp.status_code
+
+ if resp.status_code != 200:
+ logger.debug('image-proxy: wrong response code: {0}'.format(resp.status_code))
+ if resp.status_code >= 400:
+ return '', resp.status_code
+ return '', 400
+
+ if not resp.headers.get('content-type', '').startswith('image/'):
+ logger.debug('image-proxy: wrong content-type: {0}'.format(resp.headers.get('content-type')))
+ return '', 400
+
+ img = b''
+ chunk_counter = 0
+
+ for chunk in resp.iter_content(1024 * 1024):
+ chunk_counter += 1
+ if chunk_counter > 5:
+ return '', 502 # Bad gateway - file is too big (>5M)
+ img += chunk
+
+ headers = dict_subset(resp.headers, {'Content-Length', 'Length', 'Date', 'Last-Modified', 'Expires', 'Etag'})
+
+ return Response(img, mimetype=resp.headers['content-type'], headers=headers)
+
+
+@app.route('/stats', methods=['GET'])
+def stats():
+ """Render engine statistics page."""
+ stats = get_engines_stats()
+ return render(
+ 'stats.html',
+ stats=stats,
+ )
+
+
+@app.route('/robots.txt', methods=['GET'])
+def robots():
+ return Response("""User-agent: *
+Allow: /
+Allow: /about
+Disallow: /stats
+Disallow: /preferences
+Disallow: /*?*q=*
+""", mimetype='text/plain')
+
+
+@app.route('/opensearch.xml', methods=['GET'])
+def opensearch():
+ method = 'post'
+
+ if request.preferences.get_value('method') == 'GET':
+ method = 'get'
+
+ # chrome/chromium only supports HTTP GET....
+ if request.headers.get('User-Agent', '').lower().find('webkit') >= 0:
+ method = 'get'
+
+ ret = render('opensearch.xml',
+ opensearch_method=method,
+ host=get_base_url(),
+ urljoin=urljoin,
+ override_theme='__common__')
+
+ resp = Response(response=ret,
+ status=200,
+ mimetype="text/xml")
+ return resp
+
+
+@app.route('/favicon.ico')
+def favicon():
+ return send_from_directory(os.path.join(app.root_path,
+ static_path,
+ 'themes',
+ get_current_theme_name(),
+ 'img'),
+ 'favicon.png',
+ mimetype='image/vnd.microsoft.icon')
+
+
+@app.route('/clear_cookies')
+def clear_cookies():
+ resp = make_response(redirect(urljoin(settings['server']['base_url'], url_for('index'))))
+ for cookie_name in request.cookies:
+ resp.delete_cookie(cookie_name)
+ return resp
+
+
+@app.route('/config')
+def config():
+ return jsonify({'categories': categories.keys(),
+ 'engines': [{'name': engine_name,
+ 'categories': engine.categories,
+ 'shortcut': engine.shortcut,
+ 'enabled': not engine.disabled,
+ 'paging': engine.paging,
+ 'language_support': engine.language_support,
+ 'supported_languages':
+ engine.supported_languages.keys()
+ if isinstance(engine.supported_languages, dict)
+ else engine.supported_languages,
+ 'safesearch': engine.safesearch,
+ 'time_range_support': engine.time_range_support,
+ 'timeout': engine.timeout}
+ for engine_name, engine in engines.items()],
+ 'plugins': [{'name': plugin.name,
+ 'enabled': plugin.default_on}
+ for plugin in plugins],
+ 'instance_name': settings['general']['instance_name'],
+ 'locales': settings['locales'],
+ 'default_locale': settings['ui']['default_locale'],
+ 'autocomplete': settings['search']['autocomplete'],
+ 'safe_search': settings['search']['safe_search'],
+ 'default_theme': settings['ui']['default_theme'],
+ 'version': VERSION_STRING,
+ 'doi_resolvers': [r for r in settings['doi_resolvers']],
+ 'default_doi_resolver': settings['default_doi_resolver'],
+ })
+
+
+@app.errorhandler(404)
+def page_not_found(e):
+ return render('404.html'), 404
+
+
+def run():
+ logger.debug('starting webserver on %s:%s', settings['server']['port'], settings['server']['bind_address'])
+ app.run(
+ debug=searx_debug,
+ use_debugger=searx_debug,
+ port=settings['server']['port'],
+ host=settings['server']['bind_address'],
+ threaded=True
+ )
+
+
+class ReverseProxyPathFix(object):
+ '''Wrap the application in this middleware and configure the
+ front-end server to add these headers, to let you quietly bind
+ this to a URL other than / and to an HTTP scheme that is
+ different than what is used locally.
+
+ http://flask.pocoo.org/snippets/35/
+
+ In nginx:
+ location /myprefix {
+ proxy_pass http://127.0.0.1:8000;
+ proxy_set_header Host $host;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Scheme $scheme;
+ proxy_set_header X-Script-Name /myprefix;
+ }
+
+ :param app: the WSGI application
+ '''
+
+ def __init__(self, app):
+ self.app = app
+
+ def __call__(self, environ, start_response):
+ script_name = environ.get('HTTP_X_SCRIPT_NAME', '')
+ if script_name:
+ environ['SCRIPT_NAME'] = script_name
+ path_info = environ['PATH_INFO']
+ if path_info.startswith(script_name):
+ environ['PATH_INFO'] = path_info[len(script_name):]
+
+ scheme = environ.get('HTTP_X_SCHEME', '')
+ if scheme:
+ environ['wsgi.url_scheme'] = scheme
+ return self.app(environ, start_response)
+
+
+application = app
+# patch app to handle non root url-s behind proxy & wsgi
+app.wsgi_app = ReverseProxyPathFix(ProxyFix(application.wsgi_app))
+
+if __name__ == "__main__":
+ run()