on master help sign in
Merge branch 'master' of https://github.com/asciimoo/searx into code_results

Conflicts: searx/engines/searchcode_code.py searx/engines/searchcode_doc.py searx/static/oscar/js/searx.min.js searx/templates/oscar/result_templates/default.html searx/templates/oscar/result_templates/images.html searx/templates/oscar/result_templates/map.html searx/templates/oscar/result_templates/torrent.html searx/templates/oscar/result_templates/videos.html

commit400b54191c590663f0cfe91045f70a5d9223aa19 authorThomas Pointhuber <thomas.pointhuber@gmx.at> dateFri 9 Jan 2015, 21:25 (12 years ago) parentaf8dac9c8be128
252 files changed+1746−599
.travis.yml+1−1 AUTHORS.rst+3 CHANGELOG.rst+27 Makefile+9−9 README.rst+16−18 searx/__init__.py+11−1 searx/engines/500px.py+2−2 searx/engines/__init__.py+7−4 searx/engines/dailymotion.py+11−4 searx/engines/deezer.py+61 searx/engines/digg.py+70 searx/engines/duckduckgo_definitions.py+1−5 searx/engines/flickr-noapi.py+95 searx/engines/flickr.py+62−29 searx/engines/kickass.py+3−2 searx/engines/searchcode_doc.py+8−4 searx/engines/soundcloud.py+12−2 searx/engines/startpage.py+4−1 searx/engines/subtitleseeker.py+78 searx/engines/twitter.py+19−8 searx/engines/vimeo.py+14−12 searx/engines/wikidata.py+14 searx/engines/youtube.py+11−2 searx/https_rewrite.py+5−3 searx/search.py+16−8 searx/settings.yml+49−2 searx/static/oscar/js/searx.min.js−2 searx/static/courgette/css/style.css → searx/static/themes/courgette/css/style.css searx/static/courgette/img/bg-body-index.jpg → searx/static/themes/courgette/img/bg-body-index.jpg searx/static/courgette/img/favicon.png → searx/static/themes/courgette/img/favicon.png searx/static/courgette/img/github_ribbon.png → searx/static/themes/courgette/img/github_ribbon.png searx/static/courgette/img/icon_dailymotion.ico → searx/static/themes/courgette/img/icons/icon_dailymotion.ico searx/static/courgette/img/icon_deviantart.ico → searx/static/themes/courgette/img/icons/icon_deviantart.ico searx/static/courgette/img/icon_github.ico → searx/static/themes/courgette/img/icons/icon_github.ico searx/static/courgette/img/icon_kickass.ico → searx/static/themes/courgette/img/icons/icon_kickass.ico searx/static/courgette/img/icon_soundcloud.ico → searx/static/themes/courgette/img/icons/icon_soundcloud.ico searx/static/courgette/img/icon_stackoverflow.ico → searx/static/themes/courgette/img/icons/icon_stackoverflow.ico searx/static/courgette/img/icon_twitter.ico → searx/static/themes/courgette/img/icons/icon_twitter.ico searx/static/courgette/img/icon_vimeo.ico → searx/static/themes/courgette/img/icons/icon_vimeo.ico searx/static/courgette/img/icon_wikipedia.ico → searx/static/themes/courgette/img/icons/icon_wikipedia.ico searx/static/courgette/img/icon_youtube.ico → searx/static/themes/courgette/img/icons/icon_youtube.ico searx/static/courgette/img/preference-icon.png → searx/static/themes/courgette/img/preference-icon.png searx/static/courgette/img/search-icon.png → searx/static/themes/courgette/img/search-icon.png searx/static/courgette/img/searx-mobile.png → searx/static/themes/courgette/img/searx-mobile.png searx/static/courgette/img/searx.png → searx/static/themes/courgette/img/searx.png searx/static/courgette/img/searx_logo.svg → searx/static/themes/courgette/img/searx_logo.svg searx/static/courgette/js/mootools-autocompleter-1.1.2-min.js → searx/static/themes/courgette/js/mootools-autocompleter-1.1.2-min.js searx/static/courgette/js/mootools-core-1.4.5-min.js → searx/static/themes/courgette/js/mootools-core-1.4.5-min.js searx/static/courgette/js/searx.js → searx/static/themes/courgette/js/searx.js searx/static/default/css/style.css → searx/static/themes/default/css/style.css searx/static/default/img/favicon.png → searx/static/themes/default/img/favicon.png searx/static/default/img/github_ribbon.png → searx/static/themes/default/img/github_ribbon.png searx/static/default/img/icon_dailymotion.ico → searx/static/themes/default/img/icons/icon_dailymotion.ico searx/static/default/img/icon_deviantart.ico → searx/static/themes/default/img/icons/icon_deviantart.ico searx/static/default/img/icon_github.ico → searx/static/themes/default/img/icons/icon_github.ico searx/static/default/img/icon_kickass.ico → searx/static/themes/default/img/icons/icon_kickass.ico searx/static/default/img/icon_soundcloud.ico → searx/static/themes/default/img/icons/icon_soundcloud.ico searx/static/default/img/icon_stackoverflow.ico → searx/static/themes/default/img/icons/icon_stackoverflow.ico searx/static/default/img/icon_twitter.ico → searx/static/themes/default/img/icons/icon_twitter.ico searx/static/default/img/icon_vimeo.ico → searx/static/themes/default/img/icons/icon_vimeo.ico searx/static/default/img/icon_wikipedia.ico → searx/static/themes/default/img/icons/icon_wikipedia.ico searx/static/default/img/icon_youtube.ico → searx/static/themes/default/img/icons/icon_youtube.ico searx/static/default/img/preference-icon.png → searx/static/themes/default/img/preference-icon.png searx/static/default/img/search-icon.png → searx/static/themes/default/img/search-icon.png searx/static/default/img/searx.png → searx/static/themes/default/img/searx.png searx/static/default/img/searx_logo.svg → searx/static/themes/default/img/searx_logo.svg searx/static/default/js/mootools-autocompleter-1.1.2-min.js → searx/static/themes/default/js/mootools-autocompleter-1.1.2-min.js searx/static/default/js/mootools-core-1.4.5-min.js → searx/static/themes/default/js/mootools-core-1.4.5-min.js searx/static/default/js/searx.js → searx/static/themes/default/js/searx.js searx/static/default/less/autocompleter.less → searx/static/themes/default/less/autocompleter.less searx/static/default/less/code.less → searx/static/themes/default/less/code.less searx/static/default/less/definitions.less → searx/static/themes/default/less/definitions.less searx/static/default/less/mixins.less → searx/static/themes/default/less/mixins.less searx/static/default/less/search.less → searx/static/themes/default/less/search.less searx/static/default/less/style.less → searx/static/themes/default/less/style.less searx/static/oscar/.gitignore → searx/static/themes/oscar/.gitignore searx/static/oscar/README.rst → searx/static/themes/oscar/README.rst+2−2 searx/static/oscar/css/bootstrap.min.css → searx/static/themes/oscar/css/bootstrap.min.css searx/static/oscar/css/leaflet.min.css → searx/static/themes/oscar/css/leaflet.min.css searx/static/oscar/css/oscar.min.css → searx/static/themes/oscar/css/oscar.min.css searx/static/oscar/fonts/glyphicons-halflings-regular.eot → searx/static/themes/oscar/fonts/glyphicons-halflings-regular.eot searx/static/oscar/fonts/glyphicons-halflings-regular.svg → searx/static/themes/oscar/fonts/glyphicons-halflings-regular.svg searx/static/oscar/fonts/glyphicons-halflings-regular.ttf → searx/static/themes/oscar/fonts/glyphicons-halflings-regular.ttf searx/static/oscar/fonts/glyphicons-halflings-regular.woff → searx/static/themes/oscar/fonts/glyphicons-halflings-regular.woff searx/static/oscar/gruntfile.js → searx/static/themes/oscar/gruntfile.js searx/static/oscar/img/favicon.png → searx/static/themes/oscar/img/favicon.png searx/static/oscar/img/icons/README.md → searx/static/themes/oscar/img/icons/README.md searx/static/oscar/img/icons/amazon.png → searx/static/themes/oscar/img/icons/amazon.png searx/static/oscar/img/icons/dailymotion.png → searx/static/themes/oscar/img/icons/dailymotion.png searx/static/oscar/img/icons/deviantart.png → searx/static/themes/oscar/img/icons/deviantart.png searx/static/oscar/img/icons/facebook.png → searx/static/themes/oscar/img/icons/facebook.png searx/static/oscar/img/icons/flickr.png → searx/static/themes/oscar/img/icons/flickr.png searx/static/oscar/img/icons/github.png → searx/static/themes/oscar/img/icons/github.png searx/static/oscar/img/icons/kickass.png → searx/static/themes/oscar/img/icons/kickass.png searx/static/themes/oscar/img/icons/openstreetmap.png searx/static/themes/oscar/img/icons/photon.png searx/static/themes/oscar/img/icons/searchcode code.png searx/static/themes/oscar/img/icons/searchcode doc.png searx/static/oscar/img/icons/soundcloud.png → searx/static/themes/oscar/img/icons/soundcloud.png searx/static/oscar/img/icons/stackoverflow.png → searx/static/themes/oscar/img/icons/stackoverflow.png searx/static/oscar/img/icons/twitter.png → searx/static/themes/oscar/img/icons/twitter.png searx/static/oscar/img/icons/vimeo.png → searx/static/themes/oscar/img/icons/vimeo.png searx/static/oscar/img/icons/wikipedia.png → searx/static/themes/oscar/img/icons/wikipedia.png searx/static/oscar/img/icons/youtube.png → searx/static/themes/oscar/img/icons/youtube.png searx/static/oscar/img/loader.gif → searx/static/themes/oscar/img/loader.gif searx/static/oscar/img/map/layers-2x.png → searx/static/themes/oscar/img/map/layers-2x.png searx/static/oscar/img/map/layers.png → searx/static/themes/oscar/img/map/layers.png searx/static/themes/oscar/img/map/marker-icon-2x-green.png searx/static/themes/oscar/img/map/marker-icon-2x-orange.png searx/static/themes/oscar/img/map/marker-icon-2x-red.png searx/static/oscar/img/map/marker-icon-2x.png → searx/static/themes/oscar/img/map/marker-icon-2x.png searx/static/themes/oscar/img/map/marker-icon-green.png searx/static/themes/oscar/img/map/marker-icon-orange.png searx/static/themes/oscar/img/map/marker-icon-red.png searx/static/oscar/img/map/marker-icon.png → searx/static/themes/oscar/img/map/marker-icon.png searx/static/oscar/img/map/marker-shadow.png → searx/static/themes/oscar/img/map/marker-shadow.png searx/static/oscar/img/searx_logo.png → searx/static/themes/oscar/img/searx_logo.png searx/static/oscar/js/bootstrap.min.js → searx/static/themes/oscar/js/bootstrap.min.js searx/static/oscar/js/html5shiv.min.js → searx/static/themes/oscar/js/html5shiv.min.js searx/static/oscar/js/jquery-1.11.1.min.js → searx/static/themes/oscar/js/jquery-1.11.1.min.js searx/static/oscar/js/leaflet-0.7.3.min.js → searx/static/themes/oscar/js/leaflet-0.7.3.min.js searx/static/oscar/js/require-2.1.15.min.js → searx/static/themes/oscar/js/require-2.1.15.min.js searx/static/oscar/js/respond.min.js → searx/static/themes/oscar/js/respond.min.js searx/static/themes/oscar/js/searx.min.js+2 searx/static/oscar/js/searx_src/00_requirejs_config.js → searx/static/themes/oscar/js/searx_src/00_requirejs_config.js+1−1 searx/static/oscar/js/searx_src/autocompleter.js → searx/static/themes/oscar/js/searx_src/autocompleter.js searx/static/oscar/js/searx_src/element_modifiers.js → searx/static/themes/oscar/js/searx_src/element_modifiers.js+12 searx/static/oscar/js/searx_src/leaflet_map.js → searx/static/themes/oscar/js/searx_src/leaflet_map.js+1−1 searx/static/oscar/js/typeahead.bundle.min.js → searx/static/themes/oscar/js/typeahead.bundle.min.js searx/static/oscar/less/bootstrap/.csscomb.json → searx/static/themes/oscar/less/bootstrap/.csscomb.json searx/static/oscar/less/bootstrap/.csslintrc → searx/static/themes/oscar/less/bootstrap/.csslintrc searx/static/oscar/less/bootstrap/alerts.less → searx/static/themes/oscar/less/bootstrap/alerts.less searx/static/oscar/less/bootstrap/badges.less → searx/static/themes/oscar/less/bootstrap/badges.less searx/static/oscar/less/bootstrap/bootstrap.less → searx/static/themes/oscar/less/bootstrap/bootstrap.less searx/static/oscar/less/bootstrap/breadcrumbs.less → searx/static/themes/oscar/less/bootstrap/breadcrumbs.less searx/static/oscar/less/bootstrap/button-groups.less → searx/static/themes/oscar/less/bootstrap/button-groups.less searx/static/oscar/less/bootstrap/buttons.less → searx/static/themes/oscar/less/bootstrap/buttons.less searx/static/oscar/less/bootstrap/carousel.less → searx/static/themes/oscar/less/bootstrap/carousel.less searx/static/oscar/less/bootstrap/close.less → searx/static/themes/oscar/less/bootstrap/close.less searx/static/oscar/less/bootstrap/code.less → searx/static/themes/oscar/less/bootstrap/code.less searx/static/oscar/less/bootstrap/component-animations.less → searx/static/themes/oscar/less/bootstrap/component-animations.less searx/static/oscar/less/bootstrap/dropdowns.less → searx/static/themes/oscar/less/bootstrap/dropdowns.less searx/static/oscar/less/bootstrap/forms.less → searx/static/themes/oscar/less/bootstrap/forms.less searx/static/oscar/less/bootstrap/glyphicons.less → searx/static/themes/oscar/less/bootstrap/glyphicons.less searx/static/oscar/less/bootstrap/grid.less → searx/static/themes/oscar/less/bootstrap/grid.less searx/static/oscar/less/bootstrap/input-groups.less → searx/static/themes/oscar/less/bootstrap/input-groups.less searx/static/oscar/less/bootstrap/jumbotron.less → searx/static/themes/oscar/less/bootstrap/jumbotron.less searx/static/oscar/less/bootstrap/labels.less → searx/static/themes/oscar/less/bootstrap/labels.less searx/static/oscar/less/bootstrap/list-group.less → searx/static/themes/oscar/less/bootstrap/list-group.less searx/static/oscar/less/bootstrap/media.less → searx/static/themes/oscar/less/bootstrap/media.less searx/static/oscar/less/bootstrap/mixins.less → searx/static/themes/oscar/less/bootstrap/mixins.less searx/static/oscar/less/bootstrap/mixins/alerts.less → searx/static/themes/oscar/less/bootstrap/mixins/alerts.less searx/static/oscar/less/bootstrap/mixins/background-variant.less → searx/static/themes/oscar/less/bootstrap/mixins/background-variant.less searx/static/oscar/less/bootstrap/mixins/border-radius.less → searx/static/themes/oscar/less/bootstrap/mixins/border-radius.less searx/static/oscar/less/bootstrap/mixins/buttons.less → searx/static/themes/oscar/less/bootstrap/mixins/buttons.less searx/static/oscar/less/bootstrap/mixins/center-block.less → searx/static/themes/oscar/less/bootstrap/mixins/center-block.less searx/static/oscar/less/bootstrap/mixins/clearfix.less → searx/static/themes/oscar/less/bootstrap/mixins/clearfix.less searx/static/oscar/less/bootstrap/mixins/forms.less → searx/static/themes/oscar/less/bootstrap/mixins/forms.less searx/static/oscar/less/bootstrap/mixins/gradients.less → searx/static/themes/oscar/less/bootstrap/mixins/gradients.less searx/static/oscar/less/bootstrap/mixins/grid-framework.less → searx/static/themes/oscar/less/bootstrap/mixins/grid-framework.less searx/static/oscar/less/bootstrap/mixins/grid.less → searx/static/themes/oscar/less/bootstrap/mixins/grid.less searx/static/oscar/less/bootstrap/mixins/hide-text.less → searx/static/themes/oscar/less/bootstrap/mixins/hide-text.less searx/static/oscar/less/bootstrap/mixins/image.less → searx/static/themes/oscar/less/bootstrap/mixins/image.less searx/static/oscar/less/bootstrap/mixins/labels.less → searx/static/themes/oscar/less/bootstrap/mixins/labels.less searx/static/oscar/less/bootstrap/mixins/list-group.less → searx/static/themes/oscar/less/bootstrap/mixins/list-group.less searx/static/oscar/less/bootstrap/mixins/nav-divider.less → searx/static/themes/oscar/less/bootstrap/mixins/nav-divider.less searx/static/oscar/less/bootstrap/mixins/nav-vertical-align.less → searx/static/themes/oscar/less/bootstrap/mixins/nav-vertical-align.less searx/static/oscar/less/bootstrap/mixins/opacity.less → searx/static/themes/oscar/less/bootstrap/mixins/opacity.less searx/static/oscar/less/bootstrap/mixins/pagination.less → searx/static/themes/oscar/less/bootstrap/mixins/pagination.less searx/static/oscar/less/bootstrap/mixins/panels.less → searx/static/themes/oscar/less/bootstrap/mixins/panels.less searx/static/oscar/less/bootstrap/mixins/progress-bar.less → searx/static/themes/oscar/less/bootstrap/mixins/progress-bar.less searx/static/oscar/less/bootstrap/mixins/reset-filter.less → searx/static/themes/oscar/less/bootstrap/mixins/reset-filter.less searx/static/oscar/less/bootstrap/mixins/resize.less → searx/static/themes/oscar/less/bootstrap/mixins/resize.less searx/static/oscar/less/bootstrap/mixins/responsive-visibility.less → searx/static/themes/oscar/less/bootstrap/mixins/responsive-visibility.less searx/static/oscar/less/bootstrap/mixins/size.less → searx/static/themes/oscar/less/bootstrap/mixins/size.less searx/static/oscar/less/bootstrap/mixins/tab-focus.less → searx/static/themes/oscar/less/bootstrap/mixins/tab-focus.less searx/static/oscar/less/bootstrap/mixins/table-row.less → searx/static/themes/oscar/less/bootstrap/mixins/table-row.less searx/static/oscar/less/bootstrap/mixins/text-emphasis.less → searx/static/themes/oscar/less/bootstrap/mixins/text-emphasis.less searx/static/oscar/less/bootstrap/mixins/text-overflow.less → searx/static/themes/oscar/less/bootstrap/mixins/text-overflow.less searx/static/oscar/less/bootstrap/mixins/vendor-prefixes.less → searx/static/themes/oscar/less/bootstrap/mixins/vendor-prefixes.less searx/static/oscar/less/bootstrap/modals.less → searx/static/themes/oscar/less/bootstrap/modals.less searx/static/oscar/less/bootstrap/navbar.less → searx/static/themes/oscar/less/bootstrap/navbar.less searx/static/oscar/less/bootstrap/navs.less → searx/static/themes/oscar/less/bootstrap/navs.less searx/static/oscar/less/bootstrap/normalize.less → searx/static/themes/oscar/less/bootstrap/normalize.less searx/static/oscar/less/bootstrap/pager.less → searx/static/themes/oscar/less/bootstrap/pager.less searx/static/oscar/less/bootstrap/pagination.less → searx/static/themes/oscar/less/bootstrap/pagination.less searx/static/oscar/less/bootstrap/panels.less → searx/static/themes/oscar/less/bootstrap/panels.less searx/static/oscar/less/bootstrap/popovers.less → searx/static/themes/oscar/less/bootstrap/popovers.less searx/static/oscar/less/bootstrap/print.less → searx/static/themes/oscar/less/bootstrap/print.less searx/static/oscar/less/bootstrap/progress-bars.less → searx/static/themes/oscar/less/bootstrap/progress-bars.less searx/static/oscar/less/bootstrap/responsive-embed.less → searx/static/themes/oscar/less/bootstrap/responsive-embed.less searx/static/oscar/less/bootstrap/responsive-utilities.less → searx/static/themes/oscar/less/bootstrap/responsive-utilities.less searx/static/oscar/less/bootstrap/scaffolding.less → searx/static/themes/oscar/less/bootstrap/scaffolding.less searx/static/oscar/less/bootstrap/tables.less → searx/static/themes/oscar/less/bootstrap/tables.less searx/static/oscar/less/bootstrap/theme.less → searx/static/themes/oscar/less/bootstrap/theme.less searx/static/oscar/less/bootstrap/thumbnails.less → searx/static/themes/oscar/less/bootstrap/thumbnails.less searx/static/oscar/less/bootstrap/tooltip.less → searx/static/themes/oscar/less/bootstrap/tooltip.less searx/static/oscar/less/bootstrap/type.less → searx/static/themes/oscar/less/bootstrap/type.less searx/static/oscar/less/bootstrap/typeahead.less → searx/static/themes/oscar/less/bootstrap/typeahead.less searx/static/oscar/less/bootstrap/utilities.less → searx/static/themes/oscar/less/bootstrap/utilities.less searx/static/oscar/less/bootstrap/variables.less → searx/static/themes/oscar/less/bootstrap/variables.less searx/static/oscar/less/bootstrap/wells.less → searx/static/themes/oscar/less/bootstrap/wells.less searx/static/oscar/less/oscar/checkbox.less → searx/static/themes/oscar/less/oscar/checkbox.less searx/static/oscar/less/oscar/code.less → searx/static/themes/oscar/less/oscar/code.less searx/static/oscar/less/oscar/cursor.less → searx/static/themes/oscar/less/oscar/cursor.less searx/static/oscar/less/oscar/footer.less → searx/static/themes/oscar/less/oscar/footer.less searx/static/oscar/less/oscar/infobox.less → searx/static/themes/oscar/less/oscar/infobox.less searx/static/oscar/less/oscar/oscar.less → searx/static/themes/oscar/less/oscar/oscar.less searx/static/oscar/less/oscar/results.less → searx/static/themes/oscar/less/oscar/results.less searx/static/oscar/less/oscar/search.less → searx/static/themes/oscar/less/oscar/search.less searx/static/oscar/package.json → searx/static/themes/oscar/package.json searx/templates/courgette/result_templates/default.html+2−2 searx/templates/courgette/result_templates/map.html+2−2 searx/templates/courgette/result_templates/videos.html+2−2 searx/templates/courgette/results.html+1−1 searx/templates/default/result_templates/default.html+1−1 searx/templates/default/result_templates/map.html+2−2 searx/templates/default/result_templates/torrent.html+3 searx/templates/default/result_templates/videos.html+1−1 searx/templates/default/results.html+1−1 searx/templates/oscar/macros.html+3−3 searx/templates/oscar/result_templates/code.html+1−1 searx/templates/oscar/result_templates/default.html+14−2 searx/templates/oscar/result_templates/images.html+1−1 searx/templates/oscar/result_templates/map.html+1−1 searx/templates/oscar/result_templates/torrent.html+1−1 searx/templates/oscar/result_templates/videos.html+15−3 searx/templates/oscar/results.html+5−1 searx/tests/test_webapp.py+1−1 searx/translations/de/LC_MESSAGES/messages.mo searx/translations/de/LC_MESSAGES/messages.po+70−56 searx/translations/en/LC_MESSAGES/messages.mo searx/translations/en/LC_MESSAGES/messages.po+47−34 searx/translations/es/LC_MESSAGES/messages.mo searx/translations/es/LC_MESSAGES/messages.po+52−45 searx/translations/fr/LC_MESSAGES/messages.mo searx/translations/fr/LC_MESSAGES/messages.po+55−40 searx/translations/hu/LC_MESSAGES/messages.mo searx/translations/hu/LC_MESSAGES/messages.po+91−75 searx/translations/it/LC_MESSAGES/messages.mo searx/translations/it/LC_MESSAGES/messages.po+52−45 searx/translations/ja/LC_MESSAGES/messages.mo searx/translations/ja/LC_MESSAGES/messages.po+70−60 searx/translations/nl/LC_MESSAGES/messages.mo searx/translations/nl/LC_MESSAGES/messages.po+92−74 searx/translations/tr/LC_MESSAGES/messages.mo searx/translations/tr/LC_MESSAGES/messages.po+448 searx/utils.py+48−7 searx/version.py+1−1 searx/webapp.py+33−12 tox.ini+2 utils/update-translations.sh+1−1
.travis.yml+1−1
@@ -5,7 +5,7 @@ before_install:
55 - "export DISPLAY=:99.0"
66 - "sh -e /etc/init.d/xvfb start"
77 - npm install -g less grunt-cli
8− - ( cd searx/static/oscar;npm install )
8+ - ( cd searx/static/themes/oscar;npm install )
99install:
1010 - "make"
1111 - pip install coveralls
AUTHORS.rst+3
@@ -29,3 +29,6 @@ generally made searx better:
2929- @kernc
3030- @Cqoicebordel
3131- @Reventl0v
32+- Caner Başaran
33+- Benjamin Sonntag
34+- @opi
CHANGELOG.rstnew file+27
@@ -0,0 +1,27 @@
1+0.6.0 - 2014.12.25
2+==================
3+
4+- Changelog added
5+- New engines
6+
7+ - Flickr (api)
8+ - Subtitleseeker
9+ - photon
10+ - 500px
11+ - Searchcode
12+ - Searchcode doc
13+ - Kickass torrent
14+- Precise search request timeout handling
15+- Better favicon support
16+- Stricter config parsing
17+- Translation updates
18+- Multiple ui fixes
19+- Flickr (noapi) engine fix
20+- Pep8 fixes
21+
22+
23+News
24+~~~~
25+
26+Health status of searx instances and engines: http://stats.searx.oe5tpo.com
27+(source: https://github.com/pointhi/searx_stats)
Makefile+9−9
@@ -18,10 +18,6 @@ $(python):
1818 virtualenv -p python$(version) --no-site-packages .
1919 @touch $@
2020
21−tests: .installed.cfg
22− @bin/test
23− @grunt test --gruntfile searx/static/oscar/gruntfile.js
24−
2521robot: .installed.cfg
2622 @bin/robot
2723
@@ -29,6 +25,10 @@ flake8: .installed.cfg
2925 @bin/flake8 setup.py
3026 @bin/flake8 ./searx/
3127
28+tests: .installed.cfg flake8
29+ @bin/test
30+ @grunt test --gruntfile searx/static/themes/oscar/gruntfile.js
31+
3232coverage: .installed.cfg
3333 @bin/coverage run bin/test
3434 @bin/coverage report
@@ -45,18 +45,18 @@ minimal: bin/buildout minimal.cfg setup.py
4545 bin/buildout -c minimal.cfg $(options)
4646
4747styles:
48− @lessc -x searx/static/default/less/style.less > searx/static/default/css/style.css
49− @lessc -x searx/static/oscar/less/bootstrap/bootstrap.less > searx/static/oscar/css/bootstrap.min.css
50− @lessc -x searx/static/oscar/less/oscar/oscar.less > searx/static/oscar/css/oscar.min.css
48+ @lessc -x searx/static/themes/default/less/style.less > searx/static/themes/default/css/style.css
49+ @lessc -x searx/static/themes/oscar/less/bootstrap/bootstrap.less > searx/static/themes/oscar/css/bootstrap.min.css
50+ @lessc -x searx/static/themes/oscar/less/oscar/oscar.less > searx/static/themes/oscar/css/oscar.min.css
5151
5252grunt:
53− @grunt --gruntfile searx/static/oscar/gruntfile.js
53+ @grunt --gruntfile searx/static/themes/oscar/gruntfile.js
5454
5555locales:
5656 @pybabel compile -d searx/translations
5757
5858clean:
5959 @rm -rf .installed.cfg .mr.developer.cfg bin parts develop-eggs \
60− searx.egg-info lib include .coverage coverage searx/static/default/css/*.css
60+ searx.egg-info lib include .coverage coverage searx/static/themes/default/css/*.css
6161
6262.PHONY: all tests robot flake8 coverage production minimal styles locales clean
README.rst+16−18
@@ -14,16 +14,17 @@ See the `wiki <https://github.com/asciimoo/searx/wiki>`__ for more information.
1414Features
1515~~~~~~~~
1616
17−- Tracking free
18−- Supports multiple output formats
19− - json ``curl https://searx.me/?format=json&q=[query]``
20− - csv ``curl https://searx.me/?format=csv&q=[query]``
21− - opensearch/rss ``curl https://searx.me/?format=rss&q=[query]``
22−- Opensearch support (you can set as default search engine)
23−- Configurable search engines/categories
24−- Different search languages
25−- Duckduckgo like !bang functionality with engine shortcuts
26−- Parallel queries - relatively fast
17+- Tracking free
18+- Supports multiple output formats
19+
20+ - json ``curl https://searx.me/?format=json&q=[query]``
21+ - csv ``curl https://searx.me/?format=csv&q=[query]``
22+ - opensearch/rss ``curl https://searx.me/?format=rss&q=[query]``
23+- Opensearch support (you can set as default search engine)
24+- Configurable search engines/categories
25+- Different search languages
26+- Duckduckgo like !bang functionality with engine shortcuts
27+- Parallel queries - relatively fast
2728
2829Installation
2930~~~~~~~~~~~~
@@ -131,14 +132,11 @@ next time you run any other ``make`` command it will rebuild everithing.
131132TODO
132133~~~~
133134
134−- Moar engines
135−- Better ui
136−- Browser integration
137−- Documentation
138−- Fix ``flake8`` errors, ``make flake8`` will be merged into
139− ``make tests`` when it does not fail anymore
140−- Tests
141−- When we have more tests, we can integrate Travis-CI
135+- Moar engines
136+- Better ui
137+- Browser integration
138+- Documentation
139+- Tests
142140
143141Bugs
144142~~~~
searx/__init__.py+11−1
@@ -15,9 +15,9 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
1515(C) 2013- by Adam Tauber, <asciimoo@gmail.com>
1616'''
1717
18+import logging
1819from os import environ
1920from os.path import realpath, dirname, join, abspath
20−from searx.https_rewrite import load_https_rules
2121try:
2222 from yaml import load
2323except:
@@ -45,7 +45,17 @@ else:
4545with open(settings_path) as settings_yaml:
4646 settings = load(settings_yaml)
4747
48+if settings.get('server', {}).get('debug'):
49+ logging.basicConfig(level=logging.DEBUG)
50+else:
51+ logging.basicConfig(level=logging.WARNING)
52+
53+logger = logging.getLogger('searx')
54+
4855# load https rules only if https rewrite is enabled
4956if settings.get('server', {}).get('https_rewrite'):
5057 # loade https rules
58+ from searx.https_rewrite import load_https_rules
5159 load_https_rules(https_rewrite_path)
60+
61+logger.info('Initialisation done')
searx/engines/500px.py+2−2
@@ -35,9 +35,9 @@ def request(query, params):
3535# get response from search-request
3636def response(resp):
3737 results = []
38−
38+
3939 dom = html.fromstring(resp.text)
40−
40+
4141 # parse results
4242 for result in dom.xpath('//div[@class="photo"]'):
4343 link = result.xpath('.//a')[0]
searx/engines/__init__.py+7−4
@@ -22,6 +22,10 @@ from imp import load_source
2222from flask.ext.babel import gettext
2323from operator import itemgetter
2424from searx import settings
25+from searx import logger
26+
27+
28+logger = logger.getChild('engines')
2529
2630engine_dir = dirname(realpath(__file__))
2731
@@ -81,7 +85,7 @@ def load_engine(engine_data):
8185 if engine_attr.startswith('_'):
8286 continue
8387 if getattr(engine, engine_attr) is None:
84− print('[E] Engine config error: Missing attribute "{0}.{1}"'\
88+ logger.error('Missing engine config attribute: "{0}.{1}"'
8589 .format(engine.name, engine_attr))
8690 sys.exit(1)
8791
@@ -100,9 +104,8 @@ def load_engine(engine_data):
100104 categories['general'].append(engine)
101105
102106 if engine.shortcut:
103− # TODO check duplications
104107 if engine.shortcut in engine_shortcuts:
105− print('[E] Engine config error: ambigious shortcut: {0}'\
108+ logger.error('Engine config error: ambigious shortcut: {0}'
106109 .format(engine.shortcut))
107110 sys.exit(1)
108111 engine_shortcuts[engine.shortcut] = engine.name
@@ -199,7 +202,7 @@ def get_engines_stats():
199202
200203
201204if 'engines' not in settings or not settings['engines']:
202− print '[E] Error no engines found. Edit your settings.yml'
205+ logger.error('No engines found. Edit your settings.yml')
203206 exit(2)
204207
205208for engine_data in settings['engines']:
searx/engines/dailymotion.py+11−4
@@ -6,12 +6,14 @@
66# @using-api yes
77# @results JSON
88# @stable yes
9−# @parse url, title, thumbnail
9+# @parse url, title, thumbnail, publishedDate, embedded
1010#
1111# @todo set content-parameter with correct data
1212
1313from urllib import urlencode
1414from json import loads
15+from cgi import escape
16+from datetime import datetime
1517
1618# engine dependent config
1719categories = ['videos']
@@ -20,7 +22,9 @@ language_support = True
2022
2123# search-url
2224# see http://www.dailymotion.com/doc/api/obj-video.html
23−search_url = 'https://api.dailymotion.com/videos?fields=title,description,duration,url,thumbnail_360_url&sort=relevance&limit=5&page={pageno}&{query}' # noqa
25+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
26+embedded_url = '<iframe frameborder="0" width="540" height="304" ' +\
27+ 'data-src="//www.dailymotion.com/embed/video/{videoid}" allowfullscreen></iframe>'
2428
2529
2630# do search-request
@@ -51,14 +55,17 @@ def response(resp):
5155 for res in search_res['list']:
5256 title = res['title']
5357 url = res['url']
54− #content = res['description']
55− content = ''
58+ content = escape(res['description'])
5659 thumbnail = res['thumbnail_360_url']
60+ publishedDate = datetime.fromtimestamp(res['created_time'], None)
61+ embedded = embedded_url.format(videoid=res['id'])
5762
5863 results.append({'template': 'videos.html',
5964 'url': url,
6065 'title': title,
6166 'content': content,
67+ 'publishedDate': publishedDate,
68+ 'embedded': embedded,
6269 'thumbnail': thumbnail})
6370
6471 # return results
searx/engines/deezer.pynew file+61
@@ -0,0 +1,61 @@
1+## Deezer (Music)
2+#
3+# @website https://deezer.com
4+# @provide-api yes (http://developers.deezer.com/api/)
5+#
6+# @using-api yes
7+# @results JSON
8+# @stable yes
9+# @parse url, title, content, embedded
10+
11+from json import loads
12+from urllib import urlencode
13+
14+# engine dependent config
15+categories = ['music']
16+paging = True
17+
18+# search-url
19+url = 'http://api.deezer.com/'
20+search_url = url + 'search?{query}&index={offset}'
21+
22+embedded_url = '<iframe scrolling="no" frameborder="0" allowTransparency="true" ' +\
23+ 'data-src="http://www.deezer.com/plugins/player?type=tracks&id={audioid}" ' +\
24+ 'width="540" height="80"></iframe>'
25+
26+
27+# do search-request
28+def request(query, params):
29+ offset = (params['pageno'] - 1) * 25
30+
31+ params['url'] = search_url.format(query=urlencode({'q': query}),
32+ offset=offset)
33+
34+ return params
35+
36+
37+# get response from search-request
38+def response(resp):
39+ results = []
40+
41+ search_res = loads(resp.text)
42+
43+ # parse results
44+ for result in search_res.get('data', []):
45+ if result['type'] == 'track':
46+ title = result['title']
47+ url = result['link']
48+ content = result['artist']['name'] +\
49+ " &bull; " +\
50+ result['album']['title'] +\
51+ " &bull; " + result['title']
52+ embedded = embedded_url.format(audioid=result['id'])
53+
54+ # append result
55+ results.append({'url': url,
56+ 'title': title,
57+ 'embedded': embedded,
58+ 'content': content})
59+
60+ # return results
61+ return results
searx/engines/digg.pynew file+70
@@ -0,0 +1,70 @@
1+## Digg (News, Social media)
2+#
3+# @website https://digg.com/
4+# @provide-api no
5+#
6+# @using-api no
7+# @results HTML (using search portal)
8+# @stable no (HTML can change)
9+# @parse url, title, content, publishedDate, thumbnail
10+
11+from urllib import quote_plus
12+from json import loads
13+from lxml import html
14+from cgi import escape
15+from dateutil import parser
16+
17+# engine dependent config
18+categories = ['news', 'social media']
19+paging = True
20+
21+# search-url
22+base_url = 'https://digg.com/'
23+search_url = base_url+'api/search/{query}.json?position={position}&format=html'
24+
25+# specific xpath variables
26+results_xpath = '//article'
27+link_xpath = './/small[@class="time"]//a'
28+title_xpath = './/h2//a//text()'
29+content_xpath = './/p//text()'
30+pubdate_xpath = './/time'
31+
32+
33+# do search-request
34+def request(query, params):
35+ offset = (params['pageno'] - 1) * 10
36+ params['url'] = search_url.format(position=offset,
37+ query=quote_plus(query))
38+ return params
39+
40+
41+# get response from search-request
42+def response(resp):
43+ results = []
44+
45+ search_result = loads(resp.text)
46+
47+ if search_result['html'] == '':
48+ return results
49+
50+ dom = html.fromstring(search_result['html'])
51+
52+ # parse results
53+ for result in dom.xpath(results_xpath):
54+ url = result.attrib.get('data-contenturl')
55+ thumbnail = result.xpath('.//img')[0].attrib.get('src')
56+ title = ''.join(result.xpath(title_xpath))
57+ content = escape(''.join(result.xpath(content_xpath)))
58+ pubdate = result.xpath(pubdate_xpath)[0].attrib.get('datetime')
59+ publishedDate = parser.parse(pubdate)
60+
61+ # append result
62+ results.append({'url': url,
63+ 'title': title,
64+ 'content': content,
65+ 'template': 'videos.html',
66+ 'publishedDate': publishedDate,
67+ 'thumbnail': thumbnail})
68+
69+ # return results
70+ return results
searx/engines/duckduckgo_definitions.py+1−5
@@ -1,6 +1,7 @@
11import json
22from urllib import urlencode
33from lxml import html
4+from searx.utils import html_to_text
45from searx.engines.xpath import extract_text
56
67url = 'https://api.duckduckgo.com/'\
@@ -17,11 +18,6 @@ def result_to_text(url, text, htmlResult):
1718 return text
1819
1920
20−def html_to_text(htmlFragment):
21− dom = html.fromstring(htmlFragment)
22− return extract_text(dom)
23−
24−
2521def request(query, params):
2622 # TODO add kl={locale}
2723 params['url'] = url.format(query=urlencode({'q': query}))
searx/engines/flickr-noapi.pynew file+95
@@ -0,0 +1,95 @@
1+#!/usr/bin/env python
2+
3+# Flickr (Images)
4+#
5+# @website https://www.flickr.com
6+# @provide-api yes (https://secure.flickr.com/services/api/flickr.photos.search.html)
7+#
8+# @using-api no
9+# @results HTML
10+# @stable no
11+# @parse url, title, thumbnail, img_src
12+
13+from urllib import urlencode
14+from json import loads
15+import re
16+
17+categories = ['images']
18+
19+url = 'https://secure.flickr.com/'
20+search_url = url+'search/?{query}&page={page}'
21+photo_url = 'https://www.flickr.com/photos/{userid}/{photoid}'
22+regex = re.compile(r"\"search-photos-models\",\"photos\":(.*}),\"totalItems\":", re.DOTALL)
23+image_sizes = ('o', 'k', 'h', 'b', 'c', 'z', 'n', 'm', 't', 'q', 's')
24+
25+paging = True
26+
27+
28+def build_flickr_url(user_id, photo_id):
29+ return photo_url.format(userid=user_id, photoid=photo_id)
30+
31+
32+def request(query, params):
33+ params['url'] = search_url.format(query=urlencode({'text': query}),
34+ page=params['pageno'])
35+ return params
36+
37+
38+def response(resp):
39+ results = []
40+
41+ matches = regex.search(resp.text)
42+
43+ if matches is None:
44+ return results
45+
46+ match = matches.group(1)
47+ search_results = loads(match)
48+
49+ if '_data' not in search_results:
50+ return []
51+
52+ photos = search_results['_data']
53+
54+ for photo in photos:
55+
56+ # In paged configuration, the first pages' photos
57+ # are represented by a None object
58+ if photo is None:
59+ continue
60+
61+ img_src = None
62+ # From the biggest to the lowest format
63+ for image_size in image_sizes:
64+ if image_size in photo['sizes']:
65+ img_src = photo['sizes'][image_size]['displayUrl']
66+ break
67+
68+ if not img_src:
69+ continue
70+
71+ if 'id' not in photo['owner']:
72+ continue
73+
74+ url = build_flickr_url(photo['owner']['id'], photo['id'])
75+
76+ title = photo['title']
77+
78+ content = '<span class="photo-author">' +\
79+ photo['owner']['username'] +\
80+ '</span><br />'
81+
82+ if 'description' in photo:
83+ content = content +\
84+ '<span class="description">' +\
85+ photo['description'] +\
86+ '</span>'
87+
88+ # append result
89+ results.append({'url': url,
90+ 'title': title,
91+ 'img_src': img_src,
92+ 'content': content,
93+ 'template': 'images.html'})
94+
95+ return results
searx/engines/flickr.py+62−29
@@ -1,54 +1,87 @@
11#!/usr/bin/env python
22
3+## Flickr (Images)
4+#
5+# @website https://www.flickr.com
6+# @provide-api yes (https://secure.flickr.com/services/api/flickr.photos.search.html)
7+#
8+# @using-api yes
9+# @results JSON
10+# @stable yes
11+# @parse url, title, thumbnail, img_src
12+#More info on api-key : https://www.flickr.com/services/apps/create/
13+
314from urllib import urlencode
4−#from json import loads
5−from urlparse import urljoin
6−from lxml import html
7−from time import time
15+from json import loads
816
917categories = ['images']
1018
11−url = 'https://secure.flickr.com/'
12−search_url = url+'search/?{query}&page={page}'
13−results_xpath = '//div[@class="view display-item-tile"]/figure/div'
19+nb_per_page = 15
20+paging = True
21+api_key = None
22+
23+
24+url = 'https://api.flickr.com/services/rest/?method=flickr.photos.search' +\
25+ '&api_key={api_key}&{text}&sort=relevance' +\
26+ '&extras=description%2C+owner_name%2C+url_o%2C+url_z' +\
27+ '&per_page={nb_per_page}&format=json&nojsoncallback=1&page={page}'
28+photo_url = 'https://www.flickr.com/photos/{userid}/{photoid}'
1429
1530paging = True
1631
1732
33+def build_flickr_url(user_id, photo_id):
34+ return photo_url.format(userid=user_id, photoid=photo_id)
35+
36+
1837def request(query, params):
19− params['url'] = search_url.format(query=urlencode({'text': query}),
20− page=params['pageno'])
21− time_string = str(int(time())-3)
22− params['cookies']['BX'] = '3oqjr6d9nmpgl&b=3&s=dh'
23− params['cookies']['xb'] = '421409'
24− params['cookies']['localization'] = 'en-us'
25− params['cookies']['flrbp'] = time_string +\
26− '-3a8cdb85a427a33efda421fbda347b2eaf765a54'
27− params['cookies']['flrbs'] = time_string +\
28− '-ed142ae8765ee62c9ec92a9513665e0ee1ba6776'
29− params['cookies']['flrb'] = '9'
38+ params['url'] = url.format(text=urlencode({'text': query}),
39+ api_key=api_key,
40+ nb_per_page=nb_per_page,
41+ page=params['pageno'])
3042 return params
3143
3244
3345def response(resp):
3446 results = []
35− dom = html.fromstring(resp.text)
36− for result in dom.xpath(results_xpath):
37− img = result.xpath('.//img')
3847
39− if not img:
40− continue
48+ search_results = loads(resp.text)
4149
42− img = img[0]
43− img_src = 'https:'+img.attrib.get('src')
50+ # return empty array if there are no results
51+ if not 'photos' in search_results:
52+ return []
4453
45− if not img_src:
54+ if not 'photo' in search_results['photos']:
55+ return []
56+
57+ photos = search_results['photos']['photo']
58+
59+ # parse results
60+ for photo in photos:
61+ if 'url_o' in photo:
62+ img_src = photo['url_o']
63+ elif 'url_z' in photo:
64+ img_src = photo['url_z']
65+ else:
4666 continue
4767
48− href = urljoin(url, result.xpath('.//a')[0].attrib.get('href'))
49− title = img.attrib.get('alt', '')
50− results.append({'url': href,
68+ url = build_flickr_url(photo['owner'], photo['id'])
69+
70+ title = photo['title']
71+
72+ content = '<span class="photo-author">' +\
73+ photo['ownername'] +\
74+ '</span><br />' +\
75+ '<span class="description">' +\
76+ photo['description']['_content'] +\
77+ '</span>'
78+
79+ # append result
80+ results.append({'url': url,
5181 'title': title,
5282 'img_src': img_src,
83+ 'content': content,
5384 'template': 'images.html'})
85+
86+ # return results
5487 return results
searx/engines/kickass.py+3−2
@@ -24,7 +24,7 @@ search_url = url + 'search/{search_term}/{pageno}/'
2424
2525# specific xpath variables
2626magnet_xpath = './/a[@title="Torrent magnet link"]'
27−#content_xpath = './/font[@class="detDesc"]//text()'
27+content_xpath = './/span[@class="font11px lightgrey block"]'
2828
2929
3030# do search-request
@@ -56,7 +56,8 @@ def response(resp):
5656 link = result.xpath('.//a[@class="cellMainLink"]')[0]
5757 href = urljoin(url, link.attrib['href'])
5858 title = ' '.join(link.xpath('.//text()'))
59− content = escape(html.tostring(result.xpath('.//span[@class="font11px lightgrey block"]')[0], method="text"))
59+ content = escape(html.tostring(result.xpath(content_xpath)[0],
60+ method="text"))
6061 seed = result.xpath('.//td[contains(@class, "green")]/text()')[0]
6162 leech = result.xpath('.//td[contains(@class, "red")]/text()')[0]
6263
searx/engines/searchcode_doc.py+8−4
@@ -38,10 +38,14 @@ def response(resp):
3838 for result in search_results['results']:
3939 href = result['url']
4040 title = "[" + result['type'] + "] " +\
41− result['namespace'] + " " + result['name']
42− content = '<span class="highlight">[' + result['type'] + "] " +\
43− result['name'] + " " + result['synopsis'] +\
44− "</span><br />" + result['description']
41+ result['namespace'] +\
42+ " " + result['name']
43+ content = '<span class="highlight">[' +\
44+ result['type'] + "] " +\
45+ result['name'] + " " +\
46+ result['synopsis'] +\
47+ "</span><br />" +\
48+ result['description']
4549
4650 # append result
4751 results.append({'url': href,
searx/engines/soundcloud.py+12−2
@@ -6,10 +6,11 @@
66# @using-api yes
77# @results JSON
88# @stable yes
9−# @parse url, title, content
9+# @parse url, title, content, publishedDate, embedded
1010
1111from json import loads
12−from urllib import urlencode
12+from urllib import urlencode, quote_plus
13+from dateutil import parser
1314
1415# engine dependent config
1516categories = ['music']
@@ -27,6 +28,10 @@ search_url = url + 'search?{query}'\
2728 '&linked_partitioning=1'\
2829 '&client_id={client_id}' # noqa
2930
31+embedded_url = '<iframe width="100%" height="166" ' +\
32+ 'scrolling="no" frameborder="no" ' +\
33+ 'data-src="https://w.soundcloud.com/player/?url={uri}"></iframe>'
34+
3035
3136# do search-request
3237def request(query, params):
@@ -50,10 +55,15 @@ def response(resp):
5055 if result['kind'] in ('track', 'playlist'):
5156 title = result['title']
5257 content = result['description']
58+ publishedDate = parser.parse(result['last_modified'])
59+ uri = quote_plus(result['uri'])
60+ embedded = embedded_url.format(uri=uri)
5361
5462 # append result
5563 results.append({'url': result['permalink_url'],
5664 'title': title,
65+ 'publishedDate': publishedDate,
66+ 'embedded': embedded,
5767 'content': content})
5868
5969 # return results
searx/engines/startpage.py+4−1
@@ -66,7 +66,10 @@ def response(resp):
6666 continue
6767 link = links[0]
6868 url = link.attrib.get('href')
69− title = escape(link.text_content())
69+ try:
70+ title = escape(link.text_content())
71+ except UnicodeDecodeError:
72+ continue
7073
7174 # block google-ad url's
7275 if re.match("^http(s|)://www.google.[a-z]+/aclk.*$", url):
searx/engines/subtitleseeker.pynew file+78
@@ -0,0 +1,78 @@
1+## Subtitleseeker (Video)
2+#
3+# @website http://www.subtitleseeker.com
4+# @provide-api no
5+#
6+# @using-api no
7+# @results HTML
8+# @stable no (HTML can change)
9+# @parse url, title, content
10+
11+from cgi import escape
12+from urllib import quote_plus
13+from lxml import html
14+from searx.languages import language_codes
15+
16+# engine dependent config
17+categories = ['videos']
18+paging = True
19+language = ""
20+
21+# search-url
22+url = 'http://www.subtitleseeker.com/'
23+search_url = url+'search/TITLES/{query}&p={pageno}'
24+
25+# specific xpath variables
26+results_xpath = '//div[@class="boxRows"]'
27+
28+
29+# do search-request
30+def request(query, params):
31+ params['url'] = search_url.format(query=quote_plus(query),
32+ pageno=params['pageno'])
33+ return params
34+
35+
36+# get response from search-request
37+def response(resp):
38+ results = []
39+
40+ dom = html.fromstring(resp.text)
41+
42+ search_lang = ""
43+
44+ if resp.search_params['language'] != 'all':
45+ search_lang = [lc[1]
46+ for lc in language_codes
47+ if lc[0][:2] == resp.search_params['language']][0]
48+
49+ # parse results
50+ for result in dom.xpath(results_xpath):
51+ link = result.xpath(".//a")[0]
52+ href = link.attrib.get('href')
53+
54+ if language is not "":
55+ href = href + language + '/'
56+ elif search_lang:
57+ href = href + search_lang + '/'
58+
59+ title = escape(link.xpath(".//text()")[0])
60+
61+ content = result.xpath('.//div[contains(@class,"red")]//text()')[0]
62+ content = content + " - "
63+ text = result.xpath('.//div[contains(@class,"grey-web")]')[0]
64+ content = content + html.tostring(text, method='text')
65+
66+ if result.xpath(".//span") != []:
67+ content = content +\
68+ " - (" +\
69+ result.xpath(".//span//text()")[0].strip() +\
70+ ")"
71+
72+ # append result
73+ results.append({'url': href,
74+ 'title': title,
75+ 'content': escape(content)})
76+
77+ # return results
78+ return results
searx/engines/twitter.py+19−8
@@ -1,6 +1,6 @@
11## Twitter (Social media)
22#
3−# @website https://www.bing.com/news
3+# @website https://twitter.com/
44# @provide-api yes (https://dev.twitter.com/docs/using-search)
55#
66# @using-api no
@@ -14,6 +14,7 @@ from urlparse import urljoin
1414from urllib import urlencode
1515from lxml import html
1616from cgi import escape
17+from datetime import datetime
1718
1819# engine dependent config
1920categories = ['social media']
@@ -27,7 +28,8 @@ search_url = base_url+'search?'
2728results_xpath = '//li[@data-item-type="tweet"]'
2829link_xpath = './/small[@class="time"]//a'
2930title_xpath = './/span[@class="username js-action-profile-name"]//text()'
30−content_xpath = './/p[@class="js-tweet-text tweet-text"]//text()'
31+content_xpath = './/p[@class="js-tweet-text tweet-text"]'
32+timestamp_xpath = './/span[contains(@class,"_timestamp")]'
3133
3234
3335# do search-request
@@ -52,12 +54,21 @@ def response(resp):
5254 link = tweet.xpath(link_xpath)[0]
5355 url = urljoin(base_url, link.attrib.get('href'))
5456 title = ''.join(tweet.xpath(title_xpath))
55− content = escape(''.join(tweet.xpath(content_xpath)))
56−
57− # append result
58− results.append({'url': url,
59− 'title': title,
60− 'content': content})
57+ content = escape(html.tostring(tweet.xpath(content_xpath)[0], method='text', encoding='UTF-8').decode("utf-8"))
58+ pubdate = tweet.xpath(timestamp_xpath)
59+ if len(pubdate) > 0:
60+ timestamp = float(pubdate[0].attrib.get('data-time'))
61+ publishedDate = datetime.fromtimestamp(timestamp, None)
62+ # append result
63+ results.append({'url': url,
64+ 'title': title,
65+ 'content': content,
66+ 'publishedDate': publishedDate})
67+ else:
68+ # append result
69+ results.append({'url': url,
70+ 'title': title,
71+ 'content': content})
6172
6273 # return results
6374 return results
searx/engines/vimeo.py+14−12
@@ -1,4 +1,4 @@
1−## Vimeo (Videos)
1+# Vimeo (Videos)
22#
33# @website https://vimeo.com/
44# @provide-api yes (http://developer.vimeo.com/api),
@@ -7,14 +7,14 @@
77# @using-api no (TODO, rewrite to api)
88# @results HTML (using search portal)
99# @stable no (HTML can change)
10−# @parse url, title, publishedDate, thumbnail
10+# @parse url, title, publishedDate, thumbnail, embedded
1111#
1212# @todo rewrite to api
1313# @todo set content-parameter with correct data
1414
1515from urllib import urlencode
16−from HTMLParser import HTMLParser
1716from lxml import html
17+from HTMLParser import HTMLParser
1818from searx.engines.xpath import extract_text
1919from dateutil import parser
2020
@@ -23,26 +23,26 @@ categories = ['videos']
2323paging = True
2424
2525# search-url
26−base_url = 'https://vimeo.com'
26+base_url = 'http://vimeo.com'
2727search_url = base_url + '/search/page:{pageno}?{query}'
2828
2929# specific xpath variables
30+results_xpath = '//div[@id="browse_content"]/ol/li'
3031url_xpath = './a/@href'
32+title_xpath = './a/div[@class="data"]/p[@class="title"]'
3133content_xpath = './a/img/@src'
32−title_xpath = './a/div[@class="data"]/p[@class="title"]/text()'
33−results_xpath = '//div[@id="browse_content"]/ol/li'
3434publishedDate_xpath = './/p[@class="meta"]//attribute::datetime'
3535
36+embedded_url = '<iframe data-src="//player.vimeo.com/video{videoid}" ' +\
37+ 'width="540" height="304" frameborder="0" ' +\
38+ 'webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>'
39+
3640
3741# do search-request
3842def request(query, params):
3943 params['url'] = search_url.format(pageno=params['pageno'],
4044 query=urlencode({'q': query}))
4145
42− # TODO required?
43− params['cookies']['__utma'] =\
44− '00000000.000#0000000.0000000000.0000000000.0000000000.0'
45−
4646 return params
4747
4848
@@ -51,16 +51,17 @@ def response(resp):
5151 results = []
5252
5353 dom = html.fromstring(resp.text)
54−
5554 p = HTMLParser()
5655
5756 # parse results
5857 for result in dom.xpath(results_xpath):
59− url = base_url + result.xpath(url_xpath)[0]
58+ videoid = result.xpath(url_xpath)[0]
59+ url = base_url + videoid
6060 title = p.unescape(extract_text(result.xpath(title_xpath)))
6161 thumbnail = extract_text(result.xpath(content_xpath)[0])
6262 publishedDate = parser.parse(extract_text(
6363 result.xpath(publishedDate_xpath)[0]))
64+ embedded = embedded_url.format(videoid=videoid)
6465
6566 # append result
6667 results.append({'url': url,
@@ -68,6 +69,7 @@ def response(resp):
6869 'content': '',
6970 'template': 'videos.html',
7071 'publishedDate': publishedDate,
72+ 'embedded': embedded,
7173 'thumbnail': thumbnail})
7274
7375 # return results
searx/engines/wikidata.py+14
@@ -1,6 +1,8 @@
11import json
22from requests import get
33from urllib import urlencode
4+import locale
5+import dateutil.parser
46
57result_count = 1
68wikidata_host = 'https://www.wikidata.org'
@@ -35,6 +37,16 @@ def response(resp):
3537 language = resp.search_params['language'].split('_')[0]
3638 if language == 'all':
3739 language = 'en'
40+
41+ try:
42+ locale.setlocale(locale.LC_ALL, str(resp.search_params['language']))
43+ except:
44+ try:
45+ locale.setlocale(locale.LC_ALL, 'en_US')
46+ except:
47+ pass
48+ pass
49+
3850 url = url_detail.format(query=urlencode({'ids': '|'.join(wikidata_ids),
3951 'languages': language + '|en'}))
4052
@@ -164,10 +176,12 @@ def getDetail(jsonresponse, wikidata_id, language):
164176
165177 date_of_birth = get_time(claims, 'P569', None)
166178 if date_of_birth is not None:
179+ date_of_birth = dateutil.parser.parse(date_of_birth[8:]).strftime(locale.nl_langinfo(locale.D_FMT))
167180 attributes.append({'label': 'Date of birth', 'value': date_of_birth})
168181
169182 date_of_death = get_time(claims, 'P570', None)
170183 if date_of_death is not None:
184+ date_of_death = dateutil.parser.parse(date_of_death[8:]).strftime(locale.nl_langinfo(locale.D_FMT))
171185 attributes.append({'label': 'Date of death', 'value': date_of_death})
172186
173187 if len(attributes) == 0 and len(urls) == 2 and len(description) == 0:
searx/engines/youtube.py+11−2
@@ -6,7 +6,7 @@
66# @using-api yes
77# @results JSON
88# @stable yes
9−# @parse url, title, content, publishedDate, thumbnail
9+# @parse url, title, content, publishedDate, thumbnail, embedded
1010
1111from json import loads
1212from urllib import urlencode
@@ -19,7 +19,11 @@ language_support = True
1919
2020# search-url
2121base_url = 'https://gdata.youtube.com/feeds/api/videos'
22−search_url = base_url + '?alt=json&{query}&start-index={index}&max-results=5' # noqa
22+search_url = base_url + '?alt=json&{query}&start-index={index}&max-results=5'
23+
24+embedded_url = '<iframe width="540" height="304" ' +\
25+ 'data-src="//www.youtube-nocookie.com/embed/{videoid}" ' +\
26+ 'frameborder="0" allowfullscreen></iframe>'
2327
2428
2529# do search-request
@@ -60,6 +64,8 @@ def response(resp):
6064 if url.endswith('&'):
6165 url = url[:-1]
6266
67+ videoid = url[32:]
68+
6369 title = result['title']['$t']
6470 content = ''
6571 thumbnail = ''
@@ -72,12 +78,15 @@ def response(resp):
7278
7379 content = result['content']['$t']
7480
81+ embedded = embedded_url.format(videoid=videoid)
82+
7583 # append result
7684 results.append({'url': url,
7785 'title': title,
7886 'content': content,
7987 'template': 'videos.html',
8088 'publishedDate': publishedDate,
89+ 'embedded': embedded,
8190 'thumbnail': thumbnail})
8291
8392 # return results
searx/https_rewrite.py+5−3
@@ -20,8 +20,11 @@ from urlparse import urlparse
2020from lxml import etree
2121from os import listdir
2222from os.path import isfile, isdir, join
23+from searx import logger
2324
2425
26+logger = logger.getChild("https_rewrite")
27+
2528# https://gitweb.torproject.org/\
2629# pde/https-everywhere.git/tree/4.0:/src/chrome/content/rules
2730
@@ -131,7 +134,7 @@ def load_single_https_ruleset(filepath):
131134def load_https_rules(rules_path):
132135 # check if directory exists
133136 if not isdir(rules_path):
134− print("[E] directory not found: '" + rules_path + "'")
137+ logger.error("directory not found: '" + rules_path + "'")
135138 return
136139
137140 # search all xml files which are stored in the https rule directory
@@ -151,8 +154,7 @@ def load_https_rules(rules_path):
151154 # append ruleset
152155 https_rules.append(ruleset)
153156
154− print(' * {n} https-rules loaded'.format(n=len(https_rules)))
155−
157+ logger.info('{n} rules loaded'.format(n=len(https_rules)))
156158
157159
158160def https_url_rewrite(result):
searx/search.py+16−8
@@ -29,21 +29,23 @@ from searx.engines import (
2929from searx.languages import language_codes
3030from searx.utils import gen_useragent
3131from searx.query import Query
32+from searx import logger
3233
3334
35+logger = logger.getChild('search')
36+
3437number_of_searches = 0
3538
3639
3740def search_request_wrapper(fn, url, engine_name, **kwargs):
3841 try:
3942 return fn(url, **kwargs)
40− except Exception, e:
43+ except:
4144 # increase errors stats
4245 engines[engine_name].stats['errors'] += 1
4346
4447 # print engine name and specific error message
45− print('[E] Error with engine "{0}":\n\t{1}'.format(
46− engine_name, str(e)))
48+ logger.exception('engine crash: {0}'.format(engine_name))
4749 return
4850
4951
@@ -66,14 +68,19 @@ def threaded_requests(requests):
6668 remaining_time = max(0.0, timeout_limit - (time() - search_start))
6769 th.join(remaining_time)
6870 if th.isAlive():
69− print('engine timeout: {0}'.format(th._engine_name))
70−
71+ logger.warning('engine timeout: {0}'.format(th._engine_name))
7172
7273
7374# get default reqest parameter
7475def default_request_params():
7576 return {
76− 'method': 'GET', 'headers': {}, 'data': {}, 'url': '', 'cookies': {}, 'verify': True}
77+ 'method': 'GET',
78+ 'headers': {},
79+ 'data': {},
80+ 'url': '',
81+ 'cookies': {},
82+ 'verify': True
83+ }
7784
7885
7986# create a callback wrapper for the search engine results
@@ -487,14 +494,15 @@ class Search(object):
487494 continue
488495
489496 # append request to list
490− requests.append((req, request_params['url'], request_args, selected_engine['name']))
497+ requests.append((req, request_params['url'],
498+ request_args,
499+ selected_engine['name']))
491500
492501 if not requests:
493502 return results, suggestions, answers, infoboxes
494503 # send all search-request
495504 threaded_requests(requests)
496505
497−
498506 while not results_queue.empty():
499507 engine_name, engine_results = results_queue.get_nowait()
500508
searx/settings.yml+49−2
@@ -35,6 +35,10 @@ engines:
3535 engine : currency_convert
3636 categories : general
3737 shortcut : cc
38+
39+ - name : deezer
40+ engine : deezer
41+ shortcut : dz
3842
3943 - name : deviantart
4044 engine : deviantart
@@ -44,6 +48,10 @@ engines:
4448 - name : ddg definitions
4549 engine : duckduckgo_definitions
4650 shortcut : ddd
51+
52+ - name : digg
53+ engine : digg
54+ shortcut : dg
4755
4856 - name : wikidata
4957 engine : wikidata
@@ -70,10 +78,14 @@ engines:
7078 shortcut : px
7179
7280 - name : flickr
73− engine : flickr
7481 categories : images
7582 shortcut : fl
76− timeout: 3.0
83+# You can use the engine using the official stable API, but you need an API key
84+# See : https://www.flickr.com/services/apps/create/
85+# engine : flickr
86+# api_key: 'apikey' # required!
87+# Or you can use the html non-stable engine, activated by default
88+ engine : flickr-noapi
7789
7890 - name : general-file
7991 engine : generalfile
@@ -95,6 +107,33 @@ engines:
95107 engine : google_news
96108 shortcut : gon
97109
110+ - name : google play apps
111+ engine : xpath
112+ search_url : https://play.google.com/store/search?q={query}&c=apps
113+ url_xpath : //a[@class="title"]/@href
114+ title_xpath : //a[@class="title"]
115+ content_xpath : //a[@class="subtitle"]
116+ categories : files
117+ shortcut : gpa
118+
119+ - name : google play movies
120+ engine : xpath
121+ search_url : https://play.google.com/store/search?q={query}&c=movies
122+ url_xpath : //a[@class="title"]/@href
123+ title_xpath : //a[@class="title"]
124+ content_xpath : //a[@class="subtitle"]
125+ categories : videos
126+ shortcut : gpm
127+
128+ - name : google play music
129+ engine : xpath
130+ search_url : https://play.google.com/store/search?q={query}&c=music
131+ url_xpath : //a[@class="title"]/@href
132+ title_xpath : //a[@class="title"]
133+ content_xpath : //a[@class="subtitle"]
134+ categories : music
135+ shortcut : gps
136+
98137 - name : openstreetmap
99138 engine : openstreetmap
100139 shortcut : osm
@@ -127,6 +166,13 @@ engines:
127166 engine : searchcode_code
128167 shortcut : scc
129168
169+ - name : subtitleseeker
170+ engine : subtitleseeker
171+ shortcut : ss
172+# The language is an option. You can put any language written in english
173+# Examples : English, French, German, Hungarian, Chinese...
174+# language : English
175+
130176 - name : startpage
131177 engine : startpage
132178 shortcut : sp
@@ -194,3 +240,4 @@ locales:
194240 it : Italiano
195241 nl : Nederlands
196242 ja : 日本語 (Japanese)
243+ tr : Türkçe
searx/static/oscar/js/searx.min.jsdeleted−2
@@ -1,2 +0,0 @@
1−/*! oscar/searx.min.js | 22-12-2014 | https://github.com/asciimoo/searx */
2−requirejs.config({baseUrl:"./static/oscar/js",paths:{app:"../app"}}),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(){searx.autocompleter&&$("#q").typeahead(null,{name:"search-results",displayKey:function(a){return a},source:searx.searchResults.ttAdapter()})}),$(document).ready(function(){$("#q.autofocus").focus(),$(".select-all-on-click").click(function(){$(this).select()}),$(".btn-collapse").click(function(){var a=$(this).data("btn-text-collapsed"),b=$(this).data("btn-text-not-collapsed");""!==a&&""!==b&&(new_html=$(this).hasClass("collapsed")?$(this).html().replace(a,b):$(this).html().replace(b,a),$(this).html(new_html))}),$(".btn-toggle .btn").click(function(){var a="btn-"+$(this).data("btn-class"),b=$(this).data("btn-label-default"),c=$(this).data("btn-label-toggled");""!==c&&(new_html=$(this).hasClass("btn-default")?$(this).html().replace(b,c):$(this).html().replace(c,b),$(this).html(new_html)),$(this).toggleClass(a),$(this).toggleClass("btn-default")}),$(".btn-sm").dblclick(function(){var a="btn-"+$(this).data("btn-class");$(this).hasClass("btn-default")?($(".btn-sm > input").attr("checked","checked"),$(".btn-sm > input").prop("checked",!0),$(".btn-sm").addClass(a),$(".btn-sm").addClass("active"),$(".btn-sm").removeClass("btn-default")):($(".btn-sm > input").attr("checked",""),$(".btn-sm > input").removeAttr("checked"),$(".btn-sm > input").checked=!1,$(".btn-sm").removeClass(a),$(".btn-sm").removeClass("active"),$(".btn-sm").addClass("btn-default"))})}),$(document).ready(function(){$(".searx_overpass_request").on("click",function(a){var b="https://overpass-api.de/api/interpreter?data=",c=b+"[out:json][timeout:25];(",d=");out meta;",e=$(this).data("osm-id"),f=$(this).data("osm-type"),g=$(this).data("result-table"),h="#"+$(this).data("result-table-loadicon"),i=["addr:city","addr:country","addr:housenumber","addr:postcode","addr:street"];if(e&&f&&g){g="#"+g;var j=null;switch(f){case"node":j=c+"node("+e+");"+d;break;case"way":j=c+"way("+e+");"+d;break;case"relation":j=c+"relation("+e+");"+d}if(j){$.ajax(j).done(function(a){if(a&&a.elements&&a.elements[0]){var b=a.elements[0],c=$(g).html();for(var d in b.tags)if(null===b.tags.name||-1==i.indexOf(d)){switch(c+="<tr><td>"+d+"</td><td>",d){case"phone":case"fax":c+='<a href="tel:'+b.tags[d].replace(/ /g,"")+'">'+b.tags[d]+"</a>";break;case"email":c+='<a href="mailto:'+b.tags[d]+'">'+b.tags[d]+"</a>";break;case"website":case"url":c+='<a href="'+b.tags[d]+'">'+b.tags[d]+"</a>";break;case"wikidata":c+='<a href="https://www.wikidata.org/wiki/'+b.tags[d]+'">'+b.tags[d]+"</a>";break;case"wikipedia":if(-1!=b.tags[d].indexOf(":")){c+='<a href="https://'+b.tags[d].substring(0,b.tags[d].indexOf(":"))+".wikipedia.org/wiki/"+b.tags[d].substring(b.tags[d].indexOf(":")+1)+'">'+b.tags[d]+"</a>";break}default:c+=b.tags[d]}c+="</td></tr>"}$(g).html(c),$(g).removeClass("hidden"),$(h).addClass("hidden")}}).fail(function(){$(h).html($(h).html()+'<p class="text-muted">could not load data!</p>')})}}$(this).off(a)}),$(".searx_init_map").on("click",function(a){var b=$(this).data("leaflet-target"),c=$(this).data("map-lon"),d=$(this).data("map-lat"),e=$(this).data("map-zoom"),f=$(this).data("map-boundingbox"),g=$(this).data("map-geojson");require(["leaflet-0.7.3.min"],function(){f&&(southWest=L.latLng(f[0],f[2]),northEast=L.latLng(f[1],f[3]),map_bounds=L.latLngBounds(southWest,northEast)),L.Icon.Default.imagePath="./static/oscar/img/map";{var a=L.map(b),h="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",i='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors',j=new L.TileLayer(h,{minZoom:1,maxZoom:19,attribution:i}),k="http://otile{s}.mqcdn.com/tiles/1.0.0/map/{z}/{x}/{y}.jpg",l='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors | Tiles Courtesy of <a href="http://www.mapquest.com/" target="_blank">MapQuest</a> <img src="http://developer.mapquest.com/content/osm/mq_logo.png">',m=new L.TileLayer(k,{minZoom:1,maxZoom:18,subdomains:"1234",attribution:l}),n="http://otile{s}.mqcdn.com/tiles/1.0.0/sat/{z}/{x}/{y}.jpg",o='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors | Tiles Courtesy of <a href="http://www.mapquest.com/" target="_blank">MapQuest</a> <img src="https://developer.mapquest.com/content/osm/mq_logo.png"> | Portions Courtesy NASA/JPL-Caltech and U.S. Depart. of Agriculture, Farm Service Agency';new L.TileLayer(n,{minZoom:1,maxZoom:11,subdomains:"1234",attribution:o})}map_bounds?setTimeout(function(){a.fitBounds(map_bounds,{maxZoom:17})},0):c&&d&&(e?a.setView(new L.LatLng(d,c),e):a.setView(new L.LatLng(d,c),8)),a.addLayer(m);var p={"OSM Mapnik":j,MapQuest:m};L.control.layers(p).addTo(a),g&&L.geoJson(g).addTo(a)}),$(this).off(a)})});
searx/static/courgette/css/style.css → searx/static/themes/courgette/css/style.cssrenamed

