on master help sign in
Merge branch 'master' of https://github.com/asciimoo/searx into code_results
400b541Thomas Pointhuber
.travis.yml+1−1
@@ -5,7 +5,7 @@ before_install:
5 - "export DISPLAY=:99.0"
5 - "export DISPLAY=:99.0"
6 - "sh -e /etc/init.d/xvfb start"
6 - "sh -e /etc/init.d/xvfb start"
7 - npm install -g less grunt-cli
7 - npm install -g less grunt-cli
8− - ( cd searx/static/oscar;npm install )
8+ - ( cd searx/static/themes/oscar;npm install )
9install:
9install:
10 - "make"
10 - "make"
11 - pip install coveralls
11 - pip install coveralls
AUTHORS.rst+3
@@ -29,3 +29,6 @@ generally made searx better:
29- @kernc
29- @kernc
30- @Cqoicebordel
30- @Cqoicebordel
31- @Reventl0v
31- @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):
18 virtualenv -p python$(version) --no-site-packages .
18 virtualenv -p python$(version) --no-site-packages .
19 @touch $@
19 @touch $@
20
20
21−tests: .installed.cfg
22− @bin/test
23− @grunt test --gruntfile searx/static/oscar/gruntfile.js
24−
25robot: .installed.cfg
21robot: .installed.cfg
26 @bin/robot
22 @bin/robot
27
23
@@ -29,6 +25,10 @@ flake8: .installed.cfg
29 @bin/flake8 setup.py
25 @bin/flake8 setup.py
30 @bin/flake8 ./searx/
26 @bin/flake8 ./searx/
31
27
28+tests: .installed.cfg flake8
29+ @bin/test
30+ @grunt test --gruntfile searx/static/themes/oscar/gruntfile.js
31+
32coverage: .installed.cfg
32coverage: .installed.cfg
33 @bin/coverage run bin/test
33 @bin/coverage run bin/test
34 @bin/coverage report
34 @bin/coverage report
@@ -45,18 +45,18 @@ minimal: bin/buildout minimal.cfg setup.py
45 bin/buildout -c minimal.cfg $(options)
45 bin/buildout -c minimal.cfg $(options)
46
46
47styles:
47styles:
48− @lessc -x searx/static/default/less/style.less > searx/static/default/css/style.css
48+ @lessc -x searx/static/themes/default/less/style.less > searx/static/themes/default/css/style.css
49− @lessc -x searx/static/oscar/less/bootstrap/bootstrap.less > searx/static/oscar/css/bootstrap.min.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/oscar/less/oscar/oscar.less > searx/static/oscar/css/oscar.min.css
50+ @lessc -x searx/static/themes/oscar/less/oscar/oscar.less > searx/static/themes/oscar/css/oscar.min.css
51
51
52grunt:
52grunt:
53− @grunt --gruntfile searx/static/oscar/gruntfile.js
53+ @grunt --gruntfile searx/static/themes/oscar/gruntfile.js
54
54
55locales:
55locales:
56 @pybabel compile -d searx/translations
56 @pybabel compile -d searx/translations
57
57
58clean:
58clean:
59 @rm -rf .installed.cfg .mr.developer.cfg bin parts develop-eggs \
59 @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
61
61
62.PHONY: all tests robot flake8 coverage production minimal styles locales clean
62.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.
14Features
14Features
15~~~~~~~~
15~~~~~~~~
16
16
17−- Tracking free
17+- Tracking free
18−- Supports multiple output formats
18+- Supports multiple output formats
19+
19− - json ``curl https://searx.me/?format=json&q=[query]``
20+ - json ``curl https://searx.me/?format=json&q=[query]``
20− - csv ``curl https://searx.me/?format=csv&q=[query]``
21+ - csv ``curl https://searx.me/?format=csv&q=[query]``
21− - opensearch/rss ``curl https://searx.me/?format=rss&q=[query]``
22+ - opensearch/rss ``curl https://searx.me/?format=rss&q=[query]``
22−- Opensearch support (you can set as default search engine)
23+- Opensearch support (you can set as default search engine)
23−- Configurable search engines/categories
24+- Configurable search engines/categories
24−- Different search languages
25+- Different search languages
25−- Duckduckgo like !bang functionality with engine shortcuts
26+- Duckduckgo like !bang functionality with engine shortcuts
26−- Parallel queries - relatively fast
27+- Parallel queries - relatively fast
27
28
28Installation
29Installation
29~~~~~~~~~~~~
30~~~~~~~~~~~~
@@ -131,14 +132,11 @@ next time you run any other ``make`` command it will rebuild everithing.
131TODO
132TODO
132~~~~
133~~~~
133
134
134−- Moar engines
135+- Moar engines
135−- Better ui
136+- Better ui
136−- Browser integration
137+- Browser integration
137−- Documentation
138+- Documentation
138−- Fix ``flake8`` errors, ``make flake8`` will be merged into
139− ``make tests`` when it does not fail anymore
140−- Tests
139+- Tests
141−- When we have more tests, we can integrate Travis-CI
142
140
143Bugs
141Bugs
144~~~~
142~~~~
searx/__init__.py+11−1
@@ -15,9 +15,9 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
15(C) 2013- by Adam Tauber, <asciimoo@gmail.com>
15(C) 2013- by Adam Tauber, <asciimoo@gmail.com>
16'''
16'''
17
17
18+import logging
18from os import environ
19from os import environ
19from os.path import realpath, dirname, join, abspath
20from os.path import realpath, dirname, join, abspath
20−from searx.https_rewrite import load_https_rules
21try:
21try:
22 from yaml import load
22 from yaml import load
23except:
23except:
@@ -45,7 +45,17 @@ else:
45with open(settings_path) as settings_yaml:
45with open(settings_path) as settings_yaml:
46 settings = load(settings_yaml)
46 settings = load(settings_yaml)
47
47
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+
48# load https rules only if https rewrite is enabled
55# load https rules only if https rewrite is enabled
49if settings.get('server', {}).get('https_rewrite'):
56if settings.get('server', {}).get('https_rewrite'):
50 # loade https rules
57 # loade https rules
58+ from searx.https_rewrite import load_https_rules
51 load_https_rules(https_rewrite_path)
59 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):
35# get response from search-request
35# get response from search-request
36def response(resp):
36def response(resp):
37 results = []
37 results = []
38−
38+
39 dom = html.fromstring(resp.text)
39 dom = html.fromstring(resp.text)
40−
40+
41 # parse results
41 # parse results
42 for result in dom.xpath('//div[@class="photo"]'):
42 for result in dom.xpath('//div[@class="photo"]'):
43 link = result.xpath('.//a')[0]
43 link = result.xpath('.//a')[0]
searx/engines/__init__.py+7−4
@@ -22,6 +22,10 @@ from imp import load_source
22from flask.ext.babel import gettext
22from flask.ext.babel import gettext
23from operator import itemgetter
23from operator import itemgetter
24from searx import settings
24from searx import settings
25+from searx import logger
26+
27+
28+logger = logger.getChild('engines')
25
29
26engine_dir = dirname(realpath(__file__))
30engine_dir = dirname(realpath(__file__))
27
31
@@ -81,7 +85,7 @@ def load_engine(engine_data):
81 if engine_attr.startswith('_'):
85 if engine_attr.startswith('_'):
82 continue
86 continue
83 if getattr(engine, engine_attr) is None:
87 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}"'
85 .format(engine.name, engine_attr))
89 .format(engine.name, engine_attr))
86 sys.exit(1)
90 sys.exit(1)
87
91
@@ -100,9 +104,8 @@ def load_engine(engine_data):
100 categories['general'].append(engine)
104 categories['general'].append(engine)
101
105
102 if engine.shortcut:
106 if engine.shortcut:
103− # TODO check duplications
104 if engine.shortcut in engine_shortcuts:
107 if engine.shortcut in engine_shortcuts:
105− print('[E] Engine config error: ambigious shortcut: {0}'\
108+ logger.error('Engine config error: ambigious shortcut: {0}'
106 .format(engine.shortcut))
109 .format(engine.shortcut))
107 sys.exit(1)
110 sys.exit(1)
108 engine_shortcuts[engine.shortcut] = engine.name
111 engine_shortcuts[engine.shortcut] = engine.name
@@ -199,7 +202,7 @@ def get_engines_stats():
199
202
200
203
201if 'engines' not in settings or not settings['engines']:
204if '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')
203 exit(2)
206 exit(2)
204
207
205for engine_data in settings['engines']:
208for engine_data in settings['engines']:
searx/engines/dailymotion.py+11−4
@@ -6,12 +6,14 @@
6# @using-api yes
6# @using-api yes
7# @results JSON
7# @results JSON
8# @stable yes
8# @stable yes
9−# @parse url, title, thumbnail
9+# @parse url, title, thumbnail, publishedDate, embedded
10#
10#
11# @todo set content-parameter with correct data
11# @todo set content-parameter with correct data
12
12
13from urllib import urlencode
13from urllib import urlencode
14from json import loads
14from json import loads
15+from cgi import escape
16+from datetime import datetime
15
17
16# engine dependent config
18# engine dependent config
17categories = ['videos']
19categories = ['videos']
@@ -20,7 +22,9 @@ language_support = True
20
22
21# search-url
23# search-url
22# see http://www.dailymotion.com/doc/api/obj-video.html
24# 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>'
24
28
25
29
26# do search-request
30# do search-request
@@ -51,14 +55,17 @@ def response(resp):
51 for res in search_res['list']:
55 for res in search_res['list']:
52 title = res['title']
56 title = res['title']
53 url = res['url']
57 url = res['url']
54− #content = res['description']
58+ content = escape(res['description'])
55− content = ''
56 thumbnail = res['thumbnail_360_url']
59 thumbnail = res['thumbnail_360_url']
60+ publishedDate = datetime.fromtimestamp(res['created_time'], None)
61+ embedded = embedded_url.format(videoid=res['id'])
57
62
58 results.append({'template': 'videos.html',
63 results.append({'template': 'videos.html',
59 'url': url,
64 'url': url,
60 'title': title,
65 'title': title,
61 'content': content,
66 'content': content,
67+ 'publishedDate': publishedDate,
68+ 'embedded': embedded,
62 'thumbnail': thumbnail})
69 'thumbnail': thumbnail})
63
70
64 # return results
71 # 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 @@
1import json
1import json
2from urllib import urlencode
2from urllib import urlencode
3from lxml import html
3from lxml import html
4+from searx.utils import html_to_text
4from searx.engines.xpath import extract_text
5from searx.engines.xpath import extract_text
5
6
6url = 'https://api.duckduckgo.com/'\
7url = 'https://api.duckduckgo.com/'\
@@ -17,11 +18,6 @@ def result_to_text(url, text, htmlResult):
17 return text
18 return text
18
19
19
20
20−def html_to_text(htmlFragment):
21− dom = html.fromstring(htmlFragment)
22− return extract_text(dom)
23−
24−
25def request(query, params):
21def request(query, params):
26 # TODO add kl={locale}
22 # TODO add kl={locale}
27 params['url'] = url.format(query=urlencode({'q': query}))
23 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 @@
1#!/usr/bin/env python
1#!/usr/bin/env python
2
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 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+
3from urllib import urlencode
14from urllib import urlencode
4−#from json import loads
15+from json import loads
5−from urlparse import urljoin
6−from lxml import html
7−from time import time
8
16
9categories = ['images']
17categories = ['images']
10
18
19+nb_per_page = 15
20+paging = True
21+api_key = None
22+
23+
11−url = 'https://secure.flickr.com/'
24+url = 'https://api.flickr.com/services/rest/?method=flickr.photos.search' +\
12−search_url = url+'search/?{query}&page={page}'
25+ '&api_key={api_key}&{text}&sort=relevance' +\
13−results_xpath = '//div[@class="view display-item-tile"]/figure/div'
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}'
14
29
15paging = True
30paging = True
16
31
17
32
33+def build_flickr_url(user_id, photo_id):
34+ return photo_url.format(userid=user_id, photoid=photo_id)
35+
36+
18def request(query, params):
37def request(query, params):
19− params['url'] = search_url.format(query=urlencode({'text': query}),
38+ params['url'] = url.format(text=urlencode({'text': query}),
39+ api_key=api_key,
40+ nb_per_page=nb_per_page,
20− page=params['pageno'])
41+ 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'
30 return params
42 return params
31
43
32
44
33def response(resp):
45def response(resp):
34 results = []
46 results = []
35− dom = html.fromstring(resp.text)
36− for result in dom.xpath(results_xpath):
37− img = result.xpath('.//img')
38
47
39− if not img:
48+ search_results = loads(resp.text)
40− continue
41
49
42− img = img[0]
50+ # return empty array if there are no results
43− img_src = 'https:'+img.attrib.get('src')
51+ if not 'photos' in search_results:
52+ return []
44
53
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:
45− if not img_src:
64+ img_src = photo['url_z']
65+ else:
46 continue
66 continue
47
67
48− href = urljoin(url, result.xpath('.//a')[0].attrib.get('href'))
68+ url = build_flickr_url(photo['owner'], photo['id'])
49− title = img.attrib.get('alt', '')
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
50− results.append({'url': href,
80+ results.append({'url': url,
51 'title': title,
81 'title': title,
52 'img_src': img_src,
82 'img_src': img_src,
83+ 'content': content,
53 'template': 'images.html'})
84 'template': 'images.html'})
85+
86+ # return results
54 return results
87 return results
searx/engines/kickass.py+3−2
@@ -24,7 +24,7 @@ search_url = url + 'search/{search_term}/{pageno}/'
24
24
25# specific xpath variables
25# specific xpath variables
26magnet_xpath = './/a[@title="Torrent magnet link"]'
26magnet_xpath = './/a[@title="Torrent magnet link"]'
27−#content_xpath = './/font[@class="detDesc"]//text()'
27+content_xpath = './/span[@class="font11px lightgrey block"]'
28
28
29
29
30# do search-request
30# do search-request
@@ -56,7 +56,8 @@ def response(resp):
56 link = result.xpath('.//a[@class="cellMainLink"]')[0]
56 link = result.xpath('.//a[@class="cellMainLink"]')[0]
57 href = urljoin(url, link.attrib['href'])
57 href = urljoin(url, link.attrib['href'])
58 title = ' '.join(link.xpath('.//text()'))
58 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"))
60 seed = result.xpath('.//td[contains(@class, "green")]/text()')[0]
61 seed = result.xpath('.//td[contains(@class, "green")]/text()')[0]
61 leech = result.xpath('.//td[contains(@class, "red")]/text()')[0]
62 leech = result.xpath('.//td[contains(@class, "red")]/text()')[0]
62
63
searx/engines/searchcode_doc.py+8−4
@@ -38,10 +38,14 @@ def response(resp):
38 for result in search_results['results']:
38 for result in search_results['results']:
39 href = result['url']
39 href = result['url']
40 title = "[" + result['type'] + "] " +\
40 title = "[" + result['type'] + "] " +\
41− result['namespace'] + " " + result['name']
41+ result['namespace'] +\
42+ " " + result['name']
42− content = '<span class="highlight">[' + result['type'] + "] " +\
43+ content = '<span class="highlight">[' +\
44+ result['type'] + "] " +\
45+ result['name'] + " " +\
43− result['name'] + " " + result['synopsis'] +\
46+ result['synopsis'] +\
47+ "</span><br />" +\
44− "</span><br />" + result['description']
48+ result['description']
45
49
46 # append result
50 # append result
47 results.append({'url': href,
51 results.append({'url': href,
searx/engines/soundcloud.py+12−2
@@ -6,10 +6,11 @@
6# @using-api yes
6# @using-api yes
7# @results JSON
7# @results JSON
8# @stable yes
8# @stable yes
9−# @parse url, title, content
9+# @parse url, title, content, publishedDate, embedded
10
10
11from json import loads
11from json import loads
12−from urllib import urlencode
12+from urllib import urlencode, quote_plus
13+from dateutil import parser
13
14
14# engine dependent config
15# engine dependent config
15categories = ['music']
16categories = ['music']
@@ -27,6 +28,10 @@ search_url = url + 'search?{query}'\
27 '&linked_partitioning=1'\
28 '&linked_partitioning=1'\
28 '&client_id={client_id}' # noqa
29 '&client_id={client_id}' # noqa
29
30
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+
30
35
31# do search-request
36# do search-request
32def request(query, params):
37def request(query, params):
@@ -50,10 +55,15 @@ def response(resp):
50 if result['kind'] in ('track', 'playlist'):
55 if result['kind'] in ('track', 'playlist'):
51 title = result['title']
56 title = result['title']
52 content = result['description']
57 content = result['description']
58+ publishedDate = parser.parse(result['last_modified'])
59+ uri = quote_plus(result['uri'])
60+ embedded = embedded_url.format(uri=uri)
53
61
54 # append result
62 # append result
55 results.append({'url': result['permalink_url'],
63 results.append({'url': result['permalink_url'],
56 'title': title,
64 'title': title,
65+ 'publishedDate': publishedDate,
66+ 'embedded': embedded,
57 'content': content})
67 'content': content})
58
68
59 # return results
69 # return results
searx/engines/startpage.py+4−1
@@ -66,7 +66,10 @@ def response(resp):
66 continue
66 continue
67 link = links[0]
67 link = links[0]
68 url = link.attrib.get('href')
68 url = link.attrib.get('href')
69+ try:
69− title = escape(link.text_content())
70+ title = escape(link.text_content())
71+ except UnicodeDecodeError:
72+ continue
70
73
71 # block google-ad url's
74 # block google-ad url's
72 if re.match("^http(s|)://www.google.[a-z]+/aclk.*$", url):
75 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 @@
1## Twitter (Social media)
1## Twitter (Social media)
2#
2#
3−# @website https://www.bing.com/news
3+# @website https://twitter.com/
4# @provide-api yes (https://dev.twitter.com/docs/using-search)
4# @provide-api yes (https://dev.twitter.com/docs/using-search)
5#
5#
6# @using-api no
6# @using-api no
@@ -14,6 +14,7 @@ from urlparse import urljoin
14from urllib import urlencode
14from urllib import urlencode
15from lxml import html
15from lxml import html
16from cgi import escape
16from cgi import escape
17+from datetime import datetime
17
18
18# engine dependent config
19# engine dependent config
19categories = ['social media']
20categories = ['social media']
@@ -27,7 +28,8 @@ search_url = base_url+'search?'
27results_xpath = '//li[@data-item-type="tweet"]'
28results_xpath = '//li[@data-item-type="tweet"]'
28link_xpath = './/small[@class="time"]//a'
29link_xpath = './/small[@class="time"]//a'
29title_xpath = './/span[@class="username js-action-profile-name"]//text()'
30title_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")]'
31
33
32
34
33# do search-request
35# do search-request
@@ -52,12 +54,21 @@ def response(resp):
52 link = tweet.xpath(link_xpath)[0]
54 link = tweet.xpath(link_xpath)[0]
53 url = urljoin(base_url, link.attrib.get('href'))
55 url = urljoin(base_url, link.attrib.get('href'))
54 title = ''.join(tweet.xpath(title_xpath))
56 title = ''.join(tweet.xpath(title_xpath))
55− content = escape(''.join(tweet.xpath(content_xpath)))
57+ content = escape(html.tostring(tweet.xpath(content_xpath)[0], method='text', encoding='UTF-8').decode("utf-8"))
56−
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)
57− # append result
62+ # append result
63+ results.append({'url': url,
64+ 'title': title,
65+ 'content': content,
66+ 'publishedDate': publishedDate})
67+ else:
68+ # append result
58− results.append({'url': url,
69+ results.append({'url': url,
59− 'title': title,
70+ 'title': title,
60− 'content': content})
71+ 'content': content})
61
72
62 # return results
73 # return results
63 return results
74 return results
searx/engines/vimeo.py+14−12
@@ -1,4 +1,4 @@
1−## Vimeo (Videos)
1+# Vimeo (Videos)
2#
2#
3# @website https://vimeo.com/
3# @website https://vimeo.com/
4# @provide-api yes (http://developer.vimeo.com/api),
4# @provide-api yes (http://developer.vimeo.com/api),
@@ -7,14 +7,14 @@
7# @using-api no (TODO, rewrite to api)
7# @using-api no (TODO, rewrite to api)
8# @results HTML (using search portal)
8# @results HTML (using search portal)
9# @stable no (HTML can change)
9# @stable no (HTML can change)
10−# @parse url, title, publishedDate, thumbnail
10+# @parse url, title, publishedDate, thumbnail, embedded
11#
11#
12# @todo rewrite to api
12# @todo rewrite to api
13# @todo set content-parameter with correct data
13# @todo set content-parameter with correct data
14
14
15from urllib import urlencode
15from urllib import urlencode
16−from HTMLParser import HTMLParser
17from lxml import html
16from lxml import html
17+from HTMLParser import HTMLParser
18from searx.engines.xpath import extract_text
18from searx.engines.xpath import extract_text
19from dateutil import parser
19from dateutil import parser
20
20
@@ -23,26 +23,26 @@ categories = ['videos']
23paging = True
23paging = True
24
24
25# search-url
25# search-url
26−base_url = 'https://vimeo.com'
26+base_url = 'http://vimeo.com'
27search_url = base_url + '/search/page:{pageno}?{query}'
27search_url = base_url + '/search/page:{pageno}?{query}'
28
28
29# specific xpath variables
29# specific xpath variables
30+results_xpath = '//div[@id="browse_content"]/ol/li'
30url_xpath = './a/@href'
31url_xpath = './a/@href'
32+title_xpath = './a/div[@class="data"]/p[@class="title"]'
31content_xpath = './a/img/@src'
33content_xpath = './a/img/@src'
32−title_xpath = './a/div[@class="data"]/p[@class="title"]/text()'
33−results_xpath = '//div[@id="browse_content"]/ol/li'
34publishedDate_xpath = './/p[@class="meta"]//attribute::datetime'
34publishedDate_xpath = './/p[@class="meta"]//attribute::datetime'
35
35
36+embedded_url = '<iframe data-src="//player.vimeo.com/video{videoid}" ' +\
37+ 'width="540" height="304" frameborder="0" ' +\
38+ 'webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>'
39+
36
40
37# do search-request
41# do search-request
38def request(query, params):
42def request(query, params):
39 params['url'] = search_url.format(pageno=params['pageno'],
43 params['url'] = search_url.format(pageno=params['pageno'],
40 query=urlencode({'q': query}))
44 query=urlencode({'q': query}))
41
45
42− # TODO required?
43− params['cookies']['__utma'] =\
44− '00000000.000#0000000.0000000000.0000000000.0000000000.0'
45−
46 return params
46 return params
47
47
48
48
@@ -51,16 +51,17 @@ def response(resp):
51 results = []
51 results = []
52
52
53 dom = html.fromstring(resp.text)
53 dom = html.fromstring(resp.text)
54−
55 p = HTMLParser()
54 p = HTMLParser()
56
55
57 # parse results
56 # parse results
58 for result in dom.xpath(results_xpath):
57 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
60 title = p.unescape(extract_text(result.xpath(title_xpath)))
60 title = p.unescape(extract_text(result.xpath(title_xpath)))
61 thumbnail = extract_text(result.xpath(content_xpath)[0])
61 thumbnail = extract_text(result.xpath(content_xpath)[0])
62 publishedDate = parser.parse(extract_text(
62 publishedDate = parser.parse(extract_text(
63 result.xpath(publishedDate_xpath)[0]))
63 result.xpath(publishedDate_xpath)[0]))
64+ embedded = embedded_url.format(videoid=videoid)
64
65
65 # append result
66 # append result
66 results.append({'url': url,
67 results.append({'url': url,
@@ -68,6 +69,7 @@ def response(resp):
68 'content': '',
69 'content': '',
69 'template': 'videos.html',
70 'template': 'videos.html',
70 'publishedDate': publishedDate,
71 'publishedDate': publishedDate,
72+ 'embedded': embedded,
71 'thumbnail': thumbnail})
73 'thumbnail': thumbnail})
72
74
73 # return results
75 # return results
searx/engines/wikidata.py+14
@@ -1,6 +1,8 @@
1import json
1import json
2from requests import get
2from requests import get
3from urllib import urlencode
3from urllib import urlencode
4+import locale
5+import dateutil.parser
4
6
5result_count = 1
7result_count = 1
6wikidata_host = 'https://www.wikidata.org'
8wikidata_host = 'https://www.wikidata.org'
@@ -35,6 +37,16 @@ def response(resp):
35 language = resp.search_params['language'].split('_')[0]
37 language = resp.search_params['language'].split('_')[0]
36 if language == 'all':
38 if language == 'all':
37 language = 'en'
39 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+
38 url = url_detail.format(query=urlencode({'ids': '|'.join(wikidata_ids),
50 url = url_detail.format(query=urlencode({'ids': '|'.join(wikidata_ids),
39 'languages': language + '|en'}))
51 'languages': language + '|en'}))
40
52
@@ -164,10 +176,12 @@ def getDetail(jsonresponse, wikidata_id, language):
164
176
165 date_of_birth = get_time(claims, 'P569', None)
177 date_of_birth = get_time(claims, 'P569', None)
166 if date_of_birth is not None:
178 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))
167 attributes.append({'label': 'Date of birth', 'value': date_of_birth})
180 attributes.append({'label': 'Date of birth', 'value': date_of_birth})
168
181
169 date_of_death = get_time(claims, 'P570', None)
182 date_of_death = get_time(claims, 'P570', None)
170 if date_of_death is not None:
183 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))
171 attributes.append({'label': 'Date of death', 'value': date_of_death})
185 attributes.append({'label': 'Date of death', 'value': date_of_death})
172
186
173 if len(attributes) == 0 and len(urls) == 2 and len(description) == 0:
187 if len(attributes) == 0 and len(urls) == 2 and len(description) == 0:
searx/engines/youtube.py+11−2
@@ -6,7 +6,7 @@
6# @using-api yes
6# @using-api yes
7# @results JSON
7# @results JSON
8# @stable yes
8# @stable yes
9−# @parse url, title, content, publishedDate, thumbnail
9+# @parse url, title, content, publishedDate, thumbnail, embedded
10
10
11from json import loads
11from json import loads
12from urllib import urlencode
12from urllib import urlencode
@@ -19,7 +19,11 @@ language_support = True
19
19
20# search-url
20# search-url
21base_url = 'https://gdata.youtube.com/feeds/api/videos'
21base_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>'
23
27
24
28
25# do search-request
29# do search-request
@@ -60,6 +64,8 @@ def response(resp):
60 if url.endswith('&'):
64 if url.endswith('&'):
61 url = url[:-1]
65 url = url[:-1]
62
66
67+ videoid = url[32:]
68+
63 title = result['title']['$t']
69 title = result['title']['$t']
64 content = ''
70 content = ''
65 thumbnail = ''
71 thumbnail = ''
@@ -72,12 +78,15 @@ def response(resp):
72
78
73 content = result['content']['$t']
79 content = result['content']['$t']
74
80
81+ embedded = embedded_url.format(videoid=videoid)
82+
75 # append result
83 # append result
76 results.append({'url': url,
84 results.append({'url': url,
77 'title': title,
85 'title': title,
78 'content': content,
86 'content': content,
79 'template': 'videos.html',
87 'template': 'videos.html',
80 'publishedDate': publishedDate,
88 'publishedDate': publishedDate,
89+ 'embedded': embedded,
81 'thumbnail': thumbnail})
90 'thumbnail': thumbnail})
82
91
83 # return results
92 # return results
searx/https_rewrite.py+5−3
@@ -20,8 +20,11 @@ from urlparse import urlparse
20from lxml import etree
20from lxml import etree
21from os import listdir
21from os import listdir
22from os.path import isfile, isdir, join
22from os.path import isfile, isdir, join
23+from searx import logger
23
24
24
25
26+logger = logger.getChild("https_rewrite")
27+
25# https://gitweb.torproject.org/\
28# https://gitweb.torproject.org/\
26# pde/https-everywhere.git/tree/4.0:/src/chrome/content/rules
29# pde/https-everywhere.git/tree/4.0:/src/chrome/content/rules
27
30
@@ -131,7 +134,7 @@ def load_single_https_ruleset(filepath):
131def load_https_rules(rules_path):
134def load_https_rules(rules_path):
132 # check if directory exists
135 # check if directory exists
133 if not isdir(rules_path):
136 if not isdir(rules_path):
134− print("[E] directory not found: '" + rules_path + "'")
137+ logger.error("directory not found: '" + rules_path + "'")
135 return
138 return
136
139
137 # search all xml files which are stored in the https rule directory
140 # search all xml files which are stored in the https rule directory
@@ -151,8 +154,7 @@ def load_https_rules(rules_path):
151 # append ruleset
154 # append ruleset
152 https_rules.append(ruleset)
155 https_rules.append(ruleset)
153
156
154− print(' * {n} https-rules loaded'.format(n=len(https_rules)))
157+ logger.info('{n} rules loaded'.format(n=len(https_rules)))
155−
156
158
157
159
158def https_url_rewrite(result):
160def https_url_rewrite(result):
searx/search.py+16−8
@@ -29,21 +29,23 @@ from searx.engines import (
29from searx.languages import language_codes
29from searx.languages import language_codes
30from searx.utils import gen_useragent
30from searx.utils import gen_useragent
31from searx.query import Query
31from searx.query import Query
32+from searx import logger
32
33
33
34
35+logger = logger.getChild('search')
36+
34number_of_searches = 0
37number_of_searches = 0
35
38
36
39
37def search_request_wrapper(fn, url, engine_name, **kwargs):
40def search_request_wrapper(fn, url, engine_name, **kwargs):
38 try:
41 try:
39 return fn(url, **kwargs)
42 return fn(url, **kwargs)
40− except Exception, e:
43+ except:
41 # increase errors stats
44 # increase errors stats
42 engines[engine_name].stats['errors'] += 1
45 engines[engine_name].stats['errors'] += 1
43
46
44 # print engine name and specific error message
47 # print engine name and specific error message
45− print('[E] Error with engine "{0}":\n\t{1}'.format(
48+ logger.exception('engine crash: {0}'.format(engine_name))
46− engine_name, str(e)))
47 return
49 return
48
50
49
51
@@ -66,14 +68,19 @@ def threaded_requests(requests):
66 remaining_time = max(0.0, timeout_limit - (time() - search_start))
68 remaining_time = max(0.0, timeout_limit - (time() - search_start))
67 th.join(remaining_time)
69 th.join(remaining_time)
68 if th.isAlive():
70 if th.isAlive():
69− print('engine timeout: {0}'.format(th._engine_name))
71+ logger.warning('engine timeout: {0}'.format(th._engine_name))
70−
71
72
72
73
73# get default reqest parameter
74# get default reqest parameter
74def default_request_params():
75def default_request_params():
75 return {
76 return {
77+ 'method': 'GET',
78+ 'headers': {},
79+ 'data': {},
80+ 'url': '',
81+ 'cookies': {},
76− 'method': 'GET', 'headers': {}, 'data': {}, 'url': '', 'cookies': {}, 'verify': True}
82+ 'verify': True
83+ }
77
84
78
85
79# create a callback wrapper for the search engine results
86# create a callback wrapper for the search engine results
@@ -487,14 +494,15 @@ class Search(object):
487 continue
494 continue
488
495
489 # append request to list
496 # 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']))
491
500
492 if not requests:
501 if not requests:
493 return results, suggestions, answers, infoboxes
502 return results, suggestions, answers, infoboxes
494 # send all search-request
503 # send all search-request
495 threaded_requests(requests)
504 threaded_requests(requests)
496
505
497−
498 while not results_queue.empty():
506 while not results_queue.empty():
499 engine_name, engine_results = results_queue.get_nowait()
507 engine_name, engine_results = results_queue.get_nowait()
500
508
searx/settings.yml+49−2
@@ -35,6 +35,10 @@ engines:
35 engine : currency_convert
35 engine : currency_convert
36 categories : general
36 categories : general
37 shortcut : cc
37 shortcut : cc
38+
39+ - name : deezer
40+ engine : deezer
41+ shortcut : dz
38
42
39 - name : deviantart
43 - name : deviantart
40 engine : deviantart
44 engine : deviantart
@@ -44,6 +48,10 @@ engines:
44 - name : ddg definitions
48 - name : ddg definitions
45 engine : duckduckgo_definitions
49 engine : duckduckgo_definitions
46 shortcut : ddd
50 shortcut : ddd
51+
52+ - name : digg
53+ engine : digg
54+ shortcut : dg
47
55
48 - name : wikidata
56 - name : wikidata
49 engine : wikidata
57 engine : wikidata
@@ -70,10 +78,14 @@ engines:
70 shortcut : px
78 shortcut : px
71
79
72 - name : flickr
80 - name : flickr
73− engine : flickr
74 categories : images
81 categories : images
75 shortcut : fl
82 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
77
89
78 - name : general-file
90 - name : general-file
79 engine : generalfile
91 engine : generalfile
@@ -95,6 +107,33 @@ engines:
95 engine : google_news
107 engine : google_news
96 shortcut : gon
108 shortcut : gon
97
109
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+
98 - name : openstreetmap
137 - name : openstreetmap
99 engine : openstreetmap
138 engine : openstreetmap
100 shortcut : osm
139 shortcut : osm
@@ -127,6 +166,13 @@ engines:
127 engine : searchcode_code
166 engine : searchcode_code
128 shortcut : scc
167 shortcut : scc
129
168
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+
130 - name : startpage
176 - name : startpage
131 engine : startpage
177 engine : startpage
132 shortcut : sp
178 shortcut : sp
@@ -194,3 +240,4 @@ locales:
194 it : Italiano
240 it : Italiano
195 nl : Nederlands
241 nl : Nederlands
196 ja : 日本語 (Japanese)
242 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 @@
1install dependencies
1install dependencies
2~~~~~~~~~~~~~~~~~~~~
2~~~~~~~~~~~~~~~~~~~~
3
3
4−run this command in the directory ``searx/static/oscar``
4+run this command in the directory ``searx/static/themes/oscar``
5
5
6``npm install``
6``npm install``
7
7
8compile sources
8compile sources
9~~~~~~~~~~~~~~~
9~~~~~~~~~~~~~~~
10
10
11−run this command in the directory ``searx/static/oscar``
11+run this command in the directory ``searx/static/themes/oscar``
12
12
13``grunt``
13``grunt``
14
14
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 @@
16 */
16 */
17
17
18requirejs.config({
18requirejs.config({
19− baseUrl: './static/oscar/js',
19+ baseUrl: './static/themes/oscar/js',
20 paths: {
20 paths: {
21 app: '../app'
21 app: '../app'
22 }
22 }
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(){
63 $(this).toggleClass(btnClass);
63 $(this).toggleClass(btnClass);
64 $(this).toggleClass('btn-default');
64 $(this).toggleClass('btn-default');
65 });
65 });
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+ });
66
78
67 /**
79 /**
68 * Select or deselect every categories on double clic
80 * 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(){
116
116
117 // TODO hack
117 // TODO hack
118 // change default imagePath
118 // change default imagePath
119− L.Icon.Default.imagePath = "./static/oscar/img/map";
119+ L.Icon.Default.imagePath = "./static/themes/oscar/img/map";
120
120
121 // init map
121 // init map
122 var map = L.map(leaflet_target);
122 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 @@
1<div class="result {{ result.class }}">
1<div class="result {{ result.class }}">
2
2
3− {% if result['favicon'] %}
3+ {% if "icon_"~result.engine~".ico" in favicons %}
4− <img width="14" height="14" class="favicon" src="static/{{theme}}/img/icon_{{result['favicon']}}.ico" alt="{{result['favicon']}}" />
4+ <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />
5 {% endif %}
5 {% endif %}
6
6
7 <div>
7 <div>
searx/templates/courgette/result_templates/map.html+2−2
@@ -1,7 +1,7 @@
1<div class="result {{ result.class }}">
1<div class="result {{ result.class }}">
2
2
3− {% if result['favicon'] %}
3+ {% if "icon_"~result.engine~".ico" in favicons %}
4− <img width="14" height="14" class="favicon" src="static/{{theme}}/img/icon_{{result['favicon']}}.ico" alt="{{result['favicon']}}" />
4+ <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />
5 {% endif %}
5 {% endif %}
6
6
7 <div>
7 <div>
searx/templates/courgette/result_templates/videos.html+2−2
@@ -1,6 +1,6 @@
1<div class="result">
1<div class="result">
2− {% if result['favicon'] %}
2+ {% if "icon_"~result.engine~".ico" in favicons %}
3− <img width="14" height="14" class="favicon" src="static/{{theme}}/img/icon_{{result['favicon']}}.ico" alt="{{result['favicon']}}" />
3+ <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />
4 {% endif %}
4 {% endif %}
5
5
6 <h3 class="result_title"><a href="{{ result.url }}">{{ result.title|safe }}</a></h3>
6 <h3 class="result_title"><a href="{{ result.url }}">{{ result.title|safe }}</a></h3>
searx/templates/courgette/results.html+1−1
@@ -43,7 +43,7 @@
43
43
44 {% for result in results %}
44 {% for result in results %}
45 {% if result['template'] %}
45 {% if result['template'] %}
46− {% include 'courgette/result_templates/'+result['template'] %}
46+ {% include get_result_template('courgette', result['template']) %}
47 {% else %}
47 {% else %}
48 {% include 'courgette/result_templates/default.html' %}
48 {% include 'courgette/result_templates/default.html' %}
49 {% endif %}
49 {% endif %}
searx/templates/default/result_templates/default.html+1−1
@@ -1,5 +1,5 @@
1<div class="result {{ result.class }}">
1<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>
3 <p class="url">{{ result.pretty_url }} <a class="cache_link" href="https://web.archive.org/web/{{ result.url }}">cached</a></p>
3 <p class="url">{{ result.pretty_url }} <a class="cache_link" href="https://web.archive.org/web/{{ result.url }}">cached</a></p>
4 {% if result.publishedDate %}<p class="published_date">{{ result.publishedDate }}</p>{% endif %}
4 {% if result.publishedDate %}<p class="published_date">{{ result.publishedDate }}</p>{% endif %}
5 <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>
5 <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 @@
1<div class="result {{ result.class }}">
1<div class="result {{ result.class }}">
2
2
3− {% if result['favicon'] %}
3+ {% if "icon_"~result.engine~".ico" in favicons %}
4− <img width="14" height="14" class="favicon" src="static/{{theme}}/img/icon_{{result['favicon']}}.ico" alt="{{result['favicon']}}" />
4+ <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />
5 {% endif %}
5 {% endif %}
6
6
7 <div>
7 <div>
searx/templates/default/result_templates/torrent.html+3
@@ -1,4 +1,7 @@
1<div class="result torrent_result">
1<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 %}
2 <h3 class="result_title"><a href="{{ result.url }}">{{ result.title|safe }}</a></h3>
5 <h3 class="result_title"><a href="{{ result.url }}">{{ result.title|safe }}</a></h3>
3 <p class="url">{{ result.pretty_url }}</p>
6 <p class="url">{{ result.pretty_url }}</p>
4 {% if result.content %}<p class="content">{{ result.content|safe }}</p>{% endif %}
7 {% if result.content %}<p class="content">{{ result.content|safe }}</p>{% endif %}
searx/templates/default/result_templates/videos.html+1−1
@@ -1,5 +1,5 @@
1<div class="result">
1<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>
3 {% if result.publishedDate %}<p class="published_date">{{ result.publishedDate }}</p>{% endif %}
3 {% if result.publishedDate %}<p class="published_date">{{ result.publishedDate }}</p>{% endif %}
4 <a href="{{ result.url }}"><img class="thumbnail" src="{{ result.thumbnail }}" title="{{ result.title|striptags }}" alt="{{ result.title|striptags }}"/></a>
4 <a href="{{ result.url }}"><img class="thumbnail" src="{{ result.thumbnail }}" title="{{ result.title|striptags }}" alt="{{ result.title|striptags }}"/></a>
5 <p class="url">{{ result.url }}</p>
5 <p class="url">{{ result.url }}</p>
searx/templates/default/results.html+1−1
@@ -59,7 +59,7 @@
59
59
60 {% for result in results %}
60 {% for result in results %}
61 {% if result['template'] %}
61 {% if result['template'] %}
62− {% include 'default/result_templates/'+result['template'] %}
62+ {% include get_result_template('default', result['template']) %}
63 {% else %}
63 {% else %}
64 {% include 'default/result_templates/default.html' %}
64 {% include 'default/result_templates/default.html' %}
65 {% endif %}
65 {% endif %}
searx/templates/oscar/macros.html+3−3
@@ -6,12 +6,12 @@
6<!-- Draw favicon -->
6<!-- Draw favicon -->
7<!-- TODO: using url_for methode -->
7<!-- TODO: using url_for methode -->
8{% macro draw_favicon(favicon) -%}
8{% 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 }}" />
10{%- endmacro %}
10{%- endmacro %}
11
11
12<!-- Draw result header -->
12<!-- Draw result header -->
13−{% macro result_header(result) -%}
13+{% macro result_header(result, favicons) -%}
14− <h4 class="result_header">{% if result.favicon %}{{ draw_favicon(result.favicon) }} {% endif %}<a href="{{ result.url }}">{{ result.title|safe }}</a></h4>
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>
15{%- endmacro %}
15{%- endmacro %}
16
16
17<!-- Draw result sub header -->
17<!-- Draw result sub header -->
searx/templates/oscar/result_templates/code.html+1−1
@@ -1,6 +1,6 @@
1{% from 'oscar/macros.html' import result_header, result_sub_header, result_footer, icon %}
1{% from 'oscar/macros.html' import result_header, result_sub_header, result_footer, icon %}
2
2
3−{{ result_header(result) }}
3+{{ result_header(result, favicons) }}
4{{ result_sub_header(result) }}
4{{ result_sub_header(result) }}
5
5
6{% if result.content %}<p class="result-content">{{ result.content|safe }}</p>{% endif %}
6{% 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 %}
2
2
3−{{ result_header(result) }}
3+{{ result_header(result, favicons) }}
4{{ result_sub_header(result) }}
4{{ result_sub_header(result) }}
5
5
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+
6{% if result.content %}<p class="result-content">{{ result.content|safe }}</p>{% endif %}
18{% if result.content %}<p class="result-content">{{ result.content|safe }}</p>{% endif %}
7
19
8{{ result_footer(result) }}
20{{ result_footer(result) }}
searx/templates/oscar/result_templates/images.html+1−1
@@ -9,7 +9,7 @@
9 <div class="modal-content">
9 <div class="modal-content">
10 <div class="modal-header">
10 <div class="modal-header">
11 <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
11 <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>
13 </div>
13 </div>
14 <div class="modal-body">
14 <div class="modal-body">
15 <img class="img-responsive center-block" src="{{ result.img_src }}" alt="{{ result.title }}">
15 <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 @@
1{% from 'oscar/macros.html' import result_header, result_sub_header, result_footer, icon %}
1{% from 'oscar/macros.html' import result_header, result_sub_header, result_footer, icon %}
2
2
3−{{ result_header(result) }}
3+{{ result_header(result, favicons) }}
4{{ result_sub_header(result) }}
4{{ result_sub_header(result) }}
5
5
6{% if (result.latitude and result.longitude) or result.boundingbox %}
6{% if (result.latitude and result.longitude) or result.boundingbox %}
searx/templates/oscar/result_templates/torrent.html+1−1
@@ -1,6 +1,6 @@
1{% from 'oscar/macros.html' import result_header, result_sub_header, result_footer, icon %}
1{% from 'oscar/macros.html' import result_header, result_sub_header, result_footer, icon %}
2
2
3−{{ result_header(result) }}
3+{{ result_header(result, favicons) }}
4{{ result_sub_header(result) }}
4{{ result_sub_header(result) }}
5
5
6<p class="result-content">{{ icon('transfer') }} {{ _('Seeder') }} <span class="badge">{{ result.seed }}</span>, {{ _('Leecher') }} <span class="badge">{{ result.leech }}</span>
6<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 %}
2
2
3−{{ result_header(result) }}
3+{{ result_header(result, favicons) }}
4{{ result_sub_header(result) }}
4{{ result_sub_header(result) }}
5
5
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+
6<div class="container-fluid">
18<div class="container-fluid">
7 <div class="row">
19 <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>
9 {% if result.content %}<p class="col-xs-12 col-sm-8 col-md-8 result-content">{{ result.content|safe }}</p>{% endif %}
21 {% if result.content %}<p class="col-xs-12 col-sm-8 col-md-8 result-content">{{ result.content|safe }}</p>{% endif %}
10 </div>
22 </div>
11</div>
23</div>
searx/templates/oscar/results.html+5−1
@@ -17,7 +17,11 @@
17 {% for result in results %}
17 {% for result in results %}
18 <div class="result {% if result['template'] %}result-{{ result.template|replace('.html', '') }}{% else %}result-default{% endif %}">
18 <div class="result {% if result['template'] %}result-{{ result.template|replace('.html', '') }}{% else %}result-default{% endif %}">
19 {% set index = loop.index %}
19 {% set index = loop.index %}
20+ {% if result.template %}
21+ {% include get_result_template('oscar', result['template']) %}
22+ {% else %}
20− {% if result.template %}{% include 'oscar/result_templates/'+result['template'] %}{% else %}{% include 'oscar/result_templates/default.html' %}{% endif %}
23+ {% include 'oscar/result_templates/default.html' %}
24+ {% endif %}
21 </div>
25 </div>
22 {% endfor %}
26 {% endfor %}
23
27
searx/tests/test_webapp.py+1−1
@@ -49,7 +49,7 @@ class ViewsTestCase(SearxTestCase):
49 )
49 )
50 result = self.app.post('/', data={'q': 'test'})
50 result = self.app.post('/', data={'q': 'test'})
51 self.assertIn(
51 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
53 result.data
53 result.data
54 )
54 )
55 self.assertIn(
55 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 @@
4#
4#
5# Translators:
5# Translators:
6# pointhi, 2014
6# pointhi, 2014
7−# stf <stefan.marsiske@gmail.com>, 2014
8# rike, 2014
7# rike, 2014
8+# stf <stefan.marsiske@gmail.com>, 2014
9msgid ""
9msgid ""
10msgstr ""
10msgstr ""
11"Project-Id-Version: searx\n"
11"Project-Id-Version: searx\n"
12"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
12"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
13−"POT-Creation-Date: 2014-11-26 20:41+0100\n"
13+"POT-Creation-Date: 2015-01-05 20:54+0100\n"
14−"PO-Revision-Date: 2014-03-15 18:40+0000\n"
14+"PO-Revision-Date: 2014-12-27 10:30+0000\n"
15"Last-Translator: pointhi\n"
15"Last-Translator: pointhi\n"
16"Language-Team: German "
16"Language-Team: German "
17"(http://www.transifex.com/projects/p/searx/language/de/)\n"
17"(http://www.transifex.com/projects/p/searx/language/de/)\n"
@@ -21,31 +21,31 @@ msgstr ""
21"Content-Transfer-Encoding: 8bit\n"
21"Content-Transfer-Encoding: 8bit\n"
22"Generated-By: Babel 1.3\n"
22"Generated-By: Babel 1.3\n"
23
23
24−#: searx/webapp.py:308
24+#: searx/webapp.py:263
25msgid "{minutes} minute(s) ago"
25msgid "{minutes} minute(s) ago"
26msgstr "vor {minutes} Minute(n)"
26msgstr "vor {minutes} Minute(n)"
27
27
28−#: searx/webapp.py:310
28+#: searx/webapp.py:265
29msgid "{hours} hour(s), {minutes} minute(s) ago"
29msgid "{hours} hour(s), {minutes} minute(s) ago"
30msgstr "vor {hours} Stunde(n), {minutes} Minute(n)"
30msgstr "vor {hours} Stunde(n), {minutes} Minute(n)"
31
31
32−#: searx/engines/__init__.py:177
32+#: searx/engines/__init__.py:179
33msgid "Page loads (sec)"
33msgid "Page loads (sec)"
34msgstr "Ladezeit (sek)"
34msgstr "Ladezeit (sek)"
35
35
36−#: searx/engines/__init__.py:181
36+#: searx/engines/__init__.py:183
37msgid "Number of results"
37msgid "Number of results"
38msgstr "Trefferanzahl"
38msgstr "Trefferanzahl"
39
39
40−#: searx/engines/__init__.py:185
40+#: searx/engines/__init__.py:187
41msgid "Scores"
41msgid "Scores"
42msgstr "Punkte"
42msgstr "Punkte"
43
43
44−#: searx/engines/__init__.py:189
44+#: searx/engines/__init__.py:191
45msgid "Scores per result"
45msgid "Scores per result"
46msgstr "Punkte pro Treffer"
46msgstr "Punkte pro Treffer"
47
47
48−#: searx/engines/__init__.py:193
48+#: searx/engines/__init__.py:195
49msgid "Errors"
49msgid "Errors"
50msgstr "Fehler"
50msgstr "Fehler"
51
51
@@ -125,22 +125,22 @@ msgstr "Kategorie"
125
125
126#: searx/templates/courgette/preferences.html:72
126#: searx/templates/courgette/preferences.html:72
127#: searx/templates/courgette/preferences.html:83
127#: searx/templates/courgette/preferences.html:83
128−#: searx/templates/default/preferences.html:73
128+#: searx/templates/default/preferences.html:72
129−#: searx/templates/default/preferences.html:85
129+#: searx/templates/default/preferences.html:83
130#: searx/templates/oscar/preferences.html:118
130#: searx/templates/oscar/preferences.html:118
131msgid "Allow"
131msgid "Allow"
132msgstr "Erlauben"
132msgstr "Erlauben"
133
133
134#: searx/templates/courgette/preferences.html:72
134#: searx/templates/courgette/preferences.html:72
135#: searx/templates/courgette/preferences.html:84
135#: searx/templates/courgette/preferences.html:84
136−#: searx/templates/default/preferences.html:73
136+#: searx/templates/default/preferences.html:72
137−#: searx/templates/default/preferences.html:86
137+#: searx/templates/default/preferences.html:84
138#: searx/templates/oscar/preferences.html:117
138#: searx/templates/oscar/preferences.html:117
139msgid "Block"
139msgid "Block"
140msgstr "Blockieren"
140msgstr "Blockieren"
141
141
142#: searx/templates/courgette/preferences.html:92
142#: searx/templates/courgette/preferences.html:92
143−#: searx/templates/default/preferences.html:94
143+#: searx/templates/default/preferences.html:92
144#: searx/templates/oscar/preferences.html:132
144#: searx/templates/oscar/preferences.html:132
145msgid ""
145msgid ""
146"These settings are stored in your cookies, this allows us not to store "
146"These settings are stored in your cookies, this allows us not to store "
@@ -150,54 +150,54 @@ msgstr ""
150"damit wir keine Ihrer persönlichen Daten speichern müssen."
150"damit wir keine Ihrer persönlichen Daten speichern müssen."
151
151
152#: searx/templates/courgette/preferences.html:94
152#: searx/templates/courgette/preferences.html:94
153−#: searx/templates/default/preferences.html:96
153+#: searx/templates/default/preferences.html:94
154#: searx/templates/oscar/preferences.html:134
154#: searx/templates/oscar/preferences.html:134
155msgid ""
155msgid ""
156"These cookies serve your sole convenience, we don't use these cookies to "
156"These cookies serve your sole convenience, we don't use these cookies to "
157"track you."
157"track you."
158msgstr ""
158msgstr ""
159−"Diese Cookies dienen einzig Ihrem Komfort, wir verwenden sie nicht, um "
159+"Diese Cookies dienen einzig Ihrem Komfort. Wir verwenden sie nicht, um "
160"Sie zu überwachen."
160"Sie zu überwachen."
161
161
162#: searx/templates/courgette/preferences.html:97
162#: searx/templates/courgette/preferences.html:97
163−#: searx/templates/default/preferences.html:99
163+#: searx/templates/default/preferences.html:97
164#: searx/templates/oscar/preferences.html:137
164#: searx/templates/oscar/preferences.html:137
165msgid "save"
165msgid "save"
166msgstr "Speichern"
166msgstr "Speichern"
167
167
168#: searx/templates/courgette/preferences.html:98
168#: searx/templates/courgette/preferences.html:98
169−#: searx/templates/default/preferences.html:100
169+#: searx/templates/default/preferences.html:98
170#: searx/templates/oscar/preferences.html:138
170#: searx/templates/oscar/preferences.html:138
171msgid "back"
171msgid "back"
172msgstr "Zurück"
172msgstr "Zurück"
173
173
174#: searx/templates/courgette/results.html:12
174#: searx/templates/courgette/results.html:12
175#: searx/templates/default/results.html:12
175#: searx/templates/default/results.html:12
176−#: searx/templates/oscar/results.html:78
176+#: searx/templates/oscar/results.html:87
177msgid "Search URL"
177msgid "Search URL"
178msgstr "Such-URL"
178msgstr "Such-URL"
179
179
180#: searx/templates/courgette/results.html:16
180#: searx/templates/courgette/results.html:16
181#: searx/templates/default/results.html:16
181#: searx/templates/default/results.html:16
182−#: searx/templates/oscar/results.html:83
182+#: searx/templates/oscar/results.html:92
183msgid "Download results"
183msgid "Download results"
184msgstr "Ergebnisse herunterladen"
184msgstr "Ergebnisse herunterladen"
185
185
186#: searx/templates/courgette/results.html:34
186#: searx/templates/courgette/results.html:34
187#: searx/templates/default/results.html:42
187#: searx/templates/default/results.html:42
188−#: searx/templates/oscar/results.html:58
188+#: searx/templates/oscar/results.html:67
189msgid "Suggestions"
189msgid "Suggestions"
190msgstr "Vorschläge"
190msgstr "Vorschläge"
191
191
192#: searx/templates/courgette/results.html:62
192#: searx/templates/courgette/results.html:62
193#: searx/templates/default/results.html:78
193#: searx/templates/default/results.html:78
194−#: searx/templates/oscar/results.html:37
194+#: searx/templates/oscar/results.html:41
195msgid "previous page"
195msgid "previous page"
196msgstr "vorherige Seite"
196msgstr "vorherige Seite"
197
197
198#: searx/templates/courgette/results.html:73
198#: searx/templates/courgette/results.html:73
199#: searx/templates/default/results.html:89
199#: searx/templates/default/results.html:89
200−#: searx/templates/oscar/results.html:45
200+#: searx/templates/oscar/results.html:49
201msgid "next page"
201msgid "next page"
202msgstr "nächste Seite"
202msgstr "nächste Seite"
203
203
@@ -210,39 +210,27 @@ msgstr "Suche nach..."
210#: searx/templates/courgette/stats.html:4 searx/templates/default/stats.html:4
210#: searx/templates/courgette/stats.html:4 searx/templates/default/stats.html:4
211#: searx/templates/oscar/stats.html:5
211#: searx/templates/oscar/stats.html:5
212msgid "Engine stats"
212msgid "Engine stats"
213−msgstr "Suchmaschinenstatistik"
213+msgstr "Suchmaschinenstatistiken"
214
214
215#: searx/templates/default/categories.html:8
215#: searx/templates/default/categories.html:8
216msgid "Click on the magnifier to perform search"
216msgid "Click on the magnifier to perform search"
217−msgstr ""
217+msgstr "klicke auf die Lupe, um die Suche zu starten"
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 ""
230
218
231#: searx/templates/default/results.html:34
219#: searx/templates/default/results.html:34
232msgid "Answers"
220msgid "Answers"
233−msgstr ""
221+msgstr "Antworten"
234
222
235#: searx/templates/oscar/base.html:69
223#: searx/templates/oscar/base.html:69
236msgid "Powered by"
224msgid "Powered by"
237−msgstr ""
225+msgstr "Powered by"
238
226
239#: searx/templates/oscar/base.html:69
227#: searx/templates/oscar/base.html:69
240msgid "a privacy-respecting, hackable metasearch engine"
228msgid "a privacy-respecting, hackable metasearch engine"
241−msgstr "eine privatsphären respektierende, hackbare Metasuchmaschine"
229+msgstr "eine privatsphären-respektierende, hackbare Metasuchmaschine"
242
230
243#: searx/templates/oscar/navbar.html:6
231#: searx/templates/oscar/navbar.html:6
244msgid "Toggle navigation"
232msgid "Toggle navigation"
245−msgstr ""
233+msgstr "Navigation umschalten"
246
234
247#: searx/templates/oscar/navbar.html:15
235#: searx/templates/oscar/navbar.html:15
248msgid "home"
236msgid "home"
@@ -260,15 +248,15 @@ msgstr "Suchmaschinen"
260
248
261#: searx/templates/oscar/preferences.html:39
249#: searx/templates/oscar/preferences.html:39
262msgid "What language do you prefer for search?"
250msgid "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?"
264
252
265#: searx/templates/oscar/preferences.html:50
253#: searx/templates/oscar/preferences.html:50
266msgid "Change the language of the layout"
254msgid "Change the language of the layout"
267−msgstr "Ändere die Sprache des Layouts"
255+msgstr "ändere die Sprache des Layouts"
268
256
269#: searx/templates/oscar/preferences.html:63
257#: searx/templates/oscar/preferences.html:63
270msgid "Find stuff as you type"
258msgid "Find stuff as you type"
271−msgstr "finde Sachen während der Eingabe"
259+msgstr "zeige Vorschläge während der Eingabe an"
272
260
273#: searx/templates/oscar/preferences.html:73
261#: searx/templates/oscar/preferences.html:73
274msgid ""
262msgid ""
@@ -288,9 +276,9 @@ msgstr "ändere das Aussehen von searx"
288msgid "Search results"
276msgid "Search results"
289msgstr "Suchergebnisse"
277msgstr "Suchergebnisse"
290
278
291−#: searx/templates/oscar/results.html:73
279+#: searx/templates/oscar/results.html:82
292msgid "Links"
280msgid "Links"
293−msgstr ""
281+msgstr "Links"
294
282
295#: searx/templates/oscar/search.html:6 searx/templates/oscar/search_full.html:7
283#: searx/templates/oscar/search.html:6 searx/templates/oscar/search_full.html:7
296msgid "Start search"
284msgid "Start search"
@@ -302,7 +290,7 @@ msgstr "Suchfilter anzeigen"
302
290
303#: searx/templates/oscar/search_full.html:11
291#: searx/templates/oscar/search_full.html:11
304msgid "Hide search filters"
292msgid "Hide search filters"
305−msgstr "Suchfilter verstecke"
293+msgstr "Suchfilter verstecken"
306
294
307#: searx/templates/oscar/stats.html:2
295#: searx/templates/oscar/stats.html:2
308msgid "stats"
296msgid "stats"
@@ -318,11 +306,11 @@ msgstr "Schließen"
318#: searx/templates/oscar/messages/first_time.html:6
306#: searx/templates/oscar/messages/first_time.html:6
319#: searx/templates/oscar/messages/no_data_available.html:3
307#: searx/templates/oscar/messages/no_data_available.html:3
320msgid "Heads up!"
308msgid "Heads up!"
321−msgstr "Information!"
309+msgstr "Achtung!"
322
310
323#: searx/templates/oscar/messages/first_time.html:7
311#: searx/templates/oscar/messages/first_time.html:7
324msgid "It look like you are using searx first time."
312msgid "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."
326
314
327#: searx/templates/oscar/messages/js_disabled.html:2
315#: searx/templates/oscar/messages/js_disabled.html:2
328msgid "Warning!"
316msgid "Warning!"
@@ -330,7 +318,7 @@ msgstr "Warnung!"
330
318
331#: searx/templates/oscar/messages/js_disabled.html:3
319#: searx/templates/oscar/messages/js_disabled.html:3
332msgid "Please enable JavaScript to use full functionality of this site."
320msgid "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. "
334
322
335#: searx/templates/oscar/messages/no_data_available.html:4
323#: searx/templates/oscar/messages/no_data_available.html:4
336msgid "There is currently no data available. "
324msgid "There is currently no data available. "
@@ -346,7 +334,8 @@ msgid ""
346"categories."
334"categories."
347msgstr ""
335msgstr ""
348"Es konnten keine Suchergebnisse gefunden werden. Bitte nutze einen "
336"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. "
350
339
351#: searx/templates/oscar/messages/save_settings_successfull.html:7
340#: searx/templates/oscar/messages/save_settings_successfull.html:7
352msgid "Well done!"
341msgid "Well done!"
@@ -358,7 +347,7 @@ msgstr "Einstellungen wurden erfolgreich gespeichert."
358
347
359#: searx/templates/oscar/messages/unknow_error.html:7
348#: searx/templates/oscar/messages/unknow_error.html:7
360msgid "Oh snap!"
349msgid "Oh snap!"
361−msgstr "Verdammt!"
350+msgstr "Oh nein!"
362
351
363#: searx/templates/oscar/messages/unknow_error.html:8
352#: searx/templates/oscar/messages/unknow_error.html:8
364msgid "Something went wrong."
353msgid "Something went wrong."
@@ -369,7 +358,15 @@ msgstr "Irgendetwas ist falsch gelaufen."
369#: searx/templates/oscar/result_templates/torrent.html:6
358#: searx/templates/oscar/result_templates/torrent.html:6
370#: searx/templates/oscar/result_templates/videos.html:6
359#: searx/templates/oscar/result_templates/videos.html:6
371msgid "cached"
360msgid "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 ""
373
370
374#: searx/templates/oscar/result_templates/images.html:21
371#: searx/templates/oscar/result_templates/images.html:21
375msgid "Get image"
372msgid "Get image"
@@ -393,16 +390,33 @@ msgstr "Details anzeigen"
393
390
394#: searx/templates/oscar/result_templates/map.html:14
391#: searx/templates/oscar/result_templates/map.html:14
395msgid "hide details"
392msgid "hide details"
396−msgstr "Details verstecke"
393+msgstr "Details verstecken"
397
394
398#: searx/templates/oscar/result_templates/torrent.html:8
395#: searx/templates/oscar/result_templates/torrent.html:8
399msgid "Seeder"
396msgid "Seeder"
400−msgstr ""
397+msgstr "Seeder"
401
398
402#: searx/templates/oscar/result_templates/torrent.html:8
399#: searx/templates/oscar/result_templates/torrent.html:8
403msgid "Leecher"
400msgid "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"
404msgstr ""
409msgstr ""
405
410
411+msgid "Localization"
412+msgstr "Übersetzung"
413+
414+msgid "Yes"
415+msgstr "Ja"
416+
417+msgid "No"
418+msgstr "Nein"
419+
406# categories - manually added
420# categories - manually added
407# TODO - automatically add
421# TODO - automatically add
408msgid "files"
422msgid "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 ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: PROJECT VERSION\n"
8"Project-Id-Version: PROJECT VERSION\n"
9"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
9"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"
11"PO-Revision-Date: 2014-01-30 15:22+0100\n"
11"PO-Revision-Date: 2014-01-30 15:22+0100\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: en <LL@li.org>\n"
13"Language-Team: en <LL@li.org>\n"
@@ -17,31 +17,31 @@ msgstr ""
17"Content-Transfer-Encoding: 8bit\n"
17"Content-Transfer-Encoding: 8bit\n"
18"Generated-By: Babel 1.3\n"
18"Generated-By: Babel 1.3\n"
19
19
20−#: searx/webapp.py:308
20+#: searx/webapp.py:263
21msgid "{minutes} minute(s) ago"
21msgid "{minutes} minute(s) ago"
22msgstr ""
22msgstr ""
23
23
24−#: searx/webapp.py:310
24+#: searx/webapp.py:265
25msgid "{hours} hour(s), {minutes} minute(s) ago"
25msgid "{hours} hour(s), {minutes} minute(s) ago"
26msgstr ""
26msgstr ""
27
27
28−#: searx/engines/__init__.py:177
28+#: searx/engines/__init__.py:179
29msgid "Page loads (sec)"
29msgid "Page loads (sec)"
30msgstr ""
30msgstr ""
31
31
32−#: searx/engines/__init__.py:181
32+#: searx/engines/__init__.py:183
33msgid "Number of results"
33msgid "Number of results"
34msgstr ""
34msgstr ""
35
35
36−#: searx/engines/__init__.py:185
36+#: searx/engines/__init__.py:187
37msgid "Scores"
37msgid "Scores"
38msgstr ""
38msgstr ""
39
39
40−#: searx/engines/__init__.py:189
40+#: searx/engines/__init__.py:191
41msgid "Scores per result"
41msgid "Scores per result"
42msgstr ""
42msgstr ""
43
43
44−#: searx/engines/__init__.py:193
44+#: searx/engines/__init__.py:195
45msgid "Errors"
45msgid "Errors"
46msgstr ""
46msgstr ""
47
47
@@ -121,22 +121,22 @@ msgstr ""
121
121
122#: searx/templates/courgette/preferences.html:72
122#: searx/templates/courgette/preferences.html:72
123#: searx/templates/courgette/preferences.html:83
123#: searx/templates/courgette/preferences.html:83
124−#: searx/templates/default/preferences.html:73
124+#: searx/templates/default/preferences.html:72
125−#: searx/templates/default/preferences.html:85
125+#: searx/templates/default/preferences.html:83
126#: searx/templates/oscar/preferences.html:118
126#: searx/templates/oscar/preferences.html:118
127msgid "Allow"
127msgid "Allow"
128msgstr ""
128msgstr ""
129
129
130#: searx/templates/courgette/preferences.html:72
130#: searx/templates/courgette/preferences.html:72
131#: searx/templates/courgette/preferences.html:84
131#: searx/templates/courgette/preferences.html:84
132−#: searx/templates/default/preferences.html:73
132+#: searx/templates/default/preferences.html:72
133−#: searx/templates/default/preferences.html:86
133+#: searx/templates/default/preferences.html:84
134#: searx/templates/oscar/preferences.html:117
134#: searx/templates/oscar/preferences.html:117
135msgid "Block"
135msgid "Block"
136msgstr ""
136msgstr ""
137
137
138#: searx/templates/courgette/preferences.html:92
138#: searx/templates/courgette/preferences.html:92
139−#: searx/templates/default/preferences.html:94
139+#: searx/templates/default/preferences.html:92
140#: searx/templates/oscar/preferences.html:132
140#: searx/templates/oscar/preferences.html:132
141msgid ""
141msgid ""
142"These settings are stored in your cookies, this allows us not to store "
142"These settings are stored in your cookies, this allows us not to store "
@@ -144,7 +144,7 @@ msgid ""
144msgstr ""
144msgstr ""
145
145
146#: searx/templates/courgette/preferences.html:94
146#: searx/templates/courgette/preferences.html:94
147−#: searx/templates/default/preferences.html:96
147+#: searx/templates/default/preferences.html:94
148#: searx/templates/oscar/preferences.html:134
148#: searx/templates/oscar/preferences.html:134
149msgid ""
149msgid ""
150"These cookies serve your sole convenience, we don't use these cookies to "
150"These cookies serve your sole convenience, we don't use these cookies to "
@@ -152,44 +152,44 @@ msgid ""
152msgstr ""
152msgstr ""
153
153
154#: searx/templates/courgette/preferences.html:97
154#: searx/templates/courgette/preferences.html:97
155−#: searx/templates/default/preferences.html:99
155+#: searx/templates/default/preferences.html:97
156#: searx/templates/oscar/preferences.html:137
156#: searx/templates/oscar/preferences.html:137
157msgid "save"
157msgid "save"
158msgstr ""
158msgstr ""
159
159
160#: searx/templates/courgette/preferences.html:98
160#: searx/templates/courgette/preferences.html:98
161−#: searx/templates/default/preferences.html:100
161+#: searx/templates/default/preferences.html:98
162#: searx/templates/oscar/preferences.html:138
162#: searx/templates/oscar/preferences.html:138
163msgid "back"
163msgid "back"
164msgstr ""
164msgstr ""
165
165
166#: searx/templates/courgette/results.html:12
166#: searx/templates/courgette/results.html:12
167#: searx/templates/default/results.html:12
167#: searx/templates/default/results.html:12
168−#: searx/templates/oscar/results.html:78
168+#: searx/templates/oscar/results.html:87
169msgid "Search URL"
169msgid "Search URL"
170msgstr ""
170msgstr ""
171
171
172#: searx/templates/courgette/results.html:16
172#: searx/templates/courgette/results.html:16
173#: searx/templates/default/results.html:16
173#: searx/templates/default/results.html:16
174−#: searx/templates/oscar/results.html:83
174+#: searx/templates/oscar/results.html:92
175msgid "Download results"
175msgid "Download results"
176msgstr ""
176msgstr ""
177
177
178#: searx/templates/courgette/results.html:34
178#: searx/templates/courgette/results.html:34
179#: searx/templates/default/results.html:42
179#: searx/templates/default/results.html:42
180−#: searx/templates/oscar/results.html:58
180+#: searx/templates/oscar/results.html:67
181msgid "Suggestions"
181msgid "Suggestions"
182msgstr ""
182msgstr ""
183
183
184#: searx/templates/courgette/results.html:62
184#: searx/templates/courgette/results.html:62
185#: searx/templates/default/results.html:78
185#: searx/templates/default/results.html:78
186−#: searx/templates/oscar/results.html:37
186+#: searx/templates/oscar/results.html:41
187msgid "previous page"
187msgid "previous page"
188msgstr ""
188msgstr ""
189
189
190#: searx/templates/courgette/results.html:73
190#: searx/templates/courgette/results.html:73
191#: searx/templates/default/results.html:89
191#: searx/templates/default/results.html:89
192−#: searx/templates/oscar/results.html:45
192+#: searx/templates/oscar/results.html:49
193msgid "next page"
193msgid "next page"
194msgstr ""
194msgstr ""
195
195
@@ -208,18 +208,6 @@ msgstr ""
208msgid "Click on the magnifier to perform search"
208msgid "Click on the magnifier to perform search"
209msgstr ""
209msgstr ""
210
210
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−
223#: searx/templates/default/results.html:34
211#: searx/templates/default/results.html:34
224msgid "Answers"
212msgid "Answers"
225msgstr ""
213msgstr ""
@@ -277,7 +265,7 @@ msgstr ""
277msgid "Search results"
265msgid "Search results"
278msgstr ""
266msgstr ""
279
267
280−#: searx/templates/oscar/results.html:73
268+#: searx/templates/oscar/results.html:82
281msgid "Links"
269msgid "Links"
282msgstr ""
270msgstr ""
283
271
@@ -358,6 +346,14 @@ msgstr ""
358msgid "cached"
346msgid "cached"
359msgstr ""
347msgstr ""
360
348
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+
361#: searx/templates/oscar/result_templates/images.html:21
357#: searx/templates/oscar/result_templates/images.html:21
362msgid "Get image"
358msgid "Get image"
363msgstr ""
359msgstr ""
@@ -390,6 +386,23 @@ msgstr ""
390msgid "Leecher"
386msgid "Leecher"
391msgstr ""
387msgstr ""
392
388
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+
393# categories - manually added
406# categories - manually added
394# TODO - automatically add
407# TODO - automatically add
395msgid "files"
408msgid "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 ""
8msgstr ""
8msgstr ""
9"Project-Id-Version: searx\n"
9"Project-Id-Version: searx\n"
10"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
10"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
11−"POT-Creation-Date: 2014-11-26 20:41+0100\n"
11+"POT-Creation-Date: 2015-01-05 20:54+0100\n"
12−"PO-Revision-Date: 2014-09-08 11:01+0000\n"
12+"PO-Revision-Date: 2014-11-26 20:38+0000\n"
13−"Last-Translator: Alejandro León Aznar\n"
13+"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
14"Language-Team: Spanish "
14"Language-Team: Spanish "
15"(http://www.transifex.com/projects/p/searx/language/es/)\n"
15"(http://www.transifex.com/projects/p/searx/language/es/)\n"
16"Plural-Forms: nplurals=2; plural=(n != 1)\n"
16"Plural-Forms: nplurals=2; plural=(n != 1)\n"
@@ -19,31 +19,31 @@ msgstr ""
19"Content-Transfer-Encoding: 8bit\n"
19"Content-Transfer-Encoding: 8bit\n"
20"Generated-By: Babel 1.3\n"
20"Generated-By: Babel 1.3\n"
21
21
22−#: searx/webapp.py:308
22+#: searx/webapp.py:263
23msgid "{minutes} minute(s) ago"
23msgid "{minutes} minute(s) ago"
24msgstr "hace {minutes} minuto(s)"
24msgstr "hace {minutes} minuto(s)"
25
25
26−#: searx/webapp.py:310
26+#: searx/webapp.py:265
27msgid "{hours} hour(s), {minutes} minute(s) ago"
27msgid "{hours} hour(s), {minutes} minute(s) ago"
28msgstr "hace {hours} hora(s) y {minutes} minuto(s)"
28msgstr "hace {hours} hora(s) y {minutes} minuto(s)"
29
29
30−#: searx/engines/__init__.py:177
30+#: searx/engines/__init__.py:179
31msgid "Page loads (sec)"
31msgid "Page loads (sec)"
32msgstr "Tiempo de carga (segundos)"
32msgstr "Tiempo de carga (segundos)"
33
33
34−#: searx/engines/__init__.py:181
34+#: searx/engines/__init__.py:183
35msgid "Number of results"
35msgid "Number of results"
36msgstr "Número de resultados"
36msgstr "Número de resultados"
37
37
38−#: searx/engines/__init__.py:185
38+#: searx/engines/__init__.py:187
39msgid "Scores"
39msgid "Scores"
40msgstr "Puntuaciones"
40msgstr "Puntuaciones"
41
41
42−#: searx/engines/__init__.py:189
42+#: searx/engines/__init__.py:191
43msgid "Scores per result"
43msgid "Scores per result"
44msgstr "Puntuaciones por resultado"
44msgstr "Puntuaciones por resultado"
45
45
46−#: searx/engines/__init__.py:193
46+#: searx/engines/__init__.py:195
47msgid "Errors"
47msgid "Errors"
48msgstr "Errores"
48msgstr "Errores"
49
49
@@ -92,19 +92,19 @@ msgstr "Idioma de la interfaz"
92#: searx/templates/default/preferences.html:36
92#: searx/templates/default/preferences.html:36
93#: searx/templates/oscar/preferences.html:53
93#: searx/templates/oscar/preferences.html:53
94msgid "Autocomplete"
94msgid "Autocomplete"
95−msgstr ""
95+msgstr "Autocompletar"
96
96
97#: searx/templates/courgette/preferences.html:47
97#: searx/templates/courgette/preferences.html:47
98#: searx/templates/default/preferences.html:47
98#: searx/templates/default/preferences.html:47
99#: searx/templates/oscar/preferences.html:66
99#: searx/templates/oscar/preferences.html:66
100msgid "Method"
100msgid "Method"
101−msgstr ""
101+msgstr "Método"
102
102
103#: searx/templates/courgette/preferences.html:56
103#: searx/templates/courgette/preferences.html:56
104#: searx/templates/default/preferences.html:56
104#: searx/templates/default/preferences.html:56
105#: searx/templates/oscar/preferences.html:76
105#: searx/templates/oscar/preferences.html:76
106msgid "Themes"
106msgid "Themes"
107−msgstr ""
107+msgstr "Temas"
108
108
109#: searx/templates/courgette/preferences.html:66
109#: searx/templates/courgette/preferences.html:66
110#: searx/templates/default/preferences.html:66
110#: searx/templates/default/preferences.html:66
@@ -123,22 +123,22 @@ msgstr "Categoría"
123
123
124#: searx/templates/courgette/preferences.html:72
124#: searx/templates/courgette/preferences.html:72
125#: searx/templates/courgette/preferences.html:83
125#: searx/templates/courgette/preferences.html:83
126−#: searx/templates/default/preferences.html:73
126+#: searx/templates/default/preferences.html:72
127−#: searx/templates/default/preferences.html:85
127+#: searx/templates/default/preferences.html:83
128#: searx/templates/oscar/preferences.html:118
128#: searx/templates/oscar/preferences.html:118
129msgid "Allow"
129msgid "Allow"
130msgstr "Permitir"
130msgstr "Permitir"
131
131
132#: searx/templates/courgette/preferences.html:72
132#: searx/templates/courgette/preferences.html:72
133#: searx/templates/courgette/preferences.html:84
133#: searx/templates/courgette/preferences.html:84
134−#: searx/templates/default/preferences.html:73
134+#: searx/templates/default/preferences.html:72
135−#: searx/templates/default/preferences.html:86
135+#: searx/templates/default/preferences.html:84
136#: searx/templates/oscar/preferences.html:117
136#: searx/templates/oscar/preferences.html:117
137msgid "Block"
137msgid "Block"
138msgstr "Bloquear"
138msgstr "Bloquear"
139
139
140#: searx/templates/courgette/preferences.html:92
140#: searx/templates/courgette/preferences.html:92
141−#: searx/templates/default/preferences.html:94
141+#: searx/templates/default/preferences.html:92
142#: searx/templates/oscar/preferences.html:132
142#: searx/templates/oscar/preferences.html:132
143msgid ""
143msgid ""
144"These settings are stored in your cookies, this allows us not to store "
144"These settings are stored in your cookies, this allows us not to store "
@@ -148,7 +148,7 @@ msgstr ""
148"almacenar dicha información sobre usted."
148"almacenar dicha información sobre usted."
149
149
150#: searx/templates/courgette/preferences.html:94
150#: searx/templates/courgette/preferences.html:94
151−#: searx/templates/default/preferences.html:96
151+#: searx/templates/default/preferences.html:94
152#: searx/templates/oscar/preferences.html:134
152#: searx/templates/oscar/preferences.html:134
153msgid ""
153msgid ""
154"These cookies serve your sole convenience, we don't use these cookies to "
154"These cookies serve your sole convenience, we don't use these cookies to "
@@ -158,44 +158,44 @@ msgstr ""
158"rastrearle."
158"rastrearle."
159
159
160#: searx/templates/courgette/preferences.html:97
160#: searx/templates/courgette/preferences.html:97
161−#: searx/templates/default/preferences.html:99
161+#: searx/templates/default/preferences.html:97
162#: searx/templates/oscar/preferences.html:137
162#: searx/templates/oscar/preferences.html:137
163msgid "save"
163msgid "save"
164msgstr "Guardar"
164msgstr "Guardar"
165
165
166#: searx/templates/courgette/preferences.html:98
166#: searx/templates/courgette/preferences.html:98
167−#: searx/templates/default/preferences.html:100
167+#: searx/templates/default/preferences.html:98
168#: searx/templates/oscar/preferences.html:138
168#: searx/templates/oscar/preferences.html:138
169msgid "back"
169msgid "back"
170msgstr "Atrás"
170msgstr "Atrás"
171
171
172#: searx/templates/courgette/results.html:12
172#: searx/templates/courgette/results.html:12
173#: searx/templates/default/results.html:12
173#: searx/templates/default/results.html:12
174−#: searx/templates/oscar/results.html:78
174+#: searx/templates/oscar/results.html:87
175msgid "Search URL"
175msgid "Search URL"
176msgstr "Buscar URL"
176msgstr "Buscar URL"
177
177
178#: searx/templates/courgette/results.html:16
178#: searx/templates/courgette/results.html:16
179#: searx/templates/default/results.html:16
179#: searx/templates/default/results.html:16
180−#: searx/templates/oscar/results.html:83
180+#: searx/templates/oscar/results.html:92
181msgid "Download results"
181msgid "Download results"
182msgstr "Descargar resultados"
182msgstr "Descargar resultados"
183
183
184#: searx/templates/courgette/results.html:34
184#: searx/templates/courgette/results.html:34
185#: searx/templates/default/results.html:42
185#: searx/templates/default/results.html:42
186−#: searx/templates/oscar/results.html:58
186+#: searx/templates/oscar/results.html:67
187msgid "Suggestions"
187msgid "Suggestions"
188msgstr "Sugerencias"
188msgstr "Sugerencias"
189
189
190#: searx/templates/courgette/results.html:62
190#: searx/templates/courgette/results.html:62
191#: searx/templates/default/results.html:78
191#: searx/templates/default/results.html:78
192−#: searx/templates/oscar/results.html:37
192+#: searx/templates/oscar/results.html:41
193msgid "previous page"
193msgid "previous page"
194msgstr "Página anterior"
194msgstr "Página anterior"
195
195
196#: searx/templates/courgette/results.html:73
196#: searx/templates/courgette/results.html:73
197#: searx/templates/default/results.html:89
197#: searx/templates/default/results.html:89
198−#: searx/templates/oscar/results.html:45
198+#: searx/templates/oscar/results.html:49
199msgid "next page"
199msgid "next page"
200msgstr "Página siguiente"
200msgstr "Página siguiente"
201
201
@@ -214,18 +214,6 @@ msgstr "Estadísticas del motor de búsqueda"
214msgid "Click on the magnifier to perform search"
214msgid "Click on the magnifier to perform search"
215msgstr ""
215msgstr ""
216
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 ""
228−
229#: searx/templates/default/results.html:34
217#: searx/templates/default/results.html:34
230msgid "Answers"
218msgid "Answers"
231msgstr ""
219msgstr ""
@@ -283,7 +271,7 @@ msgstr ""
283msgid "Search results"
271msgid "Search results"
284msgstr ""
272msgstr ""
285
273
286−#: searx/templates/oscar/results.html:73
274+#: searx/templates/oscar/results.html:82
287msgid "Links"
275msgid "Links"
288msgstr ""
276msgstr ""
289
277
@@ -364,6 +352,14 @@ msgstr ""
364msgid "cached"
352msgid "cached"
365msgstr ""
353msgstr ""
366
354
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+
367#: searx/templates/oscar/result_templates/images.html:21
363#: searx/templates/oscar/result_templates/images.html:21
368msgid "Get image"
364msgid "Get image"
369msgstr ""
365msgstr ""
@@ -396,6 +392,23 @@ msgstr ""
396msgid "Leecher"
392msgid "Leecher"
397msgstr ""
393msgstr ""
398
394
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+
399# categories - manually added
412# categories - manually added
400# TODO - automatically add
413# TODO - automatically add
401msgid "files"
414msgid "files"
@@ -407,15 +420,9 @@ msgstr "General"
407msgid "music"
420msgid "music"
408msgstr "Música"
421msgstr "Música"
409
422
410−msgid "social media"
411−msgstr "Medios sociales"
412−
413msgid "images"
423msgid "images"
414msgstr "Imágenes"
424msgstr "Imágenes"
415
425
416−msgid "videos"
417−msgstr "Vídeos"
418−
419msgid "it"
426msgid "it"
420msgstr "TIC"
427msgstr "TIC"
421
428
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
1+# English translations for .
2−# Copyright (C) 2014 Benjamin Sonntag, rike, Adam Tauber
2+# Copyright (C) 2014 ORGANIZATION
3−# This file is distributed under CC0 License
3+# This file is distributed under the same license as the project.
4#
4#
5# Translators:
5# Translators:
6# Benjamin Sonntag <benjamin@sonntag.fr>, 2014
6# Benjamin Sonntag <benjamin@sonntag.fr>, 2014
7+# Cqoicebordel <david.barouh@wanadoo.fr>, 2014
8+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
7# rike, 2014
9# rike, 2014
8msgid ""
10msgid ""
9msgstr ""
11msgstr ""
10"Project-Id-Version: searx\n"
12"Project-Id-Version: searx\n"
11"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
13"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
12−"POT-Creation-Date: 2014-11-26 20:41+0100\n"
14+"POT-Creation-Date: 2015-01-05 20:54+0100\n"
13−"PO-Revision-Date: 2014-09-07 21:24+0000\n"
15+"PO-Revision-Date: 2014-12-14 21:00+0000\n"
14−"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
16+"Last-Translator: Cqoicebordel <david.barouh@wanadoo.fr>\n"
15"Language-Team: French "
17"Language-Team: French "
16"(http://www.transifex.com/projects/p/searx/language/fr/)\n"
18"(http://www.transifex.com/projects/p/searx/language/fr/)\n"
17"Plural-Forms: nplurals=2; plural=(n > 1)\n"
19"Plural-Forms: nplurals=2; plural=(n > 1)\n"
@@ -20,31 +22,31 @@ msgstr ""
20"Content-Transfer-Encoding: 8bit\n"
22"Content-Transfer-Encoding: 8bit\n"
21"Generated-By: Babel 1.3\n"
23"Generated-By: Babel 1.3\n"
22
24
23−#: searx/webapp.py:308
25+#: searx/webapp.py:263
24msgid "{minutes} minute(s) ago"
26msgid "{minutes} minute(s) ago"
25msgstr "il y a {minutes} minute(s)"
27msgstr "il y a {minutes} minute(s)"
26
28
27−#: searx/webapp.py:310
29+#: searx/webapp.py:265
28msgid "{hours} hour(s), {minutes} minute(s) ago"
30msgid "{hours} hour(s), {minutes} minute(s) ago"
29msgstr "il y a {hours} heure(s), {minutes} minute(s)"
31msgstr "il y a {hours} heure(s), {minutes} minute(s)"
30
32
31−#: searx/engines/__init__.py:177
33+#: searx/engines/__init__.py:179
32msgid "Page loads (sec)"
34msgid "Page loads (sec)"
33msgstr "Chargement de la page (sec)"
35msgstr "Chargement de la page (sec)"
34
36
35−#: searx/engines/__init__.py:181
37+#: searx/engines/__init__.py:183
36msgid "Number of results"
38msgid "Number of results"
37msgstr "Nombre de résultats"
39msgstr "Nombre de résultats"
38
40
39−#: searx/engines/__init__.py:185
41+#: searx/engines/__init__.py:187
40msgid "Scores"
42msgid "Scores"
41msgstr "Score"
43msgstr "Score"
42
44
43−#: searx/engines/__init__.py:189
45+#: searx/engines/__init__.py:191
44msgid "Scores per result"
46msgid "Scores per result"
45msgstr "Score par résultat"
47msgstr "Score par résultat"
46
48
47−#: searx/engines/__init__.py:193
49+#: searx/engines/__init__.py:195
48msgid "Errors"
50msgid "Errors"
49msgstr "Erreurs"
51msgstr "Erreurs"
50
52
@@ -124,22 +126,22 @@ msgstr "Catégorie"
124
126
125#: searx/templates/courgette/preferences.html:72
127#: searx/templates/courgette/preferences.html:72
126#: searx/templates/courgette/preferences.html:83
128#: searx/templates/courgette/preferences.html:83
127−#: searx/templates/default/preferences.html:73
129+#: searx/templates/default/preferences.html:72
128−#: searx/templates/default/preferences.html:85
130+#: searx/templates/default/preferences.html:83
129#: searx/templates/oscar/preferences.html:118
131#: searx/templates/oscar/preferences.html:118
130msgid "Allow"
132msgid "Allow"
131msgstr "Autoriser"
133msgstr "Autoriser"
132
134
133#: searx/templates/courgette/preferences.html:72
135#: searx/templates/courgette/preferences.html:72
134#: searx/templates/courgette/preferences.html:84
136#: searx/templates/courgette/preferences.html:84
135−#: searx/templates/default/preferences.html:73
137+#: searx/templates/default/preferences.html:72
136−#: searx/templates/default/preferences.html:86
138+#: searx/templates/default/preferences.html:84
137#: searx/templates/oscar/preferences.html:117
139#: searx/templates/oscar/preferences.html:117
138msgid "Block"
140msgid "Block"
139msgstr "Bloquer"
141msgstr "Bloquer"
140
142
141#: searx/templates/courgette/preferences.html:92
143#: searx/templates/courgette/preferences.html:92
142−#: searx/templates/default/preferences.html:94
144+#: searx/templates/default/preferences.html:92
143#: searx/templates/oscar/preferences.html:132
145#: searx/templates/oscar/preferences.html:132
144msgid ""
146msgid ""
145"These settings are stored in your cookies, this allows us not to store "
147"These settings are stored in your cookies, this allows us not to store "
@@ -149,7 +151,7 @@ msgstr ""
149" collecter vos données."
151" collecter vos données."
150
152
151#: searx/templates/courgette/preferences.html:94
153#: searx/templates/courgette/preferences.html:94
152−#: searx/templates/default/preferences.html:96
154+#: searx/templates/default/preferences.html:94
153#: searx/templates/oscar/preferences.html:134
155#: searx/templates/oscar/preferences.html:134
154msgid ""
156msgid ""
155"These cookies serve your sole convenience, we don't use these cookies to "
157"These cookies serve your sole convenience, we don't use these cookies to "
@@ -159,44 +161,44 @@ msgstr ""
159"utilisons pas pour vous espionner."
161"utilisons pas pour vous espionner."
160
162
161#: searx/templates/courgette/preferences.html:97
163#: searx/templates/courgette/preferences.html:97
162−#: searx/templates/default/preferences.html:99
164+#: searx/templates/default/preferences.html:97
163#: searx/templates/oscar/preferences.html:137
165#: searx/templates/oscar/preferences.html:137
164msgid "save"
166msgid "save"
165msgstr "enregistrer"
167msgstr "enregistrer"
166
168
167#: searx/templates/courgette/preferences.html:98
169#: searx/templates/courgette/preferences.html:98
168−#: searx/templates/default/preferences.html:100
170+#: searx/templates/default/preferences.html:98
169#: searx/templates/oscar/preferences.html:138
171#: searx/templates/oscar/preferences.html:138
170msgid "back"
172msgid "back"
171msgstr "retour"
173msgstr "retour"
172
174
173#: searx/templates/courgette/results.html:12
175#: searx/templates/courgette/results.html:12
174#: searx/templates/default/results.html:12
176#: searx/templates/default/results.html:12
175−#: searx/templates/oscar/results.html:78
177+#: searx/templates/oscar/results.html:87
176msgid "Search URL"
178msgid "Search URL"
177msgstr "URL de recherche"
179msgstr "URL de recherche"
178
180
179#: searx/templates/courgette/results.html:16
181#: searx/templates/courgette/results.html:16
180#: searx/templates/default/results.html:16
182#: searx/templates/default/results.html:16
181−#: searx/templates/oscar/results.html:83
183+#: searx/templates/oscar/results.html:92
182msgid "Download results"
184msgid "Download results"
183msgstr "Télécharger les résultats"
185msgstr "Télécharger les résultats"
184
186
185#: searx/templates/courgette/results.html:34
187#: searx/templates/courgette/results.html:34
186#: searx/templates/default/results.html:42
188#: searx/templates/default/results.html:42
187−#: searx/templates/oscar/results.html:58
189+#: searx/templates/oscar/results.html:67
188msgid "Suggestions"
190msgid "Suggestions"
189msgstr "Suggestions"
191msgstr "Suggestions"
190
192
191#: searx/templates/courgette/results.html:62
193#: searx/templates/courgette/results.html:62
192#: searx/templates/default/results.html:78
194#: searx/templates/default/results.html:78
193−#: searx/templates/oscar/results.html:37
195+#: searx/templates/oscar/results.html:41
194msgid "previous page"
196msgid "previous page"
195msgstr "page précédente"
197msgstr "page précédente"
196
198
197#: searx/templates/courgette/results.html:73
199#: searx/templates/courgette/results.html:73
198#: searx/templates/default/results.html:89
200#: searx/templates/default/results.html:89
199−#: searx/templates/oscar/results.html:45
201+#: searx/templates/oscar/results.html:49
200msgid "next page"
202msgid "next page"
201msgstr "page suivante"
203msgstr "page suivante"
202
204
@@ -213,19 +215,7 @@ msgstr "Statistiques du moteur"
213
215
214#: searx/templates/default/categories.html:8
216#: searx/templates/default/categories.html:8
215msgid "Click on the magnifier to perform search"
217msgid "Click on the magnifier to perform search"
216−msgstr ""
218+msgstr "Cliquez sur la loupe pour effectuer une recherche"
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 ""
229
219
230#: searx/templates/default/results.html:34
220#: searx/templates/default/results.html:34
231msgid "Answers"
221msgid "Answers"
@@ -287,7 +277,7 @@ msgstr "Modifier l'affichage de searx"
287msgid "Search results"
277msgid "Search results"
288msgstr "Résultats de recherche"
278msgstr "Résultats de recherche"
289
279
290−#: searx/templates/oscar/results.html:73
280+#: searx/templates/oscar/results.html:82
291msgid "Links"
281msgid "Links"
292msgstr "Liens"
282msgstr "Liens"
293
283
@@ -372,6 +362,14 @@ msgstr "Il y a un problème."
372msgid "cached"
362msgid "cached"
373msgstr "en cache"
363msgstr "en cache"
374
364
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+
375#: searx/templates/oscar/result_templates/images.html:21
373#: searx/templates/oscar/result_templates/images.html:21
376msgid "Get image"
374msgid "Get image"
377msgstr "Voir l'image"
375msgstr "Voir l'image"
@@ -404,6 +402,23 @@ msgstr "Sources"
404msgid "Leecher"
402msgid "Leecher"
405msgstr "Téléchargeurs"
403msgstr "Téléchargeurs"
406
404
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+
407# categories - manually added
422# categories - manually added
408# TODO - automatically add
423# TODO - automatically add
409msgid "files"
424msgid "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 ""
9msgstr ""
9msgstr ""
10"Project-Id-Version: searx\n"
10"Project-Id-Version: searx\n"
11"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
11"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
12−"POT-Creation-Date: 2014-11-26 20:41+0100\n"
12+"POT-Creation-Date: 2015-01-05 20:54+0100\n"
13−"PO-Revision-Date: 2014-09-07 21:30+0000\n"
13+"PO-Revision-Date: 2014-12-22 16:11+0000\n"
14"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
14"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
15"Language-Team: Hungarian "
15"Language-Team: Hungarian "
16"(http://www.transifex.com/projects/p/searx/language/hu/)\n"
16"(http://www.transifex.com/projects/p/searx/language/hu/)\n"
@@ -20,31 +20,31 @@ msgstr ""
20"Content-Transfer-Encoding: 8bit\n"
20"Content-Transfer-Encoding: 8bit\n"
21"Generated-By: Babel 1.3\n"
21"Generated-By: Babel 1.3\n"
22
22
23−#: searx/webapp.py:308
23+#: searx/webapp.py:263
24msgid "{minutes} minute(s) ago"
24msgid "{minutes} minute(s) ago"
25msgstr "{minutes} perce"
25msgstr "{minutes} perce"
26
26
27−#: searx/webapp.py:310
27+#: searx/webapp.py:265
28msgid "{hours} hour(s), {minutes} minute(s) ago"
28msgid "{hours} hour(s), {minutes} minute(s) ago"
29msgstr "{hours} óra, {minutes} perce"
29msgstr "{hours} óra, {minutes} perce"
30
30
31−#: searx/engines/__init__.py:177
31+#: searx/engines/__init__.py:179
32msgid "Page loads (sec)"
32msgid "Page loads (sec)"
33msgstr "Válaszidők (sec)"
33msgstr "Válaszidők (sec)"
34
34
35−#: searx/engines/__init__.py:181
35+#: searx/engines/__init__.py:183
36msgid "Number of results"
36msgid "Number of results"
37msgstr "Találatok száma"
37msgstr "Találatok száma"
38
38
39−#: searx/engines/__init__.py:185
39+#: searx/engines/__init__.py:187
40msgid "Scores"
40msgid "Scores"
41msgstr "Pontszámok"
41msgstr "Pontszámok"
42
42
43−#: searx/engines/__init__.py:189
43+#: searx/engines/__init__.py:191
44msgid "Scores per result"
44msgid "Scores per result"
45msgstr "Pontszámok találatonként"
45msgstr "Pontszámok találatonként"
46
46
47−#: searx/engines/__init__.py:193
47+#: searx/engines/__init__.py:195
48msgid "Errors"
48msgid "Errors"
49msgstr "Hibák"
49msgstr "Hibák"
50
50
@@ -93,19 +93,19 @@ msgstr "Felület nyelve"
93#: searx/templates/default/preferences.html:36
93#: searx/templates/default/preferences.html:36
94#: searx/templates/oscar/preferences.html:53
94#: searx/templates/oscar/preferences.html:53
95msgid "Autocomplete"
95msgid "Autocomplete"
96−msgstr ""
96+msgstr "Automatikus kiegészítés"
97
97
98#: searx/templates/courgette/preferences.html:47
98#: searx/templates/courgette/preferences.html:47
99#: searx/templates/default/preferences.html:47
99#: searx/templates/default/preferences.html:47
100#: searx/templates/oscar/preferences.html:66
100#: searx/templates/oscar/preferences.html:66
101msgid "Method"
101msgid "Method"
102−msgstr ""
102+msgstr "Method"
103
103
104#: searx/templates/courgette/preferences.html:56
104#: searx/templates/courgette/preferences.html:56
105#: searx/templates/default/preferences.html:56
105#: searx/templates/default/preferences.html:56
106#: searx/templates/oscar/preferences.html:76
106#: searx/templates/oscar/preferences.html:76
107msgid "Themes"
107msgid "Themes"
108−msgstr ""
108+msgstr "Megjelenés"
109
109
110#: searx/templates/courgette/preferences.html:66
110#: searx/templates/courgette/preferences.html:66
111#: searx/templates/default/preferences.html:66
111#: searx/templates/default/preferences.html:66
@@ -124,22 +124,22 @@ msgstr "Kategória"
124
124
125#: searx/templates/courgette/preferences.html:72
125#: searx/templates/courgette/preferences.html:72
126#: searx/templates/courgette/preferences.html:83
126#: searx/templates/courgette/preferences.html:83
127−#: searx/templates/default/preferences.html:73
127+#: searx/templates/default/preferences.html:72
128−#: searx/templates/default/preferences.html:85
128+#: searx/templates/default/preferences.html:83
129#: searx/templates/oscar/preferences.html:118
129#: searx/templates/oscar/preferences.html:118
130msgid "Allow"
130msgid "Allow"
131msgstr "Engedélyezés"
131msgstr "Engedélyezés"
132
132
133#: searx/templates/courgette/preferences.html:72
133#: searx/templates/courgette/preferences.html:72
134#: searx/templates/courgette/preferences.html:84
134#: searx/templates/courgette/preferences.html:84
135−#: searx/templates/default/preferences.html:73
135+#: searx/templates/default/preferences.html:72
136−#: searx/templates/default/preferences.html:86
136+#: searx/templates/default/preferences.html:84
137#: searx/templates/oscar/preferences.html:117
137#: searx/templates/oscar/preferences.html:117
138msgid "Block"
138msgid "Block"
139msgstr "Tiltás"
139msgstr "Tiltás"
140
140
141#: searx/templates/courgette/preferences.html:92
141#: searx/templates/courgette/preferences.html:92
142−#: searx/templates/default/preferences.html:94
142+#: searx/templates/default/preferences.html:92
143#: searx/templates/oscar/preferences.html:132
143#: searx/templates/oscar/preferences.html:132
144msgid ""
144msgid ""
145"These settings are stored in your cookies, this allows us not to store "
145"These settings are stored in your cookies, this allows us not to store "
@@ -147,7 +147,7 @@ msgid ""
147msgstr "Ezek a beállítások csak a böngésző cookie-jaiban tárolódnak."
147msgstr "Ezek a beállítások csak a böngésző cookie-jaiban tárolódnak."
148
148
149#: searx/templates/courgette/preferences.html:94
149#: searx/templates/courgette/preferences.html:94
150−#: searx/templates/default/preferences.html:96
150+#: searx/templates/default/preferences.html:94
151#: searx/templates/oscar/preferences.html:134
151#: searx/templates/oscar/preferences.html:134
152msgid ""
152msgid ""
153"These cookies serve your sole convenience, we don't use these cookies to "
153"These cookies serve your sole convenience, we don't use these cookies to "
@@ -157,44 +157,44 @@ msgstr ""
157"felhasználók követésére."
157"felhasználók követésére."
158
158
159#: searx/templates/courgette/preferences.html:97
159#: searx/templates/courgette/preferences.html:97
160−#: searx/templates/default/preferences.html:99
160+#: searx/templates/default/preferences.html:97
161#: searx/templates/oscar/preferences.html:137
161#: searx/templates/oscar/preferences.html:137
162msgid "save"
162msgid "save"
163msgstr "mentés"
163msgstr "mentés"
164
164
165#: searx/templates/courgette/preferences.html:98
165#: searx/templates/courgette/preferences.html:98
166−#: searx/templates/default/preferences.html:100
166+#: searx/templates/default/preferences.html:98
167#: searx/templates/oscar/preferences.html:138
167#: searx/templates/oscar/preferences.html:138
168msgid "back"
168msgid "back"
169msgstr "vissza"
169msgstr "vissza"
170
170
171#: searx/templates/courgette/results.html:12
171#: searx/templates/courgette/results.html:12
172#: searx/templates/default/results.html:12
172#: searx/templates/default/results.html:12
173−#: searx/templates/oscar/results.html:78
173+#: searx/templates/oscar/results.html:87
174msgid "Search URL"
174msgid "Search URL"
175msgstr "Keresési URL"
175msgstr "Keresési URL"
176
176
177#: searx/templates/courgette/results.html:16
177#: searx/templates/courgette/results.html:16
178#: searx/templates/default/results.html:16
178#: searx/templates/default/results.html:16
179−#: searx/templates/oscar/results.html:83
179+#: searx/templates/oscar/results.html:92
180msgid "Download results"
180msgid "Download results"
181msgstr "Találatok letöltése"
181msgstr "Találatok letöltése"
182
182
183#: searx/templates/courgette/results.html:34
183#: searx/templates/courgette/results.html:34
184#: searx/templates/default/results.html:42
184#: searx/templates/default/results.html:42
185−#: searx/templates/oscar/results.html:58
185+#: searx/templates/oscar/results.html:67
186msgid "Suggestions"
186msgid "Suggestions"
187msgstr "Javaslatok"
187msgstr "Javaslatok"
188
188
189#: searx/templates/courgette/results.html:62
189#: searx/templates/courgette/results.html:62
190#: searx/templates/default/results.html:78
190#: searx/templates/default/results.html:78
191−#: searx/templates/oscar/results.html:37
191+#: searx/templates/oscar/results.html:41
192msgid "previous page"
192msgid "previous page"
193msgstr "előző oldal"
193msgstr "előző oldal"
194
194
195#: searx/templates/courgette/results.html:73
195#: searx/templates/courgette/results.html:73
196#: searx/templates/default/results.html:89
196#: searx/templates/default/results.html:89
197−#: searx/templates/oscar/results.html:45
197+#: searx/templates/oscar/results.html:49
198msgid "next page"
198msgid "next page"
199msgstr "következő oldal"
199msgstr "következő oldal"
200
200
@@ -211,61 +211,49 @@ msgstr "Kereső statisztikák"
211
211
212#: searx/templates/default/categories.html:8
212#: searx/templates/default/categories.html:8
213msgid "Click on the magnifier to perform search"
213msgid "Click on the magnifier to perform search"
214−msgstr ""
214+msgstr "A nagyítóra kattintva indítható a keresés"
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 ""
227
215
228#: searx/templates/default/results.html:34
216#: searx/templates/default/results.html:34
229msgid "Answers"
217msgid "Answers"
230−msgstr ""
218+msgstr "Válaszok"
231
219
232#: searx/templates/oscar/base.html:69
220#: searx/templates/oscar/base.html:69
233msgid "Powered by"
221msgid "Powered by"
234−msgstr ""
222+msgstr "Az oldalt kiszolgálja: "
235
223
236#: searx/templates/oscar/base.html:69
224#: searx/templates/oscar/base.html:69
237msgid "a privacy-respecting, hackable metasearch engine"
225msgid "a privacy-respecting, hackable metasearch engine"
238−msgstr ""
226+msgstr "egy privátszféra tisztelő, könnyen módosítható metakereső"
239
227
240#: searx/templates/oscar/navbar.html:6
228#: searx/templates/oscar/navbar.html:6
241msgid "Toggle navigation"
229msgid "Toggle navigation"
242−msgstr ""
230+msgstr "Navigáció megjelenítés"
243
231
244#: searx/templates/oscar/navbar.html:15
232#: searx/templates/oscar/navbar.html:15
245msgid "home"
233msgid "home"
246−msgstr ""
234+msgstr "főoldal"
247
235
248#: searx/templates/oscar/preferences.html:11
236#: searx/templates/oscar/preferences.html:11
249#: searx/templates/oscar/preferences.html:17
237#: searx/templates/oscar/preferences.html:17
250msgid "General"
238msgid "General"
251−msgstr ""
239+msgstr "Általános"
252
240
253#: searx/templates/oscar/preferences.html:12
241#: searx/templates/oscar/preferences.html:12
254#: searx/templates/oscar/preferences.html:99
242#: searx/templates/oscar/preferences.html:99
255msgid "Engines"
243msgid "Engines"
256−msgstr ""
244+msgstr "Kereső motorok"
257
245
258#: searx/templates/oscar/preferences.html:39
246#: searx/templates/oscar/preferences.html:39
259msgid "What language do you prefer for search?"
247msgid "What language do you prefer for search?"
260−msgstr ""
248+msgstr "Preferált keresési nyelv"
261
249
262#: searx/templates/oscar/preferences.html:50
250#: searx/templates/oscar/preferences.html:50
263msgid "Change the language of the layout"
251msgid "Change the language of the layout"
264−msgstr ""
252+msgstr "Felület nyelve"
265
253
266#: searx/templates/oscar/preferences.html:63
254#: searx/templates/oscar/preferences.html:63
267msgid "Find stuff as you type"
255msgid "Find stuff as you type"
268−msgstr ""
256+msgstr "Autómatikus kereső kifejezés kiegészítés"
269
257
270#: searx/templates/oscar/preferences.html:73
258#: searx/templates/oscar/preferences.html:73
271msgid ""
259msgid ""
@@ -273,128 +261,156 @@ msgid ""
273"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
261"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
274" rel=\"external\">learn more about request methods</a>"
262" rel=\"external\">learn more about request methods</a>"
275msgstr ""
263msgstr ""
264+"Keresés metódusa (<a "
265+"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
266+" rel=\"external\">bővebben</a>)"
276
267
277#: searx/templates/oscar/preferences.html:84
268#: searx/templates/oscar/preferences.html:84
278msgid "Change searx layout"
269msgid "Change searx layout"
279−msgstr ""
270+msgstr "Megjelenés"
280
271
281#: searx/templates/oscar/results.html:6
272#: searx/templates/oscar/results.html:6
282msgid "Search results"
273msgid "Search results"
283−msgstr ""
274+msgstr "Keresési eredmények"
284
275
285−#: searx/templates/oscar/results.html:73
276+#: searx/templates/oscar/results.html:82
286msgid "Links"
277msgid "Links"
287−msgstr ""
278+msgstr "Linkek"
288
279
289#: searx/templates/oscar/search.html:6 searx/templates/oscar/search_full.html:7
280#: searx/templates/oscar/search.html:6 searx/templates/oscar/search_full.html:7
290msgid "Start search"
281msgid "Start search"
291−msgstr ""
282+msgstr "Keresés indítása"
292
283
293#: searx/templates/oscar/search_full.html:11
284#: searx/templates/oscar/search_full.html:11
294msgid "Show search filters"
285msgid "Show search filters"
295−msgstr ""
286+msgstr "Keresési szűrők megjelenítése"
296
287
297#: searx/templates/oscar/search_full.html:11
288#: searx/templates/oscar/search_full.html:11
298msgid "Hide search filters"
289msgid "Hide search filters"
299−msgstr ""
290+msgstr "Keresési szűrők elrejtése"
300
291
301#: searx/templates/oscar/stats.html:2
292#: searx/templates/oscar/stats.html:2
302msgid "stats"
293msgid "stats"
303−msgstr ""
294+msgstr "statisztikák"
304
295
305#: searx/templates/oscar/messages/first_time.html:4
296#: searx/templates/oscar/messages/first_time.html:4
306#: searx/templates/oscar/messages/no_results.html:5
297#: searx/templates/oscar/messages/no_results.html:5
307#: searx/templates/oscar/messages/save_settings_successfull.html:5
298#: searx/templates/oscar/messages/save_settings_successfull.html:5
308#: searx/templates/oscar/messages/unknow_error.html:5
299#: searx/templates/oscar/messages/unknow_error.html:5
309msgid "Close"
300msgid "Close"
310−msgstr ""
301+msgstr "Bezár"
311
302
312#: searx/templates/oscar/messages/first_time.html:6
303#: searx/templates/oscar/messages/first_time.html:6
313#: searx/templates/oscar/messages/no_data_available.html:3
304#: searx/templates/oscar/messages/no_data_available.html:3
314msgid "Heads up!"
305msgid "Heads up!"
315−msgstr ""
306+msgstr "Figyelem!"
316
307
317#: searx/templates/oscar/messages/first_time.html:7
308#: searx/templates/oscar/messages/first_time.html:7
318msgid "It look like you are using searx first time."
309msgid "It look like you are using searx first time."
319−msgstr ""
310+msgstr "Úgy tűnik először használod a keresőt."
320
311
321#: searx/templates/oscar/messages/js_disabled.html:2
312#: searx/templates/oscar/messages/js_disabled.html:2
322msgid "Warning!"
313msgid "Warning!"
323−msgstr ""
314+msgstr "Figyelem!"
324
315
325#: searx/templates/oscar/messages/js_disabled.html:3
316#: searx/templates/oscar/messages/js_disabled.html:3
326msgid "Please enable JavaScript to use full functionality of this site."
317msgid "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"
328
319
329#: searx/templates/oscar/messages/no_data_available.html:4
320#: searx/templates/oscar/messages/no_data_available.html:4
330msgid "There is currently no data available. "
321msgid "There is currently no data available. "
331−msgstr ""
322+msgstr "Nincs megjeleníthető adat."
332
323
333#: searx/templates/oscar/messages/no_results.html:7
324#: searx/templates/oscar/messages/no_results.html:7
334msgid "Sorry!"
325msgid "Sorry!"
335−msgstr ""
326+msgstr "Elnézést!"
336
327
337#: searx/templates/oscar/messages/no_results.html:8
328#: searx/templates/oscar/messages/no_results.html:8
338msgid ""
329msgid ""
339"we didn't find any results. Please use another query or search in more "
330"we didn't find any results. Please use another query or search in more "
340"categories."
331"categories."
341−msgstr ""
332+msgstr "Nincs megjeleníthető találat."
342
333
343#: searx/templates/oscar/messages/save_settings_successfull.html:7
334#: searx/templates/oscar/messages/save_settings_successfull.html:7
344msgid "Well done!"
335msgid "Well done!"
345−msgstr ""
336+msgstr "Siker!"
346
337
347#: searx/templates/oscar/messages/save_settings_successfull.html:8
338#: searx/templates/oscar/messages/save_settings_successfull.html:8
348msgid "Settings saved successfully."
339msgid "Settings saved successfully."
349−msgstr ""
340+msgstr "Beállítások mentve"
350
341
351#: searx/templates/oscar/messages/unknow_error.html:7
342#: searx/templates/oscar/messages/unknow_error.html:7
352msgid "Oh snap!"
343msgid "Oh snap!"
353−msgstr ""
344+msgstr "Oh!"
354
345
355#: searx/templates/oscar/messages/unknow_error.html:8
346#: searx/templates/oscar/messages/unknow_error.html:8
356msgid "Something went wrong."
347msgid "Something went wrong."
357−msgstr ""
348+msgstr "Hiba történt"
358
349
359#: searx/templates/oscar/result_templates/default.html:6
350#: searx/templates/oscar/result_templates/default.html:6
360#: searx/templates/oscar/result_templates/map.html:7
351#: searx/templates/oscar/result_templates/map.html:7
361#: searx/templates/oscar/result_templates/torrent.html:6
352#: searx/templates/oscar/result_templates/torrent.html:6
362#: searx/templates/oscar/result_templates/videos.html:6
353#: searx/templates/oscar/result_templates/videos.html:6
363msgid "cached"
354msgid "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"
364msgstr ""
363msgstr ""
365
364
366#: searx/templates/oscar/result_templates/images.html:21
365#: searx/templates/oscar/result_templates/images.html:21
367msgid "Get image"
366msgid "Get image"
368−msgstr ""
367+msgstr "Kép megjelenítése"
369
368
370#: searx/templates/oscar/result_templates/images.html:22
369#: searx/templates/oscar/result_templates/images.html:22
371msgid "View source"
370msgid "View source"
372−msgstr ""
371+msgstr "Forrás megtekintése"
373
372
374#: searx/templates/oscar/result_templates/map.html:10
373#: searx/templates/oscar/result_templates/map.html:10
375msgid "show map"
374msgid "show map"
376−msgstr ""
375+msgstr "Térkép"
377
376
378#: searx/templates/oscar/result_templates/map.html:10
377#: searx/templates/oscar/result_templates/map.html:10
379msgid "hide map"
378msgid "hide map"
380−msgstr ""
379+msgstr "Térkép elrejtése"
381
380
382#: searx/templates/oscar/result_templates/map.html:14
381#: searx/templates/oscar/result_templates/map.html:14
383msgid "show details"
382msgid "show details"
384−msgstr ""
383+msgstr "Részletek"
385
384
386#: searx/templates/oscar/result_templates/map.html:14
385#: searx/templates/oscar/result_templates/map.html:14
387msgid "hide details"
386msgid "hide details"
388−msgstr ""
387+msgstr "Részletek elrejtése"
389
388
390#: searx/templates/oscar/result_templates/torrent.html:8
389#: searx/templates/oscar/result_templates/torrent.html:8
391msgid "Seeder"
390msgid "Seeder"
392−msgstr ""
391+msgstr "Seeder"
393
392
394#: searx/templates/oscar/result_templates/torrent.html:8
393#: searx/templates/oscar/result_templates/torrent.html:8
395msgid "Leecher"
394msgid "Leecher"
395+msgstr "Leecher"
396+
397+#: searx/templates/oscar/result_templates/videos.html:9
398+msgid "show video"
396msgstr ""
399msgstr ""
397
400
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+
398# categories - manually added
414# categories - manually added
399# TODO - automatically add
415# TODO - automatically add
400msgid "files"
416msgid "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 ""
8msgstr ""
8msgstr ""
9"Project-Id-Version: searx\n"
9"Project-Id-Version: searx\n"
10"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
10"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
11−"POT-Creation-Date: 2014-11-26 20:41+0100\n"
11+"POT-Creation-Date: 2015-01-05 20:54+0100\n"
12−"PO-Revision-Date: 2014-09-08 08:19+0000\n"
12+"PO-Revision-Date: 2014-11-26 20:38+0000\n"
13−"Last-Translator: dp <d.pitrolo@gmx.com>\n"
13+"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
14"Language-Team: Italian "
14"Language-Team: Italian "
15"(http://www.transifex.com/projects/p/searx/language/it/)\n"
15"(http://www.transifex.com/projects/p/searx/language/it/)\n"
16"Plural-Forms: nplurals=2; plural=(n != 1)\n"
16"Plural-Forms: nplurals=2; plural=(n != 1)\n"
@@ -19,31 +19,31 @@ msgstr ""
19"Content-Transfer-Encoding: 8bit\n"
19"Content-Transfer-Encoding: 8bit\n"
20"Generated-By: Babel 1.3\n"
20"Generated-By: Babel 1.3\n"
21
21
22−#: searx/webapp.py:308
22+#: searx/webapp.py:263
23msgid "{minutes} minute(s) ago"
23msgid "{minutes} minute(s) ago"
24msgstr "di {minutes} minuti fa"
24msgstr "di {minutes} minuti fa"
25
25
26−#: searx/webapp.py:310
26+#: searx/webapp.py:265
27msgid "{hours} hour(s), {minutes} minute(s) ago"
27msgid "{hours} hour(s), {minutes} minute(s) ago"
28msgstr "di {ore} h e {minutes} minuti fa"
28msgstr "di {ore} h e {minutes} minuti fa"
29
29
30−#: searx/engines/__init__.py:177
30+#: searx/engines/__init__.py:179
31msgid "Page loads (sec)"
31msgid "Page loads (sec)"
32msgstr " Caricamento della pagina (secondi)"
32msgstr " Caricamento della pagina (secondi)"
33
33
34−#: searx/engines/__init__.py:181
34+#: searx/engines/__init__.py:183
35msgid "Number of results"
35msgid "Number of results"
36msgstr "Risultati ottenuti"
36msgstr "Risultati ottenuti"
37
37
38−#: searx/engines/__init__.py:185
38+#: searx/engines/__init__.py:187
39msgid "Scores"
39msgid "Scores"
40msgstr "Punteggio"
40msgstr "Punteggio"
41
41
42−#: searx/engines/__init__.py:189
42+#: searx/engines/__init__.py:191
43msgid "Scores per result"
43msgid "Scores per result"
44msgstr "Punteggio per risultato"
44msgstr "Punteggio per risultato"
45
45
46−#: searx/engines/__init__.py:193
46+#: searx/engines/__init__.py:195
47msgid "Errors"
47msgid "Errors"
48msgstr "Errori"
48msgstr "Errori"
49
49
@@ -92,19 +92,19 @@ msgstr "Linguaggio dell'interfaccia"
92#: searx/templates/default/preferences.html:36
92#: searx/templates/default/preferences.html:36
93#: searx/templates/oscar/preferences.html:53
93#: searx/templates/oscar/preferences.html:53
94msgid "Autocomplete"
94msgid "Autocomplete"
95−msgstr ""
95+msgstr "Completamento automatico"
96
96
97#: searx/templates/courgette/preferences.html:47
97#: searx/templates/courgette/preferences.html:47
98#: searx/templates/default/preferences.html:47
98#: searx/templates/default/preferences.html:47
99#: searx/templates/oscar/preferences.html:66
99#: searx/templates/oscar/preferences.html:66
100msgid "Method"
100msgid "Method"
101−msgstr ""
101+msgstr "Metodo"
102
102
103#: searx/templates/courgette/preferences.html:56
103#: searx/templates/courgette/preferences.html:56
104#: searx/templates/default/preferences.html:56
104#: searx/templates/default/preferences.html:56
105#: searx/templates/oscar/preferences.html:76
105#: searx/templates/oscar/preferences.html:76
106msgid "Themes"
106msgid "Themes"
107−msgstr ""
107+msgstr "Grafica"
108
108
109#: searx/templates/courgette/preferences.html:66
109#: searx/templates/courgette/preferences.html:66
110#: searx/templates/default/preferences.html:66
110#: searx/templates/default/preferences.html:66
@@ -123,22 +123,22 @@ msgstr "Categoria"
123
123
124#: searx/templates/courgette/preferences.html:72
124#: searx/templates/courgette/preferences.html:72
125#: searx/templates/courgette/preferences.html:83
125#: searx/templates/courgette/preferences.html:83
126−#: searx/templates/default/preferences.html:73
126+#: searx/templates/default/preferences.html:72
127−#: searx/templates/default/preferences.html:85
127+#: searx/templates/default/preferences.html:83
128#: searx/templates/oscar/preferences.html:118
128#: searx/templates/oscar/preferences.html:118
129msgid "Allow"
129msgid "Allow"
130msgstr "Autorizza"
130msgstr "Autorizza"
131
131
132#: searx/templates/courgette/preferences.html:72
132#: searx/templates/courgette/preferences.html:72
133#: searx/templates/courgette/preferences.html:84
133#: searx/templates/courgette/preferences.html:84
134−#: searx/templates/default/preferences.html:73
134+#: searx/templates/default/preferences.html:72
135−#: searx/templates/default/preferences.html:86
135+#: searx/templates/default/preferences.html:84
136#: searx/templates/oscar/preferences.html:117
136#: searx/templates/oscar/preferences.html:117
137msgid "Block"
137msgid "Block"
138msgstr "Blocca"
138msgstr "Blocca"
139
139
140#: searx/templates/courgette/preferences.html:92
140#: searx/templates/courgette/preferences.html:92
141−#: searx/templates/default/preferences.html:94
141+#: searx/templates/default/preferences.html:92
142#: searx/templates/oscar/preferences.html:132
142#: searx/templates/oscar/preferences.html:132
143msgid ""
143msgid ""
144"These settings are stored in your cookies, this allows us not to store "
144"These settings are stored in your cookies, this allows us not to store "
@@ -148,7 +148,7 @@ msgstr ""
148"conservare dati su di te."
148"conservare dati su di te."
149
149
150#: searx/templates/courgette/preferences.html:94
150#: searx/templates/courgette/preferences.html:94
151−#: searx/templates/default/preferences.html:96
151+#: searx/templates/default/preferences.html:94
152#: searx/templates/oscar/preferences.html:134
152#: searx/templates/oscar/preferences.html:134
153msgid ""
153msgid ""
154"These cookies serve your sole convenience, we don't use these cookies to "
154"These cookies serve your sole convenience, we don't use these cookies to "
@@ -158,44 +158,44 @@ msgstr ""
158" sorvegliarti."
158" sorvegliarti."
159
159
160#: searx/templates/courgette/preferences.html:97
160#: searx/templates/courgette/preferences.html:97
161−#: searx/templates/default/preferences.html:99
161+#: searx/templates/default/preferences.html:97
162#: searx/templates/oscar/preferences.html:137
162#: searx/templates/oscar/preferences.html:137
163msgid "save"
163msgid "save"
164msgstr "salva"
164msgstr "salva"
165
165
166#: searx/templates/courgette/preferences.html:98
166#: searx/templates/courgette/preferences.html:98
167−#: searx/templates/default/preferences.html:100
167+#: searx/templates/default/preferences.html:98
168#: searx/templates/oscar/preferences.html:138
168#: searx/templates/oscar/preferences.html:138
169msgid "back"
169msgid "back"
170msgstr "indietro"
170msgstr "indietro"
171
171
172#: searx/templates/courgette/results.html:12
172#: searx/templates/courgette/results.html:12
173#: searx/templates/default/results.html:12
173#: searx/templates/default/results.html:12
174−#: searx/templates/oscar/results.html:78
174+#: searx/templates/oscar/results.html:87
175msgid "Search URL"
175msgid "Search URL"
176msgstr "URL della ricerca"
176msgstr "URL della ricerca"
177
177
178#: searx/templates/courgette/results.html:16
178#: searx/templates/courgette/results.html:16
179#: searx/templates/default/results.html:16
179#: searx/templates/default/results.html:16
180−#: searx/templates/oscar/results.html:83
180+#: searx/templates/oscar/results.html:92
181msgid "Download results"
181msgid "Download results"
182msgstr "Scarica i risultati"
182msgstr "Scarica i risultati"
183
183
184#: searx/templates/courgette/results.html:34
184#: searx/templates/courgette/results.html:34
185#: searx/templates/default/results.html:42
185#: searx/templates/default/results.html:42
186−#: searx/templates/oscar/results.html:58
186+#: searx/templates/oscar/results.html:67
187msgid "Suggestions"
187msgid "Suggestions"
188msgstr "Suggerimenti"
188msgstr "Suggerimenti"
189
189
190#: searx/templates/courgette/results.html:62
190#: searx/templates/courgette/results.html:62
191#: searx/templates/default/results.html:78
191#: searx/templates/default/results.html:78
192−#: searx/templates/oscar/results.html:37
192+#: searx/templates/oscar/results.html:41
193msgid "previous page"
193msgid "previous page"
194msgstr "pagina precedente"
194msgstr "pagina precedente"
195
195
196#: searx/templates/courgette/results.html:73
196#: searx/templates/courgette/results.html:73
197#: searx/templates/default/results.html:89
197#: searx/templates/default/results.html:89
198−#: searx/templates/oscar/results.html:45
198+#: searx/templates/oscar/results.html:49
199msgid "next page"
199msgid "next page"
200msgstr "pagina successiva"
200msgstr "pagina successiva"
201
201
@@ -214,18 +214,6 @@ msgstr "Statistiche dei motori"
214msgid "Click on the magnifier to perform search"
214msgid "Click on the magnifier to perform search"
215msgstr ""
215msgstr ""
216
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 ""
228−
229#: searx/templates/default/results.html:34
217#: searx/templates/default/results.html:34
230msgid "Answers"
218msgid "Answers"
231msgstr ""
219msgstr ""
@@ -283,7 +271,7 @@ msgstr ""
283msgid "Search results"
271msgid "Search results"
284msgstr ""
272msgstr ""
285
273
286−#: searx/templates/oscar/results.html:73
274+#: searx/templates/oscar/results.html:82
287msgid "Links"
275msgid "Links"
288msgstr ""
276msgstr ""
289
277
@@ -364,6 +352,14 @@ msgstr ""
364msgid "cached"
352msgid "cached"
365msgstr ""
353msgstr ""
366
354
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+
367#: searx/templates/oscar/result_templates/images.html:21
363#: searx/templates/oscar/result_templates/images.html:21
368msgid "Get image"
364msgid "Get image"
369msgstr ""
365msgstr ""
@@ -396,6 +392,23 @@ msgstr ""
396msgid "Leecher"
392msgid "Leecher"
397msgstr ""
393msgstr ""
398
394
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+
399# categories - manually added
412# categories - manually added
400# TODO - automatically add
413# TODO - automatically add
401msgid "files"
414msgid "files"
@@ -407,15 +420,9 @@ msgstr "generale"
407msgid "music"
420msgid "music"
408msgstr "musica"
421msgstr "musica"
409
422
410−msgid "social media"
411−msgstr "social media"
412−
413msgid "images"
423msgid "images"
414msgstr "immagini"
424msgstr "immagini"
415
425
416−msgid "videos"
417−msgstr "video"
418−
419msgid "it"
426msgid "it"
420msgstr "it"
427msgstr "it"
421
428
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 .
2# Copyright (C) 2014 ORGANIZATION
2# Copyright (C) 2014 ORGANIZATION
3−# This file is distributed under the same license as the PROJECT project.
3+# This file is distributed under the same license as the project.
4−# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
5#
4#
5+# Translators:
6+# pointhi, 2014
7+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
6msgid ""
8msgid ""
7msgstr ""
9msgstr ""
8−"Project-Id-Version: PROJECT VERSION\n"
10+"Project-Id-Version: searx\n"
9"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
11"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
10−"POT-Creation-Date: 2014-11-26 20:41+0100\n"
12+"POT-Creation-Date: 2015-01-05 20:54+0100\n"
11−"PO-Revision-Date: 2014-10-05 16:38+0200\n"
13+"PO-Revision-Date: 2014-11-26 20:38+0000\n"
12−"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14+"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
13−"Language-Team: ja <LL@li.org>\n"
15+"Language-Team: Japanese "
16+"(http://www.transifex.com/projects/p/searx/language/ja/)\n"
14"Plural-Forms: nplurals=1; plural=0\n"
17"Plural-Forms: nplurals=1; plural=0\n"
15"MIME-Version: 1.0\n"
18"MIME-Version: 1.0\n"
16"Content-Type: text/plain; charset=utf-8\n"
19"Content-Type: text/plain; charset=utf-8\n"
17"Content-Transfer-Encoding: 8bit\n"
20"Content-Transfer-Encoding: 8bit\n"
18"Generated-By: Babel 1.3\n"
21"Generated-By: Babel 1.3\n"
19
22
20−#: searx/webapp.py:308
23+#: searx/webapp.py:263
21msgid "{minutes} minute(s) ago"
24msgid "{minutes} minute(s) ago"
22−msgstr ""
25+msgstr "{minutes}分前"
23
26
24−#: searx/webapp.py:310
27+#: searx/webapp.py:265
25msgid "{hours} hour(s), {minutes} minute(s) ago"
28msgid "{hours} hour(s), {minutes} minute(s) ago"
26−msgstr ""
29+msgstr "{hours}時間と{minutes}分前"
27
30
28−#: searx/engines/__init__.py:177
31+#: searx/engines/__init__.py:179
29msgid "Page loads (sec)"
32msgid "Page loads (sec)"
30msgstr ""
33msgstr ""
31
34
32−#: searx/engines/__init__.py:181
35+#: searx/engines/__init__.py:183
33msgid "Number of results"
36msgid "Number of results"
34msgstr ""
37msgstr ""
35
38
36−#: searx/engines/__init__.py:185
39+#: searx/engines/__init__.py:187
37msgid "Scores"
40msgid "Scores"
38msgstr ""
41msgstr ""
39
42
40−#: searx/engines/__init__.py:189
43+#: searx/engines/__init__.py:191
41msgid "Scores per result"
44msgid "Scores per result"
42msgstr ""
45msgstr ""
43
46
44−#: searx/engines/__init__.py:193
47+#: searx/engines/__init__.py:195
45msgid "Errors"
48msgid "Errors"
46−msgstr ""
49+msgstr "エラー"
47
50
48#: searx/templates/courgette/index.html:8 searx/templates/default/index.html:7
51#: searx/templates/courgette/index.html:8 searx/templates/default/index.html:7
49#: searx/templates/oscar/about.html:3 searx/templates/oscar/navbar.html:16
52#: searx/templates/oscar/about.html:3 searx/templates/oscar/navbar.html:16
@@ -72,7 +75,7 @@ msgstr ""
72#: searx/templates/default/preferences.html:15
75#: searx/templates/default/preferences.html:15
73#: searx/templates/oscar/preferences.html:30
76#: searx/templates/oscar/preferences.html:30
74msgid "Search language"
77msgid "Search language"
75−msgstr ""
78+msgstr "検索の言語"
76
79
77#: searx/templates/courgette/preferences.html:18
80#: searx/templates/courgette/preferences.html:18
78#: searx/templates/default/preferences.html:18
81#: searx/templates/default/preferences.html:18
@@ -84,7 +87,7 @@ msgstr ""
84#: searx/templates/default/preferences.html:26
87#: searx/templates/default/preferences.html:26
85#: searx/templates/oscar/preferences.html:42
88#: searx/templates/oscar/preferences.html:42
86msgid "Interface language"
89msgid "Interface language"
87−msgstr ""
90+msgstr "界面の言語"
88
91
89#: searx/templates/courgette/preferences.html:36
92#: searx/templates/courgette/preferences.html:36
90#: searx/templates/default/preferences.html:36
93#: searx/templates/default/preferences.html:36
@@ -117,26 +120,26 @@ msgstr ""
117#: searx/templates/courgette/preferences.html:71
120#: searx/templates/courgette/preferences.html:71
118#: searx/templates/default/preferences.html:71
121#: searx/templates/default/preferences.html:71
119msgid "Category"
122msgid "Category"
120−msgstr ""
123+msgstr "カテゴリー"
121
124
122#: searx/templates/courgette/preferences.html:72
125#: searx/templates/courgette/preferences.html:72
123#: searx/templates/courgette/preferences.html:83
126#: searx/templates/courgette/preferences.html:83
124−#: searx/templates/default/preferences.html:73
127+#: searx/templates/default/preferences.html:72
125−#: searx/templates/default/preferences.html:85
128+#: searx/templates/default/preferences.html:83
126#: searx/templates/oscar/preferences.html:118
129#: searx/templates/oscar/preferences.html:118
127msgid "Allow"
130msgid "Allow"
128msgstr ""
131msgstr ""
129
132
130#: searx/templates/courgette/preferences.html:72
133#: searx/templates/courgette/preferences.html:72
131#: searx/templates/courgette/preferences.html:84
134#: searx/templates/courgette/preferences.html:84
132−#: searx/templates/default/preferences.html:73
135+#: searx/templates/default/preferences.html:72
133−#: searx/templates/default/preferences.html:86
136+#: searx/templates/default/preferences.html:84
134#: searx/templates/oscar/preferences.html:117
137#: searx/templates/oscar/preferences.html:117
135msgid "Block"
138msgid "Block"
136msgstr ""
139msgstr ""
137
140
138#: searx/templates/courgette/preferences.html:92
141#: searx/templates/courgette/preferences.html:92
139−#: searx/templates/default/preferences.html:94
142+#: searx/templates/default/preferences.html:92
140#: searx/templates/oscar/preferences.html:132
143#: searx/templates/oscar/preferences.html:132
141msgid ""
144msgid ""
142"These settings are stored in your cookies, this allows us not to store "
145"These settings are stored in your cookies, this allows us not to store "
@@ -144,7 +147,7 @@ msgid ""
144msgstr ""
147msgstr ""
145
148
146#: searx/templates/courgette/preferences.html:94
149#: searx/templates/courgette/preferences.html:94
147−#: searx/templates/default/preferences.html:96
150+#: searx/templates/default/preferences.html:94
148#: searx/templates/oscar/preferences.html:134
151#: searx/templates/oscar/preferences.html:134
149msgid ""
152msgid ""
150"These cookies serve your sole convenience, we don't use these cookies to "
153"These cookies serve your sole convenience, we don't use these cookies to "
@@ -152,44 +155,44 @@ msgid ""
152msgstr ""
155msgstr ""
153
156
154#: searx/templates/courgette/preferences.html:97
157#: searx/templates/courgette/preferences.html:97
155−#: searx/templates/default/preferences.html:99
158+#: searx/templates/default/preferences.html:97
156#: searx/templates/oscar/preferences.html:137
159#: searx/templates/oscar/preferences.html:137
157msgid "save"
160msgid "save"
158−msgstr ""
161+msgstr "保存"
159
162
160#: searx/templates/courgette/preferences.html:98
163#: searx/templates/courgette/preferences.html:98
161−#: searx/templates/default/preferences.html:100
164+#: searx/templates/default/preferences.html:98
162#: searx/templates/oscar/preferences.html:138
165#: searx/templates/oscar/preferences.html:138
163msgid "back"
166msgid "back"
164−msgstr ""
167+msgstr "バック"
165
168
166#: searx/templates/courgette/results.html:12
169#: searx/templates/courgette/results.html:12
167#: searx/templates/default/results.html:12
170#: searx/templates/default/results.html:12
168−#: searx/templates/oscar/results.html:78
171+#: searx/templates/oscar/results.html:87
169msgid "Search URL"
172msgid "Search URL"
170msgstr ""
173msgstr ""
171
174
172#: searx/templates/courgette/results.html:16
175#: searx/templates/courgette/results.html:16
173#: searx/templates/default/results.html:16
176#: searx/templates/default/results.html:16
174−#: searx/templates/oscar/results.html:83
177+#: searx/templates/oscar/results.html:92
175msgid "Download results"
178msgid "Download results"
176−msgstr ""
179+msgstr "ダウンロードの結果"
177
180
178#: searx/templates/courgette/results.html:34
181#: searx/templates/courgette/results.html:34
179#: searx/templates/default/results.html:42
182#: searx/templates/default/results.html:42
180−#: searx/templates/oscar/results.html:58
183+#: searx/templates/oscar/results.html:67
181msgid "Suggestions"
184msgid "Suggestions"
182msgstr "提案"
185msgstr "提案"
183
186
184#: searx/templates/courgette/results.html:62
187#: searx/templates/courgette/results.html:62
185#: searx/templates/default/results.html:78
188#: searx/templates/default/results.html:78
186−#: searx/templates/oscar/results.html:37
189+#: searx/templates/oscar/results.html:41
187msgid "previous page"
190msgid "previous page"
188msgstr "前のページ"
191msgstr "前のページ"
189
192
190#: searx/templates/courgette/results.html:73
193#: searx/templates/courgette/results.html:73
191#: searx/templates/default/results.html:89
194#: searx/templates/default/results.html:89
192−#: searx/templates/oscar/results.html:45
195+#: searx/templates/oscar/results.html:49
193msgid "next page"
196msgid "next page"
194msgstr "次のページ"
197msgstr "次のページ"
195
198
@@ -208,18 +211,6 @@ msgstr ""
208msgid "Click on the magnifier to perform search"
211msgid "Click on the magnifier to perform search"
209msgstr ""
212msgstr ""
210
213
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−
223#: searx/templates/default/results.html:34
214#: searx/templates/default/results.html:34
224msgid "Answers"
215msgid "Answers"
225msgstr ""
216msgstr ""
@@ -238,7 +229,7 @@ msgstr ""
238
229
239#: searx/templates/oscar/navbar.html:15
230#: searx/templates/oscar/navbar.html:15
240msgid "home"
231msgid "home"
241−msgstr ""
232+msgstr "スタートページ"
242
233
243#: searx/templates/oscar/preferences.html:11
234#: searx/templates/oscar/preferences.html:11
244#: searx/templates/oscar/preferences.html:17
235#: searx/templates/oscar/preferences.html:17
@@ -277,7 +268,7 @@ msgstr ""
277msgid "Search results"
268msgid "Search results"
278msgstr ""
269msgstr ""
279
270
280−#: searx/templates/oscar/results.html:73
271+#: searx/templates/oscar/results.html:82
281msgid "Links"
272msgid "Links"
282msgstr ""
273msgstr ""
283
274
@@ -358,6 +349,14 @@ msgstr ""
358msgid "cached"
349msgid "cached"
359msgstr ""
350msgstr ""
360
351
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+
361#: searx/templates/oscar/result_templates/images.html:21
360#: searx/templates/oscar/result_templates/images.html:21
362msgid "Get image"
361msgid "Get image"
363msgstr ""
362msgstr ""
@@ -390,6 +389,23 @@ msgstr ""
390msgid "Leecher"
389msgid "Leecher"
391msgstr ""
390msgstr ""
392
391
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+
393# categories - manually added
409# categories - manually added
394# TODO - automatically add
410# TODO - automatically add
395msgid "files"
411msgid "files"
@@ -398,24 +414,18 @@ msgstr "ファイル"
398msgid "general"
414msgid "general"
399msgstr "ウェブ"
415msgstr "ウェブ"
400
416
401−msgid "map"
402−msgstr "地図"
403−
404msgid "music"
417msgid "music"
405msgstr "音楽"
418msgstr "音楽"
406
419
407−msgid "social media"
408−msgstr "ソーシャルメディア"
409−
410msgid "images"
420msgid "images"
411msgstr "画像"
421msgstr "画像"
412
422
413−msgid "videos"
414−msgstr "動画"
415−
416msgid "it"
423msgid "it"
417msgstr "情報技術"
424msgstr "情報技術"
418
425
419msgid "news"
426msgid "news"
420msgstr "ニュース"
427msgstr "ニュース"
421
428
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 ""
8msgstr ""
8msgstr ""
9"Project-Id-Version: searx\n"
9"Project-Id-Version: searx\n"
10"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
10"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
11−"POT-Creation-Date: 2014-11-26 20:41+0100\n"
11+"POT-Creation-Date: 2015-01-05 20:54+0100\n"
12−"PO-Revision-Date: 2014-09-09 15:33+0000\n"
12+"PO-Revision-Date: 2014-12-11 13:50+0000\n"
13"Last-Translator: André Koot <meneer@tken.net>\n"
13"Last-Translator: André Koot <meneer@tken.net>\n"
14"Language-Team: Dutch "
14"Language-Team: Dutch "
15"(http://www.transifex.com/projects/p/searx/language/nl/)\n"
15"(http://www.transifex.com/projects/p/searx/language/nl/)\n"
@@ -19,31 +19,31 @@ msgstr ""
19"Content-Transfer-Encoding: 8bit\n"
19"Content-Transfer-Encoding: 8bit\n"
20"Generated-By: Babel 1.3\n"
20"Generated-By: Babel 1.3\n"
21
21
22−#: searx/webapp.py:308
22+#: searx/webapp.py:263
23msgid "{minutes} minute(s) ago"
23msgid "{minutes} minute(s) ago"
24msgstr "{minutes} min geleden"
24msgstr "{minutes} min geleden"
25
25
26−#: searx/webapp.py:310
26+#: searx/webapp.py:265
27msgid "{hours} hour(s), {minutes} minute(s) ago"
27msgid "{hours} hour(s), {minutes} minute(s) ago"
28msgstr "{hours} uur, {minutes} min geleden"
28msgstr "{hours} uur, {minutes} min geleden"
29
29
30−#: searx/engines/__init__.py:177
30+#: searx/engines/__init__.py:179
31msgid "Page loads (sec)"
31msgid "Page loads (sec)"
32msgstr "Pagina laadt (sec)"
32msgstr "Pagina laadt (sec)"
33
33
34−#: searx/engines/__init__.py:181
34+#: searx/engines/__init__.py:183
35msgid "Number of results"
35msgid "Number of results"
36msgstr "Aantal zoekresultaten"
36msgstr "Aantal zoekresultaten"
37
37
38−#: searx/engines/__init__.py:185
38+#: searx/engines/__init__.py:187
39msgid "Scores"
39msgid "Scores"
40msgstr "Scores"
40msgstr "Scores"
41
41
42−#: searx/engines/__init__.py:189
42+#: searx/engines/__init__.py:191
43msgid "Scores per result"
43msgid "Scores per result"
44msgstr "Scores per zoekresultaat"
44msgstr "Scores per zoekresultaat"
45
45
46−#: searx/engines/__init__.py:193
46+#: searx/engines/__init__.py:195
47msgid "Errors"
47msgid "Errors"
48msgstr "Fouten"
48msgstr "Fouten"
49
49
@@ -92,19 +92,19 @@ msgstr "Interfacetaal"
92#: searx/templates/default/preferences.html:36
92#: searx/templates/default/preferences.html:36
93#: searx/templates/oscar/preferences.html:53
93#: searx/templates/oscar/preferences.html:53
94msgid "Autocomplete"
94msgid "Autocomplete"
95−msgstr ""
95+msgstr "Auto-aanvullen"
96
96
97#: searx/templates/courgette/preferences.html:47
97#: searx/templates/courgette/preferences.html:47
98#: searx/templates/default/preferences.html:47
98#: searx/templates/default/preferences.html:47
99#: searx/templates/oscar/preferences.html:66
99#: searx/templates/oscar/preferences.html:66
100msgid "Method"
100msgid "Method"
101−msgstr ""
101+msgstr "Methode"
102
102
103#: searx/templates/courgette/preferences.html:56
103#: searx/templates/courgette/preferences.html:56
104#: searx/templates/default/preferences.html:56
104#: searx/templates/default/preferences.html:56
105#: searx/templates/oscar/preferences.html:76
105#: searx/templates/oscar/preferences.html:76
106msgid "Themes"
106msgid "Themes"
107−msgstr ""
107+msgstr "Thema's"
108
108
109#: searx/templates/courgette/preferences.html:66
109#: searx/templates/courgette/preferences.html:66
110#: searx/templates/default/preferences.html:66
110#: searx/templates/default/preferences.html:66
@@ -123,22 +123,22 @@ msgstr "Categorie"
123
123
124#: searx/templates/courgette/preferences.html:72
124#: searx/templates/courgette/preferences.html:72
125#: searx/templates/courgette/preferences.html:83
125#: searx/templates/courgette/preferences.html:83
126−#: searx/templates/default/preferences.html:73
126+#: searx/templates/default/preferences.html:72
127−#: searx/templates/default/preferences.html:85
127+#: searx/templates/default/preferences.html:83
128#: searx/templates/oscar/preferences.html:118
128#: searx/templates/oscar/preferences.html:118
129msgid "Allow"
129msgid "Allow"
130msgstr "Toestaan"
130msgstr "Toestaan"
131
131
132#: searx/templates/courgette/preferences.html:72
132#: searx/templates/courgette/preferences.html:72
133#: searx/templates/courgette/preferences.html:84
133#: searx/templates/courgette/preferences.html:84
134−#: searx/templates/default/preferences.html:73
134+#: searx/templates/default/preferences.html:72
135−#: searx/templates/default/preferences.html:86
135+#: searx/templates/default/preferences.html:84
136#: searx/templates/oscar/preferences.html:117
136#: searx/templates/oscar/preferences.html:117
137msgid "Block"
137msgid "Block"
138msgstr "Blokkeren"
138msgstr "Blokkeren"
139
139
140#: searx/templates/courgette/preferences.html:92
140#: searx/templates/courgette/preferences.html:92
141−#: searx/templates/default/preferences.html:94
141+#: searx/templates/default/preferences.html:92
142#: searx/templates/oscar/preferences.html:132
142#: searx/templates/oscar/preferences.html:132
143msgid ""
143msgid ""
144"These settings are stored in your cookies, this allows us not to store "
144"These settings are stored in your cookies, this allows us not to store "
@@ -148,7 +148,7 @@ msgstr ""
148" over jou te bewaren."
148" over jou te bewaren."
149
149
150#: searx/templates/courgette/preferences.html:94
150#: searx/templates/courgette/preferences.html:94
151−#: searx/templates/default/preferences.html:96
151+#: searx/templates/default/preferences.html:94
152#: searx/templates/oscar/preferences.html:134
152#: searx/templates/oscar/preferences.html:134
153msgid ""
153msgid ""
154"These cookies serve your sole convenience, we don't use these cookies to "
154"These cookies serve your sole convenience, we don't use these cookies to "
@@ -158,44 +158,44 @@ msgstr ""
158"niet om je te volgen."
158"niet om je te volgen."
159
159
160#: searx/templates/courgette/preferences.html:97
160#: searx/templates/courgette/preferences.html:97
161−#: searx/templates/default/preferences.html:99
161+#: searx/templates/default/preferences.html:97
162#: searx/templates/oscar/preferences.html:137
162#: searx/templates/oscar/preferences.html:137
163msgid "save"
163msgid "save"
164msgstr "bewaren"
164msgstr "bewaren"
165
165
166#: searx/templates/courgette/preferences.html:98
166#: searx/templates/courgette/preferences.html:98
167−#: searx/templates/default/preferences.html:100
167+#: searx/templates/default/preferences.html:98
168#: searx/templates/oscar/preferences.html:138
168#: searx/templates/oscar/preferences.html:138
169msgid "back"
169msgid "back"
170msgstr "terug"
170msgstr "terug"
171
171
172#: searx/templates/courgette/results.html:12
172#: searx/templates/courgette/results.html:12
173#: searx/templates/default/results.html:12
173#: searx/templates/default/results.html:12
174−#: searx/templates/oscar/results.html:78
174+#: searx/templates/oscar/results.html:87
175msgid "Search URL"
175msgid "Search URL"
176msgstr "Zoek URL"
176msgstr "Zoek URL"
177
177
178#: searx/templates/courgette/results.html:16
178#: searx/templates/courgette/results.html:16
179#: searx/templates/default/results.html:16
179#: searx/templates/default/results.html:16
180−#: searx/templates/oscar/results.html:83
180+#: searx/templates/oscar/results.html:92
181msgid "Download results"
181msgid "Download results"
182msgstr "Downloaden zoekresultaten"
182msgstr "Downloaden zoekresultaten"
183
183
184#: searx/templates/courgette/results.html:34
184#: searx/templates/courgette/results.html:34
185#: searx/templates/default/results.html:42
185#: searx/templates/default/results.html:42
186−#: searx/templates/oscar/results.html:58
186+#: searx/templates/oscar/results.html:67
187msgid "Suggestions"
187msgid "Suggestions"
188msgstr "Suggesties"
188msgstr "Suggesties"
189
189
190#: searx/templates/courgette/results.html:62
190#: searx/templates/courgette/results.html:62
191#: searx/templates/default/results.html:78
191#: searx/templates/default/results.html:78
192−#: searx/templates/oscar/results.html:37
192+#: searx/templates/oscar/results.html:41
193msgid "previous page"
193msgid "previous page"
194msgstr "vorige pagina"
194msgstr "vorige pagina"
195
195
196#: searx/templates/courgette/results.html:73
196#: searx/templates/courgette/results.html:73
197#: searx/templates/default/results.html:89
197#: searx/templates/default/results.html:89
198−#: searx/templates/oscar/results.html:45
198+#: searx/templates/oscar/results.html:49
199msgid "next page"
199msgid "next page"
200msgstr "volgende pagina"
200msgstr "volgende pagina"
201
201
@@ -212,61 +212,49 @@ msgstr "Zoekmachinestatistieken"
212
212
213#: searx/templates/default/categories.html:8
213#: searx/templates/default/categories.html:8
214msgid "Click on the magnifier to perform search"
214msgid "Click on the magnifier to perform search"
215−msgstr ""
215+msgstr "Klik op het vergrootglas om te zoeken"
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 ""
228
216
229#: searx/templates/default/results.html:34
217#: searx/templates/default/results.html:34
230msgid "Answers"
218msgid "Answers"
231−msgstr ""
219+msgstr "Antwoorden"
232
220
233#: searx/templates/oscar/base.html:69
221#: searx/templates/oscar/base.html:69
234msgid "Powered by"
222msgid "Powered by"
235−msgstr ""
223+msgstr "Powered by"
236
224
237#: searx/templates/oscar/base.html:69
225#: searx/templates/oscar/base.html:69
238msgid "a privacy-respecting, hackable metasearch engine"
226msgid "a privacy-respecting, hackable metasearch engine"
239−msgstr ""
227+msgstr "een privacy eerbiedigende, aanpasbare metazoekmachine"
240
228
241#: searx/templates/oscar/navbar.html:6
229#: searx/templates/oscar/navbar.html:6
242msgid "Toggle navigation"
230msgid "Toggle navigation"
243−msgstr ""
231+msgstr "Omschakelen navigatie"
244
232
245#: searx/templates/oscar/navbar.html:15
233#: searx/templates/oscar/navbar.html:15
246msgid "home"
234msgid "home"
247−msgstr ""
235+msgstr "thuis"
248
236
249#: searx/templates/oscar/preferences.html:11
237#: searx/templates/oscar/preferences.html:11
250#: searx/templates/oscar/preferences.html:17
238#: searx/templates/oscar/preferences.html:17
251msgid "General"
239msgid "General"
252−msgstr ""
240+msgstr "Algemeen"
253
241
254#: searx/templates/oscar/preferences.html:12
242#: searx/templates/oscar/preferences.html:12
255#: searx/templates/oscar/preferences.html:99
243#: searx/templates/oscar/preferences.html:99
256msgid "Engines"
244msgid "Engines"
257−msgstr ""
245+msgstr "Zoekmachines"
258
246
259#: searx/templates/oscar/preferences.html:39
247#: searx/templates/oscar/preferences.html:39
260msgid "What language do you prefer for search?"
248msgid "What language do you prefer for search?"
261−msgstr ""
249+msgstr "Welke taal wil je gebruiken voor het zoeken?"
262
250
263#: searx/templates/oscar/preferences.html:50
251#: searx/templates/oscar/preferences.html:50
264msgid "Change the language of the layout"
252msgid "Change the language of the layout"
265−msgstr ""
253+msgstr "Wijzig de taal van de layout"
266
254
267#: searx/templates/oscar/preferences.html:63
255#: searx/templates/oscar/preferences.html:63
268msgid "Find stuff as you type"
256msgid "Find stuff as you type"
269−msgstr ""
257+msgstr "Zoek tijdens het typen"
270
258
271#: searx/templates/oscar/preferences.html:73
259#: searx/templates/oscar/preferences.html:73
272msgid ""
260msgid ""
@@ -274,128 +262,158 @@ msgid ""
274"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
262"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
275" rel=\"external\">learn more about request methods</a>"
263" rel=\"external\">learn more about request methods</a>"
276msgstr ""
264msgstr ""
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>"
277
268
278#: searx/templates/oscar/preferences.html:84
269#: searx/templates/oscar/preferences.html:84
279msgid "Change searx layout"
270msgid "Change searx layout"
280−msgstr ""
271+msgstr "Wijzig searx layout"
281
272
282#: searx/templates/oscar/results.html:6
273#: searx/templates/oscar/results.html:6
283msgid "Search results"
274msgid "Search results"
284−msgstr ""
275+msgstr "Zoekresultaten"
285
276
286−#: searx/templates/oscar/results.html:73
277+#: searx/templates/oscar/results.html:82
287msgid "Links"
278msgid "Links"
288−msgstr ""
279+msgstr "Links"
289
280
290#: searx/templates/oscar/search.html:6 searx/templates/oscar/search_full.html:7
281#: searx/templates/oscar/search.html:6 searx/templates/oscar/search_full.html:7
291msgid "Start search"
282msgid "Start search"
292−msgstr ""
283+msgstr "Start zoeken"
293
284
294#: searx/templates/oscar/search_full.html:11
285#: searx/templates/oscar/search_full.html:11
295msgid "Show search filters"
286msgid "Show search filters"
296−msgstr ""
287+msgstr "Toon zoekfilters"
297
288
298#: searx/templates/oscar/search_full.html:11
289#: searx/templates/oscar/search_full.html:11
299msgid "Hide search filters"
290msgid "Hide search filters"
300−msgstr ""
291+msgstr "Verberg zoekfilters"
301
292
302#: searx/templates/oscar/stats.html:2
293#: searx/templates/oscar/stats.html:2
303msgid "stats"
294msgid "stats"
304−msgstr ""
295+msgstr "stats"
305
296
306#: searx/templates/oscar/messages/first_time.html:4
297#: searx/templates/oscar/messages/first_time.html:4
307#: searx/templates/oscar/messages/no_results.html:5
298#: searx/templates/oscar/messages/no_results.html:5
308#: searx/templates/oscar/messages/save_settings_successfull.html:5
299#: searx/templates/oscar/messages/save_settings_successfull.html:5
309#: searx/templates/oscar/messages/unknow_error.html:5
300#: searx/templates/oscar/messages/unknow_error.html:5
310msgid "Close"
301msgid "Close"
311−msgstr ""
302+msgstr "Sluiten"
312
303
313#: searx/templates/oscar/messages/first_time.html:6
304#: searx/templates/oscar/messages/first_time.html:6
314#: searx/templates/oscar/messages/no_data_available.html:3
305#: searx/templates/oscar/messages/no_data_available.html:3
315msgid "Heads up!"
306msgid "Heads up!"
316−msgstr ""
307+msgstr "Heads up!"
317
308
318#: searx/templates/oscar/messages/first_time.html:7
309#: searx/templates/oscar/messages/first_time.html:7
319msgid "It look like you are using searx first time."
310msgid "It look like you are using searx first time."
320−msgstr ""
311+msgstr "Het lijkt erop dat je searx voor de eerste keer gebruikt."
321
312
322#: searx/templates/oscar/messages/js_disabled.html:2
313#: searx/templates/oscar/messages/js_disabled.html:2
323msgid "Warning!"
314msgid "Warning!"
324−msgstr ""
315+msgstr "Waarschuwing!"
325
316
326#: searx/templates/oscar/messages/js_disabled.html:3
317#: searx/templates/oscar/messages/js_disabled.html:3
327msgid "Please enable JavaScript to use full functionality of this site."
318msgid "Please enable JavaScript to use full functionality of this site."
328−msgstr ""
319+msgstr "Activeer JavaScript om alle functionaliteit van deze site te gebruiken."
329
320
330#: searx/templates/oscar/messages/no_data_available.html:4
321#: searx/templates/oscar/messages/no_data_available.html:4
331msgid "There is currently no data available. "
322msgid "There is currently no data available. "
332−msgstr ""
323+msgstr "Er zijn momenteel geen gegevens beschikbaar."
333
324
334#: searx/templates/oscar/messages/no_results.html:7
325#: searx/templates/oscar/messages/no_results.html:7
335msgid "Sorry!"
326msgid "Sorry!"
336−msgstr ""
327+msgstr "Sorry!"
337
328
338#: searx/templates/oscar/messages/no_results.html:8
329#: searx/templates/oscar/messages/no_results.html:8
339msgid ""
330msgid ""
340"we didn't find any results. Please use another query or search in more "
331"we didn't find any results. Please use another query or search in more "
341"categories."
332"categories."
342msgstr ""
333msgstr ""
334+"we kregen geen resultaat. Probeer een andere opvraag of zoek in meer "
335+"categorieën."
343
336
344#: searx/templates/oscar/messages/save_settings_successfull.html:7
337#: searx/templates/oscar/messages/save_settings_successfull.html:7
345msgid "Well done!"
338msgid "Well done!"
346−msgstr ""
339+msgstr "Goed gedaan!"
347
340
348#: searx/templates/oscar/messages/save_settings_successfull.html:8
341#: searx/templates/oscar/messages/save_settings_successfull.html:8
349msgid "Settings saved successfully."
342msgid "Settings saved successfully."
350−msgstr ""
343+msgstr "Instellingen succesvol opgeslagen."
351
344
352#: searx/templates/oscar/messages/unknow_error.html:7
345#: searx/templates/oscar/messages/unknow_error.html:7
353msgid "Oh snap!"
346msgid "Oh snap!"
354−msgstr ""
347+msgstr "Verdraaid!"
355
348
356#: searx/templates/oscar/messages/unknow_error.html:8
349#: searx/templates/oscar/messages/unknow_error.html:8
357msgid "Something went wrong."
350msgid "Something went wrong."
358−msgstr ""
351+msgstr "Er ging iets fout."
359
352
360#: searx/templates/oscar/result_templates/default.html:6
353#: searx/templates/oscar/result_templates/default.html:6
361#: searx/templates/oscar/result_templates/map.html:7
354#: searx/templates/oscar/result_templates/map.html:7
362#: searx/templates/oscar/result_templates/torrent.html:6
355#: searx/templates/oscar/result_templates/torrent.html:6
363#: searx/templates/oscar/result_templates/videos.html:6
356#: searx/templates/oscar/result_templates/videos.html:6
364msgid "cached"
357msgid "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"
365msgstr ""
366msgstr ""
366
367
367#: searx/templates/oscar/result_templates/images.html:21
368#: searx/templates/oscar/result_templates/images.html:21
368msgid "Get image"
369msgid "Get image"
369−msgstr ""
370+msgstr "Toon afbeelding"
370
371
371#: searx/templates/oscar/result_templates/images.html:22
372#: searx/templates/oscar/result_templates/images.html:22
372msgid "View source"
373msgid "View source"
373−msgstr ""
374+msgstr "Bekijk bron"
374
375
375#: searx/templates/oscar/result_templates/map.html:10
376#: searx/templates/oscar/result_templates/map.html:10
376msgid "show map"
377msgid "show map"
377−msgstr ""
378+msgstr "toon kaart"
378
379
379#: searx/templates/oscar/result_templates/map.html:10
380#: searx/templates/oscar/result_templates/map.html:10
380msgid "hide map"
381msgid "hide map"
381−msgstr ""
382+msgstr "verberg kaart"
382
383
383#: searx/templates/oscar/result_templates/map.html:14
384#: searx/templates/oscar/result_templates/map.html:14
384msgid "show details"
385msgid "show details"
385−msgstr ""
386+msgstr "toon details"
386
387
387#: searx/templates/oscar/result_templates/map.html:14
388#: searx/templates/oscar/result_templates/map.html:14
388msgid "hide details"
389msgid "hide details"
389−msgstr ""
390+msgstr "verberg details"
390
391
391#: searx/templates/oscar/result_templates/torrent.html:8
392#: searx/templates/oscar/result_templates/torrent.html:8
392msgid "Seeder"
393msgid "Seeder"
393−msgstr ""
394+msgstr "Aanbieder"
394
395
395#: searx/templates/oscar/result_templates/torrent.html:8
396#: searx/templates/oscar/result_templates/torrent.html:8
396msgid "Leecher"
397msgid "Leecher"
398+msgstr "Ophaler"
399+
400+#: searx/templates/oscar/result_templates/videos.html:9
401+msgid "show video"
397msgstr ""
402msgstr ""
398
403
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+
399# categories - manually added
417# categories - manually added
400# TODO - automatically add
418# TODO - automatically add
401msgid "files"
419msgid "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',
23
23
24ua = "Mozilla/5.0 ({os}) Gecko/20100101 Firefox/{version}"
24ua = "Mozilla/5.0 ({os}) Gecko/20100101 Firefox/{version}"
25
25
26+blocked_tags = ('script',
27+ 'style')
28+
26
29
27def gen_useragent():
30def gen_useragent():
28 # TODO
31 # TODO
@@ -30,8 +33,9 @@ def gen_useragent():
30
33
31
34
32def searx_useragent():
35def searx_useragent():
33− return 'searx/{searx_version} {suffix}'.format(searx_version=VERSION_STRING,
36+ return 'searx/{searx_version} {suffix}'.format(
37+ searx_version=VERSION_STRING,
34− suffix=settings['server'].get('useragent_suffix', ''))
38+ suffix=settings['server'].get('useragent_suffix', ''))
35
39
36
40
37def highlight_content(content, query):
41def highlight_content(content, query):
@@ -66,11 +70,27 @@ class HTMLTextExtractor(HTMLParser):
66 def __init__(self):
70 def __init__(self):
67 HTMLParser.__init__(self)
71 HTMLParser.__init__(self)
68 self.result = []
72 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
69
85
70 def handle_data(self, d):
86 def handle_data(self, d):
87+ if not self.is_valid_tag():
88+ return
71 self.result.append(d)
89 self.result.append(d)
72
90
73 def handle_charref(self, number):
91 def handle_charref(self, number):
92+ if not self.is_valid_tag():
93+ return
74 if number[0] in (u'x', u'X'):
94 if number[0] in (u'x', u'X'):
75 codepoint = int(number[1:], 16)
95 codepoint = int(number[1:], 16)
76 else:
96 else:
@@ -78,6 +98,8 @@ class HTMLTextExtractor(HTMLParser):
78 self.result.append(unichr(codepoint))
98 self.result.append(unichr(codepoint))
79
99
80 def handle_entityref(self, name):
100 def handle_entityref(self, name):
101+ if not self.is_valid_tag():
102+ return
81 # codepoint = htmlentitydefs.name2codepoint[name]
103 # codepoint = htmlentitydefs.name2codepoint[name]
82 # self.result.append(unichr(codepoint))
104 # self.result.append(unichr(codepoint))
83 self.result.append(name)
105 self.result.append(name)
@@ -132,11 +154,30 @@ def get_themes(root):
132 """Returns available themes list."""
154 """Returns available themes list."""
133
155
134 static_path = os.path.join(root, 'static')
156 static_path = os.path.join(root, 'static')
135− static_names = set(os.listdir(static_path))
136 templates_path = os.path.join(root, 'templates')
157 templates_path = os.path.join(root, 'templates')
137− templates_names = set(os.listdir(templates_path))
138
158
139− themes = []
159+ themes = os.listdir(os.path.join(static_path, 'themes'))
140− for name in static_names.intersection(templates_names):
141− themes += [name]
142 return static_path, templates_path, themes
160 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/ >.
18
18
19# version of searx
19# version of searx
20VERSION_MAJOR = 0
20VERSION_MAJOR = 0
21−VERSION_MINOR = 5
21+VERSION_MINOR = 6
22VERSION_BUILD = 0
22VERSION_BUILD = 0
23
23
24VERSION_STRING = "{0}.{1}.{2}".format(VERSION_MAJOR,
24VERSION_STRING = "{0}.{1}.{2}".format(VERSION_MAJOR,
searx/webapp.py+33−12
@@ -41,7 +41,8 @@ from searx.engines import (
41 categories, engines, get_engines_stats, engine_shortcuts
41 categories, engines, get_engines_stats, engine_shortcuts
42)
42)
43from searx.utils import (
43from 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
45)
46)
46from searx.version import VERSION_STRING
47from searx.version import VERSION_STRING
47from searx.languages import language_codes
48from searx.languages import language_codes
@@ -49,8 +50,11 @@ from searx.https_rewrite import https_url_rewrite
49from searx.search import Search
50from searx.search import Search
50from searx.query import Query
51from searx.query import Query
51from searx.autocomplete import backends as autocomplete_backends
52from searx.autocomplete import backends as autocomplete_backends
53+from searx import logger
52
54
53
55
56+logger = logger.getChild('webapp')
57+
54static_path, templates_path, themes =\
58static_path, templates_path, themes =\
55 get_themes(settings['themes_path']
59 get_themes(settings['themes_path']
56 if settings.get('themes_path')
60 if settings.get('themes_path')
@@ -58,6 +62,10 @@ static_path, templates_path, themes =\
58
62
59default_theme = settings['server'].get('default_theme', 'default')
63default_theme = settings['server'].get('default_theme', 'default')
60
64
65+static_files = get_static_files(searx_dir)
66+
67+result_templates = get_result_templates(searx_dir)
68+
61app = Flask(
69app = Flask(
62 __name__,
70 __name__,
63 static_folder=static_path,
71 static_folder=static_path,
@@ -66,11 +74,16 @@ app = Flask(
66
74
67app.secret_key = settings['server']['secret_key']
75app.secret_key = settings['server']['secret_key']
68
76
77+app.logger.addHandler(logger)
78+
69babel = Babel(app)
79babel = Babel(app)
70
80
71−#TODO configurable via settings.yml
81+global_favicons = []
72−favicons = ['wikipedia', 'youtube', 'vimeo', 'dailymotion', 'soundcloud',
82+for indice, theme in enumerate(themes):
73− 'twitter', 'stackoverflow', 'github', 'deviantart', 'kickass']
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)
74
87
75cookie_max_age = 60 * 60 * 24 * 365 * 23 # 23 years
88cookie_max_age = 60 * 60 * 24 * 365 * 23 # 23 years
76
89
@@ -170,10 +183,19 @@ def get_current_theme_name(override=None):
170 return theme_name
183 return theme_name
171
184
172
185
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+
173def url_for_theme(endpoint, override_theme=None, **values):
193def 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'):
175 theme_name = get_current_theme_name(override=override_theme)
195 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
177 return url_for(endpoint, **values)
199 return url_for(endpoint, **values)
178
200
179
201
@@ -223,6 +245,8 @@ def render(template_name, override_theme=None, **kwargs):
223 # override url_for function in templates
245 # override url_for function in templates
224 kwargs['url_for'] = url_for_theme
246 kwargs['url_for'] = url_for_theme
225
247
248+ kwargs['get_result_template'] = get_result_template
249+
226 kwargs['theme'] = get_current_theme_name(override=override_theme)
250 kwargs['theme'] = get_current_theme_name(override=override_theme)
227
251
228 kwargs['template_name'] = template_name
252 kwargs['template_name'] = template_name
@@ -284,10 +308,6 @@ def index():
284 else:
308 else:
285 result['pretty_url'] = result['url']
309 result['pretty_url'] = result['url']
286
310
287− for engine in result['engines']:
288− if engine in favicons:
289− result['favicon'] = engine
290−
291 # TODO, check if timezone is calculated right
311 # TODO, check if timezone is calculated right
292 if 'publishedDate' in result:
312 if 'publishedDate' in result:
293 result['pubdate'] = result['publishedDate'].strftime('%Y-%m-%d %H:%M:%S%z')
313 result['pubdate'] = result['publishedDate'].strftime('%Y-%m-%d %H:%M:%S%z')
@@ -340,7 +360,8 @@ def index():
340 suggestions=search.suggestions,
360 suggestions=search.suggestions,
341 answers=search.answers,
361 answers=search.answers,
342 infoboxes=search.infoboxes,
362 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())]
344 )
365 )
345
366
346
367
@@ -541,7 +562,7 @@ def opensearch():
541@app.route('/favicon.ico')
562@app.route('/favicon.ico')
542def favicon():
563def favicon():
543 return send_from_directory(os.path.join(app.root_path,
564 return send_from_directory(os.path.join(app.root_path,
544− 'static',
565+ 'static/themes',
545 get_current_theme_name(),
566 get_current_theme_name(),
546 'img'),
567 'img'),
547 'favicon.png',
568 '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'
9
9
10pybabel extract -F babel.cfg -o messages.pot $SEARX_DIR
10pybabel extract -F babel.cfg -o messages.pot $SEARX_DIR
11for f in `ls $SEARX_DIR'/translations/'`; do
11for 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
13 # TODO - need to fix category translations
13 # TODO - need to fix category translations
14 sed -i 's/#~ //' $SEARX_DIR'/translations/'$f'/LC_MESSAGES/messages.po'
14 sed -i 's/#~ //' $SEARX_DIR'/translations/'$f'/LC_MESSAGES/messages.po'
15done
15done