The content is the same.

searx/static/courgette/img/bg-body-index.jpg → searx/static/themes/courgette/img/bg-body-index.jpgrenamed

Binary file not shown.

searx/static/courgette/img/favicon.png → searx/static/themes/courgette/img/favicon.pngrenamed

Binary file not shown.

searx/static/courgette/img/github_ribbon.png → searx/static/themes/courgette/img/github_ribbon.pngrenamed

Binary file not shown.

searx/static/courgette/img/icon_dailymotion.ico → searx/static/themes/courgette/img/icons/icon_dailymotion.icorenamed

Binary file not shown.

searx/static/courgette/img/icon_deviantart.ico → searx/static/themes/courgette/img/icons/icon_deviantart.icorenamed

Binary file not shown.

searx/static/courgette/img/icon_github.ico → searx/static/themes/courgette/img/icons/icon_github.icorenamed

Binary file not shown.

searx/static/courgette/img/icon_kickass.ico → searx/static/themes/courgette/img/icons/icon_kickass.icorenamed

Binary file not shown.

searx/static/courgette/img/icon_soundcloud.ico → searx/static/themes/courgette/img/icons/icon_soundcloud.icorenamed

Binary file not shown.

searx/static/courgette/img/icon_stackoverflow.ico → searx/static/themes/courgette/img/icons/icon_stackoverflow.icorenamed

Binary file not shown.

searx/static/courgette/img/icon_twitter.ico → searx/static/themes/courgette/img/icons/icon_twitter.icorenamed

Binary file not shown.

searx/static/courgette/img/icon_vimeo.ico → searx/static/themes/courgette/img/icons/icon_vimeo.icorenamed

Binary file not shown.

searx/static/courgette/img/icon_wikipedia.ico → searx/static/themes/courgette/img/icons/icon_wikipedia.icorenamed

Binary file not shown.

searx/static/courgette/img/icon_youtube.ico → searx/static/themes/courgette/img/icons/icon_youtube.icorenamed

Binary file not shown.

searx/static/courgette/img/preference-icon.png → searx/static/themes/courgette/img/preference-icon.pngrenamed

Binary file not shown.

searx/static/courgette/img/search-icon.png → searx/static/themes/courgette/img/search-icon.pngrenamed

Binary file not shown.

searx/static/courgette/img/searx-mobile.png → searx/static/themes/courgette/img/searx-mobile.pngrenamed

Binary file not shown.

searx/static/courgette/img/searx.png → searx/static/themes/courgette/img/searx.pngrenamed

Binary file not shown.

searx/static/courgette/img/searx_logo.svg → searx/static/themes/courgette/img/searx_logo.svgrenamed

The content is the same.

searx/static/courgette/js/mootools-autocompleter-1.1.2-min.js → searx/static/themes/courgette/js/mootools-autocompleter-1.1.2-min.jsrenamed

The content is the same.

searx/static/courgette/js/mootools-core-1.4.5-min.js → searx/static/themes/courgette/js/mootools-core-1.4.5-min.jsrenamed

The content is the same.

searx/static/courgette/js/searx.js → searx/static/themes/courgette/js/searx.jsrenamed

The content is the same.

searx/static/default/css/style.css → searx/static/themes/default/css/style.cssrenamed

The content is the same.

searx/static/default/img/favicon.png → searx/static/themes/default/img/favicon.pngrenamed

Binary file not shown.

searx/static/default/img/github_ribbon.png → searx/static/themes/default/img/github_ribbon.pngrenamed

Binary file not shown.

searx/static/default/img/icon_dailymotion.ico → searx/static/themes/default/img/icons/icon_dailymotion.icorenamed

Binary file not shown.

searx/static/default/img/icon_deviantart.ico → searx/static/themes/default/img/icons/icon_deviantart.icorenamed

Binary file not shown.

searx/static/default/img/icon_github.ico → searx/static/themes/default/img/icons/icon_github.icorenamed

Binary file not shown.

searx/static/default/img/icon_kickass.ico → searx/static/themes/default/img/icons/icon_kickass.icorenamed

Binary file not shown.

searx/static/default/img/icon_soundcloud.ico → searx/static/themes/default/img/icons/icon_soundcloud.icorenamed

Binary file not shown.

searx/static/default/img/icon_stackoverflow.ico → searx/static/themes/default/img/icons/icon_stackoverflow.icorenamed

Binary file not shown.

searx/static/default/img/icon_twitter.ico → searx/static/themes/default/img/icons/icon_twitter.icorenamed

Binary file not shown.

searx/static/default/img/icon_vimeo.ico → searx/static/themes/default/img/icons/icon_vimeo.icorenamed

Binary file not shown.

searx/static/default/img/icon_wikipedia.ico → searx/static/themes/default/img/icons/icon_wikipedia.icorenamed

Binary file not shown.

searx/static/default/img/icon_youtube.ico → searx/static/themes/default/img/icons/icon_youtube.icorenamed

Binary file not shown.

searx/static/default/img/preference-icon.png → searx/static/themes/default/img/preference-icon.pngrenamed

Binary file not shown.

searx/static/default/img/search-icon.png → searx/static/themes/default/img/search-icon.pngrenamed

Binary file not shown.

searx/static/default/img/searx.png → searx/static/themes/default/img/searx.pngrenamed

Binary file not shown.

searx/static/default/img/searx_logo.svg → searx/static/themes/default/img/searx_logo.svgrenamed

The content is the same.

searx/static/default/js/mootools-autocompleter-1.1.2-min.js → searx/static/themes/default/js/mootools-autocompleter-1.1.2-min.jsrenamed

The content is the same.

searx/static/default/js/mootools-core-1.4.5-min.js → searx/static/themes/default/js/mootools-core-1.4.5-min.jsrenamed

The content is the same.

searx/static/default/js/searx.js → searx/static/themes/default/js/searx.jsrenamed

The content is the same.

searx/static/default/less/autocompleter.less → searx/static/themes/default/less/autocompleter.lessrenamed

The content is the same.

searx/static/default/less/code.less → searx/static/themes/default/less/code.lessrenamed

The content is the same.

searx/static/default/less/definitions.less → searx/static/themes/default/less/definitions.lessrenamed

The content is the same.

searx/static/default/less/mixins.less → searx/static/themes/default/less/mixins.lessrenamed

The content is the same.

searx/static/default/less/search.less → searx/static/themes/default/less/search.lessrenamed

The content is the same.

searx/static/default/less/style.less → searx/static/themes/default/less/style.lessrenamed

The content is the same.

searx/static/oscar/.gitignore → searx/static/themes/oscar/.gitignorerenamed

The content is the same.

searx/static/oscar/README.rst → searx/static/themes/oscar/README.rstrenamed+2−2
@@ -1,14 +1,14 @@
11install dependencies
22~~~~~~~~~~~~~~~~~~~~
33
4−run this command in the directory ``searx/static/oscar``
4+run this command in the directory ``searx/static/themes/oscar``
55
66``npm install``
77
88compile sources
99~~~~~~~~~~~~~~~
1010
11−run this command in the directory ``searx/static/oscar``
11+run this command in the directory ``searx/static/themes/oscar``
1212
1313``grunt``
1414
searx/static/oscar/css/bootstrap.min.css → searx/static/themes/oscar/css/bootstrap.min.cssrenamed

The content is the same.

searx/static/oscar/css/leaflet.min.css → searx/static/themes/oscar/css/leaflet.min.cssrenamed

The content is the same.

searx/static/oscar/css/oscar.min.css → searx/static/themes/oscar/css/oscar.min.cssrenamed

The content is the same.

searx/static/oscar/fonts/glyphicons-halflings-regular.eot → searx/static/themes/oscar/fonts/glyphicons-halflings-regular.eotrenamed

Binary file not shown.

searx/static/oscar/fonts/glyphicons-halflings-regular.svg → searx/static/themes/oscar/fonts/glyphicons-halflings-regular.svgrenamed

The content is the same.

searx/static/oscar/fonts/glyphicons-halflings-regular.ttf → searx/static/themes/oscar/fonts/glyphicons-halflings-regular.ttfrenamed

Binary file not shown.

searx/static/oscar/fonts/glyphicons-halflings-regular.woff → searx/static/themes/oscar/fonts/glyphicons-halflings-regular.woffrenamed

Binary file not shown.

searx/static/oscar/gruntfile.js → searx/static/themes/oscar/gruntfile.jsrenamed

The content is the same.

searx/static/oscar/img/favicon.png → searx/static/themes/oscar/img/favicon.pngrenamed

Binary file not shown.

searx/static/oscar/img/icons/README.md → searx/static/themes/oscar/img/icons/README.mdrenamed

The content is the same.

searx/static/oscar/img/icons/amazon.png → searx/static/themes/oscar/img/icons/amazon.pngrenamed

Binary file not shown.

searx/static/oscar/img/icons/dailymotion.png → searx/static/themes/oscar/img/icons/dailymotion.pngrenamed

Binary file not shown.

searx/static/oscar/img/icons/deviantart.png → searx/static/themes/oscar/img/icons/deviantart.pngrenamed

Binary file not shown.

searx/static/oscar/img/icons/facebook.png → searx/static/themes/oscar/img/icons/facebook.pngrenamed

Binary file not shown.

searx/static/oscar/img/icons/flickr.png → searx/static/themes/oscar/img/icons/flickr.pngrenamed

Binary file not shown.

searx/static/oscar/img/icons/github.png → searx/static/themes/oscar/img/icons/github.pngrenamed

Binary file not shown.

searx/static/oscar/img/icons/kickass.png → searx/static/themes/oscar/img/icons/kickass.pngrenamed

Binary file not shown.

searx/static/themes/oscar/img/icons/openstreetmap.pngnew file

Binary file not shown.

searx/static/themes/oscar/img/icons/photon.pngnew file

Binary file not shown.

searx/static/themes/oscar/img/icons/searchcode code.pngnew file

Binary file not shown.

searx/static/themes/oscar/img/icons/searchcode doc.pngnew file

Binary file not shown.

searx/static/oscar/img/icons/soundcloud.png → searx/static/themes/oscar/img/icons/soundcloud.pngrenamed

Binary file not shown.

searx/static/oscar/img/icons/stackoverflow.png → searx/static/themes/oscar/img/icons/stackoverflow.pngrenamed

Binary file not shown.

searx/static/oscar/img/icons/twitter.png → searx/static/themes/oscar/img/icons/twitter.pngrenamed

Binary file not shown.

searx/static/oscar/img/icons/vimeo.png → searx/static/themes/oscar/img/icons/vimeo.pngrenamed

Binary file not shown.

searx/static/oscar/img/icons/wikipedia.png → searx/static/themes/oscar/img/icons/wikipedia.pngrenamed

Binary file not shown.

searx/static/oscar/img/icons/youtube.png → searx/static/themes/oscar/img/icons/youtube.pngrenamed

Binary file not shown.

searx/static/oscar/img/loader.gif → searx/static/themes/oscar/img/loader.gifrenamed

Binary file not shown.

searx/static/oscar/img/map/layers-2x.png → searx/static/themes/oscar/img/map/layers-2x.pngrenamed

Binary file not shown.

searx/static/oscar/img/map/layers.png → searx/static/themes/oscar/img/map/layers.pngrenamed

Binary file not shown.

searx/static/themes/oscar/img/map/marker-icon-2x-green.pngnew file

Binary file not shown.

searx/static/themes/oscar/img/map/marker-icon-2x-orange.pngnew file

Binary file not shown.

searx/static/themes/oscar/img/map/marker-icon-2x-red.pngnew file

Binary file not shown.

searx/static/oscar/img/map/marker-icon-2x.png → searx/static/themes/oscar/img/map/marker-icon-2x.pngrenamed

Binary file not shown.

searx/static/themes/oscar/img/map/marker-icon-green.pngnew file

Binary file not shown.

searx/static/themes/oscar/img/map/marker-icon-orange.pngnew file

Binary file not shown.

searx/static/themes/oscar/img/map/marker-icon-red.pngnew file

Binary file not shown.

searx/static/oscar/img/map/marker-icon.png → searx/static/themes/oscar/img/map/marker-icon.pngrenamed

Binary file not shown.

searx/static/oscar/img/map/marker-shadow.png → searx/static/themes/oscar/img/map/marker-shadow.pngrenamed

Binary file not shown.

searx/static/oscar/img/searx_logo.png → searx/static/themes/oscar/img/searx_logo.pngrenamed

Binary file not shown.

searx/static/oscar/js/bootstrap.min.js → searx/static/themes/oscar/js/bootstrap.min.jsrenamed

The content is the same.

searx/static/oscar/js/html5shiv.min.js → searx/static/themes/oscar/js/html5shiv.min.jsrenamed

The content is the same.

searx/static/oscar/js/jquery-1.11.1.min.js → searx/static/themes/oscar/js/jquery-1.11.1.min.jsrenamed

The content is the same.

searx/static/oscar/js/leaflet-0.7.3.min.js → searx/static/themes/oscar/js/leaflet-0.7.3.min.jsrenamed

The content is the same.

searx/static/oscar/js/require-2.1.15.min.js → searx/static/themes/oscar/js/require-2.1.15.min.jsrenamed

The content is the same.

searx/static/oscar/js/respond.min.js → searx/static/themes/oscar/js/respond.min.jsrenamed

The content is the same.

searx/static/themes/oscar/js/searx.min.jsnew file+2
@@ -0,0 +1,2 @@
1+/*! oscar/searx.min.js | 09-01-2015 | https://github.com/asciimoo/searx */
2+requirejs.config({baseUrl:"./static/themes/oscar/js",paths:{app:"../app"}}),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(){searx.autocompleter&&$("#q").typeahead(null,{name:"search-results",displayKey:function(a){return a},source:searx.searchResults.ttAdapter()})}),$(document).ready(function(){$("#q.autofocus").focus(),$(".select-all-on-click").click(function(){$(this).select()}),$(".btn-collapse").click(function(){var a=$(this).data("btn-text-collapsed"),b=$(this).data("btn-text-not-collapsed");""!==a&&""!==b&&(new_html=$(this).hasClass("collapsed")?$(this).html().replace(a,b):$(this).html().replace(b,a),$(this).html(new_html))}),$(".btn-toggle .btn").click(function(){var a="btn-"+$(this).data("btn-class"),b=$(this).data("btn-label-default"),c=$(this).data("btn-label-toggled");""!==c&&(new_html=$(this).hasClass("btn-default")?$(this).html().replace(b,c):$(this).html().replace(c,b),$(this).html(new_html)),$(this).toggleClass(a),$(this).toggleClass("btn-default")}),$(".media-loader").click(function(){var a=$(this).data("target"),b=$(a+" > iframe"),c=b.attr("src");(void 0===c||c===!1)&&b.attr("src",b.data("src"))}),$(".btn-sm").dblclick(function(){var a="btn-"+$(this).data("btn-class");$(this).hasClass("btn-default")?($(".btn-sm > input").attr("checked","checked"),$(".btn-sm > input").prop("checked",!0),$(".btn-sm").addClass(a),$(".btn-sm").addClass("active"),$(".btn-sm").removeClass("btn-default")):($(".btn-sm > input").attr("checked",""),$(".btn-sm > input").removeAttr("checked"),$(".btn-sm > input").checked=!1,$(".btn-sm").removeClass(a),$(".btn-sm").removeClass("active"),$(".btn-sm").addClass("btn-default"))})}),$(document).ready(function(){$(".searx_overpass_request").on("click",function(a){var b="https://overpass-api.de/api/interpreter?data=",c=b+"[out:json][timeout:25];(",d=");out meta;",e=$(this).data("osm-id"),f=$(this).data("osm-type"),g=$(this).data("result-table"),h="#"+$(this).data("result-table-loadicon"),i=["addr:city","addr:country","addr:housenumber","addr:postcode","addr:street"];if(e&&f&&g){g="#"+g;var j=null;switch(f){case"node":j=c+"node("+e+");"+d;break;case"way":j=c+"way("+e+");"+d;break;case"relation":j=c+"relation("+e+");"+d}if(j){$.ajax(j).done(function(a){if(a&&a.elements&&a.elements[0]){var b=a.elements[0],c=$(g).html();for(var d in b.tags)if(null===b.tags.name||-1==i.indexOf(d)){switch(c+="<tr><td>"+d+"</td><td>",d){case"phone":case"fax":c+='<a href="tel:'+b.tags[d].replace(/ /g,"")+'">'+b.tags[d]+"</a>";break;case"email":c+='<a href="mailto:'+b.tags[d]+'">'+b.tags[d]+"</a>";break;case"website":case"url":c+='<a href="'+b.tags[d]+'">'+b.tags[d]+"</a>";break;case"wikidata":c+='<a href="https://www.wikidata.org/wiki/'+b.tags[d]+'">'+b.tags[d]+"</a>";break;case"wikipedia":if(-1!=b.tags[d].indexOf(":")){c+='<a href="https://'+b.tags[d].substring(0,b.tags[d].indexOf(":"))+".wikipedia.org/wiki/"+b.tags[d].substring(b.tags[d].indexOf(":")+1)+'">'+b.tags[d]+"</a>";break}default:c+=b.tags[d]}c+="</td></tr>"}$(g).html(c),$(g).removeClass("hidden"),$(h).addClass("hidden")}}).fail(function(){$(h).html($(h).html()+'<p class="text-muted">could not load data!</p>')})}}$(this).off(a)}),$(".searx_init_map").on("click",function(a){var b=$(this).data("leaflet-target"),c=$(this).data("map-lon"),d=$(this).data("map-lat"),e=$(this).data("map-zoom"),f=$(this).data("map-boundingbox"),g=$(this).data("map-geojson");require(["leaflet-0.7.3.min"],function(){f&&(southWest=L.latLng(f[0],f[2]),northEast=L.latLng(f[1],f[3]),map_bounds=L.latLngBounds(southWest,northEast)),L.Icon.Default.imagePath="./static/themes/oscar/img/map";{var a=L.map(b),h="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",i='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors',j=new L.TileLayer(h,{minZoom:1,maxZoom:19,attribution:i}),k="http://otile{s}.mqcdn.com/tiles/1.0.0/map/{z}/{x}/{y}.jpg",l='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors | Tiles Courtesy of <a href="http://www.mapquest.com/" target="_blank">MapQuest</a> <img src="http://developer.mapquest.com/content/osm/mq_logo.png">',m=new L.TileLayer(k,{minZoom:1,maxZoom:18,subdomains:"1234",attribution:l}),n="http://otile{s}.mqcdn.com/tiles/1.0.0/sat/{z}/{x}/{y}.jpg",o='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors | Tiles Courtesy of <a href="http://www.mapquest.com/" target="_blank">MapQuest</a> <img src="https://developer.mapquest.com/content/osm/mq_logo.png"> | Portions Courtesy NASA/JPL-Caltech and U.S. Depart. of Agriculture, Farm Service Agency';new L.TileLayer(n,{minZoom:1,maxZoom:11,subdomains:"1234",attribution:o})}map_bounds?setTimeout(function(){a.fitBounds(map_bounds,{maxZoom:17})},0):c&&d&&(e?a.setView(new L.LatLng(d,c),e):a.setView(new L.LatLng(d,c),8)),a.addLayer(m);var p={"OSM Mapnik":j,MapQuest:m};L.control.layers(p).addTo(a),g&&L.geoJson(g).addTo(a)}),$(this).off(a)})});
searx/static/oscar/js/searx_src/00_requirejs_config.js → searx/static/themes/oscar/js/searx_src/00_requirejs_config.jsrenamed+1−1
@@ -16,7 +16,7 @@
1616 */
1717
1818requirejs.config({
19− baseUrl: './static/oscar/js',
19+ baseUrl: './static/themes/oscar/js',
2020 paths: {
2121 app: '../app'
2222 }
searx/static/oscar/js/searx_src/autocompleter.js → searx/static/themes/oscar/js/searx_src/autocompleter.jsrenamed

The content is the same.

searx/static/oscar/js/searx_src/element_modifiers.js → searx/static/themes/oscar/js/searx_src/element_modifiers.jsrenamed+12
@@ -63,6 +63,18 @@ $(document).ready(function(){
6363 $(this).toggleClass(btnClass);
6464 $(this).toggleClass('btn-default');
6565 });
66+
67+ /**
68+ * change text during btn-toggle click if possible
69+ */
70+ $('.media-loader').click(function() {
71+ var target = $(this).data('target');
72+ var iframe_load = $(target + ' > iframe');
73+ var srctest = iframe_load.attr('src');
74+ if(srctest === undefined || srctest === false){
75+ iframe_load.attr('src', iframe_load.data('src'));
76+ }
77+ });
6678
6779 /**
6880 * Select or deselect every categories on double clic
searx/static/oscar/js/searx_src/leaflet_map.js → searx/static/themes/oscar/js/searx_src/leaflet_map.jsrenamed+1−1
@@ -116,7 +116,7 @@ $(document).ready(function(){
116116
117117 // TODO hack
118118 // change default imagePath
119− L.Icon.Default.imagePath = "./static/oscar/img/map";
119+ L.Icon.Default.imagePath = "./static/themes/oscar/img/map";
120120
121121 // init map
122122 var map = L.map(leaflet_target);
searx/static/oscar/js/typeahead.bundle.min.js → searx/static/themes/oscar/js/typeahead.bundle.min.jsrenamed

The content is the same.

searx/static/oscar/less/bootstrap/.csscomb.json → searx/static/themes/oscar/less/bootstrap/.csscomb.jsonrenamed

The content is the same.

searx/static/oscar/less/bootstrap/.csslintrc → searx/static/themes/oscar/less/bootstrap/.csslintrcrenamed

The content is the same.

searx/static/oscar/less/bootstrap/alerts.less → searx/static/themes/oscar/less/bootstrap/alerts.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/badges.less → searx/static/themes/oscar/less/bootstrap/badges.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/bootstrap.less → searx/static/themes/oscar/less/bootstrap/bootstrap.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/breadcrumbs.less → searx/static/themes/oscar/less/bootstrap/breadcrumbs.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/button-groups.less → searx/static/themes/oscar/less/bootstrap/button-groups.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/buttons.less → searx/static/themes/oscar/less/bootstrap/buttons.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/carousel.less → searx/static/themes/oscar/less/bootstrap/carousel.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/close.less → searx/static/themes/oscar/less/bootstrap/close.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/code.less → searx/static/themes/oscar/less/bootstrap/code.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/component-animations.less → searx/static/themes/oscar/less/bootstrap/component-animations.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/dropdowns.less → searx/static/themes/oscar/less/bootstrap/dropdowns.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/forms.less → searx/static/themes/oscar/less/bootstrap/forms.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/glyphicons.less → searx/static/themes/oscar/less/bootstrap/glyphicons.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/grid.less → searx/static/themes/oscar/less/bootstrap/grid.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/input-groups.less → searx/static/themes/oscar/less/bootstrap/input-groups.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/jumbotron.less → searx/static/themes/oscar/less/bootstrap/jumbotron.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/labels.less → searx/static/themes/oscar/less/bootstrap/labels.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/list-group.less → searx/static/themes/oscar/less/bootstrap/list-group.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/media.less → searx/static/themes/oscar/less/bootstrap/media.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins.less → searx/static/themes/oscar/less/bootstrap/mixins.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/alerts.less → searx/static/themes/oscar/less/bootstrap/mixins/alerts.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/background-variant.less → searx/static/themes/oscar/less/bootstrap/mixins/background-variant.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/border-radius.less → searx/static/themes/oscar/less/bootstrap/mixins/border-radius.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/buttons.less → searx/static/themes/oscar/less/bootstrap/mixins/buttons.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/center-block.less → searx/static/themes/oscar/less/bootstrap/mixins/center-block.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/clearfix.less → searx/static/themes/oscar/less/bootstrap/mixins/clearfix.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/forms.less → searx/static/themes/oscar/less/bootstrap/mixins/forms.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/gradients.less → searx/static/themes/oscar/less/bootstrap/mixins/gradients.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/grid-framework.less → searx/static/themes/oscar/less/bootstrap/mixins/grid-framework.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/grid.less → searx/static/themes/oscar/less/bootstrap/mixins/grid.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/hide-text.less → searx/static/themes/oscar/less/bootstrap/mixins/hide-text.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/image.less → searx/static/themes/oscar/less/bootstrap/mixins/image.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/labels.less → searx/static/themes/oscar/less/bootstrap/mixins/labels.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/list-group.less → searx/static/themes/oscar/less/bootstrap/mixins/list-group.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/nav-divider.less → searx/static/themes/oscar/less/bootstrap/mixins/nav-divider.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/nav-vertical-align.less → searx/static/themes/oscar/less/bootstrap/mixins/nav-vertical-align.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/opacity.less → searx/static/themes/oscar/less/bootstrap/mixins/opacity.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/pagination.less → searx/static/themes/oscar/less/bootstrap/mixins/pagination.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/panels.less → searx/static/themes/oscar/less/bootstrap/mixins/panels.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/progress-bar.less → searx/static/themes/oscar/less/bootstrap/mixins/progress-bar.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/reset-filter.less → searx/static/themes/oscar/less/bootstrap/mixins/reset-filter.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/resize.less → searx/static/themes/oscar/less/bootstrap/mixins/resize.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/responsive-visibility.less → searx/static/themes/oscar/less/bootstrap/mixins/responsive-visibility.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/size.less → searx/static/themes/oscar/less/bootstrap/mixins/size.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/tab-focus.less → searx/static/themes/oscar/less/bootstrap/mixins/tab-focus.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/table-row.less → searx/static/themes/oscar/less/bootstrap/mixins/table-row.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/text-emphasis.less → searx/static/themes/oscar/less/bootstrap/mixins/text-emphasis.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/text-overflow.less → searx/static/themes/oscar/less/bootstrap/mixins/text-overflow.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/mixins/vendor-prefixes.less → searx/static/themes/oscar/less/bootstrap/mixins/vendor-prefixes.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/modals.less → searx/static/themes/oscar/less/bootstrap/modals.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/navbar.less → searx/static/themes/oscar/less/bootstrap/navbar.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/navs.less → searx/static/themes/oscar/less/bootstrap/navs.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/normalize.less → searx/static/themes/oscar/less/bootstrap/normalize.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/pager.less → searx/static/themes/oscar/less/bootstrap/pager.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/pagination.less → searx/static/themes/oscar/less/bootstrap/pagination.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/panels.less → searx/static/themes/oscar/less/bootstrap/panels.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/popovers.less → searx/static/themes/oscar/less/bootstrap/popovers.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/print.less → searx/static/themes/oscar/less/bootstrap/print.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/progress-bars.less → searx/static/themes/oscar/less/bootstrap/progress-bars.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/responsive-embed.less → searx/static/themes/oscar/less/bootstrap/responsive-embed.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/responsive-utilities.less → searx/static/themes/oscar/less/bootstrap/responsive-utilities.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/scaffolding.less → searx/static/themes/oscar/less/bootstrap/scaffolding.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/tables.less → searx/static/themes/oscar/less/bootstrap/tables.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/theme.less → searx/static/themes/oscar/less/bootstrap/theme.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/thumbnails.less → searx/static/themes/oscar/less/bootstrap/thumbnails.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/tooltip.less → searx/static/themes/oscar/less/bootstrap/tooltip.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/type.less → searx/static/themes/oscar/less/bootstrap/type.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/typeahead.less → searx/static/themes/oscar/less/bootstrap/typeahead.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/utilities.less → searx/static/themes/oscar/less/bootstrap/utilities.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/variables.less → searx/static/themes/oscar/less/bootstrap/variables.lessrenamed

The content is the same.

searx/static/oscar/less/bootstrap/wells.less → searx/static/themes/oscar/less/bootstrap/wells.lessrenamed

The content is the same.

searx/static/oscar/less/oscar/checkbox.less → searx/static/themes/oscar/less/oscar/checkbox.lessrenamed

The content is the same.

searx/static/oscar/less/oscar/code.less → searx/static/themes/oscar/less/oscar/code.lessrenamed

The content is the same.

searx/static/oscar/less/oscar/cursor.less → searx/static/themes/oscar/less/oscar/cursor.lessrenamed

The content is the same.

searx/static/oscar/less/oscar/footer.less → searx/static/themes/oscar/less/oscar/footer.lessrenamed

The content is the same.

searx/static/oscar/less/oscar/infobox.less → searx/static/themes/oscar/less/oscar/infobox.lessrenamed

The content is the same.

searx/static/oscar/less/oscar/oscar.less → searx/static/themes/oscar/less/oscar/oscar.lessrenamed

The content is the same.

searx/static/oscar/less/oscar/results.less → searx/static/themes/oscar/less/oscar/results.lessrenamed

The content is the same.

searx/static/oscar/less/oscar/search.less → searx/static/themes/oscar/less/oscar/search.lessrenamed

The content is the same.

searx/static/oscar/package.json → searx/static/themes/oscar/package.jsonrenamed

The content is the same.

searx/templates/courgette/result_templates/default.html+2−2
@@ -1,7 +1,7 @@
11<div class="result {{ result.class }}">
22
3− {% if result['favicon'] %}
4− <img width="14" height="14" class="favicon" src="static/{{theme}}/img/icon_{{result['favicon']}}.ico" alt="{{result['favicon']}}" />
3+ {% if "icon_"~result.engine~".ico" in favicons %}
4+ <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />
55 {% endif %}
66
77 <div>
searx/templates/courgette/result_templates/map.html+2−2
@@ -1,7 +1,7 @@
11<div class="result {{ result.class }}">
22
3− {% if result['favicon'] %}
4− <img width="14" height="14" class="favicon" src="static/{{theme}}/img/icon_{{result['favicon']}}.ico" alt="{{result['favicon']}}" />
3+ {% if "icon_"~result.engine~".ico" in favicons %}
4+ <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />
55 {% endif %}
66
77 <div>
searx/templates/courgette/result_templates/videos.html+2−2
@@ -1,6 +1,6 @@
11<div class="result">
2− {% if result['favicon'] %}
3− <img width="14" height="14" class="favicon" src="static/{{theme}}/img/icon_{{result['favicon']}}.ico" alt="{{result['favicon']}}" />
2+ {% if "icon_"~result.engine~".ico" in favicons %}
3+ <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />
44 {% endif %}
55
66 <h3 class="result_title"><a href="{{ result.url }}">{{ result.title|safe }}</a></h3>
searx/templates/courgette/results.html+1−1
@@ -43,7 +43,7 @@
4343
4444 {% for result in results %}
4545 {% if result['template'] %}
46− {% include 'courgette/result_templates/'+result['template'] %}
46+ {% include get_result_template('courgette', result['template']) %}
4747 {% else %}
4848 {% include 'courgette/result_templates/default.html' %}
4949 {% endif %}
searx/templates/default/result_templates/default.html+1−1
@@ -1,5 +1,5 @@
11<div class="result {{ result.class }}">
2− <h3 class="result_title"> {% if result['favicon'] %}<img width="14" height="14" class="favicon" src="static/{{theme}}/img/icon_{{result['favicon']}}.ico" alt="{{result['favicon']}}" />{% endif %}<a href="{{ result.url }}">{{ result.title|safe }}</a></h3>
2+ <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 }}">{{ result.title|safe }}</a></h3>
33 <p class="url">{{ result.pretty_url }} <a class="cache_link" href="https://web.archive.org/web/{{ result.url }}">cached</a></p>
44 {% if result.publishedDate %}<p class="published_date">{{ result.publishedDate }}</p>{% endif %}
55 <p class="content">{% if result.img_src %}<img src="{{ result.img_src }}" class="image" />{% endif %}{% if result.content %}{{ result.content|safe }}<br class="last"/>{% endif %}</p>
searx/templates/default/result_templates/map.html+2−2
@@ -1,7 +1,7 @@
11<div class="result {{ result.class }}">
22
3− {% if result['favicon'] %}
4− <img width="14" height="14" class="favicon" src="static/{{theme}}/img/icon_{{result['favicon']}}.ico" alt="{{result['favicon']}}" />
3+ {% if "icon_"~result.engine~".ico" in favicons %}
4+ <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />
55 {% endif %}
66
77 <div>
searx/templates/default/result_templates/torrent.html+3
@@ -1,4 +1,7 @@
11<div class="result torrent_result">
2+ {% if "icon_"~result.engine~".ico" in favicons %}
3+ <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />
4+ {% endif %}
25 <h3 class="result_title"><a href="{{ result.url }}">{{ result.title|safe }}</a></h3>
36 <p class="url">{{ result.pretty_url }}</p>
47 {% if result.content %}<p class="content">{{ result.content|safe }}</p>{% endif %}
searx/templates/default/result_templates/videos.html+1−1
@@ -1,5 +1,5 @@
11<div class="result">
2− <h3 class="result_title"> {% if result['favicon'] %}<img width="14" height="14" class="favicon" src="static/{{theme}}/img/icon_{{result['favicon']}}.ico" alt="{{result['favicon']}}" />{% endif %}<a href="{{ result.url }}">{{ result.title|safe }}</a></h3>
2+ <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 }}">{{ result.title|safe }}</a></h3>
33 {% if result.publishedDate %}<p class="published_date">{{ result.publishedDate }}</p>{% endif %}
44 <a href="{{ result.url }}"><img class="thumbnail" src="{{ result.thumbnail }}" title="{{ result.title|striptags }}" alt="{{ result.title|striptags }}"/></a>
55 <p class="url">{{ result.url }}</p>
searx/templates/default/results.html+1−1
@@ -59,7 +59,7 @@
5959
6060 {% for result in results %}
6161 {% if result['template'] %}
62− {% include 'default/result_templates/'+result['template'] %}
62+ {% include get_result_template('default', result['template']) %}
6363 {% else %}
6464 {% include 'default/result_templates/default.html' %}
6565 {% endif %}
searx/templates/oscar/macros.html+3−3
@@ -6,12 +6,12 @@
66<!-- Draw favicon -->
77<!-- TODO: using url_for methode -->
88{% macro draw_favicon(favicon) -%}
9− <img width="32" height="32" class="favicon" src="static/oscar/img/icons/{{ favicon }}.png" alt="{{ favicon }}" />
9+ <img width="32" height="32" class="favicon" src="static/themes/oscar/img/icons/{{ favicon }}.png" alt="{{ favicon }}" />
1010{%- endmacro %}
1111
1212<!-- Draw result header -->
13−{% macro result_header(result) -%}
14− <h4 class="result_header">{% if result.favicon %}{{ draw_favicon(result.favicon) }} {% endif %}<a href="{{ result.url }}">{{ result.title|safe }}</a></h4>
13+{% macro result_header(result, favicons) -%}
14+ <h4 class="result_header">{% if result.engine~".png" in favicons %}{{ draw_favicon(result.engine) }} {% endif %}<a href="{{ result.url }}">{{ result.title|safe }}</a></h4>
1515{%- endmacro %}
1616
1717<!-- Draw result sub header -->
searx/templates/oscar/result_templates/code.html+1−1
@@ -1,6 +1,6 @@
11{% from 'oscar/macros.html' import result_header, result_sub_header, result_footer, icon %}
22
3−{{ result_header(result) }}
3+{{ result_header(result, favicons) }}
44{{ result_sub_header(result) }}
55
66{% if result.content %}<p class="result-content">{{ result.content|safe }}</p>{% endif %}
searx/templates/oscar/result_templates/default.html+14−2
@@ -1,8 +1,20 @@
1−{% from 'oscar/macros.html' import result_header, result_sub_header, result_footer %}
1+{% from 'oscar/macros.html' import result_header, result_sub_header, result_footer, icon %}
22
3−{{ result_header(result) }}
3+{{ result_header(result, favicons) }}
44{{ result_sub_header(result) }}
55
6+{% if result.embedded %}
7+ <small> &bull; <a class="text-info btn-collapse collapsed cursor-pointer media-loader" 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>
8+{% endif %}
9+
10+{% if result.embedded %}
11+<div id="result-media-{{ index }}" class="collapse">
12+{% autoescape false %}
13+ {{ result.embedded }}
14+{% endautoescape %}
15+</div>
16+{% endif %}
17+
618{% if result.content %}<p class="result-content">{{ result.content|safe }}</p>{% endif %}
719
820{{ result_footer(result) }}
searx/templates/oscar/result_templates/images.html+1−1
@@ -9,7 +9,7 @@
99 <div class="modal-content">
1010 <div class="modal-header">
1111 <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
12− <h4 class="modal-title">{% if result['favicon'] %}{{ draw_favicon(result['favicon']) }} {% endif %}{{ result.title|striptags }}</h4>
12+ <h4 class="modal-title">{% if result.engine~".png" in favicons %}{{ draw_favicon(result.engine) }} {% endif %}{{ result.title|striptags }}</h4>
1313 </div>
1414 <div class="modal-body">
1515 <img class="img-responsive center-block" src="{{ result.img_src }}" alt="{{ result.title }}">
searx/templates/oscar/result_templates/map.html+1−1
@@ -1,6 +1,6 @@
11{% from 'oscar/macros.html' import result_header, result_sub_header, result_footer, icon %}
22
3−{{ result_header(result) }}
3+{{ result_header(result, favicons) }}
44{{ result_sub_header(result) }}
55
66{% if (result.latitude and result.longitude) or result.boundingbox %}
searx/templates/oscar/result_templates/torrent.html+1−1
@@ -1,6 +1,6 @@
11{% from 'oscar/macros.html' import result_header, result_sub_header, result_footer, icon %}
22
3−{{ result_header(result) }}
3+{{ result_header(result, favicons) }}
44{{ result_sub_header(result) }}
55
66<p class="result-content">{{ icon('transfer') }} {{ _('Seeder') }} <span class="badge">{{ result.seed }}</span>, {{ _('Leecher') }} <span class="badge">{{ result.leech }}</span>
searx/templates/oscar/result_templates/videos.html+15−3
@@ -1,11 +1,23 @@
1−{% from 'oscar/macros.html' import result_header, result_sub_header, result_footer %}
1+{% from 'oscar/macros.html' import result_header, result_sub_header, result_footer, icon %}
22
3−{{ result_header(result) }}
3+{{ result_header(result, favicons) }}
44{{ result_sub_header(result) }}
55
6+{% if result.embedded %}
7+ <small> &bull; <a class="text-info btn-collapse collapsed cursor-pointer media-loader" 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>
8+{% endif %}
9+
10+{% if result.embedded %}
11+<div id="result-video-{{ index }}" class="collapse">
12+{% autoescape false %}
13+ {{ result.embedded }}
14+{% endautoescape %}
15+</div>
16+{% endif %}
17+
618<div class="container-fluid">
719 <div class="row">
8− <img class="thumbnail col-xs-6 col-sm-4 col-md-4 result-content" src="{{ result.thumbnail|safe }}" alt="{{ result.title|urlencode }} {{ result['favicon'] }}" />
20+ <a href="{{ result.url }}"><img class="thumbnail col-xs-6 col-sm-4 col-md-4 result-content" src="{{ result.thumbnail|safe }}" alt="{{ result.title|striptags }} {{ result.engine }}" /></a>
921 {% if result.content %}<p class="col-xs-12 col-sm-8 col-md-8 result-content">{{ result.content|safe }}</p>{% endif %}
1022 </div>
1123</div>
searx/templates/oscar/results.html+5−1
@@ -17,7 +17,11 @@
1717 {% for result in results %}
1818 <div class="result {% if result['template'] %}result-{{ result.template|replace('.html', '') }}{% else %}result-default{% endif %}">
1919 {% set index = loop.index %}
20− {% if result.template %}{% include 'oscar/result_templates/'+result['template'] %}{% else %}{% include 'oscar/result_templates/default.html' %}{% endif %}
20+ {% if result.template %}
21+ {% include get_result_template('oscar', result['template']) %}
22+ {% else %}
23+ {% include 'oscar/result_templates/default.html' %}
24+ {% endif %}
2125 </div>
2226 {% endfor %}
2327
searx/tests/test_webapp.py+1−1
@@ -49,7 +49,7 @@ class ViewsTestCase(SearxTestCase):
4949 )
5050 result = self.app.post('/', data={'q': 'test'})
5151 self.assertIn(
52− '<h3 class="result_title"> <img width="14" height="14" class="favicon" src="static/default/img/icon_youtube.ico" alt="youtube" /><a href="http://first.test.xyz">First <span class="highlight">Test</span></a></h3>', # noqa
52+ '<h3 class="result_title"><img width="14" height="14" class="favicon" src="/static/themes/default/img/icons/icon_youtube.ico" alt="youtube" /><a href="http://second.test.xyz">Second <span class="highlight">Test</span></a></h3>', # noqa
5353 result.data
5454 )
5555 self.assertIn(
searx/translations/de/LC_MESSAGES/messages.mo

Binary file not shown.

searx/translations/de/LC_MESSAGES/messages.po+70−56
@@ -4,14 +4,14 @@
44#
55# Translators:
66# pointhi, 2014
7−# stf <stefan.marsiske@gmail.com>, 2014
87# rike, 2014
8+# stf <stefan.marsiske@gmail.com>, 2014
99msgid ""
1010msgstr ""
1111"Project-Id-Version: searx\n"
1212"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
13−"POT-Creation-Date: 2014-11-26 20:41+0100\n"
14−"PO-Revision-Date: 2014-03-15 18:40+0000\n"
13+"POT-Creation-Date: 2015-01-05 20:54+0100\n"
14+"PO-Revision-Date: 2014-12-27 10:30+0000\n"
1515"Last-Translator: pointhi\n"
1616"Language-Team: German "
1717"(http://www.transifex.com/projects/p/searx/language/de/)\n"
@@ -21,31 +21,31 @@ msgstr ""
2121"Content-Transfer-Encoding: 8bit\n"
2222"Generated-By: Babel 1.3\n"
2323
24−#: searx/webapp.py:308
24+#: searx/webapp.py:263
2525msgid "{minutes} minute(s) ago"
2626msgstr "vor {minutes} Minute(n)"
2727
28−#: searx/webapp.py:310
28+#: searx/webapp.py:265
2929msgid "{hours} hour(s), {minutes} minute(s) ago"
3030msgstr "vor {hours} Stunde(n), {minutes} Minute(n)"
3131
32−#: searx/engines/__init__.py:177
32+#: searx/engines/__init__.py:179
3333msgid "Page loads (sec)"
3434msgstr "Ladezeit (sek)"
3535
36−#: searx/engines/__init__.py:181
36+#: searx/engines/__init__.py:183
3737msgid "Number of results"
3838msgstr "Trefferanzahl"
3939
40−#: searx/engines/__init__.py:185
40+#: searx/engines/__init__.py:187
4141msgid "Scores"
4242msgstr "Punkte"
4343
44−#: searx/engines/__init__.py:189
44+#: searx/engines/__init__.py:191
4545msgid "Scores per result"
4646msgstr "Punkte pro Treffer"
4747
48−#: searx/engines/__init__.py:193
48+#: searx/engines/__init__.py:195
4949msgid "Errors"
5050msgstr "Fehler"
5151
@@ -125,22 +125,22 @@ msgstr "Kategorie"
125125
126126#: searx/templates/courgette/preferences.html:72
127127#: searx/templates/courgette/preferences.html:83
128−#: searx/templates/default/preferences.html:73
129−#: searx/templates/default/preferences.html:85
128+#: searx/templates/default/preferences.html:72
129+#: searx/templates/default/preferences.html:83
130130#: searx/templates/oscar/preferences.html:118
131131msgid "Allow"
132132msgstr "Erlauben"
133133
134134#: searx/templates/courgette/preferences.html:72
135135#: searx/templates/courgette/preferences.html:84
136−#: searx/templates/default/preferences.html:73
137−#: searx/templates/default/preferences.html:86
136+#: searx/templates/default/preferences.html:72
137+#: searx/templates/default/preferences.html:84
138138#: searx/templates/oscar/preferences.html:117
139139msgid "Block"
140140msgstr "Blockieren"
141141
142142#: searx/templates/courgette/preferences.html:92
143−#: searx/templates/default/preferences.html:94
143+#: searx/templates/default/preferences.html:92
144144#: searx/templates/oscar/preferences.html:132
145145msgid ""
146146"These settings are stored in your cookies, this allows us not to store "
@@ -150,54 +150,54 @@ msgstr ""
150150"damit wir keine Ihrer persönlichen Daten speichern müssen."
151151
152152#: searx/templates/courgette/preferences.html:94
153−#: searx/templates/default/preferences.html:96
153+#: searx/templates/default/preferences.html:94
154154#: searx/templates/oscar/preferences.html:134
155155msgid ""
156156"These cookies serve your sole convenience, we don't use these cookies to "
157157"track you."
158158msgstr ""
159−"Diese Cookies dienen einzig Ihrem Komfort, wir verwenden sie nicht, um "
159+"Diese Cookies dienen einzig Ihrem Komfort. Wir verwenden sie nicht, um "
160160"Sie zu überwachen."
161161
162162#: searx/templates/courgette/preferences.html:97
163−#: searx/templates/default/preferences.html:99
163+#: searx/templates/default/preferences.html:97
164164#: searx/templates/oscar/preferences.html:137
165165msgid "save"
166166msgstr "Speichern"
167167
168168#: searx/templates/courgette/preferences.html:98
169−#: searx/templates/default/preferences.html:100
169+#: searx/templates/default/preferences.html:98
170170#: searx/templates/oscar/preferences.html:138
171171msgid "back"
172172msgstr "Zurück"
173173
174174#: searx/templates/courgette/results.html:12
175175#: searx/templates/default/results.html:12
176−#: searx/templates/oscar/results.html:78
176+#: searx/templates/oscar/results.html:87
177177msgid "Search URL"
178178msgstr "Such-URL"
179179
180180#: searx/templates/courgette/results.html:16
181181#: searx/templates/default/results.html:16
182−#: searx/templates/oscar/results.html:83
182+#: searx/templates/oscar/results.html:92
183183msgid "Download results"
184184msgstr "Ergebnisse herunterladen"
185185
186186#: searx/templates/courgette/results.html:34
187187#: searx/templates/default/results.html:42
188−#: searx/templates/oscar/results.html:58
188+#: searx/templates/oscar/results.html:67
189189msgid "Suggestions"
190190msgstr "Vorschläge"
191191
192192#: searx/templates/courgette/results.html:62
193193#: searx/templates/default/results.html:78
194−#: searx/templates/oscar/results.html:37
194+#: searx/templates/oscar/results.html:41
195195msgid "previous page"
196196msgstr "vorherige Seite"
197197
198198#: searx/templates/courgette/results.html:73
199199#: searx/templates/default/results.html:89
200−#: searx/templates/oscar/results.html:45
200+#: searx/templates/oscar/results.html:49
201201msgid "next page"
202202msgstr "nächste Seite"
203203
@@ -210,39 +210,27 @@ msgstr "Suche nach..."
210210#: searx/templates/courgette/stats.html:4 searx/templates/default/stats.html:4
211211#: searx/templates/oscar/stats.html:5
212212msgid "Engine stats"
213−msgstr "Suchmaschinenstatistik"
213+msgstr "Suchmaschinenstatistiken"
214214
215215#: searx/templates/default/categories.html:8
216216msgid "Click on the magnifier to perform search"
217−msgstr ""
218−
219−#: searx/templates/default/preferences.html:72
220−msgid "Localization"
221−msgstr ""
222−
223−#: searx/templates/default/preferences.html:82
224−msgid "Yes"
225−msgstr ""
226−
227−#: searx/templates/default/preferences.html:82
228−msgid "No"
229−msgstr ""
217+msgstr "klicke auf die Lupe, um die Suche zu starten"
230218
231219#: searx/templates/default/results.html:34
232220msgid "Answers"
233−msgstr ""
221+msgstr "Antworten"
234222
235223#: searx/templates/oscar/base.html:69
236224msgid "Powered by"
237−msgstr ""
225+msgstr "Powered by"
238226
239227#: searx/templates/oscar/base.html:69
240228msgid "a privacy-respecting, hackable metasearch engine"
241−msgstr "eine privatsphären respektierende, hackbare Metasuchmaschine"
229+msgstr "eine privatsphären-respektierende, hackbare Metasuchmaschine"
242230
243231#: searx/templates/oscar/navbar.html:6
244232msgid "Toggle navigation"
245−msgstr ""
233+msgstr "Navigation umschalten"
246234
247235#: searx/templates/oscar/navbar.html:15
248236msgid "home"
@@ -260,15 +248,15 @@ msgstr "Suchmaschinen"
260248
261249#: searx/templates/oscar/preferences.html:39
262250msgid "What language do you prefer for search?"
263−msgstr "Welche Sprache bevorzugst du für die Suche?"
251+msgstr "welche Sprache bevorzugst du für die Suche?"
264252
265253#: searx/templates/oscar/preferences.html:50
266254msgid "Change the language of the layout"
267−msgstr "Ändere die Sprache des Layouts"
255+msgstr "ändere die Sprache des Layouts"
268256
269257#: searx/templates/oscar/preferences.html:63
270258msgid "Find stuff as you type"
271−msgstr "finde Sachen während der Eingabe"
259+msgstr "zeige Vorschläge während der Eingabe an"
272260
273261#: searx/templates/oscar/preferences.html:73
274262msgid ""
@@ -288,9 +276,9 @@ msgstr "ändere das Aussehen von searx"
288276msgid "Search results"
289277msgstr "Suchergebnisse"
290278
291−#: searx/templates/oscar/results.html:73
279+#: searx/templates/oscar/results.html:82
292280msgid "Links"
293−msgstr ""
281+msgstr "Links"
294282
295283#: searx/templates/oscar/search.html:6 searx/templates/oscar/search_full.html:7
296284msgid "Start search"
@@ -302,7 +290,7 @@ msgstr "Suchfilter anzeigen"
302290
303291#: searx/templates/oscar/search_full.html:11
304292msgid "Hide search filters"
305−msgstr "Suchfilter verstecke"
293+msgstr "Suchfilter verstecken"
306294
307295#: searx/templates/oscar/stats.html:2
308296msgid "stats"
@@ -318,11 +306,11 @@ msgstr "Schließen"
318306#: searx/templates/oscar/messages/first_time.html:6
319307#: searx/templates/oscar/messages/no_data_available.html:3
320308msgid "Heads up!"
321−msgstr "Information!"
309+msgstr "Achtung!"
322310
323311#: searx/templates/oscar/messages/first_time.html:7
324312msgid "It look like you are using searx first time."
325−msgstr ""
313+msgstr "Es sieht so aus, als ob das erstes mal mit searx arbeitest."
326314
327315#: searx/templates/oscar/messages/js_disabled.html:2
328316msgid "Warning!"
@@ -330,7 +318,7 @@ msgstr "Warnung!"
330318
331319#: searx/templates/oscar/messages/js_disabled.html:3
332320msgid "Please enable JavaScript to use full functionality of this site."
333−msgstr "Bitte aktiviere JavaScript um alle möglichkeiten dieser Seite zu nutzen."
321+msgstr "Bitte aktiviere JavaScript, um alle Funktionen dieser Seite zu nutzen. "
334322
335323#: searx/templates/oscar/messages/no_data_available.html:4
336324msgid "There is currently no data available. "
@@ -346,7 +334,8 @@ msgid ""
346334"categories."
347335msgstr ""
348336"Es konnten keine Suchergebnisse gefunden werden. Bitte nutze einen "
349−"anderen Suchbegriff oder Suche das gewünschte in einer anderen Kategorie."
337+"anderen Suchbegriff, oder suche das gewünschte in einer anderen "
338+"Kategorie. "
350339
351340#: searx/templates/oscar/messages/save_settings_successfull.html:7
352341msgid "Well done!"
@@ -358,7 +347,7 @@ msgstr "Einstellungen wurden erfolgreich gespeichert."
358347
359348#: searx/templates/oscar/messages/unknow_error.html:7
360349msgid "Oh snap!"
361−msgstr "Verdammt!"
350+msgstr "Oh nein!"
362351
363352#: searx/templates/oscar/messages/unknow_error.html:8
364353msgid "Something went wrong."
@@ -369,7 +358,15 @@ msgstr "Irgendetwas ist falsch gelaufen."
369358#: searx/templates/oscar/result_templates/torrent.html:6
370359#: searx/templates/oscar/result_templates/videos.html:6
371360msgid "cached"
372−msgstr "cached"
361+msgstr "Im Cache"
362+
363+#: searx/templates/oscar/result_templates/default.html:9
364+msgid "show media"
365+msgstr ""
366+
367+#: searx/templates/oscar/result_templates/default.html:9
368+msgid "hide media"
369+msgstr ""
373370
374371#: searx/templates/oscar/result_templates/images.html:21
375372msgid "Get image"
@@ -393,16 +390,33 @@ msgstr "Details anzeigen"
393390
394391#: searx/templates/oscar/result_templates/map.html:14
395392msgid "hide details"
396−msgstr "Details verstecke"
393+msgstr "Details verstecken"
397394
398395#: searx/templates/oscar/result_templates/torrent.html:8
399396msgid "Seeder"
400−msgstr ""
397+msgstr "Seeder"
401398
402399#: searx/templates/oscar/result_templates/torrent.html:8
403400msgid "Leecher"
401+msgstr "Leecher"
402+
403+#: searx/templates/oscar/result_templates/videos.html:9
404+msgid "show video"
405+msgstr ""
406+
407+#: searx/templates/oscar/result_templates/videos.html:9
408+msgid "hide video"
404409msgstr ""
405410
411+msgid "Localization"
412+msgstr "Übersetzung"
413+
414+msgid "Yes"
415+msgstr "Ja"
416+
417+msgid "No"
418+msgstr "Nein"
419+
406420# categories - manually added
407421# TODO - automatically add
408422msgid "files"
searx/translations/en/LC_MESSAGES/messages.mo

Binary file not shown.

searx/translations/en/LC_MESSAGES/messages.po+47−34
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: PROJECT VERSION\n"
99"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
10−"POT-Creation-Date: 2014-11-26 20:41+0100\n"
10+"POT-Creation-Date: 2015-01-05 20:54+0100\n"
1111"PO-Revision-Date: 2014-01-30 15:22+0100\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: en <LL@li.org>\n"
@@ -17,31 +17,31 @@ msgstr ""
1717"Content-Transfer-Encoding: 8bit\n"
1818"Generated-By: Babel 1.3\n"
1919
20−#: searx/webapp.py:308
20+#: searx/webapp.py:263
2121msgid "{minutes} minute(s) ago"
2222msgstr ""
2323
24−#: searx/webapp.py:310
24+#: searx/webapp.py:265
2525msgid "{hours} hour(s), {minutes} minute(s) ago"
2626msgstr ""
2727
28−#: searx/engines/__init__.py:177
28+#: searx/engines/__init__.py:179
2929msgid "Page loads (sec)"
3030msgstr ""
3131
32−#: searx/engines/__init__.py:181
32+#: searx/engines/__init__.py:183
3333msgid "Number of results"
3434msgstr ""
3535
36−#: searx/engines/__init__.py:185
36+#: searx/engines/__init__.py:187
3737msgid "Scores"
3838msgstr ""
3939
40−#: searx/engines/__init__.py:189
40+#: searx/engines/__init__.py:191
4141msgid "Scores per result"
4242msgstr ""
4343
44−#: searx/engines/__init__.py:193
44+#: searx/engines/__init__.py:195
4545msgid "Errors"
4646msgstr ""
4747
@@ -121,22 +121,22 @@ msgstr ""
121121
122122#: searx/templates/courgette/preferences.html:72
123123#: searx/templates/courgette/preferences.html:83
124−#: searx/templates/default/preferences.html:73
125−#: searx/templates/default/preferences.html:85
124+#: searx/templates/default/preferences.html:72
125+#: searx/templates/default/preferences.html:83
126126#: searx/templates/oscar/preferences.html:118
127127msgid "Allow"
128128msgstr ""
129129
130130#: searx/templates/courgette/preferences.html:72
131131#: searx/templates/courgette/preferences.html:84
132−#: searx/templates/default/preferences.html:73
133−#: searx/templates/default/preferences.html:86
132+#: searx/templates/default/preferences.html:72
133+#: searx/templates/default/preferences.html:84
134134#: searx/templates/oscar/preferences.html:117
135135msgid "Block"
136136msgstr ""
137137
138138#: searx/templates/courgette/preferences.html:92
139−#: searx/templates/default/preferences.html:94
139+#: searx/templates/default/preferences.html:92
140140#: searx/templates/oscar/preferences.html:132
141141msgid ""
142142"These settings are stored in your cookies, this allows us not to store "
@@ -144,7 +144,7 @@ msgid ""
144144msgstr ""
145145
146146#: searx/templates/courgette/preferences.html:94
147−#: searx/templates/default/preferences.html:96
147+#: searx/templates/default/preferences.html:94
148148#: searx/templates/oscar/preferences.html:134
149149msgid ""
150150"These cookies serve your sole convenience, we don't use these cookies to "
@@ -152,44 +152,44 @@ msgid ""
152152msgstr ""
153153
154154#: searx/templates/courgette/preferences.html:97
155−#: searx/templates/default/preferences.html:99
155+#: searx/templates/default/preferences.html:97
156156#: searx/templates/oscar/preferences.html:137
157157msgid "save"
158158msgstr ""
159159
160160#: searx/templates/courgette/preferences.html:98
161−#: searx/templates/default/preferences.html:100
161+#: searx/templates/default/preferences.html:98
162162#: searx/templates/oscar/preferences.html:138
163163msgid "back"
164164msgstr ""
165165
166166#: searx/templates/courgette/results.html:12
167167#: searx/templates/default/results.html:12
168−#: searx/templates/oscar/results.html:78
168+#: searx/templates/oscar/results.html:87
169169msgid "Search URL"
170170msgstr ""
171171
172172#: searx/templates/courgette/results.html:16
173173#: searx/templates/default/results.html:16
174−#: searx/templates/oscar/results.html:83
174+#: searx/templates/oscar/results.html:92
175175msgid "Download results"
176176msgstr ""
177177
178178#: searx/templates/courgette/results.html:34
179179#: searx/templates/default/results.html:42
180−#: searx/templates/oscar/results.html:58
180+#: searx/templates/oscar/results.html:67
181181msgid "Suggestions"
182182msgstr ""
183183
184184#: searx/templates/courgette/results.html:62
185185#: searx/templates/default/results.html:78
186−#: searx/templates/oscar/results.html:37
186+#: searx/templates/oscar/results.html:41
187187msgid "previous page"
188188msgstr ""
189189
190190#: searx/templates/courgette/results.html:73
191191#: searx/templates/default/results.html:89
192−#: searx/templates/oscar/results.html:45
192+#: searx/templates/oscar/results.html:49
193193msgid "next page"
194194msgstr ""
195195
@@ -208,18 +208,6 @@ msgstr ""
208208msgid "Click on the magnifier to perform search"
209209msgstr ""
210210
211−#: searx/templates/default/preferences.html:72
212−msgid "Localization"
213−msgstr ""
214−
215−#: searx/templates/default/preferences.html:82
216−msgid "Yes"
217−msgstr ""
218−
219−#: searx/templates/default/preferences.html:82
220−msgid "No"
221−msgstr ""
222−
223211#: searx/templates/default/results.html:34
224212msgid "Answers"
225213msgstr ""
@@ -277,7 +265,7 @@ msgstr ""
277265msgid "Search results"
278266msgstr ""
279267
280−#: searx/templates/oscar/results.html:73
268+#: searx/templates/oscar/results.html:82
281269msgid "Links"
282270msgstr ""
283271
@@ -358,6 +346,14 @@ msgstr ""
358346msgid "cached"
359347msgstr ""
360348
349+#: searx/templates/oscar/result_templates/default.html:9
350+msgid "show media"
351+msgstr ""
352+
353+#: searx/templates/oscar/result_templates/default.html:9
354+msgid "hide media"
355+msgstr ""
356+
361357#: searx/templates/oscar/result_templates/images.html:21
362358msgid "Get image"
363359msgstr ""
@@ -390,6 +386,23 @@ msgstr ""
390386msgid "Leecher"
391387msgstr ""
392388
389+#: searx/templates/oscar/result_templates/videos.html:9
390+msgid "show video"
391+msgstr ""
392+
393+#: searx/templates/oscar/result_templates/videos.html:9
394+msgid "hide video"
395+msgstr ""
396+
397+msgid "Localization"
398+msgstr ""
399+
400+msgid "Yes"
401+msgstr ""
402+
403+msgid "No"
404+msgstr ""
405+
393406# categories - manually added
394407# TODO - automatically add
395408msgid "files"
searx/translations/es/LC_MESSAGES/messages.mo

Binary file not shown.

searx/translations/es/LC_MESSAGES/messages.po+52−45
@@ -8,9 +8,9 @@ msgid ""
88msgstr ""
99"Project-Id-Version: searx\n"
1010"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
11−"POT-Creation-Date: 2014-11-26 20:41+0100\n"
12−"PO-Revision-Date: 2014-09-08 11:01+0000\n"
13−"Last-Translator: Alejandro León Aznar\n"
11+"POT-Creation-Date: 2015-01-05 20:54+0100\n"
12+"PO-Revision-Date: 2014-11-26 20:38+0000\n"
13+"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
1414"Language-Team: Spanish "
1515"(http://www.transifex.com/projects/p/searx/language/es/)\n"
1616"Plural-Forms: nplurals=2; plural=(n != 1)\n"
@@ -19,31 +19,31 @@ msgstr ""
1919"Content-Transfer-Encoding: 8bit\n"
2020"Generated-By: Babel 1.3\n"
2121
22−#: searx/webapp.py:308
22+#: searx/webapp.py:263
2323msgid "{minutes} minute(s) ago"
2424msgstr "hace {minutes} minuto(s)"
2525
26−#: searx/webapp.py:310
26+#: searx/webapp.py:265
2727msgid "{hours} hour(s), {minutes} minute(s) ago"
2828msgstr "hace {hours} hora(s) y {minutes} minuto(s)"
2929
30−#: searx/engines/__init__.py:177
30+#: searx/engines/__init__.py:179
3131msgid "Page loads (sec)"
3232msgstr "Tiempo de carga (segundos)"
3333
34−#: searx/engines/__init__.py:181
34+#: searx/engines/__init__.py:183
3535msgid "Number of results"
3636msgstr "Número de resultados"
3737
38−#: searx/engines/__init__.py:185
38+#: searx/engines/__init__.py:187
3939msgid "Scores"
4040msgstr "Puntuaciones"
4141
42−#: searx/engines/__init__.py:189
42+#: searx/engines/__init__.py:191
4343msgid "Scores per result"
4444msgstr "Puntuaciones por resultado"
4545
46−#: searx/engines/__init__.py:193
46+#: searx/engines/__init__.py:195
4747msgid "Errors"
4848msgstr "Errores"
4949
@@ -92,19 +92,19 @@ msgstr "Idioma de la interfaz"
9292#: searx/templates/default/preferences.html:36
9393#: searx/templates/oscar/preferences.html:53
9494msgid "Autocomplete"
95−msgstr ""
95+msgstr "Autocompletar"
9696
9797#: searx/templates/courgette/preferences.html:47
9898#: searx/templates/default/preferences.html:47
9999#: searx/templates/oscar/preferences.html:66
100100msgid "Method"
101−msgstr ""
101+msgstr "Método"
102102
103103#: searx/templates/courgette/preferences.html:56
104104#: searx/templates/default/preferences.html:56
105105#: searx/templates/oscar/preferences.html:76
106106msgid "Themes"
107−msgstr ""
107+msgstr "Temas"
108108
109109#: searx/templates/courgette/preferences.html:66
110110#: searx/templates/default/preferences.html:66
@@ -123,22 +123,22 @@ msgstr "Categoría"
123123
124124#: searx/templates/courgette/preferences.html:72
125125#: searx/templates/courgette/preferences.html:83
126−#: searx/templates/default/preferences.html:73
127−#: searx/templates/default/preferences.html:85
126+#: searx/templates/default/preferences.html:72
127+#: searx/templates/default/preferences.html:83
128128#: searx/templates/oscar/preferences.html:118
129129msgid "Allow"
130130msgstr "Permitir"
131131
132132#: searx/templates/courgette/preferences.html:72
133133#: searx/templates/courgette/preferences.html:84
134−#: searx/templates/default/preferences.html:73
135−#: searx/templates/default/preferences.html:86
134+#: searx/templates/default/preferences.html:72
135+#: searx/templates/default/preferences.html:84
136136#: searx/templates/oscar/preferences.html:117
137137msgid "Block"
138138msgstr "Bloquear"
139139
140140#: searx/templates/courgette/preferences.html:92
141−#: searx/templates/default/preferences.html:94
141+#: searx/templates/default/preferences.html:92
142142#: searx/templates/oscar/preferences.html:132
143143msgid ""
144144"These settings are stored in your cookies, this allows us not to store "
@@ -148,7 +148,7 @@ msgstr ""
148148"almacenar dicha información sobre usted."
149149
150150#: searx/templates/courgette/preferences.html:94
151−#: searx/templates/default/preferences.html:96
151+#: searx/templates/default/preferences.html:94
152152#: searx/templates/oscar/preferences.html:134
153153msgid ""
154154"These cookies serve your sole convenience, we don't use these cookies to "
@@ -158,44 +158,44 @@ msgstr ""
158158"rastrearle."
159159
160160#: searx/templates/courgette/preferences.html:97
161−#: searx/templates/default/preferences.html:99
161+#: searx/templates/default/preferences.html:97
162162#: searx/templates/oscar/preferences.html:137
163163msgid "save"
164164msgstr "Guardar"
165165
166166#: searx/templates/courgette/preferences.html:98
167−#: searx/templates/default/preferences.html:100
167+#: searx/templates/default/preferences.html:98
168168#: searx/templates/oscar/preferences.html:138
169169msgid "back"
170170msgstr "Atrás"
171171
172172#: searx/templates/courgette/results.html:12
173173#: searx/templates/default/results.html:12
174−#: searx/templates/oscar/results.html:78
174+#: searx/templates/oscar/results.html:87
175175msgid "Search URL"
176176msgstr "Buscar URL"
177177
178178#: searx/templates/courgette/results.html:16
179179#: searx/templates/default/results.html:16
180−#: searx/templates/oscar/results.html:83
180+#: searx/templates/oscar/results.html:92
181181msgid "Download results"
182182msgstr "Descargar resultados"
183183
184184#: searx/templates/courgette/results.html:34
185185#: searx/templates/default/results.html:42
186−#: searx/templates/oscar/results.html:58
186+#: searx/templates/oscar/results.html:67
187187msgid "Suggestions"
188188msgstr "Sugerencias"
189189
190190#: searx/templates/courgette/results.html:62
191191#: searx/templates/default/results.html:78
192−#: searx/templates/oscar/results.html:37
192+#: searx/templates/oscar/results.html:41
193193msgid "previous page"
194194msgstr "Página anterior"
195195
196196#: searx/templates/courgette/results.html:73
197197#: searx/templates/default/results.html:89
198−#: searx/templates/oscar/results.html:45
198+#: searx/templates/oscar/results.html:49
199199msgid "next page"
200200msgstr "Página siguiente"
201201
@@ -214,18 +214,6 @@ msgstr "Estadísticas del motor de búsqueda"
214214msgid "Click on the magnifier to perform search"
215215msgstr ""
216216
217−#: searx/templates/default/preferences.html:72
218−msgid "Localization"
219−msgstr ""
220−
221−#: searx/templates/default/preferences.html:82
222−msgid "Yes"
223−msgstr ""
224−
225−#: searx/templates/default/preferences.html:82
226−msgid "No"
227−msgstr ""
228−
229217#: searx/templates/default/results.html:34
230218msgid "Answers"
231219msgstr ""
@@ -283,7 +271,7 @@ msgstr ""
283271msgid "Search results"
284272msgstr ""
285273
286−#: searx/templates/oscar/results.html:73
274+#: searx/templates/oscar/results.html:82
287275msgid "Links"
288276msgstr ""
289277
@@ -364,6 +352,14 @@ msgstr ""
364352msgid "cached"
365353msgstr ""
366354
355+#: searx/templates/oscar/result_templates/default.html:9
356+msgid "show media"
357+msgstr ""
358+
359+#: searx/templates/oscar/result_templates/default.html:9
360+msgid "hide media"
361+msgstr ""
362+
367363#: searx/templates/oscar/result_templates/images.html:21
368364msgid "Get image"
369365msgstr ""
@@ -396,6 +392,23 @@ msgstr ""
396392msgid "Leecher"
397393msgstr ""
398394
395+#: searx/templates/oscar/result_templates/videos.html:9
396+msgid "show video"
397+msgstr ""
398+
399+#: searx/templates/oscar/result_templates/videos.html:9
400+msgid "hide video"
401+msgstr ""
402+
403+msgid "Localization"
404+msgstr ""
405+
406+msgid "Yes"
407+msgstr ""
408+
409+msgid "No"
410+msgstr ""
411+
399412# categories - manually added
400413# TODO - automatically add
401414msgid "files"
@@ -407,15 +420,9 @@ msgstr "General"
407420msgid "music"
408421msgstr "Música"
409422
410−msgid "social media"
411−msgstr "Medios sociales"
412−
413423msgid "images"
414424msgstr "Imágenes"
415425
416−msgid "videos"
417−msgstr "Vídeos"
418−
419426msgid "it"
420427msgstr "TIC"
421428
searx/translations/fr/LC_MESSAGES/messages.mo

Binary file not shown.

searx/translations/fr/LC_MESSAGES/messages.po+55−40
@@ -1,17 +1,19 @@
1−# French translations for SEARX
2−# Copyright (C) 2014 Benjamin Sonntag, rike, Adam Tauber
3−# This file is distributed under CC0 License
1+# English translations for .
2+# Copyright (C) 2014 ORGANIZATION
3+# This file is distributed under the same license as the project.
44#
55# Translators:
66# Benjamin Sonntag <benjamin@sonntag.fr>, 2014
7+# Cqoicebordel <david.barouh@wanadoo.fr>, 2014
8+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
79# rike, 2014
810msgid ""
911msgstr ""
1012"Project-Id-Version: searx\n"
1113"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
12−"POT-Creation-Date: 2014-11-26 20:41+0100\n"
13−"PO-Revision-Date: 2014-09-07 21:24+0000\n"
14−"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
14+"POT-Creation-Date: 2015-01-05 20:54+0100\n"
15+"PO-Revision-Date: 2014-12-14 21:00+0000\n"
16+"Last-Translator: Cqoicebordel <david.barouh@wanadoo.fr>\n"
1517"Language-Team: French "
1618"(http://www.transifex.com/projects/p/searx/language/fr/)\n"
1719"Plural-Forms: nplurals=2; plural=(n > 1)\n"
@@ -20,31 +22,31 @@ msgstr ""
2022"Content-Transfer-Encoding: 8bit\n"
2123"Generated-By: Babel 1.3\n"
2224
23−#: searx/webapp.py:308
25+#: searx/webapp.py:263
2426msgid "{minutes} minute(s) ago"
2527msgstr "il y a {minutes} minute(s)"
2628
27−#: searx/webapp.py:310
29+#: searx/webapp.py:265
2830msgid "{hours} hour(s), {minutes} minute(s) ago"
2931msgstr "il y a {hours} heure(s), {minutes} minute(s)"
3032
31−#: searx/engines/__init__.py:177
33+#: searx/engines/__init__.py:179
3234msgid "Page loads (sec)"
3335msgstr "Chargement de la page (sec)"
3436
35−#: searx/engines/__init__.py:181
37+#: searx/engines/__init__.py:183
3638msgid "Number of results"
3739msgstr "Nombre de résultats"
3840
39−#: searx/engines/__init__.py:185
41+#: searx/engines/__init__.py:187
4042msgid "Scores"
4143msgstr "Score"
4244
43−#: searx/engines/__init__.py:189
45+#: searx/engines/__init__.py:191
4446msgid "Scores per result"
4547msgstr "Score par résultat"
4648
47−#: searx/engines/__init__.py:193
49+#: searx/engines/__init__.py:195
4850msgid "Errors"
4951msgstr "Erreurs"
5052
@@ -124,22 +126,22 @@ msgstr "Catégorie"
124126
125127#: searx/templates/courgette/preferences.html:72
126128#: searx/templates/courgette/preferences.html:83
127−#: searx/templates/default/preferences.html:73
128−#: searx/templates/default/preferences.html:85
129+#: searx/templates/default/preferences.html:72
130+#: searx/templates/default/preferences.html:83
129131#: searx/templates/oscar/preferences.html:118
130132msgid "Allow"
131133msgstr "Autoriser"
132134
133135#: searx/templates/courgette/preferences.html:72
134136#: searx/templates/courgette/preferences.html:84
135−#: searx/templates/default/preferences.html:73
136−#: searx/templates/default/preferences.html:86
137+#: searx/templates/default/preferences.html:72
138+#: searx/templates/default/preferences.html:84
137139#: searx/templates/oscar/preferences.html:117
138140msgid "Block"
139141msgstr "Bloquer"
140142
141143#: searx/templates/courgette/preferences.html:92
142−#: searx/templates/default/preferences.html:94
144+#: searx/templates/default/preferences.html:92
143145#: searx/templates/oscar/preferences.html:132
144146msgid ""
145147"These settings are stored in your cookies, this allows us not to store "
@@ -149,7 +151,7 @@ msgstr ""
149151" collecter vos données."
150152
151153#: searx/templates/courgette/preferences.html:94
152−#: searx/templates/default/preferences.html:96
154+#: searx/templates/default/preferences.html:94
153155#: searx/templates/oscar/preferences.html:134
154156msgid ""
155157"These cookies serve your sole convenience, we don't use these cookies to "
@@ -159,44 +161,44 @@ msgstr ""
159161"utilisons pas pour vous espionner."
160162
161163#: searx/templates/courgette/preferences.html:97
162−#: searx/templates/default/preferences.html:99
164+#: searx/templates/default/preferences.html:97
163165#: searx/templates/oscar/preferences.html:137
164166msgid "save"
165167msgstr "enregistrer"
166168
167169#: searx/templates/courgette/preferences.html:98
168−#: searx/templates/default/preferences.html:100
170+#: searx/templates/default/preferences.html:98
169171#: searx/templates/oscar/preferences.html:138
170172msgid "back"
171173msgstr "retour"
172174
173175#: searx/templates/courgette/results.html:12
174176#: searx/templates/default/results.html:12
175−#: searx/templates/oscar/results.html:78
177+#: searx/templates/oscar/results.html:87
176178msgid "Search URL"
177179msgstr "URL de recherche"
178180
179181#: searx/templates/courgette/results.html:16
180182#: searx/templates/default/results.html:16
181−#: searx/templates/oscar/results.html:83
183+#: searx/templates/oscar/results.html:92
182184msgid "Download results"
183185msgstr "Télécharger les résultats"
184186
185187#: searx/templates/courgette/results.html:34
186188#: searx/templates/default/results.html:42
187−#: searx/templates/oscar/results.html:58
189+#: searx/templates/oscar/results.html:67
188190msgid "Suggestions"
189191msgstr "Suggestions"
190192
191193#: searx/templates/courgette/results.html:62
192194#: searx/templates/default/results.html:78
193−#: searx/templates/oscar/results.html:37
195+#: searx/templates/oscar/results.html:41
194196msgid "previous page"
195197msgstr "page précédente"
196198
197199#: searx/templates/courgette/results.html:73
198200#: searx/templates/default/results.html:89
199−#: searx/templates/oscar/results.html:45
201+#: searx/templates/oscar/results.html:49
200202msgid "next page"
201203msgstr "page suivante"
202204
@@ -213,19 +215,7 @@ msgstr "Statistiques du moteur"
213215
214216#: searx/templates/default/categories.html:8
215217msgid "Click on the magnifier to perform search"
216−msgstr ""
217−
218−#: searx/templates/default/preferences.html:72
219−msgid "Localization"
220−msgstr ""
221−
222−#: searx/templates/default/preferences.html:82
223−msgid "Yes"
224−msgstr ""
225−
226−#: searx/templates/default/preferences.html:82
227−msgid "No"
228−msgstr ""
218+msgstr "Cliquez sur la loupe pour effectuer une recherche"
229219
230220#: searx/templates/default/results.html:34
231221msgid "Answers"
@@ -287,7 +277,7 @@ msgstr "Modifier l'affichage de searx"
287277msgid "Search results"
288278msgstr "Résultats de recherche"
289279
290−#: searx/templates/oscar/results.html:73
280+#: searx/templates/oscar/results.html:82
291281msgid "Links"
292282msgstr "Liens"
293283
@@ -372,6 +362,14 @@ msgstr "Il y a un problème."
372362msgid "cached"
373363msgstr "en cache"
374364
365+#: searx/templates/oscar/result_templates/default.html:9
366+msgid "show media"
367+msgstr "afficher le média"
368+
369+#: searx/templates/oscar/result_templates/default.html:9
370+msgid "hide media"
371+msgstr "cacher le media"
372+
375373#: searx/templates/oscar/result_templates/images.html:21
376374msgid "Get image"
377375msgstr "Voir l'image"
@@ -404,6 +402,23 @@ msgstr "Sources"
404402msgid "Leecher"
405403msgstr "Téléchargeurs"
406404
405+#: searx/templates/oscar/result_templates/videos.html:9
406+msgid "show video"
407+msgstr "afficher la vidéo"
408+
409+#: searx/templates/oscar/result_templates/videos.html:9
410+msgid "hide video"
411+msgstr "cacher la vidéo"
412+
413+msgid "Localization"
414+msgstr "Localisation"
415+
416+msgid "Yes"
417+msgstr "Oui"
418+
419+msgid "No"
420+msgstr "Non"
421+
407422# categories - manually added
408423# TODO - automatically add
409424msgid "files"
searx/translations/hu/LC_MESSAGES/messages.mo

Binary file not shown.

searx/translations/hu/LC_MESSAGES/messages.po+91−75
@@ -9,8 +9,8 @@ msgid ""
99msgstr ""
1010"Project-Id-Version: searx\n"
1111"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
12−"POT-Creation-Date: 2014-11-26 20:41+0100\n"
13−"PO-Revision-Date: 2014-09-07 21:30+0000\n"
12+"POT-Creation-Date: 2015-01-05 20:54+0100\n"
13+"PO-Revision-Date: 2014-12-22 16:11+0000\n"
1414"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
1515"Language-Team: Hungarian "
1616"(http://www.transifex.com/projects/p/searx/language/hu/)\n"
@@ -20,31 +20,31 @@ msgstr ""
2020"Content-Transfer-Encoding: 8bit\n"
2121"Generated-By: Babel 1.3\n"
2222
23−#: searx/webapp.py:308
23+#: searx/webapp.py:263
2424msgid "{minutes} minute(s) ago"
2525msgstr "{minutes} perce"
2626
27−#: searx/webapp.py:310
27+#: searx/webapp.py:265
2828msgid "{hours} hour(s), {minutes} minute(s) ago"
2929msgstr "{hours} óra, {minutes} perce"
3030
31−#: searx/engines/__init__.py:177
31+#: searx/engines/__init__.py:179
3232msgid "Page loads (sec)"
3333msgstr "Válaszidők (sec)"
3434
35−#: searx/engines/__init__.py:181
35+#: searx/engines/__init__.py:183
3636msgid "Number of results"
3737msgstr "Találatok száma"
3838
39−#: searx/engines/__init__.py:185
39+#: searx/engines/__init__.py:187
4040msgid "Scores"
4141msgstr "Pontszámok"
4242
43−#: searx/engines/__init__.py:189
43+#: searx/engines/__init__.py:191
4444msgid "Scores per result"
4545msgstr "Pontszámok találatonként"
4646
47−#: searx/engines/__init__.py:193
47+#: searx/engines/__init__.py:195
4848msgid "Errors"
4949msgstr "Hibák"
5050
@@ -93,19 +93,19 @@ msgstr "Felület nyelve"
9393#: searx/templates/default/preferences.html:36
9494#: searx/templates/oscar/preferences.html:53
9595msgid "Autocomplete"
96−msgstr ""
96+msgstr "Automatikus kiegészítés"
9797
9898#: searx/templates/courgette/preferences.html:47
9999#: searx/templates/default/preferences.html:47
100100#: searx/templates/oscar/preferences.html:66
101101msgid "Method"
102−msgstr ""
102+msgstr "Method"
103103
104104#: searx/templates/courgette/preferences.html:56
105105#: searx/templates/default/preferences.html:56
106106#: searx/templates/oscar/preferences.html:76
107107msgid "Themes"
108−msgstr ""
108+msgstr "Megjelenés"
109109
110110#: searx/templates/courgette/preferences.html:66
111111#: searx/templates/default/preferences.html:66
@@ -124,22 +124,22 @@ msgstr "Kategória"
124124
125125#: searx/templates/courgette/preferences.html:72
126126#: searx/templates/courgette/preferences.html:83
127−#: searx/templates/default/preferences.html:73
128−#: searx/templates/default/preferences.html:85
127+#: searx/templates/default/preferences.html:72
128+#: searx/templates/default/preferences.html:83
129129#: searx/templates/oscar/preferences.html:118
130130msgid "Allow"
131131msgstr "Engedélyezés"
132132
133133#: searx/templates/courgette/preferences.html:72
134134#: searx/templates/courgette/preferences.html:84
135−#: searx/templates/default/preferences.html:73
136−#: searx/templates/default/preferences.html:86
135+#: searx/templates/default/preferences.html:72
136+#: searx/templates/default/preferences.html:84
137137#: searx/templates/oscar/preferences.html:117
138138msgid "Block"
139139msgstr "Tiltás"
140140
141141#: searx/templates/courgette/preferences.html:92
142−#: searx/templates/default/preferences.html:94
142+#: searx/templates/default/preferences.html:92
143143#: searx/templates/oscar/preferences.html:132
144144msgid ""
145145"These settings are stored in your cookies, this allows us not to store "
@@ -147,7 +147,7 @@ msgid ""
147147msgstr "Ezek a beállítások csak a böngésző cookie-jaiban tárolódnak."
148148
149149#: searx/templates/courgette/preferences.html:94
150−#: searx/templates/default/preferences.html:96
150+#: searx/templates/default/preferences.html:94
151151#: searx/templates/oscar/preferences.html:134
152152msgid ""
153153"These cookies serve your sole convenience, we don't use these cookies to "
@@ -157,44 +157,44 @@ msgstr ""
157157"felhasználók követésére."
158158
159159#: searx/templates/courgette/preferences.html:97
160−#: searx/templates/default/preferences.html:99
160+#: searx/templates/default/preferences.html:97
161161#: searx/templates/oscar/preferences.html:137
162162msgid "save"
163163msgstr "mentés"
164164
165165#: searx/templates/courgette/preferences.html:98
166−#: searx/templates/default/preferences.html:100
166+#: searx/templates/default/preferences.html:98
167167#: searx/templates/oscar/preferences.html:138
168168msgid "back"
169169msgstr "vissza"
170170
171171#: searx/templates/courgette/results.html:12
172172#: searx/templates/default/results.html:12
173−#: searx/templates/oscar/results.html:78
173+#: searx/templates/oscar/results.html:87
174174msgid "Search URL"
175175msgstr "Keresési URL"
176176
177177#: searx/templates/courgette/results.html:16
178178#: searx/templates/default/results.html:16
179−#: searx/templates/oscar/results.html:83
179+#: searx/templates/oscar/results.html:92
180180msgid "Download results"
181181msgstr "Találatok letöltése"
182182
183183#: searx/templates/courgette/results.html:34
184184#: searx/templates/default/results.html:42
185−#: searx/templates/oscar/results.html:58
185+#: searx/templates/oscar/results.html:67
186186msgid "Suggestions"
187187msgstr "Javaslatok"
188188
189189#: searx/templates/courgette/results.html:62
190190#: searx/templates/default/results.html:78
191−#: searx/templates/oscar/results.html:37
191+#: searx/templates/oscar/results.html:41
192192msgid "previous page"
193193msgstr "előző oldal"
194194
195195#: searx/templates/courgette/results.html:73
196196#: searx/templates/default/results.html:89
197−#: searx/templates/oscar/results.html:45
197+#: searx/templates/oscar/results.html:49
198198msgid "next page"
199199msgstr "következő oldal"
200200
@@ -211,61 +211,49 @@ msgstr "Kereső statisztikák"
211211
212212#: searx/templates/default/categories.html:8
213213msgid "Click on the magnifier to perform search"
214−msgstr ""
215−
216−#: searx/templates/default/preferences.html:72
217−msgid "Localization"
218−msgstr ""
219−
220−#: searx/templates/default/preferences.html:82
221−msgid "Yes"
222−msgstr ""
223−
224−#: searx/templates/default/preferences.html:82
225−msgid "No"
226−msgstr ""
214+msgstr "A nagyítóra kattintva indítható a keresés"
227215
228216#: searx/templates/default/results.html:34
229217msgid "Answers"
230−msgstr ""
218+msgstr "Válaszok"
231219
232220#: searx/templates/oscar/base.html:69
233221msgid "Powered by"
234−msgstr ""
222+msgstr "Az oldalt kiszolgálja: "
235223
236224#: searx/templates/oscar/base.html:69
237225msgid "a privacy-respecting, hackable metasearch engine"
238−msgstr ""
226+msgstr "egy privátszféra tisztelő, könnyen módosítható metakereső"
239227
240228#: searx/templates/oscar/navbar.html:6
241229msgid "Toggle navigation"
242−msgstr ""
230+msgstr "Navigáció megjelenítés"
243231
244232#: searx/templates/oscar/navbar.html:15
245233msgid "home"
246−msgstr ""
234+msgstr "főoldal"
247235
248236#: searx/templates/oscar/preferences.html:11
249237#: searx/templates/oscar/preferences.html:17
250238msgid "General"
251−msgstr ""
239+msgstr "Általános"
252240
253241#: searx/templates/oscar/preferences.html:12
254242#: searx/templates/oscar/preferences.html:99
255243msgid "Engines"
256−msgstr ""
244+msgstr "Kereső motorok"
257245
258246#: searx/templates/oscar/preferences.html:39
259247msgid "What language do you prefer for search?"
260−msgstr ""
248+msgstr "Preferált keresési nyelv"
261249
262250#: searx/templates/oscar/preferences.html:50
263251msgid "Change the language of the layout"
264−msgstr ""
252+msgstr "Felület nyelve"
265253
266254#: searx/templates/oscar/preferences.html:63
267255msgid "Find stuff as you type"
268−msgstr ""
256+msgstr "Autómatikus kereső kifejezés kiegészítés"
269257
270258#: searx/templates/oscar/preferences.html:73
271259msgid ""
@@ -273,128 +261,156 @@ msgid ""
273261"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
274262" rel=\"external\">learn more about request methods</a>"
275263msgstr ""
264+"Keresés metódusa (<a "
265+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
266+" rel=\"external\">bővebben</a>)"
276267
277268#: searx/templates/oscar/preferences.html:84
278269msgid "Change searx layout"
279−msgstr ""
270+msgstr "Megjelenés"
280271
281272#: searx/templates/oscar/results.html:6
282273msgid "Search results"
283−msgstr ""
274+msgstr "Keresési eredmények"
284275
285−#: searx/templates/oscar/results.html:73
276+#: searx/templates/oscar/results.html:82
286277msgid "Links"
287−msgstr ""
278+msgstr "Linkek"
288279
289280#: searx/templates/oscar/search.html:6 searx/templates/oscar/search_full.html:7
290281msgid "Start search"
291−msgstr ""
282+msgstr "Keresés indítása"
292283
293284#: searx/templates/oscar/search_full.html:11
294285msgid "Show search filters"
295−msgstr ""
286+msgstr "Keresési szűrők megjelenítése"
296287
297288#: searx/templates/oscar/search_full.html:11
298289msgid "Hide search filters"
299−msgstr ""
290+msgstr "Keresési szűrők elrejtése"
300291
301292#: searx/templates/oscar/stats.html:2
302293msgid "stats"
303−msgstr ""
294+msgstr "statisztikák"
304295
305296#: searx/templates/oscar/messages/first_time.html:4
306297#: searx/templates/oscar/messages/no_results.html:5
307298#: searx/templates/oscar/messages/save_settings_successfull.html:5
308299#: searx/templates/oscar/messages/unknow_error.html:5
309300msgid "Close"
310−msgstr ""
301+msgstr "Bezár"
311302
312303#: searx/templates/oscar/messages/first_time.html:6
313304#: searx/templates/oscar/messages/no_data_available.html:3
314305msgid "Heads up!"
315−msgstr ""
306+msgstr "Figyelem!"
316307
317308#: searx/templates/oscar/messages/first_time.html:7
318309msgid "It look like you are using searx first time."
319−msgstr ""
310+msgstr "Úgy tűnik először használod a keresőt."
320311
321312#: searx/templates/oscar/messages/js_disabled.html:2
322313msgid "Warning!"
323−msgstr ""
314+msgstr "Figyelem!"
324315
325316#: searx/templates/oscar/messages/js_disabled.html:3
326317msgid "Please enable JavaScript to use full functionality of this site."
327−msgstr ""
318+msgstr "Engedélyezze a javascript-et a teljes funkcionalitás használathoz"
328319
329320#: searx/templates/oscar/messages/no_data_available.html:4
330321msgid "There is currently no data available. "
331−msgstr ""
322+msgstr "Nincs megjeleníthető adat."
332323
333324#: searx/templates/oscar/messages/no_results.html:7
334325msgid "Sorry!"
335−msgstr ""
326+msgstr "Elnézést!"
336327
337328#: searx/templates/oscar/messages/no_results.html:8
338329msgid ""
339330"we didn't find any results. Please use another query or search in more "
340331"categories."
341−msgstr ""
332+msgstr "Nincs megjeleníthető találat."
342333
343334#: searx/templates/oscar/messages/save_settings_successfull.html:7
344335msgid "Well done!"
345−msgstr ""
336+msgstr "Siker!"
346337
347338#: searx/templates/oscar/messages/save_settings_successfull.html:8
348339msgid "Settings saved successfully."
349−msgstr ""
340+msgstr "Beállítások mentve"
350341
351342#: searx/templates/oscar/messages/unknow_error.html:7
352343msgid "Oh snap!"
353−msgstr ""
344+msgstr "Oh!"
354345
355346#: searx/templates/oscar/messages/unknow_error.html:8
356347msgid "Something went wrong."
357−msgstr ""
348+msgstr "Hiba történt"
358349
359350#: searx/templates/oscar/result_templates/default.html:6
360351#: searx/templates/oscar/result_templates/map.html:7
361352#: searx/templates/oscar/result_templates/torrent.html:6
362353#: searx/templates/oscar/result_templates/videos.html:6
363354msgid "cached"
355+msgstr "tárolt"
356+
357+#: searx/templates/oscar/result_templates/default.html:9
358+msgid "show media"
359+msgstr ""
360+
361+#: searx/templates/oscar/result_templates/default.html:9
362+msgid "hide media"
364363msgstr ""
365364
366365#: searx/templates/oscar/result_templates/images.html:21
367366msgid "Get image"
368−msgstr ""
367+msgstr "Kép megjelenítése"
369368
370369#: searx/templates/oscar/result_templates/images.html:22
371370msgid "View source"
372−msgstr ""
371+msgstr "Forrás megtekintése"
373372
374373#: searx/templates/oscar/result_templates/map.html:10
375374msgid "show map"
376−msgstr ""
375+msgstr "Térkép"
377376
378377#: searx/templates/oscar/result_templates/map.html:10
379378msgid "hide map"
380−msgstr ""
379+msgstr "Térkép elrejtése"
381380
382381#: searx/templates/oscar/result_templates/map.html:14
383382msgid "show details"
384−msgstr ""
383+msgstr "Részletek"
385384
386385#: searx/templates/oscar/result_templates/map.html:14
387386msgid "hide details"
388−msgstr ""
387+msgstr "Részletek elrejtése"
389388
390389#: searx/templates/oscar/result_templates/torrent.html:8
391390msgid "Seeder"
392−msgstr ""
391+msgstr "Seeder"
393392
394393#: searx/templates/oscar/result_templates/torrent.html:8
395394msgid "Leecher"
395+msgstr "Leecher"
396+
397+#: searx/templates/oscar/result_templates/videos.html:9
398+msgid "show video"
396399msgstr ""
397400
401+#: searx/templates/oscar/result_templates/videos.html:9
402+msgid "hide video"
403+msgstr ""
404+
405+msgid "Localization"
406+msgstr "Nyelv"
407+
408+msgid "Yes"
409+msgstr "Igen"
410+
411+msgid "No"
412+msgstr "Nem"
413+
398414# categories - manually added
399415# TODO - automatically add
400416msgid "files"
searx/translations/it/LC_MESSAGES/messages.mo

Binary file not shown.

searx/translations/it/LC_MESSAGES/messages.po+52−45
@@ -8,9 +8,9 @@ msgid ""
88msgstr ""
99"Project-Id-Version: searx\n"
1010"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
11−"POT-Creation-Date: 2014-11-26 20:41+0100\n"
12−"PO-Revision-Date: 2014-09-08 08:19+0000\n"
13−"Last-Translator: dp <d.pitrolo@gmx.com>\n"
11+"POT-Creation-Date: 2015-01-05 20:54+0100\n"
12+"PO-Revision-Date: 2014-11-26 20:38+0000\n"
13+"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
1414"Language-Team: Italian "
1515"(http://www.transifex.com/projects/p/searx/language/it/)\n"
1616"Plural-Forms: nplurals=2; plural=(n != 1)\n"
@@ -19,31 +19,31 @@ msgstr ""
1919"Content-Transfer-Encoding: 8bit\n"
2020"Generated-By: Babel 1.3\n"
2121
22−#: searx/webapp.py:308
22+#: searx/webapp.py:263
2323msgid "{minutes} minute(s) ago"
2424msgstr "di {minutes} minuti fa"
2525
26−#: searx/webapp.py:310
26+#: searx/webapp.py:265
2727msgid "{hours} hour(s), {minutes} minute(s) ago"
2828msgstr "di {ore} h e {minutes} minuti fa"
2929
30−#: searx/engines/__init__.py:177
30+#: searx/engines/__init__.py:179
3131msgid "Page loads (sec)"
3232msgstr " Caricamento della pagina (secondi)"
3333
34−#: searx/engines/__init__.py:181
34+#: searx/engines/__init__.py:183
3535msgid "Number of results"
3636msgstr "Risultati ottenuti"
3737
38−#: searx/engines/__init__.py:185
38+#: searx/engines/__init__.py:187
3939msgid "Scores"
4040msgstr "Punteggio"
4141
42−#: searx/engines/__init__.py:189
42+#: searx/engines/__init__.py:191
4343msgid "Scores per result"
4444msgstr "Punteggio per risultato"
4545
46−#: searx/engines/__init__.py:193
46+#: searx/engines/__init__.py:195
4747msgid "Errors"
4848msgstr "Errori"
4949
@@ -92,19 +92,19 @@ msgstr "Linguaggio dell'interfaccia"
9292#: searx/templates/default/preferences.html:36
9393#: searx/templates/oscar/preferences.html:53
9494msgid "Autocomplete"
95−msgstr ""
95+msgstr "Completamento automatico"
9696
9797#: searx/templates/courgette/preferences.html:47
9898#: searx/templates/default/preferences.html:47
9999#: searx/templates/oscar/preferences.html:66
100100msgid "Method"
101−msgstr ""
101+msgstr "Metodo"
102102
103103#: searx/templates/courgette/preferences.html:56
104104#: searx/templates/default/preferences.html:56
105105#: searx/templates/oscar/preferences.html:76
106106msgid "Themes"
107−msgstr ""
107+msgstr "Grafica"
108108
109109#: searx/templates/courgette/preferences.html:66
110110#: searx/templates/default/preferences.html:66
@@ -123,22 +123,22 @@ msgstr "Categoria"
123123
124124#: searx/templates/courgette/preferences.html:72
125125#: searx/templates/courgette/preferences.html:83
126−#: searx/templates/default/preferences.html:73
127−#: searx/templates/default/preferences.html:85
126+#: searx/templates/default/preferences.html:72
127+#: searx/templates/default/preferences.html:83
128128#: searx/templates/oscar/preferences.html:118
129129msgid "Allow"
130130msgstr "Autorizza"
131131
132132#: searx/templates/courgette/preferences.html:72
133133#: searx/templates/courgette/preferences.html:84
134−#: searx/templates/default/preferences.html:73
135−#: searx/templates/default/preferences.html:86
134+#: searx/templates/default/preferences.html:72
135+#: searx/templates/default/preferences.html:84
136136#: searx/templates/oscar/preferences.html:117
137137msgid "Block"
138138msgstr "Blocca"
139139
140140#: searx/templates/courgette/preferences.html:92
141−#: searx/templates/default/preferences.html:94
141+#: searx/templates/default/preferences.html:92
142142#: searx/templates/oscar/preferences.html:132
143143msgid ""
144144"These settings are stored in your cookies, this allows us not to store "
@@ -148,7 +148,7 @@ msgstr ""
148148"conservare dati su di te."
149149
150150#: searx/templates/courgette/preferences.html:94
151−#: searx/templates/default/preferences.html:96
151+#: searx/templates/default/preferences.html:94
152152#: searx/templates/oscar/preferences.html:134
153153msgid ""
154154"These cookies serve your sole convenience, we don't use these cookies to "
@@ -158,44 +158,44 @@ msgstr ""
158158" sorvegliarti."
159159
160160#: searx/templates/courgette/preferences.html:97
161−#: searx/templates/default/preferences.html:99
161+#: searx/templates/default/preferences.html:97
162162#: searx/templates/oscar/preferences.html:137
163163msgid "save"
164164msgstr "salva"
165165
166166#: searx/templates/courgette/preferences.html:98
167−#: searx/templates/default/preferences.html:100
167+#: searx/templates/default/preferences.html:98
168168#: searx/templates/oscar/preferences.html:138
169169msgid "back"
170170msgstr "indietro"
171171
172172#: searx/templates/courgette/results.html:12
173173#: searx/templates/default/results.html:12
174−#: searx/templates/oscar/results.html:78
174+#: searx/templates/oscar/results.html:87
175175msgid "Search URL"
176176msgstr "URL della ricerca"
177177
178178#: searx/templates/courgette/results.html:16
179179#: searx/templates/default/results.html:16
180−#: searx/templates/oscar/results.html:83
180+#: searx/templates/oscar/results.html:92
181181msgid "Download results"
182182msgstr "Scarica i risultati"
183183
184184#: searx/templates/courgette/results.html:34
185185#: searx/templates/default/results.html:42
186−#: searx/templates/oscar/results.html:58
186+#: searx/templates/oscar/results.html:67
187187msgid "Suggestions"
188188msgstr "Suggerimenti"
189189
190190#: searx/templates/courgette/results.html:62
191191#: searx/templates/default/results.html:78
192−#: searx/templates/oscar/results.html:37
192+#: searx/templates/oscar/results.html:41
193193msgid "previous page"
194194msgstr "pagina precedente"
195195
196196#: searx/templates/courgette/results.html:73
197197#: searx/templates/default/results.html:89
198−#: searx/templates/oscar/results.html:45
198+#: searx/templates/oscar/results.html:49
199199msgid "next page"
200200msgstr "pagina successiva"
201201
@@ -214,18 +214,6 @@ msgstr "Statistiche dei motori"
214214msgid "Click on the magnifier to perform search"
215215msgstr ""
216216
217−#: searx/templates/default/preferences.html:72
218−msgid "Localization"
219−msgstr ""
220−
221−#: searx/templates/default/preferences.html:82
222−msgid "Yes"
223−msgstr ""
224−
225−#: searx/templates/default/preferences.html:82
226−msgid "No"
227−msgstr ""
228−
229217#: searx/templates/default/results.html:34
230218msgid "Answers"
231219msgstr ""
@@ -283,7 +271,7 @@ msgstr ""
283271msgid "Search results"
284272msgstr ""
285273
286−#: searx/templates/oscar/results.html:73
274+#: searx/templates/oscar/results.html:82
287275msgid "Links"
288276msgstr ""
289277
@@ -364,6 +352,14 @@ msgstr ""
364352msgid "cached"
365353msgstr ""
366354
355+#: searx/templates/oscar/result_templates/default.html:9
356+msgid "show media"
357+msgstr ""
358+
359+#: searx/templates/oscar/result_templates/default.html:9
360+msgid "hide media"
361+msgstr ""
362+
367363#: searx/templates/oscar/result_templates/images.html:21
368364msgid "Get image"
369365msgstr ""
@@ -396,6 +392,23 @@ msgstr ""
396392msgid "Leecher"
397393msgstr ""
398394
395+#: searx/templates/oscar/result_templates/videos.html:9
396+msgid "show video"
397+msgstr ""
398+
399+#: searx/templates/oscar/result_templates/videos.html:9
400+msgid "hide video"
401+msgstr ""
402+
403+msgid "Localization"
404+msgstr ""
405+
406+msgid "Yes"
407+msgstr ""
408+
409+msgid "No"
410+msgstr ""
411+
399412# categories - manually added
400413# TODO - automatically add
401414msgid "files"
@@ -407,15 +420,9 @@ msgstr "generale"
407420msgid "music"
408421msgstr "musica"
409422
410−msgid "social media"
411−msgstr "social media"
412−
413423msgid "images"
414424msgstr "immagini"
415425
416−msgid "videos"
417−msgstr "video"
418−
419426msgid "it"
420427msgstr "it"
421428
searx/translations/ja/LC_MESSAGES/messages.mo

Binary file not shown.

searx/translations/ja/LC_MESSAGES/messages.po+70−60
@@ -1,49 +1,52 @@
1−# Japanese translations for PROJECT.
1+# English translations for .
22# Copyright (C) 2014 ORGANIZATION
3−# This file is distributed under the same license as the PROJECT project.
4−# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
3+# This file is distributed under the same license as the project.
54#
5+# Translators:
6+# pointhi, 2014
7+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
68msgid ""
79msgstr ""
8−"Project-Id-Version: PROJECT VERSION\n"
10+"Project-Id-Version: searx\n"
911"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
10−"POT-Creation-Date: 2014-11-26 20:41+0100\n"
11−"PO-Revision-Date: 2014-10-05 16:38+0200\n"
12−"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13−"Language-Team: ja <LL@li.org>\n"
12+"POT-Creation-Date: 2015-01-05 20:54+0100\n"
13+"PO-Revision-Date: 2014-11-26 20:38+0000\n"
14+"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
15+"Language-Team: Japanese "
16+"(http://www.transifex.com/projects/p/searx/language/ja/)\n"
1417"Plural-Forms: nplurals=1; plural=0\n"
1518"MIME-Version: 1.0\n"
1619"Content-Type: text/plain; charset=utf-8\n"
1720"Content-Transfer-Encoding: 8bit\n"
1821"Generated-By: Babel 1.3\n"
1922
20−#: searx/webapp.py:308
23+#: searx/webapp.py:263
2124msgid "{minutes} minute(s) ago"
22−msgstr ""
25+msgstr "{minutes}分前"
2326
24−#: searx/webapp.py:310
27+#: searx/webapp.py:265
2528msgid "{hours} hour(s), {minutes} minute(s) ago"
26−msgstr ""
29+msgstr "{hours}時間と{minutes}分前"
2730
28−#: searx/engines/__init__.py:177
31+#: searx/engines/__init__.py:179
2932msgid "Page loads (sec)"
3033msgstr ""
3134
32−#: searx/engines/__init__.py:181
35+#: searx/engines/__init__.py:183
3336msgid "Number of results"
3437msgstr ""
3538
36−#: searx/engines/__init__.py:185
39+#: searx/engines/__init__.py:187
3740msgid "Scores"
3841msgstr ""
3942
40−#: searx/engines/__init__.py:189
43+#: searx/engines/__init__.py:191
4144msgid "Scores per result"
4245msgstr ""
4346
44−#: searx/engines/__init__.py:193
47+#: searx/engines/__init__.py:195
4548msgid "Errors"
46−msgstr ""
49+msgstr "エラー"
4750
4851#: searx/templates/courgette/index.html:8 searx/templates/default/index.html:7
4952#: searx/templates/oscar/about.html:3 searx/templates/oscar/navbar.html:16
@@ -72,7 +75,7 @@ msgstr ""
7275#: searx/templates/default/preferences.html:15
7376#: searx/templates/oscar/preferences.html:30
7477msgid "Search language"
75−msgstr ""
78+msgstr "検索の言語"
7679
7780#: searx/templates/courgette/preferences.html:18
7881#: searx/templates/default/preferences.html:18
@@ -84,7 +87,7 @@ msgstr ""
8487#: searx/templates/default/preferences.html:26
8588#: searx/templates/oscar/preferences.html:42
8689msgid "Interface language"
87−msgstr ""
90+msgstr "界面の言語"
8891
8992#: searx/templates/courgette/preferences.html:36
9093#: searx/templates/default/preferences.html:36
@@ -117,26 +120,26 @@ msgstr ""
117120#: searx/templates/courgette/preferences.html:71
118121#: searx/templates/default/preferences.html:71
119122msgid "Category"
120−msgstr ""
123+msgstr "カテゴリー"
121124
122125#: searx/templates/courgette/preferences.html:72
123126#: searx/templates/courgette/preferences.html:83
124−#: searx/templates/default/preferences.html:73
125−#: searx/templates/default/preferences.html:85
127+#: searx/templates/default/preferences.html:72
128+#: searx/templates/default/preferences.html:83
126129#: searx/templates/oscar/preferences.html:118
127130msgid "Allow"
128131msgstr ""
129132
130133#: searx/templates/courgette/preferences.html:72
131134#: searx/templates/courgette/preferences.html:84
132−#: searx/templates/default/preferences.html:73
133−#: searx/templates/default/preferences.html:86
135+#: searx/templates/default/preferences.html:72
136+#: searx/templates/default/preferences.html:84
134137#: searx/templates/oscar/preferences.html:117
135138msgid "Block"
136139msgstr ""
137140
138141#: searx/templates/courgette/preferences.html:92
139−#: searx/templates/default/preferences.html:94
142+#: searx/templates/default/preferences.html:92
140143#: searx/templates/oscar/preferences.html:132
141144msgid ""
142145"These settings are stored in your cookies, this allows us not to store "
@@ -144,7 +147,7 @@ msgid ""
144147msgstr ""
145148
146149#: searx/templates/courgette/preferences.html:94
147−#: searx/templates/default/preferences.html:96
150+#: searx/templates/default/preferences.html:94
148151#: searx/templates/oscar/preferences.html:134
149152msgid ""
150153"These cookies serve your sole convenience, we don't use these cookies to "
@@ -152,44 +155,44 @@ msgid ""
152155msgstr ""
153156
154157#: searx/templates/courgette/preferences.html:97
155−#: searx/templates/default/preferences.html:99
158+#: searx/templates/default/preferences.html:97
156159#: searx/templates/oscar/preferences.html:137
157160msgid "save"
158−msgstr ""
161+msgstr "保存"
159162
160163#: searx/templates/courgette/preferences.html:98
161−#: searx/templates/default/preferences.html:100
164+#: searx/templates/default/preferences.html:98
162165#: searx/templates/oscar/preferences.html:138
163166msgid "back"
164−msgstr ""
167+msgstr "バック"
165168
166169#: searx/templates/courgette/results.html:12
167170#: searx/templates/default/results.html:12
168−#: searx/templates/oscar/results.html:78
171+#: searx/templates/oscar/results.html:87
169172msgid "Search URL"
170173msgstr ""
171174
172175#: searx/templates/courgette/results.html:16
173176#: searx/templates/default/results.html:16
174−#: searx/templates/oscar/results.html:83
177+#: searx/templates/oscar/results.html:92
175178msgid "Download results"
176−msgstr ""
179+msgstr "ダウンロードの結果"
177180
178181#: searx/templates/courgette/results.html:34
179182#: searx/templates/default/results.html:42
180−#: searx/templates/oscar/results.html:58
183+#: searx/templates/oscar/results.html:67
181184msgid "Suggestions"
182185msgstr "提案"
183186
184187#: searx/templates/courgette/results.html:62
185188#: searx/templates/default/results.html:78
186−#: searx/templates/oscar/results.html:37
189+#: searx/templates/oscar/results.html:41
187190msgid "previous page"
188191msgstr "前のページ"
189192
190193#: searx/templates/courgette/results.html:73
191194#: searx/templates/default/results.html:89
192−#: searx/templates/oscar/results.html:45
195+#: searx/templates/oscar/results.html:49
193196msgid "next page"
194197msgstr "次のページ"
195198
@@ -208,18 +211,6 @@ msgstr ""
208211msgid "Click on the magnifier to perform search"
209212msgstr ""
210213
211−#: searx/templates/default/preferences.html:72
212−msgid "Localization"
213−msgstr ""
214−
215−#: searx/templates/default/preferences.html:82
216−msgid "Yes"
217−msgstr ""
218−
219−#: searx/templates/default/preferences.html:82
220−msgid "No"
221−msgstr ""
222−
223214#: searx/templates/default/results.html:34
224215msgid "Answers"
225216msgstr ""
@@ -238,7 +229,7 @@ msgstr ""
238229
239230#: searx/templates/oscar/navbar.html:15
240231msgid "home"
241−msgstr ""
232+msgstr "スタートページ"
242233
243234#: searx/templates/oscar/preferences.html:11
244235#: searx/templates/oscar/preferences.html:17
@@ -277,7 +268,7 @@ msgstr ""
277268msgid "Search results"
278269msgstr ""
279270
280−#: searx/templates/oscar/results.html:73
271+#: searx/templates/oscar/results.html:82
281272msgid "Links"
282273msgstr ""
283274
@@ -358,6 +349,14 @@ msgstr ""
358349msgid "cached"
359350msgstr ""
360351
352+#: searx/templates/oscar/result_templates/default.html:9
353+msgid "show media"
354+msgstr ""
355+
356+#: searx/templates/oscar/result_templates/default.html:9
357+msgid "hide media"
358+msgstr ""
359+
361360#: searx/templates/oscar/result_templates/images.html:21
362361msgid "Get image"
363362msgstr ""
@@ -390,6 +389,23 @@ msgstr ""
390389msgid "Leecher"
391390msgstr ""
392391
392+#: searx/templates/oscar/result_templates/videos.html:9
393+msgid "show video"
394+msgstr ""
395+
396+#: searx/templates/oscar/result_templates/videos.html:9
397+msgid "hide video"
398+msgstr ""
399+
400+msgid "Localization"
401+msgstr ""
402+
403+msgid "Yes"
404+msgstr ""
405+
406+msgid "No"
407+msgstr ""
408+
393409# categories - manually added
394410# TODO - automatically add
395411msgid "files"
@@ -398,24 +414,18 @@ msgstr "ファイル"
398414msgid "general"
399415msgstr "ウェブ"
400416
401−msgid "map"
402−msgstr "地図"
403−
404417msgid "music"
405418msgstr "音楽"
406419
407−msgid "social media"
408−msgstr "ソーシャルメディア"
409−
410420msgid "images"
411421msgstr "画像"
412422
413−msgid "videos"
414−msgstr "動画"
415−
416423msgid "it"
417424msgstr "情報技術"
418425
419426msgid "news"
420427msgstr "ニュース"
421428
429+msgid "map"
430+msgstr "地図"
431+
searx/translations/nl/LC_MESSAGES/messages.mo

Binary file not shown.

searx/translations/nl/LC_MESSAGES/messages.po+92−74
@@ -8,8 +8,8 @@ msgid ""
88msgstr ""
99"Project-Id-Version: searx\n"
1010"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
11−"POT-Creation-Date: 2014-11-26 20:41+0100\n"
12−"PO-Revision-Date: 2014-09-09 15:33+0000\n"
11+"POT-Creation-Date: 2015-01-05 20:54+0100\n"
12+"PO-Revision-Date: 2014-12-11 13:50+0000\n"
1313"Last-Translator: André Koot <meneer@tken.net>\n"
1414"Language-Team: Dutch "
1515"(http://www.transifex.com/projects/p/searx/language/nl/)\n"
@@ -19,31 +19,31 @@ msgstr ""
1919"Content-Transfer-Encoding: 8bit\n"
2020"Generated-By: Babel 1.3\n"
2121
22−#: searx/webapp.py:308
22+#: searx/webapp.py:263
2323msgid "{minutes} minute(s) ago"
2424msgstr "{minutes} min geleden"
2525
26−#: searx/webapp.py:310
26+#: searx/webapp.py:265
2727msgid "{hours} hour(s), {minutes} minute(s) ago"
2828msgstr "{hours} uur, {minutes} min geleden"
2929
30−#: searx/engines/__init__.py:177
30+#: searx/engines/__init__.py:179
3131msgid "Page loads (sec)"
3232msgstr "Pagina laadt (sec)"
3333
34−#: searx/engines/__init__.py:181
34+#: searx/engines/__init__.py:183
3535msgid "Number of results"
3636msgstr "Aantal zoekresultaten"
3737
38−#: searx/engines/__init__.py:185
38+#: searx/engines/__init__.py:187
3939msgid "Scores"
4040msgstr "Scores"
4141
42−#: searx/engines/__init__.py:189
42+#: searx/engines/__init__.py:191
4343msgid "Scores per result"
4444msgstr "Scores per zoekresultaat"
4545
46−#: searx/engines/__init__.py:193
46+#: searx/engines/__init__.py:195
4747msgid "Errors"
4848msgstr "Fouten"
4949
@@ -92,19 +92,19 @@ msgstr "Interfacetaal"
9292#: searx/templates/default/preferences.html:36
9393#: searx/templates/oscar/preferences.html:53
9494msgid "Autocomplete"
95−msgstr ""
95+msgstr "Auto-aanvullen"
9696
9797#: searx/templates/courgette/preferences.html:47
9898#: searx/templates/default/preferences.html:47
9999#: searx/templates/oscar/preferences.html:66
100100msgid "Method"
101−msgstr ""
101+msgstr "Methode"
102102
103103#: searx/templates/courgette/preferences.html:56
104104#: searx/templates/default/preferences.html:56
105105#: searx/templates/oscar/preferences.html:76
106106msgid "Themes"
107−msgstr ""
107+msgstr "Thema's"
108108
109109#: searx/templates/courgette/preferences.html:66
110110#: searx/templates/default/preferences.html:66
@@ -123,22 +123,22 @@ msgstr "Categorie"
123123
124124#: searx/templates/courgette/preferences.html:72
125125#: searx/templates/courgette/preferences.html:83
126−#: searx/templates/default/preferences.html:73
127−#: searx/templates/default/preferences.html:85
126+#: searx/templates/default/preferences.html:72
127+#: searx/templates/default/preferences.html:83
128128#: searx/templates/oscar/preferences.html:118
129129msgid "Allow"
130130msgstr "Toestaan"
131131
132132#: searx/templates/courgette/preferences.html:72
133133#: searx/templates/courgette/preferences.html:84
134−#: searx/templates/default/preferences.html:73
135−#: searx/templates/default/preferences.html:86
134+#: searx/templates/default/preferences.html:72
135+#: searx/templates/default/preferences.html:84
136136#: searx/templates/oscar/preferences.html:117
137137msgid "Block"
138138msgstr "Blokkeren"
139139
140140#: searx/templates/courgette/preferences.html:92
141−#: searx/templates/default/preferences.html:94
141+#: searx/templates/default/preferences.html:92
142142#: searx/templates/oscar/preferences.html:132
143143msgid ""
144144"These settings are stored in your cookies, this allows us not to store "
@@ -148,7 +148,7 @@ msgstr ""
148148" over jou te bewaren."
149149
150150#: searx/templates/courgette/preferences.html:94
151−#: searx/templates/default/preferences.html:96
151+#: searx/templates/default/preferences.html:94
152152#: searx/templates/oscar/preferences.html:134
153153msgid ""
154154"These cookies serve your sole convenience, we don't use these cookies to "
@@ -158,44 +158,44 @@ msgstr ""
158158"niet om je te volgen."
159159
160160#: searx/templates/courgette/preferences.html:97
161−#: searx/templates/default/preferences.html:99
161+#: searx/templates/default/preferences.html:97
162162#: searx/templates/oscar/preferences.html:137
163163msgid "save"
164164msgstr "bewaren"
165165
166166#: searx/templates/courgette/preferences.html:98
167−#: searx/templates/default/preferences.html:100
167+#: searx/templates/default/preferences.html:98
168168#: searx/templates/oscar/preferences.html:138
169169msgid "back"
170170msgstr "terug"
171171
172172#: searx/templates/courgette/results.html:12
173173#: searx/templates/default/results.html:12
174−#: searx/templates/oscar/results.html:78
174+#: searx/templates/oscar/results.html:87
175175msgid "Search URL"
176176msgstr "Zoek URL"
177177
178178#: searx/templates/courgette/results.html:16
179179#: searx/templates/default/results.html:16
180−#: searx/templates/oscar/results.html:83
180+#: searx/templates/oscar/results.html:92
181181msgid "Download results"
182182msgstr "Downloaden zoekresultaten"
183183
184184#: searx/templates/courgette/results.html:34
185185#: searx/templates/default/results.html:42
186−#: searx/templates/oscar/results.html:58
186+#: searx/templates/oscar/results.html:67
187187msgid "Suggestions"
188188msgstr "Suggesties"
189189
190190#: searx/templates/courgette/results.html:62
191191#: searx/templates/default/results.html:78
192−#: searx/templates/oscar/results.html:37
192+#: searx/templates/oscar/results.html:41
193193msgid "previous page"
194194msgstr "vorige pagina"
195195
196196#: searx/templates/courgette/results.html:73
197197#: searx/templates/default/results.html:89
198−#: searx/templates/oscar/results.html:45
198+#: searx/templates/oscar/results.html:49
199199msgid "next page"
200200msgstr "volgende pagina"
201201
@@ -212,61 +212,49 @@ msgstr "Zoekmachinestatistieken"
212212
213213#: searx/templates/default/categories.html:8
214214msgid "Click on the magnifier to perform search"
215−msgstr ""
216−
217−#: searx/templates/default/preferences.html:72
218−msgid "Localization"
219−msgstr ""
220−
221−#: searx/templates/default/preferences.html:82
222−msgid "Yes"
223−msgstr ""
224−
225−#: searx/templates/default/preferences.html:82
226−msgid "No"
227−msgstr ""
215+msgstr "Klik op het vergrootglas om te zoeken"
228216
229217#: searx/templates/default/results.html:34
230218msgid "Answers"
231−msgstr ""
219+msgstr "Antwoorden"
232220
233221#: searx/templates/oscar/base.html:69
234222msgid "Powered by"
235−msgstr ""
223+msgstr "Powered by"
236224
237225#: searx/templates/oscar/base.html:69
238226msgid "a privacy-respecting, hackable metasearch engine"
239−msgstr ""
227+msgstr "een privacy eerbiedigende, aanpasbare metazoekmachine"
240228
241229#: searx/templates/oscar/navbar.html:6
242230msgid "Toggle navigation"
243−msgstr ""
231+msgstr "Omschakelen navigatie"
244232
245233#: searx/templates/oscar/navbar.html:15
246234msgid "home"
247−msgstr ""
235+msgstr "thuis"
248236
249237#: searx/templates/oscar/preferences.html:11
250238#: searx/templates/oscar/preferences.html:17
251239msgid "General"
252−msgstr ""
240+msgstr "Algemeen"
253241
254242#: searx/templates/oscar/preferences.html:12
255243#: searx/templates/oscar/preferences.html:99
256244msgid "Engines"
257−msgstr ""
245+msgstr "Zoekmachines"
258246
259247#: searx/templates/oscar/preferences.html:39
260248msgid "What language do you prefer for search?"
261−msgstr ""
249+msgstr "Welke taal wil je gebruiken voor het zoeken?"
262250
263251#: searx/templates/oscar/preferences.html:50
264252msgid "Change the language of the layout"
265−msgstr ""
253+msgstr "Wijzig de taal van de layout"
266254
267255#: searx/templates/oscar/preferences.html:63
268256msgid "Find stuff as you type"
269−msgstr ""
257+msgstr "Zoek tijdens het typen"
270258
271259#: searx/templates/oscar/preferences.html:73
272260msgid ""
@@ -274,128 +262,158 @@ msgid ""
274262"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
275263" rel=\"external\">learn more about request methods</a>"
276264msgstr ""
265+"Bepaal hoe de formulieren worden ingestuurd, <a "
266+"href=\"http://nl.wikipedia.org/wiki/Hypertext_Transfer_Protocol#HTTP-"
267+"requests\" rel=\"external\">lees meer over request methodes</a>"
277268
278269#: searx/templates/oscar/preferences.html:84
279270msgid "Change searx layout"
280−msgstr ""
271+msgstr "Wijzig searx layout"
281272
282273#: searx/templates/oscar/results.html:6
283274msgid "Search results"
284−msgstr ""
275+msgstr "Zoekresultaten"
285276
286−#: searx/templates/oscar/results.html:73
277+#: searx/templates/oscar/results.html:82
287278msgid "Links"
288−msgstr ""
279+msgstr "Links"
289280
290281#: searx/templates/oscar/search.html:6 searx/templates/oscar/search_full.html:7
291282msgid "Start search"
292−msgstr ""
283+msgstr "Start zoeken"
293284
294285#: searx/templates/oscar/search_full.html:11
295286msgid "Show search filters"
296−msgstr ""
287+msgstr "Toon zoekfilters"
297288
298289#: searx/templates/oscar/search_full.html:11
299290msgid "Hide search filters"
300−msgstr ""
291+msgstr "Verberg zoekfilters"
301292
302293#: searx/templates/oscar/stats.html:2
303294msgid "stats"
304−msgstr ""
295+msgstr "stats"
305296
306297#: searx/templates/oscar/messages/first_time.html:4
307298#: searx/templates/oscar/messages/no_results.html:5
308299#: searx/templates/oscar/messages/save_settings_successfull.html:5
309300#: searx/templates/oscar/messages/unknow_error.html:5
310301msgid "Close"
311−msgstr ""
302+msgstr "Sluiten"
312303
313304#: searx/templates/oscar/messages/first_time.html:6
314305#: searx/templates/oscar/messages/no_data_available.html:3
315306msgid "Heads up!"
316−msgstr ""
307+msgstr "Heads up!"
317308
318309#: searx/templates/oscar/messages/first_time.html:7
319310msgid "It look like you are using searx first time."
320−msgstr ""
311+msgstr "Het lijkt erop dat je searx voor de eerste keer gebruikt."
321312
322313#: searx/templates/oscar/messages/js_disabled.html:2
323314msgid "Warning!"
324−msgstr ""
315+msgstr "Waarschuwing!"
325316
326317#: searx/templates/oscar/messages/js_disabled.html:3
327318msgid "Please enable JavaScript to use full functionality of this site."
328−msgstr ""
319+msgstr "Activeer JavaScript om alle functionaliteit van deze site te gebruiken."
329320
330321#: searx/templates/oscar/messages/no_data_available.html:4
331322msgid "There is currently no data available. "
332−msgstr ""
323+msgstr "Er zijn momenteel geen gegevens beschikbaar."
333324
334325#: searx/templates/oscar/messages/no_results.html:7
335326msgid "Sorry!"
336−msgstr ""
327+msgstr "Sorry!"
337328
338329#: searx/templates/oscar/messages/no_results.html:8
339330msgid ""
340331"we didn't find any results. Please use another query or search in more "
341332"categories."
342333msgstr ""
334+"we kregen geen resultaat. Probeer een andere opvraag of zoek in meer "
335+"categorieën."
343336
344337#: searx/templates/oscar/messages/save_settings_successfull.html:7
345338msgid "Well done!"
346−msgstr ""
339+msgstr "Goed gedaan!"
347340
348341#: searx/templates/oscar/messages/save_settings_successfull.html:8
349342msgid "Settings saved successfully."
350−msgstr ""
343+msgstr "Instellingen succesvol opgeslagen."
351344
352345#: searx/templates/oscar/messages/unknow_error.html:7
353346msgid "Oh snap!"
354−msgstr ""
347+msgstr "Verdraaid!"
355348
356349#: searx/templates/oscar/messages/unknow_error.html:8
357350msgid "Something went wrong."
358−msgstr ""
351+msgstr "Er ging iets fout."
359352
360353#: searx/templates/oscar/result_templates/default.html:6
361354#: searx/templates/oscar/result_templates/map.html:7
362355#: searx/templates/oscar/result_templates/torrent.html:6
363356#: searx/templates/oscar/result_templates/videos.html:6
364357msgid "cached"
358+msgstr "gecached"
359+
360+#: searx/templates/oscar/result_templates/default.html:9
361+msgid "show media"
362+msgstr ""
363+
364+#: searx/templates/oscar/result_templates/default.html:9
365+msgid "hide media"
365366msgstr ""
366367
367368#: searx/templates/oscar/result_templates/images.html:21
368369msgid "Get image"
369−msgstr ""
370+msgstr "Toon afbeelding"
370371
371372#: searx/templates/oscar/result_templates/images.html:22
372373msgid "View source"
373−msgstr ""
374+msgstr "Bekijk bron"
374375
375376#: searx/templates/oscar/result_templates/map.html:10
376377msgid "show map"
377−msgstr ""
378+msgstr "toon kaart"
378379
379380#: searx/templates/oscar/result_templates/map.html:10
380381msgid "hide map"
381−msgstr ""
382+msgstr "verberg kaart"
382383
383384#: searx/templates/oscar/result_templates/map.html:14
384385msgid "show details"
385−msgstr ""
386+msgstr "toon details"
386387
387388#: searx/templates/oscar/result_templates/map.html:14
388389msgid "hide details"
389−msgstr ""
390+msgstr "verberg details"
390391
391392#: searx/templates/oscar/result_templates/torrent.html:8
392393msgid "Seeder"
393−msgstr ""
394+msgstr "Aanbieder"
394395
395396#: searx/templates/oscar/result_templates/torrent.html:8
396397msgid "Leecher"
398+msgstr "Ophaler"
399+
400+#: searx/templates/oscar/result_templates/videos.html:9
401+msgid "show video"
397402msgstr ""
398403
404+#: searx/templates/oscar/result_templates/videos.html:9
405+msgid "hide video"
406+msgstr ""
407+
408+msgid "Localization"
409+msgstr "Vertaling"
410+
411+msgid "Yes"
412+msgstr "Ja"
413+
414+msgid "No"
415+msgstr "Nee"
416+
399417# categories - manually added
400418# TODO - automatically add
401419msgid "files"
searx/translations/tr/LC_MESSAGES/messages.monew file

Binary file not shown.

searx/translations/tr/LC_MESSAGES/messages.ponew file+448
@@ -0,0 +1,448 @@
1+# English translations for .
2+# Copyright (C) 2014 ORGANIZATION
3+# This file is distributed under the same license as the project.
4+#
5+# Translators:
6+# Caner Başaran <basaran.caner@gmail.com>, 2014
7+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
8+msgid ""
9+msgstr ""
10+"Project-Id-Version: searx\n"
11+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
12+"POT-Creation-Date: 2015-01-05 20:54+0100\n"
13+"PO-Revision-Date: 2014-12-28 08:20+0000\n"
14+"Last-Translator: Caner Başaran <basaran.caner@gmail.com>\n"
15+"Language-Team: Turkish "
16+"(http://www.transifex.com/projects/p/searx/language/tr/)\n"
17+"Plural-Forms: nplurals=2; plural=(n > 1)\n"
18+"MIME-Version: 1.0\n"
19+"Content-Type: text/plain; charset=utf-8\n"
20+"Content-Transfer-Encoding: 8bit\n"
21+"Generated-By: Babel 1.3\n"
22+
23+#: searx/webapp.py:263
24+msgid "{minutes} minute(s) ago"
25+msgstr "{minutes} dakika() önce"
26+
27+#: searx/webapp.py:265
28+msgid "{hours} hour(s), {minutes} minute(s) ago"
29+msgstr "{hours} saat(), {minutes} dakika() önce"
30+
31+#: searx/engines/__init__.py:179
32+msgid "Page loads (sec)"
33+msgstr "Yüklenen sayfa (sn)"
34+
35+#: searx/engines/__init__.py:183
36+msgid "Number of results"
37+msgstr "Sonuç sayısı"
38+
39+#: searx/engines/__init__.py:187
40+msgid "Scores"
41+msgstr ""
42+
43+#: searx/engines/__init__.py:191
44+msgid "Scores per result"
45+msgstr ""
46+
47+#: searx/engines/__init__.py:195
48+msgid "Errors"
49+msgstr "Hatalar"
50+
51+#: searx/templates/courgette/index.html:8 searx/templates/default/index.html:7
52+#: searx/templates/oscar/about.html:3 searx/templates/oscar/navbar.html:16
53+msgid "about"
54+msgstr "hakkında"
55+
56+#: searx/templates/courgette/index.html:9 searx/templates/default/index.html:8
57+#: searx/templates/oscar/navbar.html:17
58+#: searx/templates/oscar/preferences.html:2
59+msgid "preferences"
60+msgstr "tercihler"
61+
62+#: searx/templates/courgette/preferences.html:5
63+#: searx/templates/default/preferences.html:5
64+#: searx/templates/oscar/preferences.html:6
65+msgid "Preferences"
66+msgstr "Tercihler"
67+
68+#: searx/templates/courgette/preferences.html:9
69+#: searx/templates/default/preferences.html:9
70+#: searx/templates/oscar/preferences.html:24
71+msgid "Default categories"
72+msgstr "Öntanımlı kategoriler"
73+
74+#: searx/templates/courgette/preferences.html:15
75+#: searx/templates/default/preferences.html:15
76+#: searx/templates/oscar/preferences.html:30
77+msgid "Search language"
78+msgstr "Arama dili"
79+
80+#: searx/templates/courgette/preferences.html:18
81+#: searx/templates/default/preferences.html:18
82+#: searx/templates/oscar/preferences.html:33
83+msgid "Automatic"
84+msgstr "Otomatik"
85+
86+#: searx/templates/courgette/preferences.html:26
87+#: searx/templates/default/preferences.html:26
88+#: searx/templates/oscar/preferences.html:42
89+msgid "Interface language"
90+msgstr "Arayüz dili"
91+
92+#: searx/templates/courgette/preferences.html:36
93+#: searx/templates/default/preferences.html:36
94+#: searx/templates/oscar/preferences.html:53
95+msgid "Autocomplete"
96+msgstr "Otomatik tamamlama"
97+
98+#: searx/templates/courgette/preferences.html:47
99+#: searx/templates/default/preferences.html:47
100+#: searx/templates/oscar/preferences.html:66
101+msgid "Method"
102+msgstr "Sorgu gönderim yöntemi"
103+
104+#: searx/templates/courgette/preferences.html:56
105+#: searx/templates/default/preferences.html:56
106+#: searx/templates/oscar/preferences.html:76
107+msgid "Themes"
108+msgstr "Temalar"
109+
110+#: searx/templates/courgette/preferences.html:66
111+#: searx/templates/default/preferences.html:66
112+msgid "Currently used search engines"
113+msgstr "Şu anda kullanılan arama motorları"
114+
115+#: searx/templates/courgette/preferences.html:70
116+#: searx/templates/default/preferences.html:70
117+msgid "Engine name"
118+msgstr "Motor adı"
119+
120+#: searx/templates/courgette/preferences.html:71
121+#: searx/templates/default/preferences.html:71
122+msgid "Category"
123+msgstr "Türü"
124+
125+#: searx/templates/courgette/preferences.html:72
126+#: searx/templates/courgette/preferences.html:83
127+#: searx/templates/default/preferences.html:72
128+#: searx/templates/default/preferences.html:83
129+#: searx/templates/oscar/preferences.html:118
130+msgid "Allow"
131+msgstr "İzin ver"
132+
133+#: searx/templates/courgette/preferences.html:72
134+#: searx/templates/courgette/preferences.html:84
135+#: searx/templates/default/preferences.html:72
136+#: searx/templates/default/preferences.html:84
137+#: searx/templates/oscar/preferences.html:117
138+msgid "Block"
139+msgstr "Engelle"
140+
141+#: searx/templates/courgette/preferences.html:92
142+#: searx/templates/default/preferences.html:92
143+#: searx/templates/oscar/preferences.html:132
144+msgid ""
145+"These settings are stored in your cookies, this allows us not to store "
146+"this data about you."
147+msgstr ""
148+"Ayarlar çerezlerinizde saklanır. Verdiğiniz izinler, sizin hakkınızda "
149+"veri saklamak için değil."
150+
151+#: searx/templates/courgette/preferences.html:94
152+#: searx/templates/default/preferences.html:94
153+#: searx/templates/oscar/preferences.html:134
154+msgid ""
155+"These cookies serve your sole convenience, we don't use these cookies to "
156+"track you."
157+msgstr "Bu çerezler size kolaylık sağlar. Sizi takip etmek için kullanılmaz."
158+
159+#: searx/templates/courgette/preferences.html:97
160+#: searx/templates/default/preferences.html:97
161+#: searx/templates/oscar/preferences.html:137
162+msgid "save"
163+msgstr "kaydet"
164+
165+#: searx/templates/courgette/preferences.html:98
166+#: searx/templates/default/preferences.html:98
167+#: searx/templates/oscar/preferences.html:138
168+msgid "back"
169+msgstr "geri"
170+
171+#: searx/templates/courgette/results.html:12
172+#: searx/templates/default/results.html:12
173+#: searx/templates/oscar/results.html:87
174+msgid "Search URL"
175+msgstr "Arama Bağlantısı"
176+
177+#: searx/templates/courgette/results.html:16
178+#: searx/templates/default/results.html:16
179+#: searx/templates/oscar/results.html:92
180+msgid "Download results"
181+msgstr "Arama sonuçlarını indir"
182+
183+#: searx/templates/courgette/results.html:34
184+#: searx/templates/default/results.html:42
185+#: searx/templates/oscar/results.html:67
186+msgid "Suggestions"
187+msgstr "Öneriler"
188+
189+#: searx/templates/courgette/results.html:62
190+#: searx/templates/default/results.html:78
191+#: searx/templates/oscar/results.html:41
192+msgid "previous page"
193+msgstr "önceki sayfa"
194+
195+#: searx/templates/courgette/results.html:73
196+#: searx/templates/default/results.html:89
197+#: searx/templates/oscar/results.html:49
198+msgid "next page"
199+msgstr "sonraki sayfa"
200+
201+#: searx/templates/courgette/search.html:3
202+#: searx/templates/default/search.html:3 searx/templates/oscar/search.html:4
203+#: searx/templates/oscar/search_full.html:5
204+msgid "Search for..."
205+msgstr "Aramak için..."
206+
207+#: searx/templates/courgette/stats.html:4 searx/templates/default/stats.html:4
208+#: searx/templates/oscar/stats.html:5
209+msgid "Engine stats"
210+msgstr "Arama motoru istatistikleri"
211+
212+#: searx/templates/default/categories.html:8
213+msgid "Click on the magnifier to perform search"
214+msgstr "Arama yapmak için büyütece tıklayın"
215+
216+#: searx/templates/default/results.html:34
217+msgid "Answers"
218+msgstr ""
219+
220+#: searx/templates/oscar/base.html:69
221+msgid "Powered by"
222+msgstr "Gücümün kaynağı"
223+
224+#: searx/templates/oscar/base.html:69
225+msgid "a privacy-respecting, hackable metasearch engine"
226+msgstr ""
227+"kişisel gizliliğe saygılı ve merak edenlerin kurcalayabildiği bir meta "
228+"arama motoru"
229+
230+#: searx/templates/oscar/navbar.html:6
231+msgid "Toggle navigation"
232+msgstr ""
233+
234+#: searx/templates/oscar/navbar.html:15
235+msgid "home"
236+msgstr "anasayfa"
237+
238+#: searx/templates/oscar/preferences.html:11
239+#: searx/templates/oscar/preferences.html:17
240+msgid "General"
241+msgstr "Genel"
242+
243+#: searx/templates/oscar/preferences.html:12
244+#: searx/templates/oscar/preferences.html:99
245+msgid "Engines"
246+msgstr "Motorlar"
247+
248+#: searx/templates/oscar/preferences.html:39
249+msgid "What language do you prefer for search?"
250+msgstr "Arama için hangi dili tercih edersiniz?"
251+
252+#: searx/templates/oscar/preferences.html:50
253+msgid "Change the language of the layout"
254+msgstr "Yerleşim düzeninin dilini değiştir"
255+
256+#: searx/templates/oscar/preferences.html:63
257+msgid "Find stuff as you type"
258+msgstr "Leb demeden leblebiyi anlasın"
259+
260+#: searx/templates/oscar/preferences.html:73
261+msgid ""
262+"Change how forms are submited, <a "
263+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
264+" rel=\"external\">learn more about request methods</a>"
265+msgstr ""
266+"Aramaların nasıl gönderildiğini değiştir, <a "
267+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
268+" rel=\"external\">istek yöntemleri hakkında daha fazla bilgi</a>"
269+
270+#: searx/templates/oscar/preferences.html:84
271+msgid "Change searx layout"
272+msgstr "searx yerleşim düzenini değiştir"
273+
274+#: searx/templates/oscar/results.html:6
275+msgid "Search results"
276+msgstr "Arama sonuçları"
277+
278+#: searx/templates/oscar/results.html:82
279+msgid "Links"
280+msgstr "Bağlantılar"
281+
282+#: searx/templates/oscar/search.html:6 searx/templates/oscar/search_full.html:7
283+msgid "Start search"
284+msgstr "Aramayı başlat"
285+
286+#: searx/templates/oscar/search_full.html:11
287+msgid "Show search filters"
288+msgstr "Arama filtrelerini göster"
289+
290+#: searx/templates/oscar/search_full.html:11
291+msgid "Hide search filters"
292+msgstr "Arama filtrelerini gizle"
293+
294+#: searx/templates/oscar/stats.html:2
295+msgid "stats"
296+msgstr "istatistikler"
297+
298+#: searx/templates/oscar/messages/first_time.html:4
299+#: searx/templates/oscar/messages/no_results.html:5
300+#: searx/templates/oscar/messages/save_settings_successfull.html:5
301+#: searx/templates/oscar/messages/unknow_error.html:5
302+msgid "Close"
303+msgstr "Kapat"
304+
305+#: searx/templates/oscar/messages/first_time.html:6
306+#: searx/templates/oscar/messages/no_data_available.html:3
307+msgid "Heads up!"
308+msgstr "Dikkat et!"
309+
310+#: searx/templates/oscar/messages/first_time.html:7
311+msgid "It look like you are using searx first time."
312+msgstr "İlk defa searx kullanıyor gibi görünüyorsunuz."
313+
314+#: searx/templates/oscar/messages/js_disabled.html:2
315+msgid "Warning!"
316+msgstr "Uyarı!"
317+
318+#: searx/templates/oscar/messages/js_disabled.html:3
319+msgid "Please enable JavaScript to use full functionality of this site."
320+msgstr ""
321+"Lütfen, bu sitenin tüm işlevlerini kullanmak için JavaScript'i "
322+"etkinleştirin."
323+
324+#: searx/templates/oscar/messages/no_data_available.html:4
325+msgid "There is currently no data available. "
326+msgstr "Şuan uygun veri yok."
327+
328+#: searx/templates/oscar/messages/no_results.html:7
329+msgid "Sorry!"
330+msgstr "Üzgünüz!"
331+
332+#: searx/templates/oscar/messages/no_results.html:8
333+msgid ""
334+"we didn't find any results. Please use another query or search in more "
335+"categories."
336+msgstr ""
337+"herhangi bir sonuç bulamadık. Lütfen, başka sorgu kullanın veya daha "
338+"fazla kategoride arama yapın."
339+
340+#: searx/templates/oscar/messages/save_settings_successfull.html:7
341+msgid "Well done!"
342+msgstr "Aferin!"
343+
344+#: searx/templates/oscar/messages/save_settings_successfull.html:8
345+msgid "Settings saved successfully."
346+msgstr "Ayarlar başarıyla kaydedildi."
347+
348+#: searx/templates/oscar/messages/unknow_error.html:7
349+msgid "Oh snap!"
350+msgstr "Tüh tüh!"
351+
352+#: searx/templates/oscar/messages/unknow_error.html:8
353+msgid "Something went wrong."
354+msgstr "Bazı bazı şeylerde problem olmuş."
355+
356+#: searx/templates/oscar/result_templates/default.html:6
357+#: searx/templates/oscar/result_templates/map.html:7
358+#: searx/templates/oscar/result_templates/torrent.html:6
359+#: searx/templates/oscar/result_templates/videos.html:6
360+msgid "cached"
361+msgstr "önbellek"
362+
363+#: searx/templates/oscar/result_templates/default.html:9
364+msgid "show media"
365+msgstr ""
366+
367+#: searx/templates/oscar/result_templates/default.html:9
368+msgid "hide media"
369+msgstr ""
370+
371+#: searx/templates/oscar/result_templates/images.html:21
372+msgid "Get image"
373+msgstr "Görseli indir"
374+
375+#: searx/templates/oscar/result_templates/images.html:22
376+msgid "View source"
377+msgstr "Kaynağı göster"
378+
379+#: searx/templates/oscar/result_templates/map.html:10
380+msgid "show map"
381+msgstr "haritayı göster"
382+
383+#: searx/templates/oscar/result_templates/map.html:10
384+msgid "hide map"
385+msgstr "haritayı gizle"
386+
387+#: searx/templates/oscar/result_templates/map.html:14
388+msgid "show details"
389+msgstr "ayrıntıları göster"
390+
391+#: searx/templates/oscar/result_templates/map.html:14
392+msgid "hide details"
393+msgstr "ayrıntıları gizle"
394+
395+#: searx/templates/oscar/result_templates/torrent.html:8
396+msgid "Seeder"
397+msgstr "Besleyenler"
398+
399+#: searx/templates/oscar/result_templates/torrent.html:8
400+msgid "Leecher"
401+msgstr "Sömürenler"
402+
403+#: searx/templates/oscar/result_templates/videos.html:9
404+msgid "show video"
405+msgstr ""
406+
407+#: searx/templates/oscar/result_templates/videos.html:9
408+msgid "hide video"
409+msgstr ""
410+
411+msgid "Localization"
412+msgstr ""
413+
414+msgid "Yes"
415+msgstr "Evet"
416+
417+msgid "No"
418+msgstr "Hayır"
419+
420+# categories - manually added
421+# TODO - automatically add
422+msgid "files"
423+msgstr "dosyalar"
424+
425+msgid "general"
426+msgstr "genel"
427+
428+msgid "music"
429+msgstr "müzik"
430+
431+msgid "social media"
432+msgstr "sosyal medya"
433+
434+msgid "images"
435+msgstr "görseller"
436+
437+msgid "videos"
438+msgstr "videolar"
439+
440+msgid "it"
441+msgstr "bilişim"
442+
443+msgid "news"
444+msgstr "haberler"
445+
446+msgid "map"
447+msgstr "harita"
448+
searx/utils.py+48−7
@@ -23,6 +23,9 @@ ua_os = ('Windows NT 6.3; WOW64',
2323
2424ua = "Mozilla/5.0 ({os}) Gecko/20100101 Firefox/{version}"
2525
26+blocked_tags = ('script',
27+ 'style')
28+
2629
2730def gen_useragent():
2831 # TODO
@@ -30,8 +33,9 @@ def gen_useragent():
3033
3134
3235def searx_useragent():
33− return 'searx/{searx_version} {suffix}'.format(searx_version=VERSION_STRING,
34− suffix=settings['server'].get('useragent_suffix', ''))
36+ return 'searx/{searx_version} {suffix}'.format(
37+ searx_version=VERSION_STRING,
38+ suffix=settings['server'].get('useragent_suffix', ''))
3539
3640
3741def highlight_content(content, query):
@@ -66,11 +70,27 @@ class HTMLTextExtractor(HTMLParser):
6670 def __init__(self):
6771 HTMLParser.__init__(self)
6872 self.result = []
73+ self.tags = []
74+
75+ def handle_starttag(self, tag, attrs):
76+ self.tags.append(tag)
77+
78+ def handle_endtag(self, tag):
79+ if tag != self.tags[-1]:
80+ raise Exception("invalid html")
81+ self.tags.pop()
82+
83+ def is_valid_tag(self):
84+ return not self.tags or self.tags[-1] not in blocked_tags
6985
7086 def handle_data(self, d):
87+ if not self.is_valid_tag():
88+ return
7189 self.result.append(d)
7290
7391 def handle_charref(self, number):
92+ if not self.is_valid_tag():
93+ return
7494 if number[0] in (u'x', u'X'):
7595 codepoint = int(number[1:], 16)
7696 else:
@@ -78,6 +98,8 @@ class HTMLTextExtractor(HTMLParser):
7898 self.result.append(unichr(codepoint))
7999
80100 def handle_entityref(self, name):
101+ if not self.is_valid_tag():
102+ return
81103 # codepoint = htmlentitydefs.name2codepoint[name]
82104 # self.result.append(unichr(codepoint))
83105 self.result.append(name)
@@ -132,11 +154,30 @@ def get_themes(root):
132154 """Returns available themes list."""
133155
134156 static_path = os.path.join(root, 'static')
135− static_names = set(os.listdir(static_path))
136157 templates_path = os.path.join(root, 'templates')
137− templates_names = set(os.listdir(templates_path))
138158
139− themes = []
140− for name in static_names.intersection(templates_names):
141− themes += [name]
159+ themes = os.listdir(os.path.join(static_path, 'themes'))
142160 return static_path, templates_path, themes
161+
162+
163+def get_static_files(base_path):
164+ base_path = os.path.join(base_path, 'static')
165+ static_files = set()
166+ base_path_length = len(base_path) + 1
167+ for directory, _, files in os.walk(base_path):
168+ for filename in files:
169+ f = os.path.join(directory[base_path_length:], filename)
170+ static_files.add(f)
171+ return static_files
172+
173+
174+def get_result_templates(base_path):
175+ base_path = os.path.join(base_path, 'templates')
176+ result_templates = set()
177+ base_path_length = len(base_path) + 1
178+ for directory, _, files in os.walk(base_path):
179+ if directory.endswith('result_templates'):
180+ for filename in files:
181+ f = os.path.join(directory[base_path_length:], filename)
182+ result_templates.add(f)
183+ return result_templates
searx/version.py+1−1
@@ -18,7 +18,7 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
1818
1919# version of searx
2020VERSION_MAJOR = 0
21−VERSION_MINOR = 5
21+VERSION_MINOR = 6
2222VERSION_BUILD = 0
2323
2424VERSION_STRING = "{0}.{1}.{2}".format(VERSION_MAJOR,
searx/webapp.py+33−12
@@ -41,7 +41,8 @@ from searx.engines import (
4141 categories, engines, get_engines_stats, engine_shortcuts
4242)
4343from searx.utils import (
44− UnicodeWriter, highlight_content, html_to_text, get_themes
44+ UnicodeWriter, highlight_content, html_to_text, get_themes,
45+ get_static_files, get_result_templates
4546)
4647from searx.version import VERSION_STRING
4748from searx.languages import language_codes
@@ -49,8 +50,11 @@ from searx.https_rewrite import https_url_rewrite
4950from searx.search import Search
5051from searx.query import Query
5152from searx.autocomplete import backends as autocomplete_backends
53+from searx import logger
5254
5355
56+logger = logger.getChild('webapp')
57+
5458static_path, templates_path, themes =\
5559 get_themes(settings['themes_path']
5660 if settings.get('themes_path')
@@ -58,6 +62,10 @@ static_path, templates_path, themes =\
5862
5963default_theme = settings['server'].get('default_theme', 'default')
6064
65+static_files = get_static_files(searx_dir)
66+
67+result_templates = get_result_templates(searx_dir)
68+
6169app = Flask(
6270 __name__,
6371 static_folder=static_path,
@@ -66,11 +74,16 @@ app = Flask(
6674
6775app.secret_key = settings['server']['secret_key']
6876
77+app.logger.addHandler(logger)
78+
6979babel = Babel(app)
7080
71−#TODO configurable via settings.yml
72−favicons = ['wikipedia', 'youtube', 'vimeo', 'dailymotion', 'soundcloud',
73− 'twitter', 'stackoverflow', 'github', 'deviantart', 'kickass']
81+global_favicons = []
82+for indice, theme in enumerate(themes):
83+ global_favicons.append([])
84+ theme_img_path = searx_dir+"/static/themes/"+theme+"/img/icons/"
85+ for (dirpath, dirnames, filenames) in os.walk(theme_img_path):
86+ global_favicons[indice].extend(filenames)
7487
7588cookie_max_age = 60 * 60 * 24 * 365 * 23 # 23 years
7689
@@ -170,10 +183,19 @@ def get_current_theme_name(override=None):
170183 return theme_name
171184
172185
186+def get_result_template(theme, template_name):
187+ themed_path = theme + '/result_templates/' + template_name
188+ if themed_path in result_templates:
189+ return themed_path
190+ return 'result_templates/' + template_name
191+
192+
173193def url_for_theme(endpoint, override_theme=None, **values):
174− if endpoint == 'static' and values.get('filename', None):
194+ if endpoint == 'static' and values.get('filename'):
175195 theme_name = get_current_theme_name(override=override_theme)
176− values['filename'] = "{}/{}".format(theme_name, values['filename'])
196+ filename_with_theme = "themes/{}/{}".format(theme_name, values['filename'])
197+ if filename_with_theme in static_files:
198+ values['filename'] = filename_with_theme
177199 return url_for(endpoint, **values)
178200
179201
@@ -223,6 +245,8 @@ def render(template_name, override_theme=None, **kwargs):
223245 # override url_for function in templates
224246 kwargs['url_for'] = url_for_theme
225247
248+ kwargs['get_result_template'] = get_result_template
249+
226250 kwargs['theme'] = get_current_theme_name(override=override_theme)
227251
228252 kwargs['template_name'] = template_name
@@ -284,10 +308,6 @@ def index():
284308 else:
285309 result['pretty_url'] = result['url']
286310
287− for engine in result['engines']:
288− if engine in favicons:
289− result['favicon'] = engine
290−
291311 # TODO, check if timezone is calculated right
292312 if 'publishedDate' in result:
293313 result['pubdate'] = result['publishedDate'].strftime('%Y-%m-%d %H:%M:%S%z')
@@ -340,7 +360,8 @@ def index():
340360 suggestions=search.suggestions,
341361 answers=search.answers,
342362 infoboxes=search.infoboxes,
343− theme=get_current_theme_name()
363+ theme=get_current_theme_name(),
364+ favicons=global_favicons[themes.index(get_current_theme_name())]
344365 )
345366
346367
@@ -541,7 +562,7 @@ def opensearch():
541562@app.route('/favicon.ico')
542563def favicon():
543564 return send_from_directory(os.path.join(app.root_path,
544− 'static',
565+ 'static/themes',
545566 get_current_theme_name(),
546567 'img'),
547568 'favicon.png',
tox.ininew file+2
@@ -0,0 +1,2 @@
1+[flake8]
2+max-line-length = 120
utils/update-translations.sh+1−1
@@ -9,7 +9,7 @@ SEARX_DIR='searx'
99
1010pybabel extract -F babel.cfg -o messages.pot $SEARX_DIR
1111for f in `ls $SEARX_DIR'/translations/'`; do
12− pybabel update -i messages.pot -d $SEARX_DIR'/translations/' -l $f
12+ pybabel update -N -i messages.pot -d $SEARX_DIR'/translations/' -l $f
1313 # TODO - need to fix category translations
1414 sed -i 's/#~ //' $SEARX_DIR'/translations/'$f'/LC_MESSAGES/messages.po'
1515done